@runtimescope/collector 0.10.10 → 0.10.12
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.
- package/dist/dashboard-assets/assets/api-map-page-Btbazs5z.js +1 -0
- package/dist/dashboard-assets/assets/badge-BOfEUuSW.js +1 -0
- package/dist/dashboard-assets/assets/breadcrumbs-page-ahYuYyrd.js +16 -0
- package/dist/dashboard-assets/assets/capex-page-H_aV7VU6.js +57 -0
- package/dist/dashboard-assets/assets/chevron-right-Df1qu9CE.js +6 -0
- package/dist/dashboard-assets/assets/circle-check-big-Dd6W5_do.js +6 -0
- package/dist/dashboard-assets/assets/clock-CmDPWLyG.js +6 -0
- package/dist/dashboard-assets/assets/code-block-D47Pz1qB.js +1 -0
- package/dist/dashboard-assets/assets/console-page-B3sYOQK9.js +7 -0
- package/dist/dashboard-assets/assets/data-table-A2Iq_hk5.js +6 -0
- package/dist/dashboard-assets/assets/database-page-DYOGNtgK.js +1 -0
- package/dist/dashboard-assets/assets/detail-panel-YWSVnqP_.js +1 -0
- package/dist/dashboard-assets/assets/dollar-sign-BDj484XE.js +6 -0
- package/dist/dashboard-assets/assets/download-CwvkYJyJ.js +6 -0
- package/dist/dashboard-assets/assets/empty-config-state-ReVUjdJ_.js +4 -0
- package/dist/dashboard-assets/assets/events-page-d6_fhDSn.js +1 -0
- package/dist/dashboard-assets/assets/export-button-D7y2ugNf.js +3 -0
- package/dist/dashboard-assets/assets/file-text-h8kcLd2l.js +6 -0
- package/dist/dashboard-assets/assets/filter-bar-CP39inkf.js +1 -0
- package/dist/dashboard-assets/assets/folder-open-D-HQTMMw.js +6 -0
- package/dist/dashboard-assets/assets/format-CF_gowqw.js +1 -0
- package/dist/dashboard-assets/assets/git-page-5wVisusM.js +9 -0
- package/dist/dashboard-assets/assets/hard-drive-D8jrlixH.js +6 -0
- package/dist/dashboard-assets/assets/home-page-lMWZHIMB.js +11 -0
- package/dist/dashboard-assets/assets/index-CUDottTv.js +269 -0
- package/dist/dashboard-assets/assets/index-e2kYo9r7.css +1 -0
- package/dist/dashboard-assets/assets/info-C0v7mgTM.js +6 -0
- package/dist/dashboard-assets/assets/infra-page-Cwb8--Fc.js +13 -0
- package/dist/dashboard-assets/assets/issue-detector-CH2FjMfV.js +1 -0
- package/dist/dashboard-assets/assets/issues-page-8abUxnvT.js +1 -0
- package/dist/dashboard-assets/assets/json-viewer-Dup5M0px.js +1 -0
- package/dist/dashboard-assets/assets/kitchen-sink-DmOR6KnI.js +12 -0
- package/dist/dashboard-assets/assets/memory-page-CnpiwsEL.js +12 -0
- package/dist/dashboard-assets/assets/message-square-Dwj0jRjI.js +6 -0
- package/dist/dashboard-assets/assets/metric-card-DE3zVnFg.js +11 -0
- package/dist/dashboard-assets/assets/minus-BzY257S7.js +6 -0
- package/dist/dashboard-assets/assets/network-page-CiQu5Dem.js +24 -0
- package/dist/dashboard-assets/assets/notes-page-XazIKqZP.js +7 -0
- package/dist/dashboard-assets/assets/overview-page-j5X9SBqW.js +6 -0
- package/dist/dashboard-assets/assets/performance-page-ImE9xvEt.js +1 -0
- package/dist/dashboard-assets/assets/play-Cx2BEZVZ.js +6 -0
- package/dist/dashboard-assets/assets/processes-page-BIMoApg0.js +1 -0
- package/dist/dashboard-assets/assets/project-view-DnnhNMhS.js +17 -0
- package/dist/dashboard-assets/assets/renders-page-C9THhZZ3.js +1 -0
- package/dist/dashboard-assets/assets/rules-page-CBgSauuM.js +1 -0
- package/dist/dashboard-assets/assets/runtime-page-B7b2m1KH.js +2 -0
- package/dist/dashboard-assets/assets/save-BGeL2PJM.js +6 -0
- package/dist/dashboard-assets/assets/sdk-page-C2D4FU-Y.js +6 -0
- package/dist/dashboard-assets/assets/sessions-page-BYNnSmUH.js +1 -0
- package/dist/dashboard-assets/assets/sessions-page-VWQ2b-LR.js +1 -0
- package/dist/dashboard-assets/assets/settings-page-B2geIpMf.js +11 -0
- package/dist/dashboard-assets/assets/sparkline-BYGr_Iny.js +1 -0
- package/dist/dashboard-assets/assets/square-C1plLKPb.js +6 -0
- package/dist/dashboard-assets/assets/state-page-CQDLPZ5t.js +1 -0
- package/dist/dashboard-assets/assets/status-dot-C1nxHZIG.js +1 -0
- package/dist/dashboard-assets/assets/tabs-BoJRkfaU.js +1 -0
- package/dist/dashboard-assets/assets/tag-Czqgl1tA.js +6 -0
- package/dist/dashboard-assets/assets/tasks-page-sjVxAPDG.js +27 -0
- package/dist/dashboard-assets/assets/textarea-DAwdLdON.js +1 -0
- package/dist/dashboard-assets/assets/topbar-892TvyNb.js +1 -0
- package/dist/dashboard-assets/assets/trash-2-C4Tvwfqn.js +6 -0
- package/dist/dashboard-assets/assets/use-connected-3Ljk-Uwv.js +1 -0
- package/dist/dashboard-assets/assets/wifi-B9CHDUUG.js +6 -0
- package/dist/dashboard-assets/assets/zap-D8s7B8fi.js +6 -0
- package/dist/dashboard-assets/index.html +16 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as u,q as C,j as a}from"./index-CUDottTv.js";import{T as j}from"./topbar-892TvyNb.js";import{B as p}from"./badge-BOfEUuSW.js";import"./textarea-DAwdLdON.js";import{D as y}from"./data-table-A2Iq_hk5.js";import{D as N}from"./detail-panel-YWSVnqP_.js";import{S as P}from"./status-dot-C1nxHZIG.js";import{u as $}from"./use-connected-3Ljk-Uwv.js";import{f as m}from"./format-CF_gowqw.js";const z=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,k=/^\d+$/,S=/^[0-9a-f]{24}$/i;function w(e){return z.test(e)||k.test(e)||S.test(e)?":id":e}function E(e){try{const l=new URL(e),n=l.pathname.split("/").filter(Boolean).map(w);return{baseUrl:l.origin,normalizedPath:"/"+n.join("/")}}catch{return{baseUrl:"unknown",normalizedPath:e}}}const v=[[/\.supabase\.co$/,"Supabase"],[/\.workers\.dev$/,"Cloudflare Workers"],[/\.vercel\.app$/,"Vercel"],[/api\.stripe\.com$/,"Stripe"],[/\.railway\.app$/,"Railway"],[/api\.github\.com$/,"GitHub API"],[/api\.openai\.com$/,"OpenAI"],[/api\.anthropic\.com$/,"Anthropic"],[/\.firebase(io|app)\.com$/,"Firebase"],[/\.amazonaws\.com$/,"AWS"],[/\.googleapis\.com$/,"Google APIs"],[/^(localhost|127\.0\.0\.1)$/,"Your API"]];function R(e){for(const[n,r]of v)if(n.test(e))return r;const l=e.split(".");return l.length>=2?l.slice(-2).join("."):e}function U(e){const l=e.authorization||e.Authorization;if(l)return l.startsWith("Bearer ")?{type:"bearer",headerName:"Authorization"}:l.startsWith("Basic ")?{type:"basic",headerName:"Authorization"}:{type:"api_key",headerName:"Authorization"};for(const n of Object.keys(e))if(n.toLowerCase().includes("api-key")||n.toLowerCase()==="x-api-key")return{type:"api_key",headerName:n};return e.cookie||e.Cookie?{type:"cookie"}:{type:"none"}}function f(e,l){if(e.length===0)return 0;const n=Math.ceil(e.length*(l/100))-1;return e[Math.max(0,n)]}function x(e){const l=new Map;for(const n of e){const{baseUrl:r,normalizedPath:t}=E(n.url);let s;try{s=new URL(n.url).hostname}catch{s="unknown"}const d=`${n.method.toUpperCase()} ${r}${t}`,c=l.get(d);c?c.events.push(n):l.set(d,{normalizedPath:t,method:n.method.toUpperCase(),baseUrl:r,service:R(s),events:[n],auth:U(n.requestHeaders),graphqlOperation:n.graphqlOperation})}return l}function L(e){const l=x(e),n=[];for(const r of l.values()){const t=r.events.map(s=>s.timestamp);n.push({normalizedPath:r.normalizedPath,method:r.method,baseUrl:r.baseUrl,service:r.service,callCount:r.events.length,firstSeen:Math.min(...t),lastSeen:Math.max(...t),auth:r.auth,graphqlOperation:r.graphqlOperation})}return n.sort((r,t)=>t.callCount-r.callCount)}function A(e){const l=x(e),n=[];for(const r of l.values()){const t=r.events.map(c=>c.duration).sort((c,i)=>c-i),s=r.events.filter(c=>c.status>=400).length,d={};for(const c of r.events)c.status>=400&&(d[c.status]=(d[c.status]??0)+1);n.push({normalizedPath:r.normalizedPath,method:r.method,service:r.service,callCount:r.events.length,successRate:(r.events.length-s)/r.events.length,avgLatency:t.reduce((c,i)=>c+i,0)/t.length,p50Latency:f(t,50),p95Latency:f(t,95),errorRate:s/r.events.length,errorCodes:d})}return n.sort((r,t)=>t.callCount-r.callCount)}function D(e){const l=x(e),n=new Map;for(const t of l.values()){const s=n.get(t.service);if(s)s.endpoints.add(`${t.method} ${t.normalizedPath}`),s.totalCalls+=t.events.length,s.totalDuration+=t.events.reduce((d,c)=>d+c.duration,0),s.errorCount+=t.events.filter(d=>d.status>=400).length;else{let d;try{const c=new URL(t.baseUrl).hostname;for(const[i,h]of v)if(i.test(c)){d=h;break}}catch{}n.set(t.service,{baseUrl:t.baseUrl,endpoints:new Set([`${t.method} ${t.normalizedPath}`]),totalCalls:t.events.length,totalDuration:t.events.reduce((c,i)=>c+i.duration,0),errorCount:t.events.filter(c=>c.status>=400).length,auth:t.auth,platform:d})}}const r=[];for(const[t,s]of n)r.push({name:t,baseUrl:s.baseUrl,endpointCount:s.endpoints.size,totalCalls:s.totalCalls,avgLatency:s.totalCalls>0?s.totalDuration/s.totalCalls:0,errorRate:s.totalCalls>0?s.errorCount/s.totalCalls:0,auth:s.auth,detectedPlatform:s.platform});return r.sort((t,s)=>s.totalCalls-t.totalCalls)}const M={GET:"green",POST:"purple",PUT:"amber",DELETE:"red",PATCH:"orange"},O=[{key:"method",header:"Method",width:"90px",render:e=>a.jsx(p,{variant:M[e.method]||"default",size:"sm",children:e.method})},{key:"normalizedPath",header:"Path",render:e=>a.jsx("span",{className:"font-mono text-[13px]",children:e.normalizedPath})},{key:"service",header:"Service",width:"140px",render:e=>a.jsx("span",{className:"text-text-secondary",children:e.service})},{key:"callCount",header:"Calls",width:"80px",render:e=>a.jsx("span",{className:"tabular-nums",children:e.callCount})},{key:"auth",header:"Auth",width:"80px",render:e=>{var n;const l=((n=e.auth)==null?void 0:n.type)||"none";return a.jsx(p,{variant:l==="none"?"default":"green",size:"sm",children:l})}}];function V(){const[e,l]=u.useState("endpoints"),[n,r]=u.useState(null);$();const t=C(o=>o.network),s=u.useMemo(()=>t.length===0?[]:L(t),[t]),d=u.useMemo(()=>t.length===0?[]:A(t),[t]),c=u.useMemo(()=>t.length===0?[]:D(t),[t]),i=n?d.find(o=>`${o.method} ${o.normalizedPath}`===n):null,h=u.useMemo(()=>i?[{label:"Success Rate",value:`${(i.successRate*100).toFixed(0)}%`},{label:"Error Rate",value:`${(i.errorRate*100).toFixed(1)}%`},{label:"Avg Latency",value:m(i.avgLatency)},{label:"P95 Latency",value:m(i.p95Latency)},{label:"P50 Latency",value:m(i.p50Latency)},{label:"Total Calls",value:String(i.callCount)}]:[],[i]),b=u.useCallback(()=>r(null),[]);return a.jsxs("div",{className:"flex-1 flex flex-col min-h-0 overflow-hidden",children:[a.jsx(j,{tabs:[{id:"endpoints",label:"Endpoints"},{id:"services",label:"Services"}],activeTab:e,onTabChange:l}),a.jsxs("div",{className:"flex-1 flex min-h-0 overflow-hidden",children:[a.jsxs("div",{className:"flex-1 overflow-auto",children:[e==="endpoints"&&a.jsx(y,{columns:O,data:s,onRowClick:o=>r(`${o.method} ${o.normalizedPath}`),selectedIndex:n?s.findIndex(o=>`${o.method} ${o.normalizedPath}`===n):void 0}),e==="services"&&a.jsx("div",{className:"p-5 grid grid-cols-2 gap-4",children:c.map(o=>a.jsxs("div",{className:"bg-bg-surface border border-border-strong rounded-lg p-4",children:[a.jsxs("div",{className:"flex items-center justify-between mb-2",children:[a.jsx("span",{className:"text-[15px] font-semibold text-text-primary",children:o.name}),a.jsx(P,{color:o.errorRate>.05?"red":o.errorRate>0?"amber":"green",size:"md"})]}),a.jsx("p",{className:"text-[12px] text-text-muted font-mono mb-3",children:o.baseUrl}),a.jsxs("div",{className:"grid grid-cols-3 gap-3 text-center",children:[a.jsxs("div",{children:[a.jsx("p",{className:"text-lg font-bold tabular-nums",children:o.endpointCount}),a.jsx("p",{className:"text-[10px] text-text-muted",children:"Endpoints"})]}),a.jsxs("div",{children:[a.jsx("p",{className:"text-lg font-bold tabular-nums",children:o.totalCalls}),a.jsx("p",{className:"text-[10px] text-text-muted",children:"Calls"})]}),a.jsxs("div",{children:[a.jsx("p",{className:"text-lg font-bold tabular-nums",children:m(o.avgLatency)}),a.jsx("p",{className:"text-[10px] text-text-muted",children:"Avg Latency"})]})]}),o.detectedPlatform&&a.jsx("div",{className:"mt-3 pt-3 border-t border-border-muted",children:a.jsx(p,{size:"sm",children:o.detectedPlatform})})]},o.name))})]}),a.jsx(N,{open:i!==null,onClose:b,title:i?`${i.method} ${i.normalizedPath}`:"",subtitle:i?i.service:"",children:i&&a.jsxs("div",{className:"p-4 space-y-3",children:[a.jsx("div",{className:"grid grid-cols-2 gap-3",children:h.map(o=>a.jsxs("div",{className:"bg-bg-elevated rounded-md p-3 border border-border-muted",children:[a.jsx("p",{className:"text-[11px] text-text-muted",children:o.label}),a.jsx("p",{className:"text-[15px] font-bold tabular-nums",children:o.value})]},o.label))}),Object.keys(i.errorCodes).length>0&&a.jsxs("div",{children:[a.jsx("p",{className:"text-[11px] font-medium text-text-muted uppercase tracking-wider mb-2",children:"Error Codes"}),a.jsx("div",{className:"flex gap-2",children:Object.entries(i.errorCodes).map(([o,g])=>a.jsxs(p,{variant:"red",size:"sm",children:[o,": ",g,"x"]},o))})]})]})})]})]})}export{V as ApiMapPage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as a,c as b}from"./index-CUDottTv.js";import{c as n}from"./textarea-DAwdLdON.js";const o=n("inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium transition-colors border",{variants:{variant:{default:"bg-bg-elevated text-text-secondary border-border-default",brand:"bg-brand-muted text-brand border-brand-border",accent:"bg-accent-muted text-accent border-accent-border",green:"bg-green-muted text-green border-green-border",blue:"bg-blue-muted text-blue border-blue-border",purple:"bg-purple-muted text-purple border-purple-border",amber:"bg-amber-muted text-amber border-amber-border",red:"bg-red-muted text-red border-red-border",orange:"bg-orange-muted text-orange border-orange-border",cyan:"bg-cyan-muted text-cyan border-cyan-border"},size:{sm:"text-[10px] px-1.5 py-px",md:"text-xs px-2.5 py-0.5",lg:"text-sm px-3 py-1"}},defaultVariants:{variant:"default",size:"md"}});function m({className:e,variant:r,size:t,...d}){return a.jsx("span",{className:b(o({variant:r,size:t}),e),...d})}export{m as B};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import{a as k,r as l,q as h,j as o,c as p,L as I,D as z,G as N,w as v,z as M,T as $}from"./index-CUDottTv.js";import{B as P}from"./badge-BOfEUuSW.js";import{S as G}from"./textarea-DAwdLdON.js";import{J as O}from"./json-viewer-Dup5M0px.js";import{E as V}from"./empty-config-state-ReVUjdJ_.js";import{E as W}from"./export-button-D7y2ugNf.js";import{b as _}from"./format-CF_gowqw.js";import{C as q}from"./chevron-right-Df1qu9CE.js";import{T as E}from"./tag-Czqgl1tA.js";import"./download-CwvkYJyJ.js";/**
|
|
2
|
+
* @license lucide-react v0.469.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const F=k("Bookmark",[["path",{d:"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z",key:"1fy3hk"}]]);/**
|
|
7
|
+
* @license lucide-react v0.469.0 - ISC
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the ISC license.
|
|
10
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
+
*/const H=k("MousePointerClick",[["path",{d:"M14 4.1 12 6",key:"ita8i4"}],["path",{d:"m5.1 8-2.9-.8",key:"1go3kf"}],["path",{d:"m6 12-1.9 2",key:"mnht97"}],["path",{d:"M7.2 2.2 8 5.1",key:"1cfko1"}],["path",{d:"M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z",key:"s0h3yz"}]]);/**
|
|
12
|
+
* @license lucide-react v0.469.0 - ISC
|
|
13
|
+
*
|
|
14
|
+
* This source code is licensed under the ISC license.
|
|
15
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
+
*/const J=k("Navigation",[["polygon",{points:"3 11 22 2 13 21 11 13 3 11",key:"1ltx0t"}]]),K={"ui.click":{icon:H,color:"text-blue"},breadcrumb:{icon:F,color:"text-purple"},navigation:{icon:J,color:"text-cyan"},"console.log":{icon:v,color:"text-text-secondary"},"console.info":{icon:v,color:"text-blue"},"console.warn":{icon:$,color:"text-amber"},"console.error":{icon:M,color:"text-red"},"console.debug":{icon:v,color:"text-text-muted"},http:{icon:N,color:"text-green"},"http.error":{icon:N,color:"text-red"},state:{icon:z,color:"text-indigo"},custom:{icon:E,color:"text-teal"}};function g(a){return K[a]??{icon:E,color:"text-text-muted"}}const U={error:"red",warning:"amber",info:"blue",debug:"default"};function Y(a){return a.map(e=>{const s=e.action==="click",i=s?"ui.click":"breadcrumb",n=g(i);return{id:`ui-${e.eventId}`,timestamp:e.timestamp,category:i,level:"info",message:s?e.text?`Click: ${e.text}`:`Click: ${e.target}`:e.text??e.target,icon:n.icon,color:n.color,data:{target:e.target,...e.data}}})}function Q(a){return a.map(e=>{const s=`console.${e.level}`,i=g(s),n=e.level==="error"?"error":e.level==="warn"?"warning":e.level==="debug"||e.level==="trace"?"debug":"info";return{id:`con-${e.eventId}`,timestamp:e.timestamp,category:s,level:n,message:e.message.slice(0,200),icon:i.icon,color:i.color,...e.stackTrace&&{data:{hasStack:!0}}}})}function X(a){return a.map(e=>{const s=e.errorPhase||e.status>=400,i=s?"http.error":"http",n=g(i);let d;try{d=new URL(e.url).pathname}catch{d=e.url}return{id:`net-${e.eventId}`,timestamp:e.timestamp,category:i,level:s?"error":"info",message:`${e.method} ${d} → ${e.status||e.errorPhase||"pending"}`,icon:n.icon,color:n.color,data:{duration:e.duration,status:e.status,url:e.url}}})}const Z=["all","ui.click","breadcrumb","console","http","navigation"],ee=["all","error","warning","info","debug"],C={debug:0,info:1,warning:2,error:3},b=300,te=l.memo(function({entry:e,isExpanded:s,onToggle:i}){const n=g(e.category),d=n.icon,m=e.data&&Object.keys(e.data).length>0;return o.jsxs("div",{className:"border-b border-border-muted",children:[o.jsxs("div",{onClick:()=>m&&i(e.id),className:p("flex items-center gap-3 px-5 py-2 transition-colors",m&&"cursor-pointer hover:bg-bg-hover",s&&"bg-bg-hover"),children:[m&&o.jsx(q,{size:12,className:p("shrink-0 text-text-muted transition-transform",s&&"rotate-90")}),!m&&o.jsx("div",{className:"w-3 shrink-0"}),o.jsx(d,{size:14,strokeWidth:1.75,className:p("shrink-0",n.color)}),o.jsx("span",{className:"text-[11px] font-mono text-text-muted tabular-nums shrink-0",children:_(e.timestamp)}),o.jsx("span",{className:p("text-[13px] flex-1 min-w-0 truncate",e.level==="error"?"text-red":e.level==="warning"?"text-amber":"text-text-primary"),children:e.message}),o.jsx(P,{variant:U[e.level]??"default",className:"shrink-0 text-[10px]",children:e.category})]}),s&&m&&o.jsx("div",{className:"px-5 pb-3 pl-16",children:o.jsx("div",{className:"bg-bg-elevated rounded-md p-3 border border-border-muted",children:o.jsx(O,{data:e.data,defaultExpanded:!0})})})]})});function ue(){const[a,e]=l.useState("all"),[s,i]=l.useState("all"),[n,d]=l.useState(""),[m,S]=l.useState(null),[f,L]=l.useState(!1),T=h(t=>t.initialLoadDone),y=h(t=>t.ui),j=h(t=>t.console),w=h(t=>t.network),u=l.useMemo(()=>{const t=[...Y(y),...Q(j),...X(w)];return t.sort((r,c)=>c.timestamp-r.timestamp),t},[y,j,w]),B=l.useMemo(()=>{const t={all:u.length};for(const r of u){const c=r.category.startsWith("console")?"console":r.category.startsWith("http")?"http":r.category;t[c]=(t[c]??0)+1}return t},[u]),x=l.useMemo(()=>{let t=u;if(a!=="all"&&(t=t.filter(r=>a==="console"?r.category.startsWith("console"):a==="http"?r.category.startsWith("http"):r.category===a)),s!=="all"){const r=C[s]??0;t=t.filter(c=>(C[c.level]??0)>=r)}if(n){const r=n.toLowerCase();t=t.filter(c=>c.message.toLowerCase().includes(r)||c.category.includes(r))}return t},[u,a,s,n]),A=l.useMemo(()=>f||x.length<=b?x:x.slice(-b),[x,f]),R=!f&&x.length>b,D=l.useCallback(t=>{S(r=>r===t?null:t)},[]);return o.jsxs("div",{className:"flex-1 flex flex-col min-h-0 overflow-hidden",children:[o.jsxs("div",{className:"border-b border-border-default px-5 py-2.5 flex items-center gap-3",children:[o.jsx("div",{className:"flex items-center gap-1",children:Z.map(t=>{const r=a===t,c=t==="all"?null:g(t);return o.jsxs("button",{onClick:()=>e(t),className:p("h-7 px-2.5 rounded-md text-[12px] font-medium transition-colors cursor-pointer flex items-center gap-1.5",r?"bg-bg-elevated text-text-primary":"text-text-tertiary hover:text-text-secondary hover:bg-bg-hover"),children:[c&&o.jsx(c.icon,{size:12,className:r?c.color:""}),o.jsx("span",{className:"capitalize",children:t==="ui.click"?"Clicks":t==="http"?"HTTP":t}),o.jsx("span",{className:p("text-[10px] tabular-nums",r?"text-text-secondary":"text-text-muted"),children:B[t]??0})]},t)})}),o.jsx("div",{className:"h-4 w-px bg-border-default"}),o.jsx("div",{className:"flex items-center gap-1",children:ee.map(t=>{const r=s===t;return o.jsx("button",{onClick:()=>i(t),className:p("h-7 px-2 rounded-md text-[11px] font-medium transition-colors cursor-pointer capitalize",r?"bg-bg-elevated text-text-primary":"text-text-tertiary hover:text-text-secondary hover:bg-bg-hover"),children:t},t)})}),o.jsxs("div",{className:"flex items-center gap-2 ml-auto",children:[o.jsx("div",{className:"w-56",children:o.jsx(G,{value:n,onChange:t=>d(t.target.value),placeholder:"Search breadcrumbs..."})}),o.jsx(W,{data:x,filename:"breadcrumbs"})]})]}),o.jsx("div",{className:"flex-1 overflow-y-auto",children:!T&&u.length===0?o.jsx(I,{rows:12}):u.length===0?o.jsx(V,{title:"No Breadcrumbs",description:"Breadcrumbs are custom markers you add to trace user flows and debug sequences. Add them in your code with the SDK's addBreadcrumb() function.",configHints:[{key:"RuntimeScope.addBreadcrumb('label'",value:"{ key: 'value' })",description:"Add trail markers"},{key:"RuntimeScope.track('event_name'",value:"{ data })",description:"Track custom events"}]}):o.jsxs(o.Fragment,{children:[A.map(t=>o.jsx(te,{entry:t,isExpanded:m===t.id,onToggle:D},t.id)),R&&o.jsx("div",{className:"px-5 py-3 text-center",children:o.jsxs("button",{onClick:()=>L(!0),className:"text-xs text-text-tertiary hover:text-text-secondary transition-colors",children:["Showing ",b," of ",x.length," entries — click to show all"]})})]})})]})}export{ue as BreadcrumbsPage};
|