@lunora/studio 1.0.0-alpha.61 → 1.0.0-alpha.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/dist/standalone/{chunk-JC6WYIHM.js → chunk-26TQSVUV.js} +1 -1
  2. package/dist/standalone/{chunk-ZFWEPGWG.js → chunk-2OUPA2WJ.js} +1 -1
  3. package/dist/standalone/{chunk-HA34GYEX.js → chunk-2PJNAWB3.js} +1 -1
  4. package/dist/standalone/{chunk-CVMRZUF5.js → chunk-2Y36BVVM.js} +1 -1
  5. package/dist/standalone/{chunk-KNN3ZEQ7.js → chunk-37RIZFJ4.js} +1 -1
  6. package/dist/standalone/{chunk-UNN4CESU.js → chunk-3NHORZCK.js} +1 -1
  7. package/dist/standalone/{chunk-UNDFOYRI.js → chunk-3RTTXLMU.js} +1 -1
  8. package/dist/standalone/{chunk-UHHTEBC3.js → chunk-3XIESWL4.js} +1 -1
  9. package/dist/standalone/{chunk-KLLYGWNF.js → chunk-4CGALXS3.js} +1 -1
  10. package/dist/standalone/{chunk-O62HJZV3.js → chunk-4MSKCWUL.js} +1 -1
  11. package/dist/standalone/{chunk-SEDZDNQF.js → chunk-4UOFSGUS.js} +1 -1
  12. package/dist/standalone/{chunk-SA6MBPBL.js → chunk-54MMVNPT.js} +1 -1
  13. package/dist/standalone/{chunk-RE6UWCMG.js → chunk-5L2MD6F6.js} +1 -1
  14. package/dist/standalone/{chunk-HY46NTNW.js → chunk-5RF4QDDA.js} +1 -1
  15. package/dist/standalone/{chunk-YT7VXQVX.js → chunk-5Y3QLNWX.js} +1 -1
  16. package/dist/standalone/{chunk-LPOKAJT4.js → chunk-66TS6K5F.js} +1 -1
  17. package/dist/standalone/{chunk-4FNHHFWR.js → chunk-6ST5ECQA.js} +1 -1
  18. package/dist/standalone/{chunk-C4VURT57.js → chunk-7LQWFOEU.js} +1 -1
  19. package/dist/standalone/{chunk-46IB4C4Q.js → chunk-7QIFDWQV.js} +1 -1
  20. package/dist/standalone/{chunk-AKTGRZXN.js → chunk-7RXOPYR5.js} +1 -1
  21. package/dist/standalone/{chunk-PTTDIYGP.js → chunk-7T7UOTYK.js} +1 -1
  22. package/dist/standalone/{chunk-XRKCGQM2.js → chunk-7YAUSG6S.js} +1 -1
  23. package/dist/standalone/{chunk-PWDMXMRD.js → chunk-7YEFOSPH.js} +1 -1
  24. package/dist/standalone/chunk-AVAC26HJ.js +1 -0
  25. package/dist/standalone/{chunk-VUJGR4PB.js → chunk-AX4PAEGP.js} +1 -1
  26. package/dist/standalone/{chunk-JRWBGR5B.js → chunk-B5E7GQHG.js} +1 -1
  27. package/dist/standalone/{chunk-3DTM4GI5.js → chunk-BEH5N5ZA.js} +1 -1
  28. package/dist/standalone/{chunk-YNBJ6ICE.js → chunk-BGBLQ563.js} +1 -1
  29. package/dist/standalone/{chunk-SZUHZ2OG.js → chunk-BY4QROKU.js} +1 -1
  30. package/dist/standalone/{chunk-7Z5QEFR4.js → chunk-CFPZYHPY.js} +1 -1
  31. package/dist/standalone/{chunk-BAIN7UJ4.js → chunk-DCJKCERP.js} +1 -1
  32. package/dist/standalone/{chunk-P4J6XNG3.js → chunk-DY7CLL2H.js} +1 -1
  33. package/dist/standalone/{chunk-VEFNSN7P.js → chunk-ESVP44Y3.js} +1 -1
  34. package/dist/standalone/{chunk-IE4ROTQD.js → chunk-F6LUZVVI.js} +1 -1
  35. package/dist/standalone/{chunk-UY2Y5CXB.js → chunk-FXCBF4XT.js} +1 -1
  36. package/dist/standalone/{chunk-BHWSIIDT.js → chunk-GBQHGYGH.js} +1 -1
  37. package/dist/standalone/{chunk-HMIOF5GV.js → chunk-GHUPW2Y5.js} +1 -1
  38. package/dist/standalone/{chunk-FXFK4M4E.js → chunk-GMR677FL.js} +1 -1
  39. package/dist/standalone/{chunk-UWF5DOGV.js → chunk-GRL5MG3Z.js} +1 -1
  40. package/dist/standalone/{chunk-GTXVH7I5.js → chunk-H3V2QQ4K.js} +1 -1
  41. package/dist/standalone/{chunk-KZ2YUNMR.js → chunk-H7NIIBHH.js} +1 -1
  42. package/dist/standalone/{chunk-H6SIM4BT.js → chunk-HPFLBYRI.js} +1 -1
  43. package/dist/standalone/{chunk-CZEUVNCQ.js → chunk-IC4L6G56.js} +1 -1
  44. package/dist/standalone/{chunk-PGDWFWH5.js → chunk-IGBEXNXY.js} +1 -1
  45. package/dist/standalone/{chunk-TEIBKU46.js → chunk-IJFCOWEQ.js} +1 -1
  46. package/dist/standalone/{chunk-TYTJDFX2.js → chunk-ILNELDFC.js} +1 -1
  47. package/dist/standalone/{chunk-AGVJJQFL.js → chunk-IPHXIGYP.js} +1 -1
  48. package/dist/standalone/{chunk-TAE2H7PU.js → chunk-IUW24D4X.js} +1 -1
  49. package/dist/standalone/{chunk-C4O5UR4Y.js → chunk-IVFHIQOT.js} +1 -1
  50. package/dist/standalone/{chunk-MZEK4SGD.js → chunk-JGY4NGFW.js} +1 -1
  51. package/dist/standalone/{chunk-JLFCXBNQ.js → chunk-JN2Y24PY.js} +1 -1
  52. package/dist/standalone/{chunk-CYET4BRZ.js → chunk-K7M4SMQ7.js} +1 -1
  53. package/dist/standalone/{chunk-6CLVIOCB.js → chunk-KUVMORDQ.js} +1 -1
  54. package/dist/standalone/{chunk-NCCUM26H.js → chunk-KYF2E5CJ.js} +1 -1
  55. package/dist/standalone/{chunk-QC5HCNJZ.js → chunk-LA3HEESS.js} +1 -1
  56. package/dist/standalone/{chunk-UDZY7MKE.js → chunk-LE56LPNH.js} +1 -1
  57. package/dist/standalone/{chunk-SNDYNCAA.js → chunk-LEDWUPXM.js} +1 -1
  58. package/dist/standalone/{chunk-YQ5PILIJ.js → chunk-LFKCLLPT.js} +1 -1
  59. package/dist/standalone/{chunk-V66TSUKV.js → chunk-LFXFP4IF.js} +1 -1
  60. package/dist/standalone/{chunk-VUXJER3D.js → chunk-LLXFYRGQ.js} +1 -1
  61. package/dist/standalone/{chunk-KJTLW5W2.js → chunk-LWECXQWP.js} +3 -3
  62. package/dist/standalone/{chunk-2A4RKII2.js → chunk-M2B3MDFJ.js} +1 -1
  63. package/dist/standalone/{chunk-ICKBVXPP.js → chunk-M536Y2KX.js} +1 -1
  64. package/dist/standalone/{chunk-LKHUVEHX.js → chunk-M7QCL3ZP.js} +1 -1
  65. package/dist/standalone/{chunk-Q5WXTZWX.js → chunk-MIQTKZAR.js} +1 -1
  66. package/dist/standalone/{chunk-IYYTWZ2E.js → chunk-NPIULIRO.js} +1 -1
  67. package/dist/standalone/{chunk-SKJZDOHG.js → chunk-OWADN6BI.js} +1 -1
  68. package/dist/standalone/{chunk-IBCKC2BO.js → chunk-OZGWNJXD.js} +1 -1
  69. package/dist/standalone/{chunk-CKO3F55C.js → chunk-P4DHFWH7.js} +1 -1
  70. package/dist/standalone/{chunk-3MHKT76P.js → chunk-P4J3Z3SA.js} +1 -1
  71. package/dist/standalone/chunk-PF7V3G2Z.js +62 -0
  72. package/dist/standalone/{chunk-W572365D.js → chunk-PYXZLNG2.js} +1 -1
  73. package/dist/standalone/{chunk-R43KHQDA.js → chunk-PZPFWABF.js} +1 -1
  74. package/dist/standalone/chunk-QBWRC5YX.js +1 -0
  75. package/dist/standalone/{chunk-GS7OBQO5.js → chunk-QLJJ5YYZ.js} +1 -1
  76. package/dist/standalone/{chunk-ZMFZRGAN.js → chunk-QWGT25SE.js} +1 -1
  77. package/dist/standalone/{chunk-RC2K5RBE.js → chunk-RLEENOIX.js} +1 -1
  78. package/dist/standalone/{chunk-Z7MUQMLE.js → chunk-RWZKO2P6.js} +1 -1
  79. package/dist/standalone/{chunk-PR2SE2MD.js → chunk-SD4BERSA.js} +1 -1
  80. package/dist/standalone/{chunk-KYCAYNXM.js → chunk-SFDOII3B.js} +1 -1
  81. package/dist/standalone/{chunk-UNXX5GQH.js → chunk-SM67QXQI.js} +1 -1
  82. package/dist/standalone/{chunk-6UYILUSX.js → chunk-SMIESS7P.js} +1 -1
  83. package/dist/standalone/{chunk-KSRXMTBV.js → chunk-T6VMSOBB.js} +1 -1
  84. package/dist/standalone/{chunk-WYFLGXZ3.js → chunk-TCQEDMAQ.js} +1 -1
  85. package/dist/standalone/{chunk-23HKRH5H.js → chunk-TDE4AR5O.js} +1 -1
  86. package/dist/standalone/{chunk-K5PFWU5J.js → chunk-THIXMMZD.js} +1 -1
  87. package/dist/standalone/{chunk-RUP3M2GF.js → chunk-TRHTFGFW.js} +2 -2
  88. package/dist/standalone/{chunk-Q34MSC2F.js → chunk-UNUU7CJJ.js} +1 -1
  89. package/dist/standalone/{chunk-FYAJPWE7.js → chunk-UVDPQU7J.js} +1 -1
  90. package/dist/standalone/{chunk-JKPK25JO.js → chunk-UZERI5YC.js} +1 -1
  91. package/dist/standalone/{chunk-P2NBOUGZ.js → chunk-V4RWA7QI.js} +1 -1
  92. package/dist/standalone/{chunk-UZYGEOWY.js → chunk-V53KNYRN.js} +1 -1
  93. package/dist/standalone/{chunk-7AZZ7OJO.js → chunk-VSS7NFZJ.js} +1 -1
  94. package/dist/standalone/{chunk-7CRLAMGB.js → chunk-WQTUQZUM.js} +1 -1
  95. package/dist/standalone/{chunk-6I62RSI5.js → chunk-X2FQ6B5V.js} +1 -1
  96. package/dist/standalone/{chunk-UREY4GLG.js → chunk-XBDKZZ67.js} +1 -1
  97. package/dist/standalone/{chunk-TO6NLVFD.js → chunk-XBGJVK32.js} +1 -1
  98. package/dist/standalone/{chunk-QJKRHZYV.js → chunk-XITDHIVL.js} +1 -1
  99. package/dist/standalone/{chunk-6OKDCV7J.js → chunk-XQCVZAGU.js} +1 -1
  100. package/dist/standalone/{chunk-6P7HIPUE.js → chunk-XQGANNLS.js} +1 -1
  101. package/dist/standalone/{chunk-4AYEV5UN.js → chunk-XXQUMVWH.js} +1 -1
  102. package/dist/standalone/{chunk-H6WOFY6A.js → chunk-YQP2EYOC.js} +1 -1
  103. package/dist/standalone/chunk-ZJGP6EKR.js +1 -0
  104. package/dist/standalone/{chunk-J2LMP2A7.js → chunk-ZKEVSU66.js} +1 -1
  105. package/dist/standalone/{chunk-CWWGDW4V.js → chunk-ZSWWTXVW.js} +1 -1
  106. package/dist/standalone/studio.js +2 -2
  107. package/package.json +10 -10
  108. package/dist/standalone/chunk-725RLB7D.js +0 -1
  109. package/dist/standalone/chunk-KOC5KV3E.js +0 -1
  110. package/dist/standalone/chunk-OTJOI23O.js +0 -62
  111. package/dist/standalone/chunk-XDKFPBIL.js +0 -1
