@karan171996/metricflow 0.1.2 → 0.1.4

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 (228) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +2 -0
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/next-server.js.nft.json +1 -1
  6. package/.next/prerender-manifest.json +6 -6
  7. package/.next/routes-manifest.json +12 -0
  8. package/.next/server/app/_global-error.html +1 -1
  9. package/.next/server/app/_global-error.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  14. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/_not-found.html +2 -2
  16. package/.next/server/app/_not-found.rsc +9 -9
  17. package/.next/server/app/_not-found.segments/_full.segment.rsc +9 -9
  18. package/.next/server/app/_not-found.segments/_index.segment.rsc +8 -8
  19. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/.next/server/app/api/analyze/route.js +3 -2
  22. package/.next/server/app/api/analyze/route.js.nft.json +1 -1
  23. package/.next/server/app/api/connect/route.js +2 -2
  24. package/.next/server/app/api/connect/route.js.nft.json +1 -1
  25. package/.next/server/app/api/metrics/route.js +2 -2
  26. package/.next/server/app/api/metrics/route.js.nft.json +1 -1
  27. package/.next/server/app/api/settings/route/app-paths-manifest.json +3 -0
  28. package/.next/server/app/api/settings/route/build-manifest.json +12 -0
  29. package/.next/server/app/api/settings/route/server-reference-manifest.json +4 -0
  30. package/.next/server/app/api/settings/route.js +6 -0
  31. package/.next/server/app/api/settings/route.js.nft.json +1 -0
  32. package/.next/server/app/api/settings/route_client-reference-manifest.js +3 -0
  33. package/.next/server/app/api/setup/ai/route/app-paths-manifest.json +3 -0
  34. package/.next/server/app/api/setup/ai/route/build-manifest.json +12 -0
  35. package/.next/server/app/api/setup/ai/route/server-reference-manifest.json +4 -0
  36. package/.next/server/app/api/setup/ai/route.js +7 -0
  37. package/.next/server/app/api/setup/ai/route.js.nft.json +1 -0
  38. package/.next/server/app/api/setup/ai/route_client-reference-manifest.js +3 -0
  39. package/.next/server/app/api/setup/route.js +2 -2
  40. package/.next/server/app/api/setup/route.js.nft.json +1 -1
  41. package/.next/server/app/connect/page.js.nft.json +1 -1
  42. package/.next/server/app/connect/page_client-reference-manifest.js +1 -1
  43. package/.next/server/app/connect.html +2 -2
  44. package/.next/server/app/connect.rsc +11 -11
  45. package/.next/server/app/connect.segments/_full.segment.rsc +11 -11
  46. package/.next/server/app/connect.segments/_index.segment.rsc +8 -8
  47. package/.next/server/app/connect.segments/_tree.segment.rsc +2 -2
  48. package/.next/server/app/connect.segments/connect/__PAGE__.segment.rsc +6 -6
  49. package/.next/server/app/favicon.ico/route.js +1 -1
  50. package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  51. package/.next/server/app/index.html +2 -2
  52. package/.next/server/app/index.rsc +11 -11
  53. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  54. package/.next/server/app/index.segments/_full.segment.rsc +11 -11
  55. package/.next/server/app/index.segments/_index.segment.rsc +8 -8
  56. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  57. package/.next/server/app/page.js.nft.json +1 -1
  58. package/.next/server/app/page_client-reference-manifest.js +1 -1
  59. package/.next/server/app/performance/[slug]/page.js +1 -1
  60. package/.next/server/app/performance/[slug]/page.js.nft.json +1 -1
  61. package/.next/server/app/performance/[slug]/page_client-reference-manifest.js +1 -1
  62. package/.next/server/app/performance/page.js.nft.json +1 -1
  63. package/.next/server/app/performance/page_client-reference-manifest.js +1 -1
  64. package/.next/server/app/performance.html +2 -2
  65. package/.next/server/app/performance.rsc +12 -12
  66. package/.next/server/app/performance.segments/_full.segment.rsc +12 -12
  67. package/.next/server/app/performance.segments/_index.segment.rsc +8 -8
  68. package/.next/server/app/performance.segments/_tree.segment.rsc +2 -2
  69. package/.next/server/app/performance.segments/performance/__PAGE__.segment.rsc +7 -7
  70. package/.next/server/app/settings/page.js.nft.json +1 -1
  71. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  72. package/.next/server/app/settings.html +2 -2
  73. package/.next/server/app/settings.rsc +23 -23
  74. package/.next/server/app/settings.segments/_full.segment.rsc +23 -23
  75. package/.next/server/app/settings.segments/_index.segment.rsc +8 -8
  76. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  77. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +19 -19
  78. package/.next/server/app/setup/page.js +1 -1
  79. package/.next/server/app/setup/page.js.nft.json +1 -1
  80. package/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  81. package/.next/server/app/setup.html +2 -2
  82. package/.next/server/app/setup.rsc +31 -30
  83. package/.next/server/app/setup.segments/_full.segment.rsc +31 -30
  84. package/.next/server/app/setup.segments/_index.segment.rsc +8 -8
  85. package/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  86. package/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +25 -24
  87. package/.next/server/app-paths-manifest.json +2 -0
  88. package/.next/server/chunks/{[externals]__1o8qm3w._.js → [externals]__162fo45._.js} +1 -1
  89. package/.next/server/chunks/[root-of-the-server]__027a1hx._.js +3 -0
  90. package/.next/server/chunks/{[root-of-the-server]__0chxb6o._.js → [root-of-the-server]__0luj3_8._.js} +2 -2
  91. package/.next/server/chunks/{[root-of-the-server]__1l249st._.js → [root-of-the-server]__0vkb6_m._.js} +2 -2
  92. package/.next/server/chunks/[root-of-the-server]__1d1y03f._.js +3 -0
  93. package/.next/server/chunks/[root-of-the-server]__1lxxc0h._.js +3 -0
  94. package/.next/server/chunks/{node_modules_0jatszq._.js → _0g9k22b._.js} +4 -4
  95. package/.next/server/chunks/_0zwkfj-._.js +8 -0
  96. package/.next/server/chunks/_10b5gsp._.js +22 -0
  97. package/.next/server/chunks/_1pe45_3._.js +3 -3
  98. package/.next/server/chunks/_next-internal_server_app_api_settings_route_actions_1bpm9ac.js +3 -0
  99. package/.next/server/chunks/_next-internal_server_app_api_setup_ai_route_actions_0-ay8t8.js +3 -0
  100. package/.next/server/chunks/ssr/[root-of-the-server]__07u4jsj._.js +3 -0
  101. package/.next/server/chunks/ssr/{[root-of-the-server]__0ydfg18._.js → [root-of-the-server]__1uohrpp._.js} +1 -1
  102. package/.next/server/chunks/ssr/{_1n9m819._.js → _0fa4_2r._.js} +2 -2
  103. package/.next/server/chunks/ssr/_0v7wda8._.js +3 -0
  104. package/.next/server/chunks/ssr/_1b_fov9._.js +3 -0
  105. package/.next/server/chunks/ssr/_1d1ipgp._.js +1 -1
  106. package/.next/server/chunks/ssr/_1l_271l._.js +3 -0
  107. package/.next/server/chunks/ssr/_1p5i72g._.js +1 -1
  108. package/.next/server/chunks/ssr/_1q7r2qu._.js +7 -0
  109. package/.next/server/chunks/ssr/_20txlee._.js +1 -1
  110. package/.next/server/middleware-build-manifest.js +3 -3
  111. package/.next/server/pages/404.html +2 -2
  112. package/.next/server/pages/500.html +1 -1
  113. package/.next/static/chunks/0-xs4v9s677gv.js +1 -0
  114. package/.next/static/chunks/0no0cbj4p6v97.js +5 -0
  115. package/.next/static/chunks/{0wyq7u3z0lfca.js → 1kpyel_do_nn_.js} +1 -1
  116. package/.next/static/chunks/{2xy80eg_ueu_u.js → 2qnz-czvmzvfy.js} +1 -1
  117. package/.next/static/chunks/{3lqd2emjcxbd-.js → 2uf-bm2nz17t-.js} +1 -1
  118. package/.next/static/chunks/2wylvi3d9igvb.css +1 -0
  119. package/.next/static/chunks/32d1qdgpjfhb0.js +4 -0
  120. package/.next/static/chunks/39nm1s5w6_g9_.js +1 -0
  121. package/.next/static/chunks/3uvkn3v63w-bb.js +1 -0
  122. package/.next/trace +1 -1
  123. package/.next/trace-build +1 -1
  124. package/LICENSE +21 -0
  125. package/package.json +4 -2
  126. package/.next/build/chunks/[root-of-the-server]__05i36w1._.js.map +0 -11
  127. package/.next/build/chunks/[root-of-the-server]__1kki86f._.js.map +0 -8
  128. package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_1gfkiq9._.js.map +0 -5
  129. package/.next/build/chunks/[turbopack]_runtime.js.map +0 -11
  130. package/.next/build/chunks/node_modules_20v-8wl._.js.map +0 -47
  131. package/.next/build/chunks/pool_entry-[turbopack-node]_transforms_postcss_ts_0tp-k2v._.js.map +0 -5
  132. package/.next/server/app/_global-error/page.js.map +0 -5
  133. package/.next/server/app/_not-found/page.js.map +0 -5
  134. package/.next/server/app/api/analyze/route.js.map +0 -5
  135. package/.next/server/app/api/connect/route.js.map +0 -5
  136. package/.next/server/app/api/health/route.js.map +0 -5
  137. package/.next/server/app/api/metrics/route.js.map +0 -5
  138. package/.next/server/app/api/setup/route.js.map +0 -5
  139. package/.next/server/app/api/timings/route.js.map +0 -5
  140. package/.next/server/app/connect/page.js.map +0 -5
  141. package/.next/server/app/favicon.ico/route.js.map +0 -5
  142. package/.next/server/app/page.js.map +0 -5
  143. package/.next/server/app/performance/[slug]/page.js.map +0 -5
  144. package/.next/server/app/performance/page.js.map +0 -5
  145. package/.next/server/app/settings/page.js.map +0 -5
  146. package/.next/server/app/setup/page.js.map +0 -5
  147. package/.next/server/chunks/[externals]__1o8qm3w._.js.map +0 -1
  148. package/.next/server/chunks/[root-of-the-server]__0chxb6o._.js.map +0 -1
  149. package/.next/server/chunks/[root-of-the-server]__14tfjrn._.js.map +0 -1
  150. package/.next/server/chunks/[root-of-the-server]__1fj5wte._.js.map +0 -1
  151. package/.next/server/chunks/[root-of-the-server]__1i_tsds._.js +0 -22
  152. package/.next/server/chunks/[root-of-the-server]__1i_tsds._.js.map +0 -1
  153. package/.next/server/chunks/[root-of-the-server]__1l249st._.js.map +0 -1
  154. package/.next/server/chunks/[root-of-the-server]__1uv-wzy._.js.map +0 -1
  155. package/.next/server/chunks/[turbopack]_runtime.js.map +0 -10
  156. package/.next/server/chunks/_1494cut._.js.map +0 -1
  157. package/.next/server/chunks/_1gvvd7n._.js.map +0 -1
  158. package/.next/server/chunks/_1pe45_3._.js.map +0 -1
  159. package/.next/server/chunks/_1qtlv__._.js.map +0 -1
  160. package/.next/server/chunks/_next-internal_server_app_api_analyze_route_actions_0lx-23h.js.map +0 -1
  161. package/.next/server/chunks/_next-internal_server_app_api_connect_route_actions_1r5w03m.js.map +0 -1
  162. package/.next/server/chunks/_next-internal_server_app_api_health_route_actions_1ryftkb.js.map +0 -1
  163. package/.next/server/chunks/_next-internal_server_app_api_metrics_route_actions_0qn5q3s.js.map +0 -1
  164. package/.next/server/chunks/_next-internal_server_app_api_setup_route_actions_0txsuev.js.map +0 -1
  165. package/.next/server/chunks/_next-internal_server_app_api_timings_route_actions_1tsq7j6.js.map +0 -1
  166. package/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_0g2jjls.js.map +0 -1
  167. package/.next/server/chunks/node_modules_0jatszq._.js.map +0 -1
  168. package/.next/server/chunks/ssr/[root-of-the-server]__036j_vr._.js.map +0 -1
  169. package/.next/server/chunks/ssr/[root-of-the-server]__0ev464o._.js.map +0 -1
  170. package/.next/server/chunks/ssr/[root-of-the-server]__0f5axvr._.js.map +0 -1
  171. package/.next/server/chunks/ssr/[root-of-the-server]__0hg5gib._.js.map +0 -1
  172. package/.next/server/chunks/ssr/[root-of-the-server]__0tmkhxy._.js.map +0 -1
  173. package/.next/server/chunks/ssr/[root-of-the-server]__0ydfg18._.js.map +0 -1
  174. package/.next/server/chunks/ssr/[root-of-the-server]__18hr860._.js.map +0 -1
  175. package/.next/server/chunks/ssr/[root-of-the-server]__18w2nrx._.js +0 -3
  176. package/.next/server/chunks/ssr/[root-of-the-server]__18w2nrx._.js.map +0 -1
  177. package/.next/server/chunks/ssr/[root-of-the-server]__1c8dejo._.js.map +0 -1
  178. package/.next/server/chunks/ssr/[root-of-the-server]__1mwg_vi._.js.map +0 -1
  179. package/.next/server/chunks/ssr/[root-of-the-server]__1p_6ezv._.js.map +0 -1
  180. package/.next/server/chunks/ssr/[root-of-the-server]__1vxra_4._.js.map +0 -1
  181. package/.next/server/chunks/ssr/[turbopack]_runtime.js.map +0 -10
  182. package/.next/server/chunks/ssr/_042xeoh._.js +0 -3
  183. package/.next/server/chunks/ssr/_042xeoh._.js.map +0 -1
  184. package/.next/server/chunks/ssr/_0c7qo1d._.js.map +0 -1
  185. package/.next/server/chunks/ssr/_0dbmzjx._.js.map +0 -1
  186. package/.next/server/chunks/ssr/_178o6nh._.js +0 -3
  187. package/.next/server/chunks/ssr/_178o6nh._.js.map +0 -1
  188. package/.next/server/chunks/ssr/_1bbiu24._.js +0 -3
  189. package/.next/server/chunks/ssr/_1bbiu24._.js.map +0 -1
  190. package/.next/server/chunks/ssr/_1d1ipgp._.js.map +0 -1
  191. package/.next/server/chunks/ssr/_1n9m819._.js.map +0 -1
  192. package/.next/server/chunks/ssr/_1p5i72g._.js.map +0 -1
  193. package/.next/server/chunks/ssr/_1r2qog2._.js +0 -7
  194. package/.next/server/chunks/ssr/_1r2qog2._.js.map +0 -1
  195. package/.next/server/chunks/ssr/_1rkc3oc._.js.map +0 -1
  196. package/.next/server/chunks/ssr/_20txlee._.js.map +0 -1
  197. package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js.map +0 -1
  198. package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js.map +0 -1
  199. package/.next/server/chunks/ssr/_next-internal_server_app_connect_page_actions_1g-s_3i.js.map +0 -1
  200. package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_0hhsz1j.js.map +0 -1
  201. package/.next/server/chunks/ssr/_next-internal_server_app_performance_[slug]_page_actions_1pzv3w1.js.map +0 -1
  202. package/.next/server/chunks/ssr/_next-internal_server_app_performance_page_actions_0vi13cc.js.map +0 -1
  203. package/.next/server/chunks/ssr/_next-internal_server_app_settings_page_actions_11x4dq5.js.map +0 -1
  204. package/.next/server/chunks/ssr/_next-internal_server_app_setup_page_actions_0u1sm0s.js.map +0 -1
  205. package/.next/server/chunks/ssr/app_layout_tsx_2144vk_._.js.map +0 -1
  206. package/.next/server/chunks/ssr/app_loading_tsx_0a1flg9._.js.map +0 -1
  207. package/.next/server/chunks/ssr/app_performance_[slug]_loading_tsx_0d5z78a._.js.map +0 -1
  208. package/.next/server/chunks/ssr/app_performance_loading_tsx_1bq2nq9._.js.map +0 -1
  209. package/.next/server/chunks/ssr/app_settings_loading_tsx_0nv_78v._.js.map +0 -1
  210. package/.next/server/chunks/ssr/components_0j32dj5._.js.map +0 -1
  211. package/.next/server/chunks/ssr/node_modules_1wax83z._.js.map +0 -1
  212. package/.next/server/chunks/ssr/node_modules_cn_dist_index_166wuka.js.map +0 -1
  213. package/.next/server/chunks/ssr/node_modules_next_dist_0nkkbfv._.js.map +0 -1
  214. package/.next/server/chunks/ssr/node_modules_next_dist_1v8aef8._.js.map +0 -1
  215. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js.map +0 -1
  216. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js.map +0 -1
  217. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892.js.map +0 -1
  218. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js.map +0 -1
  219. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_server-async-storage_0t1dato.js.map +0 -1
  220. package/.next/static/chunks/13ihwqjtq_hlo.js +0 -1
  221. package/.next/static/chunks/14pp7x-su_dnv.js +0 -5
  222. package/.next/static/chunks/1clwpy-vw07cb.js +0 -1
  223. package/.next/static/chunks/2-llbg7gt2gi5.js +0 -4
  224. package/.next/static/chunks/28w-hz8hg8t4v.css +0 -1
  225. package/.next/static/chunks/3rfi1wruz0m51.js +0 -1
  226. /package/.next/static/{edA9zyNvRjRViNxMJ7dlC → HBZh84zxGSK-agDgmsIjU}/_buildManifest.js +0 -0
  227. /package/.next/static/{edA9zyNvRjRViNxMJ7dlC → HBZh84zxGSK-agDgmsIjU}/_clientMiddlewareManifest.js +0 -0
  228. /package/.next/static/{edA9zyNvRjRViNxMJ7dlC → HBZh84zxGSK-agDgmsIjU}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,96098,e=>{"use strict";var t=e.i(43476),a=e.i(76782),r=e.i(11825),s=e.i(79862),n=e.i(56420);let i={name:"chevron-right",size:24,node:[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]};i.node;let c=(0,n.default)(i);function l({className:e,...a}){return(0,t.jsx)("nav",{"aria-label":"breadcrumb","data-slot":"breadcrumb",className:(0,s.cn)(e),...a})}function o({className:e,...a}){return(0,t.jsx)("ol",{"data-slot":"breadcrumb-list",className:(0,s.cn)("flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground",e),...a})}function d({className:e,...a}){return(0,t.jsx)("li",{"data-slot":"breadcrumb-item",className:(0,s.cn)("inline-flex items-center gap-1",e),...a})}function u({className:e,render:t,...n}){return(0,r.useRender)({defaultTagName:"a",props:(0,a.mergeProps)({className:(0,s.cn)("transition-colors hover:text-foreground",e)},n),render:t,state:{slot:"breadcrumb-link"}})}function m({className:e,...a}){return(0,t.jsx)("span",{"data-slot":"breadcrumb-page",role:"link","aria-disabled":"true","aria-current":"page",className:(0,s.cn)("font-normal text-foreground",e),...a})}function x({children:e,className:a,...r}){return(0,t.jsx)("li",{"data-slot":"breadcrumb-separator",role:"presentation","aria-hidden":"true",className:(0,s.cn)("[&>svg]:size-3.5",a),...r,children:e??(0,t.jsx)(c,{})})}e.i(60972),e.s(["PerformanceBreadcrumb",0,function({pageName:e="Homepage"}){return(0,t.jsx)(l,{className:"mb-6",children:(0,t.jsxs)(o,{children:[(0,t.jsx)(d,{children:(0,t.jsx)(u,{href:"/performance",className:"text-gray-400 hover:text-white",children:"Performance"})}),(0,t.jsx)(x,{}),(0,t.jsx)(d,{children:(0,t.jsx)(m,{className:"text-white font-medium",children:e})})]})})}],96098)},29672,e=>{"use strict";var t=e.i(43476),a=e.i(18566),r=e.i(24851),s=e.i(71428),n=e.i(78320),i=e.i(96098),c=e.i(5080),l=e.i(97920);e.s(["PerformanceDetail",0,function({slug:e}){let{state:o,retry:d}=(0,n.useMetrics)();if("loading"===o.status)return(0,t.jsx)(s.Skeleton,{className:"h-64 w-full bg-[#2d3748]"});if("error"===o.status)return(0,t.jsx)(r.EmptyState,{title:"Could not load metrics",reason:o.message,onRetry:d});if(!o.configured)return(0,t.jsx)(r.EmptyState,{title:"Connect your data",reason:"Add your New Relic and Sentry keys to see real numbers.",href:"/setup",cta:"Set up keys"});if(0===o.pages.length)return(0,t.jsx)(r.EmptyState,{});let u=o.pages.find(t=>t.slug===e);return u||(0,a.notFound)(),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.PerformanceBreadcrumb,{pageName:u.name}),(0,n.hasData)(u)?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(c.PerformanceKPIs,{page:u}),(0,t.jsx)(l.RelatedErrorsList,{errors:u.sentry.latestErrors})]}):(0,t.jsx)(r.EmptyState,{reason:`${u.name} (${u.url}): keys work, but no page events have arrived.`})]})}])},5080,e=>{"use strict";var t=e.i(43476),a=e.i(70065),r=e.i(79432),s=e.i(74544),n=e.i(64569),i=e.i(93961);e.s(["PerformanceKPIs",0,function({page:e}){let{newRelic:c}=e,l=[{label:"Average Load Time",value:(0,i.formatDuration)(c.loadTime),icon:(0,t.jsx)(s.Clock,{className:"h-4 w-4 text-[#3ee0a1]"})},{label:"Error Rate",value:`${c.errorRate.toFixed(2)}%`,icon:(0,t.jsx)(r.Activity,{className:"h-4 w-4 text-[#ef4444]"})},{label:"Traffic Volume",value:e.visitors,icon:(0,t.jsx)(n.Zap,{className:"h-4 w-4 text-[#06b6d4]"})}];return(0,t.jsx)("div",{className:"grid gap-6 md:grid-cols-3 mb-8",children:l.map(e=>(0,t.jsx)(a.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:(0,t.jsxs)(a.CardContent,{className:"p-6",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-gray-400",children:e.label}),(0,t.jsx)("div",{className:"flex h-8 w-8 items-center justify-center rounded-lg bg-[#0f1419] border border-[#2d3748]",children:e.icon})]}),(0,t.jsx)("span",{className:"text-3xl font-bold text-white tracking-tight",children:e.value})]})},e.label))})}])},97920,e=>{"use strict";var t=e.i(43476),a=e.i(70065),r=e.i(56420);let s={name:"circle-alert",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],aliases:["alert-circle"]};s.node;let n=(0,r.default)(s);var i=e.i(74544);e.s(["RelatedErrorsList",0,function({errors:e}){return(0,t.jsxs)(a.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md w-full lg:w-[400px]",children:[(0,t.jsx)(a.CardHeader,{children:(0,t.jsxs)(a.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight flex items-center gap-2",children:[(0,t.jsx)(n,{className:"h-5 w-5 text-[#ef4444]"}),"Related Errors"]})}),(0,t.jsx)(a.CardContent,{children:0===e.length?(0,t.jsx)("p",{className:"text-sm text-gray-400",children:"No errors reported for this page."}):(0,t.jsx)("div",{className:"flex flex-col gap-3",children:e.map(e=>(0,t.jsxs)("div",{className:"flex flex-col gap-2 rounded-lg border border-[#2d3748] bg-[#0f1419] p-4",children:[(0,t.jsx)("div",{className:"flex items-center justify-between",children:(0,t.jsxs)("span",{className:"text-xs font-mono text-gray-500",children:[e.count," events"]})}),(0,t.jsx)("p",{className:"text-sm font-medium text-gray-200 line-clamp-2",children:e.title}),(0,t.jsxs)("div",{className:"flex items-center gap-1 mt-1 text-xs text-gray-500",children:[(0,t.jsx)(i.Clock,{className:"h-3 w-3"}),(0,t.jsx)("span",{children:new Date(e.lastSeen).toLocaleString()})]})]},e.title))})})]})}],97920)},24851,e=>{"use strict";var t=e.i(43476),a=e.i(22016),r=e.i(70065),s=e.i(67881);e.s(["EmptyState",0,function({title:e="No data yet",reason:n="Keys work, but no page events have arrived.",href:i="/connect",cta:c="Send your first events",onRetry:l}){return(0,t.jsx)(r.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:(0,t.jsxs)(r.CardContent,{className:"flex flex-col items-center gap-3 p-10 text-center",children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-white",children:e}),(0,t.jsx)("p",{className:"max-w-md text-sm text-gray-400",children:n}),(0,t.jsxs)("div",{className:"flex gap-3",children:[(0,t.jsx)(a.default,{href:i,className:(0,s.buttonVariants)(),children:c}),l&&(0,t.jsx)(s.Button,{variant:"outline",onClick:l,children:"Retry"})]})]})})}])},70065,e=>{"use strict";var t=e.i(43476),a=e.i(79862);e.s(["Card",0,function({className:e,size:r="default",...s}){return(0,t.jsx)("div",{"data-slot":"card","data-size":r,className:(0,a.cn)("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",e),...s})},"CardContent",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-(--card-spacing)",e),...r})},"CardDescription",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-sm text-muted-foreground",e),...r})},"CardHeader",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",e),...r})},"CardTitle",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",e),...r})}])},93961,e=>{"use strict";e.s(["formatDuration",0,function(e){if(!Number.isFinite(e))return"—";let t=Math.abs(Math.round(e));if(t<1e3)return`${Math.round(e)}ms`;if(t<59950)return`${+(e/1e3).toFixed(1)}s`;let a=Math.round(t/1e3),r=e<0?"-":"";return a<3600?`${r}${Math.floor(a/60)}m ${a%60}s`:`${r}${Math.floor(a/3600)}h ${Math.floor(a%3600/60)}m`}])},78320,e=>{"use strict";var t=e.i(71645),a=e.i(73011),r=e.i(50762);e.s(["hasData",0,function(e){return e.newRelic.throughput>0||e.newRelic.loadTime>0||e.sentry.errorCount>0},"useMetrics",0,function(){let[e,s]=(0,t.useState)({status:"loading"}),[n,i]=(0,t.useState)(0);(0,t.useEffect)(()=>{let e=!1;return fetch("/api/metrics").then(async t=>{let a=await t.json();if(!t.ok)throw Error(a.error??`HTTP ${t.status}`);e||s({status:"ready",configured:a.configured,pages:a.pages})}).catch(t=>{e||s({status:"error",message:t instanceof Error?t.message:"Request failed"})}),()=>{e=!0}},[n]);let c=(0,r.useThresholds)();return{state:"ready"===e.status?{...e,pages:e.pages.map(e=>({...e,status:(0,a.deriveStatus)(e.newRelic,c)}))}:e,retry:()=>{s({status:"loading"}),i(e=>e+1)}}}])},50762,73011,e=>{"use strict";var t=e.i(71645);let a={loadSeconds:1.5,errorPercent:2,uptimeSLA:99.9};e.s(["DEFAULT_THRESHOLDS",0,a,"deriveStatus",0,function(e,t){let a=e.loadTime/1e3/t.loadSeconds,r=e.errorRate/t.errorPercent;return a>2||r>2?"Critical":a>1||r>1||e.apdexScore<.9?"Warning":"Healthy"}],73011);let r="perf-thresholds",s=new Set,n=null;function i(){if(n)return n;try{n={...a,...JSON.parse(localStorage.getItem(r)??"{}")}}catch{n=a}return n}function c(e){n=e;try{localStorage.setItem(r,JSON.stringify(e))}catch{}s.forEach(e=>e())}let l=!1;function o(e){e.key===r&&(n=null,s.forEach(e=>e()))}function d(e){return s.add(e),l||(l=!0,fetch("/api/settings").then(e=>e.ok?e.json():null).then(e=>e&&c({...a,...e})).catch(()=>{l=!1})),window.addEventListener("storage",o),()=>{s.delete(e),window.removeEventListener("storage",o)}}e.s(["setThresholds",0,function(e){c({...i(),...e}),fetch("/api/settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).catch(()=>{})},"useThresholds",0,function(){return(0,t.useSyncExternalStore)(d,i,()=>a)}],50762)},79432,e=>{"use strict";var t=e.i(56420);let a={name:"activity",size:24,node:[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]};a.node;let r=(0,t.default)(a);e.s(["Activity",0,r],79432)},74544,e=>{"use strict";var t=e.i(56420);let a={name:"clock",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]};a.node;let r=(0,t.default)(a);e.s(["Clock",0,r],74544)},60972,e=>{"use strict";var t=e.i(56420);let a={name:"ellipsis",size:24,node:[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],aliases:["more-horizontal"]};a.node;let r=(0,t.default)(a);e.s(["default",0,r])},64569,e=>{"use strict";var t=e.i(56420);let a={name:"zap",size:24,node:[["path",{d:"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z",key:"1v7up4"}]]};a.node;let r=(0,t.default)(a);e.s(["Zap",0,r],64569)}]);
@@ -0,0 +1,5 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,24851,e=>{"use strict";var t=e.i(43476),a=e.i(22016),r=e.i(70065),s=e.i(67881);e.s(["EmptyState",0,function({title:e="No data yet",reason:n="Keys work, but no page events have arrived.",href:i="/connect",cta:l="Send your first events",onRetry:d}){return(0,t.jsx)(r.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:(0,t.jsxs)(r.CardContent,{className:"flex flex-col items-center gap-3 p-10 text-center",children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-white",children:e}),(0,t.jsx)("p",{className:"max-w-md text-sm text-gray-400",children:n}),(0,t.jsxs)("div",{className:"flex gap-3",children:[(0,t.jsx)(a.default,{href:i,className:(0,s.buttonVariants)(),children:l}),d&&(0,t.jsx)(s.Button,{variant:"outline",onClick:d,children:"Retry"})]})]})})}])},28175,e=>{"use strict";var t=e.i(43476),a=e.i(70065),r=e.i(56420);let s={name:"globe",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]};s.node;let n=(0,r.default)(s);var i=e.i(74544),l=e.i(53138),d=e.i(78320),o=e.i(93961);e.s(["HubMetrics",0,function({pages:e}){let r=e.filter(d.hasData),s=r.length?r.reduce((e,t)=>e+t.newRelic.loadTime,0)/r.length:null,c=e.reduce((e,t)=>e+t.sentry.errorCount,0),u=[{label:"Pages Reporting",value:`${r.length} of ${e.length}`,icon:(0,t.jsx)(n,{className:"h-4 w-4 text-[#3ee0a1]"})},{label:"Avg Load Time",value:null===s?"No data yet":(0,o.formatDuration)(s),icon:(0,t.jsx)(i.Clock,{className:"h-4 w-4 text-[#06b6d4]"})},{label:"Open Errors",value:r.length||c?String(c):"No data yet",icon:(0,t.jsx)(l.AlertTriangle,{className:"h-4 w-4 text-[#ef4444]"})}];return(0,t.jsx)("div",{className:"grid gap-6 md:grid-cols-3 mb-8 mt-4",children:u.map((e,r)=>(0,t.jsx)(a.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:(0,t.jsxs)(a.CardContent,{className:"p-6",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-gray-400",children:e.label}),(0,t.jsx)("div",{className:"flex h-8 w-8 items-center justify-center rounded-lg bg-[#0f1419] border border-[#2d3748]",children:e.icon})]}),(0,t.jsx)("div",{className:"flex items-baseline gap-3",children:(0,t.jsx)("span",{className:"text-3xl font-bold text-white tracking-tight",children:e.value})})]})},r))})}],28175)},7848,e=>{"use strict";var t=e.i(43476),a=e.i(18566),r=e.i(47627),s=e.i(70065),n=e.i(94179),i=e.i(78320),l=e.i(93961);e.s(["HubTable",0,function({pages:e}){let d=(0,a.useRouter)();return(0,t.jsxs)(s.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md flex-1",children:[(0,t.jsx)(s.CardHeader,{children:(0,t.jsx)(s.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:"Tracked Pages Overview"})}),(0,t.jsx)(s.CardContent,{children:(0,t.jsx)("div",{className:"rounded-md border border-[#2d3748] overflow-hidden",children:(0,t.jsxs)(r.Table,{children:[(0,t.jsx)(r.TableHeader,{className:"bg-[#0f1419]",children:(0,t.jsxs)(r.TableRow,{className:"border-[#2d3748] hover:bg-transparent",children:[(0,t.jsx)(r.TableHead,{className:"text-gray-400",children:"Page Name"}),(0,t.jsx)(r.TableHead,{className:"text-gray-400",children:"Path"}),(0,t.jsx)(r.TableHead,{className:"text-gray-400",children:"Visitors (24h)"}),(0,t.jsx)(r.TableHead,{className:"text-gray-400",children:"Avg Load"}),(0,t.jsx)(r.TableHead,{className:"text-gray-400",children:"Errors"}),(0,t.jsx)(r.TableHead,{className:"text-right text-gray-400",children:"Status"})]})}),(0,t.jsx)(r.TableBody,{children:e.map(e=>{let a=(0,i.hasData)(e);return(0,t.jsxs)(r.TableRow,{className:"border-[#2d3748] hover:bg-white/5 transition-colors cursor-pointer",onClick:()=>d.push(`/performance/${e.slug}`),children:[(0,t.jsx)(r.TableCell,{className:"font-medium text-white",children:e.name}),(0,t.jsx)(r.TableCell,{className:"text-gray-500 font-mono text-xs",children:e.url}),(0,t.jsx)(r.TableCell,{className:"text-gray-400",children:a?e.visitors:"—"}),(0,t.jsx)(r.TableCell,{className:"text-gray-400",children:a?(0,l.formatDuration)(e.newRelic.loadTime):"—"}),(0,t.jsx)(r.TableCell,{className:"text-gray-400",children:a?e.sentry.errorCount:"—"}),(0,t.jsx)(r.TableCell,{className:"text-right",children:a?(0,t.jsx)(n.Badge,{variant:"outline",className:`
2
+ ${"Healthy"===e.status?"border-[#3ee0a1] text-[#3ee0a1] bg-[#3ee0a1]/10":""}
3
+ ${"Warning"===e.status?"border-[#f59e0b] text-[#f59e0b] bg-[#f59e0b]/10":""}
4
+ ${"Critical"===e.status?"border-[#ef4444] text-[#ef4444] bg-[#ef4444]/10":""}
5
+ `,children:e.status}):(0,t.jsx)(n.Badge,{variant:"outline",className:"border-[#4a5568] text-gray-400",children:"No data yet"})})]},e.slug)})})]})})})]})}])},11777,e=>{"use strict";var t=e.i(43476),a=e.i(24851),r=e.i(71428),s=e.i(78320),n=e.i(28175),i=e.i(7848);e.s(["PerformanceHub",0,function(){let{state:e,retry:l}=(0,s.useMetrics)();return"loading"===e.status?(0,t.jsx)(r.Skeleton,{className:"mt-6 h-64 w-full bg-[#2d3748]"}):"error"===e.status?(0,t.jsx)(a.EmptyState,{title:"Could not load metrics",reason:e.message,onRetry:l}):e.configured?e.pages.length&&e.pages.some(s.hasData)?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.HubMetrics,{pages:e.pages}),(0,t.jsx)(i.HubTable,{pages:e.pages})]}):(0,t.jsx)(a.EmptyState,{}):(0,t.jsx)(a.EmptyState,{title:"Connect your data",reason:"Add your New Relic and Sentry keys to see real numbers.",href:"/setup",cta:"Set up keys"})}])},94179,e=>{"use strict";var t=e.i(76782),a=e.i(11825),r=e.i(25913),s=e.i(79862);let n=(0,r.cva)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});e.s(["Badge",0,function({className:e,variant:r="default",render:i,...l}){return(0,a.useRender)({defaultTagName:"span",props:(0,t.mergeProps)({className:(0,s.cn)(n({variant:r}),e)},l),render:i,state:{slot:"badge",variant:r}})}])},70065,e=>{"use strict";var t=e.i(43476),a=e.i(79862);e.s(["Card",0,function({className:e,size:r="default",...s}){return(0,t.jsx)("div",{"data-slot":"card","data-size":r,className:(0,a.cn)("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",e),...s})},"CardContent",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-(--card-spacing)",e),...r})},"CardDescription",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-sm text-muted-foreground",e),...r})},"CardHeader",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",e),...r})},"CardTitle",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",e),...r})}])},47627,e=>{"use strict";var t=e.i(43476),a=e.i(79862);e.s(["Table",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,t.jsx)("table",{"data-slot":"table",className:(0,a.cn)("w-full caption-bottom text-sm",e),...r})})},"TableBody",0,function({className:e,...r}){return(0,t.jsx)("tbody",{"data-slot":"table-body",className:(0,a.cn)("[&_tr:last-child]:border-0",e),...r})},"TableCell",0,function({className:e,...r}){return(0,t.jsx)("td",{"data-slot":"table-cell",className:(0,a.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",e),...r})},"TableHead",0,function({className:e,...r}){return(0,t.jsx)("th",{"data-slot":"table-head",className:(0,a.cn)("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",e),...r})},"TableHeader",0,function({className:e,...r}){return(0,t.jsx)("thead",{"data-slot":"table-header",className:(0,a.cn)("[&_tr]:border-b",e),...r})},"TableRow",0,function({className:e,...r}){return(0,t.jsx)("tr",{"data-slot":"table-row",className:(0,a.cn)("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted",e),...r})}])},93961,e=>{"use strict";e.s(["formatDuration",0,function(e){if(!Number.isFinite(e))return"—";let t=Math.abs(Math.round(e));if(t<1e3)return`${Math.round(e)}ms`;if(t<59950)return`${+(e/1e3).toFixed(1)}s`;let a=Math.round(t/1e3),r=e<0?"-":"";return a<3600?`${r}${Math.floor(a/60)}m ${a%60}s`:`${r}${Math.floor(a/3600)}h ${Math.floor(a%3600/60)}m`}])},78320,e=>{"use strict";var t=e.i(71645),a=e.i(73011),r=e.i(50762);e.s(["hasData",0,function(e){return e.newRelic.throughput>0||e.newRelic.loadTime>0||e.sentry.errorCount>0},"useMetrics",0,function(){let[e,s]=(0,t.useState)({status:"loading"}),[n,i]=(0,t.useState)(0);(0,t.useEffect)(()=>{let e=!1;return fetch("/api/metrics").then(async t=>{let a=await t.json();if(!t.ok)throw Error(a.error??`HTTP ${t.status}`);e||s({status:"ready",configured:a.configured,pages:a.pages})}).catch(t=>{e||s({status:"error",message:t instanceof Error?t.message:"Request failed"})}),()=>{e=!0}},[n]);let l=(0,r.useThresholds)();return{state:"ready"===e.status?{...e,pages:e.pages.map(e=>({...e,status:(0,a.deriveStatus)(e.newRelic,l)}))}:e,retry:()=>{s({status:"loading"}),i(e=>e+1)}}}])},50762,73011,e=>{"use strict";var t=e.i(71645);let a={loadSeconds:1.5,errorPercent:2,uptimeSLA:99.9};e.s(["DEFAULT_THRESHOLDS",0,a,"deriveStatus",0,function(e,t){let a=e.loadTime/1e3/t.loadSeconds,r=e.errorRate/t.errorPercent;return a>2||r>2?"Critical":a>1||r>1||e.apdexScore<.9?"Warning":"Healthy"}],73011);let r="perf-thresholds",s=new Set,n=null;function i(){if(n)return n;try{n={...a,...JSON.parse(localStorage.getItem(r)??"{}")}}catch{n=a}return n}function l(e){n=e;try{localStorage.setItem(r,JSON.stringify(e))}catch{}s.forEach(e=>e())}let d=!1;function o(e){e.key===r&&(n=null,s.forEach(e=>e()))}function c(e){return s.add(e),d||(d=!0,fetch("/api/settings").then(e=>e.ok?e.json():null).then(e=>e&&l({...a,...e})).catch(()=>{d=!1})),window.addEventListener("storage",o),()=>{s.delete(e),window.removeEventListener("storage",o)}}e.s(["setThresholds",0,function(e){l({...i(),...e}),fetch("/api/settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).catch(()=>{})},"useThresholds",0,function(){return(0,t.useSyncExternalStore)(c,i,()=>a)}],50762)},74544,e=>{"use strict";var t=e.i(56420);let a={name:"clock",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]};a.node;let r=(0,t.default)(a);e.s(["Clock",0,r],74544)},53138,e=>{"use strict";var t=e.i(56420);let a={name:"triangle-alert",size:24,node:[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],aliases:["alert-triangle"]};a.node;let r=(0,t.default)(a);e.s(["AlertTriangle",0,r],53138)}]);
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,4603,e=>{"use strict";var t=e.i(43476),a=e.i(71645),s=e.i(22016),r=e.i(70065),n=e.i(67881),d=e.i(23750);let i=[{name:"NEWRELIC_API_KEY",label:"New Relic User API key",secret:!0,help:'READS your data (starts NRAK-). Create it under API keys > key type "User".'},{name:"NEXT_PUBLIC_NEWRELIC_ACCOUNT_ID",label:"New Relic account ID",secret:!1,help:"A plain number, shown next to your keys in New Relic."},{name:"SENTRY_API_KEY",label:"Sentry auth token",secret:!0,help:"Lets the dashboard read issues (scopes: project:read, event:read)."},{name:"SENTRY_ORG_SLUG",label:"Sentry organization slug",secret:!1,help:"The name in your Sentry URL: sentry.io/organizations/<slug>/."},{name:"SENTRY_PROJECT_ID",label:"Sentry project slug",secret:!1,help:"The project's slug from Project settings."}];e.s(["SetupForm",0,function(){let[e,l]=(0,a.useState)({}),[o,c]=(0,a.useState)({}),[u,m]=(0,a.useState)({}),[p,x]=(0,a.useState)(null),[h,g]=(0,a.useState)(!1),[f,y]=(0,a.useState)(!1),b=(0,a.useRef)(null);async function N(t){t.preventDefault(),g(!0),x(null);try{let t=await fetch("/api/setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),a=await t.json(),s=a.results??{};m(s);let r=i.find(e=>s[e.name]&&!s[e.name].ok);r&&setTimeout(()=>b.current?.querySelector(`#${r.name}`)?.focus(),0),a.saved?(y(!0),l({}),c(Object.fromEntries(i.map(e=>[e.name,!0]))),x({ok:!0,text:"Saved. Your keys are valid and stored in .env.local. No restart needed."})):x({ok:!1,text:a.error??"Nothing was saved. Fix the fields marked below."})}catch{x({ok:!1,text:"Could not reach the dashboard server."})}finally{g(!1)}}return(0,a.useEffect)(()=>{fetch("/api/setup").then(e=>e.json()).then(e=>{e.keys?c(e.keys):e.error&&x({ok:!1,text:e.error})}).catch(()=>{})},[]),(0,t.jsxs)(r.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md max-w-2xl",children:[(0,t.jsxs)(r.CardHeader,{children:[(0,t.jsx)(r.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:"Connect New Relic and Sentry"}),(0,t.jsx)(r.CardDescription,{className:"text-sm text-gray-400",children:"Keys are checked once, saved to .env.local in this folder, and never shown again. The key that sends events (Ingest - License) is separate and is added later on the Connect page."})]}),(0,t.jsx)(r.CardContent,{children:(0,t.jsxs)("form",{ref:b,onSubmit:N,className:"flex flex-col gap-5",children:[i.map(a=>{let s=u[a.name];return(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsxs)("label",{htmlFor:a.name,className:"text-sm font-medium text-gray-300",children:[a.label," ",o[a.name]&&(0,t.jsx)("span",{className:"ml-2 text-xs text-[#3ee0a1]",children:"✓ Set"})]}),(0,t.jsx)(d.Input,{id:a.name,name:a.name,type:a.secret?"password":"text",autoComplete:"off",spellCheck:!1,placeholder:o[a.name]?"•••••••• (leave blank to keep, type to replace)":"",value:e[a.name]??"",onChange:t=>l({...e,[a.name]:t.target.value}),"aria-invalid":!!s&&!s.ok||void 0,"aria-describedby":`${a.name}-help ${a.name}-result`,className:"bg-[#0f1419] border-[#2d3748] text-gray-200 font-mono text-xs"}),(0,t.jsx)("p",{id:`${a.name}-help`,className:"text-xs text-gray-400",children:a.help}),(0,t.jsxs)("div",{id:`${a.name}-result`,"aria-live":"polite",children:[s&&!s.ok&&(0,t.jsxs)("p",{className:"text-xs text-[#f87171]",children:["✗ ",s.error]}),s?.ok&&(0,t.jsx)("p",{className:"text-xs text-[#3ee0a1]",children:"✓ Checked"})]})]},a.name)}),(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)(n.Button,{type:"submit",disabled:h,children:h?"Checking…":"Check and save"}),(0,t.jsx)("span",{"aria-live":"polite",className:`text-sm ${p?.ok?"text-[#3ee0a1]":"text-[#f87171]"}`,children:p?.text}),f&&(0,t.jsx)(s.default,{href:"/connect",className:(0,n.buttonVariants)({variant:"outline"}),children:"Next: connect your app"})]})]})})]})}])},70065,e=>{"use strict";var t=e.i(43476),a=e.i(79862);e.s(["Card",0,function({className:e,size:s="default",...r}){return(0,t.jsx)("div",{"data-slot":"card","data-size":s,className:(0,a.cn)("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",e),...r})},"CardContent",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-(--card-spacing)",e),...s})},"CardDescription",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-sm text-muted-foreground",e),...s})},"CardHeader",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",e),...s})},"CardTitle",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",e),...s})}])}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,55370,e=>{"use strict";var t=e.i(43476),a=e.i(71645),s=e.i(70065),r=e.i(67881),n=e.i(23750);let i=[{id:"gemini",label:"Google Gemini",help:"Create a key at aistudio.google.com/apikey."},{id:"claude",label:"Anthropic Claude",help:"Create a key at console.anthropic.com > API keys."},{id:"openai",label:"OpenAI",help:"Create a key at platform.openai.com/api-keys."}];e.s(["AiKeyForm",0,function(){let[e,l]=(0,a.useState)(i[0].id),[d,o]=(0,a.useState)(""),[c,m]=(0,a.useState)(null),[p,h]=(0,a.useState)({}),[x,u]=(0,a.useState)(null),[g,f]=(0,a.useState)(!1);async function y(t){t.preventDefault(),f(!0),u(null);try{let t=await fetch("/api/setup/ai",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e,key:d})}),a=await t.json();a.saved?(o(""),m(e),h({...p,[e]:!0}),u({ok:!0,text:"Saved. AI suggestions now use this provider. No restart needed."})):u({ok:!1,text:a.error??"Nothing was saved."})}catch{u({ok:!1,text:"Could not reach the dashboard server."})}finally{f(!1)}}(0,a.useEffect)(()=>{fetch("/api/setup/ai").then(e=>e.json()).then(e=>{e.keys&&(h(e.keys),m(e.provider),e.provider&&l(e.provider))}).catch(()=>{})},[]);let b=i.find(t=>t.id===e);return(0,t.jsxs)(s.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md max-w-2xl mt-6",children:[(0,t.jsxs)(s.CardHeader,{children:[(0,t.jsx)(s.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:"AI suggestions (optional)"}),(0,t.jsx)(s.CardDescription,{className:"text-sm text-gray-400",children:"Add a Gemini, Claude or OpenAI key to get AI insights and recommendations for your pages. Only page names, load times and error counts are sent to the provider you pick. Without a key, the dashboard shows sample suggestions."})]}),(0,t.jsx)(s.CardContent,{children:(0,t.jsxs)("form",{onSubmit:y,className:"flex flex-col gap-5",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("label",{htmlFor:"ai-provider",className:"text-sm font-medium text-gray-300",children:"Provider"}),(0,t.jsx)("select",{id:"ai-provider",value:e,onChange:e=>l(e.target.value),className:"h-9 rounded-md border border-[#2d3748] bg-[#0f1419] px-3 text-sm text-gray-200",children:i.map(e=>(0,t.jsxs)("option",{value:e.id,children:[e.label,c===e.id?" (in use)":p[e.id]?" (key saved)":""]},e.id))})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsxs)("label",{htmlFor:"ai-key",className:"text-sm font-medium text-gray-300",children:[b.label," API key ",p[e]&&(0,t.jsx)("span",{className:"ml-2 text-xs text-[#3ee0a1]",children:"✓ Set"})]}),(0,t.jsx)(n.Input,{id:"ai-key",type:"password",autoComplete:"off",spellCheck:!1,placeholder:p[e]?"•••••••• (type to replace)":"",value:d,onChange:e=>o(e.target.value),"aria-describedby":"ai-key-help",className:"bg-[#0f1419] border-[#2d3748] text-gray-200 font-mono text-xs"}),(0,t.jsx)("p",{id:"ai-key-help",className:"text-xs text-gray-400",children:b.help})]}),(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)(r.Button,{type:"submit",disabled:g||!d.trim(),children:g?"Checking…":"Check and save"}),(0,t.jsx)("span",{"aria-live":"polite",className:`text-sm ${x?.ok?"text-[#3ee0a1]":"text-[#f87171]"}`,children:x?.text})]})]})})]})}])},4603,e=>{"use strict";var t=e.i(43476),a=e.i(71645),s=e.i(22016),r=e.i(70065),n=e.i(67881),i=e.i(23750);let l=[{name:"NEWRELIC_API_KEY",label:"New Relic User API key",secret:!0,help:'READS your data (starts NRAK-). Create it under API keys > key type "User".'},{name:"NEXT_PUBLIC_NEWRELIC_ACCOUNT_ID",label:"New Relic account ID",secret:!1,help:"A plain number, shown next to your keys in New Relic."},{name:"SENTRY_API_KEY",label:"Sentry auth token",secret:!0,help:"Lets the dashboard read issues (scopes: project:read, event:read)."},{name:"SENTRY_ORG_SLUG",label:"Sentry organization slug",secret:!1,help:"The name in your Sentry URL: sentry.io/organizations/<slug>/."},{name:"SENTRY_PROJECT_ID",label:"Sentry project slug",secret:!1,help:"The project's slug from Project settings."}];e.s(["SetupForm",0,function(){let[e,d]=(0,a.useState)({}),[o,c]=(0,a.useState)({}),[m,p]=(0,a.useState)({}),[h,x]=(0,a.useState)(null),[u,g]=(0,a.useState)(!1),[f,y]=(0,a.useState)(!1),b=(0,a.useRef)(null);async function v(t){t.preventDefault(),g(!0),x(null);try{let t=await fetch("/api/setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),a=await t.json(),s=a.results??{};p(s);let r=l.find(e=>s[e.name]&&!s[e.name].ok);r&&setTimeout(()=>b.current?.querySelector(`#${r.name}`)?.focus(),0),a.saved?(y(!0),d({}),c(Object.fromEntries(l.map(e=>[e.name,!0]))),x({ok:!0,text:"Saved. Your keys are valid and stored in .env.local. No restart needed."})):x({ok:!1,text:a.error??"Nothing was saved. Fix the fields marked below."})}catch{x({ok:!1,text:"Could not reach the dashboard server."})}finally{g(!1)}}return(0,a.useEffect)(()=>{fetch("/api/setup").then(e=>e.json()).then(e=>{e.keys?c(e.keys):e.error&&x({ok:!1,text:e.error})}).catch(()=>{})},[]),(0,t.jsxs)(r.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md max-w-2xl",children:[(0,t.jsxs)(r.CardHeader,{children:[(0,t.jsx)(r.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:"Connect New Relic and Sentry"}),(0,t.jsx)(r.CardDescription,{className:"text-sm text-gray-400",children:"Keys are checked once, saved to .env.local in this folder, and never shown again. The key that sends events (Ingest - License) is separate and is added later on the Connect page."})]}),(0,t.jsx)(r.CardContent,{children:(0,t.jsxs)("form",{ref:b,onSubmit:v,className:"flex flex-col gap-5",children:[l.map(a=>{let s=m[a.name];return(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsxs)("label",{htmlFor:a.name,className:"text-sm font-medium text-gray-300",children:[a.label," ",o[a.name]&&(0,t.jsx)("span",{className:"ml-2 text-xs text-[#3ee0a1]",children:"✓ Set"})]}),(0,t.jsx)(i.Input,{id:a.name,name:a.name,type:a.secret?"password":"text",autoComplete:"off",spellCheck:!1,placeholder:o[a.name]?"•••••••• (leave blank to keep, type to replace)":"",value:e[a.name]??"",onChange:t=>d({...e,[a.name]:t.target.value}),"aria-invalid":!!s&&!s.ok||void 0,"aria-describedby":`${a.name}-help ${a.name}-result`,className:"bg-[#0f1419] border-[#2d3748] text-gray-200 font-mono text-xs"}),(0,t.jsx)("p",{id:`${a.name}-help`,className:"text-xs text-gray-400",children:a.help}),(0,t.jsxs)("div",{id:`${a.name}-result`,"aria-live":"polite",children:[s&&!s.ok&&(0,t.jsxs)("p",{className:"text-xs text-[#f87171]",children:["✗ ",s.error]}),s?.ok&&(0,t.jsx)("p",{className:"text-xs text-[#3ee0a1]",children:"✓ Checked"})]})]},a.name)}),(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)(n.Button,{type:"submit",disabled:u,children:u?"Checking…":"Check and save"}),(0,t.jsx)("span",{"aria-live":"polite",className:`text-sm ${h?.ok?"text-[#3ee0a1]":"text-[#f87171]"}`,children:h?.text}),f&&(0,t.jsx)(s.default,{href:"/connect",className:(0,n.buttonVariants)({variant:"outline"}),children:"Next: connect your app"})]})]})})]})}])},70065,e=>{"use strict";var t=e.i(43476),a=e.i(79862);e.s(["Card",0,function({className:e,size:s="default",...r}){return(0,t.jsx)("div",{"data-slot":"card","data-size":s,className:(0,a.cn)("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",e),...r})},"CardContent",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-(--card-spacing)",e),...s})},"CardDescription",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-sm text-muted-foreground",e),...s})},"CardHeader",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",e),...s})},"CardTitle",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",e),...s})}])}]);
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,94179,e=>{"use strict";var t=e.i(76782),a=e.i(11825),r=e.i(25913),d=e.i(79862);let s=(0,r.cva)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});e.s(["Badge",0,function({className:e,variant:r="default",render:i,...n}){return(0,a.useRender)({defaultTagName:"span",props:(0,t.mergeProps)({className:(0,d.cn)(s({variant:r}),e)},n),render:i,state:{slot:"badge",variant:r}})}])},70065,e=>{"use strict";var t=e.i(43476),a=e.i(79862);e.s(["Card",0,function({className:e,size:r="default",...d}){return(0,t.jsx)("div",{"data-slot":"card","data-size":r,className:(0,a.cn)("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",e),...d})},"CardContent",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-(--card-spacing)",e),...r})},"CardDescription",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-sm text-muted-foreground",e),...r})},"CardHeader",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",e),...r})},"CardTitle",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",e),...r})}])},47627,e=>{"use strict";var t=e.i(43476),a=e.i(79862);e.s(["Table",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,t.jsx)("table",{"data-slot":"table",className:(0,a.cn)("w-full caption-bottom text-sm",e),...r})})},"TableBody",0,function({className:e,...r}){return(0,t.jsx)("tbody",{"data-slot":"table-body",className:(0,a.cn)("[&_tr:last-child]:border-0",e),...r})},"TableCell",0,function({className:e,...r}){return(0,t.jsx)("td",{"data-slot":"table-cell",className:(0,a.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",e),...r})},"TableHead",0,function({className:e,...r}){return(0,t.jsx)("th",{"data-slot":"table-head",className:(0,a.cn)("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",e),...r})},"TableHeader",0,function({className:e,...r}){return(0,t.jsx)("thead",{"data-slot":"table-header",className:(0,a.cn)("[&_tr]:border-b",e),...r})},"TableRow",0,function({className:e,...r}){return(0,t.jsx)("tr",{"data-slot":"table-row",className:(0,a.cn)("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted",e),...r})}])},79432,e=>{"use strict";var t=e.i(56420);let a={name:"activity",size:24,node:[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]};a.node;let r=(0,t.default)(a);e.s(["Activity",0,r],79432)}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,94179,e=>{"use strict";var t=e.i(76782),a=e.i(11825),r=e.i(25913),n=e.i(79862);let s=(0,r.cva)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});e.s(["Badge",0,function({className:e,variant:r="default",render:i,...d}){return(0,a.useRender)({defaultTagName:"span",props:(0,t.mergeProps)({className:(0,n.cn)(s({variant:r}),e)},d),render:i,state:{slot:"badge",variant:r}})}])},70065,e=>{"use strict";var t=e.i(43476),a=e.i(79862);e.s(["Card",0,function({className:e,size:r="default",...n}){return(0,t.jsx)("div",{"data-slot":"card","data-size":r,className:(0,a.cn)("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",e),...n})},"CardContent",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-(--card-spacing)",e),...r})},"CardDescription",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-sm text-muted-foreground",e),...r})},"CardHeader",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",e),...r})},"CardTitle",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",e),...r})}])},47627,e=>{"use strict";var t=e.i(43476),a=e.i(79862);e.s(["Table",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,t.jsx)("table",{"data-slot":"table",className:(0,a.cn)("w-full caption-bottom text-sm",e),...r})})},"TableBody",0,function({className:e,...r}){return(0,t.jsx)("tbody",{"data-slot":"table-body",className:(0,a.cn)("[&_tr:last-child]:border-0",e),...r})},"TableCell",0,function({className:e,...r}){return(0,t.jsx)("td",{"data-slot":"table-cell",className:(0,a.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",e),...r})},"TableHead",0,function({className:e,...r}){return(0,t.jsx)("th",{"data-slot":"table-head",className:(0,a.cn)("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",e),...r})},"TableHeader",0,function({className:e,...r}){return(0,t.jsx)("thead",{"data-slot":"table-header",className:(0,a.cn)("[&_tr]:border-b",e),...r})},"TableRow",0,function({className:e,...r}){return(0,t.jsx)("tr",{"data-slot":"table-row",className:(0,a.cn)("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted",e),...r})}])},50762,73011,e=>{"use strict";var t=e.i(71645);let a={loadSeconds:1.5,errorPercent:2,uptimeSLA:99.9};e.s(["DEFAULT_THRESHOLDS",0,a,"deriveStatus",0,function(e,t){let a=e.loadTime/1e3/t.loadSeconds,r=e.errorRate/t.errorPercent;return a>2||r>2?"Critical":a>1||r>1||e.apdexScore<.9?"Warning":"Healthy"}],73011);let r="perf-thresholds",n=new Set,s=null;function i(){if(s)return s;try{s={...a,...JSON.parse(localStorage.getItem(r)??"{}")}}catch{s=a}return s}function d(e){s=e;try{localStorage.setItem(r,JSON.stringify(e))}catch{}n.forEach(e=>e())}let o=!1;function c(e){e.key===r&&(s=null,n.forEach(e=>e()))}function l(e){return n.add(e),o||(o=!0,fetch("/api/settings").then(e=>e.ok?e.json():null).then(e=>e&&d({...a,...e})).catch(()=>{o=!1})),window.addEventListener("storage",c),()=>{n.delete(e),window.removeEventListener("storage",c)}}e.s(["setThresholds",0,function(e){d({...i(),...e}),fetch("/api/settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).catch(()=>{})},"useThresholds",0,function(){return(0,t.useSyncExternalStore)(l,i,()=>a)}],50762)},79432,e=>{"use strict";var t=e.i(56420);let a={name:"activity",size:24,node:[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]};a.node;let r=(0,t.default)(a);e.s(["Activity",0,r],79432)}]);