@lunora/studio 1.0.0-alpha.233 → 1.0.0-alpha.235
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/index.mjs +1 -1
- package/dist/packem_chunks/HealthPanel.mjs +1 -1
- package/dist/packem_chunks/MetricsPanel.mjs +1 -1
- package/dist/packem_chunks/organizations-panel.mjs +1 -1
- package/dist/packem_chunks/users-panel.mjs +1 -1
- package/dist/packem_shared/aggregateMetrics-DKFJc-o5.mjs +1 -0
- package/dist/packem_shared/{use-auth-config-B9hH2tQa.mjs → use-auth-config-Z_n4ABCI.mjs} +1 -1
- package/dist/standalone/chunk-3QTPBDEE.js +1 -0
- package/dist/standalone/{chunk-3BPU6KWT.js → chunk-4HYOZ5ZJ.js} +1 -1
- package/dist/standalone/{chunk-B7YTSYYU.js → chunk-4OF6SYZT.js} +1 -1
- package/dist/standalone/{chunk-SETOMKJQ.js → chunk-5B4A5JFY.js} +1 -1
- package/dist/standalone/{chunk-XKMLLTFP.js → chunk-5VOVEDR5.js} +1 -1
- package/dist/standalone/chunk-5XPSGVCH.js +1 -0
- package/dist/standalone/{chunk-BUXXXTBH.js → chunk-5ZMFXENV.js} +1 -1
- package/dist/standalone/{chunk-7UP7547U.js → chunk-6FJ57ZTO.js} +1 -1
- package/dist/standalone/{chunk-UASFJAMH.js → chunk-6LI2ZPZP.js} +1 -1
- package/dist/standalone/chunk-72GVG7ZA.js +1 -0
- package/dist/standalone/{chunk-JTVWPYLJ.js → chunk-7FNKPMA2.js} +1 -1
- package/dist/standalone/{chunk-BEELZZ37.js → chunk-7LM2OPEX.js} +2 -2
- package/dist/standalone/chunk-A2IFIQBC.js +1 -0
- package/dist/standalone/{chunk-HIBXZZWW.js → chunk-AER33ROJ.js} +1 -1
- package/dist/standalone/{chunk-VCLZ6FIL.js → chunk-BSZTC4MD.js} +1 -1
- package/dist/standalone/{chunk-RLAYIZH7.js → chunk-C3NTEGLS.js} +1 -1
- package/dist/standalone/{chunk-RD3F6RSI.js → chunk-CBKHNLQP.js} +1 -1
- package/dist/standalone/{chunk-NE3TYHDO.js → chunk-CX4RLLE6.js} +1 -1
- package/dist/standalone/{chunk-7KU2KIIG.js → chunk-CZYBAFV5.js} +1 -1
- package/dist/standalone/{chunk-2CQU5AYI.js → chunk-EFW7P5QN.js} +1 -1
- package/dist/standalone/{chunk-QEZYETMW.js → chunk-FFPCD5FO.js} +1 -1
- package/dist/standalone/{chunk-QJ6IDQEB.js → chunk-FWOLDDP3.js} +1 -1
- package/dist/standalone/{chunk-Q7ZQDPVS.js → chunk-G2LTRKTS.js} +1 -1
- package/dist/standalone/{chunk-7LDAOJBF.js → chunk-GXFE67KG.js} +1 -1
- package/dist/standalone/{chunk-MSJNQTHC.js → chunk-HG73XCE3.js} +1 -1
- package/dist/standalone/{chunk-2LEOPZI5.js → chunk-HZI3HDNF.js} +1 -1
- package/dist/standalone/{chunk-ICOTONE3.js → chunk-IHST4O44.js} +1 -1
- package/dist/standalone/{chunk-2NHYHRPG.js → chunk-J3M67HRS.js} +1 -1
- package/dist/standalone/{chunk-S7TIXHSA.js → chunk-JOGI3BEY.js} +1 -1
- package/dist/standalone/{chunk-VKF5EDSO.js → chunk-JVHSVJKB.js} +1 -1
- package/dist/standalone/{chunk-Y2O5NK3V.js → chunk-K64RSNFO.js} +1 -1
- package/dist/standalone/{chunk-2R3OZNVG.js → chunk-K7S5ZJWT.js} +1 -1
- package/dist/standalone/{chunk-NRICVQ3V.js → chunk-KEI4KB2T.js} +1 -1
- package/dist/standalone/{chunk-VV4EHTGT.js → chunk-KMAR3G25.js} +1 -1
- package/dist/standalone/{chunk-RB6L4EWS.js → chunk-KV7UU6Q6.js} +1 -1
- package/dist/standalone/{chunk-TJ3JODX4.js → chunk-LD5VHN6F.js} +1 -1
- package/dist/standalone/{chunk-5CHNXWES.js → chunk-LFNPNXEA.js} +1 -1
- package/dist/standalone/{chunk-CUTPZAD7.js → chunk-LKIPWKTS.js} +1 -1
- package/dist/standalone/{chunk-Q4QI76WW.js → chunk-M5ELYZJP.js} +1 -1
- package/dist/standalone/chunk-MAKJK7E3.js +15 -0
- package/dist/standalone/{chunk-EHT34KX3.js → chunk-MH52JQEE.js} +1 -1
- package/dist/standalone/{chunk-FAG2V4FC.js → chunk-MMXWY3LI.js} +1 -1
- package/dist/standalone/{chunk-3NOJMVD5.js → chunk-NAW47M4U.js} +1 -1
- package/dist/standalone/{chunk-TH265N7R.js → chunk-NOOTHUAJ.js} +2 -2
- package/dist/standalone/{chunk-VJQM3KP4.js → chunk-OIS5HJUJ.js} +1 -1
- package/dist/standalone/{chunk-2U6GYS2H.js → chunk-OKGBD25L.js} +1 -1
- package/dist/standalone/{chunk-VU2324AD.js → chunk-OWF6NPTJ.js} +1 -1
- package/dist/standalone/{chunk-RD2L56WK.js → chunk-P5XYLCCF.js} +1 -1
- package/dist/standalone/{chunk-WGD2O4EV.js → chunk-R33QPGHM.js} +1 -1
- package/dist/standalone/{chunk-3HGJJ46Q.js → chunk-R5QEERYV.js} +1 -1
- package/dist/standalone/{chunk-C5CNJIVE.js → chunk-RPLZX45R.js} +1 -1
- package/dist/standalone/{chunk-6T4P2KCZ.js → chunk-TJUTNALR.js} +1 -1
- package/dist/standalone/{chunk-D4KNGOTR.js → chunk-TOAE7TY5.js} +1 -1
- package/dist/standalone/{chunk-X2NW2KIU.js → chunk-TOXP4K4U.js} +1 -1
- package/dist/standalone/{chunk-7WNRAW4R.js → chunk-TUPNO264.js} +1 -1
- package/dist/standalone/{chunk-3BLQ2XRL.js → chunk-V6EUJ5DH.js} +1 -1
- package/dist/standalone/{chunk-FZ5SSAZU.js → chunk-VG4UQMVI.js} +1 -1
- package/dist/standalone/{chunk-UFHJNCQL.js → chunk-WARZ2GMS.js} +1 -1
- package/dist/standalone/{chunk-JI6ZQEOE.js → chunk-XU5H4B2D.js} +1 -1
- package/dist/standalone/{chunk-QNQKICIW.js → chunk-XZG7R7EL.js} +1 -1
- package/dist/standalone/{chunk-6VMBJJVU.js → chunk-YFKDAK74.js} +1 -1
- package/dist/standalone/{chunk-7ZC57PPI.js → chunk-YO4RDEMQ.js} +1 -1
- package/dist/standalone/{chunk-J6YPZE2F.js → chunk-ZJ7AXXF5.js} +1 -1
- package/dist/standalone/studio.js +1 -1
- package/package.json +6 -6
- package/dist/packem_shared/aggregateMetrics-5zEJC6Ju.mjs +0 -1
- package/dist/standalone/chunk-6GMTLHS5.js +0 -1
- package/dist/standalone/chunk-7RXPPLD2.js +0 -1
- package/dist/standalone/chunk-LCXKALTS.js +0 -15
- package/dist/standalone/chunk-ONIGWNXT.js +0 -1
- package/dist/standalone/chunk-QKZ2JCH3.js +0 -1
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{StudioApp as r}from"./packem_shared/StudioApp-DikgPBVJ.mjs";import{CommandPalette as a,openCommandPalette as f}from"./packem_shared/CommandPalette-D9ZY-qQd.mjs";import{S as m}from"./packem_shared/studio-ajWxPNfI.mjs";import{ConfirmButton as l}from"./packem_shared/ConfirmButton-DU4p72Er.mjs";import{default as s}from"./packem_shared/ConnectionBadge-B8Hj5DaE.mjs";import{ErrorBoundary as d}from"./packem_shared/ErrorBoundary-BWNF98VF.mjs";import{ShardInput as P}from"./packem_shared/ShardInput-C6mjgAh4.mjs";import{default as A}from"./packem_chunks/AdvisorHealthPanel.mjs";import{DEFAULT_INSIGHT_THRESHOLDS as I,deriveInsights as T}from"./packem_shared/DEFAULT_INSIGHT_THRESHOLDS-D5YMT0gM.mjs";import{InsightsPanel as g}from"./packem_chunks/InsightsPanel.mjs";import{default as F}from"./packem_chunks/SecurityAdvisorPanel.mjs";import{default as h}from"./packem_shared/ApiDocsPanel-fhDlZGE4.mjs";import{default as C}from"./packem_shared/ApiReferencePanel-CHoHM5ME.mjs";import{default as O}from"./packem_chunks/ApiTab.mjs";import{default as N}from"./packem_shared/OpenRpcReferencePanel-C8ctFJVm.mjs";import{DataBrowser as U}from"./packem_shared/DataBrowser-YscAF4OI.mjs";import{DataFilters as b,toFilterClauses as v}from"./packem_shared/DataFilters-CYZFt2EK.mjs";import{GlobalDataBrowser as y}from"./packem_shared/GlobalDataBrowser-DhObcZDY.mjs";import{TableEditor as q}from"./packem_chunks/TableEditor.mjs";import{ExportImportPanel as V}from"./packem_chunks/ExportImportPanel.mjs";import{MigrationsPanel as j}from"./packem_shared/MigrationsPanel-QjQ4Gp9s.mjs";import{PitrPanel as z}from"./packem_chunks/PitrPanel.mjs";import{FunctionRunner as Q}from"./packem_chunks/FunctionRunner.mjs";import{FunctionStatsPanel as Y}from"./packem_chunks/FunctionStatsPanel.mjs";import{DeploymentHealthPanel as $}from"./packem_chunks/DeploymentHealthPanel.mjs";import{H as oe}from"./packem_shared/home-panel-DBSHjxil.mjs";import{AuditPanel as te}from"./packem_chunks/AuditPanel.mjs";import{LogsPanel as fe}from"./packem_chunks/LogsPanel.mjs";import{MailPanel as me}from"./packem_chunks/MailPanel.mjs";import{ScheduledJobs as le}from"./packem_shared/ScheduledJobs-nPx7NmOE.mjs";import{default as se}from"./packem_chunks/NotificationsPanel.mjs";import{HealthPanel as de}from"./packem_chunks/HealthPanel.mjs";import{aggregateMetrics as Pe,shardsToAggregate as Se}from"./packem_shared/aggregateMetrics-
|
|
1
|
+
import{StudioApp as r}from"./packem_shared/StudioApp-DikgPBVJ.mjs";import{CommandPalette as a,openCommandPalette as f}from"./packem_shared/CommandPalette-D9ZY-qQd.mjs";import{S as m}from"./packem_shared/studio-ajWxPNfI.mjs";import{ConfirmButton as l}from"./packem_shared/ConfirmButton-DU4p72Er.mjs";import{default as s}from"./packem_shared/ConnectionBadge-B8Hj5DaE.mjs";import{ErrorBoundary as d}from"./packem_shared/ErrorBoundary-BWNF98VF.mjs";import{ShardInput as P}from"./packem_shared/ShardInput-C6mjgAh4.mjs";import{default as A}from"./packem_chunks/AdvisorHealthPanel.mjs";import{DEFAULT_INSIGHT_THRESHOLDS as I,deriveInsights as T}from"./packem_shared/DEFAULT_INSIGHT_THRESHOLDS-D5YMT0gM.mjs";import{InsightsPanel as g}from"./packem_chunks/InsightsPanel.mjs";import{default as F}from"./packem_chunks/SecurityAdvisorPanel.mjs";import{default as h}from"./packem_shared/ApiDocsPanel-fhDlZGE4.mjs";import{default as C}from"./packem_shared/ApiReferencePanel-CHoHM5ME.mjs";import{default as O}from"./packem_chunks/ApiTab.mjs";import{default as N}from"./packem_shared/OpenRpcReferencePanel-C8ctFJVm.mjs";import{DataBrowser as U}from"./packem_shared/DataBrowser-YscAF4OI.mjs";import{DataFilters as b,toFilterClauses as v}from"./packem_shared/DataFilters-CYZFt2EK.mjs";import{GlobalDataBrowser as y}from"./packem_shared/GlobalDataBrowser-DhObcZDY.mjs";import{TableEditor as q}from"./packem_chunks/TableEditor.mjs";import{ExportImportPanel as V}from"./packem_chunks/ExportImportPanel.mjs";import{MigrationsPanel as j}from"./packem_shared/MigrationsPanel-QjQ4Gp9s.mjs";import{PitrPanel as z}from"./packem_chunks/PitrPanel.mjs";import{FunctionRunner as Q}from"./packem_chunks/FunctionRunner.mjs";import{FunctionStatsPanel as Y}from"./packem_chunks/FunctionStatsPanel.mjs";import{DeploymentHealthPanel as $}from"./packem_chunks/DeploymentHealthPanel.mjs";import{H as oe}from"./packem_shared/home-panel-DBSHjxil.mjs";import{AuditPanel as te}from"./packem_chunks/AuditPanel.mjs";import{LogsPanel as fe}from"./packem_chunks/LogsPanel.mjs";import{MailPanel as me}from"./packem_chunks/MailPanel.mjs";import{ScheduledJobs as le}from"./packem_shared/ScheduledJobs-nPx7NmOE.mjs";import{default as se}from"./packem_chunks/NotificationsPanel.mjs";import{HealthPanel as de}from"./packem_chunks/HealthPanel.mjs";import{aggregateMetrics as Pe,shardsToAggregate as Se}from"./packem_shared/aggregateMetrics-DKFJc-o5.mjs";import{MetricsPanel as ce}from"./packem_chunks/MetricsPanel.mjs";import{SchemaViewer as Te}from"./packem_chunks/SchemaViewer.mjs";import{SettingsPanel as ge}from"./packem_chunks/SettingsPanel.mjs";import{SqlEditorPanel as Fe}from"./packem_chunks/SqlEditorPanel.mjs";import{FileBrowser as he}from"./packem_chunks/FileBrowser.mjs";import{DEFAULT_AUTO_REFRESH_MS as Ce,useAutoRefresh as He}from"./packem_shared/DEFAULT_AUTO_REFRESH_MS-DuULO4XM.mjs";import{default as Le}from"./packem_shared/useDebounced-DVeQ5-oW.mjs";import{DEFAULT_LOCALE as Me,createStudioI18n as Ue,studioI18n as Be,useT as be}from"./packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{StudioI18nProvider as we}from"./packem_shared/StudioI18nProvider-fVsCSs5L.mjs";import{ADMIN_FUNCTIONS as Ge,ADMIN_FUNCTION_PREFIX as qe}from"./packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{default as Ve}from"./packem_shared/STUDIO_ROOT_CLASS-C6MccdVk.mjs";export{Ge as ADMIN_FUNCTIONS,qe as ADMIN_FUNCTION_PREFIX,A as AdvisorHealthPanel,h as ApiDocsPanel,C as ApiReferencePanel,O as ApiTab,te as AuditPanel,a as CommandPalette,l as ConfirmButton,s as ConnectionBadge,Ce as DEFAULT_AUTO_REFRESH_MS,I as DEFAULT_INSIGHT_THRESHOLDS,Me as DEFAULT_LOCALE,U as DataBrowser,b as DataFilters,$ as DeploymentHealthPanel,d as ErrorBoundary,V as ExportImportPanel,he as FileBrowser,Q as FunctionRunner,Y as FunctionStatsPanel,y as GlobalDataBrowser,de as HealthPanel,oe as HomePanel,g as InsightsPanel,fe as LogsPanel,me as MailPanel,ce as MetricsPanel,j as MigrationsPanel,se as NotificationsPanel,N as OpenRpcReferencePanel,z as PitrPanel,Ve as STUDIO_ROOT_CLASS,le as ScheduledJobs,Te as SchemaViewer,F as SecurityAdvisorPanel,ge as SettingsPanel,P as ShardInput,Fe as SqlEditorPanel,m as Studio,r as StudioApp,we as StudioI18nProvider,q as TableEditor,Pe as aggregateMetrics,Ue as createStudioI18n,T as deriveInsights,f as openCommandPalette,Se as shardsToAggregate,Be as studioI18n,v as toFilterClauses,He as useAutoRefresh,Le as useDebounced,be as useT};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as ae}from"react/compiler-runtime";import{useLunora as pe}from"@lunora/react";import{useState as S,useRef as j,useCallback as ge,useEffect as Z}from"react";import xe from"../packem_shared/ConnectionBadge-B8Hj5DaE.mjs";import{L as ve}from"../packem_shared/live-status-BuJdUZFU.mjs";import{B as G}from"../packem_shared/badge-r_5B4LHP.mjs";import{C as _}from"../packem_shared/card--2hKx4L2.mjs";import{u as Ne}from"../packem_shared/use-admin-query-tlBof8Yg.mjs";import{useT as le}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{ADMIN_FUNCTIONS as R}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{h as be,f as K,d as ee,b as te,c as L}from"../packem_shared/internal-Df43vQI0.mjs";import{l as we}from"../packem_shared/shard-history-CaO3C4KQ.mjs";import{c as M}from"../packem_shared/utils-bhneXptQ.mjs";import{jsx as l,jsxs as u}from"react/jsx-runtime";import{shardsToAggregate as Ee}from"../packem_shared/aggregateMetrics-5zEJC6Ju.mjs";import{S as $}from"../packem_shared/sparkline-B_sPPO_8.mjs";const Se={crit:"destructive",ok:"secondary",warn:"default"},P=(s,e)=>e===0?"—":`${(s/e*100).toFixed(1)}%`,z=(s,e,r)=>Number.isNaN(s)?"ok":s>=r?"crit":s>=e?"warn":"ok",ne=.01,oe=.05,ye=s=>{const e=ae(36),{errorCount:r,logsError:t,topErrors:a,worstFunctions:m}=s,o=le();let n;e[0]!==o?(n=o("Functions by error rate"),e[0]=o,e[1]=n):n=e[1];let f;e[2]!==n?(f=l("header",{className:"border-b border-border px-4 py-3",children:l("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:n})}),e[2]=n,e[3]=f):f=e[3];let d;e[4]!==o||e[5]!==m?(d=m.length===0?l("p",{className:"px-4 py-8 text-center text-sm text-muted-foreground","data-testid":"hl-functions-empty",children:o("No function activity yet.")}):l("ul",{className:"divide-y divide-border",children:m.map(w=>u("li",{className:"flex flex-wrap items-center justify-between gap-2 px-4 py-2 text-xs","data-testid":"hl-fn-row",children:[l("span",{className:"truncate font-mono text-foreground",children:w.path}),u("span",{className:"flex shrink-0 items-center gap-2",children:[l("span",{className:"tabular-nums text-muted-foreground",children:o("{count} calls",{count:w.calls.toString()})}),l(G,{variant:Se[z(w.errors/w.calls,ne,oe)],children:P(w.errors,w.calls)})]})]},w.path))}),e[4]=o,e[5]=m,e[6]=d):d=e[6];let h;e[7]!==f||e[8]!==d?(h=u(_,{className:"gap-0 py-0","data-testid":"hl-functions",children:[f,d]}),e[7]=f,e[8]=d,e[9]=h):h=e[9];let x;e[10]!==o?(x=o("Recent errors"),e[10]=o,e[11]=x):x=e[11];let i;e[12]!==x?(i=l("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:x}),e[12]=x,e[13]=i):i=e[13];const c=r>0?"destructive":"outline";let p;e[14]!==r||e[15]!==c?(p=l(G,{"data-testid":"hl-error-count",variant:c,children:r}),e[14]=r,e[15]=c,e[16]=p):p=e[16];let g;e[17]!==i||e[18]!==p?(g=u("header",{className:"flex items-center justify-between gap-2 border-b border-border px-4 py-3",children:[i,p]}),e[17]=i,e[18]=p,e[19]=g):g=e[19];let y;e[20]!==t?(y=t!==null&&l("p",{className:"px-4 py-8 text-center text-sm text-destructive","data-testid":"hl-logs-error",role:"alert",children:t}),e[20]=t,e[21]=y):y=e[21];let T;e[22]!==t||e[23]!==o||e[24]!==a.length?(T=t===null&&a.length===0&&l("p",{className:"px-4 py-8 text-center text-sm text-muted-foreground","data-testid":"hl-errors-empty",children:o("No recent errors.")}),e[22]=t,e[23]=o,e[24]=a.length,e[25]=T):T=e[25];let A;e[26]!==a?(A=a.length>0&&l("ul",{className:"divide-y divide-border",children:a.map(Te)}),e[26]=a,e[27]=A):A=e[27];let N;e[28]!==y||e[29]!==T||e[30]!==A||e[31]!==g?(N=u(_,{className:"gap-0 py-0",children:[g,y,T,A]}),e[28]=y,e[29]=T,e[30]=A,e[31]=g,e[32]=N):N=e[32];let E;return e[33]!==N||e[34]!==h?(E=u("div",{className:"grid gap-3 lg:grid-cols-2",children:[h,N]}),e[33]=N,e[34]=h,e[35]=E):E=e[35],E};function Te(s,e){return u("li",{className:"flex flex-col gap-0.5 px-4 py-2 text-xs","data-testid":"hl-error-row",children:[u("span",{className:"flex items-center gap-2",children:[l("time",{className:"shrink-0 text-muted-foreground",children:be(s.timestamp)}),s.functionPath!==void 0&&l("span",{className:"truncate font-mono text-foreground",children:s.functionPath})]}),l("span",{className:"text-destructive",children:s.message})]},`${s.timestamp.toString()}-${e.toString()}`)}const re={completed:0,failed:2,in_progress:1},Ae=s=>{let e=0,r=0,t=0,a=0,m=!1;const o=[];for(const{metrics:n}of s){if(n===null){a+=1;continue}t+=1,e+=n.requests,r+=n.errors,o.push(...n.history??[]),m||=n.historyTruncated===!0}return{errors:r,failed:a,history:o,historyTruncated:m,reachable:t,requests:e}},ke=s=>{const e=new Map;for(const r of s)for(const t of r){const a=e.get(t.path);if(a===void 0){e.set(t.path,{...t});continue}a.calls+=t.calls,a.errors+=t.errors,a.totalDurationMs+=t.totalDurationMs,a.scans=(a.scans??0)+(t.scans??0),a.maxDurationMs=Math.max(a.maxDurationMs,t.maxDurationMs),a.lastCalledAt=Math.max(a.lastCalledAt,t.lastCalledAt),(t.lastErrorAt??0)>(a.lastErrorAt??0)&&(a.lastErrorAt=t.lastErrorAt,a.lastErrorMessage=t.lastErrorMessage)}return[...e.values()]},Re=s=>{const e=new Map;for(const r of s)for(const t of r){const a=e.get(t.id);if(a===void 0){e.set(t.id,t);continue}const m=re[t.status]-re[a.status];(m>0||m===0&&(t.updatedAt??0)>(a.updatedAt??0))&&e.set(t.id,t)}return[...e.values()]},Me=L(R.getAuthMetrics),_e=L(R.getFunctionStats),Le=L(R.getLogs),Ie=L(R.getMetrics),Ce=L(R.migrationStatus),qe=5,se=2e3,Oe=5,Fe=.1,De=.3,je=1,Ue=50,Pe=(s,e,r)=>s>=r?"crit":s>=e?"warn":"ok",Ge=s=>{const e=new Map;for(const t of s??[]){const a=e.get(t.bucketMs)??{calls:0,errors:0};a.calls+=t.calls,a.errors+=t.errors,e.set(t.bucketMs,a)}const r=[...e.entries()].toSorted((t,a)=>t[0]-a[0]);return{errors:r.map(([,t])=>t.errors),requests:r.map(([,t])=>t.calls)}},Ve=s=>{let e=0,r=0;for(const a of s)a.status==="failed"?e+=1:a.status==="in_progress"&&(r+=1);let t="ok";return e>0?t="crit":r>0&&(t="warn"),{failed:e,level:t,running:r}},Be=(s,e)=>s.failed>0?e("{count} failed",{count:s.failed.toString()}):s.running>0?e("{count} running",{count:s.running.toString()}):e("OK"),ie={crit:"bg-destructive",ok:"bg-success",warn:"bg-warning"},ce={crit:"text-destructive",ok:"text-foreground",warn:"text-warning"},He={crit:"bg-destructive/10 text-destructive",ok:"bg-success/10 text-success",warn:"bg-warning/10 text-warning"},Ke=s=>s.includes("crit")?"crit":s.includes("warn")?"warn":"ok",U=s=>{const e=ae(19),{chart:r,label:t,level:a,testId:m,value:o}=s,n=ie[a];let f;e[0]!==n?(f=M("size-1.5 shrink-0 rounded-full",n),e[0]=n,e[1]=f):f=e[1];let d;e[2]!==f?(d=l("span",{"aria-hidden":"true",className:f}),e[2]=f,e[3]=d):d=e[3];let h;e[4]!==t||e[5]!==d?(h=u("span",{className:"flex items-center gap-1.5 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:[d,t]}),e[4]=t,e[5]=d,e[6]=h):h=e[6];const x=ce[a];let i;e[7]!==x?(i=M("truncate text-2xl font-semibold tabular-nums",x),e[7]=x,e[8]=i):i=e[8];let c;e[9]!==i||e[10]!==m||e[11]!==o?(c=l("span",{className:i,"data-testid":m,children:o}),e[9]=i,e[10]=m,e[11]=o,e[12]=c):c=e[12];let p;e[13]!==r||e[14]!==c?(p=u("div",{className:"flex items-center justify-between gap-3",children:[c,r]}),e[13]=r,e[14]=c,e[15]=p):p=e[15];let g;return e[16]!==h||e[17]!==p?(g=l(_,{className:"gap-0 py-0",children:u("div",{className:"flex flex-col gap-2.5 p-4",children:[h,p]})}),e[16]=h,e[17]=p,e[18]=g):g=e[18],g},$e=async(s,e,r)=>{const t=await Promise.all(r.map(i=>{const c=ee(i);return Promise.allSettled([s.query(Ie,{},c),s.query(_e,{},c),s.query(Ce,{},c)])})),a=ee(e),m=typeof s.schedulerStatus=="function"?s.schedulerStatus():Promise.reject(new Error("scheduler status unavailable")),[o,n,f]=await Promise.allSettled([s.query(Le,{},a),s.query(Me,{},a),m]),d=t.map(([i,c,p])=>({functions:c.status==="fulfilled"?c.value.functions:[],metrics:i.status==="fulfilled"?i.value:null,migrations:p.status==="fulfilled"?p.value.migrations:[]})),h=Ae(d),x=t[0]?.[0];return{auth:n.status==="fulfilled"?n.value:null,entries:o.status==="fulfilled"?o.value.entries:[],functions:ke(d.map(i=>i.functions)),logsError:o.status==="rejected"?te(o.reason):null,metricsError:h.reachable===0&&x?.status==="rejected"?te(x.reason):null,migrations:Re(d.map(i=>i.migrations)),scheduler:f.status==="fulfilled"?f.value:null,totals:h}},ze=s=>{const e=s?.history??[];return{attempts:e.map(r=>r.attempts),failures:e.map(r=>r.failures)}},ut=({initialShardKey:s})=>{const e=pe(),r=le(),[t,a]=S([]),[m,o]=S(null),[n,f]=S(null),[d,h]=S(null),[x,i]=S([]),[c,p]=S(null),[g,y]=S(null),[T,A]=S([]),[N]=S(we),E=j(!1),w=j(0),V=j(0),k=j(null),I=s??"",C=ge(async()=>{if(E.current)return;E.current=!0;const v=w.current,b=await $e(e,I,Ee(I,N));v===w.current&&(f(b.totals),h(b.metricsError),i(b.functions),A(b.migrations),a(b.entries),o(b.logsError),p(b.auth),y(b.scheduler),E.current=!1)},[e,N,I]);Z(()=>(K(C()),()=>{w.current+=1,E.current=!1,k.current!==null&&(clearTimeout(k.current),k.current=null)}),[C]);const ue=()=>{const v=Date.now()-V.current;if(v>=se){V.current=Date.now(),K(C());return}k.current===null&&(k.current=setTimeout(()=>{k.current=null,V.current=Date.now(),K(C())},se-v))},{data:Q,liveError:de}=Ne(R.getMetrics,{},{live:!0,shardKey:I});Z(()=>{Q!==void 0&&ue()},[Q]);const W=t.filter(v=>v.level==="error"),me=W.slice(0,qe),q=Ge(n?.history),X=ze(c),fe=x.filter(v=>v.calls>0).toSorted((v,b)=>b.errors/b.calls-v.errors/v.calls||b.calls-v.calls).slice(0,Oe),B=Ve(T),he=n===null||n.requests===0?0:n.errors/n.requests,H=z(he,ne,oe),J=c===null?"ok":z(c.failureRate,Fe,De),Y=g===null?"ok":Pe(g.backlog,je,Ue),O=Ke([H,J,Y,B.level]);let F,D;return O==="crit"?(F=r("Critical"),D=r("One or more service levels are breached.")):O==="warn"?(F=r("Degraded"),D=r("Some service levels need attention.")):(F=r("All systems healthy"),D=r("All service levels are within target.")),u("div",{className:"flex flex-col gap-6","data-testid":"lunora-health",children:[u(_,{className:"gap-0 py-0",children:[u("div",{className:"flex flex-wrap items-center justify-between gap-4 p-4",children:[u("div",{className:"flex items-center gap-3",children:[l("span",{"aria-hidden":"true",className:M("flex size-10 shrink-0 items-center justify-center rounded-full",He[O]),children:l("span",{className:M("size-3 rounded-full",ie[O])})}),u("div",{className:"grid leading-tight",children:[l("span",{className:"text-sm font-semibold text-foreground","data-testid":"hl-status",children:F}),l("span",{className:"text-[13px] text-muted-foreground",children:D})]})]}),u("div",{className:"flex flex-wrap items-center gap-4",children:[u("div",{className:"text-end",children:[l("div",{className:"font-mono text-[10px] tracking-wide text-muted-foreground uppercase",children:r("Requests")}),u("div",{className:"flex items-center justify-end gap-2",children:[q.requests.length>=2&&l($,{ariaLabel:r("Requests over time"),className:"h-6 w-20 text-foreground",series:q.requests,testId:"hl-spark-requests"}),l("span",{className:"text-lg font-semibold tabular-nums text-foreground","data-testid":"hl-requests",children:(n?.requests??0).toString()})]})]}),l("span",{"aria-hidden":"true",className:"h-9 w-px bg-border"}),u("div",{className:"text-end",children:[l("div",{className:"font-mono text-[10px] tracking-wide text-muted-foreground uppercase",children:r("Error rate")}),l("div",{className:M("text-lg font-semibold tabular-nums",ce[H]),"data-testid":"hl-error-rate",children:n===null?"—":P(n.errors,n.requests)})]}),l("span",{"aria-hidden":"true",className:"h-9 w-px bg-border"}),u("div",{className:"flex items-center gap-2",children:[l(xe,{}),l(ve,{message:de,prefix:"hl"})]})]})]}),d!==null&&l("div",{className:"border-t border-border bg-destructive/5 px-4 py-2 text-sm text-destructive","data-testid":"hl-metrics-error",role:"alert",children:d}),d===null&&n?.historyTruncated===!0&&l("div",{className:"border-t border-border bg-warning/5 px-4 py-2 text-sm text-muted-foreground","data-testid":"hl-history-truncated",children:r("Showing a partial request/error history — one or more shards have more data than the trend chart can display.")})]}),u("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-4","data-testid":"hl-slo",children:[l(U,{chart:q.errors.length>=2?l($,{ariaLabel:r("Errors over time"),className:"h-7 w-20 text-destructive",series:q.errors,testId:"hl-spark-errors"}):void 0,label:r("Error rate"),level:H,testId:"hl-slo-errorrate",value:n===null?"—":P(n.errors,n.requests)}),l(U,{chart:X.failures.length>=2?l($,{ariaLabel:r("Auth failures over time"),className:"h-7 w-20 text-destructive",series:X.failures,testId:"hl-spark-auth"}):void 0,label:r("Auth failures"),level:J,testId:"hl-slo-auth",value:c===null?"—":P(c.failures,c.attempts)}),l(U,{label:r("Scheduler backlog"),level:Y,testId:"hl-slo-backlog",value:g===null?"—":g.backlog.toString()}),l(U,{label:r("Migrations"),level:B.level,testId:"hl-slo-migrations",value:Be(B,r)})]}),l(ye,{errorCount:W.length,logsError:m,topErrors:me,worstFunctions:fe}),u(_,{className:"gap-0 py-0",children:[u("header",{className:"flex items-center justify-between gap-2 border-b border-border px-4 py-3",children:[l("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:r("Shards seen")}),l(G,{"data-testid":"hl-shard-count",variant:"outline",children:N.length})]}),N.length>0&&l("ul",{className:"flex flex-wrap gap-1.5 p-4",children:N.map(v=>l("li",{"data-testid":"hl-shard",children:l(G,{variant:"secondary",children:v})},v))})]})]})};export{ut as HealthPanel};
|
|
1
|
+
import{c as ae}from"react/compiler-runtime";import{useLunora as pe}from"@lunora/react";import{useState as S,useRef as j,useCallback as ge,useEffect as Z}from"react";import xe from"../packem_shared/ConnectionBadge-B8Hj5DaE.mjs";import{L as ve}from"../packem_shared/live-status-BuJdUZFU.mjs";import{B as G}from"../packem_shared/badge-r_5B4LHP.mjs";import{C as _}from"../packem_shared/card--2hKx4L2.mjs";import{u as Ne}from"../packem_shared/use-admin-query-tlBof8Yg.mjs";import{useT as le}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{ADMIN_FUNCTIONS as R}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{h as be,f as K,d as ee,b as te,c as L}from"../packem_shared/internal-Df43vQI0.mjs";import{l as we}from"../packem_shared/shard-history-CaO3C4KQ.mjs";import{c as M}from"../packem_shared/utils-bhneXptQ.mjs";import{jsx as l,jsxs as u}from"react/jsx-runtime";import{shardsToAggregate as Ee}from"../packem_shared/aggregateMetrics-DKFJc-o5.mjs";import{S as $}from"../packem_shared/sparkline-B_sPPO_8.mjs";const Se={crit:"destructive",ok:"secondary",warn:"default"},P=(s,e)=>e===0?"—":`${(s/e*100).toFixed(1)}%`,z=(s,e,r)=>Number.isNaN(s)?"ok":s>=r?"crit":s>=e?"warn":"ok",ne=.01,oe=.05,ye=s=>{const e=ae(36),{errorCount:r,logsError:t,topErrors:a,worstFunctions:m}=s,o=le();let n;e[0]!==o?(n=o("Functions by error rate"),e[0]=o,e[1]=n):n=e[1];let f;e[2]!==n?(f=l("header",{className:"border-b border-border px-4 py-3",children:l("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:n})}),e[2]=n,e[3]=f):f=e[3];let d;e[4]!==o||e[5]!==m?(d=m.length===0?l("p",{className:"px-4 py-8 text-center text-sm text-muted-foreground","data-testid":"hl-functions-empty",children:o("No function activity yet.")}):l("ul",{className:"divide-y divide-border",children:m.map(w=>u("li",{className:"flex flex-wrap items-center justify-between gap-2 px-4 py-2 text-xs","data-testid":"hl-fn-row",children:[l("span",{className:"truncate font-mono text-foreground",children:w.path}),u("span",{className:"flex shrink-0 items-center gap-2",children:[l("span",{className:"tabular-nums text-muted-foreground",children:o("{count} calls",{count:w.calls.toString()})}),l(G,{variant:Se[z(w.errors/w.calls,ne,oe)],children:P(w.errors,w.calls)})]})]},w.path))}),e[4]=o,e[5]=m,e[6]=d):d=e[6];let h;e[7]!==f||e[8]!==d?(h=u(_,{className:"gap-0 py-0","data-testid":"hl-functions",children:[f,d]}),e[7]=f,e[8]=d,e[9]=h):h=e[9];let x;e[10]!==o?(x=o("Recent errors"),e[10]=o,e[11]=x):x=e[11];let i;e[12]!==x?(i=l("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:x}),e[12]=x,e[13]=i):i=e[13];const c=r>0?"destructive":"outline";let p;e[14]!==r||e[15]!==c?(p=l(G,{"data-testid":"hl-error-count",variant:c,children:r}),e[14]=r,e[15]=c,e[16]=p):p=e[16];let g;e[17]!==i||e[18]!==p?(g=u("header",{className:"flex items-center justify-between gap-2 border-b border-border px-4 py-3",children:[i,p]}),e[17]=i,e[18]=p,e[19]=g):g=e[19];let y;e[20]!==t?(y=t!==null&&l("p",{className:"px-4 py-8 text-center text-sm text-destructive","data-testid":"hl-logs-error",role:"alert",children:t}),e[20]=t,e[21]=y):y=e[21];let T;e[22]!==t||e[23]!==o||e[24]!==a.length?(T=t===null&&a.length===0&&l("p",{className:"px-4 py-8 text-center text-sm text-muted-foreground","data-testid":"hl-errors-empty",children:o("No recent errors.")}),e[22]=t,e[23]=o,e[24]=a.length,e[25]=T):T=e[25];let A;e[26]!==a?(A=a.length>0&&l("ul",{className:"divide-y divide-border",children:a.map(Te)}),e[26]=a,e[27]=A):A=e[27];let N;e[28]!==y||e[29]!==T||e[30]!==A||e[31]!==g?(N=u(_,{className:"gap-0 py-0",children:[g,y,T,A]}),e[28]=y,e[29]=T,e[30]=A,e[31]=g,e[32]=N):N=e[32];let E;return e[33]!==N||e[34]!==h?(E=u("div",{className:"grid gap-3 lg:grid-cols-2",children:[h,N]}),e[33]=N,e[34]=h,e[35]=E):E=e[35],E};function Te(s,e){return u("li",{className:"flex flex-col gap-0.5 px-4 py-2 text-xs","data-testid":"hl-error-row",children:[u("span",{className:"flex items-center gap-2",children:[l("time",{className:"shrink-0 text-muted-foreground",children:be(s.timestamp)}),s.functionPath!==void 0&&l("span",{className:"truncate font-mono text-foreground",children:s.functionPath})]}),l("span",{className:"text-destructive",children:s.message})]},`${s.timestamp.toString()}-${e.toString()}`)}const re={completed:0,failed:2,in_progress:1},Ae=s=>{let e=0,r=0,t=0,a=0,m=!1;const o=[];for(const{metrics:n}of s){if(n===null){a+=1;continue}t+=1,e+=n.requests,r+=n.errors,o.push(...n.history??[]),m||=n.historyTruncated===!0}return{errors:r,failed:a,history:o,historyTruncated:m,reachable:t,requests:e}},ke=s=>{const e=new Map;for(const r of s)for(const t of r){const a=e.get(t.path);if(a===void 0){e.set(t.path,{...t});continue}a.calls+=t.calls,a.errors+=t.errors,a.totalDurationMs+=t.totalDurationMs,a.scans=(a.scans??0)+(t.scans??0),a.maxDurationMs=Math.max(a.maxDurationMs,t.maxDurationMs),a.lastCalledAt=Math.max(a.lastCalledAt,t.lastCalledAt),(t.lastErrorAt??0)>(a.lastErrorAt??0)&&(a.lastErrorAt=t.lastErrorAt,a.lastErrorMessage=t.lastErrorMessage)}return[...e.values()]},Re=s=>{const e=new Map;for(const r of s)for(const t of r){const a=e.get(t.id);if(a===void 0){e.set(t.id,t);continue}const m=re[t.status]-re[a.status];(m>0||m===0&&(t.updatedAt??0)>(a.updatedAt??0))&&e.set(t.id,t)}return[...e.values()]},Me=L(R.getAuthMetrics),_e=L(R.getFunctionStats),Le=L(R.getLogs),Ie=L(R.getMetrics),Ce=L(R.migrationStatus),qe=5,se=2e3,Oe=5,Fe=.1,De=.3,je=1,Ue=50,Pe=(s,e,r)=>s>=r?"crit":s>=e?"warn":"ok",Ge=s=>{const e=new Map;for(const t of s??[]){const a=e.get(t.bucketMs)??{calls:0,errors:0};a.calls+=t.calls,a.errors+=t.errors,e.set(t.bucketMs,a)}const r=[...e.entries()].toSorted((t,a)=>t[0]-a[0]);return{errors:r.map(([,t])=>t.errors),requests:r.map(([,t])=>t.calls)}},Ve=s=>{let e=0,r=0;for(const a of s)a.status==="failed"?e+=1:a.status==="in_progress"&&(r+=1);let t="ok";return e>0?t="crit":r>0&&(t="warn"),{failed:e,level:t,running:r}},Be=(s,e)=>s.failed>0?e("{count} failed",{count:s.failed.toString()}):s.running>0?e("{count} running",{count:s.running.toString()}):e("OK"),ie={crit:"bg-destructive",ok:"bg-success",warn:"bg-warning"},ce={crit:"text-destructive",ok:"text-foreground",warn:"text-warning"},He={crit:"bg-destructive/10 text-destructive",ok:"bg-success/10 text-success",warn:"bg-warning/10 text-warning"},Ke=s=>s.includes("crit")?"crit":s.includes("warn")?"warn":"ok",U=s=>{const e=ae(19),{chart:r,label:t,level:a,testId:m,value:o}=s,n=ie[a];let f;e[0]!==n?(f=M("size-1.5 shrink-0 rounded-full",n),e[0]=n,e[1]=f):f=e[1];let d;e[2]!==f?(d=l("span",{"aria-hidden":"true",className:f}),e[2]=f,e[3]=d):d=e[3];let h;e[4]!==t||e[5]!==d?(h=u("span",{className:"flex items-center gap-1.5 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:[d,t]}),e[4]=t,e[5]=d,e[6]=h):h=e[6];const x=ce[a];let i;e[7]!==x?(i=M("truncate text-2xl font-semibold tabular-nums",x),e[7]=x,e[8]=i):i=e[8];let c;e[9]!==i||e[10]!==m||e[11]!==o?(c=l("span",{className:i,"data-testid":m,children:o}),e[9]=i,e[10]=m,e[11]=o,e[12]=c):c=e[12];let p;e[13]!==r||e[14]!==c?(p=u("div",{className:"flex items-center justify-between gap-3",children:[c,r]}),e[13]=r,e[14]=c,e[15]=p):p=e[15];let g;return e[16]!==h||e[17]!==p?(g=l(_,{className:"gap-0 py-0",children:u("div",{className:"flex flex-col gap-2.5 p-4",children:[h,p]})}),e[16]=h,e[17]=p,e[18]=g):g=e[18],g},$e=async(s,e,r)=>{const t=await Promise.all(r.map(i=>{const c=ee(i);return Promise.allSettled([s.query(Ie,{},c),s.query(_e,{},c),s.query(Ce,{},c)])})),a=ee(e),m=typeof s.schedulerStatus=="function"?s.schedulerStatus():Promise.reject(new Error("scheduler status unavailable")),[o,n,f]=await Promise.allSettled([s.query(Le,{},a),s.query(Me,{},a),m]),d=t.map(([i,c,p])=>({functions:c.status==="fulfilled"?c.value.functions:[],metrics:i.status==="fulfilled"?i.value:null,migrations:p.status==="fulfilled"?p.value.migrations:[]})),h=Ae(d),x=t[0]?.[0];return{auth:n.status==="fulfilled"?n.value:null,entries:o.status==="fulfilled"?o.value.entries:[],functions:ke(d.map(i=>i.functions)),logsError:o.status==="rejected"?te(o.reason):null,metricsError:h.reachable===0&&x?.status==="rejected"?te(x.reason):null,migrations:Re(d.map(i=>i.migrations)),scheduler:f.status==="fulfilled"?f.value:null,totals:h}},ze=s=>{const e=s?.history??[];return{attempts:e.map(r=>r.attempts),failures:e.map(r=>r.failures)}},ut=({initialShardKey:s})=>{const e=pe(),r=le(),[t,a]=S([]),[m,o]=S(null),[n,f]=S(null),[d,h]=S(null),[x,i]=S([]),[c,p]=S(null),[g,y]=S(null),[T,A]=S([]),[N]=S(we),E=j(!1),w=j(0),V=j(0),k=j(null),I=s??"",C=ge(async()=>{if(E.current)return;E.current=!0;const v=w.current,b=await $e(e,I,Ee(I,N));v===w.current&&(f(b.totals),h(b.metricsError),i(b.functions),A(b.migrations),a(b.entries),o(b.logsError),p(b.auth),y(b.scheduler),E.current=!1)},[e,N,I]);Z(()=>(K(C()),()=>{w.current+=1,E.current=!1,k.current!==null&&(clearTimeout(k.current),k.current=null)}),[C]);const ue=()=>{const v=Date.now()-V.current;if(v>=se){V.current=Date.now(),K(C());return}k.current===null&&(k.current=setTimeout(()=>{k.current=null,V.current=Date.now(),K(C())},se-v))},{data:Q,liveError:de}=Ne(R.getMetrics,{},{live:!0,shardKey:I});Z(()=>{Q!==void 0&&ue()},[Q]);const W=t.filter(v=>v.level==="error"),me=W.slice(0,qe),q=Ge(n?.history),X=ze(c),fe=x.filter(v=>v.calls>0).toSorted((v,b)=>b.errors/b.calls-v.errors/v.calls||b.calls-v.calls).slice(0,Oe),B=Ve(T),he=n===null||n.requests===0?0:n.errors/n.requests,H=z(he,ne,oe),J=c===null?"ok":z(c.failureRate,Fe,De),Y=g===null?"ok":Pe(g.backlog,je,Ue),O=Ke([H,J,Y,B.level]);let F,D;return O==="crit"?(F=r("Critical"),D=r("One or more service levels are breached.")):O==="warn"?(F=r("Degraded"),D=r("Some service levels need attention.")):(F=r("All systems healthy"),D=r("All service levels are within target.")),u("div",{className:"flex flex-col gap-6","data-testid":"lunora-health",children:[u(_,{className:"gap-0 py-0",children:[u("div",{className:"flex flex-wrap items-center justify-between gap-4 p-4",children:[u("div",{className:"flex items-center gap-3",children:[l("span",{"aria-hidden":"true",className:M("flex size-10 shrink-0 items-center justify-center rounded-full",He[O]),children:l("span",{className:M("size-3 rounded-full",ie[O])})}),u("div",{className:"grid leading-tight",children:[l("span",{className:"text-sm font-semibold text-foreground","data-testid":"hl-status",children:F}),l("span",{className:"text-[13px] text-muted-foreground",children:D})]})]}),u("div",{className:"flex flex-wrap items-center gap-4",children:[u("div",{className:"text-end",children:[l("div",{className:"font-mono text-[10px] tracking-wide text-muted-foreground uppercase",children:r("Requests")}),u("div",{className:"flex items-center justify-end gap-2",children:[q.requests.length>=2&&l($,{ariaLabel:r("Requests over time"),className:"h-6 w-20 text-foreground",series:q.requests,testId:"hl-spark-requests"}),l("span",{className:"text-lg font-semibold tabular-nums text-foreground","data-testid":"hl-requests",children:(n?.requests??0).toString()})]})]}),l("span",{"aria-hidden":"true",className:"h-9 w-px bg-border"}),u("div",{className:"text-end",children:[l("div",{className:"font-mono text-[10px] tracking-wide text-muted-foreground uppercase",children:r("Error rate")}),l("div",{className:M("text-lg font-semibold tabular-nums",ce[H]),"data-testid":"hl-error-rate",children:n===null?"—":P(n.errors,n.requests)})]}),l("span",{"aria-hidden":"true",className:"h-9 w-px bg-border"}),u("div",{className:"flex items-center gap-2",children:[l(xe,{}),l(ve,{message:de,prefix:"hl"})]})]})]}),d!==null&&l("div",{className:"border-t border-border bg-destructive/5 px-4 py-2 text-sm text-destructive","data-testid":"hl-metrics-error",role:"alert",children:d}),d===null&&n?.historyTruncated===!0&&l("div",{className:"border-t border-border bg-warning/5 px-4 py-2 text-sm text-muted-foreground","data-testid":"hl-history-truncated",children:r("Showing a partial request/error history — one or more shards have more data than the trend chart can display.")})]}),u("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-4","data-testid":"hl-slo",children:[l(U,{chart:q.errors.length>=2?l($,{ariaLabel:r("Errors over time"),className:"h-7 w-20 text-destructive",series:q.errors,testId:"hl-spark-errors"}):void 0,label:r("Error rate"),level:H,testId:"hl-slo-errorrate",value:n===null?"—":P(n.errors,n.requests)}),l(U,{chart:X.failures.length>=2?l($,{ariaLabel:r("Auth failures over time"),className:"h-7 w-20 text-destructive",series:X.failures,testId:"hl-spark-auth"}):void 0,label:r("Auth failures"),level:J,testId:"hl-slo-auth",value:c===null?"—":P(c.failures,c.attempts)}),l(U,{label:r("Scheduler backlog"),level:Y,testId:"hl-slo-backlog",value:g===null?"—":g.backlog.toString()}),l(U,{label:r("Migrations"),level:B.level,testId:"hl-slo-migrations",value:Be(B,r)})]}),l(ye,{errorCount:W.length,logsError:m,topErrors:me,worstFunctions:fe}),u(_,{className:"gap-0 py-0",children:[u("header",{className:"flex items-center justify-between gap-2 border-b border-border px-4 py-3",children:[l("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:r("Shards seen")}),l(G,{"data-testid":"hl-shard-count",variant:"outline",children:N.length})]}),N.length>0&&l("ul",{className:"flex flex-wrap gap-1.5 p-4",children:N.map(v=>l("li",{"data-testid":"hl-shard",children:l(G,{variant:"secondary",children:v})},v))})]})]})};export{ut as HealthPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useLunora as pt}from"@lunora/react";import{useState as pe,useRef as Ge,useEffect as tt,useMemo as xt}from"react";import{L as bt}from"../packem_shared/live-status-BuJdUZFU.mjs";import{ShardInput as yt}from"../packem_shared/ShardInput-C6mjgAh4.mjs";import{B as rt}from"../packem_shared/button-q0UYSmrn.mjs";import{u as Ue}from"../packem_shared/use-admin-query-tlBof8Yg.mjs";import{u as vt}from"../packem_shared/use-open-trace-DMVhpnyG.mjs";import{u as Nt}from"../packem_shared/use-shard-key-BsP3o5wT.mjs";import{useT as xe}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{ADMIN_FUNCTIONS as Oe}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{c as St}from"../packem_shared/cf-links-CBJ5SywP.mjs";import{i as wt,m as Xe,f as qt,d as Tt,b as _t,c as Ct}from"../packem_shared/internal-Df43vQI0.mjs";import{r as kt,l as Rt}from"../packem_shared/shard-history-CaO3C4KQ.mjs";import{c as Ae}from"react/compiler-runtime";import{f as $t}from"../packem_shared/log-fields-SBxKyBug.mjs";import{B as et}from"../packem_shared/badge-r_5B4LHP.mjs";import{C as he,a as ge,c as Be,d as Mt,b as je}from"../packem_shared/card--2hKx4L2.mjs";import{b as Je,e as oe,T as dt,c as de,a as mt,d as ut}from"../packem_shared/table-D0SBiDu-.mjs";import{S as ft}from"../packem_shared/sparkline-B_sPPO_8.mjs";import{jsxs as n,jsx as t,Fragment as Ye}from"react/jsx-runtime";import{aggregateMetrics as It,computeLatencyPercentiles as Dt,enrichQueryStats as Ft,shardsToAggregate as At}from"../packem_shared/aggregateMetrics-5zEJC6Ju.mjs";import{S as me}from"../packem_shared/stat-card-D0Fe04cX.mjs";import{ResponsiveContainer as st,AreaChart as Et,CartesianGrid as lt,XAxis as at,YAxis as it,Tooltip as nt,Area as Ot,LineChart as Lt,Line as zt}from"recharts";import{E as Kt}from"../packem_shared/empty-state-D7jEML_T.mjs";import{c as Pt}from"../packem_shared/utils-bhneXptQ.mjs";import{S as Bt,a as jt,c as Qe,b as Qt,d as Ht}from"../packem_shared/select-DPyS18Vy.mjs";const Ut=/["\\\u0000-\u001F\uD800-\uDFFF]/,ot=l=>Ut.test(l)?JSON.stringify(l):`"${l}"`,Ze=l=>{if(l===void 0)return"null";if(typeof l=="bigint")throw new TypeError("stableStringify: cannot use a bigint in a stable JSON cache key — pass it as a string, or use stableWireKey");if(typeof l=="number"){if(Number.isNaN(l))return"nan";if(l===1/0)return"inf";if(l===-1/0)return"-inf";if(Object.is(l,-0))return"-0"}if(typeof l=="string")return ot(l);if(l===null||typeof l!="object")return JSON.stringify(l);if(Array.isArray(l)){let o="[";for(let a=0;a<l.length;a++)a>0&&(o+=","),o+=Ze(l[a]);return o+"]"}const e=Object.getPrototypeOf(l);if(e!==null&&e!==Object.prototype){const o=l.constructor?.name??"value";throw new TypeError(`stableStringify: cannot use a ${o} in a stable JSON cache key — only plain objects, arrays, and JSON primitives are supported (wire-typed values key via stableWireKey)`)}const i=l,s=Object.keys(i).sort();let r="{",u=!0;for(const o of s){const a=i[o];a!==void 0&&(u?u=!1:r+=",",r+=ot(o),r+=":",r+=Ze(a))}return r+"}"},ht=(l,e,i)=>`${l}:${e}:${Ze(i??{})}`,gt=(l,e)=>l==="gauge"?e.last:l==="histogram"?e.sum/Math.max(1,e.count):e.sum,Jt=(l,e)=>gt(l,e),Vt=l=>gt(l.kind,l),We=l=>Number.isInteger(l)?l.toLocaleString():l.toLocaleString(void 0,{maximumFractionDigits:2}),Gt=l=>Array.isArray(l?.series)?l.series:[],Wt="FUNCTION_NOT_FOUND",Xt=l=>{const e=new Map;if(!Array.isArray(l?.series))return e;for(const i of l.series)e.set(ht(i.kind,i.name,i.attributes),i.points);return e},Yt={counter:"secondary",gauge:"default",histogram:"outline"},Zt=l=>{const e=Ae(18),{name:i,onOpenTrace:s,traceId:r}=l,u=xe();if(r===void 0){let d;return e[0]===Symbol.for("react.memo_cache_sentinel")?(d=t("span",{className:"text-muted-foreground",children:"—"}),e[0]=d):d=e[0],d}let o;e[1]!==r?(o=r.slice(0,8),e[1]=r,e[2]=o):o=e[2];const a=o;if(s===void 0){const d=`mt-instrument-trace-${i}`;let p;return e[3]!==a||e[4]!==d||e[5]!==r?(p=t("span",{className:"text-muted-foreground","data-testid":d,title:r,children:a}),e[3]=a,e[4]=d,e[5]=r,e[6]=p):p=e[6],p}const h=`mt-instrument-trace-${i}`;let y;e[7]!==s||e[8]!==r?(y=()=>{s(r)},e[7]=s,e[8]=r,e[9]=y):y=e[9];let w;e[10]!==u||e[11]!==r?(w=u("Open the exemplar trace {trace}",{trace:r}),e[10]=u,e[11]=r,e[12]=w):w=e[12];let g;return e[13]!==a||e[14]!==h||e[15]!==y||e[16]!==w?(g=t("button",{className:"text-primary underline-offset-4 hover:underline","data-testid":h,onClick:y,title:w,type:"button",children:a}),e[13]=a,e[14]=h,e[15]=y,e[16]=w,e[17]=g):g=e[17],g},er=l=>{const e=Ae(105),{onOpenTrace:i,shardKey:s}=l,r=xe();let u;e[0]===Symbol.for("react.memo_cache_sentinel")?(u={},e[0]=u):u=e[0];let o;e[1]!==s?(o={live:!0,shardKey:s},e[1]=s,e[2]=o):o=e[2];const{data:a,error:h,errorSource:y}=Ue(Oe.getMetricSeries,u,o);let w;e[3]===Symbol.for("react.memo_cache_sentinel")?(w={},e[3]=w):w=e[3];let g;e[4]!==s?(g={live:!0,shardKey:s},e[4]=s,e[5]=g):g=e[5];const{data:d}=Ue(Oe.getMetricHistory,w,g);let p,v,q,C,c,T,x,b,_,k,f,R,$;if(e[6]!==a||e[7]!==h||e[8]!==y||e[9]!==d||e[10]!==i||e[11]!==r){b=Symbol.for("react.early_return_sentinel");e:{const O=Gt(a),L=wt(y)===Wt;if(h!==null&&!L){let m;e[25]!==r?(m=r("Instruments"),e[25]=r,e[26]=m):m=e[26];let B;e[27]!==m?(B=t("h3",{className:"text-sm font-semibold text-foreground",children:m}),e[27]=m,e[28]=B):B=e[28];let j;e[29]!==h||e[30]!==r?(j=r("Instruments unavailable: {error}",{error:h}),e[29]=h,e[30]=r,e[31]=j):j=e[31];let H;e[32]!==j?(H=t("span",{className:"text-xs text-muted-foreground","data-testid":"mt-instruments-error",role:"status",children:j}),e[32]=j,e[33]=H):H=e[33];let U;e[34]!==B||e[35]!==H?(U=n("section",{className:"flex flex-col gap-2","data-testid":"mt-instruments",children:[B,H]}),e[34]=B,e[35]=H,e[36]=U):U=e[36],b=U;break e}if(O.length===0){b=null;break e}const z=Xt(d);let A;e[37]!==r?(A=m=>r(m==="counter"?"Counter":m==="gauge"?"Gauge":"Histogram"),e[37]=r,e[38]=A):A=e[38];const Q=A;c="flex flex-col gap-2",T="mt-instruments";let P;e[39]!==r?(P=r("Instruments"),e[39]=r,e[40]=P):P=e[40],e[41]!==P?(x=t("h3",{className:"text-sm font-semibold text-foreground",children:P}),e[41]=P,e[42]=x):x=e[42],C=he,$="overflow-hidden py-0",q=ge,R="px-0",v=dt,k="mt-instruments-table";let E;e[43]!==r?(E=r("name"),e[43]=r,e[44]=E):E=e[44];let K;e[45]!==E?(K=t(de,{children:E}),e[45]=E,e[46]=K):K=e[46];let V;e[47]!==r?(V=r("kind"),e[47]=r,e[48]=V):V=e[48];let G;e[49]!==V?(G=t(de,{children:V}),e[49]=V,e[50]=G):G=e[50];let W;e[51]!==r?(W=r("value"),e[51]=r,e[52]=W):W=e[52];let X;e[53]!==W?(X=t(de,{className:"text-right",children:W}),e[53]=W,e[54]=X):X=e[54];let Y;e[55]!==r?(Y=r("count"),e[55]=r,e[56]=Y):Y=e[56];let Z;e[57]!==Y?(Z=t(de,{className:"text-right",children:Y}),e[57]=Y,e[58]=Z):Z=e[58];let ee;e[59]!==r?(ee=r("range"),e[59]=r,e[60]=ee):ee=e[60];let te;e[61]!==ee?(te=t(de,{className:"text-right",children:ee}),e[61]=ee,e[62]=te):te=e[62];let re;e[63]!==r?(re=r("trend"),e[63]=r,e[64]=re):re=e[64];let se;e[65]!==re?(se=t(de,{children:re}),e[65]=re,e[66]=se):se=e[66];let le;e[67]!==r?(le=r("trace"),e[67]=r,e[68]=le):le=e[68];let ae;e[69]!==le?(ae=t(de,{children:le}),e[69]=le,e[70]=ae):ae=e[70];let ie;e[71]!==r?(ie=r("dimensions"),e[71]=r,e[72]=ie):ie=e[72];let ne;e[73]!==ie?(ne=t(de,{children:ie}),e[73]=ie,e[74]=ne):ne=e[74],e[75]!==K||e[76]!==G||e[77]!==X||e[78]!==Z||e[79]!==te||e[80]!==se||e[81]!==ae||e[82]!==ne?(f=t(mt,{children:n(Je,{children:[K,G,X,Z,te,se,ae,ne]})}),e[75]=K,e[76]=G,e[77]=X,e[78]=Z,e[79]=te,e[80]=se,e[81]=ae,e[82]=ne,e[83]=f):f=e[83],p=ut,_=O.map(m=>{const B=$t(m.attributes),j=ht(m.kind,m.name,m.attributes),U=(z.get(j)??[]).map(ue=>Jt(m.kind,ue));return n(Je,{"data-testid":`mt-instrument-${m.name}`,children:[t(oe,{className:"font-mono text-xs",title:m.functionPath,children:m.name}),t(oe,{children:t(et,{variant:Yt[m.kind],children:Q(m.kind)})}),t(oe,{className:"text-right font-mono tabular-nums","data-testid":`mt-instrument-value-${m.name}`,children:We(Vt(m))}),t(oe,{className:"text-right tabular-nums text-muted-foreground",children:m.count.toLocaleString()}),t(oe,{className:"text-right font-mono text-xs tabular-nums text-muted-foreground",children:m.min===m.max?"—":`${We(m.min)}–${We(m.max)}`}),t(oe,{children:U.length>=2?t(ft,{ariaLabel:r("{name} trend",{name:m.name}),className:"h-6 w-24 text-foreground",series:U,testId:`mt-instrument-trend-${m.name}`}):t("span",{className:"text-xs text-muted-foreground",children:"—"})}),t(oe,{className:"font-mono text-xs",children:t(Zt,{name:m.name,onOpenTrace:i,traceId:m.exemplarTraceId})}),t(oe,{className:"max-w-64 truncate font-mono text-xs text-muted-foreground",title:B,children:B===""?"—":B})]},j)})}e[6]=a,e[7]=h,e[8]=y,e[9]=d,e[10]=i,e[11]=r,e[12]=p,e[13]=v,e[14]=q,e[15]=C,e[16]=c,e[17]=T,e[18]=x,e[19]=b,e[20]=_,e[21]=k,e[22]=f,e[23]=R,e[24]=$}else p=e[12],v=e[13],q=e[14],C=e[15],c=e[16],T=e[17],x=e[18],b=e[19],_=e[20],k=e[21],f=e[22],R=e[23],$=e[24];if(b!==Symbol.for("react.early_return_sentinel"))return b;let M;e[84]!==p||e[85]!==_?(M=t(p,{children:_}),e[84]=p,e[85]=_,e[86]=M):M=e[86];let I;e[87]!==v||e[88]!==M||e[89]!==k||e[90]!==f?(I=n(v,{"data-testid":k,children:[f,M]}),e[87]=v,e[88]=M,e[89]=k,e[90]=f,e[91]=I):I=e[91];let S;e[92]!==q||e[93]!==I||e[94]!==R?(S=t(q,{className:R,children:I}),e[92]=q,e[93]=I,e[94]=R,e[95]=S):S=e[95];let N;e[96]!==C||e[97]!==S||e[98]!==$?(N=t(C,{className:$,children:S}),e[96]=C,e[97]=S,e[98]=$,e[99]=N):N=e[99];let F;return e[100]!==c||e[101]!==T||e[102]!==x||e[103]!==N?(F=n("section",{className:c,"data-testid":T,children:[x,N]}),e[100]=c,e[101]=T,e[102]=x,e[103]=N,e[104]=F):F=e[104],F},tr=l=>{const e=Ae(74),{aggregate:i,shardResults:s}=l,r=xe();let u;e[0]!==r?(u=r("Shards"),e[0]=r,e[1]=u):u=e[1];let o;e[2]!==i.failed||e[3]!==i.reachable||e[4]!==r?(o=i.failed>0?r("{reachable} reachable, {failed} unreachable",{failed:i.failed,reachable:i.reachable}):r("{reachable} reachable",{reachable:i.reachable}),e[2]=i.failed,e[3]=i.reachable,e[4]=r,e[5]=o):o=e[5];let a;e[6]!==u||e[7]!==o?(a=t(me,{label:u,testId:"mt-agg-shards",value:o}),e[6]=u,e[7]=o,e[8]=a):a=e[8];let h;e[9]!==r?(h=r("Total requests"),e[9]=r,e[10]=h):h=e[10];let y;e[11]!==i.totalRequests||e[12]!==h?(y=t(me,{label:h,testId:"mt-agg-requests",value:i.totalRequests}),e[11]=i.totalRequests,e[12]=h,e[13]=y):y=e[13];let w;e[14]!==r?(w=r("Total errors"),e[14]=r,e[15]=w):w=e[15];let g;e[16]!==i.totalErrors||e[17]!==w?(g=t(me,{label:w,testId:"mt-agg-errors",value:i.totalErrors}),e[16]=i.totalErrors,e[17]=w,e[18]=g):g=e[18];let d;e[19]!==r?(d=r("Total database size"),e[19]=r,e[20]=d):d=e[20];let p;e[21]!==i.totalDatabaseSize?(p=Xe(i.totalDatabaseSize),e[21]=i.totalDatabaseSize,e[22]=p):p=e[22];let v;e[23]!==d||e[24]!==p?(v=t(me,{label:d,testId:"mt-agg-db-size",value:p}),e[23]=d,e[24]=p,e[25]=v):v=e[25];let q;e[26]!==r?(q=r("Combined cache hit rate"),e[26]=r,e[27]=q):q=e[27];let C;e[28]!==i.hitRate||e[29]!==r?(C=i.hitRate===null?r("no cache configured"):`${(i.hitRate*100).toFixed(1)}%`,e[28]=i.hitRate,e[29]=r,e[30]=C):C=e[30];let c;e[31]!==q||e[32]!==C?(c=t(me,{label:q,testId:"mt-agg-cache",value:C}),e[31]=q,e[32]=C,e[33]=c):c=e[33];let T;e[34]!==v||e[35]!==c||e[36]!==a||e[37]!==y||e[38]!==g?(T=n("dl",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3","data-testid":"mt-aggregate-stats",children:[a,y,g,v,c]}),e[34]=v,e[35]=c,e[36]=a,e[37]=y,e[38]=g,e[39]=T):T=e[39];let x;e[40]!==r?(x=r("shard"),e[40]=r,e[41]=x):x=e[41];let b;e[42]!==x?(b=t(de,{children:x}),e[42]=x,e[43]=b):b=e[43];let _;e[44]!==r?(_=r("requests"),e[44]=r,e[45]=_):_=e[45];let k;e[46]!==_?(k=t(de,{children:_}),e[46]=_,e[47]=k):k=e[47];let f;e[48]!==r?(f=r("errors"),e[48]=r,e[49]=f):f=e[49];let R;e[50]!==f?(R=t(de,{children:f}),e[50]=f,e[51]=R):R=e[51];let $;e[52]!==r?($=r("db size"),e[52]=r,e[53]=$):$=e[53];let M;e[54]!==$?(M=t(de,{children:$}),e[54]=$,e[55]=M):M=e[55];let I;e[56]!==b||e[57]!==k||e[58]!==R||e[59]!==M?(I=t(mt,{children:n(Je,{children:[b,k,R,M]})}),e[56]=b,e[57]=k,e[58]=R,e[59]=M,e[60]=I):I=e[60];let S;if(e[61]!==s||e[62]!==r){let L;e[64]!==r?(L=z=>n(Je,{"data-testid":`mt-agg-row-${z.shard}`,children:[t(oe,{children:z.shard}),z.metrics===null?t(oe,{className:"text-destructive",colSpan:3,children:z.error??r("unreachable")}):n(Ye,{children:[t(oe,{className:"tabular-nums",children:z.metrics.requests}),t(oe,{className:"tabular-nums",children:z.metrics.errors}),t(oe,{className:"tabular-nums",children:Xe(z.metrics.databaseSize)})]})]},z.shard),e[64]=r,e[65]=L):L=e[65],S=s.map(L),e[61]=s,e[62]=r,e[63]=S}else S=e[63];let N;e[66]!==S?(N=t(ut,{children:S}),e[66]=S,e[67]=N):N=e[67];let F;e[68]!==I||e[69]!==N?(F=t(he,{className:"overflow-hidden py-0",children:t(ge,{className:"px-0",children:n(dt,{"data-testid":"mt-agg-table",children:[I,N]})})}),e[68]=I,e[69]=N,e[70]=F):F=e[70];let O;return e[71]!==T||e[72]!==F?(O=n("div",{className:"flex flex-col gap-4","data-testid":"mt-aggregate-view",children:[T,F]}),e[71]=T,e[72]=F,e[73]=O):O=e[73],O},rr=l=>{const e=Math.floor(l/1e3),i=Math.floor(e/3600),s=Math.floor(e%3600/60),r=e%60;return i>0?`${i.toString()}h ${s.toString()}m`:s>0?`${s.toString()}m ${r.toString()}s`:`${r.toString()}s`},sr=(l,e)=>{const i=l+e;return i===0?"—":`${(l/i*100).toFixed(1)}%`},ct=l=>l<=0?"—":l<1?`${(l*1e3).toFixed(0)}μs`:l<1e3?`${l.toFixed(1)}ms`:`${(l/1e3).toFixed(2)}s`,lr=l=>{const e=Ae(75),{currentDelta:i,errorRate:s,history:r,latencyPercentiles:u,metrics:o}=l,a=xe(),{cache:h}=o;let y;e[0]!==r||e[1]!==a?(y=r.length>=2?t(ft,{ariaLabel:a("Requests per interval over time"),className:"h-7 w-24 text-foreground",series:r,testId:"mt-sparkline"}):void 0,e[0]=r,e[1]=a,e[2]=y):y=e[2];let w;e[3]!==i||e[4]!==r.length||e[5]!==a?(w=r.length>=2?n(Ye,{children:[t("span",{className:"font-semibold text-foreground",children:`+${i.toLocaleString()}`})," ",a("last interval")]}):t("span",{"data-testid":"mt-sparkline-empty",children:a("collecting samples…")}),e[3]=i,e[4]=r.length,e[5]=a,e[6]=w):w=e[6];let g;e[7]!==a?(g=a("Requests"),e[7]=a,e[8]=g):g=e[8];let d;e[9]!==o.requests||e[10]!==y||e[11]!==w||e[12]!==g?(d=t(me,{chart:y,footer:w,label:g,testId:"mt-requests",value:o.requests}),e[9]=o.requests,e[10]=y,e[11]=w,e[12]=g,e[13]=d):d=e[13];let p;e[14]!==s||e[15]!==a?(p=a("{rate} error rate",{rate:s}),e[14]=s,e[15]=a,e[16]=p):p=e[16];let v;e[17]!==a?(v=a("Errors"),e[17]=a,e[18]=v):v=e[18];let q;e[19]!==s||e[20]!==o.errors?(q=n(Ye,{children:[o.errors," (",s,")"]}),e[19]=s,e[20]=o.errors,e[21]=q):q=e[21];let C;e[22]!==p||e[23]!==v||e[24]!==q?(C=t(me,{footer:p,label:v,testId:"mt-errors",value:q}),e[22]=p,e[23]=v,e[24]=q,e[25]=C):C=e[25];let c;e[26]!==u.p90?(c=u.p90>0?`P90 ${ct(u.p90)}`:void 0,e[26]=u.p90,e[27]=c):c=e[27];let T;e[28]!==a?(T=a("P95 latency"),e[28]=a,e[29]=T):T=e[29];let x;e[30]!==u.p95?(x=u.p95>0?ct(u.p95):"—",e[30]=u.p95,e[31]=x):x=e[31];let b;e[32]!==T||e[33]!==x||e[34]!==c?(b=t(me,{footer:c,label:T,testId:"mt-p95",value:x}),e[32]=T,e[33]=x,e[34]=c,e[35]=b):b=e[35];let _;e[36]!==h||e[37]!==a?(_=h?`${h.entries.toLocaleString()} ${a("cache entries")}`:void 0,e[36]=h,e[37]=a,e[38]=_):_=e[38];let k;e[39]!==a?(k=a("Database size"),e[39]=a,e[40]=k):k=e[40];let f;e[41]!==o.databaseSize?(f=Xe(o.databaseSize),e[41]=o.databaseSize,e[42]=f):f=e[42];let R;e[43]!==_||e[44]!==k||e[45]!==f?(R=t(me,{footer:_,label:k,testId:"mt-db-size",value:f}),e[43]=_,e[44]=k,e[45]=f,e[46]=R):R=e[46];let $;e[47]!==a?($=a("Shard"),e[47]=a,e[48]=$):$=e[48];let M;e[49]!==o.shard||e[50]!==$?(M=t(me,{label:$,testId:"mt-shard",value:o.shard}),e[49]=o.shard,e[50]=$,e[51]=M):M=e[51];let I;e[52]!==a?(I=a("Uptime"),e[52]=a,e[53]=I):I=e[53];let S;e[54]!==o.uptimeMs?(S=rr(o.uptimeMs),e[54]=o.uptimeMs,e[55]=S):S=e[55];let N;e[56]!==I||e[57]!==S?(N=t(me,{label:I,testId:"mt-uptime",value:S}),e[56]=I,e[57]=S,e[58]=N):N=e[58];let F;e[59]!==a?(F=a("Cache hit rate"),e[59]=a,e[60]=F):F=e[60];let O;e[61]!==h||e[62]!==a?(O=h?a("{rate} ({count} entries)",{count:h.entries,rate:sr(h.hits,h.misses)}):a("no cache configured"),e[61]=h,e[62]=a,e[63]=O):O=e[63];let L;e[64]!==F||e[65]!==O?(L=t(me,{label:F,testId:"mt-cache",value:O}),e[64]=F,e[65]=O,e[66]=L):L=e[66];let z;return e[67]!==b||e[68]!==R||e[69]!==M||e[70]!==N||e[71]!==L||e[72]!==d||e[73]!==C?(z=n("dl",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4","data-testid":"mt-stats",children:[d,C,b,R,M,N,L]}),e[67]=b,e[68]=R,e[69]=M,e[70]=N,e[71]=L,e[72]=d,e[73]=C,e[74]=z):z=e[74],z},Ve=l=>l>=100?"critical":l>=50?"warning":"good",Ee=l=>l<1?`${(l*1e3).toFixed(0)}μs`:l<1e3?`${l.toFixed(1)}ms`:`${(l/1e3).toFixed(2)}s`,He=l=>l>=1e9?`${(l/1e9).toFixed(1)}B`:l>=1e6?`${(l/1e6).toFixed(1)}M`:l>=1e3?`${(l/1e3).toFixed(1)}K`:l.toLocaleString(),ar=l=>{const e=Ae(3),{level:i}=l;if(i==="critical"){let r;return e[0]===Symbol.for("react.memo_cache_sentinel")?(r=t(et,{variant:"destructive",children:"Slow"}),e[0]=r):r=e[0],r}if(i==="warning"){let r;return e[1]===Symbol.for("react.memo_cache_sentinel")?(r=t("span",{className:"inline-flex items-center gap-1 rounded-md border border-transparent bg-warning/10 px-2 py-0.5 text-xs font-medium text-warning",children:"Moderate"}),e[1]=r):r=e[1],r}let s;return e[2]===Symbol.for("react.memo_cache_sentinel")?(s=t("span",{className:"inline-flex items-center gap-1 rounded-md border border-transparent bg-success/10 px-2 py-0.5 text-xs font-medium text-success",children:"Fast"}),e[2]=s):s=e[2],s},ir=(l,e)=>{const i=[...l];return i.sort((s,r)=>{switch(e){case"avgTime":return r.avgDurationMs-s.avgDurationMs;case"execCount":return r.execCount-s.execCount;case"rowsRead":return r.rowsRead-s.rowsRead;default:return r.totalDurationMs-s.totalDurationMs}}),i},nr=l=>{const e=Ae(161),{queryStats:i}=l,s=xe(),[r,u]=pe("totalTime");let o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=new Set,e[0]=o):o=e[0];const[a,h]=pe(o);let y;e[1]===Symbol.for("react.memo_cache_sentinel")?(y=$=>{$!==null&&u($)},e[1]=y):y=e[1];const w=y;let g,d,p,v,q,C,c,T,x,b;if(e[2]!==a||e[3]!==i||e[4]!==r||e[5]!==s){p=Symbol.for("react.early_return_sentinel");e:{const $=ir(i,r);let M;e[16]!==i?(M=i.filter(or),e[16]=i,e[17]=M):M=e[17];const I=M.length;let S;e[18]!==i?(S=i.filter(cr),e[18]=i,e[19]=S):S=e[19];const N=S.length;let F;e[20]!==i?(F=i.filter(dr),e[20]=i,e[21]=F):F=e[21];const O=F.length;let L;e[22]===Symbol.for("react.memo_cache_sentinel")?(L=D=>{h(ce=>{const J=new Set(ce);return J.has(D)?J.delete(D):J.add(D),J})},e[22]=L):L=e[22];const z=L;if(i.length===0){let D;e[23]!==s?(D=s("No query insights yet"),e[23]=s,e[24]=D):D=e[24];let ce;e[25]!==D?(ce=t("p",{className:"text-lg font-medium","data-testid":"qi-empty",children:D}),e[25]=D,e[26]=ce):ce=e[26];let J;e[27]!==s?(J=s("Query insights appear once statements are executed against this shard."),e[27]=s,e[28]=J):J=e[28];let fe;e[29]!==J?(fe=t("p",{className:"mt-1 text-sm",children:J}),e[29]=J,e[30]=fe):fe=e[30];let Pe;e[31]!==ce||e[32]!==fe?(Pe=t(he,{children:t(ge,{className:"py-12",children:n("div",{className:"text-center text-muted-foreground",children:[ce,fe]})})}),e[31]=ce,e[32]=fe,e[33]=Pe):Pe=e[33],p=Pe;break e}c="space-y-4",T="qi-root";let A;e[34]!==s?(A=s("Critical queries"),e[34]=s,e[35]=A):A=e[35];let Q;e[36]!==A?(Q=t(Be,{className:"pb-2",children:t(je,{className:"text-sm font-medium",children:A})}),e[36]=A,e[37]=Q):Q=e[37];let P;e[38]!==I?(P=t("div",{className:"text-2xl font-bold text-destructive","data-testid":"qi-critical",children:I}),e[38]=I,e[39]=P):P=e[39];let E;e[40]!==s?(E=s(">100ms avg execution"),e[40]=s,e[41]=E):E=e[41];let K;e[42]!==E?(K=t("p",{className:"text-xs text-muted-foreground",children:E}),e[42]=E,e[43]=K):K=e[43];let V;e[44]!==P||e[45]!==K?(V=n(ge,{children:[P,K]}),e[44]=P,e[45]=K,e[46]=V):V=e[46];let G;e[47]!==Q||e[48]!==V?(G=n(he,{children:[Q,V]}),e[47]=Q,e[48]=V,e[49]=G):G=e[49];let W;e[50]!==s?(W=s("Moderate queries"),e[50]=s,e[51]=W):W=e[51];let X;e[52]!==W?(X=t(Be,{className:"pb-2",children:t(je,{className:"text-sm font-medium",children:W})}),e[52]=W,e[53]=X):X=e[53];let Y;e[54]!==N?(Y=t("div",{className:"text-2xl font-bold text-warning","data-testid":"qi-moderate",children:N}),e[54]=N,e[55]=Y):Y=e[55];let Z;e[56]!==s?(Z=s("50–100ms avg execution"),e[56]=s,e[57]=Z):Z=e[57];let ee;e[58]!==Z?(ee=t("p",{className:"text-xs text-muted-foreground",children:Z}),e[58]=Z,e[59]=ee):ee=e[59];let te;e[60]!==Y||e[61]!==ee?(te=n(ge,{children:[Y,ee]}),e[60]=Y,e[61]=ee,e[62]=te):te=e[62];let re;e[63]!==X||e[64]!==te?(re=n(he,{children:[X,te]}),e[63]=X,e[64]=te,e[65]=re):re=e[65];let se;e[66]!==s?(se=s("Fast queries"),e[66]=s,e[67]=se):se=e[67];let le;e[68]!==se?(le=t(Be,{className:"pb-2",children:t(je,{className:"text-sm font-medium",children:se})}),e[68]=se,e[69]=le):le=e[69];let ae;e[70]!==O?(ae=t("div",{className:"text-2xl font-bold text-success","data-testid":"qi-fast",children:O}),e[70]=O,e[71]=ae):ae=e[71];let ie;e[72]!==s?(ie=s("<50ms avg execution"),e[72]=s,e[73]=ie):ie=e[73];let ne;e[74]!==ie?(ne=t("p",{className:"text-xs text-muted-foreground",children:ie}),e[74]=ie,e[75]=ne):ne=e[75];let m;e[76]!==ae||e[77]!==ne?(m=n(ge,{children:[ae,ne]}),e[76]=ae,e[77]=ne,e[78]=m):m=e[78];let B;e[79]!==le||e[80]!==m?(B=n(he,{children:[le,m]}),e[79]=le,e[80]=m,e[81]=B):B=e[81],e[82]!==G||e[83]!==re||e[84]!==B?(x=n("div",{className:"grid gap-4 md:grid-cols-3",children:[G,re,B]}),e[82]=G,e[83]=re,e[84]=B,e[85]=x):x=e[85];let j;e[86]!==s?(j=s("Query leaderboard"),e[86]=s,e[87]=j):j=e[87];let H;e[88]!==j?(H=t("h3",{className:"text-lg font-semibold",children:j}),e[88]=j,e[89]=H):H=e[89];let U;e[90]!==r||e[91]!==s?(U=s("Slow queries sorted by {sortField}",{sortField:s(r)}),e[90]=r,e[91]=s,e[92]=U):U=e[92];let ue;e[93]!==U?(ue=t("p",{className:"text-sm text-muted-foreground",children:U}),e[93]=U,e[94]=ue):ue=e[94];let be;e[95]!==H||e[96]!==ue?(be=n("div",{children:[H,ue]}),e[95]=H,e[96]=ue,e[97]=be):be=e[97];let ye;e[98]!==s?(ye=s("Sort by"),e[98]=s,e[99]=ye):ye=e[99];let ve;e[100]!==ye?(ve=t("span",{className:"text-sm text-muted-foreground",children:ye}),e[100]=ye,e[101]=ve):ve=e[101];let Ne;e[102]!==s?(Ne=s("Sort queries by"),e[102]=s,e[103]=Ne):Ne=e[103];let Le;e[104]===Symbol.for("react.memo_cache_sentinel")?(Le=t(Bt,{}),e[104]=Le):Le=e[104];let Se;e[105]!==Ne?(Se=t(jt,{"aria-label":Ne,className:"w-[140px]","data-testid":"qi-sort",children:Le}),e[105]=Ne,e[106]=Se):Se=e[106];let we;e[107]!==s?(we=s("Total time"),e[107]=s,e[108]=we):we=e[108];let qe;e[109]!==we?(qe=t(Qe,{value:"totalTime",children:we}),e[109]=we,e[110]=qe):qe=e[110];let Te;e[111]!==s?(Te=s("Avg time"),e[111]=s,e[112]=Te):Te=e[112];let _e;e[113]!==Te?(_e=t(Qe,{value:"avgTime",children:Te}),e[113]=Te,e[114]=_e):_e=e[114];let Ce;e[115]!==s?(Ce=s("Execution count"),e[115]=s,e[116]=Ce):Ce=e[116];let ke;e[117]!==Ce?(ke=t(Qe,{value:"execCount",children:Ce}),e[117]=Ce,e[118]=ke):ke=e[118];let Re;e[119]!==s?(Re=s("Rows read"),e[119]=s,e[120]=Re):Re=e[120];let $e;e[121]!==Re?($e=t(Qe,{value:"rowsRead",children:Re}),e[121]=Re,e[122]=$e):$e=e[122];let Me;e[123]!==qe||e[124]!==_e||e[125]!==ke||e[126]!==$e?(Me=n(Qt,{children:[qe,_e,ke,$e]}),e[123]=qe,e[124]=_e,e[125]=ke,e[126]=$e,e[127]=Me):Me=e[127];let Ie;e[128]!==r||e[129]!==Se||e[130]!==Me?(Ie=n(Ht,{onValueChange:w,value:r,children:[Se,Me]}),e[128]=r,e[129]=Se,e[130]=Me,e[131]=Ie):Ie=e[131];let De;e[132]!==ve||e[133]!==Ie?(De=n("div",{className:"flex items-center gap-2",children:[ve,Ie]}),e[132]=ve,e[133]=Ie,e[134]=De):De=e[134],e[135]!==be||e[136]!==De?(b=n("div",{className:"flex items-center justify-between",children:[be,De]}),e[135]=be,e[136]=De,e[137]=b):b=e[137],d=he;let Fe;e[138]!==s?(Fe=s("Statements"),e[138]=s,e[139]=Fe):Fe=e[139];let ze;e[140]!==Fe?(ze=t(je,{children:Fe}),e[140]=Fe,e[141]=ze):ze=e[141],C=n(Be,{children:[ze,t(Mt,{children:s("{count} tracked statements",{count:$.length})})]}),g=ge,v="space-y-2";let Ke;e[142]!==a||e[143]!==s?(Ke=D=>{const ce=D.normalizedSql,J=a.has(ce),fe=Ve(D.avgDurationMs);return n("div",{className:"overflow-hidden rounded-lg border","data-testid":"qi-row",children:[n("button",{"aria-expanded":J,className:"flex w-full items-center justify-between p-3 text-left transition-colors hover:bg-muted/50",onClick:()=>{z(ce)},type:"button",children:[n("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[t(ar,{level:fe}),t("span",{className:"max-w-[300px] truncate font-mono text-sm lg:max-w-[500px]",children:D.normalizedSql})]}),n("div",{className:"flex shrink-0 items-center gap-4",children:[n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Ee(D.totalDurationMs)}),t("div",{className:"text-xs text-muted-foreground",children:s("total")})]}),n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Ee(D.avgDurationMs)}),t("div",{className:"text-xs text-muted-foreground",children:s("avg")})]}),D.p95DurationMs!==void 0&&n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Ee(D.p95DurationMs)}),t("div",{className:"text-xs text-muted-foreground",children:s("p95")})]}),n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:He(D.execCount)}),t("div",{className:"text-xs text-muted-foreground",children:s("calls")})]})]})]}),J&&n("div",{className:"space-y-3 border-t bg-muted/30 p-4",children:[n("div",{children:[t("p",{className:"mb-2 text-sm font-medium",children:s("Full statement")}),t("pre",{className:"overflow-x-auto rounded-md bg-muted p-3 font-mono text-sm whitespace-pre-wrap break-all",children:D.normalizedSql})]}),n("div",{className:"grid grid-cols-2 gap-4 text-sm md:grid-cols-4",children:[D.p50DurationMs!==void 0&&n("div",{children:[t("span",{className:"text-muted-foreground",children:s("p50")}),t("span",{className:"block font-medium tabular-nums",children:Ee(D.p50DurationMs)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Exec count")}),t("span",{className:"block font-medium tabular-nums",children:He(D.execCount)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Total time")}),t("span",{className:"block font-medium tabular-nums",children:Ee(D.totalDurationMs)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Rows read")}),t("span",{className:"block font-medium tabular-nums",children:He(D.rowsRead)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Rows written")}),t("span",{className:"block font-medium tabular-nums",children:He(D.rowsWritten)})]})]})]})]},ce)},e[142]=a,e[143]=s,e[144]=Ke):Ke=e[144],q=$.map(Ke)}e[2]=a,e[3]=i,e[4]=r,e[5]=s,e[6]=g,e[7]=d,e[8]=p,e[9]=v,e[10]=q,e[11]=C,e[12]=c,e[13]=T,e[14]=x,e[15]=b}else g=e[6],d=e[7],p=e[8],v=e[9],q=e[10],C=e[11],c=e[12],T=e[13],x=e[14],b=e[15];if(p!==Symbol.for("react.early_return_sentinel"))return p;let _;e[145]!==v||e[146]!==q?(_=t("div",{className:v,children:q}),e[145]=v,e[146]=q,e[147]=_):_=e[147];let k;e[148]!==g||e[149]!==_?(k=t(g,{children:_}),e[148]=g,e[149]=_,e[150]=k):k=e[150];let f;e[151]!==d||e[152]!==k||e[153]!==C?(f=n(d,{children:[C,k]}),e[151]=d,e[152]=k,e[153]=C,e[154]=f):f=e[154];let R;return e[155]!==f||e[156]!==c||e[157]!==T||e[158]!==x||e[159]!==b?(R=n("div",{className:c,"data-testid":T,children:[x,b,f]}),e[155]=f,e[156]=c,e[157]=T,e[158]=x,e[159]=b,e[160]=R):R=e[160],R};function or(l){return Ve(l.avgDurationMs)==="critical"}function cr(l){return Ve(l.avgDurationMs)==="warning"}function dr(l){return Ve(l.avgDurationMs)==="good"}const mr=["1m","5m","15m","1h"],ur=l=>new Date(l).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}),fr=l=>l.map(e=>({avg:Math.round(e.avgDurationMs*100)/100,execs:e.execCount,label:ur(e.bucketMs)})),hr=({shardKey:l=""})=>{const e=xe(),[i,s]=pe("15m"),u=Ue(Oe.getQueryInsights,{range:i},{live:!0,shardKey:l}).data,o=fr(u?.buckets??[]);return n("div",{className:"flex flex-col gap-4","data-testid":"qi-range",children:[n("div",{className:"flex flex-wrap items-center gap-2",children:[t("div",{className:"flex gap-1 rounded-lg border border-border p-0.5","data-testid":"qi-ranges",role:"group",children:mr.map(a=>t("button",{"aria-pressed":a===i,className:Pt("rounded px-2 py-1 text-xs outline-none transition-colors hover:bg-accent focus-visible:bg-accent",a===i&&"bg-accent font-medium text-foreground"),"data-testid":`qi-range-${a}`,onClick:()=>{s(a)},type:"button",children:a},a))}),u?.capped===!0&&t(et,{"data-testid":"qi-capped",variant:"secondary",children:e("showing a capped set")})]}),o.length===0?t(Kt,{description:e("Statements executed in the selected window appear here, with throughput and latency over time."),testId:"qi-empty",title:e("No queries in this window.")}):n("div",{className:"grid gap-4 lg:grid-cols-2",children:[n("figure",{className:"rounded-xl border border-border p-3","data-testid":"qi-throughput",children:[t("figcaption",{className:"mb-2 text-xs font-medium text-muted-foreground",children:e("Throughput")}),t(st,{height:140,width:"100%",children:n(Et,{data:o,children:[t(lt,{strokeDasharray:"3 3",vertical:!1}),t(at,{dataKey:"label",fontSize:10,tickLine:!1}),t(it,{allowDecimals:!1,fontSize:10,tickLine:!1,width:32}),t(nt,{}),t(Ot,{dataKey:"execs",fill:"var(--color-primary)",fillOpacity:.15,stroke:"var(--color-primary)",type:"monotone"})]})})]}),n("figure",{className:"rounded-xl border border-border p-3","data-testid":"qi-latency",children:[t("figcaption",{className:"mb-2 text-xs font-medium text-muted-foreground",children:e("Mean latency (ms)")}),t(st,{height:140,width:"100%",children:n(Lt,{data:o,children:[t(lt,{strokeDasharray:"3 3",vertical:!1}),t(at,{dataKey:"label",fontSize:10,tickLine:!1}),t(it,{fontSize:10,tickLine:!1,width:32}),t(nt,{}),t(zt,{dataKey:"avg",dot:!1,stroke:"var(--color-destructive)",type:"monotone"})]})})]})]}),t(nr,{queryStats:u?.entries??[]})]})},gr=Ct(Oe.getMetrics),pr=(l,e)=>l?e:"overview",jr=({initialShardKey:l})=>{const e=pt(),i=xe(),{queryShardKey:s,setShardKey:r,shardKey:u}=Nt(l),[o,a]=pe("overview"),[h,y]=pe([]),w=Ge(null),g=Ge(null),d=Ge(!0);tt(()=>(d.current=!0,()=>{d.current=!1}),[]);const p=vt(s),{data:v,error:q,liveError:C}=Ue(Oe.getMetrics,{},{live:!0,shardKey:s}),c=v??null;tt(()=>{if(v===void 0)return;kt(s);const A=v,Q=w.current,P=g.current!==null&&g.current!==A.shard;if(g.current=A.shard,w.current=A.requests,P){y([]);return}Q!==null&&A.requests>=Q&&y(E=>[...E,A.requests-Q].slice(-30))},[v,s]);const[T,x]=pe(null),[b,_]=pe(!1),k=async()=>{_(!0);const A=u,Q=At(A,Rt());try{const P=await Promise.all(Q.map(async E=>{try{const K=await e.query(gr,{},Tt(E));return{error:null,metrics:K,shard:E===""?K.shard:E}}catch(K){return{error:_t(K),metrics:null,shard:E===""?"__root__":E}}}));d.current&&x({results:P,shard:A})}finally{d.current&&_(!1)}},f=T?.shard===u?T.results:null,R=f===null?null:It(f),$=c===null||c.requests===0?"—":`${(c.errors/c.requests*100).toFixed(1)}%`,M=h.length>0?h.at(-1):0,I=c?Dt(c):{p90:0,p95:0},S=xt(()=>{if(!c||!("queryStats"in c))return;const A=c.queryStats;if(!(!A||!Array.isArray(A)))return Ft(A)},[c]),N=pr(S!==void 0,o),F=()=>{qt(k())},O=()=>{x(null)},L=()=>{a("overview")},z=()=>{a("query-insights")};return n("div",{className:"flex flex-col gap-4","data-testid":"lunora-metrics",children:[n("div",{className:"flex flex-wrap items-center gap-2",children:[t(yt,{onChange:r,testId:"mt-shard-input",value:u}),t(bt,{message:C,prefix:"mt"}),t(rt,{"data-testid":"mt-aggregate",disabled:b,onClick:F,size:"sm",type:"button",variant:"secondary",children:i(b?"Aggregating…":"All shards")}),f!==null&&t(rt,{"data-testid":"mt-aggregate-clear",onClick:O,size:"sm",type:"button",variant:"ghost",children:i("Hide")}),t("a",{className:"text-sm text-primary underline-offset-4 hover:underline","data-testid":"mt-cf-link",href:St,rel:"noreferrer",target:"_blank",children:i("Open in Cloudflare")})]}),q!==null&&t("p",{className:"text-sm text-destructive","data-testid":"mt-error",role:"alert",children:q}),S!==void 0&&n("div",{className:"flex gap-2 border-b","data-testid":"mt-tabs",children:[t("button",{className:`pb-2 text-sm font-medium transition-colors ${N==="overview"?"border-b-2 border-primary text-foreground":"text-muted-foreground hover:text-foreground"}`,"data-testid":"mt-tab-overview",onClick:L,type:"button",children:i("Overview")}),n("button",{className:`pb-2 text-sm font-medium transition-colors ${N==="query-insights"?"border-b-2 border-primary text-foreground":"text-muted-foreground hover:text-foreground"}`,"data-testid":"mt-tab-query-insights",onClick:z,type:"button",children:[i("Query insights"),S.length>0&&t("span",{className:"ml-1.5 rounded-full bg-primary/10 px-1.5 py-0.5 text-xs text-primary",children:S.length})]})]}),N==="query-insights"&&S!==void 0&&t(hr,{shardKey:s}),N==="overview"&&c!==null&&t(lr,{currentDelta:M,errorRate:$,history:h,latencyPercentiles:I,metrics:c}),N==="overview"&&c===null&&null,N==="overview"&&t(er,{onOpenTrace:p,shardKey:s}),N==="overview"&&R!==null&&f!==null&&t(tr,{aggregate:R,shardResults:f})]})};export{jr as MetricsPanel};
|
|
1
|
+
import{useLunora as pt}from"@lunora/react";import{useState as pe,useRef as Ge,useEffect as tt,useMemo as xt}from"react";import{L as bt}from"../packem_shared/live-status-BuJdUZFU.mjs";import{ShardInput as yt}from"../packem_shared/ShardInput-C6mjgAh4.mjs";import{B as rt}from"../packem_shared/button-q0UYSmrn.mjs";import{u as Ue}from"../packem_shared/use-admin-query-tlBof8Yg.mjs";import{u as vt}from"../packem_shared/use-open-trace-DMVhpnyG.mjs";import{u as Nt}from"../packem_shared/use-shard-key-BsP3o5wT.mjs";import{useT as xe}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{ADMIN_FUNCTIONS as Oe}from"../packem_shared/ADMIN_FUNCTIONS-B8yyk5BX.mjs";import{c as St}from"../packem_shared/cf-links-CBJ5SywP.mjs";import{i as wt,m as Xe,f as qt,d as Tt,b as _t,c as Ct}from"../packem_shared/internal-Df43vQI0.mjs";import{r as kt,l as Rt}from"../packem_shared/shard-history-CaO3C4KQ.mjs";import{c as Ae}from"react/compiler-runtime";import{f as $t}from"../packem_shared/log-fields-SBxKyBug.mjs";import{B as et}from"../packem_shared/badge-r_5B4LHP.mjs";import{C as he,a as ge,c as Be,d as Mt,b as je}from"../packem_shared/card--2hKx4L2.mjs";import{b as Je,e as oe,T as dt,c as de,a as mt,d as ut}from"../packem_shared/table-D0SBiDu-.mjs";import{S as ft}from"../packem_shared/sparkline-B_sPPO_8.mjs";import{jsxs as n,jsx as t,Fragment as Ye}from"react/jsx-runtime";import{aggregateMetrics as It,computeLatencyPercentiles as Dt,enrichQueryStats as Ft,shardsToAggregate as At}from"../packem_shared/aggregateMetrics-DKFJc-o5.mjs";import{S as me}from"../packem_shared/stat-card-D0Fe04cX.mjs";import{ResponsiveContainer as st,AreaChart as Et,CartesianGrid as lt,XAxis as at,YAxis as it,Tooltip as nt,Area as Ot,LineChart as Lt,Line as zt}from"recharts";import{E as Kt}from"../packem_shared/empty-state-D7jEML_T.mjs";import{c as Pt}from"../packem_shared/utils-bhneXptQ.mjs";import{S as Bt,a as jt,c as Qe,b as Qt,d as Ht}from"../packem_shared/select-DPyS18Vy.mjs";const Ut=/["\\\u0000-\u001F\uD800-\uDFFF]/,ot=l=>Ut.test(l)?JSON.stringify(l):`"${l}"`,Ze=l=>{if(l===void 0)return"null";if(typeof l=="bigint")throw new TypeError("stableStringify: cannot use a bigint in a stable JSON cache key — pass it as a string, or use stableWireKey");if(typeof l=="number"){if(Number.isNaN(l))return"nan";if(l===1/0)return"inf";if(l===-1/0)return"-inf";if(Object.is(l,-0))return"-0"}if(typeof l=="string")return ot(l);if(l===null||typeof l!="object")return JSON.stringify(l);if(Array.isArray(l)){let o="[";for(let a=0;a<l.length;a++)a>0&&(o+=","),o+=Ze(l[a]);return o+"]"}const e=Object.getPrototypeOf(l);if(e!==null&&e!==Object.prototype){const o=l.constructor?.name??"value";throw new TypeError(`stableStringify: cannot use a ${o} in a stable JSON cache key — only plain objects, arrays, and JSON primitives are supported (wire-typed values key via stableWireKey)`)}const i=l,s=Object.keys(i).sort();let r="{",u=!0;for(const o of s){const a=i[o];a!==void 0&&(u?u=!1:r+=",",r+=ot(o),r+=":",r+=Ze(a))}return r+"}"},ht=(l,e,i)=>`${l}:${e}:${Ze(i??{})}`,gt=(l,e)=>l==="gauge"?e.last:l==="histogram"?e.sum/Math.max(1,e.count):e.sum,Jt=(l,e)=>gt(l,e),Vt=l=>gt(l.kind,l),We=l=>Number.isInteger(l)?l.toLocaleString():l.toLocaleString(void 0,{maximumFractionDigits:2}),Gt=l=>Array.isArray(l?.series)?l.series:[],Wt="FUNCTION_NOT_FOUND",Xt=l=>{const e=new Map;if(!Array.isArray(l?.series))return e;for(const i of l.series)e.set(ht(i.kind,i.name,i.attributes),i.points);return e},Yt={counter:"secondary",gauge:"default",histogram:"outline"},Zt=l=>{const e=Ae(18),{name:i,onOpenTrace:s,traceId:r}=l,u=xe();if(r===void 0){let d;return e[0]===Symbol.for("react.memo_cache_sentinel")?(d=t("span",{className:"text-muted-foreground",children:"—"}),e[0]=d):d=e[0],d}let o;e[1]!==r?(o=r.slice(0,8),e[1]=r,e[2]=o):o=e[2];const a=o;if(s===void 0){const d=`mt-instrument-trace-${i}`;let p;return e[3]!==a||e[4]!==d||e[5]!==r?(p=t("span",{className:"text-muted-foreground","data-testid":d,title:r,children:a}),e[3]=a,e[4]=d,e[5]=r,e[6]=p):p=e[6],p}const h=`mt-instrument-trace-${i}`;let y;e[7]!==s||e[8]!==r?(y=()=>{s(r)},e[7]=s,e[8]=r,e[9]=y):y=e[9];let w;e[10]!==u||e[11]!==r?(w=u("Open the exemplar trace {trace}",{trace:r}),e[10]=u,e[11]=r,e[12]=w):w=e[12];let g;return e[13]!==a||e[14]!==h||e[15]!==y||e[16]!==w?(g=t("button",{className:"text-primary underline-offset-4 hover:underline","data-testid":h,onClick:y,title:w,type:"button",children:a}),e[13]=a,e[14]=h,e[15]=y,e[16]=w,e[17]=g):g=e[17],g},er=l=>{const e=Ae(105),{onOpenTrace:i,shardKey:s}=l,r=xe();let u;e[0]===Symbol.for("react.memo_cache_sentinel")?(u={},e[0]=u):u=e[0];let o;e[1]!==s?(o={live:!0,shardKey:s},e[1]=s,e[2]=o):o=e[2];const{data:a,error:h,errorSource:y}=Ue(Oe.getMetricSeries,u,o);let w;e[3]===Symbol.for("react.memo_cache_sentinel")?(w={},e[3]=w):w=e[3];let g;e[4]!==s?(g={live:!0,shardKey:s},e[4]=s,e[5]=g):g=e[5];const{data:d}=Ue(Oe.getMetricHistory,w,g);let p,v,q,C,c,T,x,b,_,k,f,R,$;if(e[6]!==a||e[7]!==h||e[8]!==y||e[9]!==d||e[10]!==i||e[11]!==r){b=Symbol.for("react.early_return_sentinel");e:{const O=Gt(a),L=wt(y)===Wt;if(h!==null&&!L){let m;e[25]!==r?(m=r("Instruments"),e[25]=r,e[26]=m):m=e[26];let B;e[27]!==m?(B=t("h3",{className:"text-sm font-semibold text-foreground",children:m}),e[27]=m,e[28]=B):B=e[28];let j;e[29]!==h||e[30]!==r?(j=r("Instruments unavailable: {error}",{error:h}),e[29]=h,e[30]=r,e[31]=j):j=e[31];let H;e[32]!==j?(H=t("span",{className:"text-xs text-muted-foreground","data-testid":"mt-instruments-error",role:"status",children:j}),e[32]=j,e[33]=H):H=e[33];let U;e[34]!==B||e[35]!==H?(U=n("section",{className:"flex flex-col gap-2","data-testid":"mt-instruments",children:[B,H]}),e[34]=B,e[35]=H,e[36]=U):U=e[36],b=U;break e}if(O.length===0){b=null;break e}const z=Xt(d);let A;e[37]!==r?(A=m=>r(m==="counter"?"Counter":m==="gauge"?"Gauge":"Histogram"),e[37]=r,e[38]=A):A=e[38];const Q=A;c="flex flex-col gap-2",T="mt-instruments";let P;e[39]!==r?(P=r("Instruments"),e[39]=r,e[40]=P):P=e[40],e[41]!==P?(x=t("h3",{className:"text-sm font-semibold text-foreground",children:P}),e[41]=P,e[42]=x):x=e[42],C=he,$="overflow-hidden py-0",q=ge,R="px-0",v=dt,k="mt-instruments-table";let E;e[43]!==r?(E=r("name"),e[43]=r,e[44]=E):E=e[44];let K;e[45]!==E?(K=t(de,{children:E}),e[45]=E,e[46]=K):K=e[46];let V;e[47]!==r?(V=r("kind"),e[47]=r,e[48]=V):V=e[48];let G;e[49]!==V?(G=t(de,{children:V}),e[49]=V,e[50]=G):G=e[50];let W;e[51]!==r?(W=r("value"),e[51]=r,e[52]=W):W=e[52];let X;e[53]!==W?(X=t(de,{className:"text-right",children:W}),e[53]=W,e[54]=X):X=e[54];let Y;e[55]!==r?(Y=r("count"),e[55]=r,e[56]=Y):Y=e[56];let Z;e[57]!==Y?(Z=t(de,{className:"text-right",children:Y}),e[57]=Y,e[58]=Z):Z=e[58];let ee;e[59]!==r?(ee=r("range"),e[59]=r,e[60]=ee):ee=e[60];let te;e[61]!==ee?(te=t(de,{className:"text-right",children:ee}),e[61]=ee,e[62]=te):te=e[62];let re;e[63]!==r?(re=r("trend"),e[63]=r,e[64]=re):re=e[64];let se;e[65]!==re?(se=t(de,{children:re}),e[65]=re,e[66]=se):se=e[66];let le;e[67]!==r?(le=r("trace"),e[67]=r,e[68]=le):le=e[68];let ae;e[69]!==le?(ae=t(de,{children:le}),e[69]=le,e[70]=ae):ae=e[70];let ie;e[71]!==r?(ie=r("dimensions"),e[71]=r,e[72]=ie):ie=e[72];let ne;e[73]!==ie?(ne=t(de,{children:ie}),e[73]=ie,e[74]=ne):ne=e[74],e[75]!==K||e[76]!==G||e[77]!==X||e[78]!==Z||e[79]!==te||e[80]!==se||e[81]!==ae||e[82]!==ne?(f=t(mt,{children:n(Je,{children:[K,G,X,Z,te,se,ae,ne]})}),e[75]=K,e[76]=G,e[77]=X,e[78]=Z,e[79]=te,e[80]=se,e[81]=ae,e[82]=ne,e[83]=f):f=e[83],p=ut,_=O.map(m=>{const B=$t(m.attributes),j=ht(m.kind,m.name,m.attributes),U=(z.get(j)??[]).map(ue=>Jt(m.kind,ue));return n(Je,{"data-testid":`mt-instrument-${m.name}`,children:[t(oe,{className:"font-mono text-xs",title:m.functionPath,children:m.name}),t(oe,{children:t(et,{variant:Yt[m.kind],children:Q(m.kind)})}),t(oe,{className:"text-right font-mono tabular-nums","data-testid":`mt-instrument-value-${m.name}`,children:We(Vt(m))}),t(oe,{className:"text-right tabular-nums text-muted-foreground",children:m.count.toLocaleString()}),t(oe,{className:"text-right font-mono text-xs tabular-nums text-muted-foreground",children:m.min===m.max?"—":`${We(m.min)}–${We(m.max)}`}),t(oe,{children:U.length>=2?t(ft,{ariaLabel:r("{name} trend",{name:m.name}),className:"h-6 w-24 text-foreground",series:U,testId:`mt-instrument-trend-${m.name}`}):t("span",{className:"text-xs text-muted-foreground",children:"—"})}),t(oe,{className:"font-mono text-xs",children:t(Zt,{name:m.name,onOpenTrace:i,traceId:m.exemplarTraceId})}),t(oe,{className:"max-w-64 truncate font-mono text-xs text-muted-foreground",title:B,children:B===""?"—":B})]},j)})}e[6]=a,e[7]=h,e[8]=y,e[9]=d,e[10]=i,e[11]=r,e[12]=p,e[13]=v,e[14]=q,e[15]=C,e[16]=c,e[17]=T,e[18]=x,e[19]=b,e[20]=_,e[21]=k,e[22]=f,e[23]=R,e[24]=$}else p=e[12],v=e[13],q=e[14],C=e[15],c=e[16],T=e[17],x=e[18],b=e[19],_=e[20],k=e[21],f=e[22],R=e[23],$=e[24];if(b!==Symbol.for("react.early_return_sentinel"))return b;let M;e[84]!==p||e[85]!==_?(M=t(p,{children:_}),e[84]=p,e[85]=_,e[86]=M):M=e[86];let I;e[87]!==v||e[88]!==M||e[89]!==k||e[90]!==f?(I=n(v,{"data-testid":k,children:[f,M]}),e[87]=v,e[88]=M,e[89]=k,e[90]=f,e[91]=I):I=e[91];let S;e[92]!==q||e[93]!==I||e[94]!==R?(S=t(q,{className:R,children:I}),e[92]=q,e[93]=I,e[94]=R,e[95]=S):S=e[95];let N;e[96]!==C||e[97]!==S||e[98]!==$?(N=t(C,{className:$,children:S}),e[96]=C,e[97]=S,e[98]=$,e[99]=N):N=e[99];let F;return e[100]!==c||e[101]!==T||e[102]!==x||e[103]!==N?(F=n("section",{className:c,"data-testid":T,children:[x,N]}),e[100]=c,e[101]=T,e[102]=x,e[103]=N,e[104]=F):F=e[104],F},tr=l=>{const e=Ae(74),{aggregate:i,shardResults:s}=l,r=xe();let u;e[0]!==r?(u=r("Shards"),e[0]=r,e[1]=u):u=e[1];let o;e[2]!==i.failed||e[3]!==i.reachable||e[4]!==r?(o=i.failed>0?r("{reachable} reachable, {failed} unreachable",{failed:i.failed,reachable:i.reachable}):r("{reachable} reachable",{reachable:i.reachable}),e[2]=i.failed,e[3]=i.reachable,e[4]=r,e[5]=o):o=e[5];let a;e[6]!==u||e[7]!==o?(a=t(me,{label:u,testId:"mt-agg-shards",value:o}),e[6]=u,e[7]=o,e[8]=a):a=e[8];let h;e[9]!==r?(h=r("Total requests"),e[9]=r,e[10]=h):h=e[10];let y;e[11]!==i.totalRequests||e[12]!==h?(y=t(me,{label:h,testId:"mt-agg-requests",value:i.totalRequests}),e[11]=i.totalRequests,e[12]=h,e[13]=y):y=e[13];let w;e[14]!==r?(w=r("Total errors"),e[14]=r,e[15]=w):w=e[15];let g;e[16]!==i.totalErrors||e[17]!==w?(g=t(me,{label:w,testId:"mt-agg-errors",value:i.totalErrors}),e[16]=i.totalErrors,e[17]=w,e[18]=g):g=e[18];let d;e[19]!==r?(d=r("Total database size"),e[19]=r,e[20]=d):d=e[20];let p;e[21]!==i.totalDatabaseSize?(p=Xe(i.totalDatabaseSize),e[21]=i.totalDatabaseSize,e[22]=p):p=e[22];let v;e[23]!==d||e[24]!==p?(v=t(me,{label:d,testId:"mt-agg-db-size",value:p}),e[23]=d,e[24]=p,e[25]=v):v=e[25];let q;e[26]!==r?(q=r("Combined cache hit rate"),e[26]=r,e[27]=q):q=e[27];let C;e[28]!==i.hitRate||e[29]!==r?(C=i.hitRate===null?r("no cache configured"):`${(i.hitRate*100).toFixed(1)}%`,e[28]=i.hitRate,e[29]=r,e[30]=C):C=e[30];let c;e[31]!==q||e[32]!==C?(c=t(me,{label:q,testId:"mt-agg-cache",value:C}),e[31]=q,e[32]=C,e[33]=c):c=e[33];let T;e[34]!==v||e[35]!==c||e[36]!==a||e[37]!==y||e[38]!==g?(T=n("dl",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3","data-testid":"mt-aggregate-stats",children:[a,y,g,v,c]}),e[34]=v,e[35]=c,e[36]=a,e[37]=y,e[38]=g,e[39]=T):T=e[39];let x;e[40]!==r?(x=r("shard"),e[40]=r,e[41]=x):x=e[41];let b;e[42]!==x?(b=t(de,{children:x}),e[42]=x,e[43]=b):b=e[43];let _;e[44]!==r?(_=r("requests"),e[44]=r,e[45]=_):_=e[45];let k;e[46]!==_?(k=t(de,{children:_}),e[46]=_,e[47]=k):k=e[47];let f;e[48]!==r?(f=r("errors"),e[48]=r,e[49]=f):f=e[49];let R;e[50]!==f?(R=t(de,{children:f}),e[50]=f,e[51]=R):R=e[51];let $;e[52]!==r?($=r("db size"),e[52]=r,e[53]=$):$=e[53];let M;e[54]!==$?(M=t(de,{children:$}),e[54]=$,e[55]=M):M=e[55];let I;e[56]!==b||e[57]!==k||e[58]!==R||e[59]!==M?(I=t(mt,{children:n(Je,{children:[b,k,R,M]})}),e[56]=b,e[57]=k,e[58]=R,e[59]=M,e[60]=I):I=e[60];let S;if(e[61]!==s||e[62]!==r){let L;e[64]!==r?(L=z=>n(Je,{"data-testid":`mt-agg-row-${z.shard}`,children:[t(oe,{children:z.shard}),z.metrics===null?t(oe,{className:"text-destructive",colSpan:3,children:z.error??r("unreachable")}):n(Ye,{children:[t(oe,{className:"tabular-nums",children:z.metrics.requests}),t(oe,{className:"tabular-nums",children:z.metrics.errors}),t(oe,{className:"tabular-nums",children:Xe(z.metrics.databaseSize)})]})]},z.shard),e[64]=r,e[65]=L):L=e[65],S=s.map(L),e[61]=s,e[62]=r,e[63]=S}else S=e[63];let N;e[66]!==S?(N=t(ut,{children:S}),e[66]=S,e[67]=N):N=e[67];let F;e[68]!==I||e[69]!==N?(F=t(he,{className:"overflow-hidden py-0",children:t(ge,{className:"px-0",children:n(dt,{"data-testid":"mt-agg-table",children:[I,N]})})}),e[68]=I,e[69]=N,e[70]=F):F=e[70];let O;return e[71]!==T||e[72]!==F?(O=n("div",{className:"flex flex-col gap-4","data-testid":"mt-aggregate-view",children:[T,F]}),e[71]=T,e[72]=F,e[73]=O):O=e[73],O},rr=l=>{const e=Math.floor(l/1e3),i=Math.floor(e/3600),s=Math.floor(e%3600/60),r=e%60;return i>0?`${i.toString()}h ${s.toString()}m`:s>0?`${s.toString()}m ${r.toString()}s`:`${r.toString()}s`},sr=(l,e)=>{const i=l+e;return i===0?"—":`${(l/i*100).toFixed(1)}%`},ct=l=>l<=0?"—":l<1?`${(l*1e3).toFixed(0)}μs`:l<1e3?`${l.toFixed(1)}ms`:`${(l/1e3).toFixed(2)}s`,lr=l=>{const e=Ae(75),{currentDelta:i,errorRate:s,history:r,latencyPercentiles:u,metrics:o}=l,a=xe(),{cache:h}=o;let y;e[0]!==r||e[1]!==a?(y=r.length>=2?t(ft,{ariaLabel:a("Requests per interval over time"),className:"h-7 w-24 text-foreground",series:r,testId:"mt-sparkline"}):void 0,e[0]=r,e[1]=a,e[2]=y):y=e[2];let w;e[3]!==i||e[4]!==r.length||e[5]!==a?(w=r.length>=2?n(Ye,{children:[t("span",{className:"font-semibold text-foreground",children:`+${i.toLocaleString()}`})," ",a("last interval")]}):t("span",{"data-testid":"mt-sparkline-empty",children:a("collecting samples…")}),e[3]=i,e[4]=r.length,e[5]=a,e[6]=w):w=e[6];let g;e[7]!==a?(g=a("Requests"),e[7]=a,e[8]=g):g=e[8];let d;e[9]!==o.requests||e[10]!==y||e[11]!==w||e[12]!==g?(d=t(me,{chart:y,footer:w,label:g,testId:"mt-requests",value:o.requests}),e[9]=o.requests,e[10]=y,e[11]=w,e[12]=g,e[13]=d):d=e[13];let p;e[14]!==s||e[15]!==a?(p=a("{rate} error rate",{rate:s}),e[14]=s,e[15]=a,e[16]=p):p=e[16];let v;e[17]!==a?(v=a("Errors"),e[17]=a,e[18]=v):v=e[18];let q;e[19]!==s||e[20]!==o.errors?(q=n(Ye,{children:[o.errors," (",s,")"]}),e[19]=s,e[20]=o.errors,e[21]=q):q=e[21];let C;e[22]!==p||e[23]!==v||e[24]!==q?(C=t(me,{footer:p,label:v,testId:"mt-errors",value:q}),e[22]=p,e[23]=v,e[24]=q,e[25]=C):C=e[25];let c;e[26]!==u.p90?(c=u.p90>0?`P90 ${ct(u.p90)}`:void 0,e[26]=u.p90,e[27]=c):c=e[27];let T;e[28]!==a?(T=a("P95 latency"),e[28]=a,e[29]=T):T=e[29];let x;e[30]!==u.p95?(x=u.p95>0?ct(u.p95):"—",e[30]=u.p95,e[31]=x):x=e[31];let b;e[32]!==T||e[33]!==x||e[34]!==c?(b=t(me,{footer:c,label:T,testId:"mt-p95",value:x}),e[32]=T,e[33]=x,e[34]=c,e[35]=b):b=e[35];let _;e[36]!==h||e[37]!==a?(_=h?`${h.entries.toLocaleString()} ${a("cache entries")}`:void 0,e[36]=h,e[37]=a,e[38]=_):_=e[38];let k;e[39]!==a?(k=a("Database size"),e[39]=a,e[40]=k):k=e[40];let f;e[41]!==o.databaseSize?(f=Xe(o.databaseSize),e[41]=o.databaseSize,e[42]=f):f=e[42];let R;e[43]!==_||e[44]!==k||e[45]!==f?(R=t(me,{footer:_,label:k,testId:"mt-db-size",value:f}),e[43]=_,e[44]=k,e[45]=f,e[46]=R):R=e[46];let $;e[47]!==a?($=a("Shard"),e[47]=a,e[48]=$):$=e[48];let M;e[49]!==o.shard||e[50]!==$?(M=t(me,{label:$,testId:"mt-shard",value:o.shard}),e[49]=o.shard,e[50]=$,e[51]=M):M=e[51];let I;e[52]!==a?(I=a("Uptime"),e[52]=a,e[53]=I):I=e[53];let S;e[54]!==o.uptimeMs?(S=rr(o.uptimeMs),e[54]=o.uptimeMs,e[55]=S):S=e[55];let N;e[56]!==I||e[57]!==S?(N=t(me,{label:I,testId:"mt-uptime",value:S}),e[56]=I,e[57]=S,e[58]=N):N=e[58];let F;e[59]!==a?(F=a("Cache hit rate"),e[59]=a,e[60]=F):F=e[60];let O;e[61]!==h||e[62]!==a?(O=h?a("{rate} ({count} entries)",{count:h.entries,rate:sr(h.hits,h.misses)}):a("no cache configured"),e[61]=h,e[62]=a,e[63]=O):O=e[63];let L;e[64]!==F||e[65]!==O?(L=t(me,{label:F,testId:"mt-cache",value:O}),e[64]=F,e[65]=O,e[66]=L):L=e[66];let z;return e[67]!==b||e[68]!==R||e[69]!==M||e[70]!==N||e[71]!==L||e[72]!==d||e[73]!==C?(z=n("dl",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4","data-testid":"mt-stats",children:[d,C,b,R,M,N,L]}),e[67]=b,e[68]=R,e[69]=M,e[70]=N,e[71]=L,e[72]=d,e[73]=C,e[74]=z):z=e[74],z},Ve=l=>l>=100?"critical":l>=50?"warning":"good",Ee=l=>l<1?`${(l*1e3).toFixed(0)}μs`:l<1e3?`${l.toFixed(1)}ms`:`${(l/1e3).toFixed(2)}s`,He=l=>l>=1e9?`${(l/1e9).toFixed(1)}B`:l>=1e6?`${(l/1e6).toFixed(1)}M`:l>=1e3?`${(l/1e3).toFixed(1)}K`:l.toLocaleString(),ar=l=>{const e=Ae(3),{level:i}=l;if(i==="critical"){let r;return e[0]===Symbol.for("react.memo_cache_sentinel")?(r=t(et,{variant:"destructive",children:"Slow"}),e[0]=r):r=e[0],r}if(i==="warning"){let r;return e[1]===Symbol.for("react.memo_cache_sentinel")?(r=t("span",{className:"inline-flex items-center gap-1 rounded-md border border-transparent bg-warning/10 px-2 py-0.5 text-xs font-medium text-warning",children:"Moderate"}),e[1]=r):r=e[1],r}let s;return e[2]===Symbol.for("react.memo_cache_sentinel")?(s=t("span",{className:"inline-flex items-center gap-1 rounded-md border border-transparent bg-success/10 px-2 py-0.5 text-xs font-medium text-success",children:"Fast"}),e[2]=s):s=e[2],s},ir=(l,e)=>{const i=[...l];return i.sort((s,r)=>{switch(e){case"avgTime":return r.avgDurationMs-s.avgDurationMs;case"execCount":return r.execCount-s.execCount;case"rowsRead":return r.rowsRead-s.rowsRead;default:return r.totalDurationMs-s.totalDurationMs}}),i},nr=l=>{const e=Ae(161),{queryStats:i}=l,s=xe(),[r,u]=pe("totalTime");let o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=new Set,e[0]=o):o=e[0];const[a,h]=pe(o);let y;e[1]===Symbol.for("react.memo_cache_sentinel")?(y=$=>{$!==null&&u($)},e[1]=y):y=e[1];const w=y;let g,d,p,v,q,C,c,T,x,b;if(e[2]!==a||e[3]!==i||e[4]!==r||e[5]!==s){p=Symbol.for("react.early_return_sentinel");e:{const $=ir(i,r);let M;e[16]!==i?(M=i.filter(or),e[16]=i,e[17]=M):M=e[17];const I=M.length;let S;e[18]!==i?(S=i.filter(cr),e[18]=i,e[19]=S):S=e[19];const N=S.length;let F;e[20]!==i?(F=i.filter(dr),e[20]=i,e[21]=F):F=e[21];const O=F.length;let L;e[22]===Symbol.for("react.memo_cache_sentinel")?(L=D=>{h(ce=>{const J=new Set(ce);return J.has(D)?J.delete(D):J.add(D),J})},e[22]=L):L=e[22];const z=L;if(i.length===0){let D;e[23]!==s?(D=s("No query insights yet"),e[23]=s,e[24]=D):D=e[24];let ce;e[25]!==D?(ce=t("p",{className:"text-lg font-medium","data-testid":"qi-empty",children:D}),e[25]=D,e[26]=ce):ce=e[26];let J;e[27]!==s?(J=s("Query insights appear once statements are executed against this shard."),e[27]=s,e[28]=J):J=e[28];let fe;e[29]!==J?(fe=t("p",{className:"mt-1 text-sm",children:J}),e[29]=J,e[30]=fe):fe=e[30];let Pe;e[31]!==ce||e[32]!==fe?(Pe=t(he,{children:t(ge,{className:"py-12",children:n("div",{className:"text-center text-muted-foreground",children:[ce,fe]})})}),e[31]=ce,e[32]=fe,e[33]=Pe):Pe=e[33],p=Pe;break e}c="space-y-4",T="qi-root";let A;e[34]!==s?(A=s("Critical queries"),e[34]=s,e[35]=A):A=e[35];let Q;e[36]!==A?(Q=t(Be,{className:"pb-2",children:t(je,{className:"text-sm font-medium",children:A})}),e[36]=A,e[37]=Q):Q=e[37];let P;e[38]!==I?(P=t("div",{className:"text-2xl font-bold text-destructive","data-testid":"qi-critical",children:I}),e[38]=I,e[39]=P):P=e[39];let E;e[40]!==s?(E=s(">100ms avg execution"),e[40]=s,e[41]=E):E=e[41];let K;e[42]!==E?(K=t("p",{className:"text-xs text-muted-foreground",children:E}),e[42]=E,e[43]=K):K=e[43];let V;e[44]!==P||e[45]!==K?(V=n(ge,{children:[P,K]}),e[44]=P,e[45]=K,e[46]=V):V=e[46];let G;e[47]!==Q||e[48]!==V?(G=n(he,{children:[Q,V]}),e[47]=Q,e[48]=V,e[49]=G):G=e[49];let W;e[50]!==s?(W=s("Moderate queries"),e[50]=s,e[51]=W):W=e[51];let X;e[52]!==W?(X=t(Be,{className:"pb-2",children:t(je,{className:"text-sm font-medium",children:W})}),e[52]=W,e[53]=X):X=e[53];let Y;e[54]!==N?(Y=t("div",{className:"text-2xl font-bold text-warning","data-testid":"qi-moderate",children:N}),e[54]=N,e[55]=Y):Y=e[55];let Z;e[56]!==s?(Z=s("50–100ms avg execution"),e[56]=s,e[57]=Z):Z=e[57];let ee;e[58]!==Z?(ee=t("p",{className:"text-xs text-muted-foreground",children:Z}),e[58]=Z,e[59]=ee):ee=e[59];let te;e[60]!==Y||e[61]!==ee?(te=n(ge,{children:[Y,ee]}),e[60]=Y,e[61]=ee,e[62]=te):te=e[62];let re;e[63]!==X||e[64]!==te?(re=n(he,{children:[X,te]}),e[63]=X,e[64]=te,e[65]=re):re=e[65];let se;e[66]!==s?(se=s("Fast queries"),e[66]=s,e[67]=se):se=e[67];let le;e[68]!==se?(le=t(Be,{className:"pb-2",children:t(je,{className:"text-sm font-medium",children:se})}),e[68]=se,e[69]=le):le=e[69];let ae;e[70]!==O?(ae=t("div",{className:"text-2xl font-bold text-success","data-testid":"qi-fast",children:O}),e[70]=O,e[71]=ae):ae=e[71];let ie;e[72]!==s?(ie=s("<50ms avg execution"),e[72]=s,e[73]=ie):ie=e[73];let ne;e[74]!==ie?(ne=t("p",{className:"text-xs text-muted-foreground",children:ie}),e[74]=ie,e[75]=ne):ne=e[75];let m;e[76]!==ae||e[77]!==ne?(m=n(ge,{children:[ae,ne]}),e[76]=ae,e[77]=ne,e[78]=m):m=e[78];let B;e[79]!==le||e[80]!==m?(B=n(he,{children:[le,m]}),e[79]=le,e[80]=m,e[81]=B):B=e[81],e[82]!==G||e[83]!==re||e[84]!==B?(x=n("div",{className:"grid gap-4 md:grid-cols-3",children:[G,re,B]}),e[82]=G,e[83]=re,e[84]=B,e[85]=x):x=e[85];let j;e[86]!==s?(j=s("Query leaderboard"),e[86]=s,e[87]=j):j=e[87];let H;e[88]!==j?(H=t("h3",{className:"text-lg font-semibold",children:j}),e[88]=j,e[89]=H):H=e[89];let U;e[90]!==r||e[91]!==s?(U=s("Slow queries sorted by {sortField}",{sortField:s(r)}),e[90]=r,e[91]=s,e[92]=U):U=e[92];let ue;e[93]!==U?(ue=t("p",{className:"text-sm text-muted-foreground",children:U}),e[93]=U,e[94]=ue):ue=e[94];let be;e[95]!==H||e[96]!==ue?(be=n("div",{children:[H,ue]}),e[95]=H,e[96]=ue,e[97]=be):be=e[97];let ye;e[98]!==s?(ye=s("Sort by"),e[98]=s,e[99]=ye):ye=e[99];let ve;e[100]!==ye?(ve=t("span",{className:"text-sm text-muted-foreground",children:ye}),e[100]=ye,e[101]=ve):ve=e[101];let Ne;e[102]!==s?(Ne=s("Sort queries by"),e[102]=s,e[103]=Ne):Ne=e[103];let Le;e[104]===Symbol.for("react.memo_cache_sentinel")?(Le=t(Bt,{}),e[104]=Le):Le=e[104];let Se;e[105]!==Ne?(Se=t(jt,{"aria-label":Ne,className:"w-[140px]","data-testid":"qi-sort",children:Le}),e[105]=Ne,e[106]=Se):Se=e[106];let we;e[107]!==s?(we=s("Total time"),e[107]=s,e[108]=we):we=e[108];let qe;e[109]!==we?(qe=t(Qe,{value:"totalTime",children:we}),e[109]=we,e[110]=qe):qe=e[110];let Te;e[111]!==s?(Te=s("Avg time"),e[111]=s,e[112]=Te):Te=e[112];let _e;e[113]!==Te?(_e=t(Qe,{value:"avgTime",children:Te}),e[113]=Te,e[114]=_e):_e=e[114];let Ce;e[115]!==s?(Ce=s("Execution count"),e[115]=s,e[116]=Ce):Ce=e[116];let ke;e[117]!==Ce?(ke=t(Qe,{value:"execCount",children:Ce}),e[117]=Ce,e[118]=ke):ke=e[118];let Re;e[119]!==s?(Re=s("Rows read"),e[119]=s,e[120]=Re):Re=e[120];let $e;e[121]!==Re?($e=t(Qe,{value:"rowsRead",children:Re}),e[121]=Re,e[122]=$e):$e=e[122];let Me;e[123]!==qe||e[124]!==_e||e[125]!==ke||e[126]!==$e?(Me=n(Qt,{children:[qe,_e,ke,$e]}),e[123]=qe,e[124]=_e,e[125]=ke,e[126]=$e,e[127]=Me):Me=e[127];let Ie;e[128]!==r||e[129]!==Se||e[130]!==Me?(Ie=n(Ht,{onValueChange:w,value:r,children:[Se,Me]}),e[128]=r,e[129]=Se,e[130]=Me,e[131]=Ie):Ie=e[131];let De;e[132]!==ve||e[133]!==Ie?(De=n("div",{className:"flex items-center gap-2",children:[ve,Ie]}),e[132]=ve,e[133]=Ie,e[134]=De):De=e[134],e[135]!==be||e[136]!==De?(b=n("div",{className:"flex items-center justify-between",children:[be,De]}),e[135]=be,e[136]=De,e[137]=b):b=e[137],d=he;let Fe;e[138]!==s?(Fe=s("Statements"),e[138]=s,e[139]=Fe):Fe=e[139];let ze;e[140]!==Fe?(ze=t(je,{children:Fe}),e[140]=Fe,e[141]=ze):ze=e[141],C=n(Be,{children:[ze,t(Mt,{children:s("{count} tracked statements",{count:$.length})})]}),g=ge,v="space-y-2";let Ke;e[142]!==a||e[143]!==s?(Ke=D=>{const ce=D.normalizedSql,J=a.has(ce),fe=Ve(D.avgDurationMs);return n("div",{className:"overflow-hidden rounded-lg border","data-testid":"qi-row",children:[n("button",{"aria-expanded":J,className:"flex w-full items-center justify-between p-3 text-left transition-colors hover:bg-muted/50",onClick:()=>{z(ce)},type:"button",children:[n("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[t(ar,{level:fe}),t("span",{className:"max-w-[300px] truncate font-mono text-sm lg:max-w-[500px]",children:D.normalizedSql})]}),n("div",{className:"flex shrink-0 items-center gap-4",children:[n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Ee(D.totalDurationMs)}),t("div",{className:"text-xs text-muted-foreground",children:s("total")})]}),n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Ee(D.avgDurationMs)}),t("div",{className:"text-xs text-muted-foreground",children:s("avg")})]}),D.p95DurationMs!==void 0&&n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:Ee(D.p95DurationMs)}),t("div",{className:"text-xs text-muted-foreground",children:s("p95")})]}),n("div",{className:"text-right",children:[t("div",{className:"text-sm font-medium",children:He(D.execCount)}),t("div",{className:"text-xs text-muted-foreground",children:s("calls")})]})]})]}),J&&n("div",{className:"space-y-3 border-t bg-muted/30 p-4",children:[n("div",{children:[t("p",{className:"mb-2 text-sm font-medium",children:s("Full statement")}),t("pre",{className:"overflow-x-auto rounded-md bg-muted p-3 font-mono text-sm whitespace-pre-wrap break-all",children:D.normalizedSql})]}),n("div",{className:"grid grid-cols-2 gap-4 text-sm md:grid-cols-4",children:[D.p50DurationMs!==void 0&&n("div",{children:[t("span",{className:"text-muted-foreground",children:s("p50")}),t("span",{className:"block font-medium tabular-nums",children:Ee(D.p50DurationMs)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Exec count")}),t("span",{className:"block font-medium tabular-nums",children:He(D.execCount)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Total time")}),t("span",{className:"block font-medium tabular-nums",children:Ee(D.totalDurationMs)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Rows read")}),t("span",{className:"block font-medium tabular-nums",children:He(D.rowsRead)})]}),n("div",{children:[t("span",{className:"text-muted-foreground",children:s("Rows written")}),t("span",{className:"block font-medium tabular-nums",children:He(D.rowsWritten)})]})]})]})]},ce)},e[142]=a,e[143]=s,e[144]=Ke):Ke=e[144],q=$.map(Ke)}e[2]=a,e[3]=i,e[4]=r,e[5]=s,e[6]=g,e[7]=d,e[8]=p,e[9]=v,e[10]=q,e[11]=C,e[12]=c,e[13]=T,e[14]=x,e[15]=b}else g=e[6],d=e[7],p=e[8],v=e[9],q=e[10],C=e[11],c=e[12],T=e[13],x=e[14],b=e[15];if(p!==Symbol.for("react.early_return_sentinel"))return p;let _;e[145]!==v||e[146]!==q?(_=t("div",{className:v,children:q}),e[145]=v,e[146]=q,e[147]=_):_=e[147];let k;e[148]!==g||e[149]!==_?(k=t(g,{children:_}),e[148]=g,e[149]=_,e[150]=k):k=e[150];let f;e[151]!==d||e[152]!==k||e[153]!==C?(f=n(d,{children:[C,k]}),e[151]=d,e[152]=k,e[153]=C,e[154]=f):f=e[154];let R;return e[155]!==f||e[156]!==c||e[157]!==T||e[158]!==x||e[159]!==b?(R=n("div",{className:c,"data-testid":T,children:[x,b,f]}),e[155]=f,e[156]=c,e[157]=T,e[158]=x,e[159]=b,e[160]=R):R=e[160],R};function or(l){return Ve(l.avgDurationMs)==="critical"}function cr(l){return Ve(l.avgDurationMs)==="warning"}function dr(l){return Ve(l.avgDurationMs)==="good"}const mr=["1m","5m","15m","1h"],ur=l=>new Date(l).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"}),fr=l=>l.map(e=>({avg:Math.round(e.avgDurationMs*100)/100,execs:e.execCount,label:ur(e.bucketMs)})),hr=({shardKey:l=""})=>{const e=xe(),[i,s]=pe("15m"),u=Ue(Oe.getQueryInsights,{range:i},{live:!0,shardKey:l}).data,o=fr(u?.buckets??[]);return n("div",{className:"flex flex-col gap-4","data-testid":"qi-range",children:[n("div",{className:"flex flex-wrap items-center gap-2",children:[t("div",{className:"flex gap-1 rounded-lg border border-border p-0.5","data-testid":"qi-ranges",role:"group",children:mr.map(a=>t("button",{"aria-pressed":a===i,className:Pt("rounded px-2 py-1 text-xs outline-none transition-colors hover:bg-accent focus-visible:bg-accent",a===i&&"bg-accent font-medium text-foreground"),"data-testid":`qi-range-${a}`,onClick:()=>{s(a)},type:"button",children:a},a))}),u?.capped===!0&&t(et,{"data-testid":"qi-capped",variant:"secondary",children:e("showing a capped set")})]}),o.length===0?t(Kt,{description:e("Statements executed in the selected window appear here, with throughput and latency over time."),testId:"qi-empty",title:e("No queries in this window.")}):n("div",{className:"grid gap-4 lg:grid-cols-2",children:[n("figure",{className:"rounded-xl border border-border p-3","data-testid":"qi-throughput",children:[t("figcaption",{className:"mb-2 text-xs font-medium text-muted-foreground",children:e("Throughput")}),t(st,{height:140,width:"100%",children:n(Et,{data:o,children:[t(lt,{strokeDasharray:"3 3",vertical:!1}),t(at,{dataKey:"label",fontSize:10,tickLine:!1}),t(it,{allowDecimals:!1,fontSize:10,tickLine:!1,width:32}),t(nt,{}),t(Ot,{dataKey:"execs",fill:"var(--color-primary)",fillOpacity:.15,stroke:"var(--color-primary)",type:"monotone"})]})})]}),n("figure",{className:"rounded-xl border border-border p-3","data-testid":"qi-latency",children:[t("figcaption",{className:"mb-2 text-xs font-medium text-muted-foreground",children:e("Mean latency (ms)")}),t(st,{height:140,width:"100%",children:n(Lt,{data:o,children:[t(lt,{strokeDasharray:"3 3",vertical:!1}),t(at,{dataKey:"label",fontSize:10,tickLine:!1}),t(it,{fontSize:10,tickLine:!1,width:32}),t(nt,{}),t(zt,{dataKey:"avg",dot:!1,stroke:"var(--color-destructive)",type:"monotone"})]})})]})]}),t(nr,{queryStats:u?.entries??[]})]})},gr=Ct(Oe.getMetrics),pr=(l,e)=>l?e:"overview",jr=({initialShardKey:l})=>{const e=pt(),i=xe(),{queryShardKey:s,setShardKey:r,shardKey:u}=Nt(l),[o,a]=pe("overview"),[h,y]=pe([]),w=Ge(null),g=Ge(null),d=Ge(!0);tt(()=>(d.current=!0,()=>{d.current=!1}),[]);const p=vt(s),{data:v,error:q,liveError:C}=Ue(Oe.getMetrics,{},{live:!0,shardKey:s}),c=v??null;tt(()=>{if(v===void 0)return;kt(s);const A=v,Q=w.current,P=g.current!==null&&g.current!==A.shard;if(g.current=A.shard,w.current=A.requests,P){y([]);return}Q!==null&&A.requests>=Q&&y(E=>[...E,A.requests-Q].slice(-30))},[v,s]);const[T,x]=pe(null),[b,_]=pe(!1),k=async()=>{_(!0);const A=u,Q=At(A,Rt());try{const P=await Promise.all(Q.map(async E=>{try{const K=await e.query(gr,{},Tt(E));return{error:null,metrics:K,shard:E===""?K.shard:E}}catch(K){return{error:_t(K),metrics:null,shard:E===""?"__root__":E}}}));d.current&&x({results:P,shard:A})}finally{d.current&&_(!1)}},f=T?.shard===u?T.results:null,R=f===null?null:It(f),$=c===null||c.requests===0?"—":`${(c.errors/c.requests*100).toFixed(1)}%`,M=h.length>0?h.at(-1):0,I=c?Dt(c):{p90:0,p95:0},S=xt(()=>{if(!c||!("queryStats"in c))return;const A=c.queryStats;if(!(!A||!Array.isArray(A)))return Ft(A)},[c]),N=pr(S!==void 0,o),F=()=>{qt(k())},O=()=>{x(null)},L=()=>{a("overview")},z=()=>{a("query-insights")};return n("div",{className:"flex flex-col gap-4","data-testid":"lunora-metrics",children:[n("div",{className:"flex flex-wrap items-center gap-2",children:[t(yt,{onChange:r,testId:"mt-shard-input",value:u}),t(bt,{message:C,prefix:"mt"}),t(rt,{"data-testid":"mt-aggregate",disabled:b,onClick:F,size:"sm",type:"button",variant:"secondary",children:i(b?"Aggregating…":"All shards")}),f!==null&&t(rt,{"data-testid":"mt-aggregate-clear",onClick:O,size:"sm",type:"button",variant:"ghost",children:i("Hide")}),t("a",{className:"text-sm text-primary underline-offset-4 hover:underline","data-testid":"mt-cf-link",href:St,rel:"noreferrer",target:"_blank",children:i("Open in Cloudflare")})]}),q!==null&&t("p",{className:"text-sm text-destructive","data-testid":"mt-error",role:"alert",children:q}),S!==void 0&&n("div",{className:"flex gap-2 border-b","data-testid":"mt-tabs",children:[t("button",{className:`pb-2 text-sm font-medium transition-colors ${N==="overview"?"border-b-2 border-primary text-foreground":"text-muted-foreground hover:text-foreground"}`,"data-testid":"mt-tab-overview",onClick:L,type:"button",children:i("Overview")}),n("button",{className:`pb-2 text-sm font-medium transition-colors ${N==="query-insights"?"border-b-2 border-primary text-foreground":"text-muted-foreground hover:text-foreground"}`,"data-testid":"mt-tab-query-insights",onClick:z,type:"button",children:[i("Query insights"),S.length>0&&t("span",{className:"ml-1.5 rounded-full bg-primary/10 px-1.5 py-0.5 text-xs text-primary",children:S.length})]})]}),N==="query-insights"&&S!==void 0&&t(hr,{shardKey:s}),N==="overview"&&c!==null&&t(lr,{currentDelta:M,errorRate:$,history:h,latencyPercentiles:I,metrics:c}),N==="overview"&&c===null&&null,N==="overview"&&t(er,{onOpenTrace:p,shardKey:s}),N==="overview"&&R!==null&&f!==null&&t(tr,{aggregate:R,shardResults:f})]})};export{jr as MetricsPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as G}from"react/compiler-runtime";import{useLunora as se}from"@lunora/react";import{useState as F}from"react";import{B as L}from"../packem_shared/button-q0UYSmrn.mjs";import{a as kt,C as wt}from"../packem_shared/card--2hKx4L2.mjs";import{E as Ve}from"../packem_shared/empty-state-D7jEML_T.mjs";import{c as de,a as Dt,b as mt,e as ce,d as zt,T as At}from"../packem_shared/table-D0SBiDu-.mjs";import{b as Ke}from"../packem_shared/use-admin-query-tlBof8Yg.mjs";import{u as Rt}from"../packem_shared/use-auth-config-B9hH2tQa.mjs";import{useAutoRefresh as Nt}from"../packem_shared/DEFAULT_AUTO_REFRESH_MS-DuULO4XM.mjs";import{useT as q}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{k as z,f as Et,b as Ft,h as jt}from"../packem_shared/internal-Df43vQI0.mjs";import{u as Lt,A as Ot}from"../packem_shared/auth-pager-DiDnXsfe.mjs";import{I as X}from"../packem_shared/input-CXhxesPC.mjs";import{L as Pt}from"../packem_shared/label-DKFzyHq6.mjs";import{M as Bt}from"../packem_shared/modal-shell-CDztwLnv.mjs";import{T as _t}from"../packem_shared/textarea--40GKAyz.mjs";import{u as ae}from"../packem_shared/use-async-submit-CZqCMTJ_.mjs";import{jsx as n,jsxs as R,Fragment as dt}from"react/jsx-runtime";const Tt=t=>{const e=JSON.parse(t);if(typeof e!="object"||e===null||Array.isArray(e))throw new TypeError("Expected a JSON object");return e},Qt=t=>{const e=Tt(t),l={};for(const[d,u]of Object.entries(e)){if(!Array.isArray(u)||u.some(s=>typeof s!="string"))throw new TypeError(`"${d}" must map to an array of action strings`);l[d]=u}return l},$t=t=>t==null||t===""?"":typeof t=="string"?t:JSON.stringify(t,null,2),V=t=>{const e=G(6),{children:l,htmlFor:d,label:u}=t;let s;e[0]!==d||e[1]!==u?(s=n(Pt,{htmlFor:d,children:u}),e[0]=d,e[1]=u,e[2]=s):s=e[2];let o;return e[3]!==l||e[4]!==s?(o=R("div",{className:"flex flex-col gap-1",children:[s,l]}),e[3]=l,e[4]=s,e[5]=o):o=e[5],o},me=({busy:t,canSubmit:e,children:l,destructive:d=!1,error:u,onClose:s,onSubmit:o,submitLabel:i,testId:r,title:m})=>{const a=q();return R(Bt,{label:m,onClose:s,panelTestId:`${r}-panel`,testId:`${r}-overlay`,variant:"dialog",children:[n("h2",{className:"text-sm font-semibold text-foreground",children:m}),l,u!==null&&n("p",{className:"text-sm text-destructive","data-testid":`${r}-error`,role:"alert",children:u}),R("div",{className:"flex justify-end gap-2 pt-1",children:[n(L,{"data-testid":`${r}-cancel`,onClick:s,size:"sm",type:"button",variant:"outline",children:a("Cancel")}),n(L,{"data-testid":`${r}-submit`,disabled:t||!e,onClick:o,size:"sm",type:"button",variant:d?"destructive":"default",children:t?a("Saving…"):i})]})]})},yt=t=>{const e=G(79),{mode:l,onClose:d,onDone:u,org:s}=t,o=se(),i=q(),{busy:r,error:m,run:a}=ae();let h;e[0]!==s?(h=s?z(s.name):"",e[0]=s,e[1]=h):h=e[1];const[c,g]=F(h);let p;e[2]!==s?(p=s?z(s.slug):"",e[2]=s,e[3]=p):p=e[3];const[f,b]=F(p);let S;e[4]!==s?(S=s?z(s.logo):"",e[4]=s,e[5]=S):S=e[5];const[v,C]=F(S),[y,I]=F("");let x;e[6]!==l||e[7]!==s?.metadata?(x=l==="edit"?$t(s?.metadata):"",e[6]=l,e[7]=s?.metadata,e[8]=x):x=e[8];const[k,D]=F(x);let O;e[9]!==o||e[10]!==v||e[11]!==k||e[12]!==l||e[13]!==c||e[14]!==d||e[15]!==u||e[16]!==s?.id||e[17]!==y||e[18]!==a||e[19]!==f?(O=()=>{a(async()=>{const w=k.trim()===""?void 0:Tt(k);l==="create"?await o.createAuthOrganization({logo:v.trim()===""?void 0:v.trim(),metadata:w,name:c.trim(),ownerId:y.trim()===""?void 0:y.trim(),slug:f.trim()===""?void 0:f.trim()}):await o.updateAuthOrganization({logo:v.trim()===""?void 0:v.trim(),metadata:w,name:c.trim()===""?void 0:c.trim(),organizationId:z(s?.id),slug:f.trim()===""?void 0:f.trim()}),u(),d()})},e[9]=o,e[10]=v,e[11]=k,e[12]=l,e[13]=c,e[14]=d,e[15]=u,e[16]=s?.id,e[17]=y,e[18]=a,e[19]=f,e[20]=O):O=e[20];const A=O;let N;e[21]!==l||e[22]!==c?(N=c.trim()!==""||l==="edit",e[21]=l,e[22]=c,e[23]=N):N=e[23];let _;e[24]!==l||e[25]!==i?(_=i(l==="create"?"Create":"Save"),e[24]=l,e[25]=i,e[26]=_):_=e[26];let T;e[27]!==l||e[28]!==i?(T=i(l==="create"?"New organization":"Edit organization"),e[27]=l,e[28]=i,e[29]=T):T=e[29];let E;e[30]!==i?(E=i("name"),e[30]=i,e[31]=E):E=e[31];let H;e[32]===Symbol.for("react.memo_cache_sentinel")?(H=w=>{g(w.target.value)},e[32]=H):H=e[32];let B;e[33]!==c?(B=n(X,{"data-testid":"org-form-name",id:"org-form-name",onChange:H,value:c}),e[33]=c,e[34]=B):B=e[34];let U;e[35]!==B||e[36]!==E?(U=n(V,{htmlFor:"org-form-name",label:E,children:B}),e[35]=B,e[36]=E,e[37]=U):U=e[37];let Q;e[38]!==i?(Q=i("Slug (optional — derived from name)"),e[38]=i,e[39]=Q):Q=e[39];let P;e[40]===Symbol.for("react.memo_cache_sentinel")?(P=w=>{b(w.target.value)},e[40]=P):P=e[40];let J;e[41]!==f?(J=n(X,{"data-testid":"org-form-slug",id:"org-form-slug",onChange:P,value:f}),e[41]=f,e[42]=J):J=e[42];let j;e[43]!==Q||e[44]!==J?(j=n(V,{htmlFor:"org-form-slug",label:Q,children:J}),e[43]=Q,e[44]=J,e[45]=j):j=e[45];let Z;e[46]!==i?(Z=i("Logo URL (optional)"),e[46]=i,e[47]=Z):Z=e[47];let M;e[48]===Symbol.for("react.memo_cache_sentinel")?(M=w=>{C(w.target.value)},e[48]=M):M=e[48];let $;e[49]!==v?($=n(X,{"data-testid":"org-form-logo",id:"org-form-logo",onChange:M,value:v}),e[49]=v,e[50]=$):$=e[50];let K;e[51]!==Z||e[52]!==$?(K=n(V,{htmlFor:"org-form-logo",label:Z,children:$}),e[51]=Z,e[52]=$,e[53]=K):K=e[53];let Y;e[54]!==l||e[55]!==y||e[56]!==i?(Y=l==="create"&&n(V,{htmlFor:"org-form-owner",label:i("Owner user id (optional)"),children:n(X,{"data-testid":"org-form-owner",id:"org-form-owner",onChange:w=>{I(w.target.value)},value:y})}),e[54]=l,e[55]=y,e[56]=i,e[57]=Y):Y=e[57];let te;e[58]!==i?(te=i("Metadata (JSON, optional)"),e[58]=i,e[59]=te):te=e[59];let oe;e[60]===Symbol.for("react.memo_cache_sentinel")?(oe=w=>{D(w.target.value)},e[60]=oe):oe=e[60];let le;e[61]!==k?(le=n(_t,{"data-testid":"org-form-metadata",id:"org-form-metadata",onChange:oe,value:k}),e[61]=k,e[62]=le):le=e[62];let ee;e[63]!==te||e[64]!==le?(ee=n(V,{htmlFor:"org-form-metadata",label:te,children:le}),e[63]=te,e[64]=le,e[65]=ee):ee=e[65];let ie;return e[66]!==r||e[67]!==m||e[68]!==d||e[69]!==A||e[70]!==U||e[71]!==j||e[72]!==K||e[73]!==Y||e[74]!==ee||e[75]!==N||e[76]!==_||e[77]!==T?(ie=R(me,{busy:r,canSubmit:N,error:m,onClose:d,onSubmit:A,submitLabel:_,testId:"org-form",title:T,children:[U,j,K,Y,ee]}),e[66]=r,e[67]=m,e[68]=d,e[69]=A,e[70]=U,e[71]=j,e[72]=K,e[73]=Y,e[74]=ee,e[75]=N,e[76]=_,e[77]=T,e[78]=ie):ie=e[78],ie},Jt=t=>{const e=G(40),{onClose:l,onDone:d,organizationId:u}=t,s=se(),o=q(),{busy:i,error:r,run:m}=ae(),[a,h]=F(""),[c,g]=F("");let p;e[0]!==s||e[1]!==l||e[2]!==d||e[3]!==u||e[4]!==c||e[5]!==m||e[6]!==a?(p=()=>{m(async()=>{await s.addAuthOrgMember({organizationId:u,role:c.trim()===""?void 0:c.trim(),userId:a.trim()}),d(),l()})},e[0]=s,e[1]=l,e[2]=d,e[3]=u,e[4]=c,e[5]=m,e[6]=a,e[7]=p):p=e[7];const f=p;let b;e[8]!==a?(b=a.trim(),e[8]=a,e[9]=b):b=e[9];const S=b!=="";let v;e[10]!==o?(v=o("Add member"),e[10]=o,e[11]=v):v=e[11];let C;e[12]!==o?(C=o("Add member"),e[12]=o,e[13]=C):C=e[13];let y;e[14]!==o?(y=o("User id"),e[14]=o,e[15]=y):y=e[15];let I;e[16]===Symbol.for("react.memo_cache_sentinel")?(I=T=>{h(T.target.value)},e[16]=I):I=e[16];let x;e[17]!==a?(x=n(X,{"data-testid":"org-add-member-user",id:"org-add-member-user",onChange:I,value:a}),e[17]=a,e[18]=x):x=e[18];let k;e[19]!==y||e[20]!==x?(k=n(V,{htmlFor:"org-add-member-user",label:y,children:x}),e[19]=y,e[20]=x,e[21]=k):k=e[21];let D;e[22]!==o?(D=o("Role (optional)"),e[22]=o,e[23]=D):D=e[23];let O;e[24]===Symbol.for("react.memo_cache_sentinel")?(O=T=>{g(T.target.value)},e[24]=O):O=e[24];let A;e[25]!==c?(A=n(X,{"data-testid":"org-add-member-role",id:"org-add-member-role",onChange:O,value:c}),e[25]=c,e[26]=A):A=e[26];let N;e[27]!==D||e[28]!==A?(N=n(V,{htmlFor:"org-add-member-role",label:D,children:A}),e[27]=D,e[28]=A,e[29]=N):N=e[29];let _;return e[30]!==i||e[31]!==r||e[32]!==l||e[33]!==f||e[34]!==N||e[35]!==S||e[36]!==v||e[37]!==C||e[38]!==k?(_=R(me,{busy:i,canSubmit:S,error:r,onClose:l,onSubmit:f,submitLabel:v,testId:"org-add-member",title:C,children:[k,N]}),e[30]=i,e[31]=r,e[32]=l,e[33]=f,e[34]=N,e[35]=S,e[36]=v,e[37]=C,e[38]=k,e[39]=_):_=e[39],_},Ut=t=>{const e=G(40),{onClose:l,onDone:d,organizationId:u}=t,s=se(),o=q(),{busy:i,error:r,run:m}=ae(),[a,h]=F(""),[c,g]=F("");let p;e[0]!==s||e[1]!==a||e[2]!==l||e[3]!==d||e[4]!==u||e[5]!==c||e[6]!==m?(p=()=>{m(async()=>{await s.inviteAuthOrgMember({email:a.trim(),organizationId:u,role:c.trim()===""?void 0:c.trim()}),d(),l()})},e[0]=s,e[1]=a,e[2]=l,e[3]=d,e[4]=u,e[5]=c,e[6]=m,e[7]=p):p=e[7];const f=p;let b;e[8]!==a?(b=a.trim(),e[8]=a,e[9]=b):b=e[9];const S=b!=="";let v;e[10]!==o?(v=o("Send invitation"),e[10]=o,e[11]=v):v=e[11];let C;e[12]!==o?(C=o("Invite member"),e[12]=o,e[13]=C):C=e[13];let y;e[14]!==o?(y=o("email"),e[14]=o,e[15]=y):y=e[15];let I;e[16]===Symbol.for("react.memo_cache_sentinel")?(I=T=>{h(T.target.value)},e[16]=I):I=e[16];let x;e[17]!==a?(x=n(X,{"data-testid":"org-invite-member-email",id:"org-invite-member-email",onChange:I,type:"email",value:a}),e[17]=a,e[18]=x):x=e[18];let k;e[19]!==y||e[20]!==x?(k=n(V,{htmlFor:"org-invite-member-email",label:y,children:x}),e[19]=y,e[20]=x,e[21]=k):k=e[21];let D;e[22]!==o?(D=o("Role (optional)"),e[22]=o,e[23]=D):D=e[23];let O;e[24]===Symbol.for("react.memo_cache_sentinel")?(O=T=>{g(T.target.value)},e[24]=O):O=e[24];let A;e[25]!==c?(A=n(X,{"data-testid":"org-invite-member-role",id:"org-invite-member-role",onChange:O,value:c}),e[25]=c,e[26]=A):A=e[26];let N;e[27]!==D||e[28]!==A?(N=n(V,{htmlFor:"org-invite-member-role",label:D,children:A}),e[27]=D,e[28]=A,e[29]=N):N=e[29];let _;return e[30]!==i||e[31]!==r||e[32]!==l||e[33]!==f||e[34]!==N||e[35]!==S||e[36]!==v||e[37]!==C||e[38]!==k?(_=R(me,{busy:i,canSubmit:S,error:r,onClose:l,onSubmit:f,submitLabel:v,testId:"org-invite-member",title:C,children:[k,N]}),e[30]=i,e[31]=r,e[32]=l,e[33]=f,e[34]=N,e[35]=S,e[36]=v,e[37]=C,e[38]=k,e[39]=_):_=e[39],_},Gt=t=>{const e=G(32),{member:l,onClose:d,onDone:u}=t,s=se(),o=q(),{busy:i,error:r,run:m}=ae();let a;e[0]!==l.role?(a=()=>z(l.role),e[0]=l.role,e[1]=a):a=e[1];const[h,c]=F(a);let g;e[2]!==s||e[3]!==l.id||e[4]!==d||e[5]!==u||e[6]!==h||e[7]!==m?(g=()=>{m(async()=>{await s.setAuthOrgMemberRole({memberId:z(l.id),role:h.trim()}),u(),d()})},e[2]=s,e[3]=l.id,e[4]=d,e[5]=u,e[6]=h,e[7]=m,e[8]=g):g=e[8];const p=g;let f;e[9]!==h?(f=h.trim(),e[9]=h,e[10]=f):f=e[10];const b=f!=="";let S;e[11]!==o?(S=o("Save"),e[11]=o,e[12]=S):S=e[12];let v;e[13]!==o?(v=o("Change member role"),e[13]=o,e[14]=v):v=e[14];let C;e[15]!==o?(C=o("Role"),e[15]=o,e[16]=C):C=e[16];let y;e[17]===Symbol.for("react.memo_cache_sentinel")?(y=D=>{c(D.target.value)},e[17]=y):y=e[17];let I;e[18]!==h?(I=n(X,{"data-testid":"org-member-role-value",id:"org-member-role-value",onChange:y,value:h}),e[18]=h,e[19]=I):I=e[19];let x;e[20]!==C||e[21]!==I?(x=n(V,{htmlFor:"org-member-role-value",label:C,children:I}),e[20]=C,e[21]=I,e[22]=x):x=e[22];let k;return e[23]!==i||e[24]!==r||e[25]!==d||e[26]!==p||e[27]!==x||e[28]!==b||e[29]!==S||e[30]!==v?(k=n(me,{busy:i,canSubmit:b,error:r,onClose:d,onSubmit:p,submitLabel:S,testId:"org-member-role",title:v,children:x}),e[23]=i,e[24]=r,e[25]=d,e[26]=p,e[27]=x,e[28]=b,e[29]=S,e[30]=v,e[31]=k):k=e[31],k},Ct=t=>{const e=G(36),{mode:l,onClose:d,onDone:u,organizationId:s,team:o}=t,i=se(),r=q(),{busy:m,error:a,run:h}=ae();let c;e[0]!==o?(c=o?z(o.name):"",e[0]=o,e[1]=c):c=e[1];const[g,p]=F(c);let f;e[2]!==i||e[3]!==l||e[4]!==g||e[5]!==d||e[6]!==u||e[7]!==s||e[8]!==h||e[9]!==o?.id?(f=()=>{h(async()=>{await(l==="create"?i.createAuthOrgTeam({name:g.trim(),organizationId:s}):i.updateAuthOrgTeam({name:g.trim(),teamId:z(o?.id)})),u(),d()})},e[2]=i,e[3]=l,e[4]=g,e[5]=d,e[6]=u,e[7]=s,e[8]=h,e[9]=o?.id,e[10]=f):f=e[10];const b=f;let S;e[11]!==g?(S=g.trim(),e[11]=g,e[12]=S):S=e[12];const v=S!=="";let C;e[13]!==l||e[14]!==r?(C=r(l==="create"?"Create":"Save"),e[13]=l,e[14]=r,e[15]=C):C=e[15];let y;e[16]!==l||e[17]!==r?(y=r(l==="create"?"New team":"Rename team"),e[16]=l,e[17]=r,e[18]=y):y=e[18];let I;e[19]!==r?(I=r("name"),e[19]=r,e[20]=I):I=e[20];let x;e[21]===Symbol.for("react.memo_cache_sentinel")?(x=A=>{p(A.target.value)},e[21]=x):x=e[21];let k;e[22]!==g?(k=n(X,{"data-testid":"org-team-form-name",id:"org-team-form-name",onChange:x,value:g}),e[22]=g,e[23]=k):k=e[23];let D;e[24]!==I||e[25]!==k?(D=n(V,{htmlFor:"org-team-form-name",label:I,children:k}),e[24]=I,e[25]=k,e[26]=D):D=e[26];let O;return e[27]!==m||e[28]!==a||e[29]!==d||e[30]!==b||e[31]!==D||e[32]!==v||e[33]!==C||e[34]!==y?(O=n(me,{busy:m,canSubmit:v,error:a,onClose:d,onSubmit:b,submitLabel:C,testId:"org-team-form",title:y,children:D}),e[27]=m,e[28]=a,e[29]=d,e[30]=b,e[31]=D,e[32]=v,e[33]=C,e[34]=y,e[35]=O):O=e[35],O},Ht=t=>{const e=G(30),{onClose:l,onDone:d,teamId:u}=t,s=se(),o=q(),{busy:i,error:r,run:m}=ae(),[a,h]=F("");let c;e[0]!==s||e[1]!==l||e[2]!==d||e[3]!==m||e[4]!==u||e[5]!==a?(c=()=>{m(async()=>{await s.addAuthOrgTeamMember({teamId:u,userId:a.trim()}),d(),l()})},e[0]=s,e[1]=l,e[2]=d,e[3]=m,e[4]=u,e[5]=a,e[6]=c):c=e[6];const g=c;let p;e[7]!==a?(p=a.trim(),e[7]=a,e[8]=p):p=e[8];const f=p!=="";let b;e[9]!==o?(b=o("Add member"),e[9]=o,e[10]=b):b=e[10];let S;e[11]!==o?(S=o("Add team member"),e[11]=o,e[12]=S):S=e[12];let v;e[13]!==o?(v=o("User id"),e[13]=o,e[14]=v):v=e[14];let C;e[15]===Symbol.for("react.memo_cache_sentinel")?(C=k=>{h(k.target.value)},e[15]=C):C=e[15];let y;e[16]!==a?(y=n(X,{"data-testid":"org-team-add-member-user",id:"org-team-add-member-user",onChange:C,value:a}),e[16]=a,e[17]=y):y=e[17];let I;e[18]!==v||e[19]!==y?(I=n(V,{htmlFor:"org-team-add-member-user",label:v,children:y}),e[18]=v,e[19]=y,e[20]=I):I=e[20];let x;return e[21]!==i||e[22]!==r||e[23]!==l||e[24]!==g||e[25]!==f||e[26]!==b||e[27]!==S||e[28]!==I?(x=n(me,{busy:i,canSubmit:f,error:r,onClose:l,onSubmit:g,submitLabel:b,testId:"org-team-add-member",title:S,children:I}),e[21]=i,e[22]=r,e[23]=l,e[24]=g,e[25]=f,e[26]=b,e[27]=S,e[28]=I,e[29]=x):x=e[29],x},xt=t=>{const e=G(47),{mode:l,onClose:d,onDone:u,organizationId:s,role:o}=t,i=se(),r=q(),{busy:m,error:a,run:h}=ae();let c;e[0]!==o?(c=o?z(o.role):"",e[0]=o,e[1]=c):c=e[1];const[g,p]=F(c);let f;e[2]!==l||e[3]!==o?.permission?(f=l==="edit"?$t(o?.permission):"",e[2]=l,e[3]=o?.permission,e[4]=f):f=e[4];const[b,S]=F(f);let v;e[5]!==i||e[6]!==l||e[7]!==g||e[8]!==d||e[9]!==u||e[10]!==s||e[11]!==b||e[12]!==o?.id||e[13]!==h?(v=()=>{h(async()=>{const T=Qt(b);await(l==="create"?i.createAuthOrgRole({organizationId:s,permission:T,role:g.trim()}):i.updateAuthOrgRole({permission:T,roleId:z(o?.id)})),u(),d()})},e[5]=i,e[6]=l,e[7]=g,e[8]=d,e[9]=u,e[10]=s,e[11]=b,e[12]=o?.id,e[13]=h,e[14]=v):v=e[14];const C=v;let y;e[15]!==l||e[16]!==g||e[17]!==b?(y=b.trim()!==""&&(l==="edit"||g.trim()!==""),e[15]=l,e[16]=g,e[17]=b,e[18]=y):y=e[18];let I;e[19]!==l||e[20]!==r?(I=r(l==="create"?"Create":"Save"),e[19]=l,e[20]=r,e[21]=I):I=e[21];let x;e[22]!==l||e[23]!==r?(x=r(l==="create"?"New role":"Edit role"),e[22]=l,e[23]=r,e[24]=x):x=e[24];let k;e[25]!==l||e[26]!==g||e[27]!==r?(k=l==="create"&&n(V,{htmlFor:"org-role-form-name",label:r("Role name"),children:n(X,{"data-testid":"org-role-form-name",id:"org-role-form-name",onChange:T=>{p(T.target.value)},value:g})}),e[25]=l,e[26]=g,e[27]=r,e[28]=k):k=e[28];let D;e[29]!==r?(D=r('Permission (JSON, e.g. {"project":["create","update"]})'),e[29]=r,e[30]=D):D=e[30];let O;e[31]===Symbol.for("react.memo_cache_sentinel")?(O=T=>{S(T.target.value)},e[31]=O):O=e[31];let A;e[32]!==b?(A=n(_t,{"data-testid":"org-role-form-permission",id:"org-role-form-permission",onChange:O,value:b}),e[32]=b,e[33]=A):A=e[33];let N;e[34]!==A||e[35]!==D?(N=n(V,{htmlFor:"org-role-form-permission",label:D,children:A}),e[34]=A,e[35]=D,e[36]=N):N=e[36];let _;return e[37]!==m||e[38]!==a||e[39]!==d||e[40]!==C||e[41]!==N||e[42]!==y||e[43]!==I||e[44]!==x||e[45]!==k?(_=R(me,{busy:m,canSubmit:y,error:a,onClose:d,onSubmit:C,submitLabel:I,testId:"org-role-form",title:x,children:[k,N]}),e[37]=m,e[38]=a,e[39]=d,e[40]=C,e[41]=N,e[42]=y,e[43]=I,e[44]=x,e[45]=k,e[46]=_):_=e[46],_},Mt=t=>{const e=G(18),{action:l,message:d,onClose:u,onDone:s,testId:o,title:i}=t,r=q(),{busy:m,error:a,run:h}=ae();let c;e[0]!==l||e[1]!==u||e[2]!==s||e[3]!==h?(c=()=>{h(async()=>{await l(),s(),u()})},e[0]=l,e[1]=u,e[2]=s,e[3]=h,e[4]=c):c=e[4];const g=c;let p;e[5]!==r?(p=r("Delete"),e[5]=r,e[6]=p):p=e[6];let f;e[7]!==d?(f=n("p",{className:"text-sm text-muted-foreground",children:d}),e[7]=d,e[8]=f):f=e[8];let b;return e[9]!==m||e[10]!==a||e[11]!==u||e[12]!==g||e[13]!==p||e[14]!==f||e[15]!==o||e[16]!==i?(b=n(me,{busy:m,canSubmit:!0,destructive:!0,error:a,onClose:u,onSubmit:g,submitLabel:p,testId:o,title:i,children:f}),e[9]=m,e[10]=a,e[11]=u,e[12]=g,e[13]=p,e[14]=f,e[15]=o,e[16]=i,e[17]=b):b=e[17],b},We=t=>{const e=G(13),{action:l,children:d,heading:u,testId:s}=t;let o;e[0]!==u?(o=n("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:u}),e[0]=u,e[1]=o):o=e[1];let i;e[2]!==l?(i=l!==void 0&&n("div",{className:"flex items-center gap-2",children:l}),e[2]=l,e[3]=i):i=e[3];let r;e[4]!==o||e[5]!==i?(r=R("header",{className:"flex items-center justify-between gap-2 border-b border-border px-4 py-3",children:[o,i]}),e[4]=o,e[5]=i,e[6]=r):r=e[6];let m;e[7]!==d?(m=n(kt,{className:"px-0",children:d}),e[7]=d,e[8]=m):m=e[8];let a;return e[9]!==r||e[10]!==m||e[11]!==s?(a=R(wt,{className:"overflow-hidden py-0","data-testid":s,children:[r,m]}),e[9]=r,e[10]=m,e[11]=s,e[12]=a):a=e[12],a},Xe=t=>{const e=G(23),{columns:l,rowActions:d,rowPrefix:u,rows:s}=t,o=q();let i;e[0]!==l?(i=l.map(Zt),e[0]=l,e[1]=i):i=e[1];let r;e[2]!==o?(r=o("Actions"),e[2]=o,e[3]=r):r=e[3];let m;e[4]!==r?(m=n(de,{"aria-label":r}),e[4]=r,e[5]=m):m=e[5];let a;e[6]!==i||e[7]!==m?(a=n(Dt,{children:R(mt,{children:[i,m]})}),e[6]=i,e[7]=m,e[8]=a):a=e[8];let h;if(e[9]!==l||e[10]!==d||e[11]!==u||e[12]!==s){let p;e[14]!==l||e[15]!==d||e[16]!==u?(p=(f,b)=>{const S=z(f.id),v=S===""?`index-${b.toString()}`:S;return R(mt,{"data-testid":`${u}-${v}`,children:[l.map(C=>n(ce,{className:C.className,children:C.render(f)},C.head)),n(ce,{children:n("div",{className:"flex justify-end gap-1",children:d(f)})})]},v)},e[14]=l,e[15]=d,e[16]=u,e[17]=p):p=e[17],h=s.map(p),e[9]=l,e[10]=d,e[11]=u,e[12]=s,e[13]=h}else h=e[13];let c;e[18]!==h?(c=n(zt,{children:h}),e[18]=h,e[19]=c):c=e[19];let g;return e[20]!==a||e[21]!==c?(g=R(At,{children:[a,c]}),e[20]=a,e[21]=c,e[22]=g):g=e[22],g};function Zt(t){return n(de,{children:t.head},t.head)}const qt=t=>{const e=G(30),{actionBusy:l,onRemoveMember:d,memberColumns:u,members:s,onDialog:o}=t,i=q();let r;e[0]!==o?(r=()=>{o({kind:"add-member"})},e[0]=o,e[1]=r):r=e[1];let m;e[2]!==i?(m=i("Add member"),e[2]=i,e[3]=m):m=e[3];let a;e[4]!==r||e[5]!==m?(a=n(L,{"data-testid":"org-open-add-member",onClick:r,size:"xs",type:"button",variant:"outline",children:m}),e[4]=r,e[5]=m,e[6]=a):a=e[6];let h;e[7]!==o?(h=()=>{o({kind:"invite-member"})},e[7]=o,e[8]=h):h=e[8];let c;e[9]!==i?(c=i("Invite member"),e[9]=i,e[10]=c):c=e[10];let g;e[11]!==h||e[12]!==c?(g=n(L,{"data-testid":"org-open-invite-member",onClick:h,size:"xs",type:"button",variant:"outline",children:c}),e[11]=h,e[12]=c,e[13]=g):g=e[13];let p;e[14]!==a||e[15]!==g?(p=R(dt,{children:[a,g]}),e[14]=a,e[15]=g,e[16]=p):p=e[16];let f;e[17]!==i?(f=i("Members"),e[17]=i,e[18]=f):f=e[18];let b;e[19]!==l||e[20]!==u||e[21]!==s||e[22]!==o||e[23]!==d||e[24]!==i?(b=s.length===0?n("div",{className:"p-3",children:n(Ve,{testId:"org-members-empty",title:i("No members.")})}):n(Xe,{columns:u,rowActions:v=>R(dt,{children:[n(L,{"data-testid":`org-member-role-${z(v.id)}`,onClick:()=>{o({kind:"member-role",member:v})},size:"xs",type:"button",variant:"ghost",children:i("Change role")}),n(L,{"data-testid":`org-remove-member-${z(v.id)}`,disabled:l,onClick:()=>{d(z(v.id))},size:"xs",type:"button",variant:"ghost",children:i("Remove")})]}),rowPrefix:"org-member",rows:s}),e[19]=l,e[20]=u,e[21]=s,e[22]=o,e[23]=d,e[24]=i,e[25]=b):b=e[25];let S;return e[26]!==p||e[27]!==f||e[28]!==b?(S=n(We,{action:p,heading:f,testId:"org-members",children:b}),e[26]=p,e[27]=f,e[28]=b,e[29]=S):S=e[29],S},Kt=t=>{const e=G(21),{onConfirmDeleteTeam:l,onDialog:d,onSelectTeam:u,selectedTeam:s,teamColumns:o,teams:i}=t,r=q();let m;e[0]!==d?(m=()=>{d({kind:"team-create"})},e[0]=d,e[1]=m):m=e[1];let a;e[2]!==r?(a=r("New team"),e[2]=r,e[3]=a):a=e[3];let h;e[4]!==m||e[5]!==a?(h=n(L,{"data-testid":"org-open-create-team",onClick:m,size:"xs",type:"button",variant:"outline",children:a}),e[4]=m,e[5]=a,e[6]=h):h=e[6];let c;e[7]!==r?(c=r("Teams"),e[7]=r,e[8]=c):c=e[8];let g;e[9]!==l||e[10]!==d||e[11]!==u||e[12]!==s||e[13]!==r||e[14]!==o||e[15]!==i?(g=i.length===0?n("div",{className:"p-3",children:n(Ve,{testId:"org-teams-empty",title:r("No teams.")})}):n(Xe,{columns:o,rowActions:f=>R(dt,{children:[n(L,{"aria-pressed":s===z(f.id),"data-testid":`org-team-select-${z(f.id)}`,onClick:()=>{u(z(f.id))},size:"xs",type:"button",variant:"ghost",children:r("Members")}),n(L,{"data-testid":`org-team-rename-${z(f.id)}`,onClick:()=>{d({kind:"team-rename",team:f})},size:"xs",type:"button",variant:"ghost",children:r("Rename")}),n(L,{"data-testid":`org-team-delete-${z(f.id)}`,onClick:()=>{l(f)},size:"xs",type:"button",variant:"ghost",children:r("Delete")})]}),rowPrefix:"org-team",rows:i}),e[9]=l,e[10]=d,e[11]=u,e[12]=s,e[13]=r,e[14]=o,e[15]=i,e[16]=g):g=e[16];let p;return e[17]!==h||e[18]!==c||e[19]!==g?(p=n(We,{action:h,heading:c,testId:"org-teams",children:g}),e[17]=h,e[18]=c,e[19]=g,e[20]=p):p=e[20],p},Vt=t=>{const e=G(20),{actionBusy:l,onRemoveTeamMember:d,onDialog:u,selectedTeam:s,teamMemberColumns:o,teamMembers:i}=t,r=q();let m;e[0]!==u||e[1]!==s?(m=()=>{u({kind:"team-add-member",teamId:s})},e[0]=u,e[1]=s,e[2]=m):m=e[2];let a;e[3]!==r?(a=r("Add member"),e[3]=r,e[4]=a):a=e[4];let h;e[5]!==m||e[6]!==a?(h=n(L,{"data-testid":"org-open-add-team-member",onClick:m,size:"xs",type:"button",variant:"outline",children:a}),e[5]=m,e[6]=a,e[7]=h):h=e[7];let c;e[8]!==r?(c=r("Team members"),e[8]=r,e[9]=c):c=e[9];let g;e[10]!==l||e[11]!==d||e[12]!==r||e[13]!==o||e[14]!==i?(g=i.length===0?n("div",{className:"p-3",children:n(Ve,{testId:"org-team-members-empty",title:r("No team members.")})}):n(Xe,{columns:o,rowActions:f=>n(L,{"data-testid":`org-team-remove-member-${z(f.id)}`,disabled:l,onClick:()=>{d(z(f.id))},size:"xs",type:"button",variant:"ghost",children:r("Remove")}),rowPrefix:"org-team-member",rows:i}),e[10]=l,e[11]=d,e[12]=r,e[13]=o,e[14]=i,e[15]=g):g=e[15];let p;return e[16]!==h||e[17]!==c||e[18]!==g?(p=n(We,{action:h,heading:c,testId:"org-team-members",children:g}),e[16]=h,e[17]=c,e[18]=g,e[19]=p):p=e[19],p},Wt=t=>{const e=G(19),{onConfirmDeleteRole:l,onDialog:d,roleColumns:u,roles:s}=t,o=q();let i;e[0]!==d?(i=()=>{d({kind:"role-create"})},e[0]=d,e[1]=i):i=e[1];let r;e[2]!==o?(r=o("New role"),e[2]=o,e[3]=r):r=e[3];let m;e[4]!==i||e[5]!==r?(m=n(L,{"data-testid":"org-open-create-role",onClick:i,size:"xs",type:"button",variant:"outline",children:r}),e[4]=i,e[5]=r,e[6]=m):m=e[6];let a;e[7]!==o?(a=o("Roles"),e[7]=o,e[8]=a):a=e[8];let h;e[9]!==l||e[10]!==d||e[11]!==u||e[12]!==s||e[13]!==o?(h=s.length===0?n("div",{className:"p-3",children:n(Ve,{testId:"org-roles-empty",title:o("No custom roles.")})}):n(Xe,{columns:u,rowActions:g=>R(dt,{children:[n(L,{"data-testid":`org-role-edit-${z(g.id)}`,onClick:()=>{d({kind:"role-edit",role:g})},size:"xs",type:"button",variant:"ghost",children:o("Edit")}),n(L,{"data-testid":`org-role-delete-${z(g.id)}`,onClick:()=>{l(z(g.id))},size:"xs",type:"button",variant:"ghost",children:o("Delete")})]}),rowPrefix:"org-role",rows:s}),e[9]=l,e[10]=d,e[11]=u,e[12]=s,e[13]=o,e[14]=h):h=e[14];let c;return e[15]!==m||e[16]!==a||e[17]!==h?(c=n(We,{action:m,heading:a,testId:"org-roles",children:h}),e[15]=m,e[16]=a,e[17]=h,e[18]=c):c=e[18],c},It=200,Xt=t=>{const e=G(207),{organizationId:l,rolesEnabled:d,teamsEnabled:u}=t,s=se(),o=q(),[i,r]=F(null),[m,a]=F(null),[h,c]=F(!1),[g,p]=F(null),[f,b]=Lt(l);let S;e[0]!==f||e[1]!==l?(S=["lunora-auth-org-members",l,f],e[0]=f,e[1]=l,e[2]=S):S=e[2];let v;e[3]!==s||e[4]!==f||e[5]!==l?(v=()=>s.listAuthOrgMembers({limit:It,offset:f,organizationId:l}),e[3]=s,e[4]=f,e[5]=l,e[6]=v):v=e[6];const C=Ke(S,v);let y;e[7]!==l?(y=["lunora-auth-org-invitations",l],e[7]=l,e[8]=y):y=e[8];let I;e[9]!==s||e[10]!==l?(I=()=>s.listAuthOrgInvitations({limit:200,organizationId:l}),e[9]=s,e[10]=l,e[11]=I):I=e[11];const x=Ke(y,I);let k;e[12]!==l?(k=["lunora-auth-org-teams",l],e[12]=l,e[13]=k):k=e[13];let D;e[14]!==s||e[15]!==l?(D=()=>s.listAuthOrgTeams({limit:200,organizationId:l}),e[14]=s,e[15]=l,e[16]=D):D=e[16];let O;e[17]!==u?(O={enabled:u},e[17]=u,e[18]=O):O=e[18];const A=Ke(k,D,O);let N;e[19]!==l?(N=["lunora-auth-org-roles",l],e[19]=l,e[20]=N):N=e[20];let _;e[21]!==s||e[22]!==l?(_=()=>s.listAuthOrgRoles({limit:200,organizationId:l}),e[21]=s,e[22]=l,e[23]=_):_=e[23];let T;e[24]!==d?(T={enabled:d},e[24]=d,e[25]=T):T=e[25];const E=Ke(N,_,T);let H;e[26]!==m?(H=["lunora-auth-org-team-members",m],e[26]=m,e[27]=H):H=e[27];let B;e[28]!==s||e[29]!==m?(B=()=>s.listAuthOrgTeamMembers({limit:200,teamId:m??""}),e[28]=s,e[29]=m,e[30]=B):B=e[30];const U=m!==null;let Q;e[31]!==U?(Q={enabled:U},e[31]=U,e[32]=Q):Q=e[32];const P=Ke(H,B,Q);let J;e[33]!==C.data?.rows?(J=C.data?.rows??[],e[33]=C.data?.rows,e[34]=J):J=e[34];const j=J;let Z;e[35]!==x.data?.rows?(Z=x.data?.rows??[],e[35]=x.data?.rows,e[36]=Z):Z=e[36];const M=Z;let $;e[37]!==A.data?.rows?($=A.data?.rows??[],e[37]=A.data?.rows,e[38]=$):$=e[38];const K=$;let Y;e[39]!==E.data?.rows?(Y=E.data?.rows??[],e[39]=E.data?.rows,e[40]=Y):Y=e[40];const te=Y;let oe;e[41]!==m||e[42]!==P?(oe=m===null?[]:P.data?.rows??[],e[41]=m,e[42]=P,e[43]=oe):oe=e[43];const le=oe,ee=C.error??x.error??A.error??E.error??P.error;let ie;e[44]!==x||e[45]!==C||e[46]!==d||e[47]!==E||e[48]!==m||e[49]!==P||e[50]!==u||e[51]!==A?(ie=()=>{C.refetch(),x.refetch(),u&&A.refetch(),d&&E.refetch(),m!==null&&P.refetch()},e[44]=x,e[45]=C,e[46]=d,e[47]=E,e[48]=m,e[49]=P,e[50]=u,e[51]=A,e[52]=ie):ie=e[52];const w=ie;Nt(w,!0);let Ye;e[53]===Symbol.for("react.memo_cache_sentinel")?(Ye=()=>{r(null)},e[53]=Ye):Ye=e[53];const re=Ye;let et;e[54]!==w?(et=W=>{Et((async()=>{c(!0),p(null);try{await W(),w(),c(!1)}catch(at){p(Ft(at)),c(!1)}})())},e[54]=w,e[55]=et):et=e[55];const ne=et;let tt;e[56]!==s||e[57]!==o?(tt=W=>{const at=z(W.id);r({action:async()=>{await s.removeAuthOrgTeam({teamId:at}),a(vt=>vt===at?null:vt)},kind:"confirm",message:o("Delete this team and its memberships? This cannot be undone."),testId:"org-team-delete",title:o("Delete team")})},e[56]=s,e[57]=o,e[58]=tt):tt=e[58];const ct=tt;let fe;e[59]!==o?(fe=o("userId"),e[59]=o,e[60]=fe):fe=e[60];let ue;e[61]!==fe?(ue={head:fe,render:Yt},e[61]=fe,e[62]=ue):ue=e[62];let ge;e[63]!==o?(ge=o("role"),e[63]=o,e[64]=ge):ge=e[64];let he;e[65]!==ge?(he={head:ge,render:el},e[65]=ge,e[66]=he):he=e[66];let lt;e[67]!==ue||e[68]!==he?(lt=[ue,he],e[67]=ue,e[68]=he,e[69]=lt):lt=e[69];const ft=lt;let be;e[70]!==o?(be=o("email"),e[70]=o,e[71]=be):be=e[71];let pe;e[72]!==be?(pe={head:be,render:tl},e[72]=be,e[73]=pe):pe=e[73];let ve;e[74]!==o?(ve=o("role"),e[74]=o,e[75]=ve):ve=e[75];let ye;e[76]!==ve?(ye={head:ve,render:ll},e[76]=ve,e[77]=ye):ye=e[77];let Ce;e[78]!==o?(Ce=o("status"),e[78]=o,e[79]=Ce):Ce=e[79];let xe;e[80]!==Ce?(xe={head:Ce,render:ol},e[80]=Ce,e[81]=xe):xe=e[81];let ot;e[82]!==pe||e[83]!==ye||e[84]!==xe?(ot=[pe,ye,xe],e[82]=pe,e[83]=ye,e[84]=xe,e[85]=ot):ot=e[85];const ut=ot;let Ie;e[86]!==o?(Ie=o("id"),e[86]=o,e[87]=Ie):Ie=e[87];let Se;e[88]!==Ie?(Se={className:"font-mono text-xs",head:Ie,render:il},e[88]=Ie,e[89]=Se):Se=e[89];let ke;e[90]!==o?(ke=o("name"),e[90]=o,e[91]=ke):ke=e[91];let we;e[92]!==ke?(we={head:ke,render:rl},e[92]=ke,e[93]=we):we=e[93];let it;e[94]!==Se||e[95]!==we?(it=[Se,we],e[94]=Se,e[95]=we,e[96]=it):it=e[96];const gt=it;let De;e[97]!==o?(De=o("userId"),e[97]=o,e[98]=De):De=e[98];let rt;e[99]!==De?(rt=[{head:De,render:nl}],e[99]=De,e[100]=rt):rt=e[100];const ht=rt;let ze;e[101]!==o?(ze=o("role"),e[101]=o,e[102]=ze):ze=e[102];let Ae;e[103]!==ze?(Ae={head:ze,render:sl},e[103]=ze,e[104]=Ae):Ae=e[104];let Ne;e[105]!==o?(Ne=o("Permission"),e[105]=o,e[106]=Ne):Ne=e[106];let Oe;e[107]!==Ne?(Oe={className:"font-mono text-xs whitespace-pre-wrap",head:Ne,render:al},e[107]=Ne,e[108]=Oe):Oe=e[108];let nt;e[109]!==Ae||e[110]!==Oe?(nt=[Ae,Oe],e[109]=Ae,e[110]=Oe,e[111]=nt):nt=e[111];const bt=nt;let _e;e[112]!==ee?(_e=ee!==null&&n("p",{className:"text-sm text-destructive","data-testid":"org-detail-error",role:"alert",children:ee}),e[112]=ee,e[113]=_e):_e=e[113];let Te;e[114]!==g?(Te=g!==null&&n("p",{className:"text-sm text-destructive","data-testid":"org-action-error",role:"alert",children:g}),e[114]=g,e[115]=Te):Te=e[115];let $e;e[116]!==s||e[117]!==ne?($e=W=>{ne(()=>s.removeAuthOrgMember({memberId:W}))},e[116]=s,e[117]=ne,e[118]=$e):$e=e[118];let Me;e[119]!==h||e[120]!==ft||e[121]!==j||e[122]!==$e?(Me=n(qt,{actionBusy:h,memberColumns:ft,members:j,onDialog:r,onRemoveMember:$e}),e[119]=h,e[120]=ft,e[121]=j,e[122]=$e,e[123]=Me):Me=e[123];const pt=C.data?.total;let Re;e[124]!==j.length||e[125]!==f||e[126]!==b||e[127]!==pt?(Re=n(Ot,{count:j.length,offset:f,onOffsetChange:b,pageSize:It,prefix:"org-members",total:pt}),e[124]=j.length,e[125]=f,e[126]=b,e[127]=pt,e[128]=Re):Re=e[128];let Ee;e[129]!==h||e[130]!==s||e[131]!==ut||e[132]!==M||e[133]!==ne||e[134]!==o?(Ee=M.length>0&&n(We,{heading:o("Invitations"),testId:"org-invitations",children:n(Xe,{columns:ut,rowActions:W=>n(L,{"data-testid":`org-cancel-invitation-${z(W.id)}`,disabled:h,onClick:()=>{ne(()=>s.cancelAuthOrgInvitation({invitationId:z(W.id)}))},size:"xs",type:"button",variant:"ghost",children:o("Cancel")}),rowPrefix:"org-invitation",rows:M})}),e[129]=h,e[130]=s,e[131]=ut,e[132]=M,e[133]=ne,e[134]=o,e[135]=Ee):Ee=e[135];let Fe;e[136]!==ct||e[137]!==m||e[138]!==gt||e[139]!==K||e[140]!==u?(Fe=u&&n(Kt,{onConfirmDeleteTeam:ct,onDialog:r,onSelectTeam:a,selectedTeam:m,teamColumns:gt,teams:K}),e[136]=ct,e[137]=m,e[138]=gt,e[139]=K,e[140]=u,e[141]=Fe):Fe=e[141];let je;e[142]!==h||e[143]!==s||e[144]!==ne||e[145]!==m||e[146]!==ht||e[147]!==le||e[148]!==u?(je=u&&m!==null&&n(Vt,{actionBusy:h,onDialog:r,onRemoveTeamMember:W=>{ne(()=>s.removeAuthOrgTeamMember({teamMemberId:W}))},selectedTeam:m,teamMemberColumns:ht,teamMembers:le}),e[142]=h,e[143]=s,e[144]=ne,e[145]=m,e[146]=ht,e[147]=le,e[148]=u,e[149]=je):je=e[149];let Le;e[150]!==s||e[151]!==bt||e[152]!==te||e[153]!==d||e[154]!==o?(Le=d&&n(Wt,{onConfirmDeleteRole:W=>{r({action:()=>s.deleteAuthOrgRole({roleId:W}),kind:"confirm",message:o("Delete this custom role? Members keeping it will lose its grants."),testId:"org-role-delete",title:o("Delete role")})},onDialog:r,roleColumns:bt,roles:te}),e[150]=s,e[151]=bt,e[152]=te,e[153]=d,e[154]=o,e[155]=Le):Le=e[155];let Pe;e[156]!==i?.kind||e[157]!==l||e[158]!==w?(Pe=i?.kind==="add-member"&&n(Jt,{onClose:re,onDone:w,organizationId:l}),e[156]=i?.kind,e[157]=l,e[158]=w,e[159]=Pe):Pe=e[159];let Be;e[160]!==i?.kind||e[161]!==l||e[162]!==w?(Be=i?.kind==="invite-member"&&n(Ut,{onClose:re,onDone:w,organizationId:l}),e[160]=i?.kind,e[161]=l,e[162]=w,e[163]=Be):Be=e[163];let Qe;e[164]!==i||e[165]!==w?(Qe=i?.kind==="member-role"&&n(Gt,{member:i.member,onClose:re,onDone:w}),e[164]=i,e[165]=w,e[166]=Qe):Qe=e[166];let Je;e[167]!==i?.kind||e[168]!==l||e[169]!==w?(Je=i?.kind==="team-create"&&n(Ct,{mode:"create",onClose:re,onDone:w,organizationId:l}),e[167]=i?.kind,e[168]=l,e[169]=w,e[170]=Je):Je=e[170];let Ue;e[171]!==i||e[172]!==l||e[173]!==w?(Ue=i?.kind==="team-rename"&&n(Ct,{mode:"edit",onClose:re,onDone:w,organizationId:l,team:i.team}),e[171]=i,e[172]=l,e[173]=w,e[174]=Ue):Ue=e[174];let Ge;e[175]!==i||e[176]!==w?(Ge=i?.kind==="team-add-member"&&n(Ht,{onClose:re,onDone:w,teamId:i.teamId}),e[175]=i,e[176]=w,e[177]=Ge):Ge=e[177];let He;e[178]!==i?.kind||e[179]!==l||e[180]!==w?(He=i?.kind==="role-create"&&n(xt,{mode:"create",onClose:re,onDone:w,organizationId:l}),e[178]=i?.kind,e[179]=l,e[180]=w,e[181]=He):He=e[181];let Ze;e[182]!==i||e[183]!==l||e[184]!==w?(Ze=i?.kind==="role-edit"&&n(xt,{mode:"edit",onClose:re,onDone:w,organizationId:l,role:i.role}),e[182]=i,e[183]=l,e[184]=w,e[185]=Ze):Ze=e[185];let qe;e[186]!==i||e[187]!==w?(qe=i?.kind==="confirm"&&n(Mt,{action:i.action,message:i.message,onClose:re,onDone:w,testId:i.testId,title:i.title}),e[186]=i,e[187]=w,e[188]=qe):qe=e[188];let st;return e[189]!==_e||e[190]!==Te||e[191]!==Me||e[192]!==Re||e[193]!==Ee||e[194]!==Fe||e[195]!==je||e[196]!==Le||e[197]!==Pe||e[198]!==Be||e[199]!==Qe||e[200]!==Je||e[201]!==Ue||e[202]!==Ge||e[203]!==He||e[204]!==Ze||e[205]!==qe?(st=R("div",{className:"flex flex-col gap-4","data-testid":"org-detail",children:[_e,Te,Me,Re,Ee,Fe,je,Le,Pe,Be,Qe,Je,Ue,Ge,He,Ze,qe]}),e[189]=_e,e[190]=Te,e[191]=Me,e[192]=Re,e[193]=Ee,e[194]=Fe,e[195]=je,e[196]=Le,e[197]=Pe,e[198]=Be,e[199]=Qe,e[200]=Je,e[201]=Ue,e[202]=Ge,e[203]=He,e[204]=Ze,e[205]=qe,e[206]=st):st=e[206],st};function Yt(t){return n("span",{className:"font-mono text-xs",children:z(t.userId)})}function el(t){return z(t.role)}function tl(t){return z(t.email)}function ll(t){return z(t.role)}function ol(t){return z(t.status)}function il(t){return z(t.id)}function rl(t){return z(t.name)}function nl(t){return n("span",{className:"font-mono text-xs",children:z(t.userId)})}function sl(t){return z(t.role)}function al(t){return z(t.permission)}const St=100,Al=()=>{const t=G(69),e=se(),l=q(),{config:d,ready:u}=Rt(),s=d.capabilities.organization,[o,i]=F(null),[r,m]=F(null),[a,h]=F(0);let c;t[0]!==a?(c=["lunora-auth-orgs",a],t[0]=a,t[1]=c):c=t[1];let g;t[2]!==e||t[3]!==a?(g=()=>e.listAuthOrganizations({limit:St,offset:a}),t[2]=e,t[3]=a,t[4]=g):g=t[4];let p;t[5]!==s?(p={enabled:s},t[5]=s,t[6]=p):p=t[6];const f=Ke(c,g,p),b=f.data?.rows??null;let S;t[7]!==f?(S=()=>{f.refetch()},t[7]=f,t[8]=S):S=t[8],Nt(S,s);let v;t[9]===Symbol.for("react.memo_cache_sentinel")?(v=()=>{m(null)},t[9]=v):v=t[9];const C=v;let y;t[10]!==f?(y=()=>{f.refetch()},t[10]=f,t[11]=y):y=t[11];const I=y;let x;t[12]===Symbol.for("react.memo_cache_sentinel")?(x=M=>{i(M)},t[12]=x):x=t[12];const k=x;if(u&&!s){let M;t[13]!==l?(M=l("Enable the organization() plugin in your auth config to manage organizations here."),t[13]=l,t[14]=M):M=t[14];let $;t[15]!==l?($=l("Organizations are not enabled."),t[15]=l,t[16]=$):$=t[16];let K;return t[17]!==M||t[18]!==$?(K=n(Ve,{description:M,testId:"org-disabled",title:$}),t[17]=M,t[18]=$,t[19]=K):K=t[19],K}let D;t[20]!==l?(D=l("Organizations"),t[20]=l,t[21]=D):D=t[21];let O;t[22]!==D?(O=n("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:D}),t[22]=D,t[23]=O):O=t[23];let A;t[24]===Symbol.for("react.memo_cache_sentinel")?(A=()=>{m({kind:"create"})},t[24]=A):A=t[24];let N;t[25]!==l?(N=l("New organization"),t[25]=l,t[26]=N):N=t[26];let _;t[27]!==N?(_=n(L,{"data-testid":"org-new",onClick:A,size:"sm",type:"button",children:N}),t[27]=N,t[28]=_):_=t[28];let T;t[29]!==_||t[30]!==O?(T=R("div",{className:"flex items-center justify-between",children:[O,_]}),t[29]=_,t[30]=O,t[31]=T):T=t[31];let E;t[32]!==f.error?(E=f.error!==null&&n("p",{className:"text-sm text-destructive","data-testid":"org-error",role:"alert",children:f.error}),t[32]=f.error,t[33]=E):E=t[33];let H;t[34]!==b||t[35]!==l?(H=b!==null&&b.length===0&&n(Ve,{testId:"org-empty",title:l("No organizations.")}),t[34]=b,t[35]=l,t[36]=H):H=t[36];let B;t[37]!==b||t[38]!==o||t[39]!==l?(B=b!==null&&b.length>0&&n(wt,{className:"overflow-hidden py-0",children:n(kt,{className:"px-0",children:R(At,{"data-testid":"org-table",children:[n(Dt,{children:R(mt,{children:[n(de,{children:l("id")}),n(de,{children:l("name")}),n(de,{children:l("slug")}),n(de,{children:l("created")}),n(de,{"aria-label":l("Actions")})]})}),n(zt,{children:b.map(M=>{const $=z(M.id);return R(mt,{"data-testid":`org-row-${$}`,children:[n(ce,{className:"font-mono text-xs",children:$}),n(ce,{children:z(M.name)}),n(ce,{children:z(M.slug)}),n(ce,{className:"text-muted-foreground tabular-nums",children:jt(M.createdAt)}),n(ce,{children:R("div",{className:"flex justify-end gap-1",children:[n(L,{"aria-pressed":o===$,"data-testid":`org-select-${$}`,onClick:()=>{k($)},size:"xs",type:"button",variant:"ghost",children:l("Manage")}),n(L,{"data-testid":`org-edit-${$}`,onClick:()=>{m({kind:"edit",org:M})},size:"xs",type:"button",variant:"ghost",children:l("Edit")}),n(L,{"data-testid":`org-delete-${$}`,onClick:()=>{m({kind:"delete",org:M})},size:"xs",type:"button",variant:"ghost",children:l("Delete")})]})})]},$)})})]})})}),t[37]=b,t[38]=o,t[39]=l,t[40]=B):B=t[40];let U;t[41]!==a||t[42]!==b||t[43]!==f.data?.total?(U=b!==null&&n(Ot,{count:b.length,offset:a,onOffsetChange:h,pageSize:St,prefix:"org",total:f.data?.total}),t[41]=a,t[42]=b,t[43]=f.data?.total,t[44]=U):U=t[44];let Q;t[45]!==d.organization||t[46]!==o?(Q=o!==null&&n(Xt,{organizationId:o,rolesEnabled:d.organization.roles,teamsEnabled:d.organization.teams}),t[45]=d.organization,t[46]=o,t[47]=Q):Q=t[47];let P;t[48]!==r?.kind||t[49]!==I?(P=r?.kind==="create"&&n(yt,{mode:"create",onClose:C,onDone:I}),t[48]=r?.kind,t[49]=I,t[50]=P):P=t[50];let J;t[51]!==r||t[52]!==I?(J=r?.kind==="edit"&&n(yt,{mode:"edit",onClose:C,onDone:I,org:r.org}),t[51]=r,t[52]=I,t[53]=J):J=t[53];let j;t[54]!==e||t[55]!==r||t[56]!==I||t[57]!==l?(j=r?.kind==="delete"&&n(Mt,{action:async()=>{const M=z(r.org.id);await e.deleteAuthOrganization({organizationId:M}),i($=>$===M?null:$)},message:l("Delete this organization? Its members, invitations, teams, and custom roles are removed. This cannot be undone."),onClose:C,onDone:I,testId:"org-delete",title:l("Delete organization")}),t[54]=e,t[55]=r,t[56]=I,t[57]=l,t[58]=j):j=t[58];let Z;return t[59]!==T||t[60]!==E||t[61]!==H||t[62]!==B||t[63]!==U||t[64]!==Q||t[65]!==P||t[66]!==J||t[67]!==j?(Z=R("div",{className:"flex flex-col gap-4","data-testid":"lunora-organizations",children:[T,E,H,B,U,Q,P,J,j]}),t[59]=T,t[60]=E,t[61]=H,t[62]=B,t[63]=U,t[64]=Q,t[65]=P,t[66]=J,t[67]=j,t[68]=Z):Z=t[68],Z};export{Al as default};
|
|
1
|
+
import{c as G}from"react/compiler-runtime";import{useLunora as se}from"@lunora/react";import{useState as F}from"react";import{B as L}from"../packem_shared/button-q0UYSmrn.mjs";import{a as kt,C as wt}from"../packem_shared/card--2hKx4L2.mjs";import{E as Ve}from"../packem_shared/empty-state-D7jEML_T.mjs";import{c as de,a as Dt,b as mt,e as ce,d as zt,T as At}from"../packem_shared/table-D0SBiDu-.mjs";import{b as Ke}from"../packem_shared/use-admin-query-tlBof8Yg.mjs";import{u as Rt}from"../packem_shared/use-auth-config-Z_n4ABCI.mjs";import{useAutoRefresh as Nt}from"../packem_shared/DEFAULT_AUTO_REFRESH_MS-DuULO4XM.mjs";import{useT as q}from"../packem_shared/DEFAULT_LOCALE-A1Yg5ORA.mjs";import{k as z,f as Et,b as Ft,h as jt}from"../packem_shared/internal-Df43vQI0.mjs";import{u as Lt,A as Ot}from"../packem_shared/auth-pager-DiDnXsfe.mjs";import{I as X}from"../packem_shared/input-CXhxesPC.mjs";import{L as Pt}from"../packem_shared/label-DKFzyHq6.mjs";import{M as Bt}from"../packem_shared/modal-shell-CDztwLnv.mjs";import{T as _t}from"../packem_shared/textarea--40GKAyz.mjs";import{u as ae}from"../packem_shared/use-async-submit-CZqCMTJ_.mjs";import{jsx as n,jsxs as R,Fragment as dt}from"react/jsx-runtime";const Tt=t=>{const e=JSON.parse(t);if(typeof e!="object"||e===null||Array.isArray(e))throw new TypeError("Expected a JSON object");return e},Qt=t=>{const e=Tt(t),l={};for(const[d,u]of Object.entries(e)){if(!Array.isArray(u)||u.some(s=>typeof s!="string"))throw new TypeError(`"${d}" must map to an array of action strings`);l[d]=u}return l},$t=t=>t==null||t===""?"":typeof t=="string"?t:JSON.stringify(t,null,2),V=t=>{const e=G(6),{children:l,htmlFor:d,label:u}=t;let s;e[0]!==d||e[1]!==u?(s=n(Pt,{htmlFor:d,children:u}),e[0]=d,e[1]=u,e[2]=s):s=e[2];let o;return e[3]!==l||e[4]!==s?(o=R("div",{className:"flex flex-col gap-1",children:[s,l]}),e[3]=l,e[4]=s,e[5]=o):o=e[5],o},me=({busy:t,canSubmit:e,children:l,destructive:d=!1,error:u,onClose:s,onSubmit:o,submitLabel:i,testId:r,title:m})=>{const a=q();return R(Bt,{label:m,onClose:s,panelTestId:`${r}-panel`,testId:`${r}-overlay`,variant:"dialog",children:[n("h2",{className:"text-sm font-semibold text-foreground",children:m}),l,u!==null&&n("p",{className:"text-sm text-destructive","data-testid":`${r}-error`,role:"alert",children:u}),R("div",{className:"flex justify-end gap-2 pt-1",children:[n(L,{"data-testid":`${r}-cancel`,onClick:s,size:"sm",type:"button",variant:"outline",children:a("Cancel")}),n(L,{"data-testid":`${r}-submit`,disabled:t||!e,onClick:o,size:"sm",type:"button",variant:d?"destructive":"default",children:t?a("Saving…"):i})]})]})},yt=t=>{const e=G(79),{mode:l,onClose:d,onDone:u,org:s}=t,o=se(),i=q(),{busy:r,error:m,run:a}=ae();let h;e[0]!==s?(h=s?z(s.name):"",e[0]=s,e[1]=h):h=e[1];const[c,g]=F(h);let p;e[2]!==s?(p=s?z(s.slug):"",e[2]=s,e[3]=p):p=e[3];const[f,b]=F(p);let S;e[4]!==s?(S=s?z(s.logo):"",e[4]=s,e[5]=S):S=e[5];const[v,C]=F(S),[y,I]=F("");let x;e[6]!==l||e[7]!==s?.metadata?(x=l==="edit"?$t(s?.metadata):"",e[6]=l,e[7]=s?.metadata,e[8]=x):x=e[8];const[k,D]=F(x);let O;e[9]!==o||e[10]!==v||e[11]!==k||e[12]!==l||e[13]!==c||e[14]!==d||e[15]!==u||e[16]!==s?.id||e[17]!==y||e[18]!==a||e[19]!==f?(O=()=>{a(async()=>{const w=k.trim()===""?void 0:Tt(k);l==="create"?await o.createAuthOrganization({logo:v.trim()===""?void 0:v.trim(),metadata:w,name:c.trim(),ownerId:y.trim()===""?void 0:y.trim(),slug:f.trim()===""?void 0:f.trim()}):await o.updateAuthOrganization({logo:v.trim()===""?void 0:v.trim(),metadata:w,name:c.trim()===""?void 0:c.trim(),organizationId:z(s?.id),slug:f.trim()===""?void 0:f.trim()}),u(),d()})},e[9]=o,e[10]=v,e[11]=k,e[12]=l,e[13]=c,e[14]=d,e[15]=u,e[16]=s?.id,e[17]=y,e[18]=a,e[19]=f,e[20]=O):O=e[20];const A=O;let N;e[21]!==l||e[22]!==c?(N=c.trim()!==""||l==="edit",e[21]=l,e[22]=c,e[23]=N):N=e[23];let _;e[24]!==l||e[25]!==i?(_=i(l==="create"?"Create":"Save"),e[24]=l,e[25]=i,e[26]=_):_=e[26];let T;e[27]!==l||e[28]!==i?(T=i(l==="create"?"New organization":"Edit organization"),e[27]=l,e[28]=i,e[29]=T):T=e[29];let E;e[30]!==i?(E=i("name"),e[30]=i,e[31]=E):E=e[31];let H;e[32]===Symbol.for("react.memo_cache_sentinel")?(H=w=>{g(w.target.value)},e[32]=H):H=e[32];let B;e[33]!==c?(B=n(X,{"data-testid":"org-form-name",id:"org-form-name",onChange:H,value:c}),e[33]=c,e[34]=B):B=e[34];let U;e[35]!==B||e[36]!==E?(U=n(V,{htmlFor:"org-form-name",label:E,children:B}),e[35]=B,e[36]=E,e[37]=U):U=e[37];let Q;e[38]!==i?(Q=i("Slug (optional — derived from name)"),e[38]=i,e[39]=Q):Q=e[39];let P;e[40]===Symbol.for("react.memo_cache_sentinel")?(P=w=>{b(w.target.value)},e[40]=P):P=e[40];let J;e[41]!==f?(J=n(X,{"data-testid":"org-form-slug",id:"org-form-slug",onChange:P,value:f}),e[41]=f,e[42]=J):J=e[42];let j;e[43]!==Q||e[44]!==J?(j=n(V,{htmlFor:"org-form-slug",label:Q,children:J}),e[43]=Q,e[44]=J,e[45]=j):j=e[45];let Z;e[46]!==i?(Z=i("Logo URL (optional)"),e[46]=i,e[47]=Z):Z=e[47];let M;e[48]===Symbol.for("react.memo_cache_sentinel")?(M=w=>{C(w.target.value)},e[48]=M):M=e[48];let $;e[49]!==v?($=n(X,{"data-testid":"org-form-logo",id:"org-form-logo",onChange:M,value:v}),e[49]=v,e[50]=$):$=e[50];let K;e[51]!==Z||e[52]!==$?(K=n(V,{htmlFor:"org-form-logo",label:Z,children:$}),e[51]=Z,e[52]=$,e[53]=K):K=e[53];let Y;e[54]!==l||e[55]!==y||e[56]!==i?(Y=l==="create"&&n(V,{htmlFor:"org-form-owner",label:i("Owner user id (optional)"),children:n(X,{"data-testid":"org-form-owner",id:"org-form-owner",onChange:w=>{I(w.target.value)},value:y})}),e[54]=l,e[55]=y,e[56]=i,e[57]=Y):Y=e[57];let te;e[58]!==i?(te=i("Metadata (JSON, optional)"),e[58]=i,e[59]=te):te=e[59];let oe;e[60]===Symbol.for("react.memo_cache_sentinel")?(oe=w=>{D(w.target.value)},e[60]=oe):oe=e[60];let le;e[61]!==k?(le=n(_t,{"data-testid":"org-form-metadata",id:"org-form-metadata",onChange:oe,value:k}),e[61]=k,e[62]=le):le=e[62];let ee;e[63]!==te||e[64]!==le?(ee=n(V,{htmlFor:"org-form-metadata",label:te,children:le}),e[63]=te,e[64]=le,e[65]=ee):ee=e[65];let ie;return e[66]!==r||e[67]!==m||e[68]!==d||e[69]!==A||e[70]!==U||e[71]!==j||e[72]!==K||e[73]!==Y||e[74]!==ee||e[75]!==N||e[76]!==_||e[77]!==T?(ie=R(me,{busy:r,canSubmit:N,error:m,onClose:d,onSubmit:A,submitLabel:_,testId:"org-form",title:T,children:[U,j,K,Y,ee]}),e[66]=r,e[67]=m,e[68]=d,e[69]=A,e[70]=U,e[71]=j,e[72]=K,e[73]=Y,e[74]=ee,e[75]=N,e[76]=_,e[77]=T,e[78]=ie):ie=e[78],ie},Jt=t=>{const e=G(40),{onClose:l,onDone:d,organizationId:u}=t,s=se(),o=q(),{busy:i,error:r,run:m}=ae(),[a,h]=F(""),[c,g]=F("");let p;e[0]!==s||e[1]!==l||e[2]!==d||e[3]!==u||e[4]!==c||e[5]!==m||e[6]!==a?(p=()=>{m(async()=>{await s.addAuthOrgMember({organizationId:u,role:c.trim()===""?void 0:c.trim(),userId:a.trim()}),d(),l()})},e[0]=s,e[1]=l,e[2]=d,e[3]=u,e[4]=c,e[5]=m,e[6]=a,e[7]=p):p=e[7];const f=p;let b;e[8]!==a?(b=a.trim(),e[8]=a,e[9]=b):b=e[9];const S=b!=="";let v;e[10]!==o?(v=o("Add member"),e[10]=o,e[11]=v):v=e[11];let C;e[12]!==o?(C=o("Add member"),e[12]=o,e[13]=C):C=e[13];let y;e[14]!==o?(y=o("User id"),e[14]=o,e[15]=y):y=e[15];let I;e[16]===Symbol.for("react.memo_cache_sentinel")?(I=T=>{h(T.target.value)},e[16]=I):I=e[16];let x;e[17]!==a?(x=n(X,{"data-testid":"org-add-member-user",id:"org-add-member-user",onChange:I,value:a}),e[17]=a,e[18]=x):x=e[18];let k;e[19]!==y||e[20]!==x?(k=n(V,{htmlFor:"org-add-member-user",label:y,children:x}),e[19]=y,e[20]=x,e[21]=k):k=e[21];let D;e[22]!==o?(D=o("Role (optional)"),e[22]=o,e[23]=D):D=e[23];let O;e[24]===Symbol.for("react.memo_cache_sentinel")?(O=T=>{g(T.target.value)},e[24]=O):O=e[24];let A;e[25]!==c?(A=n(X,{"data-testid":"org-add-member-role",id:"org-add-member-role",onChange:O,value:c}),e[25]=c,e[26]=A):A=e[26];let N;e[27]!==D||e[28]!==A?(N=n(V,{htmlFor:"org-add-member-role",label:D,children:A}),e[27]=D,e[28]=A,e[29]=N):N=e[29];let _;return e[30]!==i||e[31]!==r||e[32]!==l||e[33]!==f||e[34]!==N||e[35]!==S||e[36]!==v||e[37]!==C||e[38]!==k?(_=R(me,{busy:i,canSubmit:S,error:r,onClose:l,onSubmit:f,submitLabel:v,testId:"org-add-member",title:C,children:[k,N]}),e[30]=i,e[31]=r,e[32]=l,e[33]=f,e[34]=N,e[35]=S,e[36]=v,e[37]=C,e[38]=k,e[39]=_):_=e[39],_},Ut=t=>{const e=G(40),{onClose:l,onDone:d,organizationId:u}=t,s=se(),o=q(),{busy:i,error:r,run:m}=ae(),[a,h]=F(""),[c,g]=F("");let p;e[0]!==s||e[1]!==a||e[2]!==l||e[3]!==d||e[4]!==u||e[5]!==c||e[6]!==m?(p=()=>{m(async()=>{await s.inviteAuthOrgMember({email:a.trim(),organizationId:u,role:c.trim()===""?void 0:c.trim()}),d(),l()})},e[0]=s,e[1]=a,e[2]=l,e[3]=d,e[4]=u,e[5]=c,e[6]=m,e[7]=p):p=e[7];const f=p;let b;e[8]!==a?(b=a.trim(),e[8]=a,e[9]=b):b=e[9];const S=b!=="";let v;e[10]!==o?(v=o("Send invitation"),e[10]=o,e[11]=v):v=e[11];let C;e[12]!==o?(C=o("Invite member"),e[12]=o,e[13]=C):C=e[13];let y;e[14]!==o?(y=o("email"),e[14]=o,e[15]=y):y=e[15];let I;e[16]===Symbol.for("react.memo_cache_sentinel")?(I=T=>{h(T.target.value)},e[16]=I):I=e[16];let x;e[17]!==a?(x=n(X,{"data-testid":"org-invite-member-email",id:"org-invite-member-email",onChange:I,type:"email",value:a}),e[17]=a,e[18]=x):x=e[18];let k;e[19]!==y||e[20]!==x?(k=n(V,{htmlFor:"org-invite-member-email",label:y,children:x}),e[19]=y,e[20]=x,e[21]=k):k=e[21];let D;e[22]!==o?(D=o("Role (optional)"),e[22]=o,e[23]=D):D=e[23];let O;e[24]===Symbol.for("react.memo_cache_sentinel")?(O=T=>{g(T.target.value)},e[24]=O):O=e[24];let A;e[25]!==c?(A=n(X,{"data-testid":"org-invite-member-role",id:"org-invite-member-role",onChange:O,value:c}),e[25]=c,e[26]=A):A=e[26];let N;e[27]!==D||e[28]!==A?(N=n(V,{htmlFor:"org-invite-member-role",label:D,children:A}),e[27]=D,e[28]=A,e[29]=N):N=e[29];let _;return e[30]!==i||e[31]!==r||e[32]!==l||e[33]!==f||e[34]!==N||e[35]!==S||e[36]!==v||e[37]!==C||e[38]!==k?(_=R(me,{busy:i,canSubmit:S,error:r,onClose:l,onSubmit:f,submitLabel:v,testId:"org-invite-member",title:C,children:[k,N]}),e[30]=i,e[31]=r,e[32]=l,e[33]=f,e[34]=N,e[35]=S,e[36]=v,e[37]=C,e[38]=k,e[39]=_):_=e[39],_},Gt=t=>{const e=G(32),{member:l,onClose:d,onDone:u}=t,s=se(),o=q(),{busy:i,error:r,run:m}=ae();let a;e[0]!==l.role?(a=()=>z(l.role),e[0]=l.role,e[1]=a):a=e[1];const[h,c]=F(a);let g;e[2]!==s||e[3]!==l.id||e[4]!==d||e[5]!==u||e[6]!==h||e[7]!==m?(g=()=>{m(async()=>{await s.setAuthOrgMemberRole({memberId:z(l.id),role:h.trim()}),u(),d()})},e[2]=s,e[3]=l.id,e[4]=d,e[5]=u,e[6]=h,e[7]=m,e[8]=g):g=e[8];const p=g;let f;e[9]!==h?(f=h.trim(),e[9]=h,e[10]=f):f=e[10];const b=f!=="";let S;e[11]!==o?(S=o("Save"),e[11]=o,e[12]=S):S=e[12];let v;e[13]!==o?(v=o("Change member role"),e[13]=o,e[14]=v):v=e[14];let C;e[15]!==o?(C=o("Role"),e[15]=o,e[16]=C):C=e[16];let y;e[17]===Symbol.for("react.memo_cache_sentinel")?(y=D=>{c(D.target.value)},e[17]=y):y=e[17];let I;e[18]!==h?(I=n(X,{"data-testid":"org-member-role-value",id:"org-member-role-value",onChange:y,value:h}),e[18]=h,e[19]=I):I=e[19];let x;e[20]!==C||e[21]!==I?(x=n(V,{htmlFor:"org-member-role-value",label:C,children:I}),e[20]=C,e[21]=I,e[22]=x):x=e[22];let k;return e[23]!==i||e[24]!==r||e[25]!==d||e[26]!==p||e[27]!==x||e[28]!==b||e[29]!==S||e[30]!==v?(k=n(me,{busy:i,canSubmit:b,error:r,onClose:d,onSubmit:p,submitLabel:S,testId:"org-member-role",title:v,children:x}),e[23]=i,e[24]=r,e[25]=d,e[26]=p,e[27]=x,e[28]=b,e[29]=S,e[30]=v,e[31]=k):k=e[31],k},Ct=t=>{const e=G(36),{mode:l,onClose:d,onDone:u,organizationId:s,team:o}=t,i=se(),r=q(),{busy:m,error:a,run:h}=ae();let c;e[0]!==o?(c=o?z(o.name):"",e[0]=o,e[1]=c):c=e[1];const[g,p]=F(c);let f;e[2]!==i||e[3]!==l||e[4]!==g||e[5]!==d||e[6]!==u||e[7]!==s||e[8]!==h||e[9]!==o?.id?(f=()=>{h(async()=>{await(l==="create"?i.createAuthOrgTeam({name:g.trim(),organizationId:s}):i.updateAuthOrgTeam({name:g.trim(),teamId:z(o?.id)})),u(),d()})},e[2]=i,e[3]=l,e[4]=g,e[5]=d,e[6]=u,e[7]=s,e[8]=h,e[9]=o?.id,e[10]=f):f=e[10];const b=f;let S;e[11]!==g?(S=g.trim(),e[11]=g,e[12]=S):S=e[12];const v=S!=="";let C;e[13]!==l||e[14]!==r?(C=r(l==="create"?"Create":"Save"),e[13]=l,e[14]=r,e[15]=C):C=e[15];let y;e[16]!==l||e[17]!==r?(y=r(l==="create"?"New team":"Rename team"),e[16]=l,e[17]=r,e[18]=y):y=e[18];let I;e[19]!==r?(I=r("name"),e[19]=r,e[20]=I):I=e[20];let x;e[21]===Symbol.for("react.memo_cache_sentinel")?(x=A=>{p(A.target.value)},e[21]=x):x=e[21];let k;e[22]!==g?(k=n(X,{"data-testid":"org-team-form-name",id:"org-team-form-name",onChange:x,value:g}),e[22]=g,e[23]=k):k=e[23];let D;e[24]!==I||e[25]!==k?(D=n(V,{htmlFor:"org-team-form-name",label:I,children:k}),e[24]=I,e[25]=k,e[26]=D):D=e[26];let O;return e[27]!==m||e[28]!==a||e[29]!==d||e[30]!==b||e[31]!==D||e[32]!==v||e[33]!==C||e[34]!==y?(O=n(me,{busy:m,canSubmit:v,error:a,onClose:d,onSubmit:b,submitLabel:C,testId:"org-team-form",title:y,children:D}),e[27]=m,e[28]=a,e[29]=d,e[30]=b,e[31]=D,e[32]=v,e[33]=C,e[34]=y,e[35]=O):O=e[35],O},Ht=t=>{const e=G(30),{onClose:l,onDone:d,teamId:u}=t,s=se(),o=q(),{busy:i,error:r,run:m}=ae(),[a,h]=F("");let c;e[0]!==s||e[1]!==l||e[2]!==d||e[3]!==m||e[4]!==u||e[5]!==a?(c=()=>{m(async()=>{await s.addAuthOrgTeamMember({teamId:u,userId:a.trim()}),d(),l()})},e[0]=s,e[1]=l,e[2]=d,e[3]=m,e[4]=u,e[5]=a,e[6]=c):c=e[6];const g=c;let p;e[7]!==a?(p=a.trim(),e[7]=a,e[8]=p):p=e[8];const f=p!=="";let b;e[9]!==o?(b=o("Add member"),e[9]=o,e[10]=b):b=e[10];let S;e[11]!==o?(S=o("Add team member"),e[11]=o,e[12]=S):S=e[12];let v;e[13]!==o?(v=o("User id"),e[13]=o,e[14]=v):v=e[14];let C;e[15]===Symbol.for("react.memo_cache_sentinel")?(C=k=>{h(k.target.value)},e[15]=C):C=e[15];let y;e[16]!==a?(y=n(X,{"data-testid":"org-team-add-member-user",id:"org-team-add-member-user",onChange:C,value:a}),e[16]=a,e[17]=y):y=e[17];let I;e[18]!==v||e[19]!==y?(I=n(V,{htmlFor:"org-team-add-member-user",label:v,children:y}),e[18]=v,e[19]=y,e[20]=I):I=e[20];let x;return e[21]!==i||e[22]!==r||e[23]!==l||e[24]!==g||e[25]!==f||e[26]!==b||e[27]!==S||e[28]!==I?(x=n(me,{busy:i,canSubmit:f,error:r,onClose:l,onSubmit:g,submitLabel:b,testId:"org-team-add-member",title:S,children:I}),e[21]=i,e[22]=r,e[23]=l,e[24]=g,e[25]=f,e[26]=b,e[27]=S,e[28]=I,e[29]=x):x=e[29],x},xt=t=>{const e=G(47),{mode:l,onClose:d,onDone:u,organizationId:s,role:o}=t,i=se(),r=q(),{busy:m,error:a,run:h}=ae();let c;e[0]!==o?(c=o?z(o.role):"",e[0]=o,e[1]=c):c=e[1];const[g,p]=F(c);let f;e[2]!==l||e[3]!==o?.permission?(f=l==="edit"?$t(o?.permission):"",e[2]=l,e[3]=o?.permission,e[4]=f):f=e[4];const[b,S]=F(f);let v;e[5]!==i||e[6]!==l||e[7]!==g||e[8]!==d||e[9]!==u||e[10]!==s||e[11]!==b||e[12]!==o?.id||e[13]!==h?(v=()=>{h(async()=>{const T=Qt(b);await(l==="create"?i.createAuthOrgRole({organizationId:s,permission:T,role:g.trim()}):i.updateAuthOrgRole({permission:T,roleId:z(o?.id)})),u(),d()})},e[5]=i,e[6]=l,e[7]=g,e[8]=d,e[9]=u,e[10]=s,e[11]=b,e[12]=o?.id,e[13]=h,e[14]=v):v=e[14];const C=v;let y;e[15]!==l||e[16]!==g||e[17]!==b?(y=b.trim()!==""&&(l==="edit"||g.trim()!==""),e[15]=l,e[16]=g,e[17]=b,e[18]=y):y=e[18];let I;e[19]!==l||e[20]!==r?(I=r(l==="create"?"Create":"Save"),e[19]=l,e[20]=r,e[21]=I):I=e[21];let x;e[22]!==l||e[23]!==r?(x=r(l==="create"?"New role":"Edit role"),e[22]=l,e[23]=r,e[24]=x):x=e[24];let k;e[25]!==l||e[26]!==g||e[27]!==r?(k=l==="create"&&n(V,{htmlFor:"org-role-form-name",label:r("Role name"),children:n(X,{"data-testid":"org-role-form-name",id:"org-role-form-name",onChange:T=>{p(T.target.value)},value:g})}),e[25]=l,e[26]=g,e[27]=r,e[28]=k):k=e[28];let D;e[29]!==r?(D=r('Permission (JSON, e.g. {"project":["create","update"]})'),e[29]=r,e[30]=D):D=e[30];let O;e[31]===Symbol.for("react.memo_cache_sentinel")?(O=T=>{S(T.target.value)},e[31]=O):O=e[31];let A;e[32]!==b?(A=n(_t,{"data-testid":"org-role-form-permission",id:"org-role-form-permission",onChange:O,value:b}),e[32]=b,e[33]=A):A=e[33];let N;e[34]!==A||e[35]!==D?(N=n(V,{htmlFor:"org-role-form-permission",label:D,children:A}),e[34]=A,e[35]=D,e[36]=N):N=e[36];let _;return e[37]!==m||e[38]!==a||e[39]!==d||e[40]!==C||e[41]!==N||e[42]!==y||e[43]!==I||e[44]!==x||e[45]!==k?(_=R(me,{busy:m,canSubmit:y,error:a,onClose:d,onSubmit:C,submitLabel:I,testId:"org-role-form",title:x,children:[k,N]}),e[37]=m,e[38]=a,e[39]=d,e[40]=C,e[41]=N,e[42]=y,e[43]=I,e[44]=x,e[45]=k,e[46]=_):_=e[46],_},Mt=t=>{const e=G(18),{action:l,message:d,onClose:u,onDone:s,testId:o,title:i}=t,r=q(),{busy:m,error:a,run:h}=ae();let c;e[0]!==l||e[1]!==u||e[2]!==s||e[3]!==h?(c=()=>{h(async()=>{await l(),s(),u()})},e[0]=l,e[1]=u,e[2]=s,e[3]=h,e[4]=c):c=e[4];const g=c;let p;e[5]!==r?(p=r("Delete"),e[5]=r,e[6]=p):p=e[6];let f;e[7]!==d?(f=n("p",{className:"text-sm text-muted-foreground",children:d}),e[7]=d,e[8]=f):f=e[8];let b;return e[9]!==m||e[10]!==a||e[11]!==u||e[12]!==g||e[13]!==p||e[14]!==f||e[15]!==o||e[16]!==i?(b=n(me,{busy:m,canSubmit:!0,destructive:!0,error:a,onClose:u,onSubmit:g,submitLabel:p,testId:o,title:i,children:f}),e[9]=m,e[10]=a,e[11]=u,e[12]=g,e[13]=p,e[14]=f,e[15]=o,e[16]=i,e[17]=b):b=e[17],b},We=t=>{const e=G(13),{action:l,children:d,heading:u,testId:s}=t;let o;e[0]!==u?(o=n("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:u}),e[0]=u,e[1]=o):o=e[1];let i;e[2]!==l?(i=l!==void 0&&n("div",{className:"flex items-center gap-2",children:l}),e[2]=l,e[3]=i):i=e[3];let r;e[4]!==o||e[5]!==i?(r=R("header",{className:"flex items-center justify-between gap-2 border-b border-border px-4 py-3",children:[o,i]}),e[4]=o,e[5]=i,e[6]=r):r=e[6];let m;e[7]!==d?(m=n(kt,{className:"px-0",children:d}),e[7]=d,e[8]=m):m=e[8];let a;return e[9]!==r||e[10]!==m||e[11]!==s?(a=R(wt,{className:"overflow-hidden py-0","data-testid":s,children:[r,m]}),e[9]=r,e[10]=m,e[11]=s,e[12]=a):a=e[12],a},Xe=t=>{const e=G(23),{columns:l,rowActions:d,rowPrefix:u,rows:s}=t,o=q();let i;e[0]!==l?(i=l.map(Zt),e[0]=l,e[1]=i):i=e[1];let r;e[2]!==o?(r=o("Actions"),e[2]=o,e[3]=r):r=e[3];let m;e[4]!==r?(m=n(de,{"aria-label":r}),e[4]=r,e[5]=m):m=e[5];let a;e[6]!==i||e[7]!==m?(a=n(Dt,{children:R(mt,{children:[i,m]})}),e[6]=i,e[7]=m,e[8]=a):a=e[8];let h;if(e[9]!==l||e[10]!==d||e[11]!==u||e[12]!==s){let p;e[14]!==l||e[15]!==d||e[16]!==u?(p=(f,b)=>{const S=z(f.id),v=S===""?`index-${b.toString()}`:S;return R(mt,{"data-testid":`${u}-${v}`,children:[l.map(C=>n(ce,{className:C.className,children:C.render(f)},C.head)),n(ce,{children:n("div",{className:"flex justify-end gap-1",children:d(f)})})]},v)},e[14]=l,e[15]=d,e[16]=u,e[17]=p):p=e[17],h=s.map(p),e[9]=l,e[10]=d,e[11]=u,e[12]=s,e[13]=h}else h=e[13];let c;e[18]!==h?(c=n(zt,{children:h}),e[18]=h,e[19]=c):c=e[19];let g;return e[20]!==a||e[21]!==c?(g=R(At,{children:[a,c]}),e[20]=a,e[21]=c,e[22]=g):g=e[22],g};function Zt(t){return n(de,{children:t.head},t.head)}const qt=t=>{const e=G(30),{actionBusy:l,onRemoveMember:d,memberColumns:u,members:s,onDialog:o}=t,i=q();let r;e[0]!==o?(r=()=>{o({kind:"add-member"})},e[0]=o,e[1]=r):r=e[1];let m;e[2]!==i?(m=i("Add member"),e[2]=i,e[3]=m):m=e[3];let a;e[4]!==r||e[5]!==m?(a=n(L,{"data-testid":"org-open-add-member",onClick:r,size:"xs",type:"button",variant:"outline",children:m}),e[4]=r,e[5]=m,e[6]=a):a=e[6];let h;e[7]!==o?(h=()=>{o({kind:"invite-member"})},e[7]=o,e[8]=h):h=e[8];let c;e[9]!==i?(c=i("Invite member"),e[9]=i,e[10]=c):c=e[10];let g;e[11]!==h||e[12]!==c?(g=n(L,{"data-testid":"org-open-invite-member",onClick:h,size:"xs",type:"button",variant:"outline",children:c}),e[11]=h,e[12]=c,e[13]=g):g=e[13];let p;e[14]!==a||e[15]!==g?(p=R(dt,{children:[a,g]}),e[14]=a,e[15]=g,e[16]=p):p=e[16];let f;e[17]!==i?(f=i("Members"),e[17]=i,e[18]=f):f=e[18];let b;e[19]!==l||e[20]!==u||e[21]!==s||e[22]!==o||e[23]!==d||e[24]!==i?(b=s.length===0?n("div",{className:"p-3",children:n(Ve,{testId:"org-members-empty",title:i("No members.")})}):n(Xe,{columns:u,rowActions:v=>R(dt,{children:[n(L,{"data-testid":`org-member-role-${z(v.id)}`,onClick:()=>{o({kind:"member-role",member:v})},size:"xs",type:"button",variant:"ghost",children:i("Change role")}),n(L,{"data-testid":`org-remove-member-${z(v.id)}`,disabled:l,onClick:()=>{d(z(v.id))},size:"xs",type:"button",variant:"ghost",children:i("Remove")})]}),rowPrefix:"org-member",rows:s}),e[19]=l,e[20]=u,e[21]=s,e[22]=o,e[23]=d,e[24]=i,e[25]=b):b=e[25];let S;return e[26]!==p||e[27]!==f||e[28]!==b?(S=n(We,{action:p,heading:f,testId:"org-members",children:b}),e[26]=p,e[27]=f,e[28]=b,e[29]=S):S=e[29],S},Kt=t=>{const e=G(21),{onConfirmDeleteTeam:l,onDialog:d,onSelectTeam:u,selectedTeam:s,teamColumns:o,teams:i}=t,r=q();let m;e[0]!==d?(m=()=>{d({kind:"team-create"})},e[0]=d,e[1]=m):m=e[1];let a;e[2]!==r?(a=r("New team"),e[2]=r,e[3]=a):a=e[3];let h;e[4]!==m||e[5]!==a?(h=n(L,{"data-testid":"org-open-create-team",onClick:m,size:"xs",type:"button",variant:"outline",children:a}),e[4]=m,e[5]=a,e[6]=h):h=e[6];let c;e[7]!==r?(c=r("Teams"),e[7]=r,e[8]=c):c=e[8];let g;e[9]!==l||e[10]!==d||e[11]!==u||e[12]!==s||e[13]!==r||e[14]!==o||e[15]!==i?(g=i.length===0?n("div",{className:"p-3",children:n(Ve,{testId:"org-teams-empty",title:r("No teams.")})}):n(Xe,{columns:o,rowActions:f=>R(dt,{children:[n(L,{"aria-pressed":s===z(f.id),"data-testid":`org-team-select-${z(f.id)}`,onClick:()=>{u(z(f.id))},size:"xs",type:"button",variant:"ghost",children:r("Members")}),n(L,{"data-testid":`org-team-rename-${z(f.id)}`,onClick:()=>{d({kind:"team-rename",team:f})},size:"xs",type:"button",variant:"ghost",children:r("Rename")}),n(L,{"data-testid":`org-team-delete-${z(f.id)}`,onClick:()=>{l(f)},size:"xs",type:"button",variant:"ghost",children:r("Delete")})]}),rowPrefix:"org-team",rows:i}),e[9]=l,e[10]=d,e[11]=u,e[12]=s,e[13]=r,e[14]=o,e[15]=i,e[16]=g):g=e[16];let p;return e[17]!==h||e[18]!==c||e[19]!==g?(p=n(We,{action:h,heading:c,testId:"org-teams",children:g}),e[17]=h,e[18]=c,e[19]=g,e[20]=p):p=e[20],p},Vt=t=>{const e=G(20),{actionBusy:l,onRemoveTeamMember:d,onDialog:u,selectedTeam:s,teamMemberColumns:o,teamMembers:i}=t,r=q();let m;e[0]!==u||e[1]!==s?(m=()=>{u({kind:"team-add-member",teamId:s})},e[0]=u,e[1]=s,e[2]=m):m=e[2];let a;e[3]!==r?(a=r("Add member"),e[3]=r,e[4]=a):a=e[4];let h;e[5]!==m||e[6]!==a?(h=n(L,{"data-testid":"org-open-add-team-member",onClick:m,size:"xs",type:"button",variant:"outline",children:a}),e[5]=m,e[6]=a,e[7]=h):h=e[7];let c;e[8]!==r?(c=r("Team members"),e[8]=r,e[9]=c):c=e[9];let g;e[10]!==l||e[11]!==d||e[12]!==r||e[13]!==o||e[14]!==i?(g=i.length===0?n("div",{className:"p-3",children:n(Ve,{testId:"org-team-members-empty",title:r("No team members.")})}):n(Xe,{columns:o,rowActions:f=>n(L,{"data-testid":`org-team-remove-member-${z(f.id)}`,disabled:l,onClick:()=>{d(z(f.id))},size:"xs",type:"button",variant:"ghost",children:r("Remove")}),rowPrefix:"org-team-member",rows:i}),e[10]=l,e[11]=d,e[12]=r,e[13]=o,e[14]=i,e[15]=g):g=e[15];let p;return e[16]!==h||e[17]!==c||e[18]!==g?(p=n(We,{action:h,heading:c,testId:"org-team-members",children:g}),e[16]=h,e[17]=c,e[18]=g,e[19]=p):p=e[19],p},Wt=t=>{const e=G(19),{onConfirmDeleteRole:l,onDialog:d,roleColumns:u,roles:s}=t,o=q();let i;e[0]!==d?(i=()=>{d({kind:"role-create"})},e[0]=d,e[1]=i):i=e[1];let r;e[2]!==o?(r=o("New role"),e[2]=o,e[3]=r):r=e[3];let m;e[4]!==i||e[5]!==r?(m=n(L,{"data-testid":"org-open-create-role",onClick:i,size:"xs",type:"button",variant:"outline",children:r}),e[4]=i,e[5]=r,e[6]=m):m=e[6];let a;e[7]!==o?(a=o("Roles"),e[7]=o,e[8]=a):a=e[8];let h;e[9]!==l||e[10]!==d||e[11]!==u||e[12]!==s||e[13]!==o?(h=s.length===0?n("div",{className:"p-3",children:n(Ve,{testId:"org-roles-empty",title:o("No custom roles.")})}):n(Xe,{columns:u,rowActions:g=>R(dt,{children:[n(L,{"data-testid":`org-role-edit-${z(g.id)}`,onClick:()=>{d({kind:"role-edit",role:g})},size:"xs",type:"button",variant:"ghost",children:o("Edit")}),n(L,{"data-testid":`org-role-delete-${z(g.id)}`,onClick:()=>{l(z(g.id))},size:"xs",type:"button",variant:"ghost",children:o("Delete")})]}),rowPrefix:"org-role",rows:s}),e[9]=l,e[10]=d,e[11]=u,e[12]=s,e[13]=o,e[14]=h):h=e[14];let c;return e[15]!==m||e[16]!==a||e[17]!==h?(c=n(We,{action:m,heading:a,testId:"org-roles",children:h}),e[15]=m,e[16]=a,e[17]=h,e[18]=c):c=e[18],c},It=200,Xt=t=>{const e=G(207),{organizationId:l,rolesEnabled:d,teamsEnabled:u}=t,s=se(),o=q(),[i,r]=F(null),[m,a]=F(null),[h,c]=F(!1),[g,p]=F(null),[f,b]=Lt(l);let S;e[0]!==f||e[1]!==l?(S=["lunora-auth-org-members",l,f],e[0]=f,e[1]=l,e[2]=S):S=e[2];let v;e[3]!==s||e[4]!==f||e[5]!==l?(v=()=>s.listAuthOrgMembers({limit:It,offset:f,organizationId:l}),e[3]=s,e[4]=f,e[5]=l,e[6]=v):v=e[6];const C=Ke(S,v);let y;e[7]!==l?(y=["lunora-auth-org-invitations",l],e[7]=l,e[8]=y):y=e[8];let I;e[9]!==s||e[10]!==l?(I=()=>s.listAuthOrgInvitations({limit:200,organizationId:l}),e[9]=s,e[10]=l,e[11]=I):I=e[11];const x=Ke(y,I);let k;e[12]!==l?(k=["lunora-auth-org-teams",l],e[12]=l,e[13]=k):k=e[13];let D;e[14]!==s||e[15]!==l?(D=()=>s.listAuthOrgTeams({limit:200,organizationId:l}),e[14]=s,e[15]=l,e[16]=D):D=e[16];let O;e[17]!==u?(O={enabled:u},e[17]=u,e[18]=O):O=e[18];const A=Ke(k,D,O);let N;e[19]!==l?(N=["lunora-auth-org-roles",l],e[19]=l,e[20]=N):N=e[20];let _;e[21]!==s||e[22]!==l?(_=()=>s.listAuthOrgRoles({limit:200,organizationId:l}),e[21]=s,e[22]=l,e[23]=_):_=e[23];let T;e[24]!==d?(T={enabled:d},e[24]=d,e[25]=T):T=e[25];const E=Ke(N,_,T);let H;e[26]!==m?(H=["lunora-auth-org-team-members",m],e[26]=m,e[27]=H):H=e[27];let B;e[28]!==s||e[29]!==m?(B=()=>s.listAuthOrgTeamMembers({limit:200,teamId:m??""}),e[28]=s,e[29]=m,e[30]=B):B=e[30];const U=m!==null;let Q;e[31]!==U?(Q={enabled:U},e[31]=U,e[32]=Q):Q=e[32];const P=Ke(H,B,Q);let J;e[33]!==C.data?.rows?(J=C.data?.rows??[],e[33]=C.data?.rows,e[34]=J):J=e[34];const j=J;let Z;e[35]!==x.data?.rows?(Z=x.data?.rows??[],e[35]=x.data?.rows,e[36]=Z):Z=e[36];const M=Z;let $;e[37]!==A.data?.rows?($=A.data?.rows??[],e[37]=A.data?.rows,e[38]=$):$=e[38];const K=$;let Y;e[39]!==E.data?.rows?(Y=E.data?.rows??[],e[39]=E.data?.rows,e[40]=Y):Y=e[40];const te=Y;let oe;e[41]!==m||e[42]!==P?(oe=m===null?[]:P.data?.rows??[],e[41]=m,e[42]=P,e[43]=oe):oe=e[43];const le=oe,ee=C.error??x.error??A.error??E.error??P.error;let ie;e[44]!==x||e[45]!==C||e[46]!==d||e[47]!==E||e[48]!==m||e[49]!==P||e[50]!==u||e[51]!==A?(ie=()=>{C.refetch(),x.refetch(),u&&A.refetch(),d&&E.refetch(),m!==null&&P.refetch()},e[44]=x,e[45]=C,e[46]=d,e[47]=E,e[48]=m,e[49]=P,e[50]=u,e[51]=A,e[52]=ie):ie=e[52];const w=ie;Nt(w,!0);let Ye;e[53]===Symbol.for("react.memo_cache_sentinel")?(Ye=()=>{r(null)},e[53]=Ye):Ye=e[53];const re=Ye;let et;e[54]!==w?(et=W=>{Et((async()=>{c(!0),p(null);try{await W(),w(),c(!1)}catch(at){p(Ft(at)),c(!1)}})())},e[54]=w,e[55]=et):et=e[55];const ne=et;let tt;e[56]!==s||e[57]!==o?(tt=W=>{const at=z(W.id);r({action:async()=>{await s.removeAuthOrgTeam({teamId:at}),a(vt=>vt===at?null:vt)},kind:"confirm",message:o("Delete this team and its memberships? This cannot be undone."),testId:"org-team-delete",title:o("Delete team")})},e[56]=s,e[57]=o,e[58]=tt):tt=e[58];const ct=tt;let fe;e[59]!==o?(fe=o("userId"),e[59]=o,e[60]=fe):fe=e[60];let ue;e[61]!==fe?(ue={head:fe,render:Yt},e[61]=fe,e[62]=ue):ue=e[62];let ge;e[63]!==o?(ge=o("role"),e[63]=o,e[64]=ge):ge=e[64];let he;e[65]!==ge?(he={head:ge,render:el},e[65]=ge,e[66]=he):he=e[66];let lt;e[67]!==ue||e[68]!==he?(lt=[ue,he],e[67]=ue,e[68]=he,e[69]=lt):lt=e[69];const ft=lt;let be;e[70]!==o?(be=o("email"),e[70]=o,e[71]=be):be=e[71];let pe;e[72]!==be?(pe={head:be,render:tl},e[72]=be,e[73]=pe):pe=e[73];let ve;e[74]!==o?(ve=o("role"),e[74]=o,e[75]=ve):ve=e[75];let ye;e[76]!==ve?(ye={head:ve,render:ll},e[76]=ve,e[77]=ye):ye=e[77];let Ce;e[78]!==o?(Ce=o("status"),e[78]=o,e[79]=Ce):Ce=e[79];let xe;e[80]!==Ce?(xe={head:Ce,render:ol},e[80]=Ce,e[81]=xe):xe=e[81];let ot;e[82]!==pe||e[83]!==ye||e[84]!==xe?(ot=[pe,ye,xe],e[82]=pe,e[83]=ye,e[84]=xe,e[85]=ot):ot=e[85];const ut=ot;let Ie;e[86]!==o?(Ie=o("id"),e[86]=o,e[87]=Ie):Ie=e[87];let Se;e[88]!==Ie?(Se={className:"font-mono text-xs",head:Ie,render:il},e[88]=Ie,e[89]=Se):Se=e[89];let ke;e[90]!==o?(ke=o("name"),e[90]=o,e[91]=ke):ke=e[91];let we;e[92]!==ke?(we={head:ke,render:rl},e[92]=ke,e[93]=we):we=e[93];let it;e[94]!==Se||e[95]!==we?(it=[Se,we],e[94]=Se,e[95]=we,e[96]=it):it=e[96];const gt=it;let De;e[97]!==o?(De=o("userId"),e[97]=o,e[98]=De):De=e[98];let rt;e[99]!==De?(rt=[{head:De,render:nl}],e[99]=De,e[100]=rt):rt=e[100];const ht=rt;let ze;e[101]!==o?(ze=o("role"),e[101]=o,e[102]=ze):ze=e[102];let Ae;e[103]!==ze?(Ae={head:ze,render:sl},e[103]=ze,e[104]=Ae):Ae=e[104];let Ne;e[105]!==o?(Ne=o("Permission"),e[105]=o,e[106]=Ne):Ne=e[106];let Oe;e[107]!==Ne?(Oe={className:"font-mono text-xs whitespace-pre-wrap",head:Ne,render:al},e[107]=Ne,e[108]=Oe):Oe=e[108];let nt;e[109]!==Ae||e[110]!==Oe?(nt=[Ae,Oe],e[109]=Ae,e[110]=Oe,e[111]=nt):nt=e[111];const bt=nt;let _e;e[112]!==ee?(_e=ee!==null&&n("p",{className:"text-sm text-destructive","data-testid":"org-detail-error",role:"alert",children:ee}),e[112]=ee,e[113]=_e):_e=e[113];let Te;e[114]!==g?(Te=g!==null&&n("p",{className:"text-sm text-destructive","data-testid":"org-action-error",role:"alert",children:g}),e[114]=g,e[115]=Te):Te=e[115];let $e;e[116]!==s||e[117]!==ne?($e=W=>{ne(()=>s.removeAuthOrgMember({memberId:W}))},e[116]=s,e[117]=ne,e[118]=$e):$e=e[118];let Me;e[119]!==h||e[120]!==ft||e[121]!==j||e[122]!==$e?(Me=n(qt,{actionBusy:h,memberColumns:ft,members:j,onDialog:r,onRemoveMember:$e}),e[119]=h,e[120]=ft,e[121]=j,e[122]=$e,e[123]=Me):Me=e[123];const pt=C.data?.total;let Re;e[124]!==j.length||e[125]!==f||e[126]!==b||e[127]!==pt?(Re=n(Ot,{count:j.length,offset:f,onOffsetChange:b,pageSize:It,prefix:"org-members",total:pt}),e[124]=j.length,e[125]=f,e[126]=b,e[127]=pt,e[128]=Re):Re=e[128];let Ee;e[129]!==h||e[130]!==s||e[131]!==ut||e[132]!==M||e[133]!==ne||e[134]!==o?(Ee=M.length>0&&n(We,{heading:o("Invitations"),testId:"org-invitations",children:n(Xe,{columns:ut,rowActions:W=>n(L,{"data-testid":`org-cancel-invitation-${z(W.id)}`,disabled:h,onClick:()=>{ne(()=>s.cancelAuthOrgInvitation({invitationId:z(W.id)}))},size:"xs",type:"button",variant:"ghost",children:o("Cancel")}),rowPrefix:"org-invitation",rows:M})}),e[129]=h,e[130]=s,e[131]=ut,e[132]=M,e[133]=ne,e[134]=o,e[135]=Ee):Ee=e[135];let Fe;e[136]!==ct||e[137]!==m||e[138]!==gt||e[139]!==K||e[140]!==u?(Fe=u&&n(Kt,{onConfirmDeleteTeam:ct,onDialog:r,onSelectTeam:a,selectedTeam:m,teamColumns:gt,teams:K}),e[136]=ct,e[137]=m,e[138]=gt,e[139]=K,e[140]=u,e[141]=Fe):Fe=e[141];let je;e[142]!==h||e[143]!==s||e[144]!==ne||e[145]!==m||e[146]!==ht||e[147]!==le||e[148]!==u?(je=u&&m!==null&&n(Vt,{actionBusy:h,onDialog:r,onRemoveTeamMember:W=>{ne(()=>s.removeAuthOrgTeamMember({teamMemberId:W}))},selectedTeam:m,teamMemberColumns:ht,teamMembers:le}),e[142]=h,e[143]=s,e[144]=ne,e[145]=m,e[146]=ht,e[147]=le,e[148]=u,e[149]=je):je=e[149];let Le;e[150]!==s||e[151]!==bt||e[152]!==te||e[153]!==d||e[154]!==o?(Le=d&&n(Wt,{onConfirmDeleteRole:W=>{r({action:()=>s.deleteAuthOrgRole({roleId:W}),kind:"confirm",message:o("Delete this custom role? Members keeping it will lose its grants."),testId:"org-role-delete",title:o("Delete role")})},onDialog:r,roleColumns:bt,roles:te}),e[150]=s,e[151]=bt,e[152]=te,e[153]=d,e[154]=o,e[155]=Le):Le=e[155];let Pe;e[156]!==i?.kind||e[157]!==l||e[158]!==w?(Pe=i?.kind==="add-member"&&n(Jt,{onClose:re,onDone:w,organizationId:l}),e[156]=i?.kind,e[157]=l,e[158]=w,e[159]=Pe):Pe=e[159];let Be;e[160]!==i?.kind||e[161]!==l||e[162]!==w?(Be=i?.kind==="invite-member"&&n(Ut,{onClose:re,onDone:w,organizationId:l}),e[160]=i?.kind,e[161]=l,e[162]=w,e[163]=Be):Be=e[163];let Qe;e[164]!==i||e[165]!==w?(Qe=i?.kind==="member-role"&&n(Gt,{member:i.member,onClose:re,onDone:w}),e[164]=i,e[165]=w,e[166]=Qe):Qe=e[166];let Je;e[167]!==i?.kind||e[168]!==l||e[169]!==w?(Je=i?.kind==="team-create"&&n(Ct,{mode:"create",onClose:re,onDone:w,organizationId:l}),e[167]=i?.kind,e[168]=l,e[169]=w,e[170]=Je):Je=e[170];let Ue;e[171]!==i||e[172]!==l||e[173]!==w?(Ue=i?.kind==="team-rename"&&n(Ct,{mode:"edit",onClose:re,onDone:w,organizationId:l,team:i.team}),e[171]=i,e[172]=l,e[173]=w,e[174]=Ue):Ue=e[174];let Ge;e[175]!==i||e[176]!==w?(Ge=i?.kind==="team-add-member"&&n(Ht,{onClose:re,onDone:w,teamId:i.teamId}),e[175]=i,e[176]=w,e[177]=Ge):Ge=e[177];let He;e[178]!==i?.kind||e[179]!==l||e[180]!==w?(He=i?.kind==="role-create"&&n(xt,{mode:"create",onClose:re,onDone:w,organizationId:l}),e[178]=i?.kind,e[179]=l,e[180]=w,e[181]=He):He=e[181];let Ze;e[182]!==i||e[183]!==l||e[184]!==w?(Ze=i?.kind==="role-edit"&&n(xt,{mode:"edit",onClose:re,onDone:w,organizationId:l,role:i.role}),e[182]=i,e[183]=l,e[184]=w,e[185]=Ze):Ze=e[185];let qe;e[186]!==i||e[187]!==w?(qe=i?.kind==="confirm"&&n(Mt,{action:i.action,message:i.message,onClose:re,onDone:w,testId:i.testId,title:i.title}),e[186]=i,e[187]=w,e[188]=qe):qe=e[188];let st;return e[189]!==_e||e[190]!==Te||e[191]!==Me||e[192]!==Re||e[193]!==Ee||e[194]!==Fe||e[195]!==je||e[196]!==Le||e[197]!==Pe||e[198]!==Be||e[199]!==Qe||e[200]!==Je||e[201]!==Ue||e[202]!==Ge||e[203]!==He||e[204]!==Ze||e[205]!==qe?(st=R("div",{className:"flex flex-col gap-4","data-testid":"org-detail",children:[_e,Te,Me,Re,Ee,Fe,je,Le,Pe,Be,Qe,Je,Ue,Ge,He,Ze,qe]}),e[189]=_e,e[190]=Te,e[191]=Me,e[192]=Re,e[193]=Ee,e[194]=Fe,e[195]=je,e[196]=Le,e[197]=Pe,e[198]=Be,e[199]=Qe,e[200]=Je,e[201]=Ue,e[202]=Ge,e[203]=He,e[204]=Ze,e[205]=qe,e[206]=st):st=e[206],st};function Yt(t){return n("span",{className:"font-mono text-xs",children:z(t.userId)})}function el(t){return z(t.role)}function tl(t){return z(t.email)}function ll(t){return z(t.role)}function ol(t){return z(t.status)}function il(t){return z(t.id)}function rl(t){return z(t.name)}function nl(t){return n("span",{className:"font-mono text-xs",children:z(t.userId)})}function sl(t){return z(t.role)}function al(t){return z(t.permission)}const St=100,Al=()=>{const t=G(69),e=se(),l=q(),{config:d,ready:u}=Rt(),s=d.capabilities.organization,[o,i]=F(null),[r,m]=F(null),[a,h]=F(0);let c;t[0]!==a?(c=["lunora-auth-orgs",a],t[0]=a,t[1]=c):c=t[1];let g;t[2]!==e||t[3]!==a?(g=()=>e.listAuthOrganizations({limit:St,offset:a}),t[2]=e,t[3]=a,t[4]=g):g=t[4];let p;t[5]!==s?(p={enabled:s},t[5]=s,t[6]=p):p=t[6];const f=Ke(c,g,p),b=f.data?.rows??null;let S;t[7]!==f?(S=()=>{f.refetch()},t[7]=f,t[8]=S):S=t[8],Nt(S,s);let v;t[9]===Symbol.for("react.memo_cache_sentinel")?(v=()=>{m(null)},t[9]=v):v=t[9];const C=v;let y;t[10]!==f?(y=()=>{f.refetch()},t[10]=f,t[11]=y):y=t[11];const I=y;let x;t[12]===Symbol.for("react.memo_cache_sentinel")?(x=M=>{i(M)},t[12]=x):x=t[12];const k=x;if(u&&!s){let M;t[13]!==l?(M=l("Enable the organization() plugin in your auth config to manage organizations here."),t[13]=l,t[14]=M):M=t[14];let $;t[15]!==l?($=l("Organizations are not enabled."),t[15]=l,t[16]=$):$=t[16];let K;return t[17]!==M||t[18]!==$?(K=n(Ve,{description:M,testId:"org-disabled",title:$}),t[17]=M,t[18]=$,t[19]=K):K=t[19],K}let D;t[20]!==l?(D=l("Organizations"),t[20]=l,t[21]=D):D=t[21];let O;t[22]!==D?(O=n("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:D}),t[22]=D,t[23]=O):O=t[23];let A;t[24]===Symbol.for("react.memo_cache_sentinel")?(A=()=>{m({kind:"create"})},t[24]=A):A=t[24];let N;t[25]!==l?(N=l("New organization"),t[25]=l,t[26]=N):N=t[26];let _;t[27]!==N?(_=n(L,{"data-testid":"org-new",onClick:A,size:"sm",type:"button",children:N}),t[27]=N,t[28]=_):_=t[28];let T;t[29]!==_||t[30]!==O?(T=R("div",{className:"flex items-center justify-between",children:[O,_]}),t[29]=_,t[30]=O,t[31]=T):T=t[31];let E;t[32]!==f.error?(E=f.error!==null&&n("p",{className:"text-sm text-destructive","data-testid":"org-error",role:"alert",children:f.error}),t[32]=f.error,t[33]=E):E=t[33];let H;t[34]!==b||t[35]!==l?(H=b!==null&&b.length===0&&n(Ve,{testId:"org-empty",title:l("No organizations.")}),t[34]=b,t[35]=l,t[36]=H):H=t[36];let B;t[37]!==b||t[38]!==o||t[39]!==l?(B=b!==null&&b.length>0&&n(wt,{className:"overflow-hidden py-0",children:n(kt,{className:"px-0",children:R(At,{"data-testid":"org-table",children:[n(Dt,{children:R(mt,{children:[n(de,{children:l("id")}),n(de,{children:l("name")}),n(de,{children:l("slug")}),n(de,{children:l("created")}),n(de,{"aria-label":l("Actions")})]})}),n(zt,{children:b.map(M=>{const $=z(M.id);return R(mt,{"data-testid":`org-row-${$}`,children:[n(ce,{className:"font-mono text-xs",children:$}),n(ce,{children:z(M.name)}),n(ce,{children:z(M.slug)}),n(ce,{className:"text-muted-foreground tabular-nums",children:jt(M.createdAt)}),n(ce,{children:R("div",{className:"flex justify-end gap-1",children:[n(L,{"aria-pressed":o===$,"data-testid":`org-select-${$}`,onClick:()=>{k($)},size:"xs",type:"button",variant:"ghost",children:l("Manage")}),n(L,{"data-testid":`org-edit-${$}`,onClick:()=>{m({kind:"edit",org:M})},size:"xs",type:"button",variant:"ghost",children:l("Edit")}),n(L,{"data-testid":`org-delete-${$}`,onClick:()=>{m({kind:"delete",org:M})},size:"xs",type:"button",variant:"ghost",children:l("Delete")})]})})]},$)})})]})})}),t[37]=b,t[38]=o,t[39]=l,t[40]=B):B=t[40];let U;t[41]!==a||t[42]!==b||t[43]!==f.data?.total?(U=b!==null&&n(Ot,{count:b.length,offset:a,onOffsetChange:h,pageSize:St,prefix:"org",total:f.data?.total}),t[41]=a,t[42]=b,t[43]=f.data?.total,t[44]=U):U=t[44];let Q;t[45]!==d.organization||t[46]!==o?(Q=o!==null&&n(Xt,{organizationId:o,rolesEnabled:d.organization.roles,teamsEnabled:d.organization.teams}),t[45]=d.organization,t[46]=o,t[47]=Q):Q=t[47];let P;t[48]!==r?.kind||t[49]!==I?(P=r?.kind==="create"&&n(yt,{mode:"create",onClose:C,onDone:I}),t[48]=r?.kind,t[49]=I,t[50]=P):P=t[50];let J;t[51]!==r||t[52]!==I?(J=r?.kind==="edit"&&n(yt,{mode:"edit",onClose:C,onDone:I,org:r.org}),t[51]=r,t[52]=I,t[53]=J):J=t[53];let j;t[54]!==e||t[55]!==r||t[56]!==I||t[57]!==l?(j=r?.kind==="delete"&&n(Mt,{action:async()=>{const M=z(r.org.id);await e.deleteAuthOrganization({organizationId:M}),i($=>$===M?null:$)},message:l("Delete this organization? Its members, invitations, teams, and custom roles are removed. This cannot be undone."),onClose:C,onDone:I,testId:"org-delete",title:l("Delete organization")}),t[54]=e,t[55]=r,t[56]=I,t[57]=l,t[58]=j):j=t[58];let Z;return t[59]!==T||t[60]!==E||t[61]!==H||t[62]!==B||t[63]!==U||t[64]!==Q||t[65]!==P||t[66]!==J||t[67]!==j?(Z=R("div",{className:"flex flex-col gap-4","data-testid":"lunora-organizations",children:[T,E,H,B,U,Q,P,J,j]}),t[59]=T,t[60]=E,t[61]=H,t[62]=B,t[63]=U,t[64]=Q,t[65]=P,t[66]=J,t[67]=j,t[68]=Z):Z=t[68],Z};export{Al as default};
|