@@ -1 +1 @@
1
- import{a as ae}from"./chunk-AKTGRZXN.js";import"./chunk-OTJOI23O.js";import"./chunk-SEDZDNQF.js";import"./chunk-TYTJDFX2.js";import"./chunk-KSRXMTBV.js";import{a as te}from"./chunk-4AYEV5UN.js";import{a as Q,b as U,c as D,e as V}from"./chunk-JKPK25JO.js";import{d as Y,f as ee}from"./chunk-PTTDIYGP.js";import"./chunk-46IB4C4Q.js";import{c as T}from"./chunk-UY2Y5CXB.js";import"./chunk-ZFWEPGWG.js";import"./chunk-4FNHHFWR.js";import{a as X}from"./chunk-GXZAXNZI.js";import{f as F}from"./chunk-KJTLW5W2.js";import"./chunk-UREY4GLG.js";import{a as H}from"./chunk-6OKDCV7J.js";import{d as W,f as Z,g as G,h as J,m as P}from"./chunk-KLLYGWNF.js";import"./chunk-UDZY7MKE.js";import{a as C,e as O,f as de,g as le,h as ie}from"./chunk-UHHTEBC3.js";var A=O(le(),1),$=O(de(),1);var i=O(ie(),1);var se=Z(X.runSql),re=C((M,e)=>{let a=F(),[m,t]=(0,$.useState)(void 0),[d,s]=(0,$.useState)(void 0),[l,c]=(0,$.useState)(!0),N=(0,$.useCallback)(async r=>{c(!0);try{let w=await a.query(se,{sql:M},G(e));r.cancelled||(t(w),s(void 0))}catch(w){r.cancelled||(t(void 0),s(J(w)))}finally{r.cancelled||c(!1)}},[a,M,e]);return(0,$.useEffect)(()=>{let r={cancelled:!1};return P(N(r)),()=>{r.cancelled=!0}},[N]),{error:d,loading:l,result:m}},"ie"),oe="lunora-studio-dashboards",B={shardKey:"",sql:"",title:""},ne=C(M=>{let e=(0,A.c)(54),{onEdit:a,onRemove:m,widget:t}=M,d=W(),{error:s,loading:l,result:c}=re(t.sql,t.shardKey??""),N;e[0]!==a||e[1]!==t.id?(N=C(()=>{a(t.id)},"C"),e[0]=a,e[1]=t.id,e[2]=N):N=e[2];let r=N,w;e[3]!==m||e[4]!==t.id?(w=C(()=>{m(t.id)},"w"),e[3]=m,e[4]=t.id,e[5]=w):w=e[5];let L=w,_=`dashboards-widget-${t.id}`,q;e[6]!==t.title?(q=(0,i.jsx)(D,{className:"min-w-0 truncate",title:t.title,children:t.title}),e[6]=t.title,e[7]=q):q=e[7];let E;e[8]!==d?(E=d("Edit widget"),e[8]=d,e[9]=E):E=e[9];let j=`dashboards-widget-edit-${t.id}`,R;e[10]!==d?(R=d("Edit widget"),e[10]=d,e[11]=R):R=e[11];let k;e[12]===Symbol.for("react.memo_cache_sentinel")?(k=(0,i.jsx)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:(0,i.jsx)("path",{d:"M4 20h4L18 10l-4-4L4 16v4ZM14 6l4 4"})}),e[12]=k):k=e[12];let x;e[13]!==r||e[14]!==E||e[15]!==j||e[16]!==R?(x=(0,i.jsx)(T,{"aria-label":E,"data-testid":j,onClick:r,size:"icon-xs",title:R,type:"button",variant:"ghost",children:k}),e[13]=r,e[14]=E,e[15]=j,e[16]=R,e[17]=x):x=e[17];let p;e[18]!==d?(p=d("Remove widget"),e[18]=d,e[19]=p):p=e[19];let K=`dashboards-widget-remove-${t.id}`,h;e[20]!==d?(h=d("Remove widget"),e[20]=d,e[21]=h):h=e[21];let v;e[22]===Symbol.for("react.memo_cache_sentinel")?(v=(0,i.jsx)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:(0,i.jsx)("path",{d:"M5 7h14M9 7V5h6v2m-1 0v12H10V7M7 7v13h10V7"})}),e[22]=v):v=e[22];let u;e[23]!==L||e[24]!==p||e[25]!==K||e[26]!==h?(u=(0,i.jsx)(T,{"aria-label":p,"data-testid":K,onClick:L,size:"icon-xs",title:h,type:"button",variant:"ghost",children:v}),e[23]=L,e[24]=p,e[25]=K,e[26]=h,e[27]=u):u=e[27];let b;e[28]!==u||e[29]!==x?(b=(0,i.jsxs)("div",{className:"flex shrink-0 items-center gap-1",children:[x,u]}),e[28]=u,e[29]=x,e[30]=b):b=e[30];let g;e[31]!==b||e[32]!==q?(g=(0,i.jsxs)(U,{className:"flex flex-row items-start justify-between gap-2 border-b pb-3",children:[q,b]}),e[31]=b,e[32]=q,e[33]=g):g=e[33];let f;e[34]!==s||e[35]!==t.id?(f=s!==void 0&&(0,i.jsx)(te,{className:"font-mono text-xs",testId:`dashboards-widget-error-${t.id}`,variant:"destructive",children:s}),e[34]=s,e[35]=t.id,e[36]=f):f=e[36];let S;e[37]!==s||e[38]!==l||e[39]!==c||e[40]!==d||e[41]!==t.id?(S=s===void 0&&l&&c===void 0&&(0,i.jsx)("p",{className:"p-4 text-sm text-muted-foreground","data-testid":`dashboards-widget-loading-${t.id}`,children:d("Running\u2026")}),e[37]=s,e[38]=l,e[39]=c,e[40]=d,e[41]=t.id,e[42]=S):S=e[42];let o;e[43]!==s||e[44]!==c?(o=s===void 0&&c!==void 0&&(0,i.jsx)(ae,{result:c}),e[43]=s,e[44]=c,e[45]=o):o=e[45];let n;e[46]!==f||e[47]!==S||e[48]!==o?(n=(0,i.jsxs)(V,{className:"min-h-32 py-2",children:[f,S,o]}),e[46]=f,e[47]=S,e[48]=o,e[49]=n):n=e[49];let y;return e[50]!==g||e[51]!==n||e[52]!==_?(y=(0,i.jsxs)(Q,{"data-testid":_,children:[g,n]}),e[50]=g,e[51]=n,e[52]=_,e[53]=y):y=e[53],y},"ae"),ce=C(M=>{let e=(0,A.c)(58),{draft:a,editing:m,onCancel:t,onChange:d,onSubmit:s}=M,l=W(),c;e[0]!==a||e[1]!==d?(c=C(z=>{d({...a,title:z.target.value})},"n"),e[0]=a,e[1]=d,e[2]=c):c=e[2];let N=c,r;e[3]!==a||e[4]!==d?(r=C(z=>{d({...a,sql:z.target.value})},"s"),e[3]=a,e[4]=d,e[5]=r):r=e[5];let w=r,L;e[6]!==a||e[7]!==d?(L=C(z=>{d({...a,shardKey:z.target.value})},"$"),e[6]=a,e[7]=d,e[8]=L):L=e[8];let _=L,q;e[9]!==s?(q=C(()=>{s()},"q"),e[9]=s,e[10]=q):q=e[10];let E=q,j;e[11]!==a.sql||e[12]!==a.title?(j=a.title.trim()!==""&&a.sql.trim()!=="",e[11]=a.sql,e[12]=a.title,e[13]=j):j=e[13];let R=j,k;e[14]!==l?(k=l("Widget title"),e[14]=l,e[15]=k):k=e[15];let x;e[16]!==l?(x=l("Widget title"),e[16]=l,e[17]=x):x=e[17];let p;e[18]!==a.title||e[19]!==N||e[20]!==k||e[21]!==x?(p=(0,i.jsx)("input",{"aria-label":k,className:"h-8 rounded-md border border-border bg-background px-2 text-xs outline-none focus-visible:border-ring","data-testid":"dashboards-form-title",onChange:N,placeholder:x,type:"text",value:a.title}),e[18]=a.title,e[19]=N,e[20]=k,e[21]=x,e[22]=p):p=e[22];let K;e[23]!==l?(K=l("SQL query"),e[23]=l,e[24]=K):K=e[24];let h;e[25]!==a.sql||e[26]!==w||e[27]!==K?(h=(0,i.jsx)("textarea",{"aria-label":K,className:"min-h-24 resize-y rounded-md border border-border bg-background p-2 font-mono text-xs leading-5 outline-none focus-visible:border-ring","data-testid":"dashboards-form-sql",onChange:w,placeholder:"SELECT author, COUNT(*) AS messages FROM \u2026",spellCheck:!1,value:a.sql}),e[25]=a.sql,e[26]=w,e[27]=K,e[28]=h):h=e[28];let v;e[29]!==l?(v=l("Shard key (optional)"),e[29]=l,e[30]=v):v=e[30];let u;e[31]!==l?(u=l("Shard key (optional)"),e[31]=l,e[32]=u):u=e[32];let b;e[33]!==a.shardKey||e[34]!==_||e[35]!==v||e[36]!==u?(b=(0,i.jsx)("input",{"aria-label":v,className:"h-8 rounded-md border border-border bg-background px-2 font-mono text-xs outline-none focus-visible:border-ring","data-testid":"dashboards-form-shard",onChange:_,placeholder:u,type:"text",value:a.shardKey}),e[33]=a.shardKey,e[34]=_,e[35]=v,e[36]=u,e[37]=b):b=e[37];let g;e[38]!==l?(g=l("Cancel"),e[38]=l,e[39]=g):g=e[39];let f;e[40]!==t||e[41]!==g?(f=(0,i.jsx)(T,{"data-testid":"dashboards-form-cancel",onClick:t,size:"sm",type:"button",variant:"outline",children:g}),e[40]=t,e[41]=g,e[42]=f):f=e[42];let S=!R,o;e[43]!==m||e[44]!==l?(o=l(m?"Save widget":"Add widget"),e[43]=m,e[44]=l,e[45]=o):o=e[45];let n;e[46]!==E||e[47]!==S||e[48]!==o?(n=(0,i.jsx)(T,{"data-testid":"dashboards-form-save",disabled:S,onClick:E,size:"sm",type:"button",children:o}),e[46]=E,e[47]=S,e[48]=o,e[49]=n):n=e[49];let y;e[50]!==f||e[51]!==n?(y=(0,i.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[f,n]}),e[50]=f,e[51]=n,e[52]=y):y=e[52];let I;return e[53]!==h||e[54]!==b||e[55]!==y||e[56]!==p?(I=(0,i.jsx)(Q,{"data-testid":"dashboards-form",children:(0,i.jsxs)(V,{className:"flex flex-col gap-3 py-4",children:[p,h,b,y]})}),e[53]=h,e[54]=b,e[55]=y,e[56]=p,e[57]=I):I=e[57],I},"oe"),we=C(M=>{let e=(0,A.c)(39),{initialShardKey:a}=M,m=W(),[t,d]=Y(oe),[s,l]=(0,$.useState)(B),[c,N]=(0,$.useState)(null),[r,w]=(0,$.useState)(!1),L;e[0]!==a?(L=C(()=>{N(null),l({...B,shardKey:a??""}),w(!0)},"$"),e[0]=a,e[1]=L):L=e[1];let _=L,q;e[2]===Symbol.for("react.memo_cache_sentinel")?(q=C(()=>{w(!1),N(null),l(B)},"q"),e[2]=q):q=e[2];let E=q,j;e[3]!==t?(j=C(o=>{let n=t.find(y=>y.id===o);n!==void 0&&(N(o),l({shardKey:n.shardKey??"",sql:n.sql,title:n.title}),w(!0))},"L"),e[3]=t,e[4]=j):j=e[4];let R=j,k;e[5]!==d?(k=C(o=>{d(n=>n.filter(y=>y.id!==o))},"k"),e[5]=d,e[6]=k):k=e[6];let x=k,p;e[7]!==s.shardKey||e[8]!==s.sql||e[9]!==s.title||e[10]!==c||e[11]!==d?(p=C(()=>{let o=s.title.trim(),n=s.sql.trim();if(o===""||n==="")return;let y=s.shardKey.trim();d(c===null?I=>[...I,{id:ee("w"),shardKey:y,sql:n,title:o}]:I=>I.map(z=>z.id===c?{...z,shardKey:y,sql:n,title:o}:z)),E()},"p"),e[7]=s.shardKey,e[8]=s.sql,e[9]=s.title,e[10]=c,e[11]=d,e[12]=p):p=e[12];let K=p,h;e[13]!==m?(h=m("Chart widgets backed by saved read-only SQL queries."),e[13]=m,e[14]=h):h=e[14];let v;e[15]!==h?(v=(0,i.jsx)("p",{className:"text-sm text-muted-foreground",children:h}),e[15]=h,e[16]=v):v=e[16];let u;e[17]!==r||e[18]!==_||e[19]!==m?(u=!r&&(0,i.jsx)(T,{"data-testid":"dashboards-add",onClick:_,size:"sm",type:"button",children:m("Add widget")}),e[17]=r,e[18]=_,e[19]=m,e[20]=u):u=e[20];let b;e[21]!==v||e[22]!==u?(b=(0,i.jsxs)("div",{className:"flex items-center justify-between",children:[v,u]}),e[21]=v,e[22]=u,e[23]=b):b=e[23];let g;e[24]!==s||e[25]!==c||e[26]!==r||e[27]!==K?(g=r&&(0,i.jsx)(ce,{draft:s,editing:c!==null,onCancel:E,onChange:l,onSubmit:K}),e[24]=s,e[25]=c,e[26]=r,e[27]=K,e[28]=g):g=e[28];let f;e[29]!==r||e[30]!==R||e[31]!==x||e[32]!==m||e[33]!==t?(f=t.length===0&&!r?(0,i.jsx)(H,{description:m("Add a widget to chart a saved SQL query on this browser."),testId:"dashboards-empty",title:m("No widgets yet")}):(0,i.jsx)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-3","data-testid":"dashboards-grid",children:t.map(o=>(0,i.jsx)(ne,{onEdit:R,onRemove:x,widget:o},o.id))}),e[29]=r,e[30]=R,e[31]=x,e[32]=m,e[33]=t,e[34]=f):f=e[34];let S;return e[35]!==g||e[36]!==f||e[37]!==b?(S=(0,i.jsxs)("div",{className:"flex flex-col gap-4","data-testid":"lunora-dashboards",children:[b,g,f]}),e[35]=g,e[36]=f,e[37]=b,e[38]=S):S=e[38],S},"qe");export{we as default};
1
+ import{a as ae}from"./chunk-7RXOPYR5.js";import"./chunk-PF7V3G2Z.js";import"./chunk-4UOFSGUS.js";import"./chunk-ILNELDFC.js";import"./chunk-T6VMSOBB.js";import{a as te}from"./chunk-XXQUMVWH.js";import{a as Q,b as U,c as D,e as V}from"./chunk-UZERI5YC.js";import{d as Y,f as ee}from"./chunk-7T7UOTYK.js";import"./chunk-7QIFDWQV.js";import{c as T}from"./chunk-FXCBF4XT.js";import"./chunk-2OUPA2WJ.js";import"./chunk-6ST5ECQA.js";import{a as X}from"./chunk-GXZAXNZI.js";import{f as F}from"./chunk-LWECXQWP.js";import"./chunk-XBDKZZ67.js";import{a as H}from"./chunk-XQCVZAGU.js";import{d as W,f as Z,g as G,h as J,m as P}from"./chunk-4CGALXS3.js";import"./chunk-LE56LPNH.js";import{a as C,e as O,f as de,g as le,h as ie}from"./chunk-3XIESWL4.js";var A=O(le(),1),$=O(de(),1);var i=O(ie(),1);var se=Z(X.runSql),re=C((M,e)=>{let a=F(),[m,t]=(0,$.useState)(void 0),[d,s]=(0,$.useState)(void 0),[l,c]=(0,$.useState)(!0),N=(0,$.useCallback)(async r=>{c(!0);try{let w=await a.query(se,{sql:M},G(e));r.cancelled||(t(w),s(void 0))}catch(w){r.cancelled||(t(void 0),s(J(w)))}finally{r.cancelled||c(!1)}},[a,M,e]);return(0,$.useEffect)(()=>{let r={cancelled:!1};return P(N(r)),()=>{r.cancelled=!0}},[N]),{error:d,loading:l,result:m}},"ie"),oe="lunora-studio-dashboards",B={shardKey:"",sql:"",title:""},ne=C(M=>{let e=(0,A.c)(54),{onEdit:a,onRemove:m,widget:t}=M,d=W(),{error:s,loading:l,result:c}=re(t.sql,t.shardKey??""),N;e[0]!==a||e[1]!==t.id?(N=C(()=>{a(t.id)},"C"),e[0]=a,e[1]=t.id,e[2]=N):N=e[2];let r=N,w;e[3]!==m||e[4]!==t.id?(w=C(()=>{m(t.id)},"w"),e[3]=m,e[4]=t.id,e[5]=w):w=e[5];let L=w,_=`dashboards-widget-${t.id}`,q;e[6]!==t.title?(q=(0,i.jsx)(D,{className:"min-w-0 truncate",title:t.title,children:t.title}),e[6]=t.title,e[7]=q):q=e[7];let E;e[8]!==d?(E=d("Edit widget"),e[8]=d,e[9]=E):E=e[9];let j=`dashboards-widget-edit-${t.id}`,R;e[10]!==d?(R=d("Edit widget"),e[10]=d,e[11]=R):R=e[11];let k;e[12]===Symbol.for("react.memo_cache_sentinel")?(k=(0,i.jsx)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:(0,i.jsx)("path",{d:"M4 20h4L18 10l-4-4L4 16v4ZM14 6l4 4"})}),e[12]=k):k=e[12];let x;e[13]!==r||e[14]!==E||e[15]!==j||e[16]!==R?(x=(0,i.jsx)(T,{"aria-label":E,"data-testid":j,onClick:r,size:"icon-xs",title:R,type:"button",variant:"ghost",children:k}),e[13]=r,e[14]=E,e[15]=j,e[16]=R,e[17]=x):x=e[17];let p;e[18]!==d?(p=d("Remove widget"),e[18]=d,e[19]=p):p=e[19];let K=`dashboards-widget-remove-${t.id}`,h;e[20]!==d?(h=d("Remove widget"),e[20]=d,e[21]=h):h=e[21];let v;e[22]===Symbol.for("react.memo_cache_sentinel")?(v=(0,i.jsx)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:(0,i.jsx)("path",{d:"M5 7h14M9 7V5h6v2m-1 0v12H10V7M7 7v13h10V7"})}),e[22]=v):v=e[22];let u;e[23]!==L||e[24]!==p||e[25]!==K||e[26]!==h?(u=(0,i.jsx)(T,{"aria-label":p,"data-testid":K,onClick:L,size:"icon-xs",title:h,type:"button",variant:"ghost",children:v}),e[23]=L,e[24]=p,e[25]=K,e[26]=h,e[27]=u):u=e[27];let b;e[28]!==u||e[29]!==x?(b=(0,i.jsxs)("div",{className:"flex shrink-0 items-center gap-1",children:[x,u]}),e[28]=u,e[29]=x,e[30]=b):b=e[30];let g;e[31]!==b||e[32]!==q?(g=(0,i.jsxs)(U,{className:"flex flex-row items-start justify-between gap-2 border-b pb-3",children:[q,b]}),e[31]=b,e[32]=q,e[33]=g):g=e[33];let f;e[34]!==s||e[35]!==t.id?(f=s!==void 0&&(0,i.jsx)(te,{className:"font-mono text-xs",testId:`dashboards-widget-error-${t.id}`,variant:"destructive",children:s}),e[34]=s,e[35]=t.id,e[36]=f):f=e[36];let S;e[37]!==s||e[38]!==l||e[39]!==c||e[40]!==d||e[41]!==t.id?(S=s===void 0&&l&&c===void 0&&(0,i.jsx)("p",{className:"p-4 text-sm text-muted-foreground","data-testid":`dashboards-widget-loading-${t.id}`,children:d("Running\u2026")}),e[37]=s,e[38]=l,e[39]=c,e[40]=d,e[41]=t.id,e[42]=S):S=e[42];let o;e[43]!==s||e[44]!==c?(o=s===void 0&&c!==void 0&&(0,i.jsx)(ae,{result:c}),e[43]=s,e[44]=c,e[45]=o):o=e[45];let n;e[46]!==f||e[47]!==S||e[48]!==o?(n=(0,i.jsxs)(V,{className:"min-h-32 py-2",children:[f,S,o]}),e[46]=f,e[47]=S,e[48]=o,e[49]=n):n=e[49];let y;return e[50]!==g||e[51]!==n||e[52]!==_?(y=(0,i.jsxs)(Q,{"data-testid":_,children:[g,n]}),e[50]=g,e[51]=n,e[52]=_,e[53]=y):y=e[53],y},"ae"),ce=C(M=>{let e=(0,A.c)(58),{draft:a,editing:m,onCancel:t,onChange:d,onSubmit:s}=M,l=W(),c;e[0]!==a||e[1]!==d?(c=C(z=>{d({...a,title:z.target.value})},"n"),e[0]=a,e[1]=d,e[2]=c):c=e[2];let N=c,r;e[3]!==a||e[4]!==d?(r=C(z=>{d({...a,sql:z.target.value})},"s"),e[3]=a,e[4]=d,e[5]=r):r=e[5];let w=r,L;e[6]!==a||e[7]!==d?(L=C(z=>{d({...a,shardKey:z.target.value})},"$"),e[6]=a,e[7]=d,e[8]=L):L=e[8];let _=L,q;e[9]!==s?(q=C(()=>{s()},"q"),e[9]=s,e[10]=q):q=e[10];let E=q,j;e[11]!==a.sql||e[12]!==a.title?(j=a.title.trim()!==""&&a.sql.trim()!=="",e[11]=a.sql,e[12]=a.title,e[13]=j):j=e[13];let R=j,k;e[14]!==l?(k=l("Widget title"),e[14]=l,e[15]=k):k=e[15];let x;e[16]!==l?(x=l("Widget title"),e[16]=l,e[17]=x):x=e[17];let p;e[18]!==a.title||e[19]!==N||e[20]!==k||e[21]!==x?(p=(0,i.jsx)("input",{"aria-label":k,className:"h-8 rounded-md border border-border bg-background px-2 text-xs outline-none focus-visible:border-ring","data-testid":"dashboards-form-title",onChange:N,placeholder:x,type:"text",value:a.title}),e[18]=a.title,e[19]=N,e[20]=k,e[21]=x,e[22]=p):p=e[22];let K;e[23]!==l?(K=l("SQL query"),e[23]=l,e[24]=K):K=e[24];let h;e[25]!==a.sql||e[26]!==w||e[27]!==K?(h=(0,i.jsx)("textarea",{"aria-label":K,className:"min-h-24 resize-y rounded-md border border-border bg-background p-2 font-mono text-xs leading-5 outline-none focus-visible:border-ring","data-testid":"dashboards-form-sql",onChange:w,placeholder:"SELECT author, COUNT(*) AS messages FROM \u2026",spellCheck:!1,value:a.sql}),e[25]=a.sql,e[26]=w,e[27]=K,e[28]=h):h=e[28];let v;e[29]!==l?(v=l("Shard key (optional)"),e[29]=l,e[30]=v):v=e[30];let u;e[31]!==l?(u=l("Shard key (optional)"),e[31]=l,e[32]=u):u=e[32];let b;e[33]!==a.shardKey||e[34]!==_||e[35]!==v||e[36]!==u?(b=(0,i.jsx)("input",{"aria-label":v,className:"h-8 rounded-md border border-border bg-background px-2 font-mono text-xs outline-none focus-visible:border-ring","data-testid":"dashboards-form-shard",onChange:_,placeholder:u,type:"text",value:a.shardKey}),e[33]=a.shardKey,e[34]=_,e[35]=v,e[36]=u,e[37]=b):b=e[37];let g;e[38]!==l?(g=l("Cancel"),e[38]=l,e[39]=g):g=e[39];let f;e[40]!==t||e[41]!==g?(f=(0,i.jsx)(T,{"data-testid":"dashboards-form-cancel",onClick:t,size:"sm",type:"button",variant:"outline",children:g}),e[40]=t,e[41]=g,e[42]=f):f=e[42];let S=!R,o;e[43]!==m||e[44]!==l?(o=l(m?"Save widget":"Add widget"),e[43]=m,e[44]=l,e[45]=o):o=e[45];let n;e[46]!==E||e[47]!==S||e[48]!==o?(n=(0,i.jsx)(T,{"data-testid":"dashboards-form-save",disabled:S,onClick:E,size:"sm",type:"button",children:o}),e[46]=E,e[47]=S,e[48]=o,e[49]=n):n=e[49];let y;e[50]!==f||e[51]!==n?(y=(0,i.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[f,n]}),e[50]=f,e[51]=n,e[52]=y):y=e[52];let I;return e[53]!==h||e[54]!==b||e[55]!==y||e[56]!==p?(I=(0,i.jsx)(Q,{"data-testid":"dashboards-form",children:(0,i.jsxs)(V,{className:"flex flex-col gap-3 py-4",children:[p,h,b,y]})}),e[53]=h,e[54]=b,e[55]=y,e[56]=p,e[57]=I):I=e[57],I},"oe"),we=C(M=>{let e=(0,A.c)(39),{initialShardKey:a}=M,m=W(),[t,d]=Y(oe),[s,l]=(0,$.useState)(B),[c,N]=(0,$.useState)(null),[r,w]=(0,$.useState)(!1),L;e[0]!==a?(L=C(()=>{N(null),l({...B,shardKey:a??""}),w(!0)},"$"),e[0]=a,e[1]=L):L=e[1];let _=L,q;e[2]===Symbol.for("react.memo_cache_sentinel")?(q=C(()=>{w(!1),N(null),l(B)},"q"),e[2]=q):q=e[2];let E=q,j;e[3]!==t?(j=C(o=>{let n=t.find(y=>y.id===o);n!==void 0&&(N(o),l({shardKey:n.shardKey??"",sql:n.sql,title:n.title}),w(!0))},"L"),e[3]=t,e[4]=j):j=e[4];let R=j,k;e[5]!==d?(k=C(o=>{d(n=>n.filter(y=>y.id!==o))},"k"),e[5]=d,e[6]=k):k=e[6];let x=k,p;e[7]!==s.shardKey||e[8]!==s.sql||e[9]!==s.title||e[10]!==c||e[11]!==d?(p=C(()=>{let o=s.title.trim(),n=s.sql.trim();if(o===""||n==="")return;let y=s.shardKey.trim();d(c===null?I=>[...I,{id:ee("w"),shardKey:y,sql:n,title:o}]:I=>I.map(z=>z.id===c?{...z,shardKey:y,sql:n,title:o}:z)),E()},"p"),e[7]=s.shardKey,e[8]=s.sql,e[9]=s.title,e[10]=c,e[11]=d,e[12]=p):p=e[12];let K=p,h;e[13]!==m?(h=m("Chart widgets backed by saved read-only SQL queries."),e[13]=m,e[14]=h):h=e[14];let v;e[15]!==h?(v=(0,i.jsx)("p",{className:"text-sm text-muted-foreground",children:h}),e[15]=h,e[16]=v):v=e[16];let u;e[17]!==r||e[18]!==_||e[19]!==m?(u=!r&&(0,i.jsx)(T,{"data-testid":"dashboards-add",onClick:_,size:"sm",type:"button",children:m("Add widget")}),e[17]=r,e[18]=_,e[19]=m,e[20]=u):u=e[20];let b;e[21]!==v||e[22]!==u?(b=(0,i.jsxs)("div",{className:"flex items-center justify-between",children:[v,u]}),e[21]=v,e[22]=u,e[23]=b):b=e[23];let g;e[24]!==s||e[25]!==c||e[26]!==r||e[27]!==K?(g=r&&(0,i.jsx)(ce,{draft:s,editing:c!==null,onCancel:E,onChange:l,onSubmit:K}),e[24]=s,e[25]=c,e[26]=r,e[27]=K,e[28]=g):g=e[28];let f;e[29]!==r||e[30]!==R||e[31]!==x||e[32]!==m||e[33]!==t?(f=t.length===0&&!r?(0,i.jsx)(H,{description:m("Add a widget to chart a saved SQL query on this browser."),testId:"dashboards-empty",title:m("No widgets yet")}):(0,i.jsx)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-3","data-testid":"dashboards-grid",children:t.map(o=>(0,i.jsx)(ne,{onEdit:R,onRemove:x,widget:o},o.id))}),e[29]=r,e[30]=R,e[31]=x,e[32]=m,e[33]=t,e[34]=f):f=e[34];let S;return e[35]!==g||e[36]!==f||e[37]!==b?(S=(0,i.jsxs)("div",{className:"flex flex-col gap-4","data-testid":"lunora-dashboards",children:[b,g,f]}),e[35]=g,e[36]=f,e[37]=b,e[38]=S):S=e[38],S},"qe");export{we as default};
@@ -1 +1 @@
1
- import{a as S}from"./chunk-SKJZDOHG.js";import{a as y,e as A}from"./chunk-JKPK25JO.js";import{b as h}from"./chunk-K5PFWU5J.js";import"./chunk-4FNHHFWR.js";import{f as k}from"./chunk-KJTLW5W2.js";import"./chunk-UREY4GLG.js";import{d as I}from"./chunk-KLLYGWNF.js";import"./chunk-UDZY7MKE.js";import{a as u,e as w,g as $,h as j}from"./chunk-UHHTEBC3.js";var N=w($(),1);var a=w(j(),1);var z=[{key:"accounts",label:"Accounts"},{key:"admin",label:"Admin"},{key:"organization",label:"Organizations"},{key:"passkey",label:"Passkeys"},{key:"twoFactor",label:"Two-factor"}],v=u(e=>{if(e===void 0)return"\u2014";let i=[[86400,"d"],[3600,"h"],[60,"m"]];for(let[t,d]of i)if(e>=t&&e%t===0)return`${String(e/t)}${d}`;return`${String(e)}s`},"v"),g=u(e=>{let i=(0,N.c)(8),{children:t,heading:d,testId:r}=e,l;i[0]!==d?(l=(0,a.jsx)("header",{className:"border-b border-border px-4 py-3",children:(0,a.jsx)("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:d})}),i[0]=d,i[1]=l):l=i[1];let n;i[2]!==t?(n=(0,a.jsx)(A,{className:"p-3",children:t}),i[2]=t,i[3]=n):n=i[3];let c;return i[4]!==l||i[5]!==n||i[6]!==r?(c=(0,a.jsxs)(y,{className:"gap-0 py-0","data-testid":r,children:[l,n]}),i[4]=l,i[5]=n,i[6]=r,i[7]=c):c=i[7],c},"h"),o=u(e=>{let i=(0,N.c)(7),{label:t,value:d}=e,r;i[0]!==t?(r=(0,a.jsx)("span",{className:"text-sm",children:t}),i[0]=t,i[1]=r):r=i[1];let l;i[2]!==d?(l=(0,a.jsx)("span",{className:"text-sm text-muted-foreground tabular-nums",children:d}),i[2]=d,i[3]=l):l=i[3];let n;return i[4]!==r||i[5]!==l?(n=(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2 rounded-xl border border-border bg-card p-2 shadow-xs",children:[r,l]}),i[4]=r,i[5]=l,i[6]=n):n=i[6],n},"c"),O=u(()=>{let e=(0,N.c)(20),i=k(),t=I(),d;e[0]===Symbol.for("react.memo_cache_sentinel")?(d=["lunora-auth-config"],e[0]=d):d=e[0];let r;e[1]!==i?(r=u(()=>i.getAuthConfig(),"s"),e[1]=i,e[2]=r):r=e[2];let{data:l,error:n}=S(d,r),c;e[3]!==t?(c=u(s=>(0,a.jsx)(h,{variant:s?"success":"outline",children:t(s?"Enabled":"Disabled")}),"u"),e[3]=t,e[4]=c):c=e[4];let m=c,p;e[5]!==n?(p=n!==null&&(0,a.jsx)("p",{className:"px-4 py-8 text-center text-sm text-destructive","data-testid":"auth-config-error",role:"alert",children:n}),e[5]=n,e[6]=p):p=e[6];let f;e[7]!==l||e[8]!==n||e[9]!==t?(f=n===null&&l===void 0&&(0,a.jsx)("p",{className:"px-4 py-8 text-center text-sm text-muted-foreground","data-testid":"auth-config-loading",children:t("Loading auth configuration\u2026")}),e[7]=l,e[8]=n,e[9]=t,e[10]=f):f=e[10];let x;e[11]!==l||e[12]!==n||e[13]!==m||e[14]!==t?(x=n===null&&l!==void 0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(g,{heading:t("Enabled capabilities"),testId:"auth-config-capabilities",children:(0,a.jsx)("ul",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:z.map(s=>{let P=l.capabilities[s.key];return(0,a.jsxs)("li",{className:"flex items-center justify-between gap-2 rounded-xl border border-border bg-card p-2 shadow-xs","data-testid":`auth-config-cap-${s.key}`,children:[(0,a.jsx)("span",{className:"text-sm",children:t(s.label)}),m(P)]},s.key)})})}),(0,a.jsx)(g,{heading:t("Plugins"),testId:"auth-config-plugins",children:l.plugins.length===0?(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:t("No plugins enabled.")}):(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:l.plugins.map(L)})}),(0,a.jsx)(g,{heading:t("Sign-in methods"),testId:"auth-config-signin",children:(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)(o,{label:t("Email & password"),value:m(l.emailAndPassword)}),(0,a.jsx)(o,{label:t("Social providers"),value:l.socialProviders.length===0?t("None"):(0,a.jsx)("span",{className:"flex flex-wrap justify-end gap-1",children:l.socialProviders.map(q)})})]})}),l.organization.enabled&&(0,a.jsx)(g,{heading:t("Organizations"),testId:"auth-config-org",children:(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)(o,{label:t("Teams"),value:m(l.organization.teams)}),(0,a.jsx)(o,{label:t("Custom roles"),value:m(l.organization.roles)})]})}),(0,a.jsx)(g,{heading:t("Session policy"),testId:"auth-config-session",children:(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)(o,{label:t("Expires in"),value:v(l.session.expiresIn)}),(0,a.jsx)(o,{label:t("Refresh after"),value:v(l.session.updateAge)}),(0,a.jsx)(o,{label:t("Fresh window"),value:v(l.session.freshAge)}),(0,a.jsx)(o,{label:t("Cookie cache"),value:m(l.session.cookieCache===!0)})]})}),(0,a.jsx)(g,{heading:t("Rate limit"),testId:"auth-config-ratelimit",children:(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)(o,{label:t("Status"),value:m(l.rateLimit.enabled)}),l.rateLimit.enabled&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o,{label:t("Max requests"),value:l.rateLimit.max??"\u2014"}),(0,a.jsx)(o,{label:t("Window"),value:v(l.rateLimit.window)})]})]})}),l.userFields.length>0&&(0,a.jsx)(g,{heading:t("Plugin user fields"),testId:"auth-config-user-fields",children:(0,a.jsx)("ul",{className:"flex flex-col gap-2",children:l.userFields.map(s=>(0,a.jsxs)("li",{className:"flex items-center justify-between gap-2 rounded-xl border border-border bg-card p-2 shadow-xs","data-testid":`auth-config-user-field-${s.name}`,children:[(0,a.jsxs)("span",{className:"flex flex-col",children:[(0,a.jsx)("span",{className:"font-mono text-xs",children:s.name}),s.plugin!==void 0&&(0,a.jsx)("span",{className:"text-[11px] text-muted-foreground",children:s.plugin})]}),(0,a.jsxs)("span",{className:"flex items-center gap-1",children:[(0,a.jsx)(h,{variant:"outline",children:s.type}),s.required&&(0,a.jsx)(h,{variant:"secondary",children:t("required")}),s.unique&&(0,a.jsx)(h,{variant:"secondary",children:t("unique")})]})]},s.name))})}),(0,a.jsx)(y,{className:"gap-0 py-0",children:(0,a.jsx)("p",{className:"px-4 py-3 text-xs text-muted-foreground","data-testid":"auth-config-note",children:t("OAuth providers, email templates, and rate limits are configured at deploy time in the better-auth setup and aren't editable here. See the Mail tab for email output.")})})]}),e[11]=l,e[12]=n,e[13]=m,e[14]=t,e[15]=x):x=e[15];let b;return e[16]!==p||e[17]!==f||e[18]!==x?(b=(0,a.jsxs)("div",{className:"flex flex-col gap-4","data-testid":"auth-config",children:[p,f,x]}),e[16]=p,e[17]=f,e[18]=x,e[19]=b):b=e[19],b},"M");function L(e){return(0,a.jsx)(h,{"data-testid":`auth-config-plugin-${e}`,variant:"outline",children:e},e)}u(L,"P");function q(e){return(0,a.jsx)(h,{"data-testid":`auth-config-provider-${e}`,variant:"outline",children:e},e)}u(q,"z");export{O as AuthConfigPanel};
1
+ import{a as S}from"./chunk-OWADN6BI.js";import{a as y,e as A}from"./chunk-UZERI5YC.js";import{b as h}from"./chunk-THIXMMZD.js";import"./chunk-6ST5ECQA.js";import{f as k}from"./chunk-LWECXQWP.js";import"./chunk-XBDKZZ67.js";import{d as I}from"./chunk-4CGALXS3.js";import"./chunk-LE56LPNH.js";import{a as u,e as w,g as $,h as j}from"./chunk-3XIESWL4.js";var N=w($(),1);var a=w(j(),1);var z=[{key:"accounts",label:"Accounts"},{key:"admin",label:"Admin"},{key:"organization",label:"Organizations"},{key:"passkey",label:"Passkeys"},{key:"twoFactor",label:"Two-factor"}],v=u(e=>{if(e===void 0)return"\u2014";let i=[[86400,"d"],[3600,"h"],[60,"m"]];for(let[t,d]of i)if(e>=t&&e%t===0)return`${String(e/t)}${d}`;return`${String(e)}s`},"v"),g=u(e=>{let i=(0,N.c)(8),{children:t,heading:d,testId:r}=e,l;i[0]!==d?(l=(0,a.jsx)("header",{className:"border-b border-border px-4 py-3",children:(0,a.jsx)("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:d})}),i[0]=d,i[1]=l):l=i[1];let n;i[2]!==t?(n=(0,a.jsx)(A,{className:"p-3",children:t}),i[2]=t,i[3]=n):n=i[3];let c;return i[4]!==l||i[5]!==n||i[6]!==r?(c=(0,a.jsxs)(y,{className:"gap-0 py-0","data-testid":r,children:[l,n]}),i[4]=l,i[5]=n,i[6]=r,i[7]=c):c=i[7],c},"h"),o=u(e=>{let i=(0,N.c)(7),{label:t,value:d}=e,r;i[0]!==t?(r=(0,a.jsx)("span",{className:"text-sm",children:t}),i[0]=t,i[1]=r):r=i[1];let l;i[2]!==d?(l=(0,a.jsx)("span",{className:"text-sm text-muted-foreground tabular-nums",children:d}),i[2]=d,i[3]=l):l=i[3];let n;return i[4]!==r||i[5]!==l?(n=(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2 rounded-xl border border-border bg-card p-2 shadow-xs",children:[r,l]}),i[4]=r,i[5]=l,i[6]=n):n=i[6],n},"c"),O=u(()=>{let e=(0,N.c)(20),i=k(),t=I(),d;e[0]===Symbol.for("react.memo_cache_sentinel")?(d=["lunora-auth-config"],e[0]=d):d=e[0];let r;e[1]!==i?(r=u(()=>i.getAuthConfig(),"s"),e[1]=i,e[2]=r):r=e[2];let{data:l,error:n}=S(d,r),c;e[3]!==t?(c=u(s=>(0,a.jsx)(h,{variant:s?"success":"outline",children:t(s?"Enabled":"Disabled")}),"u"),e[3]=t,e[4]=c):c=e[4];let m=c,p;e[5]!==n?(p=n!==null&&(0,a.jsx)("p",{className:"px-4 py-8 text-center text-sm text-destructive","data-testid":"auth-config-error",role:"alert",children:n}),e[5]=n,e[6]=p):p=e[6];let f;e[7]!==l||e[8]!==n||e[9]!==t?(f=n===null&&l===void 0&&(0,a.jsx)("p",{className:"px-4 py-8 text-center text-sm text-muted-foreground","data-testid":"auth-config-loading",children:t("Loading auth configuration\u2026")}),e[7]=l,e[8]=n,e[9]=t,e[10]=f):f=e[10];let x;e[11]!==l||e[12]!==n||e[13]!==m||e[14]!==t?(x=n===null&&l!==void 0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(g,{heading:t("Enabled capabilities"),testId:"auth-config-capabilities",children:(0,a.jsx)("ul",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:z.map(s=>{let P=l.capabilities[s.key];return(0,a.jsxs)("li",{className:"flex items-center justify-between gap-2 rounded-xl border border-border bg-card p-2 shadow-xs","data-testid":`auth-config-cap-${s.key}`,children:[(0,a.jsx)("span",{className:"text-sm",children:t(s.label)}),m(P)]},s.key)})})}),(0,a.jsx)(g,{heading:t("Plugins"),testId:"auth-config-plugins",children:l.plugins.length===0?(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:t("No plugins enabled.")}):(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:l.plugins.map(L)})}),(0,a.jsx)(g,{heading:t("Sign-in methods"),testId:"auth-config-signin",children:(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)(o,{label:t("Email & password"),value:m(l.emailAndPassword)}),(0,a.jsx)(o,{label:t("Social providers"),value:l.socialProviders.length===0?t("None"):(0,a.jsx)("span",{className:"flex flex-wrap justify-end gap-1",children:l.socialProviders.map(q)})})]})}),l.organization.enabled&&(0,a.jsx)(g,{heading:t("Organizations"),testId:"auth-config-org",children:(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)(o,{label:t("Teams"),value:m(l.organization.teams)}),(0,a.jsx)(o,{label:t("Custom roles"),value:m(l.organization.roles)})]})}),(0,a.jsx)(g,{heading:t("Session policy"),testId:"auth-config-session",children:(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)(o,{label:t("Expires in"),value:v(l.session.expiresIn)}),(0,a.jsx)(o,{label:t("Refresh after"),value:v(l.session.updateAge)}),(0,a.jsx)(o,{label:t("Fresh window"),value:v(l.session.freshAge)}),(0,a.jsx)(o,{label:t("Cookie cache"),value:m(l.session.cookieCache===!0)})]})}),(0,a.jsx)(g,{heading:t("Rate limit"),testId:"auth-config-ratelimit",children:(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)(o,{label:t("Status"),value:m(l.rateLimit.enabled)}),l.rateLimit.enabled&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o,{label:t("Max requests"),value:l.rateLimit.max??"\u2014"}),(0,a.jsx)(o,{label:t("Window"),value:v(l.rateLimit.window)})]})]})}),l.userFields.length>0&&(0,a.jsx)(g,{heading:t("Plugin user fields"),testId:"auth-config-user-fields",children:(0,a.jsx)("ul",{className:"flex flex-col gap-2",children:l.userFields.map(s=>(0,a.jsxs)("li",{className:"flex items-center justify-between gap-2 rounded-xl border border-border bg-card p-2 shadow-xs","data-testid":`auth-config-user-field-${s.name}`,children:[(0,a.jsxs)("span",{className:"flex flex-col",children:[(0,a.jsx)("span",{className:"font-mono text-xs",children:s.name}),s.plugin!==void 0&&(0,a.jsx)("span",{className:"text-[11px] text-muted-foreground",children:s.plugin})]}),(0,a.jsxs)("span",{className:"flex items-center gap-1",children:[(0,a.jsx)(h,{variant:"outline",children:s.type}),s.required&&(0,a.jsx)(h,{variant:"secondary",children:t("required")}),s.unique&&(0,a.jsx)(h,{variant:"secondary",children:t("unique")})]})]},s.name))})}),(0,a.jsx)(y,{className:"gap-0 py-0",children:(0,a.jsx)("p",{className:"px-4 py-3 text-xs text-muted-foreground","data-testid":"auth-config-note",children:t("OAuth providers, email templates, and rate limits are configured at deploy time in the better-auth setup and aren't editable here. See the Mail tab for email output.")})})]}),e[11]=l,e[12]=n,e[13]=m,e[14]=t,e[15]=x):x=e[15];let b;return e[16]!==p||e[17]!==f||e[18]!==x?(b=(0,a.jsxs)("div",{className:"flex flex-col gap-4","data-testid":"auth-config",children:[p,f,x]}),e[16]=p,e[17]=f,e[18]=x,e[19]=b):b=e[19],b},"M");function L(e){return(0,a.jsx)(h,{"data-testid":`auth-config-plugin-${e}`,variant:"outline",children:e},e)}u(L,"P");function q(e){return(0,a.jsx)(h,{"data-testid":`auth-config-provider-${e}`,variant:"outline",children:e},e)}u(q,"z");export{O as AuthConfigPanel};