@karan171996/metricflow 0.5.3 → 0.8.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 (149) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/fallback-build-manifest.json +3 -3
  4. package/.next/next-server.js.nft.json +1 -1
  5. package/.next/prerender-manifest.json +6 -6
  6. package/.next/server/app/_global-error.html +1 -1
  7. package/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  12. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/_not-found.html +2 -2
  14. package/.next/server/app/_not-found.rsc +9 -9
  15. package/.next/server/app/_not-found.segments/_full.segment.rsc +9 -9
  16. package/.next/server/app/_not-found.segments/_index.segment.rsc +8 -8
  17. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  19. package/.next/server/app/api/analyze/route.js +2 -2
  20. package/.next/server/app/api/analyze/route.js.nft.json +1 -1
  21. package/.next/server/app/api/connect/route.js +1 -1
  22. package/.next/server/app/api/connect/route.js.nft.json +1 -1
  23. package/.next/server/app/api/health/route.js.nft.json +1 -1
  24. package/.next/server/app/api/metrics/route.js +2 -2
  25. package/.next/server/app/api/metrics/route.js.nft.json +1 -1
  26. package/.next/server/app/api/settings/route.js.nft.json +1 -1
  27. package/.next/server/app/api/setup/ai/route.js.nft.json +1 -1
  28. package/.next/server/app/api/setup/route.js +3 -2
  29. package/.next/server/app/api/setup/route.js.nft.json +1 -1
  30. package/.next/server/app/connect/page.js.nft.json +1 -1
  31. package/.next/server/app/connect/page_client-reference-manifest.js +1 -1
  32. package/.next/server/app/connect.html +19 -66
  33. package/.next/server/app/connect.rsc +11 -11
  34. package/.next/server/app/connect.segments/_full.segment.rsc +11 -11
  35. package/.next/server/app/connect.segments/_index.segment.rsc +8 -8
  36. package/.next/server/app/connect.segments/_tree.segment.rsc +2 -2
  37. package/.next/server/app/connect.segments/connect/__PAGE__.segment.rsc +6 -6
  38. package/.next/server/app/index.html +2 -2
  39. package/.next/server/app/index.rsc +11 -11
  40. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  41. package/.next/server/app/index.segments/_full.segment.rsc +11 -11
  42. package/.next/server/app/index.segments/_index.segment.rsc +8 -8
  43. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  44. package/.next/server/app/page.js.nft.json +1 -1
  45. package/.next/server/app/page_client-reference-manifest.js +1 -1
  46. package/.next/server/app/performance/[slug]/page.js +2 -2
  47. package/.next/server/app/performance/[slug]/page.js.nft.json +1 -1
  48. package/.next/server/app/performance/[slug]/page_client-reference-manifest.js +1 -1
  49. package/.next/server/app/performance/page.js.nft.json +1 -1
  50. package/.next/server/app/performance/page_client-reference-manifest.js +1 -1
  51. package/.next/server/app/performance.html +2 -2
  52. package/.next/server/app/performance.rsc +12 -12
  53. package/.next/server/app/performance.segments/_full.segment.rsc +12 -12
  54. package/.next/server/app/performance.segments/_index.segment.rsc +8 -8
  55. package/.next/server/app/performance.segments/_tree.segment.rsc +2 -2
  56. package/.next/server/app/performance.segments/performance/__PAGE__.segment.rsc +7 -7
  57. package/.next/server/app/settings/page.js.nft.json +1 -1
  58. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  59. package/.next/server/app/settings.html +2 -2
  60. package/.next/server/app/settings.rsc +22 -22
  61. package/.next/server/app/settings.segments/_full.segment.rsc +22 -22
  62. package/.next/server/app/settings.segments/_index.segment.rsc +8 -8
  63. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  64. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +17 -17
  65. package/.next/server/app/setup/page.js.nft.json +1 -1
  66. package/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  67. package/.next/server/app/setup.html +2 -2
  68. package/.next/server/app/setup.rsc +12 -12
  69. package/.next/server/app/setup.segments/_full.segment.rsc +12 -12
  70. package/.next/server/app/setup.segments/_index.segment.rsc +8 -8
  71. package/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  72. package/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +7 -7
  73. package/.next/server/app/tools/[tool]/page.js.nft.json +1 -1
  74. package/.next/server/app/tools/[tool]/page_client-reference-manifest.js +1 -1
  75. package/.next/server/chunks/[root-of-the-server]__0fkj1-q._.js +1 -1
  76. package/.next/server/chunks/[root-of-the-server]__0o2ceqr._.js +18 -0
  77. package/.next/server/chunks/[root-of-the-server]__0pil1g6._.js +3 -0
  78. package/.next/server/chunks/[root-of-the-server]__0xmaf60._.js +18 -0
  79. package/.next/server/chunks/[root-of-the-server]__18s35pf._.js +1 -1
  80. package/.next/server/chunks/[root-of-the-server]__1f_fo0j._.js +1 -1
  81. package/.next/server/chunks/[root-of-the-server]__1naf7j4._.js +3 -0
  82. package/.next/server/chunks/[root-of-the-server]__1o9k4jf._.js +1 -1
  83. package/.next/server/chunks/[root-of-the-server]__1rx5s6r._.js +3 -0
  84. package/.next/server/chunks/_08xo8nu._.js +4 -4
  85. package/.next/server/chunks/_0w8wvdn._.js +1 -1
  86. package/.next/server/chunks/_0wct7-r._.js +1 -16
  87. package/.next/server/chunks/_1l9d64o._.js +2 -2
  88. package/.next/server/chunks/ssr/0x0c_next_dist_1icgwks._.js +1 -1
  89. package/.next/server/chunks/ssr/[root-of-the-server]__02c3m72._.js +1 -1
  90. package/.next/server/chunks/ssr/[root-of-the-server]__0g1dtzd._.js +1 -1
  91. package/.next/server/chunks/ssr/[root-of-the-server]__0l4t71c._.js +1 -1
  92. package/.next/server/chunks/ssr/[root-of-the-server]__1jr0qvs._.js +1 -1
  93. package/.next/server/chunks/ssr/{[root-of-the-server]__0ryyli3._.js → [root-of-the-server]__1xhr2zy._.js} +1 -1
  94. package/.next/server/chunks/ssr/_045bvlq._.js +1 -1
  95. package/.next/server/chunks/ssr/_0_02db6._.js +1 -1
  96. package/.next/server/chunks/ssr/_0bxxvzb._.js +1 -1
  97. package/.next/server/chunks/ssr/_0cq6qjs._.js +9 -63
  98. package/.next/server/chunks/ssr/_0htqt7_._.js +10 -5
  99. package/.next/server/chunks/ssr/_0ompurr._.js +2 -2
  100. package/.next/server/chunks/ssr/_0un641_._.js +1 -1
  101. package/.next/server/chunks/ssr/_12pw-ix._.js +151 -0
  102. package/.next/server/chunks/ssr/_13m9nev._.js +1 -1
  103. package/.next/server/chunks/ssr/_19s4g71._.js +1 -1
  104. package/.next/server/chunks/ssr/_1n6rdd2._.js +1 -1
  105. package/.next/server/chunks/ssr/components_1_8btz1._.js +1 -1
  106. package/.next/server/middleware-build-manifest.js +3 -3
  107. package/.next/server/middleware.js.nft.json +1 -1
  108. package/.next/server/pages/404.html +2 -2
  109. package/.next/server/pages/500.html +1 -1
  110. package/.next/static/chunks/036zzfotyi252.js +1 -0
  111. package/.next/static/chunks/18thq9ido-jej.js +5 -0
  112. package/.next/static/chunks/{19qbz8dh8aqt6.js → 190rvtbj8tqbw.js} +1 -1
  113. package/.next/static/chunks/1kqzgl2gb6ily.js +1 -0
  114. package/.next/static/chunks/2h1anqi3hzijd.js +1 -0
  115. package/.next/static/chunks/{0_xh0vh4uh0vk.js → 2pf7wdwyhi6ks.js} +1 -1
  116. package/.next/static/chunks/{278--y-yo6m9v.js → 31od3fbrskb5_.js} +1 -1
  117. package/.next/static/chunks/332sb1iij72mz.css +1 -0
  118. package/.next/static/chunks/3khzw5hn41lt7.js +11 -0
  119. package/.next/static/chunks/3o4y8rhawejsr.js +1 -0
  120. package/.next/trace +1 -1
  121. package/.next/trace-build +1 -1
  122. package/README.md +48 -7
  123. package/bin/cli.mjs +2 -1
  124. package/dist/browser/index.d.mts +27 -0
  125. package/dist/browser/index.mjs +110 -0
  126. package/dist/browser/newrelic-agent.d.mts +4 -0
  127. package/dist/browser/newrelic-agent.mjs +32 -0
  128. package/dist/browser/newrelic.d.mts +2 -0
  129. package/dist/browser/newrelic.mjs +35 -0
  130. package/dist/browser/sentry-sdk.d.mts +2 -0
  131. package/dist/browser/sentry-sdk.mjs +22 -0
  132. package/dist/browser/sentry.d.mts +2 -0
  133. package/dist/browser/sentry.mjs +45 -0
  134. package/package.json +15 -3
  135. package/.next/server/chunks/[root-of-the-server]__12h8r83._.js +0 -3
  136. package/.next/server/chunks/[root-of-the-server]__19yigji._.js +0 -3
  137. package/.next/server/chunks/[root-of-the-server]__1sf143y._.js +0 -3
  138. package/.next/server/chunks/[root-of-the-server]__1zlr3w0._.js +0 -3
  139. package/.next/server/chunks/ssr/_14aoqb2._.js +0 -151
  140. package/.next/static/chunks/2-az50vi0iboz.js +0 -5
  141. package/.next/static/chunks/2bt9wtnw1g0g_.css +0 -1
  142. package/.next/static/chunks/2mi013mf2pu08.js +0 -1
  143. package/.next/static/chunks/2wmat901j6po0.js +0 -1
  144. package/.next/static/chunks/332-owz6utwp5.js +0 -1
  145. package/.next/static/chunks/39h0f3s2ddxz_.js +0 -65
  146. package/.next/static/chunks/3ab7oxjuh1asy.js +0 -1
  147. /package/.next/static/{fn1O5hprdyzrIbY1gapbZ → 4kpNMSdt6_Tq6ls8b4gmd}/_buildManifest.js +0 -0
  148. /package/.next/static/{fn1O5hprdyzrIbY1gapbZ → 4kpNMSdt6_Tq6ls8b4gmd}/_clientMiddlewareManifest.js +0 -0
  149. /package/.next/static/{fn1O5hprdyzrIbY1gapbZ → 4kpNMSdt6_Tq6ls8b4gmd}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
1
  module.exports=[49719,(a,b,c)=>{b.exports=a.x("assert",()=>require("assert"))},27699,(a,b,c)=>{b.exports=a.x("events",()=>require("events"))},22734,(a,b,c)=>{b.exports=a.x("fs",()=>require("fs"))},21517,(a,b,c)=>{b.exports=a.x("http",()=>require("http"))},25328,(a,b,c)=>{b.exports=a.x("http2",()=>require("http2"))},24836,(a,b,c)=>{b.exports=a.x("https",()=>require("https"))},4446,(a,b,c)=>{b.exports=a.x("net",()=>require("net"))},93695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},66680,(a,b,c)=>{b.exports=a.x("node:crypto",()=>require("node:crypto"))},2157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},46786,(a,b,c)=>{b.exports=a.x("os",()=>require("os"))},88947,(a,b,c)=>{b.exports=a.x("stream",()=>require("stream"))},55004,(a,b,c)=>{b.exports=a.x("tls",()=>require("tls"))},70722,(a,b,c)=>{b.exports=a.x("tty",()=>require("tty"))},92509,(a,b,c)=>{b.exports=a.x("url",()=>require("url"))},6461,(a,b,c)=>{b.exports=a.x("zlib",()=>require("zlib"))},71385,a=>{a.v("/_next/static/media/icon.23mz8iwcatff2.svg"+(globalThis.NEXT_CLIENT_ASSET_SUFFIX||""))},48760,a=>{"use strict";let b={src:a.i(71385).default,width:32,height:32};a.s(["default",0,b])},33951,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(18060).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/node_modules/.pnpm/lucide-react@1.47.0_react@19.2.8/node_modules/lucide-react/dist/esm/Icon.mjs from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/node_modules/.pnpm/lucide-react@1.47.0_react@19.2.8/node_modules/lucide-react/dist/esm/Icon.mjs","default")},50254,a=>{"use strict";var b=a.i(33951);a.n(b)},7969,a=>{"use strict";var b=a.i(56149),c=a.i(50254);a.s(["default",0,function(a,d=[],e=[]){let f,g="string"==typeof a?function(a,b,c=[]){if(null==b)throw Error("[lucide]: iconNode is required when icon name is used");return{name:a?.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),size:24,node:b,...c.length>0?{aliases:c}:{}}}(a,d,e):a,h=(0,b.forwardRef)(({className:a,...d},e)=>(0,b.createElement)(c.default,{ref:e,icon:g,className:a,...d}));return g.name&&(h.displayName=(f=(a=>{let b="",c=!1;for(let d of a){if("-"===d||"_"===d||d<=" "){c=b.length>0;continue}0===b.length?b+=d.toLowerCase():b+=c?d.toUpperCase():d,c=!1}return b})(g.name)).charAt(0).toUpperCase()+f.slice(1)),h}],7969)},28281,a=>{"use strict";var b=a.i(46797),c=a.i(282),d=a.i(89196);a.i(60796);let e=(0,b.instrumentModuleGetter)(()=>a.r(48760)),f=(0,b.instrumentModuleGetter)(()=>a.r(70864)),g=(0,b.instrumentModuleGetter)(()=>a.r(45538)),h=(0,b.instrumentModuleGetter)(()=>a.r(54254)),i=(0,b.instrumentModuleGetter)(()=>a.r(73833)),j=(0,b.instrumentModuleGetter)(()=>a.r(35191)),k=(0,b.instrumentModuleGetter)(()=>a.r(68119)),l=(0,b.instrumentModuleGetter)(()=>a.r(78932)),m=(0,b.instrumentModuleGetter)(()=>a.r(27991)),n=["",{children:["performance",{children:["[slug]",{children:["__PAGE__",{},{metadata:{},page:[(0,b.instrumentModuleGetter)(()=>a.r(77450)),"[project]/app/performance/[slug]/page.tsx"]},[]]},{metadata:{},loading:[m,"[project]/app/performance/[slug]/loading.tsx"]},[]]},{metadata:{},loading:[l,"[project]/app/performance/loading.tsx"]},[]]},{metadata:{icon:[async()=>{let a=(0,d.interopDefault)(await e());return[{url:`/icon.svg?${a.src.split("/").splice(-1)[0]}`,sizes:"any",type:"image/svg+xml"}]}]},layout:[f,"[project]/app/layout.tsx"],loading:[g,"[project]/app/loading.tsx"],"not-found":[h,"[project]/node_modules/.pnpm/next@16.3.8_@babel+core@7.29.7_supports-color@8.1.1__@opentelemetry+api@1.9.1_@types+no_c2c791d25241ae4161c9f48ecf186c77/node_modules/next/dist/client/components/builtin/not-found.js"],forbidden:[i,"[project]/node_modules/.pnpm/next@16.3.8_@babel+core@7.29.7_supports-color@8.1.1__@opentelemetry+api@1.9.1_@types+no_c2c791d25241ae4161c9f48ecf186c77/node_modules/next/dist/client/components/builtin/forbidden.js"],unauthorized:[j,"[project]/node_modules/.pnpm/next@16.3.8_@babel+core@7.29.7_supports-color@8.1.1__@opentelemetry+api@1.9.1_@types+no_c2c791d25241ae4161c9f48ecf186c77/node_modules/next/dist/client/components/builtin/unauthorized.js"],"global-error":[k,"[project]/node_modules/.pnpm/next@16.3.8_@babel+core@7.29.7_supports-color@8.1.1__@opentelemetry+api@1.9.1_@types+no_c2c791d25241ae4161c9f48ecf186c77/node_modules/next/dist/client/components/builtin/global-error.js"]},[]],o=a.r.bind(a),p=a.l.bind(a),q=(0,c.createAppPageEntrypoint)({tree:n,page:"/performance/[slug]/page",pathname:"/performance/[slug]",require:o,loadChunk:p,interopDefault:d.interopDefault}),r=q.__next_app__,s=q.routeModule,t=q.handler;a.s(["__next_app__",0,r,"handler",0,t,"routeModule",0,s],66578),a.i(66578);var u=a.i(25948);a.s(["ClientPageRoot",()=>u.ClientPageRoot,"ClientSegmentRoot",()=>u.ClientSegmentRoot,"Fragment",()=>u.Fragment,"HTTPAccessFallbackBoundary",()=>u.HTTPAccessFallbackBoundary,"InstantValidation",()=>u.InstantValidation,"LayoutRouter",()=>u.LayoutRouter,"LoadingBoundaryProvider",()=>u.LoadingBoundaryProvider,"Postpone",()=>u.Postpone,"RenderFromTemplateContext",()=>u.RenderFromTemplateContext,"RootLayoutBoundary",()=>u.RootLayoutBoundary,"SegmentViewNode",()=>u.SegmentViewNode,"SegmentViewStateNode",()=>u.SegmentViewStateNode,"__next_app__",0,r,"captureOwnerStack",()=>u.captureOwnerStack,"collectPrefetchHints",()=>u.collectPrefetchHints,"collectSegmentData",()=>u.collectSegmentData,"createElement",()=>u.createElement,"createMetadataComponents",()=>u.createMetadataComponents,"createPrerenderParamsForClientSegment",()=>u.createPrerenderParamsForClientSegment,"createPrerenderSearchParamsForClientPage",()=>u.createPrerenderSearchParamsForClientPage,"createServerParamsForServerSegment",()=>u.createServerParamsForServerSegment,"createServerSearchParamsForServerPage",()=>u.createServerSearchParamsForServerPage,"createTemporaryReferenceSet",()=>u.createTemporaryReferenceSet,"decodeAction",()=>u.decodeAction,"decodeFormState",()=>u.decodeFormState,"decodeReply",()=>u.decodeReply,"handler",0,t,"isEmptyHTMLPrelude",()=>u.isEmptyHTMLPrelude,"patchFetch",()=>u.patchFetch,"preconnect",()=>u.preconnect,"preloadFont",()=>u.preloadFont,"preloadStyle",()=>u.preloadStyle,"prerender",()=>u.prerender,"prerenderToNodeStream",()=>u.prerenderToNodeStream,"renderToPipeableStream",()=>u.renderToPipeableStream,"renderToReadableStream",()=>u.renderToReadableStream,"routeModule",0,s,"serverHooks",()=>u.serverHooks,"taintObjectReference",()=>u.taintObjectReference],28281)}];
