@karan171996/metricflow 0.5.1 → 0.5.2

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 (105) 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/server/app/_global-error.html +1 -1
  5. package/.next/server/app/_global-error.rsc +1 -1
  6. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  9. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  10. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/_not-found.html +2 -2
  12. package/.next/server/app/_not-found.rsc +6 -6
  13. package/.next/server/app/_not-found.segments/_full.segment.rsc +6 -6
  14. package/.next/server/app/_not-found.segments/_index.segment.rsc +6 -6
  15. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  17. package/.next/server/app/api/analyze/route.js.nft.json +1 -1
  18. package/.next/server/app/api/connect/route.js.nft.json +1 -1
  19. package/.next/server/app/api/health/route.js.nft.json +1 -1
  20. package/.next/server/app/api/metrics/route.js.nft.json +1 -1
  21. package/.next/server/app/api/settings/route.js.nft.json +1 -1
  22. package/.next/server/app/api/setup/ai/route.js.nft.json +1 -1
  23. package/.next/server/app/api/setup/route.js.nft.json +1 -1
  24. package/.next/server/app/connect/page.js.nft.json +1 -1
  25. package/.next/server/app/connect/page_client-reference-manifest.js +1 -1
  26. package/.next/server/app/connect.html +2 -2
  27. package/.next/server/app/connect.rsc +8 -8
  28. package/.next/server/app/connect.segments/_full.segment.rsc +8 -8
  29. package/.next/server/app/connect.segments/_index.segment.rsc +6 -6
  30. package/.next/server/app/connect.segments/_tree.segment.rsc +1 -1
  31. package/.next/server/app/connect.segments/connect/__PAGE__.segment.rsc +6 -6
  32. package/.next/server/app/index.html +2 -2
  33. package/.next/server/app/index.rsc +8 -8
  34. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  35. package/.next/server/app/index.segments/_full.segment.rsc +8 -8
  36. package/.next/server/app/index.segments/_index.segment.rsc +6 -6
  37. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  38. package/.next/server/app/page.js.nft.json +1 -1
  39. package/.next/server/app/page_client-reference-manifest.js +1 -1
  40. package/.next/server/app/performance/[slug]/page.js.nft.json +1 -1
  41. package/.next/server/app/performance/[slug]/page_client-reference-manifest.js +1 -1
  42. package/.next/server/app/performance/page.js.nft.json +1 -1
  43. package/.next/server/app/performance/page_client-reference-manifest.js +1 -1
  44. package/.next/server/app/performance.html +2 -2
  45. package/.next/server/app/performance.rsc +9 -9
  46. package/.next/server/app/performance.segments/_full.segment.rsc +9 -9
  47. package/.next/server/app/performance.segments/_index.segment.rsc +6 -6
  48. package/.next/server/app/performance.segments/_tree.segment.rsc +1 -1
  49. package/.next/server/app/performance.segments/performance/__PAGE__.segment.rsc +7 -7
  50. package/.next/server/app/settings/page.js.nft.json +1 -1
  51. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  52. package/.next/server/app/settings.html +2 -2
  53. package/.next/server/app/settings.rsc +17 -17
  54. package/.next/server/app/settings.segments/_full.segment.rsc +17 -17
  55. package/.next/server/app/settings.segments/_index.segment.rsc +6 -6
  56. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  57. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +16 -16
  58. package/.next/server/app/setup/page.js.nft.json +1 -1
  59. package/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  60. package/.next/server/app/setup.html +2 -2
  61. package/.next/server/app/setup.rsc +9 -9
  62. package/.next/server/app/setup.segments/_full.segment.rsc +9 -9
  63. package/.next/server/app/setup.segments/_index.segment.rsc +6 -6
  64. package/.next/server/app/setup.segments/_tree.segment.rsc +1 -1
  65. package/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +7 -7
  66. package/.next/server/app/tools/[tool]/page.js.nft.json +1 -1
  67. package/.next/server/app/tools/[tool]/page_client-reference-manifest.js +1 -1
  68. package/.next/server/chunks/[root-of-the-server]__00bbqkl._.js +1 -1
  69. package/.next/server/chunks/[root-of-the-server]__0fkj1-q._.js +1 -1
  70. package/.next/server/chunks/[root-of-the-server]__0rfr72x._.js +1 -1
  71. package/.next/server/chunks/[root-of-the-server]__186pj_c._.js +1 -1
  72. package/.next/server/chunks/[root-of-the-server]__19yigji._.js +1 -1
  73. package/.next/server/chunks/[root-of-the-server]__1igrw77._.js +1 -1
  74. package/.next/server/chunks/[root-of-the-server]__1xo4bin._.js +1 -1
  75. package/.next/server/chunks/_0w8wvdn._.js +1 -1
  76. package/.next/server/chunks/_0wct7-r._.js +1 -1
  77. package/.next/server/chunks/ssr/0x0c_next_dist_1icgwks._.js +1 -1
  78. package/.next/server/chunks/ssr/[root-of-the-server]__0o_fd5z._.js +1 -1
  79. package/.next/server/chunks/ssr/_0_02db6._.js +1 -1
  80. package/.next/server/chunks/ssr/_0bxxvzb._.js +1 -1
  81. package/.next/server/chunks/ssr/_0htqt7_._.js +1 -1
  82. package/.next/server/chunks/ssr/_0ompurr._.js +2 -2
  83. package/.next/server/chunks/ssr/_0un641_._.js +1 -1
  84. package/.next/server/chunks/ssr/_13m9nev._.js +1 -1
  85. package/.next/server/chunks/ssr/_14aoqb2._.js +1 -1
  86. package/.next/server/middleware-build-manifest.js +3 -3
  87. package/.next/server/pages/404.html +2 -2
  88. package/.next/server/pages/500.html +1 -1
  89. package/.next/static/chunks/0_xh0vh4uh0vk.js +1 -0
  90. package/.next/static/chunks/19qbz8dh8aqt6.js +1 -0
  91. package/.next/static/chunks/2-az50vi0iboz.js +5 -0
  92. package/.next/static/chunks/2wmat901j6po0.js +1 -0
  93. package/.next/static/chunks/{2p8myet8kmrgx.js → 332-owz6utwp5.js} +1 -1
  94. package/.next/static/chunks/3ab7oxjuh1asy.js +1 -0
  95. package/.next/trace +1 -1
  96. package/.next/trace-build +1 -1
  97. package/package.json +1 -1
  98. package/.next/static/chunks/0798_gs3g5aja.js +0 -1
  99. package/.next/static/chunks/1_dhsu7ouiell.js +0 -5
  100. package/.next/static/chunks/268zd4cpgc5jh.js +0 -1
  101. package/.next/static/chunks/3ah6umj9qtdhc.js +0 -1
  102. package/.next/static/chunks/3wwhtfj-3akyd.js +0 -1
  103. /package/.next/static/{ucaTykj_MXE8yhAPTYNl7 → wZ6L7QBGYuFD01WhrymMz}/_buildManifest.js +0 -0
  104. /package/.next/static/{ucaTykj_MXE8yhAPTYNl7 → wZ6L7QBGYuFD01WhrymMz}/_clientMiddlewareManifest.js +0 -0
  105. /package/.next/static/{ucaTykj_MXE8yhAPTYNl7 → wZ6L7QBGYuFD01WhrymMz}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,24851,e=>{"use strict";var t=e.i(40798),a=e.i(3547),r=e.i(70065),s=e.i(67881);e.s(["EmptyState",0,function({title:e="No data yet",reason:i="Keys work, but no page events have arrived.",href:l="/connect",cta:n="Send your first events",onRetry:d}){return(0,t.jsx)(r.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:(0,t.jsxs)(r.CardContent,{className:"flex flex-col items-center gap-3 p-10 text-center",children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-white",children:e}),(0,t.jsx)("p",{className:"max-w-md text-sm text-gray-400",children:i}),(0,t.jsxs)("div",{className:"flex gap-3",children:[(0,t.jsx)(a.default,{href:l,className:(0,s.buttonVariants)(),children:n}),d&&(0,t.jsx)(s.Button,{variant:"outline",onClick:d,children:"Retry"})]})]})})}])},98537,e=>{"use strict";var t=e.i(40798),a=e.i(19085),r=e.i(47627),s=e.i(70065),i=e.i(71428),l=e.i(24851),n=e.i(78320),d=e.i(93834);e.s(["ToolInsights",0,function({tool:e}){let{state:o,retry:c}=(0,n.useMetrics)(),h=(0,a.useRouter)(),{label:u,stats:m,columns:x}=d.TOOLS[e];if("loading"===o.status)return(0,t.jsx)(i.Skeleton,{className:"mt-6 h-64 w-full bg-[#2d3748]"});if("error"===o.status)return(0,t.jsx)(l.EmptyState,{title:"Could not load metrics",reason:o.message,onRetry:c});if(!o.configured)return(0,t.jsx)(l.EmptyState,{title:"Connect your data",reason:"Add your New Relic or Sentry keys to see real numbers.",href:"/setup",cta:"Set up keys"});if(!o.tools.includes("new-relic"))return(0,t.jsx)(l.EmptyState,{...n.NEEDS_NEW_RELIC});if(o.failed.includes(e))return(0,t.jsx)(l.EmptyState,{title:`Could not load ${u} data`,reason:"The request failed. Your other data is unaffected.",onRetry:c});let g=o.pages.filter(n.hasData);return g.length?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"grid gap-6 sm:grid-cols-2 lg:grid-cols-4 mb-8 mt-4",children:m(g).map(e=>(0,t.jsx)(s.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:(0,t.jsxs)(s.CardContent,{className:"p-6",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-gray-400",children:e.label}),(0,t.jsx)("div",{className:"mt-4 truncate text-3xl font-bold text-white tracking-tight",children:e.value})]})},e.label))}),(0,t.jsxs)(s.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md flex-1",children:[(0,t.jsx)(s.CardHeader,{children:(0,t.jsxs)(s.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:[u," by Page"]})}),(0,t.jsx)(s.CardContent,{children:(0,t.jsx)("div",{className:"rounded-md border border-[#2d3748] overflow-hidden",children:(0,t.jsxs)(r.Table,{children:[(0,t.jsx)(r.TableHeader,{className:"bg-[#0f1419]",children:(0,t.jsxs)(r.TableRow,{className:"border-[#2d3748] hover:bg-transparent",children:[(0,t.jsx)(r.TableHead,{className:"text-gray-400",children:"Page Name"}),(0,t.jsx)(r.TableHead,{className:"text-gray-400",children:"Path"}),x.map(e=>(0,t.jsx)(r.TableHead,{className:"text-gray-400",children:e.header},e.header))]})}),(0,t.jsx)(r.TableBody,{children:o.pages.map(e=>(0,t.jsxs)(r.TableRow,{className:"border-[#2d3748] hover:bg-white/5 transition-colors cursor-pointer",onClick:()=>h.push(`/performance/${e.slug}`),children:[(0,t.jsx)(r.TableCell,{className:"font-medium text-white",children:e.name}),(0,t.jsx)(r.TableCell,{className:"text-gray-500 font-mono text-xs",children:e.url}),x.map(a=>(0,t.jsx)(r.TableCell,{className:"max-w-[320px] truncate text-gray-400",children:(0,n.hasData)(e)?a.cell(e):"—"},a.header))]},e.slug))})]})})})]})]}):(0,t.jsx)(l.EmptyState,{})}])},70065,e=>{"use strict";var t=e.i(40798),a=e.i(28603);e.s(["Card",0,function({className:e,size:r="default",...s}){return(0,t.jsx)("div",{"data-slot":"card","data-size":r,className:(0,a.cn)("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",e),...s})},"CardContent",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-(--card-spacing)",e),...r})},"CardDescription",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-sm text-muted-foreground",e),...r})},"CardHeader",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",e),...r})},"CardTitle",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",e),...r})}])},47627,e=>{"use strict";var t=e.i(40798),a=e.i(28603);e.s(["Table",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,t.jsx)("table",{"data-slot":"table",className:(0,a.cn)("w-full caption-bottom text-sm",e),...r})})},"TableBody",0,function({className:e,...r}){return(0,t.jsx)("tbody",{"data-slot":"table-body",className:(0,a.cn)("[&_tr:last-child]:border-0",e),...r})},"TableCell",0,function({className:e,...r}){return(0,t.jsx)("td",{"data-slot":"table-cell",className:(0,a.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",e),...r})},"TableHead",0,function({className:e,...r}){return(0,t.jsx)("th",{"data-slot":"table-head",className:(0,a.cn)("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",e),...r})},"TableHeader",0,function({className:e,...r}){return(0,t.jsx)("thead",{"data-slot":"table-header",className:(0,a.cn)("[&_tr]:border-b",e),...r})},"TableRow",0,function({className:e,...r}){return(0,t.jsx)("tr",{"data-slot":"table-row",className:(0,a.cn)("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted",e),...r})}])},91153,e=>{"use strict";var t=e.i(96341);let a=(...e)=>e.filter((e,t,a)=>!!e&&""!==e.trim()&&a.indexOf(e)===t).join(" ").trim(),r={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"},s=(0,t.createContext)({}),i=(0,t.forwardRef)(({color:e,size:i,width:l,height:n,strokeWidth:d,absoluteStrokeWidth:o,nonScalingStroke:c,className:h="",children:u,iconNode:m=[],icon:x={node:m,aliases:[],size:24},...g},b)=>{let{size:f=24,strokeWidth:p=2,absoluteStrokeWidth:w=!1,nonScalingStroke:j=!1,color:N="currentColor",className:v=""}=(0,t.useContext)(s)??{},y=!!u||(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(g),[k,C,T=[]]=function(e,t={}){return function(e,t={}){let s=t.attributeNames??{},i=e=>s[e]??e,l=e.size??e.width??r.width,n=e.size??e.height??r.height,d=e.aliases?.filter(e=>"string"==typeof e&&""!==e.trim()).map(e=>`lucide-${e}`)??[],o=[...e.name?[`lucide-${e.name}`]:[],...d],c=t.className?.split(" ").filter(Boolean)??[],h=!1===t.includeDefaultClasses?a(...c):a("lucide",...o,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??r["stroke-width"])*Number(e.size??e.width??r.width)/Number(t.size??t.width??r.width):t.strokeWidth??r["stroke-width"];return["svg",{...Object.entries(r).reduce((e,[t,a])=>(e[i(t)]=a,e),{}),..."color"in t&&t.color&&{[i("stroke")]:t.color},..."size"in t&&null!=t.size&&{[i("width")]:t.size,[i("height")]:t.size},..."width"in t&&null!=t.width&&{[i("width")]:t.width},..."height"in t&&null!=t.height&&{[i("height")]:t.height},[i("stroke-width")]:u,...h&&{[i("class")]:h},[i("viewBox")]:`0 0 ${l} ${n}`,...!1===t.hasA11yProp?{[i("aria-hidden")]:"true"}:{},..."attributes"in t&&t.attributes},e.node.map(e=>{let[a,r,s]=e,l=t.nonScalingStroke?{[i("vector-effect")]:"non-scaling-stroke",...r}:r;return s?[a,l,s]:[a,l]})]}(e,{...t,attributeNames:{...t.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}(x,{color:e??N,width:l??i??f,height:n??i??f,strokeWidth:d??p,absoluteStrokeWidth:o??w,nonScalingStroke:c??j,className:a(v,h),hasA11yProp:y,attributes:g});return(0,t.createElement)(k,{ref:b,...C},[...T.map(([e,a])=>(0,t.createElement)(e,a)),...Array.isArray(u)?u:[u]])});e.s(["default",0,i],91153)}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,55370,e=>{"use strict";var t=e.i(40798),a=e.i(96341),r=e.i(70065),s=e.i(67881),i=e.i(23750);let n=[{id:"gemini",label:"Google Gemini",help:"Create a key at aistudio.google.com/apikey."},{id:"claude",label:"Anthropic Claude",help:"Create a key at console.anthropic.com > API keys."},{id:"openai",label:"OpenAI",help:"Create a key at platform.openai.com/api-keys."}];e.s(["AiKeyForm",0,function(){let[e,o]=(0,a.useState)(n[0].id),[l,d]=(0,a.useState)(""),[c,h]=(0,a.useState)(null),[u,m]=(0,a.useState)({}),[p,x]=(0,a.useState)(null),[g,f]=(0,a.useState)(!1);async function b(t){t.preventDefault(),f(!0),x(null);try{let t=await fetch("/api/setup/ai",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e,key:l})}),a=await t.json();a.saved?(d(""),h(e),m({...u,[e]:!0}),x({ok:!0,text:"Saved. AI suggestions now use this provider. No restart needed."})):x({ok:!1,text:a.error??"Nothing was saved."})}catch{x({ok:!1,text:"Could not reach the dashboard server."})}finally{f(!1)}}(0,a.useEffect)(()=>{fetch("/api/setup/ai").then(e=>e.json()).then(e=>{e.keys&&(m(e.keys),h(e.provider),e.provider&&o(e.provider))}).catch(()=>{})},[]);let v=n.find(t=>t.id===e);return(0,t.jsxs)(r.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md max-w-2xl mt-6",children:[(0,t.jsxs)(r.CardHeader,{children:[(0,t.jsx)(r.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:"AI suggestions (optional)"}),(0,t.jsx)(r.CardDescription,{className:"text-sm text-gray-400",children:"Add a Gemini, Claude or OpenAI key to get AI insights and recommendations for your pages. Only page names, load times and error counts are sent to the provider you pick. Without a key, the dashboard shows sample suggestions."})]}),(0,t.jsx)(r.CardContent,{children:(0,t.jsxs)("form",{onSubmit:b,className:"flex flex-col gap-5",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("label",{htmlFor:"ai-provider",className:"text-sm font-medium text-gray-300",children:"Provider"}),(0,t.jsx)("select",{id:"ai-provider",value:e,onChange:e=>o(e.target.value),className:"h-9 rounded-md border border-[#2d3748] bg-[#0f1419] px-3 text-sm text-gray-200",children:n.map(e=>(0,t.jsxs)("option",{value:e.id,children:[e.label,c===e.id?" (in use)":u[e.id]?" (key saved)":""]},e.id))})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsxs)("label",{htmlFor:"ai-key",className:"text-sm font-medium text-gray-300",children:[v.label," API key ",u[e]&&(0,t.jsx)("span",{className:"ml-2 text-xs text-[#3ee0a1]",children:"✓ Set"})]}),(0,t.jsx)(i.Input,{id:"ai-key",type:"password",autoComplete:"off",spellCheck:!1,placeholder:u[e]?"•••••••• (type to replace)":"",value:l,onChange:e=>d(e.target.value),"aria-describedby":"ai-key-help",className:"bg-[#0f1419] border-[#2d3748] text-gray-200 font-mono text-xs"}),(0,t.jsx)("p",{id:"ai-key-help",className:"text-xs text-gray-400",children:v.help})]}),(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)(s.Button,{type:"submit",disabled:g||!l.trim(),children:g?"Checking…":"Check and save"}),(0,t.jsx)("span",{"aria-live":"polite",className:`text-sm ${p?.ok?"text-[#3ee0a1]":"text-[#f87171]"}`,children:p?.text})]})]})})]})}])},4603,e=>{"use strict";var t=e.i(40798),a=e.i(96341),r=e.i(3547),s=e.i(70065),i=e.i(67881),n=e.i(23750),o=e.i(94179),l=e.i(93834);let d=[{name:"NEWRELIC_API_KEY",tool:"new-relic",label:l.KEY_LABELS.NEWRELIC_API_KEY,secret:!0,help:'READS your data (starts NRAK-). Create it under API keys > key type "User".'},{name:"NEXT_PUBLIC_NEWRELIC_ACCOUNT_ID",tool:"new-relic",label:l.KEY_LABELS.NEXT_PUBLIC_NEWRELIC_ACCOUNT_ID,secret:!1,help:"A plain number, shown next to your keys in New Relic."},{name:"SENTRY_API_KEY",tool:"sentry",label:l.KEY_LABELS.SENTRY_API_KEY,secret:!0,help:"Lets the dashboard read issues (scopes: project:read, event:read)."},{name:"SENTRY_DSN",tool:"sentry",label:l.KEY_LABELS.SENTRY_DSN,secret:!1,help:"Project settings, then Client Keys (DSN). The project and host are read from it."}];e.s(["SetupForm",0,function(){let[e,c]=(0,a.useState)({}),[h,u]=(0,a.useState)({}),[m,p]=(0,a.useState)({}),[x,g]=(0,a.useState)(null),[f,b]=(0,a.useState)(!1),[v,y]=(0,a.useState)(!1),[k,N]=(0,a.useState)(null),j=(0,a.useRef)(null);async function C(t){t.preventDefault(),b(!0),g(null);try{let t=await fetch("/api/setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),a=await t.json(),r=a.results??{};p(r);let s=d.find(e=>r[e.name]&&!r[e.name].ok);if(s&&setTimeout(()=>j.current?.querySelector(`#${s.name}`)?.focus(),0),a.saved){y(!0),c({});let t=new Set(d.filter(t=>e[t.name]?.trim()).map(e=>e.tool));u(e=>({...e,...Object.fromEntries(d.filter(e=>t.has(e.tool)).map(e=>[e.name,!0]))}));let a=l.TOOL_IDS.filter(e=>t.has(e)||k?.includes(e));N(a),g({ok:!0,text:`Saved. ${a.map(e=>l.TOOLS[e].label).join(" and ")} ${a.length>1?"are":"is"} connected. No restart needed.`})}else g({ok:!1,text:a.error??"Nothing was saved. Fix the fields marked below."})}catch{g({ok:!1,text:"Could not reach the dashboard server."})}finally{b(!1)}}return(0,a.useEffect)(()=>{fetch("/api/setup").then(e=>e.json()).then(e=>{e.keys&&u(e.keys),Array.isArray(e.tools)?N(e.tools):e.error&&g({ok:!1,text:e.error})}).catch(()=>{})},[]),(0,t.jsxs)(s.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md max-w-2xl",children:[(0,t.jsxs)(s.CardHeader,{children:[(0,t.jsx)(s.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:"Connect your tools"}),(0,t.jsx)(s.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,t.jsx)(s.CardContent,{children:(0,t.jsxs)("form",{ref:j,onSubmit:C,className:"flex flex-col gap-5",children:[l.TOOL_IDS.map(a=>(0,t.jsxs)("fieldset",{id:a,className:"flex flex-col gap-5 rounded-lg border border-[#2d3748] p-4",children:[(0,t.jsxs)("legend",{className:"flex items-center gap-2 px-2 text-sm font-semibold text-white",children:[l.TOOLS[a].label,k?.includes(a)?(0,t.jsx)(o.Badge,{variant:"outline",className:"border-[#3ee0a1] text-[#3ee0a1] bg-[#3ee0a1]/10",children:"✓ Connected"}):(0,t.jsx)(o.Badge,{variant:"outline",className:"border-[#4a5568] text-gray-400",children:"Optional"})]}),d.filter(e=>e.tool===a).map(a=>{let r=m[a.name];return(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsxs)("label",{htmlFor:a.name,className:"text-sm font-medium text-gray-300",children:[a.label," ",h[a.name]&&(0,t.jsx)("span",{className:"ml-2 text-xs text-[#3ee0a1]",children:"✓ Set"})]}),(0,t.jsx)(n.Input,{id:a.name,name:a.name,type:a.secret?"password":"text",autoComplete:"off",spellCheck:!1,placeholder:h[a.name]?"•••••••• (leave blank to keep, type to replace)":"",value:e[a.name]??"",onChange:t=>c({...e,[a.name]:t.target.value}),"aria-invalid":!!r&&!r.ok||void 0,"aria-describedby":`${a.name}-help ${a.name}-result`,className:"bg-[#0f1419] border-[#2d3748] text-gray-200 font-mono text-xs"}),(0,t.jsx)("p",{id:`${a.name}-help`,className:"text-xs text-gray-400",children:a.help}),(0,t.jsxs)("div",{id:`${a.name}-result`,"aria-live":"polite",children:[r&&!r.ok&&(0,t.jsxs)("p",{className:"text-xs text-[#f87171]",children:["✗ ",r.error]}),r?.ok&&(0,t.jsx)("p",{className:"text-xs text-[#3ee0a1]",children:"✓ Checked"})]})]},a.name)}),"new-relic"===a&&(0,t.jsx)("p",{className:"text-xs text-gray-400",children:"The key that sends events (Ingest - License) is separate and is added later on the Connect page."})]},a)),(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)(i.Button,{type:"submit",disabled:f||!d.some(t=>e[t.name]?.trim()),children:f?"Checking…":"Check and save"}),(0,t.jsx)("span",{"aria-live":"polite",className:`text-sm ${x?.ok?"text-[#3ee0a1]":"text-[#f87171]"}`,children:x?.text}),!d.some(t=>e[t.name]?.trim())&&!x&&!v&&(0,t.jsx)("span",{className:"text-sm text-gray-400",children:k?.length?"Type a new key to change what is saved.":"Fill in both fields for at least one tool."}),v&&(0,t.jsx)(r.default,{href:"/connect",className:(0,i.buttonVariants)({variant:"outline"}),children:"Next: connect your app"})]})]})})]})}])},94179,e=>{"use strict";var t=e.i(46987),a=e.i(10063),r=e.i(94237),s=e.i(28603);let i=(0,r.cva)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});e.s(["Badge",0,function({className:e,variant:r="default",render:n,...o}){return(0,a.useRender)({defaultTagName:"span",props:(0,t.mergeProps)({className:(0,s.cn)(i({variant:r}),e)},o),render:n,state:{slot:"badge",variant:r}})}])},70065,e=>{"use strict";var t=e.i(40798),a=e.i(28603);e.s(["Card",0,function({className:e,size:r="default",...s}){return(0,t.jsx)("div",{"data-slot":"card","data-size":r,className:(0,a.cn)("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",e),...s})},"CardContent",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-(--card-spacing)",e),...r})},"CardDescription",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-sm text-muted-foreground",e),...r})},"CardHeader",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",e),...r})},"CardTitle",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",e),...r})}])},91153,e=>{"use strict";var t=e.i(96341);let a=(...e)=>e.filter((e,t,a)=>!!e&&""!==e.trim()&&a.indexOf(e)===t).join(" ").trim(),r={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"},s=(0,t.createContext)({}),i=(0,t.forwardRef)(({color:e,size:i,width:n,height:o,strokeWidth:l,absoluteStrokeWidth:d,nonScalingStroke:c,className:h="",children:u,iconNode:m=[],icon:p={node:m,aliases:[],size:24},...x},g)=>{let{size:f=24,strokeWidth:b=2,absoluteStrokeWidth:v=!1,nonScalingStroke:y=!1,color:k="currentColor",className:N=""}=(0,t.useContext)(s)??{},j=!!u||(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(x),[C,w,S=[]]=function(e,t={}){return function(e,t={}){let s=t.attributeNames??{},i=e=>s[e]??e,n=e.size??e.width??r.width,o=e.size??e.height??r.height,l=e.aliases?.filter(e=>"string"==typeof e&&""!==e.trim()).map(e=>`lucide-${e}`)??[],d=[...e.name?[`lucide-${e.name}`]:[],...l],c=t.className?.split(" ").filter(Boolean)??[],h=!1===t.includeDefaultClasses?a(...c):a("lucide",...d,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??r["stroke-width"])*Number(e.size??e.width??r.width)/Number(t.size??t.width??r.width):t.strokeWidth??r["stroke-width"];return["svg",{...Object.entries(r).reduce((e,[t,a])=>(e[i(t)]=a,e),{}),..."color"in t&&t.color&&{[i("stroke")]:t.color},..."size"in t&&null!=t.size&&{[i("width")]:t.size,[i("height")]:t.size},..."width"in t&&null!=t.width&&{[i("width")]:t.width},..."height"in t&&null!=t.height&&{[i("height")]:t.height},[i("stroke-width")]:u,...h&&{[i("class")]:h},[i("viewBox")]:`0 0 ${n} ${o}`,...!1===t.hasA11yProp?{[i("aria-hidden")]:"true"}:{},..."attributes"in t&&t.attributes},e.node.map(e=>{let[a,r,s]=e,n=t.nonScalingStroke?{[i("vector-effect")]:"non-scaling-stroke",...r}:r;return s?[a,n,s]:[a,n]})]}(e,{...t,attributeNames:{...t.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}(p,{color:e??k,width:n??i??f,height:o??i??f,strokeWidth:l??b,absoluteStrokeWidth:d??v,nonScalingStroke:c??y,className:a(N,h),hasA11yProp:j,attributes:x});return(0,t.createElement)(C,{ref:g,...w},[...S.map(([e,a])=>(0,t.createElement)(e,a)),...Array.isArray(u)?u:[u]])});e.s(["default",0,i],91153)}]);