@jonathanleelx/meddle 0.5.0-beta.14 → 0.5.0-beta.15

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 (95) hide show
  1. package/package.json +1 -1
  2. package/web/dist/assets/alert-DO7T3mut.js +1 -0
  3. package/web/dist/assets/arrow-right-DGB2MxsX.js +1 -0
  4. package/web/dist/assets/{body-diff-view-B-4XWmL6.js → body-diff-view-CO4FDdwK.js} +2 -2
  5. package/web/dist/assets/button-yArHqw81.js +1 -0
  6. package/web/dist/assets/check-ByTjANaY.js +1 -0
  7. package/web/dist/assets/{checkbox-DfpRw_5t.js → checkbox-CE4zQ4Yd.js} +1 -1
  8. package/web/dist/assets/chevron-down-vKjBY-BY.js +1 -0
  9. package/web/dist/assets/{circle-alert-Q8cZk9Rv.js → circle-alert-DAWy5HuM.js} +1 -1
  10. package/web/dist/assets/{circle-x-C9USji_R.js → circle-x-BjSs1hQK.js} +1 -1
  11. package/web/dist/assets/code-DAB_mRnu.js +1 -0
  12. package/web/dist/assets/{copy-BYjq1hdN.js → copy-qMUl4peN.js} +1 -1
  13. package/web/dist/assets/detail-panel-BE03zbRM.js +4 -0
  14. package/web/dist/assets/dist-BW-gQyc_.js +5 -0
  15. package/web/dist/assets/{dist-CEd_wnRC.js → dist-CjLkNKST.js} +1 -1
  16. package/web/dist/assets/{dist-C6eaYCUo.js → dist-CwP5Ad1_.js} +1 -1
  17. package/web/dist/assets/dist-CymFeFOA.js +1 -0
  18. package/web/dist/assets/{dist-DoE7uybN.js → dist-D2vbXHYx.js} +1 -1
  19. package/web/dist/assets/{dist-DWmDaXVN.js → dist-DGuRBXW6.js} +1 -1
  20. package/web/dist/assets/{es2015-DG46NGN7.js → es2015-BiaNLfVn.js} +1 -1
  21. package/web/dist/assets/{global-panel-shell-DZ4TKKlS.js → global-panel-shell-B_KrFgrG.js} +4 -4
  22. package/web/dist/assets/health-panel-Cx7_kL4v.js +1 -0
  23. package/web/dist/assets/index-BI-mGxIe.css +2 -0
  24. package/web/dist/assets/index-BSDW5a57.js +18 -0
  25. package/web/dist/assets/mobile-proxy-panel-yPd3yUkm.js +8 -0
  26. package/web/dist/assets/mock-config-B0E2-aH2.js +1 -0
  27. package/web/dist/assets/mock-editor-panel-BvPtitwB.js +20 -0
  28. package/web/dist/assets/{monaco-editor-BQw_uavF.js → monaco-editor-C-8a2RcV.js} +2 -2
  29. package/web/dist/assets/{pencil-line-Cqe41E4h.js → pencil-line-jiAfwHPx.js} +1 -1
  30. package/web/dist/assets/plugin-code-editor-M-RHHFw3.js +2 -0
  31. package/web/dist/assets/plugin-config-BpNDvl12.js +1 -0
  32. package/web/dist/assets/plugin-generator-88t2qEJf.js +2 -0
  33. package/web/dist/assets/plugin-test-dialog-DdaPFHRu.js +7 -0
  34. package/web/dist/assets/plus-BdrJey8J.js +1 -0
  35. package/web/dist/assets/{refresh-cw-CG3HaiQT.js → refresh-cw-DdzbeDXU.js} +1 -1
  36. package/web/dist/assets/rotate-ccw-_UaUgje4.js +1 -0
  37. package/web/dist/assets/route-preview-jIx1yelT.js +1 -0
  38. package/web/dist/assets/{rule-ai-assistant-panel-Crc13ODb.js → rule-ai-assistant-panel-B_Jt1DJA.js} +2 -2
  39. package/web/dist/assets/rule-config-CQj7iV_7.js +15 -0
  40. package/web/dist/assets/rule-overview-panel-8qC9Q6T-.js +1 -0
  41. package/web/dist/assets/{server-Cpj4KNwN.js → server-CktUTlNz.js} +1 -1
  42. package/web/dist/assets/settings-panel-1cLPk1j5.js +1 -0
  43. package/web/dist/assets/{shield-check-OqUmVLQt.js → shield-check-UHsTa1Dy.js} +1 -1
  44. package/web/dist/assets/smartphone-D5HBDIeh.js +1 -0
  45. package/web/dist/assets/switch-B568YFGZ.js +1 -0
  46. package/web/dist/assets/{syntax-highlight-Dk0-ewLI.js → syntax-highlight-DF90eoRG.js} +1 -1
  47. package/web/dist/assets/{table-2-BR5e3z8m.js → table-2-BE3hfnr0.js} +1 -1
  48. package/web/dist/assets/table-BY-pIs96.js +1 -0
  49. package/web/dist/assets/tabs-DnFHv5gb.js +1 -0
  50. package/web/dist/assets/textarea-CQWqIFs-.js +1 -0
  51. package/web/dist/assets/{wand-sparkles-CJ7fSnom.js → wand-sparkles-B9ZnNs8E.js} +1 -1
  52. package/web/dist/assets/{wifi-CCLKyySQ.js → wifi-fTyrNPN8.js} +1 -1
  53. package/web/dist/assets/{zap-DR-xiUMe.js → zap-h2l6wVxY.js} +1 -1
  54. package/web/dist/index.html +14 -12
  55. package/web/dist/assets/alert-DCvlZAiv.js +0 -1
  56. package/web/dist/assets/arrow-right-B4Mrlj2-.js +0 -1
  57. package/web/dist/assets/button-BTToMaBW.js +0 -1
  58. package/web/dist/assets/chevron-down-CPngAx4M.js +0 -1
  59. package/web/dist/assets/chevron-right-V1DGIDbL.js +0 -1
  60. package/web/dist/assets/code-5_eJ_XpJ.js +0 -1
  61. package/web/dist/assets/code-fixer-BWFV7546.js +0 -20
  62. package/web/dist/assets/detail-panel-Mm27FyFh.js +0 -4
  63. package/web/dist/assets/dist-Blyulj4_.js +0 -1
  64. package/web/dist/assets/dist-C8RHq5At.js +0 -5
  65. package/web/dist/assets/dist-Ce4ujolc.js +0 -1
  66. package/web/dist/assets/file-system-access-_og-Tg9o.js +0 -1
  67. package/web/dist/assets/health-panel-DhLw8KKm.js +0 -1
  68. package/web/dist/assets/index-Cw0WJSVU.js +0 -18
  69. package/web/dist/assets/index-DlO3YLfJ.css +0 -2
  70. package/web/dist/assets/mobile-proxy-panel-rqw9ZZUP.js +0 -8
  71. package/web/dist/assets/mock-config-OWiFPvcg.js +0 -1
  72. package/web/dist/assets/mock-editor-panel-CeZYoHc3.js +0 -1
  73. package/web/dist/assets/plugin-code-editor-BXHzyirh.js +0 -2
  74. package/web/dist/assets/plugin-config-d4HeoImD.js +0 -1
  75. package/web/dist/assets/plugin-generator-DqQTPpcL.js +0 -2
  76. package/web/dist/assets/plugin-test-dialog-t0lJXL3D.js +0 -7
  77. package/web/dist/assets/plus-tVxSydJ8.js +0 -1
  78. package/web/dist/assets/rotate-ccw-CAYM6Vv0.js +0 -1
  79. package/web/dist/assets/route-preview-CPzLw9Ze.js +0 -1
  80. package/web/dist/assets/rule-config-LI7rxAJs.js +0 -15
  81. package/web/dist/assets/rule-overview-panel-Cq2mUmBQ.js +0 -1
  82. package/web/dist/assets/select-C6-okPSH.js +0 -1
  83. package/web/dist/assets/settings-panel-CmCxMJMm.js +0 -1
  84. package/web/dist/assets/smartphone-DKeDuJTU.js +0 -1
  85. package/web/dist/assets/switch-Bes_YiJu.js +0 -1
  86. package/web/dist/assets/table-nW7uQVcl.js +0 -1
  87. package/web/dist/assets/textarea-BSI0rnW6.js +0 -1
  88. /package/web/dist/assets/{ai-config-store-C8D_PUGV.js → ai-config-store-DQXVJVn_.js} +0 -0
  89. /package/web/dist/assets/{babel-DCr4VA1c.js → babel-DsprIpXZ.js} +0 -0
  90. /package/web/dist/assets/{clipboard-VhPXNN5m.js → clipboard-Dz6MgwV-.js} +0 -0
  91. /package/web/dist/assets/{dist-Bsv9ad5F.js → dist-DQDFV3o1.js} +0 -0
  92. /package/web/dist/assets/{estree-qO_m2Qaw.js → estree-BP7k0NIt.js} +0 -0
  93. /package/web/dist/assets/{html-VDGahtyk.js → html-6FIWbqxX.js} +0 -0
  94. /package/web/dist/assets/{postcss-BUm8EKMw.js → postcss-Dnf30fQU.js} +0 -0
  95. /package/web/dist/assets/{standalone-Bj8SSd8Q.js → standalone-CjxtLKw-.js} +0 -0