2
2
 
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0ryyli3._.js.map
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__1xhr2zy._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[40602,a=>{"use strict";a.s(["ExportSettings",()=>b]);let b=(0,a.i(18060).registerClientReference)(function(){throw Error("Attempted to call ExportSettings() from the server but ExportSettings is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/Settings/ExportSettings.tsx","ExportSettings")},61057,a=>{"use strict";var b=a.i(40602);a.n(b)},46280,a=>{"use strict";a.s(["NotificationPrefs",()=>b]);let b=(0,a.i(18060).registerClientReference)(function(){throw Error("Attempted to call NotificationPrefs() from the server but NotificationPrefs is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/Settings/NotificationPrefs.tsx","NotificationPrefs")},62807,a=>{"use strict";var b=a.i(46280);a.n(b)},44063,a=>{"use strict";a.s(["TeamMembers",()=>b]);let b=(0,a.i(18060).registerClientReference)(function(){throw Error("Attempted to call TeamMembers() from the server but TeamMembers is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/Settings/TeamMembers.tsx","TeamMembers")},40321,a=>{"use strict";var b=a.i(44063);a.n(b)},72017,a=>{"use strict";var b=a.i(91396);a.i(90103);var c=a.i(24084),d=a.i(97728);a.i(59682);var e=a.i(22381),f=a.i(96690),g=a.i(78720),h=a.i(29171),i=a.i(43917),j=a.i(7969);let k={name:"key",size:24,node:[["path",{d:"m2 21 9.6-9.6",key:"9l79m3"}],["path",{d:"m7.5 15.5 2.3 2.3a1 1 0 0 1 0 1.4l-2.1 2.1a1 1 0 0 1-1.4 0L4 19",key:"fw8biw"}],["circle",{cx:"15.5",cy:"7.5",r:"5.5",key:"4wxmhb"}]]};k.node;let l=(0,j.default)(k);function m(){return(0,b.jsxs)(h.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:[(0,b.jsxs)(h.CardHeader,{children:[(0,b.jsxs)(h.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight flex items-center gap-2",children:[(0,b.jsx)(l,{className:"h-5 w-5 text-gray-400"}),"API Keys"]}),(0,b.jsx)(h.CardDescription,{className:"text-sm text-gray-400",children:"Your New Relic and Sentry keys are stored in .env.local on this machine and are never shown here."})]}),(0,b.jsx)(h.CardContent,{children:(0,b.jsx)(g.default,{href:"/setup",className:(0,i.buttonVariants)({variant:"outline"}),children:"Manage keys"})})]})}a.s(["ApiKeys",0,m],81327);var n=a.i(61057),o=a.i(86645),p=a.i(62807),q=a.i(40321);a.s([],34144),a.i(34144),a.i(81327),a.s([],72841,!0),a.j(n,72841),a.j(o,72841),a.j(p,72841),a.j(q,72841);var r=a.i(72841);a.s(["default",0,function(){return(0,b.jsxs)(d.SidebarProvider,{children:[(0,b.jsx)(c.AppSidebar,{}),(0,b.jsxs)(d.SidebarInset,{className:"bg-dash-surface",children:[(0,b.jsx)(e.Header,{}),(0,b.jsxs)("div",{className:"flex flex-1 flex-col p-6 md:p-8 max-w-[1200px] mx-auto w-full",children:[(0,b.jsxs)("div",{className:"mb-8",children:[(0,b.jsx)("h1",{className:"text-2xl font-bold text-white tracking-tight",children:"Settings"}),(0,b.jsx)("p",{className:"text-sm text-gray-400",children:"Manage your account, team, and dashboard preferences."})]}),(0,b.jsxs)(f.Tabs,{defaultValue:"general",className:"w-full",children:[(0,b.jsxs)(f.TabsList,{className:"bg-[#0f1419] border border-[#2d3748] mb-8 p-1 h-auto",children:[(0,b.jsx)(f.TabsTrigger,{value:"general",className:"data-[state=active]:bg-[#1a202c] data-[state=active]:text-white text-gray-400",children:"General & API"}),(0,b.jsx)(f.TabsTrigger,{value:"thresholds",className:"data-[state=active]:bg-[#1a202c] data-[state=active]:text-white text-gray-400",children:"Performance Thresholds"}),(0,b.jsx)(f.TabsTrigger,{value:"team",className:"data-[state=active]:bg-[#1a202c] data-[state=active]:text-white text-gray-400",children:"Notifications & Team"})]}),(0,b.jsxs)(f.TabsContent,{value:"general",className:"space-y-6 mt-0",children:[(0,b.jsx)(m,{}),(0,b.jsx)(r.ExportSettings,{})]}),(0,b.jsx)(f.TabsContent,{value:"thresholds",className:"mt-0",children:(0,b.jsx)(r.ThresholdSettings,{})}),(0,b.jsx)(f.TabsContent,{value:"team",className:"space-y-6 mt-0",children:(0,b.jsx)(r.NotificationPrefs,{})})]})]})]})]})}],72017)},51425,function(a){a.n(a.i(72017))},90336,a=>{"use strict";a.s(["ThresholdSettings",()=>b]);let b=(0,a.i(18060).registerClientReference)(function(){throw Error("Attempted to call ThresholdSettings() from the server but ThresholdSettings is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/Settings/ThresholdSettings.tsx","ThresholdSettings")},86645,a=>{"use strict";var b=a.i(90336);a.n(b)},43917,a=>{"use strict";let b,c;var d=a.i(91396),e=a.i(38182);let f=a=>"boolean"==typeof a?`${a}`:0===a?"0":a,g=function(){for(var a,b,c=0,d="",e=arguments.length;c<e;c++)(a=arguments[c])&&(b=function a(b){var c,d,e="";if("string"==typeof b||"number"==typeof b)e+=b;else if("object"==typeof b)if(Array.isArray(b)){var f=b.length;for(c=0;c<f;c++)b[c]&&(d=a(b[c]))&&(e&&(e+=" "),e+=d)}else for(d in b)b[d]&&(e&&(e+=" "),e+=d);return e}(a))&&(d&&(d+=" "),d+=b);return d};var h=a.i(67913);let i=(b="group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",c={variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}},a=>{var d;if((null==c?void 0:c.variants)==null)return g(b,null==a?void 0:a.class,null==a?void 0:a.className);let{variants:e,defaultVariants:h}=c,i=Object.keys(e).map(b=>{let c=null==a?void 0:a[b],d=null==h?void 0:h[b];if(null===c)return null;let g=f(c)||f(d);return e[b][g]}),j=a&&Object.entries(a).reduce((a,b)=>{let[c,d]=b;return void 0===d||(a[c]=d),a},{});return g(b,i,null==c||null==(d=c.compoundVariants)?void 0:d.reduce((a,b)=>{let{class:c,className:d,...e}=b;return Object.entries(e).every(a=>{let[b,c]=a;return Array.isArray(c)?c.includes({...h,...j}[b]):({...h,...j})[b]===c})?[...a,c,d]:a},[]),null==a?void 0:a.class,null==a?void 0:a.className)});a.s(["Button",0,function({className:a,variant:b="default",size:c="default",...f}){return(0,d.jsx)(e.Button,{"data-slot":"button",className:(0,h.cn)(i({variant:b,size:c,className:a})),...f})},"buttonVariants",0,i],43917)},45362,a=>{"use strict";a.s(["Tabs",()=>c,"TabsContent",()=>d,"TabsList",()=>e,"TabsTrigger",()=>f,"tabsListVariants",()=>g]);var b=a.i(18060);let c=(0,b.registerClientReference)(function(){throw Error("Attempted to call Tabs() from the server but Tabs is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/ui/tabs.tsx","Tabs"),d=(0,b.registerClientReference)(function(){throw Error("Attempted to call TabsContent() from the server but TabsContent is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/ui/tabs.tsx","TabsContent"),e=(0,b.registerClientReference)(function(){throw Error("Attempted to call TabsList() from the server but TabsList is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/ui/tabs.tsx","TabsList"),f=(0,b.registerClientReference)(function(){throw Error("Attempted to call TabsTrigger() from the server but TabsTrigger is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/ui/tabs.tsx","TabsTrigger"),g=(0,b.registerClientReference)(function(){throw Error("Attempted to call tabsListVariants() from the server but tabsListVariants is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/ui/tabs.tsx","tabsListVariants")},96690,a=>{"use strict";var b=a.i(45362);a.n(b)},45603,a=>{"use strict";a.s(["Button",()=>b]);let b=(0,a.i(18060).registerClientReference)(function(){throw Error("Attempted to call Button() from the server but Button is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/node_modules/.pnpm/@base-ui+react@1.8.0_@types+react@19.3.0_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@base-ui/react/button/Button.mjs","Button")},38182,a=>{"use strict";var b=a.i(45603);a.n(b)},25809,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},33951,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(18060).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/node_modules/.pnpm/lucide-react@1.47.0_react@19.2.8/node_modules/lucide-react/dist/esm/Icon.mjs from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/node_modules/.pnpm/lucide-react@1.47.0_react@19.2.8/node_modules/lucide-react/dist/esm/Icon.mjs","default")},50254,a=>{"use strict";var b=a.i(33951);a.n(b)},7969,a=>{"use strict";var b=a.i(56149),c=a.i(50254);a.s(["default",0,function(a,d=[],e=[]){let f,g="string"==typeof a?function(a,b,c=[]){if(null==b)throw Error("[lucide]: iconNode is required when icon name is used");return{name:a?.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),size:24,node:b,...c.length>0?{aliases:c}:{}}}(a,d,e):a,h=(0,b.forwardRef)(({className:a,...d},e)=>(0,b.createElement)(c.default,{ref:e,icon:g,className:a,...d}));return g.name&&(h.displayName=(f=(a=>{let b="",c=!1;for(let d of a){if("-"===d||"_"===d||d<=" "){c=b.length>0;continue}0===b.length?b+=d.toLowerCase():b+=c?d.toUpperCase():d,c=!1}return b})(g.name)).charAt(0).toUpperCase()+f.slice(1)),h}],7969)},40950,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(18060);a.n(d("[project]/node_modules/.pnpm/next@16.3.8_@babel+core@7.29.7_supports-color@8.1.1__@opentelemetry+api@1.9.1_@types+no_c2c791d25241ae4161c9f48ecf186c77/node_modules/next/dist/client/app-dir/link.js"))},53824,a=>{"use strict";var b=a.i(40950);a.n(b)},78720,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return i},useLinkStatus:function(){return h.useLinkStatus}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(25809),g=a.r(91396),h=f._(a.r(53824));function i(a){let b=a.legacyBehavior,c="string"==typeof a.children||"number"==typeof a.children||"string"==typeof a.children?.type,d=a.children?.type?.$$typeof===Symbol.for("react.client.reference");return!b||c||d||(a.children?.type?.$$typeof===Symbol.for("react.lazy")?console.error("Using a Lazy Component as a direct child of `<Link legacyBehavior>` from a Server Component is not supported. If you need legacyBehavior, wrap your Lazy Component in a Client Component that renders the Link's `<a>` tag."):console.error("Using a Server Component as a direct child of `<Link legacyBehavior>` is not supported. If you need legacyBehavior, wrap your Server Component in a Client Component that renders the Link's `<a>` tag.")),(0,g.jsx)(h.default,{...a})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)}];
1
+ module.exports=[40602,a=>{"use strict";a.s(["ExportSettings",()=>b]);let b=(0,a.i(18060).registerClientReference)(function(){throw Error("Attempted to call ExportSettings() from the server but ExportSettings is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/Settings/ExportSettings.tsx","ExportSettings")},61057,a=>{"use strict";var b=a.i(40602);a.n(b)},46280,a=>{"use strict";a.s(["NotificationPrefs",()=>b]);let b=(0,a.i(18060).registerClientReference)(function(){throw Error("Attempted to call NotificationPrefs() from the server but NotificationPrefs is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/Settings/NotificationPrefs.tsx","NotificationPrefs")},62807,a=>{"use strict";var b=a.i(46280);a.n(b)},44063,a=>{"use strict";a.s(["TeamMembers",()=>b]);let b=(0,a.i(18060).registerClientReference)(function(){throw Error("Attempted to call TeamMembers() from the server but TeamMembers is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/Settings/TeamMembers.tsx","TeamMembers")},40321,a=>{"use strict";var b=a.i(44063);a.n(b)},72017,a=>{"use strict";var b=a.i(91396);a.i(90103);var c=a.i(24084),d=a.i(97728);a.i(59682);var e=a.i(22381),f=a.i(96690),g=a.i(78720),h=a.i(29171),i=a.i(43917),j=a.i(7969);let k={name:"key",size:24,node:[["path",{d:"m2 21 9.6-9.6",key:"9l79m3"}],["path",{d:"m7.5 15.5 2.3 2.3a1 1 0 0 1 0 1.4l-2.1 2.1a1 1 0 0 1-1.4 0L4 19",key:"fw8biw"}],["circle",{cx:"15.5",cy:"7.5",r:"5.5",key:"4wxmhb"}]]};k.node;let l=(0,j.default)(k);function m(){return(0,b.jsxs)(h.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:[(0,b.jsxs)(h.CardHeader,{children:[(0,b.jsxs)(h.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight flex items-center gap-2",children:[(0,b.jsx)(l,{className:"h-5 w-5 text-gray-400"}),"API Keys"]}),(0,b.jsx)(h.CardDescription,{className:"text-sm text-gray-400",children:"Your New Relic and Sentry keys are stored in .env.local on this machine and are never shown here."})]}),(0,b.jsx)(h.CardContent,{children:(0,b.jsx)(g.default,{href:"/setup",className:(0,i.buttonVariants)({variant:"outline"}),children:"Manage keys"})})]})}a.s(["ApiKeys",0,m],81327);var n=a.i(61057),o=a.i(86645),p=a.i(62807),q=a.i(40321);a.s([],34144),a.i(34144),a.i(81327),a.s([],72841,!0),a.j(n,72841),a.j(o,72841),a.j(p,72841),a.j(q,72841);var r=a.i(72841);a.s(["default",0,function(){return(0,b.jsxs)(d.SidebarProvider,{children:[(0,b.jsx)(c.AppSidebar,{}),(0,b.jsxs)(d.SidebarInset,{className:"bg-dash-surface",children:[(0,b.jsx)(e.Header,{}),(0,b.jsxs)("div",{className:"flex flex-1 flex-col p-6 md:p-8 max-w-[1200px] mx-auto w-full",children:[(0,b.jsxs)("div",{className:"mb-8",children:[(0,b.jsx)("h1",{className:"title-enter text-2xl font-bold text-white tracking-tight",children:"Settings"}),(0,b.jsx)("p",{className:"text-sm text-gray-400",children:"Manage your account, team, and dashboard preferences."})]}),(0,b.jsxs)(f.Tabs,{defaultValue:"general",className:"w-full",children:[(0,b.jsxs)(f.TabsList,{className:"bg-[#0f1419] border border-[#2d3748] mb-8 p-1 h-auto",children:[(0,b.jsx)(f.TabsTrigger,{value:"general",className:"data-[state=active]:bg-[#1a202c] data-[state=active]:text-white text-gray-400",children:"General & API"}),(0,b.jsx)(f.TabsTrigger,{value:"thresholds",className:"data-[state=active]:bg-[#1a202c] data-[state=active]:text-white text-gray-400",children:"Performance Thresholds"}),(0,b.jsx)(f.TabsTrigger,{value:"team",className:"data-[state=active]:bg-[#1a202c] data-[state=active]:text-white text-gray-400",children:"Notifications & Team"})]}),(0,b.jsxs)(f.TabsContent,{value:"general",className:"space-y-6 mt-0",children:[(0,b.jsx)(m,{}),(0,b.jsx)(r.ExportSettings,{})]}),(0,b.jsx)(f.TabsContent,{value:"thresholds",className:"mt-0",children:(0,b.jsx)(r.ThresholdSettings,{})}),(0,b.jsx)(f.TabsContent,{value:"team",className:"space-y-6 mt-0",children:(0,b.jsx)(r.NotificationPrefs,{})})]})]})]})]})}],72017)},51425,function(a){a.n(a.i(72017))},90336,a=>{"use strict";a.s(["ThresholdSettings",()=>b]);let b=(0,a.i(18060).registerClientReference)(function(){throw Error("Attempted to call ThresholdSettings() from the server but ThresholdSettings is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/Settings/ThresholdSettings.tsx","ThresholdSettings")},86645,a=>{"use strict";var b=a.i(90336);a.n(b)},43917,a=>{"use strict";let b,c;var d=a.i(91396),e=a.i(38182);let f=a=>"boolean"==typeof a?`${a}`:0===a?"0":a,g=function(){for(var a,b,c=0,d="",e=arguments.length;c<e;c++)(a=arguments[c])&&(b=function a(b){var c,d,e="";if("string"==typeof b||"number"==typeof b)e+=b;else if("object"==typeof b)if(Array.isArray(b)){var f=b.length;for(c=0;c<f;c++)b[c]&&(d=a(b[c]))&&(e&&(e+=" "),e+=d)}else for(d in b)b[d]&&(e&&(e+=" "),e+=d);return e}(a))&&(d&&(d+=" "),d+=b);return d};var h=a.i(67913);let i=(b="group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",c={variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}},a=>{var d;if((null==c?void 0:c.variants)==null)return g(b,null==a?void 0:a.class,null==a?void 0:a.className);let{variants:e,defaultVariants:h}=c,i=Object.keys(e).map(b=>{let c=null==a?void 0:a[b],d=null==h?void 0:h[b];if(null===c)return null;let g=f(c)||f(d);return e[b][g]}),j=a&&Object.entries(a).reduce((a,b)=>{let[c,d]=b;return void 0===d||(a[c]=d),a},{});return g(b,i,null==c||null==(d=c.compoundVariants)?void 0:d.reduce((a,b)=>{let{class:c,className:d,...e}=b;return Object.entries(e).every(a=>{let[b,c]=a;return Array.isArray(c)?c.includes({...h,...j}[b]):({...h,...j})[b]===c})?[...a,c,d]:a},[]),null==a?void 0:a.class,null==a?void 0:a.className)});a.s(["Button",0,function({className:a,variant:b="default",size:c="default",...f}){return(0,d.jsx)(e.Button,{"data-slot":"button",className:(0,h.cn)(i({variant:b,size:c,className:a})),...f})},"buttonVariants",0,i],43917)},45362,a=>{"use strict";a.s(["Tabs",()=>c,"TabsContent",()=>d,"TabsList",()=>e,"TabsTrigger",()=>f,"tabsListVariants",()=>g]);var b=a.i(18060);let c=(0,b.registerClientReference)(function(){throw Error("Attempted to call Tabs() from the server but Tabs is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/ui/tabs.tsx","Tabs"),d=(0,b.registerClientReference)(function(){throw Error("Attempted to call TabsContent() from the server but TabsContent is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/ui/tabs.tsx","TabsContent"),e=(0,b.registerClientReference)(function(){throw Error("Attempted to call TabsList() from the server but TabsList is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/ui/tabs.tsx","TabsList"),f=(0,b.registerClientReference)(function(){throw Error("Attempted to call TabsTrigger() from the server but TabsTrigger is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/ui/tabs.tsx","TabsTrigger"),g=(0,b.registerClientReference)(function(){throw Error("Attempted to call tabsListVariants() from the server but tabsListVariants is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/ui/tabs.tsx","tabsListVariants")},96690,a=>{"use strict";var b=a.i(45362);a.n(b)},45603,a=>{"use strict";a.s(["Button",()=>b]);let b=(0,a.i(18060).registerClientReference)(function(){throw Error("Attempted to call Button() from the server but Button is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/node_modules/.pnpm/@base-ui+react@1.8.0_@types+react@19.3.0_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@base-ui/react/button/Button.mjs","Button")},38182,a=>{"use strict";var b=a.i(45603);a.n(b)},25809,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},33951,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(18060).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/node_modules/.pnpm/lucide-react@1.47.0_react@19.2.8/node_modules/lucide-react/dist/esm/Icon.mjs from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/node_modules/.pnpm/lucide-react@1.47.0_react@19.2.8/node_modules/lucide-react/dist/esm/Icon.mjs","default")},50254,a=>{"use strict";var b=a.i(33951);a.n(b)},7969,a=>{"use strict";var b=a.i(56149),c=a.i(50254);a.s(["default",0,function(a,d=[],e=[]){let f,g="string"==typeof a?function(a,b,c=[]){if(null==b)throw Error("[lucide]: iconNode is required when icon name is used");return{name:a?.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),size:24,node:b,...c.length>0?{aliases:c}:{}}}(a,d,e):a,h=(0,b.forwardRef)(({className:a,...d},e)=>(0,b.createElement)(c.default,{ref:e,icon:g,className:a,...d}));return g.name&&(h.displayName=(f=(a=>{let b="",c=!1;for(let d of a){if("-"===d||"_"===d||d<=" "){c=b.length>0;continue}0===b.length?b+=d.toLowerCase():b+=c?d.toUpperCase():d,c=!1}return b})(g.name)).charAt(0).toUpperCase()+f.slice(1)),h}],7969)},40950,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(18060);a.n(d("[project]/node_modules/.pnpm/next@16.3.8_@babel+core@7.29.7_supports-color@8.1.1__@opentelemetry+api@1.9.1_@types+no_c2c791d25241ae4161c9f48ecf186c77/node_modules/next/dist/client/app-dir/link.js"))},53824,a=>{"use strict";var b=a.i(40950);a.n(b)},78720,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return i},useLinkStatus:function(){return h.useLinkStatus}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(25809),g=a.r(91396),h=f._(a.r(53824));function i(a){let b=a.legacyBehavior,c="string"==typeof a.children||"number"==typeof a.children||"string"==typeof a.children?.type,d=a.children?.type?.$$typeof===Symbol.for("react.client.reference");return!b||c||d||(a.children?.type?.$$typeof===Symbol.for("react.lazy")?console.error("Using a Lazy Component as a direct child of `<Link legacyBehavior>` from a Server Component is not supported. If you need legacyBehavior, wrap your Lazy Component in a Client Component that renders the Link's `<a>` tag."):console.error("Using a Server Component as a direct child of `<Link legacyBehavior>` is not supported. If you need legacyBehavior, wrap your Server Component in a Client Component that renders the Link's `<a>` tag.")),(0,g.jsx)(h.default,{...a})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)}];
2
2
 
3
3
  //# sourceMappingURL=_045bvlq._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[92994,a=>{"use strict";var b=a.i(47350),c=a.i(56561),d=a.i(3130),e=a.i(40695);a.s(["EmptyState",0,function({title:a="No data yet",reason:f="Keys work, but no page events have arrived.",href:g="/connect",cta:h="Send your first events",onRetry:i}){return(0,b.jsx)(d.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:(0,b.jsxs)(d.CardContent,{className:"flex flex-col items-center gap-3 p-10 text-center",children:[(0,b.jsx)("h3",{className:"text-lg font-semibold text-white",children:a}),(0,b.jsx)("p",{className:"max-w-md text-sm text-gray-400",children:f}),(0,b.jsxs)("div",{className:"flex gap-3",children:[(0,b.jsx)(c.default,{href:g,className:(0,e.buttonVariants)(),children:h}),i&&(0,b.jsx)(e.Button,{variant:"outline",onClick:i,children:"Retry"})]})]})})}])},13392,a=>{"use strict";var b=a.i(47350),c=a.i(53840),d=a.i(88237),e=a.i(3130),f=a.i(50463),g=a.i(92994),h=a.i(62191),i=a.i(93673);a.s(["ToolInsights",0,function({tool:a}){let{state:j,retry:k}=(0,h.useMetrics)(),l=(0,c.useRouter)(),{label:m,stats:n}=i.TOOLS[a],o=(0,i.toolColumns)(a);if("loading"===j.status)return(0,b.jsx)(f.Skeleton,{className:"mt-6 h-64 w-full bg-[#2d3748]"});if("error"===j.status)return(0,b.jsx)(g.EmptyState,{title:"Could not load metrics",reason:j.message,onRetry:k});if(!j.configured)return(0,b.jsx)(g.EmptyState,{title:"Connect your data",reason:"Add your New Relic or Sentry keys to see real numbers.",href:"/setup",cta:"Set up keys"});if(!j.sources.pages)return(0,b.jsx)(g.EmptyState,{...h.NEEDS_NEW_RELIC});if(j.failed.includes(a))return(0,b.jsx)(g.EmptyState,{title:`Could not load ${m} data`,reason:"The request failed. Your other data is unaffected.",onRetry:k});let p=j.pages.filter(h.hasData);return p.length?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"grid gap-6 sm:grid-cols-2 lg:grid-cols-4 mb-8 mt-4",children:n(p).map(a=>(0,b.jsx)(e.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:(0,b.jsxs)(e.CardContent,{className:"p-6",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-gray-400",children:a.label}),(0,b.jsx)("div",{className:"mt-4 truncate text-3xl font-bold text-white tracking-tight",children:a.value})]})},a.label))}),(0,b.jsxs)(e.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md flex-1",children:[(0,b.jsx)(e.CardHeader,{children:(0,b.jsxs)(e.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:[m," by Page"]})}),(0,b.jsx)(e.CardContent,{children:(0,b.jsx)("div",{className:"rounded-md border border-[#2d3748] overflow-hidden",children:(0,b.jsxs)(d.Table,{children:[(0,b.jsx)(d.TableHeader,{className:"bg-[#0f1419]",children:(0,b.jsxs)(d.TableRow,{className:"border-[#2d3748] hover:bg-transparent",children:[(0,b.jsx)(d.TableHead,{className:"text-gray-400",children:"Page Name"}),(0,b.jsx)(d.TableHead,{className:"text-gray-400",children:"Path"}),o.map(a=>(0,b.jsx)(d.TableHead,{className:"text-gray-400",children:a.header},a.header))]})}),(0,b.jsx)(d.TableBody,{children:j.pages.map(a=>(0,b.jsxs)(d.TableRow,{className:"border-[#2d3748] hover:bg-white/5 transition-colors cursor-pointer",onClick:()=>l.push(`/performance/${a.slug}`),children:[(0,b.jsx)(d.TableCell,{className:"font-medium text-white",children:a.name}),(0,b.jsx)(d.TableCell,{className:"text-gray-500 font-mono text-xs",children:a.url}),o.map(c=>(0,b.jsx)(d.TableCell,{className:"max-w-[320px] truncate text-gray-400",children:(0,h.hasData)(a)?c.cell(a):"—"},c.header))]},a.slug))})]})})})]})]}):(0,b.jsx)(g.EmptyState,{})}])},3130,a=>{"use strict";var b=a.i(47350),c=a.i(85198);a.s(["Card",0,function({className:a,size:d="default",...e}){return(0,b.jsx)("div",{"data-slot":"card","data-size":d,className:(0,c.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",a),...e})},"CardContent",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,c.cn)("px-(--card-spacing)",a),...d})},"CardDescription",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-description",className:(0,c.cn)("text-sm text-muted-foreground",a),...d})},"CardHeader",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-header",className:(0,c.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)",a),...d})},"CardTitle",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-title",className:(0,c.cn)("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",a),...d})}])},88237,a=>{"use strict";var b=a.i(47350),c=a.i(85198);a.s(["Table",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,b.jsx)("table",{"data-slot":"table",className:(0,c.cn)("w-full caption-bottom text-sm",a),...d})})},"TableBody",0,function({className:a,...d}){return(0,b.jsx)("tbody",{"data-slot":"table-body",className:(0,c.cn)("[&_tr:last-child]:border-0",a),...d})},"TableCell",0,function({className:a,...d}){return(0,b.jsx)("td",{"data-slot":"table-cell",className:(0,c.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",a),...d})},"TableHead",0,function({className:a,...d}){return(0,b.jsx)("th",{"data-slot":"table-head",className:(0,c.cn)("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",a),...d})},"TableHeader",0,function({className:a,...d}){return(0,b.jsx)("thead",{"data-slot":"table-header",className:(0,c.cn)("[&_tr]:border-b",a),...d})},"TableRow",0,function({className:a,...d}){return(0,b.jsx)("tr",{"data-slot":"table-row",className:(0,c.cn)("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted",a),...d})}])},39848,a=>{"use strict";var b=a.i(75086);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},e=(0,b.createContext)({}),f=(0,b.forwardRef)(({color:a,size:f,width:g,height:h,strokeWidth:i,absoluteStrokeWidth:j,nonScalingStroke:k,className:l="",children:m,iconNode:n=[],icon:o={node:n,aliases:[],size:24},...p},q)=>{let{size:r=24,strokeWidth:s=2,absoluteStrokeWidth:t=!1,nonScalingStroke:u=!1,color:v="currentColor",className:w=""}=(0,b.useContext)(e)??{},x=!!m||(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(p),[y,z,A=[]]=function(a,b={}){return function(a,b={}){let e=b.attributeNames??{},f=a=>e[a]??a,g=a.size??a.width??d.width,h=a.size??a.height??d.height,i=a.aliases?.filter(a=>"string"==typeof a&&""!==a.trim()).map(a=>`lucide-${a}`)??[],j=[...a.name?[`lucide-${a.name}`]:[],...i],k=b.className?.split(" ").filter(Boolean)??[],l=!1===b.includeDefaultClasses?c(...k):c("lucide",...j,...k),m=b.absoluteStrokeWidth?Number(b.strokeWidth??d["stroke-width"])*Number(a.size??a.width??d.width)/Number(b.size??b.width??d.width):b.strokeWidth??d["stroke-width"];return["svg",{...Object.entries(d).reduce((a,[b,c])=>(a[f(b)]=c,a),{}),..."color"in b&&b.color&&{[f("stroke")]:b.color},..."size"in b&&null!=b.size&&{[f("width")]:b.size,[f("height")]:b.size},..."width"in b&&null!=b.width&&{[f("width")]:b.width},..."height"in b&&null!=b.height&&{[f("height")]:b.height},[f("stroke-width")]:m,...l&&{[f("class")]:l},[f("viewBox")]:`0 0 ${g} ${h}`,...!1===b.hasA11yProp?{[f("aria-hidden")]:"true"}:{},..."attributes"in b&&b.attributes},a.node.map(a=>{let[c,d,e]=a,g=b.nonScalingStroke?{[f("vector-effect")]:"non-scaling-stroke",...d}:d;return e?[c,g,e]:[c,g]})]}(a,{...b,attributeNames:{...b.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}(o,{color:a??v,width:g??f??r,height:h??f??r,strokeWidth:i??s,absoluteStrokeWidth:j??t,nonScalingStroke:k??u,className:c(w,l),hasA11yProp:x,attributes:p});return(0,b.createElement)(y,{ref:q,...z},[...A.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(m)?m:[m]])});a.s(["default",0,f],39848)},23904,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={actionAsyncStorage:function(){return f.actionAsyncStorage},workAsyncStorage:function(){return g.workAsyncStorage},workUnitAsyncStorage:function(){return h.workUnitAsyncStorage}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20635),g=a.r(56704),h=a.r(32319);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)}];
1
+ module.exports=[92994,a=>{"use strict";var b=a.i(47350),c=a.i(56561),d=a.i(3130),e=a.i(40695);a.s(["EmptyState",0,function({title:a="No data yet",reason:f="Keys work, but no page events have arrived.",href:g="/connect",cta:h="Send your first events",onRetry:i}){return(0,b.jsx)(d.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:(0,b.jsxs)(d.CardContent,{className:"flex flex-col items-center gap-3 p-10 text-center",children:[(0,b.jsx)("h3",{className:"text-lg font-semibold text-white",children:a}),(0,b.jsx)("p",{className:"max-w-md text-sm text-gray-400",children:f}),(0,b.jsxs)("div",{className:"flex gap-3",children:[(0,b.jsx)(c.default,{href:g,className:(0,e.buttonVariants)(),children:h}),i&&(0,b.jsx)(e.Button,{variant:"outline",onClick:i,children:"Retry"})]})]})})}])},13392,a=>{"use strict";var b=a.i(47350),c=a.i(53840),d=a.i(88237),e=a.i(3130),f=a.i(50463),g=a.i(92994),h=a.i(62191),i=a.i(93673);a.s(["ToolInsights",0,function({tool:a}){let{state:j,retry:k}=(0,h.useMetrics)(),l=(0,c.useRouter)(),{label:m,stats:n}=i.TOOLS[a],o=(0,i.toolColumns)(a);if("loading"===j.status)return(0,b.jsx)(f.Skeleton,{className:"mt-6 h-64 w-full bg-[#2d3748]"});if("error"===j.status)return(0,b.jsx)(g.EmptyState,{title:"Could not load metrics",reason:j.message,onRetry:k});if(!j.configured)return(0,b.jsx)(g.EmptyState,{title:"Connect your data",reason:"Add your New Relic or Sentry keys to see real numbers.",href:"/setup",cta:"Set up keys"});if(j.failed.includes(a))return(0,b.jsx)(g.EmptyState,{title:`Could not load ${m} data`,reason:"The request failed. Your other data is unaffected.",onRetry:k});let p=j.pages.filter(h.hasData);return p.length?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"grid gap-6 sm:grid-cols-2 lg:grid-cols-4 mb-8 mt-4",children:n(p).map(a=>(0,b.jsx)(e.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:(0,b.jsxs)(e.CardContent,{className:"p-6",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-gray-400",children:a.label}),(0,b.jsx)("div",{className:"mt-4 truncate text-3xl font-bold text-white tracking-tight",children:a.value})]})},a.label))}),(0,b.jsxs)(e.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md flex-1",children:[(0,b.jsx)(e.CardHeader,{children:(0,b.jsxs)(e.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:[m," by Page"]})}),(0,b.jsx)(e.CardContent,{children:(0,b.jsx)("div",{className:"rounded-md border border-[#2d3748] overflow-hidden",children:(0,b.jsxs)(d.Table,{children:[(0,b.jsx)(d.TableHeader,{className:"bg-[#0f1419]",children:(0,b.jsxs)(d.TableRow,{className:"border-[#2d3748] hover:bg-transparent",children:[(0,b.jsx)(d.TableHead,{className:"text-gray-400",children:"Page Name"}),(0,b.jsx)(d.TableHead,{className:"text-gray-400",children:"Path"}),o.map(a=>(0,b.jsx)(d.TableHead,{className:"text-gray-400",children:a.header},a.header))]})}),(0,b.jsx)(d.TableBody,{children:j.pages.map(a=>(0,b.jsxs)(d.TableRow,{className:"border-[#2d3748] hover:bg-white/5 transition-colors cursor-pointer",onClick:()=>l.push(`/performance/${a.slug}`),children:[(0,b.jsx)(d.TableCell,{className:"font-medium text-white",children:a.name}),(0,b.jsx)(d.TableCell,{className:"text-gray-500 font-mono text-xs",children:a.url}),o.map(c=>(0,b.jsx)(d.TableCell,{className:"max-w-[320px] truncate text-gray-400",children:(0,h.hasData)(a)?c.cell(a):"—"},c.header))]},a.slug))})]})})})]})]}):(0,b.jsx)(g.EmptyState,{})}])},3130,a=>{"use strict";var b=a.i(47350),c=a.i(85198);a.s(["Card",0,function({className:a,size:d="default",...e}){return(0,b.jsx)("div",{"data-slot":"card","data-size":d,className:(0,c.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",a),...e})},"CardContent",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,c.cn)("px-(--card-spacing)",a),...d})},"CardDescription",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-description",className:(0,c.cn)("text-sm text-muted-foreground",a),...d})},"CardHeader",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-header",className:(0,c.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)",a),...d})},"CardTitle",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-title",className:(0,c.cn)("title-enter font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",a),...d})}])},88237,a=>{"use strict";var b=a.i(47350),c=a.i(85198);a.s(["Table",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,b.jsx)("table",{"data-slot":"table",className:(0,c.cn)("w-full caption-bottom text-sm",a),...d})})},"TableBody",0,function({className:a,...d}){return(0,b.jsx)("tbody",{"data-slot":"table-body",className:(0,c.cn)("[&_tr:last-child]:border-0",a),...d})},"TableCell",0,function({className:a,...d}){return(0,b.jsx)("td",{"data-slot":"table-cell",className:(0,c.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",a),...d})},"TableHead",0,function({className:a,...d}){return(0,b.jsx)("th",{"data-slot":"table-head",className:(0,c.cn)("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",a),...d})},"TableHeader",0,function({className:a,...d}){return(0,b.jsx)("thead",{"data-slot":"table-header",className:(0,c.cn)("[&_tr]:border-b",a),...d})},"TableRow",0,function({className:a,...d}){return(0,b.jsx)("tr",{"data-slot":"table-row",className:(0,c.cn)("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted",a),...d})}])},39848,a=>{"use strict";var b=a.i(75086);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},e=(0,b.createContext)({}),f=(0,b.forwardRef)(({color:a,size:f,width:g,height:h,strokeWidth:i,absoluteStrokeWidth:j,nonScalingStroke:k,className:l="",children:m,iconNode:n=[],icon:o={node:n,aliases:[],size:24},...p},q)=>{let{size:r=24,strokeWidth:s=2,absoluteStrokeWidth:t=!1,nonScalingStroke:u=!1,color:v="currentColor",className:w=""}=(0,b.useContext)(e)??{},x=!!m||(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(p),[y,z,A=[]]=function(a,b={}){return function(a,b={}){let e=b.attributeNames??{},f=a=>e[a]??a,g=a.size??a.width??d.width,h=a.size??a.height??d.height,i=a.aliases?.filter(a=>"string"==typeof a&&""!==a.trim()).map(a=>`lucide-${a}`)??[],j=[...a.name?[`lucide-${a.name}`]:[],...i],k=b.className?.split(" ").filter(Boolean)??[],l=!1===b.includeDefaultClasses?c(...k):c("lucide",...j,...k),m=b.absoluteStrokeWidth?Number(b.strokeWidth??d["stroke-width"])*Number(a.size??a.width??d.width)/Number(b.size??b.width??d.width):b.strokeWidth??d["stroke-width"];return["svg",{...Object.entries(d).reduce((a,[b,c])=>(a[f(b)]=c,a),{}),..."color"in b&&b.color&&{[f("stroke")]:b.color},..."size"in b&&null!=b.size&&{[f("width")]:b.size,[f("height")]:b.size},..."width"in b&&null!=b.width&&{[f("width")]:b.width},..."height"in b&&null!=b.height&&{[f("height")]:b.height},[f("stroke-width")]:m,...l&&{[f("class")]:l},[f("viewBox")]:`0 0 ${g} ${h}`,...!1===b.hasA11yProp?{[f("aria-hidden")]:"true"}:{},..."attributes"in b&&b.attributes},a.node.map(a=>{let[c,d,e]=a,g=b.nonScalingStroke?{[f("vector-effect")]:"non-scaling-stroke",...d}:d;return e?[c,g,e]:[c,g]})]}(a,{...b,attributeNames:{...b.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}(o,{color:a??v,width:g??f??r,height:h??f??r,strokeWidth:i??s,absoluteStrokeWidth:j??t,nonScalingStroke:k??u,className:c(w,l),hasA11yProp:x,attributes:p});return(0,b.createElement)(y,{ref:q,...z},[...A.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(m)?m:[m]])});a.s(["default",0,f],39848)},23904,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={actionAsyncStorage:function(){return f.actionAsyncStorage},workAsyncStorage:function(){return g.workAsyncStorage},workUnitAsyncStorage:function(){return h.workUnitAsyncStorage}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20635),g=a.r(56704),h=a.r(32319);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)}];
2
2
 
3
3
  //# sourceMappingURL=_0_02db6._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[47872,a=>{"use strict";var b=a.i(47350),c=a.i(75086),d=a.i(3130),e=a.i(40695),f=a.i(5522);let g=[{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."}];a.s(["AiKeyForm",0,function(){let[a,h]=(0,c.useState)(g[0].id),[i,j]=(0,c.useState)(""),[k,l]=(0,c.useState)(null),[m,n]=(0,c.useState)({}),[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1);async function s(b){b.preventDefault(),r(!0),p(null);try{let b=await fetch("/api/setup/ai",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:a,key:i})}),c=await b.json();c.saved?(j(""),l(a),n({...m,[a]:!0}),p({ok:!0,text:"Saved. AI suggestions now use this provider. No restart needed."})):p({ok:!1,text:c.error??"Nothing was saved."})}catch{p({ok:!1,text:"Could not reach the dashboard server."})}finally{r(!1)}}(0,c.useEffect)(()=>{fetch("/api/setup/ai").then(a=>a.json()).then(a=>{a.keys&&(n(a.keys),l(a.provider),a.provider&&h(a.provider))}).catch(()=>{})},[]);let t=g.find(b=>b.id===a);return(0,b.jsxs)(d.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md max-w-2xl mt-6",children:[(0,b.jsxs)(d.CardHeader,{children:[(0,b.jsx)(d.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:"AI suggestions (optional)"}),(0,b.jsx)(d.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,b.jsx)(d.CardContent,{children:(0,b.jsxs)("form",{onSubmit:s,className:"flex flex-col gap-5",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)("label",{htmlFor:"ai-provider",className:"text-sm font-medium text-gray-300",children:"Provider"}),(0,b.jsx)("select",{id:"ai-provider",value:a,onChange:a=>h(a.target.value),className:"h-9 rounded-md border border-[#2d3748] bg-[#0f1419] px-3 text-sm text-gray-200",children:g.map(a=>(0,b.jsxs)("option",{value:a.id,children:[a.label,k===a.id?" (in use)":m[a.id]?" (key saved)":""]},a.id))})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsxs)("label",{htmlFor:"ai-key",className:"text-sm font-medium text-gray-300",children:[t.label," API key ",m[a]&&(0,b.jsx)("span",{className:"ml-2 text-xs text-[#3ee0a1]",children:"✓ Set"})]}),(0,b.jsx)(f.Input,{id:"ai-key",type:"password",autoComplete:"off",spellCheck:!1,placeholder:m[a]?"•••••••• (type to replace)":"",value:i,onChange:a=>j(a.target.value),"aria-describedby":"ai-key-help",className:"bg-[#0f1419] border-[#2d3748] text-gray-200 font-mono text-xs"}),(0,b.jsx)("p",{id:"ai-key-help",className:"text-xs text-gray-400",children:t.help})]}),(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)(e.Button,{type:"submit",disabled:q||!i.trim(),children:q?"Checking…":"Check and save"}),(0,b.jsx)("span",{"aria-live":"polite",className:`text-sm ${o?.ok?"text-[#3ee0a1]":"text-[#f87171]"}`,children:o?.text})]})]})})]})}])},46334,a=>{"use strict";var b=a.i(47350),c=a.i(75086),d=a.i(56561),e=a.i(3130),f=a.i(40695),g=a.i(5522),h=a.i(54161),i=a.i(93673);let j=i.TOOL_IDS.flatMap(a=>i.TOOLS[a].keys.required.map(b=>({name:b,tool:a,...i.KEY_FIELDS[b]})));a.s(["SetupForm",0,function(){let[a,k]=(0,c.useState)({}),[l,m]=(0,c.useState)({}),[n,o]=(0,c.useState)({}),[p,q]=(0,c.useState)(null),[r,s]=(0,c.useState)(!1),[t,u]=(0,c.useState)(!1),[v,w]=(0,c.useState)(null),x=(0,c.useRef)(null);async function y(b){b.preventDefault(),s(!0),q(null);try{let b=await fetch("/api/setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),c=await b.json(),d=c.results??{};o(d);let e=j.find(a=>d[a.name]&&!d[a.name].ok);if(e&&setTimeout(()=>x.current?.querySelector(`#${e.name}`)?.focus(),0),c.saved){u(!0),k({});let b=new Set(j.filter(b=>a[b.name]?.trim()).map(a=>a.tool));m(a=>({...a,...Object.fromEntries(j.filter(a=>b.has(a.tool)).map(a=>[a.name,!0]))}));let c=i.TOOL_IDS.filter(a=>b.has(a)||v?.includes(a));w(c),q({ok:!0,text:`Saved. ${c.map(a=>i.TOOLS[a].label).join(" and ")} ${c.length>1?"are":"is"} connected. No restart needed.`})}else q({ok:!1,text:c.error??"Nothing was saved. Fix the fields marked below."})}catch{q({ok:!1,text:"Could not reach the dashboard server."})}finally{s(!1)}}return(0,c.useEffect)(()=>{fetch("/api/setup").then(a=>a.json()).then(a=>{a.keys&&m(a.keys),Array.isArray(a.tools)?w(a.tools):a.error&&q({ok:!1,text:a.error})}).catch(()=>{})},[]),(0,b.jsxs)(e.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md max-w-2xl",children:[(0,b.jsxs)(e.CardHeader,{children:[(0,b.jsx)(e.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:"Connect your tools"}),(0,b.jsx)(e.CardDescription,{className:"text-sm text-gray-400",children:"Add keys for the tools you use. You only need one. Keys are checked once, saved to .env.local in this folder, and never shown again."})]}),(0,b.jsx)(e.CardContent,{children:(0,b.jsxs)("form",{ref:x,onSubmit:y,className:"flex flex-col gap-5",children:[i.TOOL_IDS.map(c=>(0,b.jsxs)("fieldset",{id:c,className:"flex flex-col gap-5 rounded-lg border border-[#2d3748] p-4",children:[(0,b.jsxs)("legend",{className:"flex items-center gap-2 px-2 text-sm font-semibold text-white",children:[i.TOOLS[c].label,v?.includes(c)?(0,b.jsx)(h.Badge,{variant:"outline",className:"border-[#3ee0a1] text-[#3ee0a1] bg-[#3ee0a1]/10",children:"✓ Connected"}):(0,b.jsx)(h.Badge,{variant:"outline",className:"border-[#4a5568] text-gray-400",children:"Optional"})]}),j.filter(a=>a.tool===c).map(c=>{let d=n[c.name];return(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsxs)("label",{htmlFor:c.name,className:"text-sm font-medium text-gray-300",children:[c.label," ",l[c.name]&&(0,b.jsx)("span",{className:"ml-2 text-xs text-[#3ee0a1]",children:"✓ Set"})]}),(0,b.jsx)(g.Input,{id:c.name,name:c.name,type:c.secret?"password":"text",autoComplete:"off",spellCheck:!1,placeholder:l[c.name]?"•••••••• (leave blank to keep, type to replace)":"",value:a[c.name]??"",onChange:b=>k({...a,[c.name]:b.target.value}),"aria-invalid":!!d&&!d.ok||void 0,"aria-describedby":`${c.name}-help ${c.name}-result`,className:"bg-[#0f1419] border-[#2d3748] text-gray-200 font-mono text-xs"}),(0,b.jsx)("p",{id:`${c.name}-help`,className:"text-xs text-gray-400",children:c.help}),(0,b.jsxs)("div",{id:`${c.name}-result`,"aria-live":"polite",children:[d&&!d.ok&&(0,b.jsxs)("p",{className:"text-xs text-[#f87171]",children:["✗ ",d.error]}),d?.ok&&(0,b.jsx)("p",{className:"text-xs text-[#3ee0a1]",children:"✓ Checked"})]})]},c.name)}),i.TOOLS[c].setupNote&&(0,b.jsx)("p",{className:"text-xs text-gray-400",children:i.TOOLS[c].setupNote})]},c)),(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)(f.Button,{type:"submit",disabled:r||!j.some(b=>a[b.name]?.trim()),children:r?"Checking…":"Check and save"}),(0,b.jsx)("span",{"aria-live":"polite",className:`text-sm ${p?.ok?"text-[#3ee0a1]":"text-[#f87171]"}`,children:p?.text}),!j.some(b=>a[b.name]?.trim())&&!p&&!t&&(0,b.jsx)("span",{className:"text-sm text-gray-400",children:v?.length?"Type a new key to change what is saved.":"Fill in both fields for at least one tool."}),t&&(0,b.jsx)(d.default,{href:"/connect",className:(0,f.buttonVariants)({variant:"outline"}),children:"Next: connect your app"})]})]})})]})}])},54161,a=>{"use strict";var b=a.i(18915),c=a.i(68228),d=a.i(42261),e=a.i(85198);let f=(0,d.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"}});a.s(["Badge",0,function({className:a,variant:d="default",render:g,...h}){return(0,c.useRender)({defaultTagName:"span",props:(0,b.mergeProps)({className:(0,e.cn)(f({variant:d}),a)},h),render:g,state:{slot:"badge",variant:d}})}])},3130,a=>{"use strict";var b=a.i(47350),c=a.i(85198);a.s(["Card",0,function({className:a,size:d="default",...e}){return(0,b.jsx)("div",{"data-slot":"card","data-size":d,className:(0,c.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",a),...e})},"CardContent",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,c.cn)("px-(--card-spacing)",a),...d})},"CardDescription",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-description",className:(0,c.cn)("text-sm text-muted-foreground",a),...d})},"CardHeader",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-header",className:(0,c.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)",a),...d})},"CardTitle",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-title",className:(0,c.cn)("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",a),...d})}])},39848,a=>{"use strict";var b=a.i(75086);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},e=(0,b.createContext)({}),f=(0,b.forwardRef)(({color:a,size:f,width:g,height:h,strokeWidth:i,absoluteStrokeWidth:j,nonScalingStroke:k,className:l="",children:m,iconNode:n=[],icon:o={node:n,aliases:[],size:24},...p},q)=>{let{size:r=24,strokeWidth:s=2,absoluteStrokeWidth:t=!1,nonScalingStroke:u=!1,color:v="currentColor",className:w=""}=(0,b.useContext)(e)??{},x=!!m||(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(p),[y,z,A=[]]=function(a,b={}){return function(a,b={}){let e=b.attributeNames??{},f=a=>e[a]??a,g=a.size??a.width??d.width,h=a.size??a.height??d.height,i=a.aliases?.filter(a=>"string"==typeof a&&""!==a.trim()).map(a=>`lucide-${a}`)??[],j=[...a.name?[`lucide-${a.name}`]:[],...i],k=b.className?.split(" ").filter(Boolean)??[],l=!1===b.includeDefaultClasses?c(...k):c("lucide",...j,...k),m=b.absoluteStrokeWidth?Number(b.strokeWidth??d["stroke-width"])*Number(a.size??a.width??d.width)/Number(b.size??b.width??d.width):b.strokeWidth??d["stroke-width"];return["svg",{...Object.entries(d).reduce((a,[b,c])=>(a[f(b)]=c,a),{}),..."color"in b&&b.color&&{[f("stroke")]:b.color},..."size"in b&&null!=b.size&&{[f("width")]:b.size,[f("height")]:b.size},..."width"in b&&null!=b.width&&{[f("width")]:b.width},..."height"in b&&null!=b.height&&{[f("height")]:b.height},[f("stroke-width")]:m,...l&&{[f("class")]:l},[f("viewBox")]:`0 0 ${g} ${h}`,...!1===b.hasA11yProp?{[f("aria-hidden")]:"true"}:{},..."attributes"in b&&b.attributes},a.node.map(a=>{let[c,d,e]=a,g=b.nonScalingStroke?{[f("vector-effect")]:"non-scaling-stroke",...d}:d;return e?[c,g,e]:[c,g]})]}(a,{...b,attributeNames:{...b.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}(o,{color:a??v,width:g??f??r,height:h??f??r,strokeWidth:i??s,absoluteStrokeWidth:j??t,nonScalingStroke:k??u,className:c(w,l),hasA11yProp:x,attributes:p});return(0,b.createElement)(y,{ref:q,...z},[...A.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(m)?m:[m]])});a.s(["default",0,f],39848)},23904,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={actionAsyncStorage:function(){return f.actionAsyncStorage},workAsyncStorage:function(){return g.workAsyncStorage},workUnitAsyncStorage:function(){return h.workUnitAsyncStorage}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20635),g=a.r(56704),h=a.r(32319);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)}];
1
+ module.exports=[47872,a=>{"use strict";var b=a.i(47350),c=a.i(75086),d=a.i(3130),e=a.i(40695),f=a.i(5522);let g=[{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."}];a.s(["AiKeyForm",0,function(){let[a,h]=(0,c.useState)(g[0].id),[i,j]=(0,c.useState)(""),[k,l]=(0,c.useState)(null),[m,n]=(0,c.useState)({}),[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1);async function s(b){b.preventDefault(),r(!0),p(null);try{let b=await fetch("/api/setup/ai",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:a,key:i})}),c=await b.json();c.saved?(j(""),l(a),n({...m,[a]:!0}),p({ok:!0,text:"Saved. AI suggestions now use this provider. No restart needed."})):p({ok:!1,text:c.error??"Nothing was saved."})}catch{p({ok:!1,text:"Could not reach the dashboard server."})}finally{r(!1)}}(0,c.useEffect)(()=>{fetch("/api/setup/ai").then(a=>a.json()).then(a=>{a.keys&&(n(a.keys),l(a.provider),a.provider&&h(a.provider))}).catch(()=>{})},[]);let t=g.find(b=>b.id===a);return(0,b.jsxs)(d.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md max-w-2xl mt-6",children:[(0,b.jsxs)(d.CardHeader,{children:[(0,b.jsx)(d.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:"AI suggestions (optional)"}),(0,b.jsx)(d.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,b.jsx)(d.CardContent,{children:(0,b.jsxs)("form",{onSubmit:s,className:"flex flex-col gap-5",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)("label",{htmlFor:"ai-provider",className:"text-sm font-medium text-gray-300",children:"Provider"}),(0,b.jsx)("select",{id:"ai-provider",value:a,onChange:a=>h(a.target.value),className:"h-9 rounded-md border border-[#2d3748] bg-[#0f1419] px-3 text-sm text-gray-200",children:g.map(a=>(0,b.jsxs)("option",{value:a.id,children:[a.label,k===a.id?" (in use)":m[a.id]?" (key saved)":""]},a.id))})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsxs)("label",{htmlFor:"ai-key",className:"text-sm font-medium text-gray-300",children:[t.label," API key ",m[a]&&(0,b.jsx)("span",{className:"ml-2 text-xs text-[#3ee0a1]",children:"✓ Set"})]}),(0,b.jsx)(f.Input,{id:"ai-key",type:"password",autoComplete:"off",spellCheck:!1,placeholder:m[a]?"•••••••• (type to replace)":"",value:i,onChange:a=>j(a.target.value),"aria-describedby":"ai-key-help",className:"bg-[#0f1419] border-[#2d3748] text-gray-200 font-mono text-xs"}),(0,b.jsx)("p",{id:"ai-key-help",className:"text-xs text-gray-400",children:t.help})]}),(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)(e.Button,{type:"submit",disabled:q||!i.trim(),children:q?"Checking…":"Check and save"}),(0,b.jsx)("span",{"aria-live":"polite",className:`text-sm ${o?.ok?"text-[#3ee0a1]":"text-[#f87171]"}`,children:o?.text})]})]})})]})}])},46334,a=>{"use strict";var b=a.i(47350),c=a.i(75086),d=a.i(56561),e=a.i(3130),f=a.i(40695),g=a.i(5522),h=a.i(54161),i=a.i(93673);let j=i.TOOL_IDS.flatMap(a=>i.TOOLS[a].keys.required.map(b=>({name:b,tool:a,...i.KEY_FIELDS[b]})));a.s(["SetupForm",0,function(){let[a,k]=(0,c.useState)({}),[l,m]=(0,c.useState)({}),[n,o]=(0,c.useState)({}),[p,q]=(0,c.useState)(null),[r,s]=(0,c.useState)(!1),[t,u]=(0,c.useState)(!1),[v,w]=(0,c.useState)(null),x=(0,c.useRef)(null);async function y(b){b.preventDefault(),s(!0),q(null);try{let b=await fetch("/api/setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),c=await b.json(),d=c.results??{};o(d);let e=j.find(a=>d[a.name]&&!d[a.name].ok);if(e&&setTimeout(()=>x.current?.querySelector(`#${e.name}`)?.focus(),0),c.saved){u(!0),k({});let b=new Set(j.filter(b=>a[b.name]?.trim()).map(a=>a.tool));m(a=>({...a,...Object.fromEntries(j.filter(a=>b.has(a.tool)).map(a=>[a.name,!0]))}));let c=i.TOOL_IDS.filter(a=>b.has(a)||v?.includes(a));w(c),q({ok:!0,text:`Saved. ${c.map(a=>i.TOOLS[a].label).join(" and ")} ${c.length>1?"are":"is"} connected. No restart needed.`})}else q({ok:!1,text:c.error??"Nothing was saved. Fix the fields marked below."})}catch{q({ok:!1,text:"Could not reach the dashboard server."})}finally{s(!1)}}return(0,c.useEffect)(()=>{fetch("/api/setup").then(a=>a.json()).then(a=>{a.keys&&m(a.keys),Array.isArray(a.tools)?w(a.tools):a.error&&q({ok:!1,text:a.error})}).catch(()=>{})},[]),(0,b.jsxs)(e.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md max-w-2xl",children:[(0,b.jsxs)(e.CardHeader,{children:[(0,b.jsx)(e.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:"Connect your tools"}),(0,b.jsx)(e.CardDescription,{className:"text-sm text-gray-400",children:"Add keys for the tools you use. You only need one. Keys are checked once, saved to .env.local in this folder, and never shown again."})]}),(0,b.jsx)(e.CardContent,{children:(0,b.jsxs)("form",{ref:x,onSubmit:y,className:"flex flex-col gap-5",children:[i.TOOL_IDS.map(c=>(0,b.jsxs)("fieldset",{id:c,className:"flex flex-col gap-5 rounded-lg border border-[#2d3748] p-4",children:[(0,b.jsxs)("legend",{className:"flex items-center gap-2 px-2 text-sm font-semibold text-white",children:[i.TOOLS[c].label,v?.includes(c)?(0,b.jsx)(h.Badge,{variant:"outline",className:"border-[#3ee0a1] text-[#3ee0a1] bg-[#3ee0a1]/10",children:"✓ Connected"}):(0,b.jsx)(h.Badge,{variant:"outline",className:"border-[#4a5568] text-gray-400",children:"Optional"})]}),j.filter(a=>a.tool===c).map(c=>{let d=n[c.name];return(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsxs)("label",{htmlFor:c.name,className:"text-sm font-medium text-gray-300",children:[c.label," ",l[c.name]&&(0,b.jsx)("span",{className:"ml-2 text-xs text-[#3ee0a1]",children:"✓ Set"})]}),(0,b.jsx)(g.Input,{id:c.name,name:c.name,type:c.secret?"password":"text",autoComplete:"off",spellCheck:!1,placeholder:l[c.name]?"•••••••• (leave blank to keep, type to replace)":"",value:a[c.name]??"",onChange:b=>k({...a,[c.name]:b.target.value}),"aria-invalid":!!d&&!d.ok||void 0,"aria-describedby":`${c.name}-help ${c.name}-result`,className:"bg-[#0f1419] border-[#2d3748] text-gray-200 font-mono text-xs"}),(0,b.jsx)("p",{id:`${c.name}-help`,className:"text-xs text-gray-400",children:c.help}),(0,b.jsxs)("div",{id:`${c.name}-result`,"aria-live":"polite",children:[d&&!d.ok&&(0,b.jsxs)("p",{className:"text-xs text-[#f87171]",children:["✗ ",d.error]}),d?.ok&&(0,b.jsx)("p",{className:"text-xs text-[#3ee0a1]",children:"✓ Checked"}),d?.notice&&(0,b.jsx)("p",{className:"text-xs text-[#fbbf24]",children:d.notice})]})]},c.name)}),i.TOOLS[c].setupNote&&(0,b.jsx)("p",{className:"text-xs text-gray-400",children:i.TOOLS[c].setupNote})]},c)),(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)(f.Button,{type:"submit",disabled:r||!j.some(b=>a[b.name]?.trim()),children:r?"Checking…":"Check and save"}),(0,b.jsx)("span",{"aria-live":"polite",className:`text-sm ${p?.ok?"text-[#3ee0a1]":"text-[#f87171]"}`,children:p?.text}),!j.some(b=>a[b.name]?.trim())&&!p&&!t&&(0,b.jsx)("span",{className:"text-sm text-gray-400",children:v?.length?"Type a new key to change what is saved.":"Fill in both fields for at least one tool."}),t&&(0,b.jsx)(d.default,{href:"/connect",className:(0,f.buttonVariants)({variant:"outline"}),children:"Next: connect your app"})]})]})})]})}])},54161,a=>{"use strict";var b=a.i(18915),c=a.i(68228),d=a.i(42261),e=a.i(85198);let f=(0,d.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"}});a.s(["Badge",0,function({className:a,variant:d="default",render:g,...h}){return(0,c.useRender)({defaultTagName:"span",props:(0,b.mergeProps)({className:(0,e.cn)(f({variant:d}),a)},h),render:g,state:{slot:"badge",variant:d}})}])},3130,a=>{"use strict";var b=a.i(47350),c=a.i(85198);a.s(["Card",0,function({className:a,size:d="default",...e}){return(0,b.jsx)("div",{"data-slot":"card","data-size":d,className:(0,c.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",a),...e})},"CardContent",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,c.cn)("px-(--card-spacing)",a),...d})},"CardDescription",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-description",className:(0,c.cn)("text-sm text-muted-foreground",a),...d})},"CardHeader",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-header",className:(0,c.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)",a),...d})},"CardTitle",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-title",className:(0,c.cn)("title-enter font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",a),...d})}])},39848,a=>{"use strict";var b=a.i(75086);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},e=(0,b.createContext)({}),f=(0,b.forwardRef)(({color:a,size:f,width:g,height:h,strokeWidth:i,absoluteStrokeWidth:j,nonScalingStroke:k,className:l="",children:m,iconNode:n=[],icon:o={node:n,aliases:[],size:24},...p},q)=>{let{size:r=24,strokeWidth:s=2,absoluteStrokeWidth:t=!1,nonScalingStroke:u=!1,color:v="currentColor",className:w=""}=(0,b.useContext)(e)??{},x=!!m||(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(p),[y,z,A=[]]=function(a,b={}){return function(a,b={}){let e=b.attributeNames??{},f=a=>e[a]??a,g=a.size??a.width??d.width,h=a.size??a.height??d.height,i=a.aliases?.filter(a=>"string"==typeof a&&""!==a.trim()).map(a=>`lucide-${a}`)??[],j=[...a.name?[`lucide-${a.name}`]:[],...i],k=b.className?.split(" ").filter(Boolean)??[],l=!1===b.includeDefaultClasses?c(...k):c("lucide",...j,...k),m=b.absoluteStrokeWidth?Number(b.strokeWidth??d["stroke-width"])*Number(a.size??a.width??d.width)/Number(b.size??b.width??d.width):b.strokeWidth??d["stroke-width"];return["svg",{...Object.entries(d).reduce((a,[b,c])=>(a[f(b)]=c,a),{}),..."color"in b&&b.color&&{[f("stroke")]:b.color},..."size"in b&&null!=b.size&&{[f("width")]:b.size,[f("height")]:b.size},..."width"in b&&null!=b.width&&{[f("width")]:b.width},..."height"in b&&null!=b.height&&{[f("height")]:b.height},[f("stroke-width")]:m,...l&&{[f("class")]:l},[f("viewBox")]:`0 0 ${g} ${h}`,...!1===b.hasA11yProp?{[f("aria-hidden")]:"true"}:{},..."attributes"in b&&b.attributes},a.node.map(a=>{let[c,d,e]=a,g=b.nonScalingStroke?{[f("vector-effect")]:"non-scaling-stroke",...d}:d;return e?[c,g,e]:[c,g]})]}(a,{...b,attributeNames:{...b.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}(o,{color:a??v,width:g??f??r,height:h??f??r,strokeWidth:i??s,absoluteStrokeWidth:j??t,nonScalingStroke:k??u,className:c(w,l),hasA11yProp:x,attributes:p});return(0,b.createElement)(y,{ref:q,...z},[...A.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(m)?m:[m]])});a.s(["default",0,f],39848)},23904,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={actionAsyncStorage:function(){return f.actionAsyncStorage},workAsyncStorage:function(){return g.workAsyncStorage},workUnitAsyncStorage:function(){return h.workUnitAsyncStorage}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20635),g=a.r(56704),h=a.r(32319);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)}];
2
2
 
3
3
  //# sourceMappingURL=_0bxxvzb._.js.map
@@ -1,67 +1,13 @@
1
- module.exports=[11510,a=>{"use strict";var b=a.i(47350),c=a.i(75086),d=a.i(56561),e=a.i(3130),f=a.i(40695),g=a.i(5522);let h=`// emitMetric.ts - sends a custom event through the New Relic browser agent (no key in your code)
2
- // Needs a recent @newrelic/browser-agent (recordCustomEvent). Using New Relic's copy-paste snippet instead? Call window.newrelic.recordCustomEvent the same way.
3
- import { getAgent } from './newrelic'; // from snippet 1
1
+ module.exports=[11510,a=>{"use strict";var b=a.i(47350),c=a.i(75086),d=a.i(56561),e=a.i(3130),f=a.i(40695),g=a.i(5522);let h=(a,b,c)=>` ${a}: '${b}',${c?` // ${c}`:""}`,i=`// Records a MetricFlowEvent in New Relic. Does nothing before init, and nothing for Sentry.
2
+ import { send } from '@karan171996/metricflow/browser';
4
3
 
5
- export function emitMetric(name: string, value: number, attrs: Record<string, string | number | boolean> = {}) {
6
- // No-op until <NewRelicAgent /> has mounted, so this is safe to call anywhere.
7
- getAgent()?.recordCustomEvent('MetricFlowEvent', { name, value, page: location.pathname, ...attrs });
8
- }
4
+ send('checkout_step', 2, { step: 'payment' });`,j="border-[#2d3748] bg-[#1a202c] shadow-md";function k({n:a,title:d,help:g,code:h}){let[i,l]=(0,c.useState)(null);return(0,b.jsxs)(e.Card,{className:j,children:[(0,b.jsxs)(e.CardHeader,{children:[(0,b.jsx)(e.CardTitle,{className:"text-base font-bold text-white",children:d}),(0,b.jsx)(e.CardDescription,{className:"text-sm text-gray-400",children:g})]}),(0,b.jsxs)(e.CardContent,{className:"flex flex-col gap-3",children:[(0,b.jsx)("pre",{tabIndex:0,"aria-label":`Code snippet ${a}`,className:"overflow-x-auto rounded-md border border-[#2d3748] bg-[#0f1419] p-3 text-xs text-gray-300",children:h}),(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)(f.Button,{variant:"outline","aria-label":`Copy snippet ${a}: ${d.replace(/^\d+\. /,"")}`,onClick:()=>{navigator.clipboard.writeText(h).then(()=>l("ok"),()=>l("fail")),setTimeout(()=>l(null),2500)},children:"Copy"}),(0,b.jsx)("span",{"aria-live":"polite",className:`text-sm ${"fail"===i?"text-[#f87171]":"text-[#3ee0a1]"}`,children:"ok"===i?"Copied":"fail"===i?"Copy failed, select the text and copy manually":""})]})]})]})}function l({label:a,state:c,detail:d}){let e="ok"===c?"text-[#3ee0a1]":"bad"===c?"text-[#f87171]":"text-gray-400";return(0,b.jsxs)("div",{className:"flex items-start gap-3 border-b border-[#2d3748] py-2 last:border-0",children:[(0,b.jsx)("span",{className:`font-mono text-sm ${e}`,"aria-hidden":!0,children:"ok"===c?"✓":"bad"===c?"✗":"…"}),(0,b.jsx)("span",{className:"sr-only",children:"ok"===c?"working":"bad"===c?"not working":"checking"}),(0,b.jsx)("span",{className:"text-sm text-gray-300 w-56 shrink-0",children:a}),(0,b.jsx)("span",{className:`min-w-0 text-sm ${e}`,children:d})]})}function m({label:a,s:c}){let d="Checking…",e="text-gray-400";if(c?.error)d=c.error,e="text-[#f87171]";else if(c){let a=null!==c.recent&&c.recent>0;d=a?`Receiving data${c.lastEventAt?` \xb7 last event ${new Date(c.lastEventAt).toLocaleTimeString()}`:""}`:c.lastEventAt?`None in the last 5 minutes \xb7 last event ${new Date(c.lastEventAt).toLocaleString()}`:"None yet",e=a?"text-[#3ee0a1]":"text-[#f59e0b]"}return(0,b.jsxs)("div",{className:"flex items-center justify-between gap-4 border-b border-[#2d3748] py-2 last:border-0",children:[(0,b.jsx)("span",{className:"text-sm text-gray-300 shrink-0",children:a}),(0,b.jsx)("span",{className:`min-w-0 break-words text-right text-sm ${e}`,children:d})]})}a.s(["ConnectPage",0,function(){let[a,n]=(0,c.useState)(null),[o,p]=(0,c.useState)(""),[q,r]=(0,c.useState)(null),[s,t]=(0,c.useState)(!1),[u,v]=(0,c.useState)(!1),w=(0,c.useCallback)(()=>{fetch("/api/connect").then(a=>a.json()).then(n).catch(()=>{})},[]);async function x(){t(!0),r(null);try{let a=await fetch("/api/setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({NEWRELIC_INSERT_KEY:o})}),b=await a.json();b.saved?(p(""),v(!1),r({ok:!0,text:"Insert key saved."}),w()):r({ok:!1,text:b.error??b.results?.NEWRELIC_INSERT_KEY?.error??"Could not save the key."})}catch{r({ok:!1,text:"Could not reach the dashboard server."})}finally{t(!1)}}async function y(){t(!0),r(null);try{let a=await fetch("/api/connect",{method:"POST",headers:{"Content-Type":"application/json"}}),b=await a.json();r(b.sent?{ok:!0,text:"Test event sent. It can take up to a minute to show below."}:{ok:!1,text:b.error??"Failed."}),w()}catch{r({ok:!1,text:"Could not reach the dashboard server."})}finally{t(!1)}}if((0,c.useEffect)(()=>{w();let a=setInterval(()=>{document.hidden||w()},5e3);return()=>clearInterval(a)},[w]),a?.error)return(0,b.jsx)(e.Card,{className:j,children:(0,b.jsx)(e.CardContent,{className:"p-10 text-center","aria-live":"polite",children:(0,b.jsx)("p",{className:"text-sm text-[#f87171]",children:a.error})})});if(a&&!a.configured)return(0,b.jsx)(e.Card,{className:j,children:(0,b.jsxs)(e.CardContent,{className:"flex flex-col items-center gap-3 p-10 text-center",children:[(0,b.jsx)("h3",{className:"text-lg font-semibold text-white",children:"Set up your keys first"}),(0,b.jsx)("p",{className:"max-w-md text-sm text-gray-400",children:"Add your New Relic or Sentry keys, then come back to connect your site."}),(0,b.jsx)(d.default,{href:"/setup",className:(0,f.buttonVariants)(),children:"Go to setup"})]})});let z=!a?.tools||a.tools.includes("new-relic"),A=!a?.tools||a.tools.includes("sentry"),B=(z?2:1)+1,C=!!(a?.tools?.includes("sentry")&&!a.dsn);return(0,b.jsxs)("div",{className:"flex flex-col gap-6 max-w-3xl",children:[z&&(0,b.jsxs)(e.Card,{className:j,children:[(0,b.jsxs)(e.CardHeader,{children:[(0,b.jsx)(e.CardTitle,{className:"text-base font-bold text-white",children:"Connection"}),(0,b.jsx)(e.CardDescription,{className:"text-sm text-gray-400",children:"Each link in the chain from your site to this dashboard. Fix the first \\u2717."})]}),(0,b.jsxs)(e.CardContent,{"aria-live":"polite",children:[(0,b.jsx)(l,{label:"Keys for reading",state:a?"ok":"wait",detail:a?.accountId?`Reading New Relic account ${a.accountId}`:"Checking…"}),(0,b.jsx)(l,{label:"Browser app in New Relic",state:a?.setup?a.setup.error?"bad":a.setup.appCount>0?"ok":"bad":"wait",detail:a?.setup?a.setup.error?a.setup.error:a.setup.appCount>0?`${a.setup.appName} \u00b7 application ID ${a.setup.applicationId}`:"None yet. Create one: New Relic > Add data > Browser monitoring. Until then your site has no application ID to send to.":"Checking…"}),(0,b.jsx)(l,{label:"Browser key",state:a?.setup?a.setup.browserKey?"ok":"bad":"wait",detail:a?.setup?a.setup.browserKey?`${a.setup.browserKey} \u00b7 already filled into snippet 1 below`:"Could not read it. Copy the key VALUE from New Relic > API keys (type Ingest - Browser), not the ID beside it.":"Checking…"}),(0,b.jsx)(l,{label:"Your site sending data",state:a?.browser?(a.browser.recent??0)>0?"ok":"bad":"wait",detail:a?.browser?(a.browser.recent??0)>0?"New Relic is receiving page views":"No page views yet. Load your site, then check for blocked requests to nr-data.net - ad and privacy blockers drop them silently.":"Checking…"})]})]}),(0,b.jsxs)(e.Card,{className:j,children:[(0,b.jsxs)(e.CardHeader,{children:[(0,b.jsx)(e.CardTitle,{className:"text-base font-bold text-white",children:"Events received (last 5 minutes)"}),(0,b.jsxs)(e.CardDescription,{className:"text-sm text-gray-400",children:[a?.accountId?(0,b.jsxs)(b.Fragment,{children:["Querying New Relic account ",(0,b.jsx)("span",{className:"font-mono text-gray-200",children:a.accountId}),". "]}):null,"Updates every few seconds. All rows empty? Check this is the account your site sends to."]})]}),(0,b.jsxs)(e.CardContent,{"aria-live":"polite",children:[z&&(0,b.jsx)(m,{label:"Browser agent (page views)",s:a?.browser}),z&&(0,b.jsx)(m,{label:"Custom events (send / test event)",s:a?.custom}),A&&(0,b.jsx)(m,{label:"Sentry errors",s:a?.sentry})]})]}),z&&(0,b.jsxs)(e.Card,{className:j,children:[(0,b.jsxs)(e.CardHeader,{children:[(0,b.jsx)(e.CardTitle,{className:"text-base font-bold text-white",children:"Two different New Relic keys"}),(0,b.jsxs)(e.CardDescription,{className:"text-sm text-gray-400",children:[(0,b.jsx)("strong",{className:"text-gray-200",children:"User API key"})," (set on Setup): lets this dashboard ",(0,b.jsx)("em",{children:"read"})," your data."," ",(0,b.jsx)("strong",{className:"text-gray-200",children:"Ingest - License key"})," (below): lets a script ",(0,b.jsx)("em",{children:"send"})," events. Only the Insert key is used by the test button. The Browser agent snippet uses a third key, the ",(0,b.jsx)("strong",{className:"text-gray-200",children:"Ingest - Browser"})," key. Dashboards for US New Relic accounts only."]})]}),(0,b.jsxs)(e.CardContent,{className:"flex flex-col gap-3",children:[a?.insertKeySet&&!u?(0,b.jsxs)("p",{className:"text-sm text-[#3ee0a1]",children:["✓ Insert key is set"," ",(0,b.jsx)("button",{type:"button",className:"ml-2 text-gray-300 underline",onClick:()=>v(!0),children:"Replace"})]}):(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)("label",{htmlFor:"insert-key",className:"text-sm font-medium text-gray-300",children:"Insert key · sends test events"}),(0,b.jsx)("p",{id:"insert-key-help",className:"text-xs text-gray-400",children:'Only needed for the test button and custom events. Different from the User key. Create it as type "Ingest - License".'}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(g.Input,{id:"insert-key","aria-describedby":"insert-key-help",type:"password",autoComplete:"off",spellCheck:!1,placeholder:"Ingest - License key",value:o,onChange:a=>p(a.target.value),className:"bg-[#0f1419] border-[#2d3748] text-gray-200 font-mono text-xs"}),(0,b.jsx)(f.Button,{onClick:x,disabled:s||!o.trim(),children:"Save"})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)(f.Button,{onClick:y,disabled:s||!a?.insertKeySet,children:"Send test event"}),!a?.insertKeySet&&(0,b.jsx)("span",{className:"text-sm text-gray-400",children:"Add an Insert key first"}),q&&(0,b.jsx)("span",{"aria-live":"polite",className:`text-sm ${q.ok?"text-[#3ee0a1]":"text-[#f87171]"}`,children:q.text})]})]})]}),z&&(0,b.jsx)(e.Card,{className:j,children:(0,b.jsxs)(e.CardContent,{className:"p-4 text-sm text-[#f87171] border-l-2 border-[#f87171]",children:[(0,b.jsx)("strong",{children:"Snippet 1 runs in the browser, so its key is public."})," Use the ",(0,b.jsx)("strong",{children:"Ingest - Browser"})," key (starts ",(0,b.jsx)("span",{className:"font-mono",children:"NRJS-"}),"), never your ",(0,b.jsx)("span",{className:"font-mono",children:"NRAK-"})," User key from Setup - that one would hand every visitor full read/write access to your account. The application ID is also not your account ID."]})}),C&&(0,b.jsx)(e.Card,{className:j,children:(0,b.jsxs)(e.CardContent,{className:"p-4 text-sm text-[#f87171] border-l-2 border-[#f87171]",children:[(0,b.jsx)("strong",{children:"Your saved Sentry DSN cannot go in a public page."})," It must start with ",(0,b.jsx)("span",{className:"font-mono",children:"https://"})," and contain no secret part. ",(0,b.jsx)(d.default,{href:"/setup#sentry",className:"underline",children:"Replace it on Setup"}),", then the snippet below fills it in."]})}),(0,b.jsx)(k,{n:1,title:"1. Add MetricFlow to your site",help:"One install and one call. It sends page views, load timing, Core Web Vitals and JavaScript errors to the tools you connected. You do not install a New Relic or Sentry package yourself.",code:function({tools:a,accountId:b,applicationId:c,browserKey:d,region:e,dsn:f}={}){let g=[];return(!a||a.includes("new-relic"))&&g.push([" 'new-relic': {",h("browserKey",d??"NRJS-xxxxxxxxxxxxxxxxxxx",d?void 0:"replace: New Relic > API keys > Ingest - Browser. Starts NRJS-, NOT your NRAK- User key"),h("applicationId",c??"123456789",c?void 0:"replace: New Relic > Add data > Browser monitoring. NOT your account ID"),h("accountId",b??"1234567",b?void 0:"replace: your New Relic account ID"),..."eu"===e?[h("region","eu")]:[]," },"].join("\n")),(!a||a.includes("sentry"))&&g.push([" sentry: {",h("dsn",f??"https://00000000000000000000000000000000@o0.ingest.sentry.io/0",f?void 0:"replace: Sentry > Project settings > Client Keys (DSN)")," },"].join("\n")),`// npm i @karan171996/metricflow
5
+ // Call init once, when your site starts. In Next.js put this in instrumentation-client.ts.
6
+ // If your site already runs its own Sentry, call init after it.
7
+ import { init } from '@karan171996/metricflow/browser';
9
8
 
10
- // emitMetric('checkout_step', 2, { step: 'payment' });`,i=`// npm i @sentry/browser
11
- import * as Sentry from '@sentry/browser';
12
-
13
- Sentry.init({
14
- dsn: '<YOUR_SENTRY_DSN>', // Sentry > Project settings > Client Keys (DSN)
15
- integrations: [Sentry.browserTracingIntegration()], // records page loads and web vitals (LCP, CLS, INP, TTFB)
16
- tracesSampleRate: 0.1, // share of page loads recorded; raise it on low-traffic sites
17
- });`,j="border-[#2d3748] bg-[#1a202c] shadow-md";function k({n:a,title:d,help:g,code:h}){let[i,l]=(0,c.useState)(null);return(0,b.jsxs)(e.Card,{className:j,children:[(0,b.jsxs)(e.CardHeader,{children:[(0,b.jsx)(e.CardTitle,{className:"text-base font-bold text-white",children:d}),(0,b.jsx)(e.CardDescription,{className:"text-sm text-gray-400",children:g})]}),(0,b.jsxs)(e.CardContent,{className:"flex flex-col gap-3",children:[(0,b.jsx)("pre",{tabIndex:0,"aria-label":`Code snippet ${a}`,className:"overflow-x-auto rounded-md border border-[#2d3748] bg-[#0f1419] p-3 text-xs text-gray-300",children:h}),(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)(f.Button,{variant:"outline","aria-label":`Copy snippet ${a}: ${d.replace(/^\d+\. /,"")}`,onClick:()=>{navigator.clipboard.writeText(h).then(()=>l("ok"),()=>l("fail")),setTimeout(()=>l(null),2500)},children:"Copy"}),(0,b.jsx)("span",{"aria-live":"polite",className:`text-sm ${"fail"===i?"text-[#f87171]":"text-[#3ee0a1]"}`,children:"ok"===i?"Copied":"fail"===i?"Copy failed, select the text and copy manually":""})]})]})]})}function l({label:a,state:c,detail:d}){let e="ok"===c?"text-[#3ee0a1]":"bad"===c?"text-[#f87171]":"text-gray-400";return(0,b.jsxs)("div",{className:"flex items-start gap-3 border-b border-[#2d3748] py-2 last:border-0",children:[(0,b.jsx)("span",{className:`font-mono text-sm ${e}`,"aria-hidden":!0,children:"ok"===c?"✓":"bad"===c?"✗":"…"}),(0,b.jsx)("span",{className:"sr-only",children:"ok"===c?"working":"bad"===c?"not working":"checking"}),(0,b.jsx)("span",{className:"text-sm text-gray-300 w-56 shrink-0",children:a}),(0,b.jsx)("span",{className:`min-w-0 text-sm ${e}`,children:d})]})}function m({label:a,s:c}){let d="Checking…",e="text-gray-400";if(c?.error)d=c.error,e="text-[#f87171]";else if(c){let a=null!==c.recent&&c.recent>0;d=a?`Receiving data${c.lastEventAt?` \xb7 last event ${new Date(c.lastEventAt).toLocaleTimeString()}`:""}`:c.lastEventAt?`None in the last 5 minutes \xb7 last event ${new Date(c.lastEventAt).toLocaleString()}`:"None yet",e=a?"text-[#3ee0a1]":"text-[#f59e0b]"}return(0,b.jsxs)("div",{className:"flex items-center justify-between gap-4 border-b border-[#2d3748] py-2 last:border-0",children:[(0,b.jsx)("span",{className:"text-sm text-gray-300 shrink-0",children:a}),(0,b.jsx)("span",{className:`min-w-0 break-words text-right text-sm ${e}`,children:d})]})}a.s(["ConnectPage",0,function(){let[a,n]=(0,c.useState)(null),[o,p]=(0,c.useState)(""),[q,r]=(0,c.useState)(null),[s,t]=(0,c.useState)(!1),[u,v]=(0,c.useState)(!1),w=(0,c.useCallback)(()=>{fetch("/api/connect").then(a=>a.json()).then(n).catch(()=>{})},[]);async function x(){t(!0),r(null);try{let a=await fetch("/api/setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({NEWRELIC_INSERT_KEY:o})}),b=await a.json();b.saved?(p(""),v(!1),r({ok:!0,text:"Insert key saved."}),w()):r({ok:!1,text:b.error??b.results?.NEWRELIC_INSERT_KEY?.error??"Could not save the key."})}catch{r({ok:!1,text:"Could not reach the dashboard server."})}finally{t(!1)}}async function y(){t(!0),r(null);try{let a=await fetch("/api/connect",{method:"POST"}),b=await a.json();r(b.sent?{ok:!0,text:"Test event sent. It can take up to a minute to show below."}:{ok:!1,text:b.error??"Failed."}),w()}catch{r({ok:!1,text:"Could not reach the dashboard server."})}finally{t(!1)}}if((0,c.useEffect)(()=>{w();let a=setInterval(()=>{document.hidden||w()},5e3);return()=>clearInterval(a)},[w]),a?.error)return(0,b.jsx)(e.Card,{className:j,children:(0,b.jsx)(e.CardContent,{className:"p-10 text-center","aria-live":"polite",children:(0,b.jsx)("p",{className:"text-sm text-[#f87171]",children:a.error})})});if(a&&!a.configured)return(0,b.jsx)(e.Card,{className:j,children:(0,b.jsxs)(e.CardContent,{className:"flex flex-col items-center gap-3 p-10 text-center",children:[(0,b.jsx)("h3",{className:"text-lg font-semibold text-white",children:"Set up your keys first"}),(0,b.jsx)("p",{className:"max-w-md text-sm text-gray-400",children:"Add your New Relic or Sentry keys, then come back to connect your site."}),(0,b.jsx)(d.default,{href:"/setup",className:(0,f.buttonVariants)(),children:"Go to setup"})]})});let z=!a?.tools||a.tools.includes("new-relic"),A=!a?.tools||a.tools.includes("sentry"),B=2*!!z+ +!!A+1;return(0,b.jsxs)("div",{className:"flex flex-col gap-6 max-w-3xl",children:[z&&(0,b.jsxs)(e.Card,{className:j,children:[(0,b.jsxs)(e.CardHeader,{children:[(0,b.jsx)(e.CardTitle,{className:"text-base font-bold text-white",children:"Connection"}),(0,b.jsx)(e.CardDescription,{className:"text-sm text-gray-400",children:"Each link in the chain from your site to this dashboard. Fix the first \\u2717."})]}),(0,b.jsxs)(e.CardContent,{"aria-live":"polite",children:[(0,b.jsx)(l,{label:"Keys for reading",state:a?"ok":"wait",detail:a?.accountId?`Reading New Relic account ${a.accountId}`:"Checking…"}),(0,b.jsx)(l,{label:"Browser app in New Relic",state:a?.setup?a.setup.error?"bad":a.setup.appCount>0?"ok":"bad":"wait",detail:a?.setup?a.setup.error?a.setup.error:a.setup.appCount>0?`${a.setup.appName} \u00b7 application ID ${a.setup.applicationId}`:"None yet. Create one: New Relic > Add data > Browser monitoring. Until then your site has no application ID to send to.":"Checking…"}),(0,b.jsx)(l,{label:"Browser key",state:a?.setup?a.setup.browserKey?"ok":"bad":"wait",detail:a?.setup?a.setup.browserKey?`${a.setup.browserKey} \u00b7 already filled into snippet 1 below`:"Could not read it. Copy the key VALUE from New Relic > API keys (type Ingest - Browser), not the ID beside it.":"Checking…"}),(0,b.jsx)(l,{label:"Your site sending data",state:a?.browser?(a.browser.recent??0)>0?"ok":"bad":"wait",detail:a?.browser?(a.browser.recent??0)>0?"New Relic is receiving page views":"No page views yet. Load your site, then check for blocked requests to nr-data.net - ad and privacy blockers drop them silently.":"Checking…"})]})]}),(0,b.jsxs)(e.Card,{className:j,children:[(0,b.jsxs)(e.CardHeader,{children:[(0,b.jsx)(e.CardTitle,{className:"text-base font-bold text-white",children:"Events received (last 5 minutes)"}),(0,b.jsxs)(e.CardDescription,{className:"text-sm text-gray-400",children:[a?.accountId?(0,b.jsxs)(b.Fragment,{children:["Querying New Relic account ",(0,b.jsx)("span",{className:"font-mono text-gray-200",children:a.accountId}),". "]}):null,"Updates every few seconds. All rows empty? Check this is the account your site sends to."]})]}),(0,b.jsxs)(e.CardContent,{"aria-live":"polite",children:[z&&(0,b.jsx)(m,{label:"Browser agent (page views)",s:a?.browser}),z&&(0,b.jsx)(m,{label:"Custom events (emitMetric / test event)",s:a?.custom}),A&&(0,b.jsx)(m,{label:"Sentry errors",s:a?.sentry})]})]}),z&&(0,b.jsxs)(e.Card,{className:j,children:[(0,b.jsxs)(e.CardHeader,{children:[(0,b.jsx)(e.CardTitle,{className:"text-base font-bold text-white",children:"Two different New Relic keys"}),(0,b.jsxs)(e.CardDescription,{className:"text-sm text-gray-400",children:[(0,b.jsx)("strong",{className:"text-gray-200",children:"User API key"})," (set on Setup): lets this dashboard ",(0,b.jsx)("em",{children:"read"})," your data."," ",(0,b.jsx)("strong",{className:"text-gray-200",children:"Ingest - License key"})," (below): lets a script ",(0,b.jsx)("em",{children:"send"})," events. Only the Insert key is used by the test button. The Browser agent snippet uses a third key, the ",(0,b.jsx)("strong",{className:"text-gray-200",children:"Ingest - Browser"})," key. Dashboards for US New Relic accounts only."]})]}),(0,b.jsxs)(e.CardContent,{className:"flex flex-col gap-3",children:[a?.insertKeySet&&!u?(0,b.jsxs)("p",{className:"text-sm text-[#3ee0a1]",children:["✓ Insert key is set"," ",(0,b.jsx)("button",{type:"button",className:"ml-2 text-gray-300 underline",onClick:()=>v(!0),children:"Replace"})]}):(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)("label",{htmlFor:"insert-key",className:"text-sm font-medium text-gray-300",children:"Insert key · sends test events"}),(0,b.jsx)("p",{id:"insert-key-help",className:"text-xs text-gray-400",children:'Only needed for the test button and custom events. Different from the User key. Create it as type "Ingest - License".'}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(g.Input,{id:"insert-key","aria-describedby":"insert-key-help",type:"password",autoComplete:"off",spellCheck:!1,placeholder:"Ingest - License key",value:o,onChange:a=>p(a.target.value),className:"bg-[#0f1419] border-[#2d3748] text-gray-200 font-mono text-xs"}),(0,b.jsx)(f.Button,{onClick:x,disabled:s||!o.trim(),children:"Save"})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)(f.Button,{onClick:y,disabled:s||!a?.insertKeySet,children:"Send test event"}),!a?.insertKeySet&&(0,b.jsx)("span",{className:"text-sm text-gray-400",children:"Add an Insert key first"}),q&&(0,b.jsx)("span",{"aria-live":"polite",className:`text-sm ${q.ok?"text-[#3ee0a1]":"text-[#f87171]"}`,children:q.text})]})]})]}),z&&(0,b.jsx)(e.Card,{className:j,children:(0,b.jsxs)(e.CardContent,{className:"p-4 text-sm text-[#f87171] border-l-2 border-[#f87171]",children:[(0,b.jsx)("strong",{children:"Snippet 1 runs in the browser, so its key is public."})," Use the ",(0,b.jsx)("strong",{children:"Ingest - Browser"})," key (starts ",(0,b.jsx)("span",{className:"font-mono",children:"NRJS-"}),"), never your ",(0,b.jsx)("span",{className:"font-mono",children:"NRAK-"})," User key from Setup - that one would hand every visitor full read/write access to your account. The application ID is also not your account ID."]})}),z&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(k,{n:1,title:"1. New Relic Browser agent",help:"Gives page views, load timing and Core Web Vitals. Create the Browser app in New Relic first (Add data > Browser monitoring) - that is where the NRJS- key and the application ID come from.",code:(({accountId:a,applicationId:b,browserKey:c}={})=>`// Step 0 - create the Browser app first: New Relic > Add data > Browser monitoring.
18
- // Without it there is no ingest key and no application ID to copy.
19
- // That page gives you both:
20
- // ingest key starts with NRJS- (NOT your NRAK- User API key from Setup)
21
- // application ID a plain number (NOT your account ID - they look identical)
22
- // Copy the key VALUE, not the ID shown beside it in the key list: an ID is
23
- // accepted by the form but rejected by the beacon, and nothing is logged.
24
- // npm i @newrelic/browser-agent
25
-
26
- // .env.local - NEXT_PUBLIC_* values are inlined into your public JavaScript.
27
- // Only the NRJS- ingest key belongs here. An NRAK- User key would be published
28
- // to every visitor as a full-account read/write credential.
29
- // NEXT_PUBLIC_NEWRELIC_BROWSER_KEY=${c??"NRJS-xxxxxxxxxxxxxxxxxxx"}
30
- // NEXT_PUBLIC_NEWRELIC_APP_ID=${b??"123456789"}
31
- // NEXT_PUBLIC_NEWRELIC_ACCOUNT_ID=${a??"1234567"}
32
-
33
- // newrelic.ts
34
- import { BrowserAgent } from '@newrelic/browser-agent/loaders/browser-agent';
35
-
36
- const licenseKey = process.env.NEXT_PUBLIC_NEWRELIC_BROWSER_KEY!;
37
- const applicationID = process.env.NEXT_PUBLIC_NEWRELIC_APP_ID!;
38
- const accountID = process.env.NEXT_PUBLIC_NEWRELIC_ACCOUNT_ID!;
39
-
40
- let agent: BrowserAgent | undefined;
41
-
42
- // Never construct at import time: the agent touches window, so a module-level
43
- // \`export const agent = new BrowserAgent(...)\` fails \`next build\` on any
44
- // prerendered route - TypeError: Cannot create property 'NREUM' on boolean 'false'.
45
- export function startAgent() {
46
- agent ??= new BrowserAgent({
47
- init: { distributed_tracing: { enabled: true }, privacy: { cookies_enabled: true } },
48
- info: { beacon: 'bam.nr-data.net', errorBeacon: 'bam.nr-data.net', licenseKey, applicationID, sa: 1 },
49
- loader_config: { accountID, trustKey: accountID, agentID: applicationID, licenseKey, applicationID },
50
- });
51
- return agent;
52
- }
53
-
54
- export const getAgent = () => agent;
55
-
56
- // app/newrelic-agent.tsx - render <NewRelicAgent /> once in app/layout.tsx.
57
- 'use client';
58
- import { useEffect } from 'react';
59
-
60
- export function NewRelicAgent() {
61
- // Dynamic import keeps the agent out of the server bundle entirely.
62
- useEffect(() => { import('./newrelic').then(m => m.startAgent()); }, []);
63
- return null;
64
- }
65
- // That alone gives you PageView, load timing, Core Web Vitals and JS errors.`)({accountId:a?.accountId,applicationId:a?.setup?.applicationId,browserKey:a?.setup?.browserKey})}),(0,b.jsx)(k,{n:2,title:"2. emitMetric() helper",help:"Send your own numbers from your site. Uses the agent from snippet 1, so no key goes in your code.",code:h})]}),A&&(0,b.jsx)(k,{n:z?3:1,title:`${z?3:1}. Sentry errors and web vitals`,help:"Send JavaScript errors, page loads and web vitals to Sentry. Call it once, before anything else on your site runs. Use your project's DSN.",code:i}),(0,b.jsx)(e.Card,{className:j,children:(0,b.jsxs)(e.CardHeader,{children:[(0,b.jsxs)(e.CardTitle,{className:"text-base font-bold text-white",children:[B,". Verify"]}),(0,b.jsx)(e.CardDescription,{className:"text-sm text-gray-400",children:z?(0,b.jsx)(b.Fragment,{children:'Reload your site, then watch "Events received" above turn green. Use Send test event to check the custom-event path.'}):(0,b.jsx)(b.Fragment,{children:'Cause an error on your site, then watch "Sentry errors" above turn green.'})})]})})]})}],11510)},3130,a=>{"use strict";var b=a.i(47350),c=a.i(85198);a.s(["Card",0,function({className:a,size:d="default",...e}){return(0,b.jsx)("div",{"data-slot":"card","data-size":d,className:(0,c.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",a),...e})},"CardContent",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,c.cn)("px-(--card-spacing)",a),...d})},"CardDescription",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-description",className:(0,c.cn)("text-sm text-muted-foreground",a),...d})},"CardHeader",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-header",className:(0,c.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)",a),...d})},"CardTitle",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-title",className:(0,c.cn)("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",a),...d})}])},39848,a=>{"use strict";var b=a.i(75086);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},e=(0,b.createContext)({}),f=(0,b.forwardRef)(({color:a,size:f,width:g,height:h,strokeWidth:i,absoluteStrokeWidth:j,nonScalingStroke:k,className:l="",children:m,iconNode:n=[],icon:o={node:n,aliases:[],size:24},...p},q)=>{let{size:r=24,strokeWidth:s=2,absoluteStrokeWidth:t=!1,nonScalingStroke:u=!1,color:v="currentColor",className:w=""}=(0,b.useContext)(e)??{},x=!!m||(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(p),[y,z,A=[]]=function(a,b={}){return function(a,b={}){let e=b.attributeNames??{},f=a=>e[a]??a,g=a.size??a.width??d.width,h=a.size??a.height??d.height,i=a.aliases?.filter(a=>"string"==typeof a&&""!==a.trim()).map(a=>`lucide-${a}`)??[],j=[...a.name?[`lucide-${a.name}`]:[],...i],k=b.className?.split(" ").filter(Boolean)??[],l=!1===b.includeDefaultClasses?c(...k):c("lucide",...j,...k),m=b.absoluteStrokeWidth?Number(b.strokeWidth??d["stroke-width"])*Number(a.size??a.width??d.width)/Number(b.size??b.width??d.width):b.strokeWidth??d["stroke-width"];return["svg",{...Object.entries(d).reduce((a,[b,c])=>(a[f(b)]=c,a),{}),..."color"in b&&b.color&&{[f("stroke")]:b.color},..."size"in b&&null!=b.size&&{[f("width")]:b.size,[f("height")]:b.size},..."width"in b&&null!=b.width&&{[f("width")]:b.width},..."height"in b&&null!=b.height&&{[f("height")]:b.height},[f("stroke-width")]:m,...l&&{[f("class")]:l},[f("viewBox")]:`0 0 ${g} ${h}`,...!1===b.hasA11yProp?{[f("aria-hidden")]:"true"}:{},..."attributes"in b&&b.attributes},a.node.map(a=>{let[c,d,e]=a,g=b.nonScalingStroke?{[f("vector-effect")]:"non-scaling-stroke",...d}:d;return e?[c,g,e]:[c,g]})]}(a,{...b,attributeNames:{...b.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}(o,{color:a??v,width:g??f??r,height:h??f??r,strokeWidth:i??s,absoluteStrokeWidth:j??t,nonScalingStroke:k??u,className:c(w,l),hasA11yProp:x,attributes:p});return(0,b.createElement)(y,{ref:q,...z},[...A.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(m)?m:[m]])});a.s(["default",0,f],39848)},23904,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={actionAsyncStorage:function(){return f.actionAsyncStorage},workAsyncStorage:function(){return g.workAsyncStorage},workUnitAsyncStorage:function(){return h.workUnitAsyncStorage}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20635),g=a.r(56704),h=a.r(32319);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)}];
9
+ init({
10
+ ${g.join("\n")}
11
+ });`}({tools:a?.tools,accountId:a?.accountId,applicationId:a?.setup?.applicationId,browserKey:a?.setup?.browserKey,region:a?.region,dsn:a?.dsn})}),z&&(0,b.jsx)(k,{n:2,title:"2. Send your own numbers (optional)",help:"Record a custom event from anywhere in your site after init. New Relic only.",code:i}),(0,b.jsx)(e.Card,{className:j,children:(0,b.jsxs)(e.CardHeader,{children:[(0,b.jsxs)(e.CardTitle,{className:"text-base font-bold text-white",children:[B,". Verify"]}),(0,b.jsx)(e.CardDescription,{className:"text-sm text-gray-400",children:z?(0,b.jsx)(b.Fragment,{children:'Reload your site, then watch "Events received" above turn green. Use Send test event to check the custom-event path.'}):(0,b.jsx)(b.Fragment,{children:'Cause an error on your site, then watch "Sentry errors" above turn green.'})})]})})]})}],11510)},3130,a=>{"use strict";var b=a.i(47350),c=a.i(85198);a.s(["Card",0,function({className:a,size:d="default",...e}){return(0,b.jsx)("div",{"data-slot":"card","data-size":d,className:(0,c.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",a),...e})},"CardContent",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,c.cn)("px-(--card-spacing)",a),...d})},"CardDescription",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-description",className:(0,c.cn)("text-sm text-muted-foreground",a),...d})},"CardHeader",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-header",className:(0,c.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)",a),...d})},"CardTitle",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-title",className:(0,c.cn)("title-enter font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",a),...d})}])},39848,a=>{"use strict";var b=a.i(75086);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},e=(0,b.createContext)({}),f=(0,b.forwardRef)(({color:a,size:f,width:g,height:h,strokeWidth:i,absoluteStrokeWidth:j,nonScalingStroke:k,className:l="",children:m,iconNode:n=[],icon:o={node:n,aliases:[],size:24},...p},q)=>{let{size:r=24,strokeWidth:s=2,absoluteStrokeWidth:t=!1,nonScalingStroke:u=!1,color:v="currentColor",className:w=""}=(0,b.useContext)(e)??{},x=!!m||(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(p),[y,z,A=[]]=function(a,b={}){return function(a,b={}){let e=b.attributeNames??{},f=a=>e[a]??a,g=a.size??a.width??d.width,h=a.size??a.height??d.height,i=a.aliases?.filter(a=>"string"==typeof a&&""!==a.trim()).map(a=>`lucide-${a}`)??[],j=[...a.name?[`lucide-${a.name}`]:[],...i],k=b.className?.split(" ").filter(Boolean)??[],l=!1===b.includeDefaultClasses?c(...k):c("lucide",...j,...k),m=b.absoluteStrokeWidth?Number(b.strokeWidth??d["stroke-width"])*Number(a.size??a.width??d.width)/Number(b.size??b.width??d.width):b.strokeWidth??d["stroke-width"];return["svg",{...Object.entries(d).reduce((a,[b,c])=>(a[f(b)]=c,a),{}),..."color"in b&&b.color&&{[f("stroke")]:b.color},..."size"in b&&null!=b.size&&{[f("width")]:b.size,[f("height")]:b.size},..."width"in b&&null!=b.width&&{[f("width")]:b.width},..."height"in b&&null!=b.height&&{[f("height")]:b.height},[f("stroke-width")]:m,...l&&{[f("class")]:l},[f("viewBox")]:`0 0 ${g} ${h}`,...!1===b.hasA11yProp?{[f("aria-hidden")]:"true"}:{},..."attributes"in b&&b.attributes},a.node.map(a=>{let[c,d,e]=a,g=b.nonScalingStroke?{[f("vector-effect")]:"non-scaling-stroke",...d}:d;return e?[c,g,e]:[c,g]})]}(a,{...b,attributeNames:{...b.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}(o,{color:a??v,width:g??f??r,height:h??f??r,strokeWidth:i??s,absoluteStrokeWidth:j??t,nonScalingStroke:k??u,className:c(w,l),hasA11yProp:x,attributes:p});return(0,b.createElement)(y,{ref:q,...z},[...A.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(m)?m:[m]])});a.s(["default",0,f],39848)},23904,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={actionAsyncStorage:function(){return f.actionAsyncStorage},workAsyncStorage:function(){return g.workAsyncStorage},workUnitAsyncStorage:function(){return h.workUnitAsyncStorage}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20635),g=a.r(56704),h=a.r(32319);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)}];
66
12
 
67
13
  //# sourceMappingURL=_0cq6qjs._.js.map