@@ -0,0 +1 @@
1
+ import{f as e,s as t,t as n,u as r}from"./button-yArHqw81.js";import"./dist-CwP5Ad1_.js";import{t as i}from"./refresh-cw-DdzbeDXU.js";import{t as a}from"./table-2-BE3hfnr0.js";import{A as o,D as s,E as c,H as ee,L as te,O as l,R as u,T as d,U as f,Z as p,at as m,k as h,lt as g,mt as _,o as v,w as y,z as b}from"./index-BSDW5a57.js";import{a as x,i as S,n as C,o as w,r as T,t as E}from"./table-BY-pIs96.js";var D=e(r(),1),O=t(),k=`border-l-2 border-l-transparent`,A=`text-muted-foreground opacity-75`;function j(e){return e.length>0?e.map(e=>`!${e}`).join(` `):`—`}function M({rules:e,activeFileName:t,onLocateRule:r,onSelectFile:M}){let[N,ne]=(0,D.useState)(null),[P,F]=(0,D.useState)(!0),[I,L]=(0,D.useState)(null),[R,z]=(0,D.useState)(`merged`),[B,V]=(0,D.useState)(``),H=(0,D.useDeferredValue)(B),U=(0,D.useCallback)(async()=>{F(!0),L(null);try{let e=await fetch(`/api/rule-files/overview`);if(!e.ok)throw Error(`加载失败(${e.status})`);ne(await e.json())}catch(e){L(e instanceof Error?e.message:`加载失败`)}finally{F(!1)}},[]);(0,D.useEffect)(()=>{U()},[U]);let W=(0,D.useMemo)(()=>N?.perFileRules.find(e=>e.name===t)??null,[N,t]),G=(0,D.useMemo)(()=>{if(!W||W.error)return!1;let t=W.rules.map(e=>({rule:e.rawRule,target:e.rawTarget,enabled:e.enabled,exclusions:e.exclusions}));return v(e)!==v(t)},[W,e]),K=(0,D.useMemo)(()=>{let e=new Map;for(let t of N?.conflicts??[])e.set(t.pattern,t);return e},[N]),q=(0,D.useCallback)(e=>{let t=H.trim().toLowerCase();return t?e.some(e=>e&&e.toLowerCase().includes(t)):!0},[H]),J=(0,D.useMemo)(()=>(N?.mergedRules??[]).map(e=>({winner:e,shadowed:K.get(e.pattern)?.shadowed??[]})).filter(({winner:e,shadowed:t})=>q([e.rawRule,e.rawTarget,e.file])||t.some(e=>q([e.rawRule,e.rawTarget,e.file]))),[N,K,q]),Y=N?.mergedRules.length??0,X=N?.conflicts.reduce((e,t)=>e+t.shadowed.length,0)??0,Z=(0,D.useMemo)(()=>(N?.perFileRules??[]).map(e=>({...e,matched:e.rules.filter(t=>q([t.rawRule,t.rawTarget,e.name]))})).filter(e=>e.error!=null||q([e.name])||e.matched.length>0),[N,q]),re=N?.perFileRules.reduce((e,t)=>e+t.rules.length,0)??0,ie=Z.reduce((e,t)=>e+t.matched.length,0),Q=(0,D.useCallback)((e,t,n)=>{r(e,t,n)},[r]),ae=(0,D.useCallback)((e,t)=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),M(t))},[M]),oe=()=>{if(P)return(0,O.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-2 p-2`,children:[(0,O.jsx)(f,{className:`h-8 w-full`}),(0,O.jsx)(f,{className:`h-8 w-full`}),(0,O.jsx)(f,{className:`h-8 w-3/4`})]});if(I)return(0,O.jsxs)(d,{className:`min-h-0 flex-1`,children:[(0,O.jsxs)(l,{children:[(0,O.jsx)(h,{variant:`icon`,children:(0,O.jsx)(p,{})}),(0,O.jsx)(o,{children:`加载失败`}),(0,O.jsx)(s,{children:I})]}),(0,O.jsx)(c,{children:(0,O.jsxs)(n,{variant:`outline`,onClick:()=>void U(),children:[(0,O.jsx)(i,{"data-icon":`inline-start`}),`重试`]})})]});let e=(N?.files.length??0)>0,t=N?.perFileRules.some(e=>e.rules.length>0||e.error!=null)??!1,r=H.trim().length>0;return e?t?R===`merged`&&!r&&(N?.mergedRules.length??0)===0?(0,O.jsx)(d,{className:`min-h-0 flex-1`,children:(0,O.jsxs)(l,{children:[(0,O.jsx)(h,{variant:`icon`,children:(0,O.jsx)(g,{})}),(0,O.jsx)(o,{children:`没有生效中的规则`}),(0,O.jsx)(s,{children:`规则全部被禁用,或没有启用任何规则文件;切换到「按文件」查看全部规则`})]})}):r&&R===`merged`&&J.length===0||r&&R===`files`&&Z.every(e=>e.matched.length===0&&e.error==null)?$():R===`merged`?se():ce():(0,O.jsx)(d,{className:`min-h-0 flex-1`,children:(0,O.jsxs)(l,{children:[(0,O.jsx)(h,{variant:`icon`,children:(0,O.jsx)(_,{})}),(0,O.jsx)(o,{children:`所有规则文件都是空的`}),(0,O.jsx)(s,{children:`还没有任何路由规则,先去路由规则页添加一条吧`})]})}):(0,O.jsx)(d,{className:`min-h-0 flex-1`,children:(0,O.jsxs)(l,{children:[(0,O.jsx)(h,{variant:`icon`,children:(0,O.jsx)(a,{})}),(0,O.jsx)(o,{children:`还没有规则文件`}),(0,O.jsx)(s,{children:`在路由规则页点击「+」创建第一个规则文件`})]})})},$=()=>(0,O.jsxs)(d,{className:`min-h-0 flex-1`,children:[(0,O.jsxs)(l,{children:[(0,O.jsx)(h,{variant:`icon`,children:(0,O.jsx)(m,{})}),(0,O.jsx)(o,{children:`无匹配结果`}),(0,O.jsxs)(s,{children:[`没有找到符合「`,H.trim(),`」的规则`]})]}),(0,O.jsx)(c,{children:(0,O.jsx)(n,{variant:`outline`,onClick:()=>V(``),children:`清空筛选`})})]}),se=()=>(0,O.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden rounded-md border`,children:[(0,O.jsx)(`div`,{className:`meddle-thin-scroll shrink-0 overflow-x-auto bg-card`,children:(0,O.jsxs)(E,{className:`table-fixed`,children:[(0,O.jsxs)(`colgroup`,{children:[(0,O.jsx)(`col`,{style:{width:`6rem`}}),(0,O.jsx)(`col`,{}),(0,O.jsx)(`col`,{style:{width:`8rem`}}),(0,O.jsx)(`col`,{})]}),(0,O.jsx)(x,{children:(0,O.jsxs)(w,{children:[(0,O.jsx)(S,{children:`来源`}),(0,O.jsx)(S,{children:`规则`}),(0,O.jsx)(S,{className:`hidden md:table-cell`,children:`排除`}),(0,O.jsx)(S,{children:`目标`})]})})]})}),(0,O.jsx)(y,{className:`min-h-0 flex-1`,children:(0,O.jsxs)(E,{className:`table-fixed`,children:[(0,O.jsxs)(`colgroup`,{children:[(0,O.jsx)(`col`,{style:{width:`6rem`}}),(0,O.jsx)(`col`,{}),(0,O.jsx)(`col`,{style:{width:`8rem`}}),(0,O.jsx)(`col`,{})]}),(0,O.jsx)(C,{children:J.map(({winner:e,shadowed:t})=>(0,O.jsxs)(D.Fragment,{children:[(0,O.jsxs)(w,{className:`${k} cursor-pointer`,onClick:()=>Q(e.file,e.rawRule,e.rawTarget),title:`点击定位到该规则`,children:[(0,O.jsx)(T,{className:`truncate text-xs text-muted-foreground`,children:e.file}),(0,O.jsxs)(T,{className:`break-all font-mono text-xs`,children:[e.rawRule,t.length>0&&(0,O.jsx)(b,{variant:`default`,className:`ml-2 px-1 py-0 text-[10px]`,title:`同名规则最终生效的定义`,children:`生效`})]}),(0,O.jsx)(T,{className:`hidden break-all font-mono text-xs text-muted-foreground md:table-cell`,children:j(e.exclusions)}),(0,O.jsx)(T,{className:`break-all font-mono text-xs`,children:e.rawTarget})]}),t.map((t,n)=>(0,O.jsxs)(w,{className:`${k} cursor-pointer ${A}`,onClick:()=>Q(t.file,t.rawRule,t.rawTarget),title:`点击定位到该规则`,children:[(0,O.jsx)(T,{className:`truncate text-xs`,children:t.file}),(0,O.jsx)(T,{className:`break-all font-mono text-xs`,children:(0,O.jsxs)(`span`,{className:`inline-flex flex-wrap items-center gap-1.5`,children:[t.rawRule,(0,O.jsx)(b,{variant:`destructive`,className:`px-1 py-0 text-[10px]`,title:`已被 ${e.file} 中的同名规则覆盖,实际不生效`,children:`已被覆盖`})]})}),(0,O.jsx)(T,{className:`hidden break-all font-mono text-xs md:table-cell`,children:`—`}),(0,O.jsx)(T,{className:`break-all font-mono text-xs`,children:t.rawTarget})]},`merged-shadowed-${n}`))]},`merged-group-${e.pattern}`))})]})})]}),ce=()=>(0,O.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden rounded-md border`,children:[(0,O.jsx)(`div`,{className:`meddle-thin-scroll shrink-0 overflow-x-auto bg-card`,children:(0,O.jsxs)(E,{className:`table-fixed`,children:[(0,O.jsxs)(`colgroup`,{children:[(0,O.jsx)(`col`,{style:{width:`3.5rem`}}),(0,O.jsx)(`col`,{}),(0,O.jsx)(`col`,{style:{width:`8rem`}}),(0,O.jsx)(`col`,{})]}),(0,O.jsx)(x,{children:(0,O.jsxs)(w,{children:[(0,O.jsx)(S,{children:`状态`}),(0,O.jsx)(S,{children:`规则`}),(0,O.jsx)(S,{className:`hidden md:table-cell`,children:`排除`}),(0,O.jsx)(S,{children:`目标`})]})})]})}),(0,O.jsx)(y,{className:`min-h-0 flex-1`,children:(0,O.jsxs)(E,{className:`table-fixed`,children:[(0,O.jsxs)(`colgroup`,{children:[(0,O.jsx)(`col`,{style:{width:`3.5rem`}}),(0,O.jsx)(`col`,{}),(0,O.jsx)(`col`,{style:{width:`8rem`}}),(0,O.jsx)(`col`,{})]}),(0,O.jsx)(C,{children:Z.map(e=>(0,O.jsxs)(D.Fragment,{children:[(0,O.jsx)(w,{className:`hover:bg-accent/60`,children:(0,O.jsx)(T,{colSpan:4,className:`cursor-pointer bg-muted/50 p-2 align-middle`,role:`button`,tabIndex:0,onClick:()=>M(e.name),onKeyDown:t=>ae(t,e.name),title:`点击切换到该规则文件`,children:(0,O.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2 font-medium`,children:[e.name,(0,O.jsx)(b,{variant:e.enabled?`default`:`secondary`,className:`px-1 py-0 text-[10px]`,children:e.enabled?`启用`:`禁用`}),(0,O.jsx)(b,{variant:`secondary`,className:`px-1 py-0 text-[10px]`,children:e.rules.length})]})})}),e.error&&(0,O.jsx)(w,{className:`text-destructive`,children:(0,O.jsx)(T,{colSpan:4,className:`p-2 text-xs`,children:(0,O.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(p,{className:`h-3.5 w-3.5 shrink-0`}),`读取失败:`,e.error]})})}),e.matched.map((t,n)=>(0,O.jsxs)(w,{className:`cursor-pointer ${t.enabled?``:`opacity-60`}`,onClick:()=>Q(e.name,t.rawRule,t.rawTarget),title:`点击定位到该规则`,children:[(0,O.jsx)(T,{children:(0,O.jsx)(b,{variant:t.enabled?`default`:`secondary`,className:`px-1 py-0 text-[10px]`,children:t.enabled?`启用`:`禁用`})}),(0,O.jsx)(T,{className:`break-all font-mono text-xs`,children:t.rawRule}),(0,O.jsx)(T,{className:`hidden break-all font-mono text-xs text-muted-foreground md:table-cell`,children:j(t.exclusions)}),(0,O.jsx)(T,{className:`break-all font-mono text-xs ${t.enabled?``:`line-through`}`,children:t.rawTarget})]},`file-rule-${n}`))]},`file-group-${e.name}`))})]})})]}),le=R===`merged`?Y+X:re,ue=R===`merged`?J.reduce((e,t)=>e+1+t.shadowed.length,0):ie;return(0,O.jsxs)(`div`,{className:`app-panel-content flex h-full flex-col gap-3`,children:[(0,O.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,O.jsxs)(te,{type:`single`,value:R,onValueChange:e=>{e&&z(e)},variant:`outline`,size:`sm`,className:`bg-background`,"aria-label":`总览视图`,children:[(0,O.jsx)(u,{value:`merged`,children:`生效规则`}),(0,O.jsx)(u,{value:`files`,children:`按文件`})]}),(0,O.jsxs)(`div`,{className:`relative min-w-40 flex-1`,children:[(0,O.jsx)(m,{className:`pointer-events-none absolute top-1/2 left-2 h-4 w-4 -translate-y-1/2 text-muted-foreground`}),(0,O.jsx)(ee,{value:B,onChange:e=>V(e.target.value),placeholder:`搜索规则 / 目标 / 文件名`,className:`h-8 pl-8`,"aria-label":`搜索规则`})]}),(0,O.jsx)(n,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>void U(),disabled:P,"aria-label":`刷新总览`,title:`刷新`,children:(0,O.jsx)(i,{})})]}),G&&(0,O.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-800`,children:[(0,O.jsx)(p,{className:`h-3.5 w-3.5 shrink-0`}),(0,O.jsxs)(`span`,{children:[`「`,t,`」有未保存修改,此处展示的是代理当前使用的`,(0,O.jsx)(`b`,{children:`已保存内容`})]})]}),!P&&!I&&(N?.files.length??0)>0&&(0,O.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 text-xs text-muted-foreground`,children:[(0,O.jsxs)(`span`,{children:[ue,` / `,le,` 条`,R===`merged`&&H.trim()===``&&X>0?`,其中 ${X} 条被同名规则覆盖`:``]}),R===`merged`&&(0,O.jsx)(`span`,{children:`按代理实际生效顺序排列(后定义覆盖先定义)`}),R===`files`&&(0,O.jsx)(`span`,{children:`点击文件名切换到该文件`})]}),oe()]})}export{M as RuleOverviewPanel};
@@ -1 +1 @@
1
- import{l as e}from"./button-BTToMaBW.js";var t=e(`clock`,[[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),n=e(`server`,[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]);export{t as n,n as t};
1
+ import{l as e}from"./button-yArHqw81.js";var t=e(`clock`,[[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),n=e(`server`,[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]);export{t as n,n as t};
@@ -0,0 +1 @@
1
+ import{f as e,l as t,s as n,t as r,u as i}from"./button-yArHqw81.js";import"./dist-CwP5Ad1_.js";import{t as ee}from"./check-ByTjANaY.js";import{t as a}from"./circle-alert-DAWy5HuM.js";import{t as o}from"./circle-x-BjSs1hQK.js";import{t as s}from"./plus-BdrJey8J.js";import{t as te}from"./refresh-cw-DdzbeDXU.js";import{t as ne}from"./rotate-ccw-_UaUgje4.js";import{t as c}from"./smartphone-D5HBDIeh.js";import"./es2015-BiaNLfVn.js";import{t as re}from"./switch-B568YFGZ.js";import{i as l,n as u,r as ie,t as ae}from"./tabs-DnFHv5gb.js";import{a as d,c as oe,l as se,n as ce,o as f,r as p,s as le,t as ue}from"./ai-config-store-DQXVJVn_.js";import{F as de,H as m,I as fe,L as h,M as pe,N as me,P as g,Q as he,R as _,St as v,_ as ge,b as _e,c as ve,d as y,dt as ye,f as be,ft as xe,g as Se,h as b,it as Ce,j as we,l as Te,m as x,ot as S,p as Ee,rt as De,s as Oe,tt as ke,u as C,v as Ae,vt as w,x as T,y as je,z as E}from"./index-BSDW5a57.js";import{n as Me,r as Ne,t as Pe}from"./alert-DO7T3mut.js";var Fe=t(`eye-off`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),Ie=t(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Le=t(`stethoscope`,[[`path`,{d:`M11 2v2`,key:`1539x4`}],[`path`,{d:`M5 2v2`,key:`1yf1q8`}],[`path`,{d:`M5 3H4a2 2 0 0 0-2 2v4a6 6 0 0 0 12 0V5a2 2 0 0 0-2-2h-1`,key:`rb5t3r`}],[`path`,{d:`M8 15a6 6 0 0 0 12 0v-3`,key:`x18d4x`}],[`circle`,{cx:`20`,cy:`10`,r:`2`,key:`ts1r5v`}]]),D=e(i(),1),O=n(),Re=[{value:`75`,label:`75%`,scale:.75},{value:`90`,label:`90%`,scale:.9},{value:`100`,label:`100%`,scale:1},{value:`110`,label:`110%`,scale:1.1},{value:`125`,label:`125%`,scale:1.25},{value:`150`,label:`150%`,scale:1.5}],ze=[{value:`auto`,label:`自动`,color:`linear-gradient(135deg, oklch(0.623 0.214 259.815), oklch(0.606 0.25 292.717))`},{value:`neutral`,label:`中性`,color:`oklch(0.556 0 0)`},{value:`blue`,label:`蓝色`,color:`oklch(0.623 0.214 259.815)`},{value:`violet`,label:`紫色`,color:`oklch(0.606 0.25 292.717)`},{value:`green`,label:`绿色`,color:`oklch(0.627 0.194 149.214)`},{value:`orange`,label:`橙色`,color:`oklch(0.646 0.222 41.116)`},{value:`rose`,label:`玫红`,color:`oklch(0.645 0.246 16.439)`}],k=`app-panel-content mt-0`,A=`app-field-group`,j=`app-section`,M=e=>{if(!e)return`100`;let t={small:`90`,medium:`100`,large:`110`};return e in t?t[e]:Re.some(t=>t.value===e)?e:`100`};function Be({open:e=!1,onOpenChange:t,embedded:n=!1}){let{theme:i,accentColor:Be,setTheme:Ve,setAccentColor:He,setZoom:N}=Oe(),[P,Ue]=(0,D.useState)(`preferences`),[F,I]=(0,D.useState)(()=>p()),[L,We]=(0,D.useState)(!1),[R,z]=(0,D.useState)(!1),[B,V]=(0,D.useState)(null),[Ge,H]=(0,D.useState)(``),[U,W]=(0,D.useState)(null),[G,Ke]=(0,D.useState)(``),[qe,Je]=(0,D.useState)([]),[K,q]=(0,D.useState)({}),[J,Ye]=(0,D.useState)(``),[Y,Xe]=(0,D.useState)(``),[X,Z]=(0,D.useState)(null),[Ze,Qe]=(0,D.useState)(!1),[Q,$e]=(0,D.useState)(()=>M(ve().fontSize)),[et,tt]=(0,D.useState)(!1);(0,D.useEffect)(()=>{Te().then(e=>{let t=M(e.fontSize);$e(t),N(parseInt(t,10)/100),tt(!0)}).catch(()=>{tt(!0)})},[N]),(0,D.useEffect)(()=>{if(!et)return;let e=M(Q);N(parseInt(e,10)/100),C({fontSize:e}).catch(console.error)},[N,et,Q]),(0,D.useEffect)(()=>{(e||n)&&(Te().then(e=>{I(e.aiConfig),Ke(e.mocksFilePath||``),q(e.clientAliases||{})}).catch(()=>{I(p())}),V(null),H(``),fetch(`/api/rule-files`).then(e=>e.json()).then(e=>{Array.isArray(e)&&Je(e)}).catch(()=>{}))},[e,n]);let nt=e=>{let t=d(e);I({...F,provider:e,baseUrl:t.baseUrl,model:t.model})},rt=async()=>{z(!0);try{await C({aiConfig:F}),oe(F),V(`success`),H(`AI 配置保存成功`),y.success(`AI 配置保存成功`)}catch(e){let t=e instanceof Error?e.message:`保存失败`;V(`error`),H(t),y.error(t)}finally{z(!1)}},it=()=>{le(),I(p()),V(null),H(``)},at=async()=>{if(!f(F)){V(`error`),H(`请填写完整的配置信息`);return}z(!0),V(null),H(`测试中...`);try{let e=F.baseUrl,t={"Content-Type":`application/json`},n;F.provider===`anthropic`?(t[`x-api-key`]=F.apiKey,t[`anthropic-version`]=`2023-06-01`,n={model:F.model,max_tokens:100,system:`You are a helpful assistant.`,messages:[{role:`user`,content:`Say "test successful"`}],temperature:.3}):(t.Authorization=`Bearer ${F.apiKey}`,n={model:F.model,messages:[{role:`system`,content:`You are a helpful assistant.`},{role:`user`,content:`Say "test successful"`}],temperature:.3,max_tokens:100});let r=await fetch(e,{method:`POST`,headers:t,body:JSON.stringify(n)});if(!r.ok){let e=await r.text();throw Error(`API错误 (${r.status}): ${e}`)}let i=await r.json();if(F.provider===`anthropic`){if(!i.content?.[0]?.text)throw Error(`API响应格式不正确`)}else if(!i.choices?.[0]?.message?.content)throw Error(`API响应格式不正确`);V(`success`),H(`连接测试成功! API配置正常`)}catch(e){V(`error`),H(e instanceof Error?e.message:`测试失败`)}finally{z(!1)}},ot=(0,D.useCallback)(async()=>{try{let e=await fetch(`/api/refresh-config`,{method:`POST`});if(e.ok){let t=await e.json();V(`success`),H(t.message||`配置已刷新`),setTimeout(()=>{V(null),H(``)},2e3)}else{let t=await e.json();V(`error`),H(t.error||`刷新配置失败`),setTimeout(()=>{V(null),H(``)},2e3)}}catch(e){console.error(`刷新配置失败:`,e),V(`error`),H(`刷新配置失败`),setTimeout(()=>{V(null),H(``)},2e3)}},[]),st=(0,D.useCallback)(async()=>{Qe(!0),Z(null);try{let e=await fetch(`/api/config-doctor`);e.ok?Z(await e.json()):(V(`error`),H(`诊断失败`),setTimeout(()=>{V(null),H(``)},2e3))}catch(e){console.error(`诊断失败:`,e),V(`error`),H(`诊断失败`),setTimeout(()=>{V(null),H(``)},2e3)}finally{Qe(!1)}},[]),ct=()=>{let e=J.trim(),t=Y.trim();!e||!t||(q(n=>({...n,[e]:t})),Ye(``),Xe(``))},lt=async()=>{z(!0);try{await C({clientAliases:K}),V(`success`),H(`客户端名称已保存,新请求立即生效`),y.success(`客户端名称保存成功`)}catch(e){let t=e instanceof Error?e.message:`保存失败`;V(`error`),H(t),y.error(t)}finally{z(!1)}},ut=async()=>{z(!0);try{await C({mocksFilePath:G}),V(`success`),H(`Mock 文件路径已更新,刷新页面后生效`),y.success(`Mock 文件路径保存成功`),setTimeout(()=>{V(null),H(``)},3e3)}catch(e){let t=e instanceof Error?e.message:`保存失败`;V(`error`),H(t),y.error(t)}finally{z(!1)}};be({active:(e||n)&&P!==`preferences`,enabled:!R,priority:Ee.panel,onSave:()=>{if(P===`config`)return ut();if(P===`clients`)return lt();if(P===`ai`)return rt()}});let $=(0,O.jsxs)(O.Fragment,{children:[!n&&(0,O.jsxs)(je,{className:`px-6 pt-6 pb-4`,children:[(0,O.jsxs)(_e,{className:`flex items-center gap-2`,children:[(0,O.jsx)(Ce,{className:`h-5 w-5`}),`系统设置`]}),(0,O.jsx)(Ae,{children:`管理系统偏好、配置和 AI 功能`})]}),(0,O.jsxs)(ae,{value:P,onValueChange:e=>Ue(e),orientation:`vertical`,className:`min-h-0 flex-1 gap-0`,children:[(0,O.jsxs)(ie,{"aria-label":`设置分类`,className:`h-full w-14 shrink-0 self-stretch justify-start gap-1 rounded-none border-r bg-muted/25 p-2 group-data-[orientation=vertical]/tabs:!h-full sm:w-44 sm:p-3`,children:[(0,O.jsxs)(l,{value:`preferences`,className:`h-9 w-full flex-none justify-start px-2.5 sm:px-3`,children:[(0,O.jsx)(Ce,{}),(0,O.jsx)(`span`,{className:`hidden sm:inline`,children:`偏好设置`})]}),(0,O.jsxs)(l,{value:`config`,className:`h-9 w-full flex-none justify-start px-2.5 sm:px-3`,children:[(0,O.jsx)(w,{}),(0,O.jsx)(`span`,{className:`hidden sm:inline`,children:`配置文件`})]}),(0,O.jsxs)(l,{value:`clients`,className:`h-9 w-full flex-none justify-start px-2.5 sm:px-3`,children:[(0,O.jsx)(c,{}),(0,O.jsx)(`span`,{className:`hidden sm:inline`,children:`客户端`})]}),(0,O.jsxs)(l,{value:`ai`,className:`h-9 w-full flex-none justify-start px-2.5 sm:px-3`,children:[(0,O.jsx)(De,{}),(0,O.jsx)(`span`,{className:`hidden sm:inline`,children:`AI 配置`})]})]}),(0,O.jsxs)(u,{value:`preferences`,className:k,children:[(0,O.jsxs)(`div`,{className:A,children:[(0,O.jsx)(T,{className:`text-sm`,children:`主题`}),(0,O.jsxs)(we,{value:i,onValueChange:e=>Ve(e),children:[(0,O.jsx)(de,{children:(0,O.jsx)(fe,{placeholder:`选择主题`})}),(0,O.jsx)(pe,{children:(0,O.jsxs)(me,{children:[(0,O.jsx)(g,{value:`system`,children:(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(xe,{className:`size-4`}),`跟随系统`]})}),(0,O.jsx)(g,{value:`light`,children:(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(ke,{className:`size-4`}),`浅色模式`]})}),(0,O.jsx)(g,{value:`dark`,children:(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(ye,{className:`size-4`}),`深色模式`]})})]})})]})]}),(0,O.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,O.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,O.jsx)(T,{className:`text-sm`,children:`强调色`}),(0,O.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`统一按钮、状态、选中项和焦点样式。自动模式会根据明暗主题选择合适的颜色。`})]}),(0,O.jsx)(h,{type:`single`,value:Be,onValueChange:e=>{e&&He(e)},variant:`outline`,spacing:1,className:`flex-wrap justify-start`,"aria-label":`强调色`,children:ze.map(e=>(0,O.jsxs)(_,{value:e.value,"aria-label":e.label,children:[e.value===`auto`?(0,O.jsx)(De,{"data-icon":`inline-start`}):(0,O.jsx)(`span`,{className:`size-3 rounded-full border border-foreground/10`,style:{background:e.color}}),e.label]},e.value))})]}),(0,O.jsxs)(`div`,{className:A,children:[(0,O.jsx)(T,{className:`text-sm`,children:`缩放比例`}),(0,O.jsxs)(we,{value:Q,onValueChange:$e,children:[(0,O.jsx)(de,{children:(0,O.jsx)(fe,{placeholder:`选择缩放比例`})}),(0,O.jsx)(pe,{children:(0,O.jsx)(me,{children:Re.map(e=>(0,O.jsx)(g,{value:e.value,children:e.label},e.value))})})]})]}),(0,O.jsx)(b,{}),(0,O.jsxs)(`div`,{className:A,children:[(0,O.jsx)(`h3`,{className:`text-sm font-medium`,children:`关于`}),(0,O.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Meddle - HTTP 调试代理工具`}),(0,O.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`版本: 1.0.0`})]})]}),(0,O.jsxs)(u,{value:`config`,className:k,children:[(0,O.jsxs)(`div`,{className:j,children:[(0,O.jsx)(T,{className:`text-sm font-medium`,children:`路由规则文件`}),(0,O.jsxs)(`div`,{className:A,children:[(0,O.jsxs)(`div`,{className:`flex items-center gap-2 p-3 bg-muted rounded-md`,children:[(0,O.jsx)(w,{className:`h-4 w-4 text-muted-foreground shrink-0`}),(0,O.jsx)(`span`,{className:`text-xs font-mono truncate flex-1`,children:`~/.meddle/route-rules/`})]}),qe.length>0?(0,O.jsx)(`div`,{className:`space-y-2`,children:qe.map(e=>(0,O.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border px-3 py-2.5 text-sm`,children:[(0,O.jsx)(E,{variant:e.enabled?`default`:`secondary`,className:`text-[10px]`,children:e.enabled?`已启用`:`未启用`}),(0,O.jsxs)(`span`,{className:`flex-1 truncate text-xs`,children:[e.name,`.txt`]}),(0,O.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[e.ruleCount,` 条规则`]})]},e.name))}):(0,O.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`暂无规则文件`}),(0,O.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`规则文件存放于 ~/.meddle/route-rules/ 目录,纯文本格式。在"路由规则"页面管理。`})]})]}),(0,O.jsx)(b,{}),(0,O.jsxs)(`div`,{className:j,children:[(0,O.jsx)(T,{className:`text-sm font-medium`,children:`Mock 规则文件`}),(0,O.jsxs)(`div`,{className:A,children:[(0,O.jsxs)(`div`,{className:`flex items-center gap-2 p-3 bg-muted rounded-md`,children:[(0,O.jsx)(w,{className:`h-4 w-4 text-muted-foreground shrink-0`}),(0,O.jsx)(`span`,{className:`text-xs font-mono truncate flex-1`,children:G||`默认: ~/.meddle/mocks.json`})]}),(0,O.jsxs)(`div`,{className:A,children:[(0,O.jsx)(T,{htmlFor:`mocksPath`,className:`text-xs text-muted-foreground`,children:`自定义 Mock 规则文件路径(留空使用默认)`}),(0,O.jsxs)(`div`,{className:`flex gap-2`,children:[(0,O.jsx)(m,{id:`mocksPath`,value:G,onChange:e=>Ke(e.target.value),placeholder:`如: /path/to/my-mocks.json`,className:`flex-1 h-8 text-sm font-mono`}),(0,O.jsxs)(x,{variant:`outline`,size:`sm`,onClick:ut,disabled:R,className:`h-8`,children:[(0,O.jsx)(S,{"data-icon":`inline-start`,className:`h-3 w-3`}),`应用`]})]}),(0,O.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`必须是 JSON 格式的 Mock 规则文件`})]})]})]}),(0,O.jsx)(b,{}),(0,O.jsxs)(`div`,{className:A,children:[(0,O.jsx)(`h3`,{className:`text-sm font-medium`,children:`操作`}),(0,O.jsxs)(`div`,{className:`flex gap-2`,children:[(0,O.jsxs)(r,{variant:`outline`,size:`sm`,onClick:ot,children:[(0,O.jsx)(te,{className:`h-4 w-4 mr-1`}),`重新加载配置`]}),(0,O.jsxs)(r,{variant:`outline`,size:`sm`,onClick:st,disabled:Ze,children:[(0,O.jsx)(Le,{className:`h-4 w-4 mr-1`}),Ze?`诊断中...`:`诊断配置`]})]}),(0,O.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`点击重新加载可应用修改后的配置文件,点击诊断配置可检查配置有效性`})]}),X&&(0,O.jsxs)(`div`,{className:j,children:[(0,O.jsx)(b,{}),(0,O.jsxs)(`div`,{children:[(0,O.jsxs)(`h3`,{className:`mb-4 flex items-center gap-2 text-sm font-medium`,children:[(0,O.jsx)(Le,{className:`h-4 w-4`}),`诊断结果`]}),(0,O.jsxs)(`div`,{className:`mb-3 p-3 rounded-md border ${X.status===`ok`?`bg-green-50 dark:bg-green-950/20 border-green-200 dark:border-green-900`:X.status===`warning`?`bg-yellow-50 dark:bg-yellow-950/20 border-yellow-200 dark:border-yellow-900`:`bg-red-50 dark:bg-red-950/20 border-red-200 dark:border-red-900`}`,children:[X.status===`ok`&&(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(v,{className:`h-5 w-5 text-green-600 dark:text-green-400`}),(0,O.jsx)(`span`,{className:`text-sm font-medium text-green-700 dark:text-green-300`,children:`所有检查通过!配置正常。`})]}),X.status===`warning`&&(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(a,{className:`h-5 w-5 text-yellow-600 dark:text-yellow-400`}),(0,O.jsxs)(`span`,{className:`text-sm font-medium text-yellow-700 dark:text-yellow-300`,children:[`发现 `,X.warnings.length,` 个警告`]})]}),X.status===`error`&&(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(o,{className:`h-5 w-5 text-red-600 dark:text-red-400`}),(0,O.jsxs)(`span`,{className:`text-sm font-medium text-red-700 dark:text-red-300`,children:[`发现 `,X.errors.length,` 个错误`]})]})]}),(0,O.jsx)(`div`,{className:A,children:X.checks.map((e,t)=>(0,O.jsx)(`div`,{className:`p-2 rounded border bg-card`,children:(0,O.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,O.jsx)(v,{className:`h-4 w-4 text-green-600 dark:text-green-400 mt-0.5 shrink-0`}),(0,O.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,O.jsx)(`div`,{className:`text-sm font-medium`,children:e.name}),(0,O.jsx)(`div`,{className:`text-xs text-muted-foreground font-mono truncate`,children:e.path}),e.details&&(0,O.jsxs)(`div`,{className:`text-xs text-muted-foreground mt-1`,children:[e.details.totalFiles!==void 0&&`${e.details.enabledFiles}/${e.details.totalFiles} 个文件已启用`,e.details.totalRules!==void 0&&` · ${e.details.totalRules} 条规则`,e.details.rules!==void 0&&`${e.details.rules} 条规则`,e.details.total!==void 0&&`${e.details.total} 条规则 (${e.details.enabled} 已启用)`,e.details.size!==void 0&&` · ${e.details.size} bytes`]})]})]})},t))}),X.warnings&&X.warnings.length>0&&(0,O.jsxs)(`div`,{className:`mt-3 space-y-1`,children:[(0,O.jsx)(`div`,{className:`text-xs font-medium text-yellow-700 dark:text-yellow-300`,children:`警告:`}),X.warnings.map((e,t)=>(0,O.jsxs)(`div`,{className:`flex items-start gap-2 text-xs text-yellow-600 dark:text-yellow-400`,children:[(0,O.jsx)(a,{className:`h-3 w-3 mt-0.5 shrink-0`}),(0,O.jsx)(`span`,{children:e})]},t))]}),X.errors&&X.errors.length>0&&(0,O.jsxs)(`div`,{className:`mt-3 space-y-1`,children:[(0,O.jsx)(`div`,{className:`text-xs font-medium text-red-700 dark:text-red-300`,children:`错误:`}),X.errors.map((e,t)=>(0,O.jsxs)(`div`,{className:`flex items-start gap-2 text-xs text-red-600 dark:text-red-400`,children:[(0,O.jsx)(o,{className:`h-3 w-3 mt-0.5 shrink-0`}),(0,O.jsx)(`span`,{children:e})]},t))]})]})]})]}),(0,O.jsxs)(u,{value:`clients`,className:k,children:[(0,O.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,O.jsxs)(`h3`,{className:`text-sm font-medium flex items-center gap-2`,children:[(0,O.jsx)(c,{className:`h-4 w-4`}),`远程客户端名称`]}),(0,O.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`将日志中的客户端 IP 映射为设备名称。保存后新请求立即生效,无需重启代理。`})]}),(0,O.jsx)(`div`,{className:A,children:Object.entries(K).length===0?(0,O.jsx)(`div`,{className:`rounded-md border border-dashed p-4 text-center text-xs text-muted-foreground`,children:`尚未配置设备名称`}):Object.entries(K).map(([e,t])=>(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(m,{value:e,readOnly:!0,className:`h-8 flex-1 font-mono text-xs bg-muted/40`,"aria-label":`客户端 IP ${e}`}),(0,O.jsx)(m,{value:t,onChange:t=>{let n=t.target.value;q(t=>({...t,[e]:n}))},className:`h-8 flex-1 text-sm`,"aria-label":`${e} 的设备名称`}),(0,O.jsx)(r,{variant:`ghost`,size:`icon-sm`,className:`text-muted-foreground hover:text-destructive`,onClick:()=>{q(t=>{let n={...t};return delete n[e],n})},title:`删除设备名称`,"aria-label":`删除设备名称`,children:(0,O.jsx)(he,{className:`h-4 w-4`})})]},e))}),(0,O.jsx)(b,{}),(0,O.jsxs)(`div`,{className:A,children:[(0,O.jsx)(T,{className:`text-sm`,children:`添加设备`}),(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(m,{value:J,onChange:e=>Ye(e.target.value),placeholder:`客户端 IP,例如 10.13.232.187`,className:`h-8 flex-1 font-mono text-xs`}),(0,O.jsx)(m,{value:Y,onChange:e=>Xe(e.target.value),onKeyDown:e=>{e.key===`Enter`&&ct()},placeholder:`设备名称,例如 iPhone`,className:`h-8 flex-1 text-sm`}),(0,O.jsxs)(r,{variant:`outline`,size:`sm`,className:`h-8`,onClick:ct,disabled:!J.trim()||!Y.trim(),children:[(0,O.jsx)(s,{className:`h-4 w-4 mr-1`}),`添加`]})]})]}),(0,O.jsxs)(x,{onClick:lt,disabled:R,children:[(0,O.jsx)(S,{"data-icon":`inline-start`,className:`h-4 w-4`}),R?`保存中...`:`保存客户端名称`]})]}),(0,O.jsxs)(u,{value:`ai`,className:k,children:[(0,O.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,O.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,O.jsx)(T,{className:`text-sm`,children:`启用 AI 功能`}),(0,O.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`启用智能代码修复功能`})]}),(0,O.jsx)(re,{checked:F.enabled,onCheckedChange:e=>I({...F,enabled:e}),"aria-label":`启用 AI 功能`})]}),(0,O.jsx)(b,{}),(0,O.jsxs)(`div`,{className:j,children:[(0,O.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,O.jsx)(T,{className:`text-sm`,children:`AI 模型配置`}),(0,O.jsxs)(r,{variant:`outline`,size:`sm`,onClick:()=>{W({name:``,provider:`openai`,apiKey:``,baseUrl:`https://api.openai.com/v1/chat/completions`,model:`gpt-4o-mini`})},children:[(0,O.jsx)(s,{className:`h-4 w-4 mr-1`}),`添加模型`]})]}),(0,O.jsx)(`div`,{className:A,children:F.models&&F.models.length>0?F.models.map(e=>(0,O.jsx)(`div`,{className:`p-3 rounded-md border ${F.activeModelId===e.id?`border-primary bg-primary/5`:`border-border`}`,children:(0,O.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,O.jsxs)(`div`,{className:`flex-1`,children:[(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(`span`,{className:`font-medium text-sm`,children:e.name}),F.activeModelId===e.id&&(0,O.jsx)(E,{variant:`default`,className:`text-xs`,children:`当前使用`})]}),(0,O.jsxs)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:[e.provider===`openai`?`OpenAI`:`Anthropic`,` - `,e.model]})]}),(0,O.jsxs)(`div`,{className:`flex gap-1`,children:[F.activeModelId!==e.id&&(0,O.jsxs)(r,{variant:`ghost`,size:`xs`,onClick:()=>I(se(F,e.id)),children:[(0,O.jsx)(ee,{className:`h-3 w-3 mr-1`}),`使用`]}),(0,O.jsx)(r,{variant:`ghost`,size:`icon-sm`,onClick:()=>I(ce(F,e.id)),className:`text-destructive`,"aria-label":`删除模型`,children:(0,O.jsx)(he,{className:`h-3 w-3`})})]})]})},e.id)):(0,O.jsx)(`p`,{className:`text-xs text-muted-foreground italic py-4 text-center`,children:`暂无模型配置,点击"添加模型"创建`})}),U&&(0,O.jsxs)(`div`,{className:`space-y-5 rounded-md border border-primary bg-primary/5 p-4`,children:[(0,O.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,O.jsx)(T,{className:`text-sm font-medium`,children:`新增模型`}),(0,O.jsx)(r,{variant:`ghost`,size:`icon-xs`,onClick:()=>W(null),"aria-label":`关闭新增模型表单`,children:(0,O.jsx)(o,{className:`h-4 w-4`})})]}),(0,O.jsxs)(`div`,{className:A,children:[(0,O.jsx)(T,{htmlFor:`newModelName`,className:`text-xs`,children:`模型名称`}),(0,O.jsx)(m,{id:`newModelName`,value:U.name||``,onChange:e=>W({...U,name:e.target.value}),placeholder:`如:GPT-4o Mini`,className:`h-8 text-sm`})]}),(0,O.jsxs)(`div`,{className:A,children:[(0,O.jsx)(T,{className:`text-xs`,children:`服务商`}),(0,O.jsxs)(h,{type:`single`,value:U.provider,onValueChange:e=>{if(e===`openai`){let e=d(`openai`);W({...U,provider:`openai`,baseUrl:e.baseUrl,model:e.model})}else if(e===`anthropic`){let e=d(`anthropic`);W({...U,provider:`anthropic`,baseUrl:e.baseUrl,model:e.model})}},variant:`outline`,size:`sm`,spacing:0,children:[(0,O.jsx)(_,{value:`openai`,children:`OpenAI`}),(0,O.jsx)(_,{value:`anthropic`,children:`Anthropic`})]})]}),(0,O.jsxs)(`div`,{className:A,children:[(0,O.jsx)(T,{htmlFor:`newModelApiKey`,className:`text-xs`,children:`API Key`}),(0,O.jsx)(m,{id:`newModelApiKey`,type:L?`text`:`password`,value:U.apiKey||``,onChange:e=>W({...U,apiKey:e.target.value}),placeholder:`输入 API Key`,className:`h-8 text-sm`})]}),(0,O.jsxs)(`div`,{className:A,children:[(0,O.jsx)(T,{htmlFor:`newModelModel`,className:`text-xs`,children:`模型`}),(0,O.jsx)(m,{id:`newModelModel`,value:U.model||``,onChange:e=>W({...U,model:e.target.value}),placeholder:`模型名称`,className:`h-8 text-sm`})]}),(0,O.jsxs)(`div`,{className:A,children:[(0,O.jsx)(T,{htmlFor:`newModelBaseUrl`,className:`text-xs`,children:`API 端点`}),(0,O.jsx)(m,{id:`newModelBaseUrl`,value:U.baseUrl||``,onChange:e=>W({...U,baseUrl:e.target.value}),placeholder:`API 端点`,className:`h-8 text-sm`})]}),(0,O.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2`,children:[(0,O.jsx)(r,{variant:`outline`,size:`xs`,onClick:()=>W(null),children:`取消`}),(0,O.jsxs)(r,{size:`xs`,onClick:()=>{U.name&&U.apiKey&&U.model&&U.baseUrl&&(I(ue(F,U)),W(null))},disabled:!U.name||!U.apiKey||!U.model||!U.baseUrl,children:[(0,O.jsx)(s,{className:`h-3 w-3 mr-1`}),`添加`]})]})]})]}),(0,O.jsx)(b,{}),(0,O.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,O.jsx)(T,{className:`text-sm`,children:`传统配置(向后兼容)`}),(0,O.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`如果未配置多模型,将使用此配置`})]}),(0,O.jsxs)(`div`,{className:A,children:[(0,O.jsx)(T,{className:`text-xs`,children:`AI 服务商`}),(0,O.jsxs)(h,{type:`single`,value:F.provider,onValueChange:e=>{(e===`openai`||e===`anthropic`)&&nt(e)},variant:`outline`,size:`sm`,spacing:0,children:[(0,O.jsx)(_,{value:`openai`,children:`OpenAI`}),(0,O.jsx)(_,{value:`anthropic`,children:`Anthropic`})]})]}),(0,O.jsxs)(`div`,{className:A,children:[(0,O.jsx)(T,{htmlFor:`apiKey`,className:`text-xs`,children:`API Key`}),(0,O.jsxs)(`div`,{className:`flex gap-2`,children:[(0,O.jsx)(m,{id:`apiKey`,type:L?`text`:`password`,value:F.apiKey,onChange:e=>I({...F,apiKey:e.target.value}),placeholder:`输入 API Key`,className:`flex-1 h-8 text-sm`}),(0,O.jsx)(r,{variant:`outline`,size:`icon-sm`,onClick:()=>We(!L),"aria-label":L?`隐藏 API Key`:`显示 API Key`,children:L?(0,O.jsx)(Fe,{className:`h-4 w-4`}):(0,O.jsx)(Ie,{className:`h-4 w-4`})})]})]}),(0,O.jsxs)(`div`,{className:A,children:[(0,O.jsx)(T,{htmlFor:`model`,className:`text-xs`,children:`模型`}),(0,O.jsx)(m,{id:`model`,value:F.model,onChange:e=>I({...F,model:e.target.value}),placeholder:`模型名称`,className:`h-8 text-sm`})]}),(0,O.jsxs)(`div`,{className:A,children:[(0,O.jsx)(T,{htmlFor:`baseUrl`,className:`text-xs`,children:`API 端点`}),(0,O.jsx)(m,{id:`baseUrl`,value:F.baseUrl,onChange:e=>I({...F,baseUrl:e.target.value}),placeholder:F.provider===`openai`?`https://api.openai.com/v1/chat/completions`:`https://api.anthropic.com/v1/messages`,className:`h-8 text-sm`})]}),Ge&&(0,O.jsxs)(Pe,{variant:B===`error`?`destructive`:`default`,children:[B===`success`?(0,O.jsx)(v,{}):B===`error`?(0,O.jsx)(o,{}):(0,O.jsx)(a,{}),(0,O.jsx)(Ne,{children:B===`success`?`操作成功`:B===`error`?`操作失败`:`处理中`}),(0,O.jsx)(Me,{children:Ge})]}),(0,O.jsx)(b,{}),(0,O.jsxs)(`div`,{className:`flex justify-between`,children:[(0,O.jsxs)(r,{variant:`outline`,size:`sm`,onClick:it,children:[(0,O.jsx)(ne,{className:`h-4 w-4 mr-1`}),`重置`]}),(0,O.jsxs)(`div`,{className:`flex gap-2`,children:[(0,O.jsx)(r,{variant:`outline`,size:`sm`,onClick:at,disabled:!f(F)||R,children:`测试连接`}),(0,O.jsxs)(x,{size:`sm`,onClick:rt,disabled:R,children:[(0,O.jsx)(S,{"data-icon":`inline-start`,className:`h-4 w-4`}),R?`保存中...`:`保存`]})]})]})]})]})]});return n?(0,O.jsx)(`div`,{"data-testid":`settings-fullwidth`,className:`app-workspace-content flex h-full min-h-0 w-full flex-col overflow-hidden p-0`,children:(0,O.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden rounded-md border bg-card`,children:$})}):(0,O.jsx)(Se,{open:e,onOpenChange:t,children:(0,O.jsx)(ge,{className:`p-0 flex flex-col`,resizable:!0,defaultWidth:600,storageKey:`settings-panel`,children:$})})}export{Be as SettingsPanel};
@@ -1 +1 @@
1
- import{l as e}from"./button-BTToMaBW.js";var t=e(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]);export{t};
1
+ import{l as e}from"./button-yArHqw81.js";var t=e(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{l as e}from"./button-yArHqw81.js";var t=e(`smartphone`,[[`rect`,{width:`14`,height:`20`,x:`5`,y:`2`,rx:`2`,ry:`2`,key:`1yt0o3`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{a as e,c as t,f as n,s as r,u as i}from"./button-yArHqw81.js";import{a,o,r as s,t as c}from"./dist-CwP5Ad1_.js";import{B as l,V as u}from"./index-BSDW5a57.js";var d=n(i(),1),f=r(),p=`Switch`,[m,h]=a(p),[g,_]=m(p),v=d.forwardRef((t,n)=>{let{__scopeSwitch:r,name:i,checked:a,defaultChecked:l,required:u,disabled:m,value:h=`on`,onCheckedChange:_,form:v,...y}=t,[b,x]=d.useState(null),w=e(n,e=>x(e)),T=d.useRef(!1),E=b?v||!!b.closest(`form`):!0,[D,O]=c({prop:a,defaultProp:l??!1,onChange:_,caller:p});return(0,f.jsxs)(g,{scope:r,checked:D,disabled:m,children:[(0,f.jsx)(o.button,{type:`button`,role:`switch`,"aria-checked":D,"aria-required":u,"data-state":C(D),"data-disabled":m?``:void 0,disabled:m,value:h,...y,ref:w,onClick:s(t.onClick,e=>{O(e=>!e),E&&(T.current=e.isPropagationStopped(),T.current||e.stopPropagation())})}),E&&(0,f.jsx)(S,{control:b,bubbles:!T.current,name:i,value:h,checked:D,required:u,disabled:m,form:v,style:{transform:`translateX(-100%)`}})]})});v.displayName=p;var y=`SwitchThumb`,b=d.forwardRef((e,t)=>{let{__scopeSwitch:n,...r}=e,i=_(y,n);return(0,f.jsx)(o.span,{"data-state":C(i.checked),"data-disabled":i.disabled?``:void 0,...r,ref:t})});b.displayName=y;var x=`SwitchBubbleInput`,S=d.forwardRef(({__scopeSwitch:t,control:n,checked:r,bubbles:i=!0,...a},o)=>{let s=d.useRef(null),c=e(s,o),p=u(r),m=l(n);return d.useEffect(()=>{let e=s.current;if(!e)return;let t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,`checked`).set;if(p!==r&&n){let t=new Event(`click`,{bubbles:i});n.call(e,r),e.dispatchEvent(t)}},[p,r,i]),(0,f.jsx)(`input`,{type:`checkbox`,"aria-hidden":!0,defaultChecked:r,...a,tabIndex:-1,ref:c,style:{...a.style,...m,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0}})});S.displayName=x;function C(e){return e?`checked`:`unchecked`}var w=v,T=b;function E({className:e,...n}){return(0,f.jsx)(w,{"data-slot":`switch`,className:t(`peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-5 w-9 shrink-0 items-center rounded-full border-2 border-transparent shadow-xs transition-colors outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50`,e),...n,children:(0,f.jsx)(T,{"data-slot":`switch-thumb`,className:t(`bg-background pointer-events-none block size-4 rounded-full ring-0 shadow-lg transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0`)})})}export{E as t};
@@ -1,4 +1,4 @@
1
- import{a as e}from"./button-BTToMaBW.js";var t=e(),n=2097152,r=1e4,i=5e4,a=3e4,o=3e4;function s(e){return!(!e||e.length>n||e.split(`
1
+ import{s as e}from"./button-yArHqw81.js";var t=e(),n=2097152,r=1e4,i=5e4,a=3e4,o=3e4;function s(e){return!(!e||e.length>n||e.split(`
2
2
  `).length>r)}function c(e){let t=e.trim();if(!t)return`text`;if(t.startsWith(`{`)&&t.endsWith(`}`)||t.startsWith(`[`)&&t.endsWith(`]`))try{return JSON.parse(t),`json`}catch{}return/^<!DOCTYPE\s+html/i.test(t)||t.startsWith(`<html`)||t.startsWith(`<!DOCTYPE`)||/^<(!DOCTYPE|html|head|body|div|span|p|a|img|ul|ol|li|table|tr|td|th|form|input|button|h[1-6]|nav|header|footer|section|article|main|aside)\b/i.test(t)||/<[a-z][\w-]*(\s+[^>]*)?>\s*[\s\S]*<\/[a-z][\w-]*>/i.test(t)||/<[a-z][\w-]*(\s+[^>]*)?\/?>/i.test(t)&&!t.includes(`{`)?`html`:/^[.#]?[a-z][\w-]*\s*\{/i.test(t)||/^@(media|keyframes|import|font-face|charset|supports|page|namespace)/i.test(t)||/[a-z-]+\s*:\s*[^;]+;/i.test(t)&&t.includes(`{`)?`css`:t.startsWith(`"use strict"`)||t.startsWith(`'use strict'`)||/^(import|export)\s+/m.test(t)||/^(function\s+\w+|const\s+\w+\s*=\s*\(|let\s+\w+\s*=\s*\(|var\s+\w+\s*=\s*\()/m.test(t)||/=>\s*\{?/.test(t)||/(^|\s)(class|function|const|let|var|if|else|for|while|return|try|catch|finally|throw|new|async|await)\s+/i.test(t)?`javascript`:`text`}function l(e){let n=[],r=/("(?:[^"\\]|\\.)+")\s*:|("(?:[^"\\]|\\.)+")|(-?\d+\.?\d*(?:[eE][+-]?\d+)?)|true|false|null|[{}[\]:,]/g,a=0,o,s=0;for(;(o=r.exec(e))!==null&&s++<i;){o.index>a&&n.push(e.slice(a,o.index));let r=o[0];o[1]?(n.push((0,t.jsx)(`span`,{className:`text-purple-600 dark:text-purple-400`,children:o[1]},o.index)),n.push(`:`)):o[2]?n.push((0,t.jsx)(`span`,{className:`text-emerald-600 dark:text-emerald-400`,children:o[2]},o.index)):o[3]?n.push((0,t.jsx)(`span`,{className:`text-blue-600 dark:text-blue-400`,children:o[3]},o.index)):r===`true`||r===`false`?n.push((0,t.jsx)(`span`,{className:`text-amber-600 dark:text-amber-400`,children:r},o.index)):r===`null`?n.push((0,t.jsx)(`span`,{className:`text-red-400`,children:r},o.index)):n.push((0,t.jsx)(`span`,{className:`text-muted-foreground`,children:r},o.index)),a=o.index+o[0].length}return a<e.length&&n.push(e.slice(a)),n}function u(e){let n=[],r=/<!--[\s\S]{0,500}?-->|<\/?([a-z][\w-]*)\b([^>]{0,500})>/gi,i,o=0,s=0;for(;(i=r.exec(e))!==null&&s++<a;){if(i.index>o){let r=e.slice(o,i.index);r&&n.push((0,t.jsx)(`span`,{className:`text-foreground`,children:r},`text-${o}`))}let r=i[0];if(r.startsWith(`<!--`))n.push((0,t.jsx)(`span`,{className:`text-gray-500 dark:text-gray-400 italic`,children:r},i.index));else{let e=i[1],a=i[2];if(r.startsWith(`</`))n.push((0,t.jsx)(`span`,{className:`text-blue-600 dark:text-blue-400`,children:r},i.index));else{if(n.push((0,t.jsx)(`span`,{className:`text-blue-600 dark:text-blue-400`,children:`<`},i.index)),n.push((0,t.jsx)(`span`,{className:`text-blue-600 dark:text-blue-400 font-semibold`,children:e},`tag-${i.index}`)),a){let e=d(a,i.index);n.push(...e)}n.push((0,t.jsx)(`span`,{className:`text-blue-600 dark:text-blue-400`,children:`>`},`close-${i.index}`))}}o=i.index+r.length}if(o<e.length){let r=e.slice(o);r&&n.push((0,t.jsx)(`span`,{className:`text-foreground`,children:r},`text-${o}`))}return n}function d(e,n){let r=[],i=/([a-z-]+)(?:=(?:"([^"]*)"|'([^']*)'|([^\s>]+)))?/gi,a,o=0;for(;(a=i.exec(e))!==null;){a.index>o&&r.push(e.slice(o,a.index));let i=a[1],s=a[2]||a[3]||a[4];r.push((0,t.jsx)(`span`,{className:`text-amber-600 dark:text-amber-400`,children:i},`attr-name-${n}-${a.index}`)),s!==void 0&&(r.push(`=`),a[2]===void 0?a[3]===void 0?r.push((0,t.jsx)(`span`,{className:`text-emerald-600 dark:text-emerald-400`,children:a[4]},`attr-val-${n}-${a.index}`)):r.push((0,t.jsx)(`span`,{className:`text-emerald-600 dark:text-emerald-400`,children:`'${a[3]}'`},`attr-val-${n}-${a.index}`)):r.push((0,t.jsx)(`span`,{className:`text-emerald-600 dark:text-emerald-400`,children:`"${a[2]}"`},`attr-val-${n}-${a.index}`))),o=a.index+a[0].length}return o<e.length&&r.push(e.slice(o)),r}function f(e){let n=[];return e.split(`
3
3
  `).slice(0,r).forEach((e,r)=>{if(r>0&&n.push(`
4
4
  `),e.trim().startsWith(`/*`)){n.push((0,t.jsx)(`span`,{className:`text-gray-500 dark:text-gray-400 italic`,children:e},`comment-${r}`));return}if(!e.includes(`:`)||e.includes(`{`)){let i=e.split(`{`);i.length>1?(n.push((0,t.jsx)(`span`,{className:`text-purple-600 dark:text-purple-400 font-semibold`,children:i[0]},`selector-${r}`)),n.push((0,t.jsx)(`span`,{className:`text-foreground`,children:` {`},`brace-${r}`)),i[1]&&n.push(i[1])):n.push((0,t.jsx)(`span`,{className:`text-purple-600 dark:text-purple-400 font-semibold`,children:e},`selector-${r}`))}else if(e.includes(`:`)){let i=e.indexOf(`:`),a=e.slice(0,i),o=e.slice(i+1);n.push((0,t.jsx)(`span`,{className:`text-blue-600 dark:text-blue-400`,children:a},`prop-${r}`)),n.push((0,t.jsx)(`span`,{className:`text-foreground`,children:`:`},`colon-${r}`));let s=p(o,r);n.push(...s)}else n.push(e)}),n}function p(e,n){let r=[],i=/(#[0-9a-fA-F]{3,8})|(\d+(?:\.\d+)?(?:px|em|rem|%|vh|vw|deg|s|ms)?)|([a-z-]+)/gi,a=0,o;for(;(o=i.exec(e))!==null;)o.index>a&&r.push(e.slice(a,o.index)),o[1]?r.push((0,t.jsx)(`span`,{className:`text-pink-600 dark:text-pink-400`,children:o[1]},`color-${n}-${o.index}`)):o[2]?r.push((0,t.jsx)(`span`,{className:`text-amber-600 dark:text-amber-400`,children:o[2]},`num-${n}-${o.index}`)):o[3]&&r.push((0,t.jsx)(`span`,{className:`text-emerald-600 dark:text-emerald-400`,children:o[3]},`keyword-${n}-${o.index}`)),a=o.index+o[0].length;return a<e.length&&r.push(e.slice(a)),r}function m(e){let n=[],r=/(["'`])(?:[^"'`\\]|\\.){0,200}?\1|\/\/[^\n]{0,200}|\/\*[\s\S]{0,500}?\*\/|\b(function|const|let|var|if|else|for|while|return|class|import|export|from|default|async|await|try|catch|finally|throw|new|this|super|extends|static|get|set|typeof|instanceof|in|of|void|delete|yield|switch|case|break|continue|do)\b|(\d+\.?\d*(?:[eE][+-]?\d+)?)/gm,i=0,a,s=0;for(;(a=r.exec(e))!==null&&s++<o;){a.index>i&&n.push(e.slice(i,a.index));let r=a[0];r.startsWith(`"`)||r.startsWith(`'`)||r.startsWith("`")?n.push((0,t.jsx)(`span`,{className:`text-emerald-600 dark:text-emerald-400`,children:r},a.index)):r.startsWith(`//`)||r.startsWith(`/*`)?n.push((0,t.jsx)(`span`,{className:`text-gray-500 dark:text-gray-400 italic`,children:r},a.index)):a[2]?n.push((0,t.jsx)(`span`,{className:`text-purple-600 dark:text-purple-400 font-semibold`,children:a[2]},a.index)):a[3]?n.push((0,t.jsx)(`span`,{className:`text-amber-600 dark:text-amber-400`,children:a[3]},a.index)):n.push(r),i=a.index+r.length}return i<e.length&&n.push(e.slice(i)),n}function h(e,t){if(!s(e))return[e];let n=t||c(e);try{let t=performance.now(),r;switch(n){case`json`:r=l(e);break;case`html`:r=u(e);break;case`css`:r=f(e);break;case`javascript`:r=m(e);break;default:return[e]}let i=performance.now()-t;return i>100&&console.warn(`Syntax highlighting took ${i.toFixed(2)}ms for ${e.length} chars`),r}catch(t){return console.error(`Syntax highlighting error:`,t),[e]}}function g(e){try{return JSON.parse(e),!0}catch{return!1}}function _(e){let t=e.trim();if(!t)return{valid:!0};try{if(!t.includes(`<`))return{valid:!1,error:`内容不像是有效的HTML`};let e=new Set([`area`,`base`,`br`,`col`,`embed`,`hr`,`img`,`input`,`link`,`meta`,`param`,`source`,`track`,`wbr`]),n=[],r=/<!--[\s\S]*?-->|<!DOCTYPE[^>]*>|<\/?([a-z][\w-]*)\b[^>]*?>/gi,i;for(;(i=r.exec(t))!==null;){let t=i[0],r=i[1]?.toLowerCase();if(!(!r||t.startsWith(`<!--`)||/^<!doctype/i.test(t))){if(t.startsWith(`</`)){if(n.length===0)return{valid:!1,error:`HTML语法错误:未找到标签 <${r}> 的开始标签`};let e=n.pop();if(e!==r)return{valid:!1,error:`HTML语法错误:标签不匹配,期望 </${e}>,实际 </${r}>`};continue}t.endsWith(`/>`)||e.has(r)||n.push(r)}}return n.length>0?{valid:!1,error:`HTML语法错误:标签 <${n[n.length-1]}> 未闭合`}:{valid:!0}}catch(e){return{valid:!1,error:`HTML解析错误:${e instanceof Error?e.message:`未知错误`}`}}}function v(e){let t=e.trim();if(!t)return{valid:!0};try{let e=0,n=!1,r=``;for(let i=0;i<t.length;i++){let a=t[i],o=i>0?t[i-1]:``;if((a===`"`||a===`'`)&&o!==`\\`&&(n?a===r&&(n=!1):(n=!0,r=a)),!n){if(a===`{`)e++;else if(a===`}`&&(e--,e<0))return{valid:!1,error:`CSS语法错误:多余的闭合大括号 }`}}}return e===0?n?{valid:!1,error:`CSS语法错误:未闭合的字符串`}:{valid:!0}:{valid:!1,error:e>0?`CSS语法错误:缺少闭合大括号 }`:`CSS语法错误:多余的闭合大括号 }`}}catch(e){return{valid:!1,error:`CSS解析错误:${e instanceof Error?e.message:`未知错误`}`}}}function y(e){let t=e.trim();if(!t)return{valid:!0};try{let e=[],n=!1,r=``,i=!1,a=!1,o=!1;for(let s=0;s<t.length;s++){let c=t[s],l=s>0?t[s-1]:``,u=s+1<t.length?t[s+1]:``;if(!n&&!i&&!a&&c===`/`&&u===`*`){o=!0,s++;continue}if(o){c===`*`&&u===`/`&&(o=!1,s++);continue}if(!n&&!i&&!o&&c===`/`&&u===`/`){a=!0;continue}if(a){c===`
@@ -1 +1 @@
1
- import{l as e}from"./button-BTToMaBW.js";var t=e(`table-2`,[[`path`,{d:`M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18`,key:`gugj83`}]]);export{t};
1
+ import{l as e}from"./button-yArHqw81.js";var t=e(`table-2`,[[`path`,{d:`M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18`,key:`gugj83`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{c as e,f as t,s as n,u as r}from"./button-yArHqw81.js";t(r(),1);var i=n();function a({className:t,...n}){return(0,i.jsx)(`div`,{"data-slot":`table-container`,className:`meddle-thin-scroll relative w-full overflow-x-auto`,children:(0,i.jsx)(`table`,{"data-slot":`table`,className:e(`w-full caption-bottom text-sm`,t),...n})})}function o({className:t,...n}){return(0,i.jsx)(`thead`,{"data-slot":`table-header`,className:e(`[&_tr]:border-b`,t),...n})}function s({className:t,...n}){return(0,i.jsx)(`tbody`,{"data-slot":`table-body`,className:e(`[&_tr:last-child]:border-0`,t),...n})}function c({className:t,...n}){return(0,i.jsx)(`tr`,{"data-slot":`table-row`,className:e(`hover:bg-accent/60 hover:text-accent-foreground data-[state=selected]:bg-accent data-[state=selected]:text-accent-foreground border-b transition-colors`,t),...n})}function l({className:t,...n}){return(0,i.jsx)(`th`,{"data-slot":`table-head`,className:e(`text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,t),...n})}function u({className:t,...n}){return(0,i.jsx)(`td`,{"data-slot":`table-cell`,className:e(`p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,t),...n})}export{o as a,l as i,s as n,c as o,u as r,a as t};
@@ -0,0 +1 @@
1
+ import{c as e,f as t,o as n,s as r,u as i}from"./button-yArHqw81.js";import{a,o,r as s,t as c}from"./dist-CwP5Ad1_.js";import{t as l}from"./dist-CymFeFOA.js";import{t as u}from"./dist-DGuRBXW6.js";import{n as d}from"./dist-CjLkNKST.js";import{n as f,r as p,t as m}from"./dist-D2vbXHYx.js";var h=t(i(),1),g=r(),_=`Tabs`,[v,y]=a(_,[p]),b=p(),[x,S]=v(_),C=h.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,onValueChange:i,defaultValue:a,orientation:s=`horizontal`,dir:u,activationMode:f=`automatic`,...p}=e,m=l(u),[h,v]=c({prop:r,onChange:i,defaultProp:a??``,caller:_});return(0,g.jsx)(x,{scope:n,baseId:d(),value:h,onValueChange:v,orientation:s,dir:m,activationMode:f,children:(0,g.jsx)(o.div,{dir:m,"data-orientation":s,...p,ref:t})})});C.displayName=_;var w=`TabsList`,T=h.forwardRef((e,t)=>{let{__scopeTabs:n,loop:r=!0,...i}=e,a=S(w,n),s=b(n);return(0,g.jsx)(f,{asChild:!0,...s,orientation:a.orientation,dir:a.dir,loop:r,children:(0,g.jsx)(o.div,{role:`tablist`,"aria-orientation":a.orientation,...i,ref:t})})});T.displayName=w;var E=`TabsTrigger`,D=h.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,disabled:i=!1,...a}=e,c=S(E,n),l=b(n),u=A(c.baseId,r),d=j(c.baseId,r),f=r===c.value;return(0,g.jsx)(m,{asChild:!0,...l,focusable:!i,active:f,children:(0,g.jsx)(o.button,{type:`button`,role:`tab`,"aria-selected":f,"aria-controls":d,"data-state":f?`active`:`inactive`,"data-disabled":i?``:void 0,disabled:i,id:u,...a,ref:t,onMouseDown:s(e.onMouseDown,e=>{!i&&e.button===0&&e.ctrlKey===!1?c.onValueChange(r):e.preventDefault()}),onKeyDown:s(e.onKeyDown,e=>{[` `,`Enter`].includes(e.key)&&c.onValueChange(r)}),onFocus:s(e.onFocus,()=>{let e=c.activationMode!==`manual`;!f&&!i&&e&&c.onValueChange(r)})})})});D.displayName=E;var O=`TabsContent`,k=h.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,forceMount:i,children:a,...s}=e,c=S(O,n),l=A(c.baseId,r),d=j(c.baseId,r),f=r===c.value,p=h.useRef(f);return h.useEffect(()=>{let e=requestAnimationFrame(()=>p.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,g.jsx)(u,{present:i||f,children:({present:n})=>(0,g.jsx)(o.div,{"data-state":f?`active`:`inactive`,"data-orientation":c.orientation,role:`tabpanel`,"aria-labelledby":l,hidden:!n,id:d,tabIndex:0,...s,ref:t,style:{...e.style,animationDuration:p.current?`0s`:void 0},children:n&&a})})});k.displayName=O;function A(e,t){return`${e}-trigger-${t}`}function j(e,t){return`${e}-content-${t}`}var M=C,N=T,P=D,F=k;function I({className:t,orientation:n=`horizontal`,...r}){return(0,g.jsx)(M,{"data-slot":`tabs`,"data-orientation":n,orientation:n,className:e(`group/tabs flex gap-2 data-[orientation=horizontal]:flex-col`,t),...r})}var L=n(`rounded-lg p-[3px] group-data-[orientation=horizontal]/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col`,{variants:{variant:{default:`bg-muted`,line:`gap-1 bg-transparent`}},defaultVariants:{variant:`default`}});function R({className:t,variant:n=`default`,...r}){return(0,g.jsx)(N,{"data-slot":`tabs-list`,"data-variant":n,className:e(L({variant:n}),t),...r})}function z({className:t,...n}){return(0,g.jsx)(P,{"data-slot":`tabs-trigger`,className:e(`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,`group-data-[variant=default]/tabs-list:data-[state=active]:border-primary/20 group-data-[variant=default]/tabs-list:data-[state=active]:bg-accent group-data-[variant=default]/tabs-list:data-[state=active]:text-accent-foreground`,`group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:text-primary dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent`,`after:bg-primary after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100`,t),...n})}function B({className:t,...n}){return(0,g.jsx)(F,{"data-slot":`tabs-content`,className:e(`flex-1 outline-none`,t),...n})}export{z as i,B as n,R as r,I as t};
@@ -0,0 +1 @@
1
+ import{c as e,f as t,s as n,u as r}from"./button-yArHqw81.js";t(r(),1);var i=n();function a({className:t,...n}){return(0,i.jsx)(`textarea`,{"data-slot":`textarea`,className:e(`placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input w-full min-w-0 rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm`,`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,`aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,`min-h-[80px]`,t),...n})}export{a as t};
@@ -1 +1 @@
1
- import{l as e}from"./button-BTToMaBW.js";var t=e(`wand-sparkles`,[[`path`,{d:`m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72`,key:`ul74o6`}],[`path`,{d:`m14 7 3 3`,key:`1r5n42`}],[`path`,{d:`M5 6v4`,key:`ilb8ba`}],[`path`,{d:`M19 14v4`,key:`blhpug`}],[`path`,{d:`M10 2v2`,key:`7u0qdc`}],[`path`,{d:`M7 8H3`,key:`zfb6yr`}],[`path`,{d:`M21 16h-4`,key:`1cnmox`}],[`path`,{d:`M11 3H9`,key:`1obp7u`}]]);export{t};
1
+ import{l as e}from"./button-yArHqw81.js";var t=e(`wand-sparkles`,[[`path`,{d:`m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72`,key:`ul74o6`}],[`path`,{d:`m14 7 3 3`,key:`1r5n42`}],[`path`,{d:`M5 6v4`,key:`ilb8ba`}],[`path`,{d:`M19 14v4`,key:`blhpug`}],[`path`,{d:`M10 2v2`,key:`7u0qdc`}],[`path`,{d:`M7 8H3`,key:`zfb6yr`}],[`path`,{d:`M21 16h-4`,key:`1cnmox`}],[`path`,{d:`M11 3H9`,key:`1obp7u`}]]);export{t};
@@ -1 +1 @@
1
- import{l as e}from"./button-BTToMaBW.js";var t=e(`wifi`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M2 8.82a15 15 0 0 1 20 0`,key:`dnpr2z`}],[`path`,{d:`M5 12.859a10 10 0 0 1 14 0`,key:`1x1e6c`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}]]);export{t};
1
+ import{l as e}from"./button-yArHqw81.js";var t=e(`wifi`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M2 8.82a15 15 0 0 1 20 0`,key:`dnpr2z`}],[`path`,{d:`M5 12.859a10 10 0 0 1 14 0`,key:`1x1e6c`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}]]);export{t};
@@ -1 +1 @@
1
- import{l as e}from"./button-BTToMaBW.js";var t=e(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]);export{t};
1
+ import{l as e}from"./button-yArHqw81.js";var t=e(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]);export{t};
@@ -5,18 +5,20 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>web</title>
8
- <script type="module" crossorigin src="/assets/index-Cw0WJSVU.js"></script>
9
- <link rel="modulepreload" crossorigin href="/assets/button-BTToMaBW.js">
10
- <link rel="modulepreload" crossorigin href="/assets/dist-Bsv9ad5F.js">
11
- <link rel="modulepreload" crossorigin href="/assets/dist-C6eaYCUo.js">
12
- <link rel="modulepreload" crossorigin href="/assets/dist-Blyulj4_.js">
13
- <link rel="modulepreload" crossorigin href="/assets/dist-CEd_wnRC.js">
14
- <link rel="modulepreload" crossorigin href="/assets/es2015-DG46NGN7.js">
15
- <link rel="modulepreload" crossorigin href="/assets/dist-DWmDaXVN.js">
16
- <link rel="modulepreload" crossorigin href="/assets/dist-C8RHq5At.js">
17
- <link rel="modulepreload" crossorigin href="/assets/dist-DoE7uybN.js">
18
- <link rel="modulepreload" crossorigin href="/assets/ai-config-store-C8D_PUGV.js">
19
- <link rel="stylesheet" crossorigin href="/assets/index-DlO3YLfJ.css">
8
+ <script type="module" crossorigin src="/assets/index-BSDW5a57.js"></script>
9
+ <link rel="modulepreload" crossorigin href="/assets/button-yArHqw81.js">
10
+ <link rel="modulepreload" crossorigin href="/assets/dist-DQDFV3o1.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/dist-CwP5Ad1_.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/dist-CymFeFOA.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/dist-CjLkNKST.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/es2015-BiaNLfVn.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/dist-DGuRBXW6.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/dist-BW-gQyc_.js">
17
+ <link rel="modulepreload" crossorigin href="/assets/dist-D2vbXHYx.js">
18
+ <link rel="modulepreload" crossorigin href="/assets/check-ByTjANaY.js">
19
+ <link rel="modulepreload" crossorigin href="/assets/chevron-down-vKjBY-BY.js">
20
+ <link rel="modulepreload" crossorigin href="/assets/ai-config-store-DQXVJVn_.js">
21
+ <link rel="stylesheet" crossorigin href="/assets/index-BI-mGxIe.css">
20
22
  </head>
21
23
  <body>
22
24
  <div id="root"></div>
@@ -1 +0,0 @@
1
- import{a as e,c as t,f as n,n as r,u as i}from"./button-BTToMaBW.js";n(i(),1);var a=e(),o=t(`relative w-full rounded-lg border px-4 py-3 text-sm grid gap-1`,{variants:{variant:{default:`bg-background text-foreground`,destructive:`border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive`}},defaultVariants:{variant:`default`}});function s({className:e,variant:t,...n}){return(0,a.jsx)(`div`,{role:`alert`,className:r(o({variant:t}),e),...n})}function c({className:e,...t}){return(0,a.jsx)(`h5`,{className:r(`mb-1 font-medium leading-none tracking-tight`,e),...t})}function l({className:e,...t}){return(0,a.jsx)(`div`,{className:r(`text-sm [&_p]:leading-relaxed`,e),...t})}export{l as n,c as r,s as t};
@@ -1 +0,0 @@
1
- import{l as e}from"./button-BTToMaBW.js";var t=e(`arrow-right`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]);export{t};
@@ -1 +0,0 @@
1
- var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),l=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function ee(e,t){return E(e.type,t,e.props)}function D(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function O(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var k=/\/+/g;function A(e,t){return typeof e==`object`&&e&&e.key!=null?O(``+e.key):t.toString(36)}function j(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function M(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,M(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+A(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(k,`$&/`)+`/`),M(o,r,i,``,function(e){return e})):o!=null&&(D(o)&&(o=ee(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(k,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u<e.length;u++)a=e[u],s=l+A(a,u),c+=M(a,r,i,s,o);else if(u=m(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+A(a,u++),c+=M(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return M(j(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function N(e,t,n){if(e==null)return e;var r=[],i=0;return M(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function te(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t)},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var P=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},ne={map:N,forEach:function(e,t,n){N(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return N(e,function(){t++}),t},toArray:function(e){return N(e,function(e){return e})||[]},only:function(e){if(!D(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=f,e.Children=ne,e.Component=v,e.Fragment=r,e.Profiler=a,e.PureComponent=b,e.StrictMode=i,e.Suspense=l,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=w,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return w.H.useMemoCache(e)}},e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=g({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!T.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return E(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)T.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return E(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=D,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:te}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=function(e){var t=w.T,n={};w.T=n;try{var r=e(),i=w.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(C,P)}catch(e){P(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),w.T=t}},e.unstable_useCacheRefresh=function(){return w.H.useCacheRefresh()},e.use=function(e){return w.H.use(e)},e.useActionState=function(e,t,n){return w.H.useActionState(e,t,n)},e.useCallback=function(e,t){return w.H.useCallback(e,t)},e.useContext=function(e){return w.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return w.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return w.H.useEffect(e,t)},e.useEffectEvent=function(e){return w.H.useEffectEvent(e)},e.useId=function(){return w.H.useId()},e.useImperativeHandle=function(e,t,n){return w.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return w.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return w.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return w.H.useMemo(e,t)},e.useOptimistic=function(e,t){return w.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return w.H.useReducer(e,t,n)},e.useRef=function(e){return w.H.useRef(e)},e.useState=function(e){return w.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return w.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return w.H.useTransition()},e.version=`19.2.4`})),u=o(((e,t)=>{t.exports=l()})),d=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),f=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),p=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),m=e=>{let t=p(e);return t.charAt(0).toUpperCase()+t.slice(1)},h={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},g=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},_=c(u()),v=(0,_.forwardRef)(({color:e=`currentColor`,size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>(0,_.createElement)(`svg`,{ref:c,...h,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:d(`lucide`,i),...!a&&!g(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>(0,_.createElement)(e,t)),...Array.isArray(a)?a:[a]])),y=(e,t)=>{let n=(0,_.forwardRef)(({className:n,...r},i)=>(0,_.createElement)(v,{ref:i,iconNode:t,className:d(`lucide-${f(m(e))}`,`lucide-${e}`,n),...r}));return n.displayName=m(e),n};function b(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=b(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function x(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=b(e))&&(r&&(r+=` `),r+=t);return r}var S=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,C=x,w=(e,t)=>n=>{if(t?.variants==null)return C(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=S(t)||S(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return C(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)};function T(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}function E(...e){return t=>{let n=!1,r=e.map(e=>{let r=T(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;t<r.length;t++){let n=r[t];typeof n==`function`?n():T(e[t],null)}}}}function ee(...e){return _.useCallback(E(...e),e)}var D=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),O=o(((e,t)=>{t.exports=D()})),k=O();function A(e){let t=M(e),n=_.forwardRef((e,n)=>{let{children:r,...i}=e,a=_.Children.toArray(r),o=a.find(te);if(o){let e=o.props.children,r=a.map(t=>t===o?_.Children.count(e)>1?_.Children.only(null):_.isValidElement(e)?e.props.children:null:t);return(0,k.jsx)(t,{...i,ref:n,children:_.isValidElement(e)?_.cloneElement(e,void 0,r):null})}return(0,k.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}var j=A(`Slot`);function M(e){let t=_.forwardRef((e,t)=>{let{children:n,...r}=e;if(_.isValidElement(n)){let e=ne(n),i=P(r,n.props);return n.type!==_.Fragment&&(i.ref=t?E(t,e):e),_.cloneElement(n,i)}return _.Children.count(n)>1?_.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var N=Symbol(`radix.slottable`);function te(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===N}function P(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function ne(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var F=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t<e.length;t++)n[t]=e[t];for(let r=0;r<t.length;r++)n[e.length+r]=t[r];return n},I=(e,t)=>({classGroupId:e,validator:t}),L=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),R=`-`,re=[],z=`arbitrary..`,ie=e=>{let t=ae(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return V(e);let n=e.split(R);return B(n,n[0]===``&&n.length>1?1:0,t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?F(i,t):t:i||re}return n[e]||re}}},B=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=B(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(R):e.slice(t).join(R),s=a.length;for(let e=0;e<s;e++){let t=a[e];if(t.validator(o))return t.classGroupId}},V=e=>e.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?z+r:void 0})(),ae=e=>{let{theme:t,classGroups:n}=e;return H(n,t)},H=(e,t)=>{let n=L();for(let r in e){let i=e[r];oe(i,n,r,t)}return n},oe=(e,t,n,r)=>{let i=e.length;for(let a=0;a<i;a++){let i=e[a];se(i,t,n,r)}},se=(e,t,n,r)=>{if(typeof e==`string`){ce(e,t,n);return}if(typeof e==`function`){le(e,t,n,r);return}ue(e,t,n,r)},ce=(e,t,n)=>{let r=e===``?t:de(t,e);r.classGroupId=n},le=(e,t,n,r)=>{if(fe(e)){oe(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(I(n,e))},ue=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e<a;e++){let[a,o]=i[e];oe(o,de(t,a),n,r)}},de=(e,t)=>{let n=e,r=t.split(R),i=r.length;for(let e=0;e<i;e++){let t=r[e],i=n.nextPart.get(t);i||(i=L(),n.nextPart.set(t,i)),n=i}return n},fe=e=>`isThemeGetter`in e&&e.isThemeGetter===!0,pe=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},me=`!`,he=`:`,ge=[],_e=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),ve=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;s<o;s++){let o=e[s];if(n===0&&r===0){if(o===he){t.push(e.slice(i,s)),i=s+1;continue}if(o===`/`){a=s;continue}}o===`[`?n++:o===`]`?n--:o===`(`?r++:o===`)`&&r--}let s=t.length===0?e:e.slice(i),c=s,l=!1;s.endsWith(me)?(c=s.slice(0,-1),l=!0):s.startsWith(me)&&(c=s.slice(1),l=!0);let u=a&&a>i?a-i:void 0;return _e(t,l,c,u)};if(t){let e=t+he,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):_e(ge,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},ye=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i<e.length;i++){let a=e[i],o=a[0]===`[`,s=t.has(a);o||s?(r.length>0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},be=e=>({cache:pe(e.cacheSize),parseClassName:ve(e),sortModifiers:ye(e),...ie(e)}),xe=/\s+/,Se=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a}=t,o=[],s=e.trim().split(xe),c=``;for(let e=s.length-1;e>=0;--e){let t=s[e],{isExternal:l,modifiers:u,hasImportantModifier:d,baseClassName:f,maybePostfixModifierPosition:p}=n(t);if(l){c=t+(c.length>0?` `+c:c);continue}let m=!!p,h=r(m?f.substring(0,p):f);if(!h){if(!m){c=t+(c.length>0?` `+c:c);continue}if(h=r(f),!h){c=t+(c.length>0?` `+c:c);continue}m=!1}let g=u.length===0?``:u.length===1?u[0]:a(u).join(`:`),_=d?g+me:g,v=_+h;if(o.indexOf(v)>-1)continue;o.push(v);let y=i(h,m);for(let e=0;e<y.length;++e){let t=y[e];o.push(_+t)}c=t+(c.length>0?` `+c:c)}return c},Ce=(...e)=>{let t=0,n,r,i=``;for(;t<e.length;)(n=e[t++])&&(r=we(n))&&(i&&(i+=` `),i+=r);return i},we=e=>{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r<e.length;r++)e[r]&&(t=we(e[r]))&&(n&&(n+=` `),n+=t);return n},Te=(e,...t)=>{let n,r,i,a,o=o=>(n=be(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=Se(e,n);return i(e,a),a};return a=o,(...e)=>a(Ce(...e))},Ee=[],U=e=>{let t=t=>t[e]||Ee;return t.isThemeGetter=!0,t},De=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Oe=/^\((?:(\w[\w-]*):)?(.+)\)$/i,ke=/^\d+\/\d+$/,Ae=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,je=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Me=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Ne=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Pe=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,W=e=>ke.test(e),G=e=>!!e&&!Number.isNaN(Number(e)),K=e=>!!e&&Number.isInteger(Number(e)),Fe=e=>e.endsWith(`%`)&&G(e.slice(0,-1)),q=e=>Ae.test(e),Ie=()=>!0,Le=e=>je.test(e)&&!Me.test(e),Re=()=>!1,ze=e=>Ne.test(e),Be=e=>Pe.test(e),Ve=e=>!J(e)&&!X(e),He=e=>Q(e,et,Re),J=e=>De.test(e),Y=e=>Q(e,tt,Le),Ue=e=>Q(e,nt,G),We=e=>Q(e,Qe,Re),Ge=e=>Q(e,$e,Be),Ke=e=>Q(e,it,ze),X=e=>Oe.test(e),Z=e=>$(e,tt),qe=e=>$(e,rt),Je=e=>$(e,Qe),Ye=e=>$(e,et),Xe=e=>$(e,$e),Ze=e=>$(e,it,!0),Q=(e,t,n)=>{let r=De.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},$=(e,t,n=!1)=>{let r=Oe.exec(e);return r?r[1]?t(r[1]):n:!1},Qe=e=>e===`position`||e===`percentage`,$e=e=>e===`image`||e===`url`,et=e=>e===`length`||e===`size`||e===`bg-size`,tt=e=>e===`length`,nt=e=>e===`number`,rt=e=>e===`family-name`,it=e=>e===`shadow`,at=Te(()=>{let e=U(`color`),t=U(`font`),n=U(`text`),r=U(`font-weight`),i=U(`tracking`),a=U(`leading`),o=U(`breakpoint`),s=U(`container`),c=U(`spacing`),l=U(`radius`),u=U(`shadow`),d=U(`inset-shadow`),f=U(`text-shadow`),p=U(`drop-shadow`),m=U(`blur`),h=U(`perspective`),g=U(`aspect`),_=U(`ease`),v=U(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],x=()=>[...b(),X,J],S=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],C=()=>[`auto`,`contain`,`none`],w=()=>[X,J,c],T=()=>[W,`full`,`auto`,...w()],E=()=>[K,`none`,`subgrid`,X,J],ee=()=>[`auto`,{span:[`full`,K,X,J]},K,X,J],D=()=>[K,`auto`,X,J],O=()=>[`auto`,`min`,`max`,`fr`,X,J],k=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],A=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],j=()=>[`auto`,...w()],M=()=>[W,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...w()],N=()=>[e,X,J],te=()=>[...b(),Je,We,{position:[X,J]}],P=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],ne=()=>[`auto`,`cover`,`contain`,Ye,He,{size:[X,J]}],F=()=>[Fe,Z,Y],I=()=>[``,`none`,`full`,l,X,J],L=()=>[``,G,Z,Y],R=()=>[`solid`,`dashed`,`dotted`,`double`],re=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],z=()=>[G,Fe,Je,We],ie=()=>[``,`none`,m,X,J],B=()=>[`none`,G,X,J],V=()=>[`none`,G,X,J],ae=()=>[G,X,J],H=()=>[W,`full`,...w()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[q],breakpoint:[q],color:[Ie],container:[q],"drop-shadow":[q],ease:[`in`,`out`,`in-out`],font:[Ve],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[q],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[q],shadow:[q],spacing:[`px`,G],text:[q],"text-shadow":[q],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,W,J,X,g]}],container:[`container`],columns:[{columns:[G,J,X,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:x()}],overflow:[{overflow:S()}],"overflow-x":[{"overflow-x":S()}],"overflow-y":[{"overflow-y":S()}],overscroll:[{overscroll:C()}],"overscroll-x":[{"overscroll-x":C()}],"overscroll-y":[{"overscroll-y":C()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:T()}],"inset-x":[{"inset-x":T()}],"inset-y":[{"inset-y":T()}],start:[{start:T()}],end:[{end:T()}],top:[{top:T()}],right:[{right:T()}],bottom:[{bottom:T()}],left:[{left:T()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[K,`auto`,X,J]}],basis:[{basis:[W,`full`,`auto`,s,...w()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[G,W,`auto`,`initial`,`none`,J]}],grow:[{grow:[``,G,X,J]}],shrink:[{shrink:[``,G,X,J]}],order:[{order:[K,`first`,`last`,`none`,X,J]}],"grid-cols":[{"grid-cols":E()}],"col-start-end":[{col:ee()}],"col-start":[{"col-start":D()}],"col-end":[{"col-end":D()}],"grid-rows":[{"grid-rows":E()}],"row-start-end":[{row:ee()}],"row-start":[{"row-start":D()}],"row-end":[{"row-end":D()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":O()}],"auto-rows":[{"auto-rows":O()}],gap:[{gap:w()}],"gap-x":[{"gap-x":w()}],"gap-y":[{"gap-y":w()}],"justify-content":[{justify:[...k(),`normal`]}],"justify-items":[{"justify-items":[...A(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...A()]}],"align-content":[{content:[`normal`,...k()]}],"align-items":[{items:[...A(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...A(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":k()}],"place-items":[{"place-items":[...A(),`baseline`]}],"place-self":[{"place-self":[`auto`,...A()]}],p:[{p:w()}],px:[{px:w()}],py:[{py:w()}],ps:[{ps:w()}],pe:[{pe:w()}],pt:[{pt:w()}],pr:[{pr:w()}],pb:[{pb:w()}],pl:[{pl:w()}],m:[{m:j()}],mx:[{mx:j()}],my:[{my:j()}],ms:[{ms:j()}],me:[{me:j()}],mt:[{mt:j()}],mr:[{mr:j()}],mb:[{mb:j()}],ml:[{ml:j()}],"space-x":[{"space-x":w()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":w()}],"space-y-reverse":[`space-y-reverse`],size:[{size:M()}],w:[{w:[s,`screen`,...M()]}],"min-w":[{"min-w":[s,`screen`,`none`,...M()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...M()]}],h:[{h:[`screen`,`lh`,...M()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...M()]}],"max-h":[{"max-h":[`screen`,`lh`,...M()]}],"font-size":[{text:[`base`,n,Z,Y]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,X,Ue]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,Fe,J]}],"font-family":[{font:[qe,J,t]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,X,J]}],"line-clamp":[{"line-clamp":[G,`none`,X,Ue]}],leading:[{leading:[a,...w()]}],"list-image":[{"list-image":[`none`,X,J]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,X,J]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:N()}],"text-color":[{text:N()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...R(),`wavy`]}],"text-decoration-thickness":[{decoration:[G,`from-font`,`auto`,X,Y]}],"text-decoration-color":[{decoration:N()}],"underline-offset":[{"underline-offset":[G,`auto`,X,J]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:w()}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,X,J]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,X,J]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:te()}],"bg-repeat":[{bg:P()}],"bg-size":[{bg:ne()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},K,X,J],radial:[``,X,J],conic:[K,X,J]},Xe,Ge]}],"bg-color":[{bg:N()}],"gradient-from-pos":[{from:F()}],"gradient-via-pos":[{via:F()}],"gradient-to-pos":[{to:F()}],"gradient-from":[{from:N()}],"gradient-via":[{via:N()}],"gradient-to":[{to:N()}],rounded:[{rounded:I()}],"rounded-s":[{"rounded-s":I()}],"rounded-e":[{"rounded-e":I()}],"rounded-t":[{"rounded-t":I()}],"rounded-r":[{"rounded-r":I()}],"rounded-b":[{"rounded-b":I()}],"rounded-l":[{"rounded-l":I()}],"rounded-ss":[{"rounded-ss":I()}],"rounded-se":[{"rounded-se":I()}],"rounded-ee":[{"rounded-ee":I()}],"rounded-es":[{"rounded-es":I()}],"rounded-tl":[{"rounded-tl":I()}],"rounded-tr":[{"rounded-tr":I()}],"rounded-br":[{"rounded-br":I()}],"rounded-bl":[{"rounded-bl":I()}],"border-w":[{border:L()}],"border-w-x":[{"border-x":L()}],"border-w-y":[{"border-y":L()}],"border-w-s":[{"border-s":L()}],"border-w-e":[{"border-e":L()}],"border-w-t":[{"border-t":L()}],"border-w-r":[{"border-r":L()}],"border-w-b":[{"border-b":L()}],"border-w-l":[{"border-l":L()}],"divide-x":[{"divide-x":L()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":L()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...R(),`hidden`,`none`]}],"divide-style":[{divide:[...R(),`hidden`,`none`]}],"border-color":[{border:N()}],"border-color-x":[{"border-x":N()}],"border-color-y":[{"border-y":N()}],"border-color-s":[{"border-s":N()}],"border-color-e":[{"border-e":N()}],"border-color-t":[{"border-t":N()}],"border-color-r":[{"border-r":N()}],"border-color-b":[{"border-b":N()}],"border-color-l":[{"border-l":N()}],"divide-color":[{divide:N()}],"outline-style":[{outline:[...R(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[G,X,J]}],"outline-w":[{outline:[``,G,Z,Y]}],"outline-color":[{outline:N()}],shadow:[{shadow:[``,`none`,u,Ze,Ke]}],"shadow-color":[{shadow:N()}],"inset-shadow":[{"inset-shadow":[`none`,d,Ze,Ke]}],"inset-shadow-color":[{"inset-shadow":N()}],"ring-w":[{ring:L()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:N()}],"ring-offset-w":[{"ring-offset":[G,Y]}],"ring-offset-color":[{"ring-offset":N()}],"inset-ring-w":[{"inset-ring":L()}],"inset-ring-color":[{"inset-ring":N()}],"text-shadow":[{"text-shadow":[`none`,f,Ze,Ke]}],"text-shadow-color":[{"text-shadow":N()}],opacity:[{opacity:[G,X,J]}],"mix-blend":[{"mix-blend":[...re(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":re()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[G]}],"mask-image-linear-from-pos":[{"mask-linear-from":z()}],"mask-image-linear-to-pos":[{"mask-linear-to":z()}],"mask-image-linear-from-color":[{"mask-linear-from":N()}],"mask-image-linear-to-color":[{"mask-linear-to":N()}],"mask-image-t-from-pos":[{"mask-t-from":z()}],"mask-image-t-to-pos":[{"mask-t-to":z()}],"mask-image-t-from-color":[{"mask-t-from":N()}],"mask-image-t-to-color":[{"mask-t-to":N()}],"mask-image-r-from-pos":[{"mask-r-from":z()}],"mask-image-r-to-pos":[{"mask-r-to":z()}],"mask-image-r-from-color":[{"mask-r-from":N()}],"mask-image-r-to-color":[{"mask-r-to":N()}],"mask-image-b-from-pos":[{"mask-b-from":z()}],"mask-image-b-to-pos":[{"mask-b-to":z()}],"mask-image-b-from-color":[{"mask-b-from":N()}],"mask-image-b-to-color":[{"mask-b-to":N()}],"mask-image-l-from-pos":[{"mask-l-from":z()}],"mask-image-l-to-pos":[{"mask-l-to":z()}],"mask-image-l-from-color":[{"mask-l-from":N()}],"mask-image-l-to-color":[{"mask-l-to":N()}],"mask-image-x-from-pos":[{"mask-x-from":z()}],"mask-image-x-to-pos":[{"mask-x-to":z()}],"mask-image-x-from-color":[{"mask-x-from":N()}],"mask-image-x-to-color":[{"mask-x-to":N()}],"mask-image-y-from-pos":[{"mask-y-from":z()}],"mask-image-y-to-pos":[{"mask-y-to":z()}],"mask-image-y-from-color":[{"mask-y-from":N()}],"mask-image-y-to-color":[{"mask-y-to":N()}],"mask-image-radial":[{"mask-radial":[X,J]}],"mask-image-radial-from-pos":[{"mask-radial-from":z()}],"mask-image-radial-to-pos":[{"mask-radial-to":z()}],"mask-image-radial-from-color":[{"mask-radial-from":N()}],"mask-image-radial-to-color":[{"mask-radial-to":N()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[G]}],"mask-image-conic-from-pos":[{"mask-conic-from":z()}],"mask-image-conic-to-pos":[{"mask-conic-to":z()}],"mask-image-conic-from-color":[{"mask-conic-from":N()}],"mask-image-conic-to-color":[{"mask-conic-to":N()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:te()}],"mask-repeat":[{mask:P()}],"mask-size":[{mask:ne()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,X,J]}],filter:[{filter:[``,`none`,X,J]}],blur:[{blur:ie()}],brightness:[{brightness:[G,X,J]}],contrast:[{contrast:[G,X,J]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,Ze,Ke]}],"drop-shadow-color":[{"drop-shadow":N()}],grayscale:[{grayscale:[``,G,X,J]}],"hue-rotate":[{"hue-rotate":[G,X,J]}],invert:[{invert:[``,G,X,J]}],saturate:[{saturate:[G,X,J]}],sepia:[{sepia:[``,G,X,J]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,X,J]}],"backdrop-blur":[{"backdrop-blur":ie()}],"backdrop-brightness":[{"backdrop-brightness":[G,X,J]}],"backdrop-contrast":[{"backdrop-contrast":[G,X,J]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,G,X,J]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[G,X,J]}],"backdrop-invert":[{"backdrop-invert":[``,G,X,J]}],"backdrop-opacity":[{"backdrop-opacity":[G,X,J]}],"backdrop-saturate":[{"backdrop-saturate":[G,X,J]}],"backdrop-sepia":[{"backdrop-sepia":[``,G,X,J]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":w()}],"border-spacing-x":[{"border-spacing-x":w()}],"border-spacing-y":[{"border-spacing-y":w()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,X,J]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[G,`initial`,X,J]}],ease:[{ease:[`linear`,`initial`,_,X,J]}],delay:[{delay:[G,X,J]}],animate:[{animate:[`none`,v,X,J]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,X,J]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:B()}],"rotate-x":[{"rotate-x":B()}],"rotate-y":[{"rotate-y":B()}],"rotate-z":[{"rotate-z":B()}],scale:[{scale:V()}],"scale-x":[{"scale-x":V()}],"scale-y":[{"scale-y":V()}],"scale-z":[{"scale-z":V()}],"scale-3d":[`scale-3d`],skew:[{skew:ae()}],"skew-x":[{"skew-x":ae()}],"skew-y":[{"skew-y":ae()}],transform:[{transform:[X,J,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:H()}],"translate-x":[{"translate-x":H()}],"translate-y":[{"translate-y":H()}],"translate-z":[{"translate-z":H()}],"translate-none":[`translate-none`],accent:[{accent:N()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:N()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,X,J]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-me":[{"scroll-me":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mr":[{"scroll-mr":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,X,J]}],fill:[{fill:[`none`,...N()]}],"stroke-w":[{stroke:[G,Z,Y,Ue]}],stroke:[{stroke:[`none`,...N()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function ot(...e){return at(x(e))}var st=w(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,{variants:{variant:{default:`bg-foreground text-background hover:bg-primary hover:text-primary-foreground`,selected:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60`,outline:`border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input`,secondary:`bg-secondary text-secondary-foreground hover:bg-accent hover:text-accent-foreground`,ghost:`hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50`,link:`text-foreground underline-offset-4 hover:text-primary hover:underline`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,xs:`h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3`,sm:`h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5`,lg:`h-10 rounded-md px-6 has-[>svg]:px-4`,icon:`size-9`,"icon-xs":`size-6 rounded-md [&_svg:not([class*='size-'])]:size-3`,"icon-sm":`size-8`,"icon-lg":`size-10`}},defaultVariants:{variant:`default`,size:`default`}});function ct({className:e,variant:t=`default`,size:n=`default`,asChild:r=!1,...i}){return(0,k.jsx)(r?j:`button`,{"data-slot":`button`,"data-variant":t,"data-size":n,className:ot(st({variant:t,size:n,className:e})),...i})}export{O as a,w as c,o as d,c as f,A as i,y as l,ot as n,E as o,j as r,ee as s,ct as t,u};
@@ -1 +0,0 @@
1
- import{l as e}from"./button-BTToMaBW.js";var t=e(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]);export{t};
@@ -1 +0,0 @@
1
- import{l as e}from"./button-BTToMaBW.js";var t=e(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]);export{t};
@@ -1 +0,0 @@
1
- import{l as e}from"./button-BTToMaBW.js";var t=e(`code`,[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]);export{t};
@@ -1,20 +0,0 @@
1
- import{i as e,o as t,r as n}from"./ai-config-store-C8D_PUGV.js";import{St as r}from"./index-Cw0WJSVU.js";import{i}from"./syntax-highlight-Dk0-ewLI.js";function a(e){let t=e.trim();if(t.startsWith(`{`)&&t.endsWith(`}`)||t.startsWith(`[`)&&t.endsWith(`]`))try{return JSON.parse(t),`json`}catch{}return t.startsWith(`<!DOCTYPE`)||t.startsWith(`<html`)||/<[a-z][\s\S]*>/i.test(t)?`html`:/[a-z-]+\s*\{[\s\S]*\}/i.test(t)||/@(media|keyframes|import|font-face)/i.test(t)?`css`:/(function|const|let|var|class|import|export|=>)/i.test(t)?`javascript`:`unknown`}function o(e){let t=0,n=e.replace(/><>/g,`>
2
- <`).split(`
3
- `),r=[];for(let e of n){let n=e.trim();n&&(n.startsWith(`</`)&&(t=Math.max(0,t-1)),r.push(` `.repeat(t)+n),n.startsWith(`<`)&&!n.startsWith(`</`)&&!n.startsWith(`<?`)&&!n.endsWith(`/>`)&&(/<(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)\b/i.test(n)||t++))}return r.join(`
4
- `)}function s(e){return e.replace(/\s*{\s*/g,` {
5
- `).replace(/\s*}\s*/g,`
6
- }
7
-
8
- `).replace(/\s*;\s*/g,`;
9
- `).trim()}function c(e){let t=0,n=[],r=0;for(;r<e.length;){let i=e[r],a=e[r+1];if(i===`/`&&a===`/`){let i=e.indexOf(`
10
- `,r);if(i===-1)break;n.push(` `.repeat(t)+e.slice(r,i).trim()),r=i+1;continue}if(i===`/`&&a===`*`){let i=e.indexOf(`*/`,r);if(i===-1)break;let a=e.slice(r,i+2);n.push(` `.repeat(t)+a),r=i+2;continue}if(i===`"`||i===`'`||i==="`"){let a=i,o=a;for(r++;r<e.length;)if(e[r]===`\\`&&r+1<e.length)o+=e[r]+e[r+1],r+=2;else if(e[r]===a){o+=a,r++;break}else o+=e[r],r++;n.push(` `.repeat(t)+o);continue}if(i===`{`){n.push(` `.repeat(t)+`{`),t++,r++;continue}if(i===`}`){t=Math.max(0,t-1),n.push(` `.repeat(t)+`}`),r++;continue}let o=``;for(;r<e.length&&e[r]!==`
11
- `&&!`{}`.includes(e[r]);)o+=e[r],r++;o.trim()&&n.push(` `.repeat(t)+o.trim()),e[r]===`
12
- `&&r++}return n.join(`
13
- `)}async function l(e,t){try{let n=r(()=>import(`./standalone-Bj8SSd8Q.js`),[]),i=t===`css`?[r(()=>import(`./postcss-BUm8EKMw.js`),[])]:t===`html`?[r(()=>import(`./html-VDGahtyk.js`),[]),r(()=>import(`./babel-DCr4VA1c.js`),[]),r(()=>import(`./estree-qO_m2Qaw.js`),[]),r(()=>import(`./postcss-BUm8EKMw.js`),[])]:[r(()=>import(`./babel-DCr4VA1c.js`),[]),r(()=>import(`./estree-qO_m2Qaw.js`),[])],[a,...o]=await Promise.all([n,...i]);return(await a.format(e,{parser:t===`json`?`json-stringify`:t,plugins:o.map(e=>e.default),printWidth:80,tabWidth:2,useTabs:!1,semi:!0,singleQuote:!0,trailingComma:`es5`,bracketSpacing:!0,arrowParens:`always`})).trim()}catch(n){if(t===`json`)try{let t=JSON.parse(e);return JSON.stringify(t,null,2)}catch{throw Error(`JSON格式错误,无法解析`)}else if(t===`html`)return o(e);else if(t===`css`)return s(e);else if(t===`babel`)return c(e);let r=n instanceof Error?n.message:`未知错误`;throw Error(`格式化失败: ${r}`)}}async function u(e){let t=a(e);try{let n,r;switch(t){case`json`:n=await l(e,`json`),r=`JSON`;break;case`html`:n=await l(e,`html`),r=`HTML`;break;case`css`:n=await l(e,`css`),r=`CSS`;break;case`javascript`:n=await l(e,`babel`),r=`JavaScript`;break;default:n=e,r=`Unknown`}return{formatted:n,type:r}}catch(e){throw Error(`格式化失败: ${e instanceof Error?e.message:`未知错误`}`)}}function d(e,t){let n=e;switch(t){case`json`:n=f(n),n=p(n);break;case`javascript`:n=m(n),n=h(n);break;case`html`:n=g(n);break;case`css`:n=_(n);break}return n}function f(e){let t=e.replace(/'/g,`"`);return t=t.replace(/([{,]\s*)([a-zA-Z_$][a-zA-Z0-9_$]*)\s*:/g,`$1"$2":`),t}function p(e){return e.replace(/,(\s*[}\]])/g,`$1`)}function m(e){let t={"{":`}`,"[":`]`,"(":`)`},n=[],r=!1,i=``;for(let a=0;a<e.length;a++){let o=e[a],s=a>0?e[a-1]:``;if((o===`"`||o===`'`||o==="`")&&s!==`\\`&&(r?o===i&&(r=!1):(r=!0,i=o)),!r){if(o in t)n.push(o);else if(Object.values(t).includes(o)){let e=Object.keys(t).find(e=>t[e]===o);n.length>0&&n[n.length-1]===e&&n.pop()}}}let a=e;for(;n.length>0;){let e=t[n.pop()];a+=e}return a}function h(e){let t=e,n={'"':0,"'":0,"`":0};for(let t of e)(t===`"`||t===`'`||t==="`")&&n[t]++;return n[`"`]%2!=0&&(t+=`"`),n[`'`]%2!=0&&(t+=`'`),n["`"]%2!=0&&(t+="`"),t}function g(e){let t=[],n=[`br`,`hr`,`img`,`input`,`link`,`meta`,`area`,`base`,`col`,`embed`,`param`,`source`,`track`,`wbr`],r=/<\/?([a-z][\w-]*)\b[^>]*>/gi,i;for(;(i=r.exec(e))!==null;){let e=i[0],r=i[1].toLowerCase(),a=e.endsWith(`/>`)||n.includes(r);e.startsWith(`</`)?t.length>0&&t[t.length-1]===r&&t.pop():a||t.push(r)}let a=e;for(;t.length>0;){let e=t.pop();a+=`</${e}>`}return a}function _(e){let t=0,n=!1,r=``;for(let i=0;i<e.length;i++){let a=e[i],o=i>0?e[i-1]:``;(a===`"`||a===`'`)&&o!==`\\`&&(n?a===r&&(n=!1):(n=!0,r=a)),n||(a===`{`?t++:a===`}`&&t--)}let i=e;for(;t>0;)i+=`
14
- }`,t--;return i}async function v(r,a=!1){if(!r.trim())return{fixed:r,method:`none`,success:!0};let o=i(r);if(!a&&o.valid)return{fixed:r,method:`none`,success:!0};let s=o.type?.toLowerCase();(!s||s===`text`)&&(s=y(r)),(!s||s===`text`)&&(s=`json`);let c=s,l=n();if(t(l))try{let t=e(l),n=await C(r,c,t?{provider:t.provider,apiKey:t.apiKey,baseUrl:t.baseUrl,model:t.model}:{provider:l.provider,apiKey:l.apiKey,baseUrl:l.baseUrl,model:l.model}),a=i(n);return a.valid?{fixed:n,method:`ai`,success:!0}:{fixed:n,method:`ai`,success:a.valid}}catch(e){console.warn(`AI修复失败:`,e)}let u=d(r,c);return{fixed:u,method:`rules`,success:i(u).valid}}function y(e){let t=e.trim();return t.startsWith(`{`)&&t.endsWith(`}`)||t.startsWith(`[`)&&t.endsWith(`]`)?`json`:t.startsWith(`<`)&&t.includes(`>`)?`html`:t.includes(`{`)&&t.includes(`}`)&&t.includes(`:`)?`css`:`text`}async function b(e,t,n){let r=`You are a code fixing assistant. Fix syntax errors in ${t.toUpperCase()} code. Return only the fixed code without explanations or markdown formatting.`,i=`Please fix the syntax errors in the following ${t.toUpperCase()} code. Return ONLY the fixed code without any explanations:
15
-
16
- ${e}`,a=await fetch(n.baseUrl,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${n.apiKey}`},body:JSON.stringify({model:n.model,messages:[{role:`system`,content:r},{role:`user`,content:i}],temperature:.3,max_tokens:2e3})});if(!a.ok){let e=await a.text();throw Error(`OpenAI API错误 (${a.status}): ${e}`)}let o=(await a.json()).choices?.[0]?.message?.content?.trim();if(!o)throw Error(`OpenAI返回了空结果`);return S(o)}async function x(e,t,n){let r=`You are a code fixing assistant. Fix syntax errors in ${t.toUpperCase()} code. Return only the fixed code without explanations or markdown formatting.`,i=`Please fix the syntax errors in the following ${t.toUpperCase()} code. Return ONLY the fixed code without any explanations:
17
-
18
- ${e}`,a=await fetch(n.baseUrl,{method:`POST`,headers:{"Content-Type":`application/json`,"x-api-key":n.apiKey,"anthropic-version":`2023-06-01`},body:JSON.stringify({model:n.model,max_tokens:2e3,system:r,messages:[{role:`user`,content:i}],temperature:.3})});if(!a.ok){let e=await a.text();throw Error(`Anthropic API错误 (${a.status}): ${e}`)}let o=(await a.json()).content?.[0]?.text?.trim();if(!o)throw Error(`Anthropic返回了空结果`);return S(o)}function S(e){let t=e.replace(/^```[a-z]*\n?/i,``).replace(/\n?```$/i,``).trim(),n=t.split(`
19
- `);return n.length>0&&!n[0].trim().match(/^[{<[a-z@]/i)&&(n.shift(),t=n.join(`
20
- `).trim()),t}async function C(e,t,n){return n.provider===`anthropic`?x(e,t,n):b(e,t,n)}export{u as n,v as t};
@@ -1,4 +0,0 @@
1
- import{a as e,f as t,l as n,t as r,u as i}from"./button-BTToMaBW.js";import"./dist-C6eaYCUo.js";import{t as a}from"./arrow-right-B4Mrlj2-.js";import{t as o}from"./chevron-down-CPngAx4M.js";import{t as s}from"./chevron-right-V1DGIDbL.js";import{t as c}from"./circle-x-C9USji_R.js";import{n as l,t as u}from"./server-Cpj4KNwN.js";import{t as d}from"./copy-BYjq1hdN.js";import{t as f}from"./shield-check-OqUmVLQt.js";import{t as ee}from"./wand-sparkles-CJ7fSnom.js";import"./es2015-DG46NGN7.js";import{B as p,H as m,S as h,U as g,V as _,W as v,bt as y,ct as b,g as x,h as S,m as C,st as w,tt as te,u as T,v as ne,vt as E,x as D,xt as O,y as k}from"./index-Cw0WJSVU.js";import{n as A,t as j}from"./body-diff-view-B-4XWmL6.js";import{n as M,t as re}from"./syntax-highlight-Dk0-ewLI.js";import{t as ie}from"./clipboard-VhPXNN5m.js";var ae=n(`corner-down-right`,[[`path`,{d:`m15 10 5 5-5 5`,key:`qqa56n`}],[`path`,{d:`M4 4v7a4 4 0 0 0 4 4h12`,key:`z08zvw`}]]),N=n(`flag`,[[`path`,{d:`M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528`,key:`1jaruq`}]]),P=n(`route`,[[`circle`,{cx:`6`,cy:`19`,r:`3`,key:`1kj8tv`}],[`path`,{d:`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`,key:`1d8sl`}],[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}]]),F=t(i(),1);function I(e){return Object.entries(e||{}).map(([e,t])=>`${e}: ${t}`).join(`
2
- `)}var L=e(),R=2e3;function z({text:e,label:t}){let[n,i]=(0,F.useState)(!1),a=(0,F.useRef)(null);async function o(){try{await ie(e),i(!0),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>i(!1),R),T.success(`已复制${t}`)}catch{T.error(`复制${t}失败,请手动选择复制`)}}return(0,L.jsxs)(r,{variant:`ghost`,size:`xs`,className:`text-[11px] text-muted-foreground hover:text-foreground`,"aria-label":n?`复制${t}成功`:`复制${t}`,onClick:()=>void o(),children:[n?(0,L.jsx)(E,{className:`h-3 w-3 mr-1 text-green-600`}):(0,L.jsx)(d,{className:`h-3 w-3 mr-1`}),n?`已复制`:`复制`]})}function B({body:e}){let[t,n]=(0,F.useState)(`source`),r=(0,F.useMemo)(()=>re(e||``)===`json`,[e]),i=(0,F.useMemo)(()=>{if(!r)return e;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}},[e,r]),a=(0,F.useMemo)(()=>M(t===`formatted`?i:e,r?`json`:void 0),[e,i,t,r]);return e?(0,L.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,L.jsxs)(`div`,{className:`flex items-center justify-between`,children:[r?(0,L.jsx)(_,{value:t,onValueChange:e=>n(e),className:`w-fit`,children:(0,L.jsxs)(g,{className:`h-6 px-1`,children:[(0,L.jsx)(v,{value:`source`,className:`h-6 px-2 text-[11px]`,children:`源数据`}),(0,L.jsx)(v,{value:`formatted`,className:`h-6 px-2 text-[11px]`,children:`格式化`})]})}):(0,L.jsx)(`span`,{}),(0,L.jsx)(z,{text:e,label:`Body`})]}),(0,L.jsx)(`div`,{className:`font-mono text-xs bg-muted/30 rounded p-2 overflow-x-auto`,children:(0,L.jsx)(`pre`,{className:`whitespace-pre`,children:a})})]}):(0,L.jsx)(`p`,{className:`text-sm text-muted-foreground py-2`,children:`无内容`})}function V({headers:e}){let t=Object.entries(e||{});return t.length===0?(0,L.jsx)(`p`,{className:`text-sm text-muted-foreground py-2`,children:`无头部信息`}):(0,L.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,L.jsx)(`div`,{className:`flex justify-end`,children:(0,L.jsx)(z,{text:I(e),label:`Headers`})}),(0,L.jsx)(`div`,{className:`font-mono text-xs space-y-0.5`,children:t.map(([e,t])=>(0,L.jsxs)(`div`,{className:`flex gap-2 py-0.5 hover:bg-muted/50 px-1 rounded`,children:[(0,L.jsxs)(`span`,{className:`text-purple-600 shrink-0 font-semibold`,children:[e,`:`]}),(0,L.jsx)(`span`,{className:`text-foreground/80 break-all`,children:t})]},e))})]})}function H(e){return e>=200&&e<300?`bg-green-100 text-green-800`:e>=300&&e<400?`bg-blue-100 text-blue-800`:e>=400&&e<500?`bg-amber-100 text-amber-800`:e>=500?`bg-red-100 text-red-800`:``}function U(e){switch(e){case`ok`:return`bg-green-100 text-green-800 border-green-200`;case`error`:return`bg-red-100 text-red-800 border-red-200`;case`skipped`:return`bg-amber-100 text-amber-800 border-amber-200`;case`short-circuited`:return`bg-blue-100 text-blue-800 border-blue-200`;default:return``}}function W(e){switch(e){case`ok`:return`通过`;case`error`:return`异常`;case`skipped`:return`跳过`;case`short-circuited`:return`已短路返回`;default:return e}}function G(e){switch(e){case`builtin`:return`内置`;case`custom`:return`自定义`;case`system`:return`系统`;default:return e}}function K(e){return e.replace(/^builtin\./,``).replace(/^custom\./,``)}function q(e,t){return`${t}-${e.hook}-${e.name}`}function J(e){return e===`onBeforeResponse`||e===`onAfterResponse`?`response`:`request`}function oe(e,t){return Array.from(new Set([...Object.keys(e),...Object.keys(t)])).sort().map(n=>({key:n,before:e[n]??``,after:t[n]??``})).filter(e=>e.before!==e.after)}function Y({lines:e,className:t}){return e.length===0?(0,L.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`无变更`}):(0,L.jsx)(`div`,{className:`rounded-lg border bg-muted/20 p-2 text-xs font-mono space-y-1 ${t||``}`,children:e.map((e,t)=>(0,L.jsxs)(`div`,{className:`whitespace-pre-wrap break-all px-2 py-1 rounded ${e.type===`added`?`bg-green-500/10 text-green-700 dark:text-green-300`:`bg-red-500/10 text-red-700 dark:text-red-300`}`,children:[(0,L.jsx)(`span`,{className:`mr-1`,children:e.type===`added`?`+ `:`- `}),e.text]},`${e.type}-${t}-${e.text}`))})}function X(e,t,n){let r=[];return t!==void 0&&t!==``&&r.push({type:`removed`,text:`${e} ${t}`}),n!==void 0&&n!==``&&r.push({type:`added`,text:`${e} ${n}`}),r}function se(e,t){let n=[];return e!==void 0&&e!==``&&n.push({type:`removed`,text:e}),t!==void 0&&t!==``&&n.push({type:`added`,text:t}),n}function ce(e){let t=e.replace(/\r\n/g,`
3
- `).split(`
4
- `);return t[t.length-1]===``&&t.pop(),t.length>0?t:[``]}function Z(e){if(!e)return!1;if(/^\(binary(?:,\s*\d+\s+bytes)?\)$/i.test(e.trim()))return!0;let t=0;for(let n=0;n<e.length;n+=1){let r=e.charCodeAt(n);r===9||r===10||r===13||(r<32||r===65533)&&(t+=1)}return t>0&&t/Math.max(e.length,1)>.15}function Q({before:e,after:t}){let[n,i]=(0,F.useState)(!1),a=(0,F.useMemo)(()=>oe(e,t),[e,t]),c=(0,F.useMemo)(()=>a.flatMap(e=>X(e.key,e.before,e.after)),[a]);return c.length===0?(0,L.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`无变更`}):(0,L.jsxs)(`div`,{className:`space-y-2`,children:[(0,L.jsx)(Y,{lines:c}),(0,L.jsxs)(r,{variant:`ghost`,size:`xs`,onClick:()=>i(e=>!e),children:[n?(0,L.jsx)(o,{className:`h-3.5 w-3.5 mr-1`}):(0,L.jsx)(s,{className:`h-3.5 w-3.5 mr-1`}),n?`收起完整头部`:`展开完整头部`]}),n&&(0,L.jsxs)(`div`,{className:`grid gap-2 md:grid-cols-2`,children:[(0,L.jsxs)(`div`,{className:`rounded-lg bg-muted/50 p-2 text-xs font-mono`,children:[(0,L.jsx)(`div`,{className:`text-[11px] uppercase tracking-wide text-muted-foreground mb-1`,children:`变更前`}),(0,L.jsx)(V,{headers:e})]}),(0,L.jsxs)(`div`,{className:`rounded-lg bg-muted/50 p-2 text-xs font-mono`,children:[(0,L.jsx)(`div`,{className:`text-[11px] uppercase tracking-wide text-muted-foreground mb-1`,children:`变更后`}),(0,L.jsx)(V,{headers:t})]})]})]})}function le({before:e,after:t}){let[n,i]=(0,F.useState)(!1),a=(0,F.useMemo)(()=>A(e||``,t||``).filter(e=>e.added||e.removed),[e,t]),c=(0,F.useMemo)(()=>Z(e||``)||Z(t||``),[e,t]),l=(0,F.useMemo)(()=>c?se(e||``,t||``):a.flatMap(e=>ce(e.value).map(t=>({type:e.added?`added`:`removed`,text:t}))),[e,t,a,c]);return l.length===0?(0,L.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`无变更`}):(0,L.jsxs)(`div`,{className:`space-y-2`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,L.jsx)(z,{text:e,label:`变更前 Body`}),(0,L.jsx)(z,{text:t,label:`变更后 Body`})]}),(0,L.jsx)(Y,{lines:l,className:`max-h-40 overflow-auto`}),!c&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(r,{variant:`ghost`,size:`xs`,onClick:()=>i(e=>!e),children:[n?(0,L.jsx)(o,{className:`h-3.5 w-3.5 mr-1`}):(0,L.jsx)(s,{className:`h-3.5 w-3.5 mr-1`}),n?`收起完整 Diff`:`展开完整 Diff`]}),n&&(0,L.jsx)(j,{original:e,modified:t,mode:`inline`,maxHeight:`220px`})]})]})}function ue({stage:e}){let t=e.changes;return t?(0,L.jsxs)(`div`,{className:`space-y-2`,children:[(t.targetBefore||t.targetAfter)&&(0,L.jsxs)(`div`,{className:`rounded-lg bg-muted/50 p-2`,children:[(0,L.jsx)(`div`,{className:`text-[11px] uppercase tracking-wide text-muted-foreground mb-2`,children:`Request URL Diff`}),(0,L.jsx)(Y,{lines:X(`Request URL`,t.targetBefore,t.targetAfter||t.target)})]}),(t.requestHeadersBefore||t.requestHeadersAfter)&&(0,L.jsxs)(`div`,{className:`rounded-lg bg-muted/50 p-2`,children:[(0,L.jsx)(`div`,{className:`text-[11px] uppercase tracking-wide text-muted-foreground mb-2`,children:`Request Header Diff`}),(0,L.jsx)(Q,{before:t.requestHeadersBefore||{},after:t.requestHeadersAfter||{}})]}),(t.responseStatusCodeBefore!==void 0||t.responseStatusCodeAfter!==void 0)&&(0,L.jsxs)(`div`,{className:`rounded-lg bg-muted/50 p-2`,children:[(0,L.jsx)(`div`,{className:`text-[11px] uppercase tracking-wide text-muted-foreground mb-2`,children:`Response Status Diff`}),(0,L.jsx)(Y,{lines:X(`Response Status`,t.responseStatusCodeBefore,t.responseStatusCodeAfter??t.responseStatusCode)})]}),(t.responseHeadersBefore||t.responseHeadersAfter)&&(0,L.jsxs)(`div`,{className:`rounded-lg bg-muted/50 p-2`,children:[(0,L.jsx)(`div`,{className:`text-[11px] uppercase tracking-wide text-muted-foreground mb-2`,children:`Response Header Diff`}),(0,L.jsx)(Q,{before:t.responseHeadersBefore||{},after:t.responseHeadersAfter||{}})]}),(t.responseBodyBefore!==void 0||t.responseBodyAfter!==void 0)&&(0,L.jsxs)(`div`,{className:`rounded-lg bg-muted/50 p-2`,children:[(0,L.jsx)(`div`,{className:`text-[11px] uppercase tracking-wide text-muted-foreground mb-2`,children:`Response Body Diff`}),(0,L.jsx)(le,{before:t.responseBodyBefore||``,after:t.responseBodyAfter||t.responseBody||``})]})]}):null}function de({stage:e,index:t,isLast:n,accentClass:i}){let[a,c]=(0,F.useState)(e.status!==`skipped`);return(0,L.jsxs)(`div`,{className:`space-y-2`,children:[(0,L.jsxs)(`div`,{className:`rounded-xl border bg-background/90 p-3 space-y-3`,children:[(0,L.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,L.jsxs)(`div`,{className:`space-y-1 min-w-0`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,L.jsx)(r,{variant:`ghost`,size:`icon-xs`,onClick:()=>c(e=>!e),title:a?`收起`:`展开`,"aria-label":a?`收起`:`展开`,children:a?(0,L.jsx)(o,{className:`h-3.5 w-3.5`}):(0,L.jsx)(s,{className:`h-3.5 w-3.5`})}),(0,L.jsxs)(`span`,{className:`font-medium text-sm`,children:[t+1,`. `,K(e.name)]}),(0,L.jsx)(p,{variant:`outline`,className:`text-xs font-normal`,children:e.hook}),(0,L.jsx)(p,{variant:`outline`,className:`text-xs font-normal`,children:G(e.type)})]}),(0,L.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e.status===`short-circuited`?`这一阶段直接生成了响应,请求不会继续往后转发。`:e.status===`error`?`这一阶段执行失败,影响了后续处理流程。`:`这一阶段执行完成,请求继续进入下一步。`})]}),(0,L.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,L.jsx)(p,{className:`text-xs border ${U(e.status)}`,children:W(e.status)}),(0,L.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[e.duration,`ms`]})]})]}),a&&(0,L.jsxs)(L.Fragment,{children:[e.target&&(0,L.jsxs)(`div`,{className:`rounded-lg bg-muted/50 p-2`,children:[(0,L.jsx)(`div`,{className:`text-[11px] uppercase tracking-wide text-muted-foreground mb-1`,children:`当前 Target`}),(0,L.jsx)(`div`,{className:`font-mono text-xs break-all`,children:e.target})]}),(0,L.jsx)(ue,{stage:e}),e.error&&(0,L.jsxs)(`div`,{className:`rounded-lg border border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700`,children:[`Error: `,e.error]})]})]}),!n&&(0,L.jsx)(`div`,{className:`flex justify-center py-1`,children:(0,L.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,L.jsx)(`div`,{className:`h-2.5 w-2.5 rounded-full ${i} animate-pulse`}),(0,L.jsx)(y,{className:`h-4 w-4 ${i} animate-bounce`})]})})]})}function $({title:e,description:t,stages:n,icon:r,roleLabel:i,roleIcon:a,accentClass:o}){return(0,L.jsxs)(`div`,{className:`rounded-xl border bg-card p-4`,children:[(0,L.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`div`,{className:`flex items-center gap-2 mb-2`,children:(0,L.jsxs)(p,{variant:`outline`,className:`text-[11px] font-normal`,children:[(0,L.jsx)(`span`,{className:`mr-1`,children:a}),i]})}),(0,L.jsxs)(`h4`,{className:`text-sm font-semibold flex items-center gap-2`,children:[(0,L.jsx)(`span`,{className:o,children:r}),e]}),(0,L.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:t})]}),(0,L.jsxs)(p,{variant:`outline`,className:`text-xs`,children:[n.length,` 个阶段`]})]}),n.length===0?(0,L.jsx)(`p`,{className:`text-sm text-muted-foreground py-4 text-center`,children:`无阶段信息`}):(0,L.jsx)(`div`,{className:`space-y-3`,children:n.map(({stage:e,index:t},r)=>(0,L.jsx)(de,{stage:e,index:t,isLast:r===n.length-1,accentClass:o},q(e,t)))})]})}function fe(e){let t=[...e.stages].reverse().find(e=>e.status===`short-circuited`);if(t)return{label:`提前返回响应`,description:`在 ${K(t.name)} 阶段直接生成响应`,icon:(0,L.jsx)(ae,{className:`h-4 w-4 text-blue-500`})};let n=[...e.stages].reverse().find(e=>e.status===`error`);return n?{label:`处理过程中出现异常`,description:`${K(n.name)} 执行失败`,icon:(0,L.jsx)(c,{className:`h-4 w-4 text-red-500`})}:{label:`进入正常代理流程`,description:`请求经过检查后继续转发到目标服务`,icon:(0,L.jsx)(a,{className:`h-4 w-4 text-emerald-500`})}}function pe({inspection:e}){let t=fe(e),n=e.stages.map((e,t)=>({stage:e,index:t})),r=n.filter(({stage:e})=>J(e.hook)===`request`),i=n.filter(({stage:e})=>J(e.hook)===`response`);return(0,L.jsxs)(`div`,{className:`space-y-4 pt-3`,children:[(0,L.jsxs)(`div`,{className:`rounded-xl border bg-gradient-to-br from-muted/20 via-background to-muted/10 p-4 space-y-4`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-4 text-sm`,children:[(0,L.jsx)(p,{variant:`outline`,className:`font-mono`,children:e.method}),(0,L.jsx)(`span`,{className:`font-mono text-muted-foreground truncate flex-1`,children:e.url}),(0,L.jsxs)(`div`,{className:`flex items-center gap-1 text-muted-foreground`,children:[(0,L.jsx)(l,{className:`h-3.5 w-3.5`}),(0,L.jsxs)(`span`,{className:`text-xs`,children:[e.totalDuration,`ms`]})]})]}),(0,L.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-3`,children:[(0,L.jsxs)(`div`,{className:`rounded-lg border bg-background/80 p-3`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground mb-1`,children:[(0,L.jsx)(P,{className:`h-3.5 w-3.5`}),`请求入口`]}),(0,L.jsx)(`div`,{className:`text-sm font-medium`,children:`请求进入代理`}),(0,L.jsx)(`div`,{className:`text-xs text-muted-foreground mt-1`,children:`从浏览器或客户端发起,进入 Meddle 的处理流水线`})]}),(0,L.jsxs)(`div`,{className:`rounded-lg border bg-background/80 p-3`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground mb-1`,children:[(0,L.jsx)(f,{className:`h-3.5 w-3.5`}),`处理阶段`]}),(0,L.jsxs)(`div`,{className:`text-sm font-medium`,children:[e.stages.length,` 个阶段`]}),(0,L.jsx)(`div`,{className:`text-xs text-muted-foreground mt-1`,children:`按实际执行顺序记录插件和系统模块对请求的处理`})]}),(0,L.jsxs)(`div`,{className:`rounded-lg border bg-background/80 p-3`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground mb-1`,children:[t.icon,`最终结果`]}),(0,L.jsx)(`div`,{className:`text-sm font-medium`,children:t.label}),(0,L.jsx)(`div`,{className:`text-xs text-muted-foreground mt-1`,children:t.description})]})]})]}),e.stages.length===0?(0,L.jsx)(`p`,{className:`text-sm text-muted-foreground py-4 text-center`,children:`无处理阶段信息(插件模式可能未开启)`}):(0,L.jsxs)(`div`,{className:`space-y-4`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,L.jsx)(N,{className:`h-3.5 w-3.5`}),(0,L.jsx)(`span`,{children:`默认仅展示改动内容;跳过阶段默认折叠,可单独展开查看更多。`})]}),(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,L.jsx)($,{title:`请求阶段`,description:`客户端请求进入代理后,按顺序执行请求侧处理阶段`,stages:r,icon:(0,L.jsx)(P,{className:`h-4 w-4 text-blue-500`}),roleLabel:`客户端`,roleIcon:(0,L.jsx)(w,{className:`h-3 w-3 text-blue-500`}),accentClass:`text-blue-500`}),(0,L.jsx)($,{title:`响应阶段`,description:`服务器响应返回代理后,按顺序执行响应侧处理阶段`,stages:i,icon:(0,L.jsx)(O,{className:`h-4 w-4 text-emerald-500`}),roleLabel:`服务器`,roleIcon:(0,L.jsx)(u,{className:`h-3 w-3 text-emerald-500`}),accentClass:`text-emerald-500`})]}),(0,L.jsxs)(`div`,{className:`flex items-center justify-center gap-2 text-xs text-muted-foreground`,children:[(0,L.jsx)(`span`,{children:`请求进入`}),(0,L.jsx)(a,{className:`h-4 w-4 animate-pulse text-blue-500`}),(0,L.jsx)(`span`,{children:`请求阶段`}),(0,L.jsx)(a,{className:`h-4 w-4 animate-pulse text-violet-500`}),(0,L.jsx)(`span`,{children:`响应阶段`}),(0,L.jsx)(a,{className:`h-4 w-4 animate-pulse text-emerald-500`}),(0,L.jsx)(`span`,{children:`最终返回`})]})]})]})}function me({open:e=!1,onClose:t,embedded:n=!1,detail:i,loading:a,error:o,selectedRecord:s,onCreateMock:c,onReplay:l}){let[u,d]=(0,F.useState)(!1),f=()=>{i&&s&&c&&c({source:s.source,responseBody:i.responseBody,statusCode:i.statusCode,responseHeaders:i.responseHeaders})},[y,w]=(0,F.useState)(null),T=(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(ne,{className:`px-4 pt-4 pb-2`,children:(0,L.jsxs)(k,{className:`flex items-center gap-2 text-base`,children:[`请求详情`,i&&(0,L.jsxs)(p,{className:`${H(i.statusCode)} border-0`,children:[i.statusCode,` `,i.statusMessage]}),s?.clientType&&(0,L.jsxs)(p,{variant:`outline`,className:`max-w-48 text-[10px] font-mono`,title:[s.clientName,s.clientIp].filter(Boolean).join(` · `),children:[s.clientName||(s.clientType===`local`?`本机`:s.clientType===`plugin`?`插件测试`:`远程设备`),s.clientIp?` · ${s.clientIp}`:``]}),s?.applicationName&&(0,L.jsxs)(p,{variant:`outline`,className:`max-w-56 gap-1.5 text-[10px]`,title:[s.applicationIdentitySource===`local-process`?`识别方式: 本机进程`:s.applicationIdentitySource===`user-agent`?`识别方式: User-Agent 推断`:s.applicationIdentitySource===`client-reported`?`识别方式: 客户端上报`:void 0,s.applicationIdentityConfidence?`可信度: ${s.applicationIdentityConfidence===`high`?`高`:s.applicationIdentityConfidence===`medium`?`中`:`低`}`:void 0,s.applicationProcess,s.applicationPid?`PID ${s.applicationPid}`:void 0,s.applicationBundleId,s.applicationPath].filter(Boolean).join(` · `),children:[(0,L.jsx)(D,{record:s,compact:!0}),(0,L.jsx)(`span`,{className:`truncate`,children:s.applicationName}),s.applicationIdentitySource===`user-agent`&&(0,L.jsx)(`span`,{className:`shrink-0 text-[9px] text-muted-foreground`,children:`推断`})]}),(0,L.jsxs)(`div`,{className:`flex items-center gap-1.5 ml-auto`,children:[i&&l&&s?.id!=null&&(0,L.jsxs)(r,{variant:`outline`,size:`xs`,onClick:async()=>{if(s?.id!=null&&l){d(!0),w(null);try{await l(s.id)}catch(e){w(e.message||`重放失败`)}finally{d(!1)}}},disabled:u,title:`使用相同的请求参数重新发送请求`,children:[(0,L.jsx)(te,{className:`h-3.5 w-3.5 mr-1 ${u?`animate-spin`:``}`}),u?`重放中...`:`重放`]}),i&&c&&!s?.mock&&(0,L.jsxs)(r,{variant:`outline`,size:`xs`,onClick:f,children:[(0,L.jsx)(ee,{className:`h-3.5 w-3.5 mr-1`}),`创建 Mock`]})]})]})}),(0,L.jsx)(C,{}),y&&(0,L.jsx)(`div`,{className:`mx-4 mt-2 px-3 py-2 rounded-md bg-red-50 border border-red-200 text-red-700 text-xs`,children:y}),o&&!a&&!i&&(0,L.jsx)(`div`,{className:`mx-4 mt-2 px-3 py-2 rounded-md bg-amber-50 border border-amber-200 text-amber-800 text-xs`,children:o}),a?(0,L.jsx)(`div`,{className:`flex-1 flex items-center justify-center`,children:(0,L.jsx)(b,{className:`h-6 w-6 animate-spin text-muted-foreground`})}):i?(0,L.jsxs)(_,{defaultValue:`request`,className:`flex-1 flex flex-col min-h-0`,children:[(0,L.jsxs)(g,{className:`mx-4 mt-2 w-fit`,children:[(0,L.jsx)(v,{value:`request`,children:`请求`}),(0,L.jsx)(v,{value:`response`,children:`响应`}),(0,L.jsxs)(v,{value:`inspect`,children:[(0,L.jsx)(O,{className:`h-3.5 w-3.5 mr-1`}),`Inspect`]})]}),(0,L.jsx)(m,{value:`request`,className:`flex-1 min-h-0 mt-0`,children:(0,L.jsx)(h,{className:`h-full px-4 pb-4`,children:(0,L.jsxs)(`div`,{className:`space-y-3 pt-3`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`h4`,{className:`text-xs font-semibold text-muted-foreground mb-1.5 uppercase tracking-wider`,children:`Request Headers`}),(0,L.jsx)(V,{headers:i.requestHeaders})]}),(0,L.jsx)(C,{}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`h4`,{className:`text-xs font-semibold text-muted-foreground mb-1.5 uppercase tracking-wider`,children:`Request Body`}),(0,L.jsx)(B,{body:i.requestBody})]})]})})}),(0,L.jsx)(m,{value:`response`,className:`flex-1 min-h-0 mt-0`,children:(0,L.jsx)(h,{className:`h-full px-4 pb-4`,children:(0,L.jsxs)(`div`,{className:`space-y-3 pt-3`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`h4`,{className:`text-xs font-semibold text-muted-foreground mb-1.5 uppercase tracking-wider`,children:`Response Headers`}),(0,L.jsx)(V,{headers:i.responseHeaders})]}),(0,L.jsx)(C,{}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`h4`,{className:`text-xs font-semibold text-muted-foreground mb-1.5 uppercase tracking-wider`,children:`Response Body`}),(0,L.jsx)(B,{body:i.responseBody})]})]})})}),(0,L.jsx)(m,{value:`inspect`,className:`flex-1 min-h-0 mt-0`,children:(0,L.jsx)(h,{className:`h-full px-4 pb-4`,children:i.inspection?(0,L.jsx)(pe,{inspection:i.inspection}):(0,L.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full py-12 text-muted-foreground`,children:[(0,L.jsx)(O,{className:`h-12 w-12 mb-4 opacity-50`}),(0,L.jsx)(`p`,{className:`text-sm`,children:`无 Inspect 信息`}),(0,L.jsx)(`p`,{className:`text-xs mt-1`,children:`需要开启插件模式(on/shadow)才能查看请求生命周期`})]})})})]}):(0,L.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-muted-foreground text-sm px-6 text-center`,children:s?(0,L.jsxs)(`div`,{className:`space-y-2`,children:[(0,L.jsx)(`div`,{children:`详情数据暂不可用`}),(0,L.jsxs)(`div`,{className:`text-xs font-mono break-all`,children:[s.method,` `,s.source]})]}):(0,L.jsx)(`div`,{children:`无法加载详情`})})]});return n?(0,L.jsx)(`div`,{className:`flex h-full min-h-0 flex-col`,children:T}):(0,L.jsx)(S,{open:e,onOpenChange:e=>!e&&t?.(),children:(0,L.jsx)(x,{className:`p-0 flex flex-col`,resizable:!0,defaultWidth:640,storageKey:`detail-panel`,children:T})})}export{me as DetailPanel};
@@ -1 +0,0 @@
1
- import{a as e,f as t,i as n,s as r,u as i}from"./button-BTToMaBW.js";import{a}from"./dist-C6eaYCUo.js";var o=t(i(),1),s=e();function c(e){let t=e+`CollectionProvider`,[i,c]=a(t),[l,u]=i(t,{collectionRef:{current:null},itemMap:new Map}),d=e=>{let{scope:t,children:n}=e,r=o.useRef(null),i=o.useRef(new Map).current;return(0,s.jsx)(l,{scope:t,itemMap:i,collectionRef:r,children:n})};d.displayName=t;let f=e+`CollectionSlot`,p=n(f),m=o.forwardRef((e,t)=>{let{scope:n,children:i}=e;return(0,s.jsx)(p,{ref:r(t,u(f,n).collectionRef),children:i})});m.displayName=f;let h=e+`CollectionItemSlot`,g=`data-radix-collection-item`,_=n(h),v=o.forwardRef((e,t)=>{let{scope:n,children:i,...a}=e,c=o.useRef(null),l=r(t,c),d=u(h,n);return o.useEffect(()=>(d.itemMap.set(c,{ref:c,...a}),()=>void d.itemMap.delete(c))),(0,s.jsx)(_,{[g]:``,ref:l,children:i})});v.displayName=h;function y(t){let n=u(e+`CollectionConsumer`,t);return o.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${g}]`));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])}return[{Provider:d,Slot:m,ItemSlot:v},y,c]}var l=o.createContext(void 0);function u(e){let t=o.useContext(l);return e||t||`ltr`}export{c as n,u as t};
@@ -1,5 +0,0 @@
1
- import{a as e,f as t,i as n,l as r,s as i,u as a}from"./button-BTToMaBW.js";import{a as o,i as s,o as c,r as l,t as u}from"./dist-C6eaYCUo.js";import{t as d}from"./dist-DWmDaXVN.js";import{n as f}from"./dist-CEd_wnRC.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./es2015-DG46NGN7.js";var y=r(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),b=t(a(),1),x=e(),S=`Dialog`,[C,ee]=o(S),[w,T]=C(S),E=e=>{let{__scopeDialog:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!0}=e,s=b.useRef(null),c=b.useRef(null),[l,d]=u({prop:r,defaultProp:i??!1,onChange:a,caller:S});return(0,x.jsx)(w,{scope:t,triggerRef:s,contentRef:c,contentId:f(),titleId:f(),descriptionId:f(),open:l,onOpenChange:d,onOpenToggle:b.useCallback(()=>d(e=>!e),[d]),modal:o,children:n})};E.displayName=S;var D=`DialogTrigger`,O=b.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,a=T(D,n),o=i(t,a.triggerRef);return(0,x.jsx)(c.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":a.open,"aria-controls":a.contentId,"data-state":J(a.open),...r,ref:o,onClick:l(e.onClick,a.onOpenToggle)})});O.displayName=D;var k=`DialogPortal`,[A,j]=C(k,{forceMount:void 0}),M=e=>{let{__scopeDialog:t,forceMount:n,children:r,container:i}=e,a=T(k,t);return(0,x.jsx)(A,{scope:t,forceMount:n,children:b.Children.map(r,e=>(0,x.jsx)(d,{present:n||a.open,children:(0,x.jsx)(m,{asChild:!0,container:i,children:e})}))})};M.displayName=k;var N=`DialogOverlay`,P=b.forwardRef((e,t)=>{let n=j(N,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=T(N,e.__scopeDialog);return a.modal?(0,x.jsx)(d,{present:r||a.open,children:(0,x.jsx)(I,{...i,ref:t})}):null});P.displayName=N;var F=n(`DialogOverlay.RemoveScroll`),I=b.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=T(N,n);return(0,x.jsx)(h,{as:F,allowPinchZoom:!0,shards:[i.contentRef],children:(0,x.jsx)(c.div,{"data-state":J(i.open),...r,ref:t,style:{pointerEvents:`auto`,...r.style}})})}),L=`DialogContent`,R=b.forwardRef((e,t)=>{let n=j(L,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=T(L,e.__scopeDialog);return(0,x.jsx)(d,{present:r||a.open,children:a.modal?(0,x.jsx)(z,{...i,ref:t}):(0,x.jsx)(B,{...i,ref:t})})});R.displayName=L;var z=b.forwardRef((e,t)=>{let n=T(L,e.__scopeDialog),r=b.useRef(null),a=i(t,n.contentRef,r);return b.useEffect(()=>{let e=r.current;if(e)return v(e)},[]),(0,x.jsx)(V,{...e,ref:a,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:l(e.onCloseAutoFocus,e=>{e.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:l(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()}),onFocusOutside:l(e.onFocusOutside,e=>e.preventDefault())})}),B=b.forwardRef((e,t)=>{let n=T(L,e.__scopeDialog),r=b.useRef(!1),i=b.useRef(!1);return(0,x.jsx)(V,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),V=b.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:a,onCloseAutoFocus:o,...s}=e,c=T(L,n),l=b.useRef(null),u=i(t,l);return _(),(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(p,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:a,onUnmountAutoFocus:o,children:(0,x.jsx)(g,{role:`dialog`,id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":J(c.open),...s,ref:u,onDismiss:()=>c.onOpenChange(!1)})}),(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(Z,{titleId:c.titleId}),(0,x.jsx)($,{contentRef:l,descriptionId:c.descriptionId})]})]})}),H=`DialogTitle`,U=b.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=T(H,n);return(0,x.jsx)(c.h2,{id:i.titleId,...r,ref:t})});U.displayName=H;var W=`DialogDescription`,G=b.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=T(W,n);return(0,x.jsx)(c.p,{id:i.descriptionId,...r,ref:t})});G.displayName=W;var K=`DialogClose`,q=b.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=T(K,n);return(0,x.jsx)(c.button,{type:`button`,...r,ref:t,onClick:l(e.onClick,()=>i.onOpenChange(!1))})});q.displayName=K;function J(e){return e?`open`:`closed`}var Y=`DialogTitleWarning`,[te,X]=s(Y,{contentName:L,titleName:H,docsSlug:`dialog`}),Z=({titleId:e})=>{let t=X(Y),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
2
-
3
- If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
4
-
5
- For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return b.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},Q=`DialogDescriptionWarning`,$=({contentRef:e,descriptionId:t})=>{let n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${X(Q).contentName}}.`;return b.useEffect(()=>{let r=e.current?.getAttribute(`aria-describedby`);t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},ne=E,re=M,ie=P,ae=R,oe=U,se=G,ce=q;export{re as a,y as c,ie as i,ae as n,ne as o,se as r,oe as s,ce as t};
@@ -1 +0,0 @@
1
- import{f as e,u as t}from"./button-BTToMaBW.js";import{n}from"./dist-C6eaYCUo.js";var r=e(t(),1);function i(e){let t=r.useRef({value:e,previous:e});return r.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}function a(e){let[t,i]=r.useState(void 0);return n(()=>{if(e){i({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let n=t[0],r,a;if(`borderBoxSize`in n){let e=n.borderBoxSize,t=Array.isArray(e)?e[0]:e;r=t.inlineSize,a=t.blockSize}else r=e.offsetWidth,a=e.offsetHeight;i({width:r,height:a})});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}else i(void 0)},[e]),t}export{i as n,a as t};
@@ -1 +0,0 @@
1
- function e(e){return`showOpenFilePicker`in e}export{e as t};
@@ -1 +0,0 @@
1
- import{a as e,f as t,l as n,n as r,t as i,u as a}from"./button-BTToMaBW.js";import"./dist-C6eaYCUo.js";import{t as o}from"./circle-x-C9USji_R.js";import{n as s,t as c}from"./server-Cpj4KNwN.js";import{t as l}from"./refresh-cw-CG3HaiQT.js";import{t as ee}from"./shield-check-OqUmVLQt.js";import{t as u}from"./wifi-CCLKyySQ.js";import{t as d}from"./switch-Bes_YiJu.js";import{B as f,C as p,D as m,E as h,F as g,G as _,I as v,J as te,M as y,N as b,O as x,P as ne,R as S,T as C,_t as w,ut as re,z as T}from"./index-Cw0WJSVU.js";import{n as E,r as D,t as O}from"./alert-DCvlZAiv.js";import{a as k,i as A,n as j,o as M,r as N,t as P}from"./table-nW7uQVcl.js";var F=n(`cpu`,[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]),I=n(`gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]),L=n(`hard-drive`,[[`line`,{x1:`22`,x2:`2`,y1:`12`,y2:`12`,key:`1y58io`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`oot6mr`}],[`line`,{x1:`6`,x2:`6.01`,y1:`16`,y2:`16`,key:`sgf278`}],[`line`,{x1:`10`,x2:`10.01`,y1:`16`,y2:`16`,key:`1l4acy`}]]),R=n(`network`,[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`4q2zg0`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`8cvhb9`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`,key:`1egb70`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`,key:`1jsf9p`}],[`path`,{d:`M12 12V8`,key:`2874zd`}]]),z=t(a(),1),B=e(),V={ok:`正常`,degraded:`降级`,critical:`严重`},ie={cpu:`CPU`,rss:`RSS 内存`,connections:`连接数`,mitmServers:`MITM 服务`,eventLoopDelay:`事件循环延迟`,fds:`文件描述符`};function H(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.generatedAt==`number`&&typeof t.status==`string`&&typeof t.pid==`number`&&typeof t.uptimeSec==`number`&&!!t.memory&&!!t.cpu&&!!t.connections&&!!t.mitmServers&&Array.isArray(t.checks)}async function U(){let e=await fetch(`/api/health`,{cache:`no-store`});if(!e.ok)throw Error(`健康接口返回 ${e.status}`);let t=await e.json();if(!H(t))throw Error(`健康接口返回格式不正确`);return t}function W(e){if(!Number.isFinite(e))return`-`;if(e<1024)return`${e} B`;let t=[`KB`,`MB`,`GB`,`TB`],n=e/1024,r=t[0];for(let e=1;e<t.length&&n>=1024;e+=1)n/=1024,r=t[e];return`${n>=10?n.toFixed(0):n.toFixed(1)} ${r}`}function G(e){if(!Number.isFinite(e)||e<0)return`-`;let t=Math.floor(e/86400),n=Math.floor(e%86400/3600),r=Math.floor(e%3600/60),i=Math.floor(e%60);return t>0?`${t}天 ${n}小时`:n>0?`${n}小时 ${r}分钟`:r>0?`${r}分钟 ${i}秒`:`${i}秒`}function K(e){return e?new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1}).format(new Date(e)):`-`}function q(e,t){return t===`bytes`?W(e):t===`%`?`${e.toFixed(1)}%`:t===`ms`?`${e.toFixed(1)} ms`:String(e)}function J(e,t){return t===`bytes`?W(e):t===`%`?`${e}%`:t===`ms`?`${e} ms`:String(e)}function ae(e){if(!e||typeof e!=`object`)return null;let t=e;return Array.isArray(t.keys)?{windowMs:Number(t.windowMs)||0,maxPerWindow:Number(t.maxPerWindow)||0,keys:t.keys,suppressedTotal:Number(t.suppressedTotal)||0}:null}function Y({status:e}){return(0,B.jsxs)(f,{variant:e===`critical`?`destructive`:e===`degraded`?`secondary`:`default`,children:[e===`ok`?(0,B.jsx)(w,{}):e===`degraded`?(0,B.jsx)(_,{}):(0,B.jsx)(o,{}),V[e]]})}function oe({icon:e,label:t,value:n,detail:r}){return(0,B.jsxs)(b,{className:`gap-0 py-0 shadow-none`,children:[(0,B.jsx)(S,{className:`border-b px-4 py-3`,children:(0,B.jsxs)(T,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,B.jsx)(e,{}),t]})}),(0,B.jsxs)(g,{className:`flex flex-col gap-1 p-4`,children:[(0,B.jsx)(`div`,{className:`text-2xl font-semibold tracking-tight`,children:n}),(0,B.jsx)(`div`,{className:`min-h-4 truncate text-xs text-muted-foreground`,title:r,children:r})]})]})}function X({label:e,value:t}){return(0,B.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 rounded-lg border bg-background p-3`,children:[(0,B.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e}),(0,B.jsx)(`span`,{className:`truncate text-sm font-medium`,title:t,children:t})]})}function se(){return(0,B.jsxs)(`div`,{className:`app-workspace-content`,"aria-label":`正在读取健康状态`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,B.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,B.jsx)(y,{className:`h-7 w-40`}),(0,B.jsx)(y,{className:`h-4 w-64`})]}),(0,B.jsx)(y,{className:`h-8 w-28`})]}),(0,B.jsx)(`div`,{className:`grid gap-3 md:grid-cols-2 xl:grid-cols-6`,children:Array.from({length:6}).map((e,t)=>(0,B.jsx)(y,{className:`h-32 w-full`},t))}),(0,B.jsx)(y,{className:`h-80 w-full`})]})}function Z(){let[e,t]=(0,z.useState)(null),[n,a]=(0,z.useState)(!0),[o,y]=(0,z.useState)(!1),[w,V]=(0,z.useState)(``),[H,Z]=(0,z.useState)(!0),Q=(0,z.useCallback)(async(e=!1)=>{e?y(!0):a(!0),V(``);try{t(await U())}catch(e){V(e instanceof Error?e.message:`无法读取健康状态`)}finally{a(!1),y(!1)}},[]);(0,z.useEffect)(()=>{Q()},[Q]),(0,z.useEffect)(()=>{if(!H)return;let e=window.setInterval(()=>{Q(!0)},5e3);return()=>window.clearInterval(e)},[H,Q]);let $=(0,z.useMemo)(()=>ae(e?.logs),[e]);if(n&&!e)return(0,B.jsx)(se,{});if(!e)return(0,B.jsxs)(`div`,{className:`app-workspace-content`,children:[(0,B.jsxs)(O,{variant:`destructive`,children:[(0,B.jsx)(D,{children:`加载失败`}),(0,B.jsx)(E,{children:w||`无法读取健康状态`})]}),(0,B.jsxs)(i,{variant:`outline`,size:`sm`,onClick:()=>void Q(),children:[(0,B.jsx)(l,{"data-icon":`inline-start`}),`重新检测`]})]});let ce=[{icon:F,label:`CPU`,value:`${e.cpu.percent.toFixed(1)}%`,detail:`${e.cpu.cores} 核 · load ${e.cpu.loadAverage.map(e=>e.toFixed(2)).join(` / `)}`},{icon:L,label:`RSS 内存`,value:W(e.memory.rss),detail:`Heap ${W(e.memory.heapUsed)} / ${W(e.memory.heapTotal)}`},{icon:R,label:`TCP 连接`,value:String(e.connections.total),detail:`代理 ${e.connections.proxySockets} · TLS ${e.connections.mitmTlsSockets} · WS ${e.connections.webSockets}`},{icon:c,label:`MITM 服务`,value:String(e.mitmServers.count),detail:`${e.mitmServers.activeSockets} 个活跃 socket`},{icon:te,label:`文件描述符`,value:e.process.fdCount==null?`-`:String(e.process.fdCount),detail:`handles ${e.process.activeHandles??`-`} · requests ${e.process.activeRequests??`-`}`},{icon:I,label:`事件循环`,value:`${e.eventLoop.maxMs.toFixed(1)} ms`,detail:`mean ${e.eventLoop.meanMs.toFixed(1)} ms`}];return(0,B.jsxs)(`div`,{className:`app-workspace-content overflow-y-auto`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,B.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,B.jsx)(`h2`,{className:`text-xl font-semibold tracking-tight`,children:`运行健康`}),(0,B.jsx)(Y,{status:e.status})]}),(0,B.jsxs)(`div`,{className:`flex flex-wrap gap-3 text-xs text-muted-foreground`,children:[(0,B.jsxs)(`span`,{children:[`PID `,e.pid]}),(0,B.jsxs)(`span`,{children:[`运行 `,G(e.uptimeSec)]}),(0,B.jsx)(`span`,{children:e.platform}),(0,B.jsxs)(`span`,{children:[`更新 `,K(e.generatedAt)]})]})]}),(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,B.jsxs)(`div`,{className:`flex h-8 items-center gap-2 rounded-md border bg-background px-3 text-sm`,children:[(0,B.jsx)(d,{checked:H,onCheckedChange:Z,"aria-label":`自动刷新健康信息`}),(0,B.jsx)(`span`,{children:`自动刷新`})]}),(0,B.jsxs)(i,{variant:`outline`,size:`sm`,onClick:()=>void Q(!0),disabled:o,children:[(0,B.jsx)(l,{"data-icon":`inline-start`,className:r(o&&`animate-spin`)}),`刷新`]})]})]}),w&&(0,B.jsxs)(O,{variant:`destructive`,children:[(0,B.jsx)(D,{children:`刷新失败`}),(0,B.jsx)(E,{children:w})]}),(0,B.jsx)(`div`,{className:`grid gap-3 md:grid-cols-2 xl:grid-cols-6`,children:ce.map(e=>(0,B.jsx)(oe,{...e},e.label))}),(0,B.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[minmax(0,1.3fr)_minmax(360px,0.7fr)]`,children:[(0,B.jsxs)(b,{className:`gap-0 py-0 shadow-none`,children:[(0,B.jsxs)(S,{className:`border-b py-4`,children:[(0,B.jsxs)(T,{className:`flex items-center gap-2`,children:[(0,B.jsx)(re,{}),`健康检查`]}),(0,B.jsx)(v,{children:`阈值来自当前进程的 MEDDLE_WATCHDOG 配置。`})]}),(0,B.jsx)(g,{className:`p-0`,children:(0,B.jsxs)(P,{children:[(0,B.jsx)(k,{children:(0,B.jsxs)(M,{children:[(0,B.jsx)(A,{children:`项目`}),(0,B.jsx)(A,{children:`状态`}),(0,B.jsx)(A,{children:`当前值`}),(0,B.jsx)(A,{children:`阈值`})]})}),(0,B.jsx)(j,{children:e.checks.map(e=>(0,B.jsxs)(M,{children:[(0,B.jsx)(N,{className:`font-medium`,children:ie[e.name]||e.name}),(0,B.jsx)(N,{children:(0,B.jsx)(Y,{status:e.status})}),(0,B.jsx)(N,{children:q(e.value,e.unit)}),(0,B.jsx)(N,{className:`text-muted-foreground`,children:J(e.limit,e.unit)})]},e.name))})]})})]}),(0,B.jsxs)(b,{className:`gap-0 py-0 shadow-none`,children:[(0,B.jsxs)(S,{className:`border-b py-4`,children:[(0,B.jsxs)(T,{className:`flex items-center gap-2`,children:[(0,B.jsx)(ee,{}),`守护策略`]}),(0,B.jsx)(v,{children:`连续命中严重阈值后按策略处理。`}),(0,B.jsx)(ne,{children:(0,B.jsx)(f,{variant:e.watchdog.config.enabled?`default`:`secondary`,children:e.watchdog.config.enabled?`已启用`:`已关闭`})})]}),(0,B.jsxs)(g,{className:`grid gap-3 p-4 sm:grid-cols-2`,children:[(0,B.jsx)(X,{label:`动作`,value:e.watchdog.config.action===`exit`?`退出重启`:`仅告警`}),(0,B.jsx)(X,{label:`检测间隔`,value:G(e.watchdog.config.intervalMs/1e3)}),(0,B.jsx)(X,{label:`最小运行时间`,value:G(e.watchdog.config.minUptimeMs/1e3)}),(0,B.jsx)(X,{label:`失败阈值`,value:`${e.watchdog.consecutiveFailures}/${e.watchdog.config.failureThreshold}`}),(0,B.jsx)(X,{label:`CPU 阈值`,value:`${e.watchdog.config.cpuPercent}%`}),(0,B.jsx)(X,{label:`RSS 阈值`,value:W(e.watchdog.config.rssBytes)}),(0,B.jsx)(X,{label:`连接阈值`,value:String(e.watchdog.config.connectionCount)}),(0,B.jsx)(X,{label:`FD 阈值`,value:String(e.watchdog.config.fdCount)}),e.watchdog.lastReason&&(0,B.jsx)(`div`,{className:`sm:col-span-2`,children:(0,B.jsxs)(O,{children:[(0,B.jsx)(_,{}),(0,B.jsx)(D,{children:`最近命中`}),(0,B.jsx)(E,{children:e.watchdog.lastReason})]})})]})]})]}),(0,B.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,B.jsxs)(b,{className:`gap-0 py-0 shadow-none`,children:[(0,B.jsxs)(S,{className:`border-b py-4`,children:[(0,B.jsxs)(T,{className:`flex items-center gap-2`,children:[(0,B.jsx)(u,{}),`MITM 服务池`]}),(0,B.jsxs)(v,{children:[e.mitmServers.count,` 个动态 HTTPS 服务。`]})]}),(0,B.jsx)(g,{className:`p-0`,children:e.mitmServers.items.length>0?(0,B.jsxs)(P,{children:[(0,B.jsx)(k,{children:(0,B.jsxs)(M,{children:[(0,B.jsx)(A,{children:`Host`}),(0,B.jsx)(A,{children:`端口`}),(0,B.jsx)(A,{children:`Socket`}),(0,B.jsx)(A,{children:`空闲`})]})}),(0,B.jsx)(j,{children:e.mitmServers.items.map(e=>(0,B.jsxs)(M,{children:[(0,B.jsx)(N,{className:`max-w-[260px] truncate font-medium`,title:e.host,children:e.host}),(0,B.jsx)(N,{children:e.port??`-`}),(0,B.jsxs)(N,{children:[e.activeSockets,` / `,e.webSockets,` WS`]}),(0,B.jsx)(N,{className:`text-muted-foreground`,children:e.idleForMs==null?`-`:G(e.idleForMs/1e3)})]},`${e.host}:${e.port??`dynamic`}`))})]}):(0,B.jsx)(p,{className:`border-0 py-10`,children:(0,B.jsxs)(h,{children:[(0,B.jsx)(m,{variant:`icon`,children:(0,B.jsx)(c,{})}),(0,B.jsx)(x,{children:`暂无动态 HTTPS 服务`}),(0,B.jsx)(C,{children:`当前没有活跃的 MITM 目标。`})]})})})]}),(0,B.jsxs)(b,{className:`gap-0 py-0 shadow-none`,children:[(0,B.jsxs)(S,{className:`border-b py-4`,children:[(0,B.jsxs)(T,{className:`flex items-center gap-2`,children:[(0,B.jsx)(s,{}),`日志限流`]}),(0,B.jsxs)(v,{children:[`已抑制 `,$?.suppressedTotal??0,` 条重复日志。`]})]}),(0,B.jsx)(g,{className:`p-0`,children:$&&$.keys.length>0?(0,B.jsxs)(P,{children:[(0,B.jsx)(k,{children:(0,B.jsxs)(M,{children:[(0,B.jsx)(A,{children:`Key`}),(0,B.jsx)(A,{children:`级别`}),(0,B.jsx)(A,{children:`输出 / 抑制`}),(0,B.jsx)(A,{children:`最近`})]})}),(0,B.jsx)(j,{children:$.keys.map(e=>(0,B.jsxs)(M,{children:[(0,B.jsx)(N,{className:`max-w-[260px] truncate font-medium`,title:e.key,children:e.key}),(0,B.jsx)(N,{children:(0,B.jsx)(f,{variant:e.level===`error`?`destructive`:e.level===`warn`?`secondary`:`outline`,children:e.level})}),(0,B.jsxs)(N,{children:[e.emitted,` / `,e.suppressed]}),(0,B.jsx)(N,{className:`text-muted-foreground`,children:K(e.lastSeenAt)})]},e.key))})]}):(0,B.jsx)(p,{className:`border-0 py-10`,children:(0,B.jsxs)(h,{children:[(0,B.jsx)(m,{variant:`icon`,children:(0,B.jsx)(s,{})}),(0,B.jsx)(x,{children:`暂无限流记录`}),(0,B.jsx)(C,{children:`当前没有被抑制的重复日志。`})]})})})]})]})]})}export{Z as HealthPanel};