@chenpu17/cc-gw 0.10.0 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/package.json +5 -5
  2. package/src/web/dist/assets/{About-BxrAYtQE.js → About-CcTMpvYw.js} +1 -1
  3. package/src/web/dist/assets/{ApiKeys-DNQRKCib.js → ApiKeys-Dbteu5ri.js} +1 -1
  4. package/src/web/dist/assets/{ConfirmDialog-Bcxn6dph.js → ConfirmDialog-Cc9UQTDU.js} +1 -1
  5. package/src/web/dist/assets/{Dashboard-B6ICHOzw.js → Dashboard-B5QF-lmL.js} +1 -1
  6. package/src/web/dist/assets/{DialogShell-Dadn4IyM.js → DialogShell-iCyqEFRA.js} +1 -1
  7. package/src/web/dist/assets/{Events-C2uIO71I.js → Events-BFIgKbWf.js} +1 -1
  8. package/src/web/dist/assets/{Help-DNYnXBdr.js → Help-C8IpZL_I.js} +1 -1
  9. package/src/web/dist/assets/{Login-BG51iO51.js → Login-hQw0WqP_.js} +1 -1
  10. package/src/web/dist/assets/{Logs-DFsyxG6w.js → Logs-Cq3T-TNv.js} +1 -1
  11. package/src/web/dist/assets/{PageSection-B3MOBwwu.js → PageSection-BE4JZURK.js} +1 -1
  12. package/src/web/dist/assets/{PageState-BfMFsTrq.js → PageState-BzdQq00f.js} +1 -1
  13. package/src/web/dist/assets/{PageToolbar-BdMtFJ0X.js → PageToolbar-xVyzEX46.js} +1 -1
  14. package/src/web/dist/assets/ProvidersWorkbench-D4h3nYno.js +1 -0
  15. package/src/web/dist/assets/{Settings-BxLEMKHc.js → Settings-CQ6tvunu.js} +1 -1
  16. package/src/web/dist/assets/{Setup-xJZtt7MZ.js → Setup-BpNWz4e5.js} +2 -2
  17. package/src/web/dist/assets/{apiKeys-CdpEo7b1.js → apiKeys-Dvp0S9i6.js} +1 -1
  18. package/src/web/dist/assets/app-DmrDy3E3.js +61 -0
  19. package/src/web/dist/assets/{badge-BYKFKxPI.js → badge-DMgopDMC.js} +1 -1
  20. package/src/web/dist/assets/{card-BzBD4ugM.js → card-kh1_vqEo.js} +1 -1
  21. package/src/web/dist/assets/{disclosure-DtTSMZlG.js → disclosure-Dpus5Sms.js} +1 -1
  22. package/src/web/dist/assets/{gateway-BGQ7-G-T.js → gateway-DypmM2yK.js} +1 -1
  23. package/src/web/dist/assets/global-CjRN4Kqi.css +1 -0
  24. package/src/web/dist/assets/{label-D10XnuKJ.js → label-Dg8bOG83.js} +1 -1
  25. package/src/web/dist/assets/{landing-CYc---DE.js → landing-CXkPmDBs.js} +1 -1
  26. package/src/web/dist/assets/{metric-card-0Uj1WjoH.js → metric-card-DMOLvKiC.js} +1 -1
  27. package/src/web/dist/assets/package-CKunvygM.js +1 -0
  28. package/src/web/dist/assets/{popover-CVazrITd.js → popover-BPqySDlA.js} +1 -1
  29. package/src/web/dist/assets/{segmented-control-BDDSq6CX.js → segmented-control-C1wXb26c.js} +1 -1
  30. package/src/web/dist/assets/{select-Csn9x4DW.js → select-BMTHg2Ox.js} +1 -1
  31. package/src/web/dist/assets/{shared-Cj-4uVgO.js → shared-BzlaTM1w.js} +1 -1
  32. package/src/web/dist/assets/{switch-CgcoKdbt.js → switch-BjJJ5nhB.js} +1 -1
  33. package/src/web/dist/assets/{table-w41b0TvK.js → table-Cmf9Rq18.js} +1 -1
  34. package/src/web/dist/assets/{tabs-BkwWF2Pt.js → tabs-kDNBpHZ8.js} +1 -1
  35. package/src/web/dist/assets/{useAppMutation-CaROpU2i.js → useAppMutation-CErBrMAz.js} +1 -1
  36. package/src/web/dist/assets/useProviderForm-DruDgLK_.js +1 -0
  37. package/src/web/dist/assets/{utils-CERcr-xC.js → utils-C0ba36BP.js} +1 -1
  38. package/src/web/dist/index.html +3 -3
  39. package/src/web/dist/landing.html +4 -4
  40. package/src/web/dist/assets/ProvidersWorkbench-CQs_hU5D.js +0 -1
  41. package/src/web/dist/assets/app-yrdXegKB.js +0 -61
  42. package/src/web/dist/assets/global-B_aXL20T.css +0 -1
  43. package/src/web/dist/assets/package-CR4pXT18.js +0 -1
  44. package/src/web/dist/assets/useProviderForm-BDM7-9ut.js +0 -1
  45. /package/src/web/dist/assets/{global-CHsQhrWl.js → global-D5dyWHqO.js} +0 -0
@@ -0,0 +1 @@
1
+ *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Archivo,Noto Sans SC,PingFang SC,ui-sans-serif,system-ui,-apple-system,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:Archivo,SF Mono,ui-monospace,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: #f3f2f2;--foreground: #201e1d;--card: #ffffff;--card-foreground: #201e1d;--popover: #ffffff;--popover-foreground: #201e1d;--primary: #ec3013;--primary-foreground: #ffffff;--secondary: #f8f4f4;--secondary-foreground: #201e1d;--muted: #eae7e7;--muted-foreground: #605d5d;--accent: #f8f4f4;--accent-foreground: #201e1d;--destructive: #dd2b0f;--destructive-foreground: #ffffff;--border: #d7d3d3;--input: #d7d3d3;--ring: #ec3013;--radius: 0px;--success: #444141;--success-bg: #eae7e7;--warning: #ae1800;--warning-bg: #ffe0d9;--error: #dd2b0f;--error-bg: #fff2ef;--info: #605d5d;--info-bg: #eae7e7;--chart-1: #ec3013;--chart-2: #ae1800;--chart-3: #ff9783;--chart-4: #444141;--chart-5: #9b9797;--surface-shadow: none;--surface-shadow-lg: none;--surface-border: #d7d3d3;--ease-surface: cubic-bezier(.22, 1, .36, 1)}.dark,[data-theme=dark]{--background: #201e1d;--foreground: #f8f4f4;--card: #2d2b2b;--card-foreground: #f8f4f4;--popover: #2d2b2b;--popover-foreground: #f8f4f4;--primary: #ff563c;--primary-foreground: #201e1d;--secondary: #363333;--secondary-foreground: #f8f4f4;--muted: #444141;--muted-foreground: #d7d3d3;--accent: #363333;--accent-foreground: #f8f4f4;--destructive: #ff563c;--destructive-foreground: #201e1d;--border: #605d5d;--input: #605d5d;--ring: #ff563c;--success: #d7d3d3;--success-bg: #444141;--warning: #ff9783;--warning-bg: #71261b;--error: #ff563c;--error-bg: #7c1405;--info: #d7d3d3;--info-bg: #444141;--chart-1: #ff563c;--chart-2: #ff9783;--chart-3: #ae1800;--chart-4: #d7d3d3;--chart-5: #9b9797;--surface-shadow: none;--surface-shadow-lg: none;--surface-border: #605d5d}*{--tw-border-opacity: 1;border-color:rgb(from var(--border) r g b / var(--tw-border-opacity, 1))}html,body,#root{height:100%;width:100%;overflow-x:hidden}body{--tw-bg-opacity: 1;background-color:rgb(from var(--background) r g b / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(from var(--foreground) r g b / var(--tw-text-opacity, 1));font-family:Archivo,Noto Sans SC,PingFang SC,system-ui,-apple-system,sans-serif;font-variant-numeric:tabular-nums;font-feature-settings:"rlig" 1,"calt" 1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}h1,h2,h3,h4{font-weight:800;letter-spacing:-.015em}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.-right-1{right:-.25rem}.-top-1{top:-.25rem}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.left-0{left:0}.left-2{left:.5rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1\.5{right:.375rem}.right-3{right:.75rem}.right-4{right:1rem}.right-6{right:1.5rem}.top-0{top:0}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-20{top:5rem}.top-3{top:.75rem}.top-4{top:1rem}.top-6{top:1.5rem}.top-\[18\%\]{top:18%}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.m-0{margin:0}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.-ml-0\.5{margin-left:-.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-3{margin-left:.75rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-14{margin-top:3.5rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-3{margin-top:.75rem}.mt-3\.5{margin-top:.875rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-7{margin-top:1.75rem}.mt-9{margin-top:2.25rem}.mt-\[3px\]{margin-top:3px}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-28{height:7rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[1px\]{height:1px}.h-\[220px\]{height:220px}.h-\[280px\]{height:280px}.h-\[30px\]{height:30px}.h-\[320px\]{height:320px}.h-\[36vh\]{height:36vh}.h-\[72px\]{height:72px}.h-\[7px\]{height:7px}.h-\[9px\]{height:9px}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-40{max-height:10rem}.max-h-56{max-height:14rem}.max-h-72{max-height:18rem}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.max-h-\[172px\]{max-height:172px}.max-h-\[400px\]{max-height:400px}.max-h-\[52vh\]{max-height:52vh}.max-h-\[62vh\]{max-height:62vh}.max-h-\[78vh\]{max-height:78vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[min\(28rem\,var\(--radix-popover-content-available-height\)\)\]{max-height:min(28rem,var(--radix-popover-content-available-height))}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-10{min-height:2.5rem}.min-h-\[160px\]{min-height:160px}.min-h-\[180px\]{min-height:180px}.min-h-\[188px\]{min-height:188px}.min-h-\[220px\]{min-height:220px}.min-h-\[240px\]{min-height:240px}.min-h-\[260px\]{min-height:260px}.min-h-\[280px\]{min-height:280px}.min-h-\[320px\]{min-height:320px}.min-h-\[80px\]{min-height:80px}.min-h-screen{min-height:100vh}.w-0\.5{width:.125rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[104px\]{width:104px}.w-\[130px\]{width:130px}.w-\[132px\]{width:132px}.w-\[168px\]{width:168px}.w-\[1px\]{width:1px}.w-\[220px\]{width:220px}.w-\[236px\]{width:236px}.w-\[7px\]{width:7px}.w-\[80px\]{width:80px}.w-\[9px\]{width:9px}.w-\[calc\(100\%-2rem\)\]{width:calc(100% - 2rem)}.w-\[min\(96vw\,1200px\)\]{width:min(96vw,1200px)}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-14{min-width:3.5rem}.min-w-24{min-width:6rem}.min-w-5{min-width:1.25rem}.min-w-\[1180px\]{min-width:1180px}.min-w-\[180px\]{min-width:180px}.min-w-\[2rem\]{min-width:2rem}.min-w-\[8rem\]{min-width:8rem}.min-w-\[980px\]{min-width:980px}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-\[100px\]{max-width:100px}.max-w-\[1200px\]{max-width:1200px}.max-w-\[120px\]{max-width:120px}.max-w-\[1280px\]{max-width:1280px}.max-w-\[180px\]{max-width:180px}.max-w-\[220px\]{max-width:220px}.max-w-\[90px\]{max-width:90px}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-\[1\.15\]{flex:1.15}.flex-shrink-0,.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-left{transform-origin:left}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-x-0{--tw-scale-x: 0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-x-100{--tw-scale-x: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fade-in .2s ease-out}@keyframes live-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.82)}}.animate-live-pulse{animation:live-pulse 2.4s ease-in-out infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[14px_1fr\]{grid-template-columns:14px 1fr}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-3\.5{gap:.875rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-px{gap:1px}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-border>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(from var(--border) r g b / var(--tw-divide-opacity, 1))}.divide-border\/50>:not([hidden])~:not([hidden]){border-color:rgb(from var(--border) r g b / .5)}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl,.rounded-3xl{border-radius:var(--radius)}.rounded-\[3px\]{border-radius:3px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg,.rounded-md,.rounded-sm,.rounded-xl{border-radius:var(--radius)}.rounded-b-xl{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[color\:var\(--surface-border\)\]{border-color:var(--surface-border)}.border-border{--tw-border-opacity: 1;border-color:rgb(from var(--border) r g b / var(--tw-border-opacity, 1))}.border-border\/30{border-color:rgb(from var(--border) r g b / .3)}.border-border\/40{border-color:rgb(from var(--border) r g b / .4)}.border-border\/45{border-color:rgb(from var(--border) r g b / .45)}.border-border\/50{border-color:rgb(from var(--border) r g b / .5)}.border-border\/55{border-color:rgb(from var(--border) r g b / .55)}.border-border\/60{border-color:rgb(from var(--border) r g b / .6)}.border-border\/70{border-color:rgb(from var(--border) r g b / .7)}.border-destructive{--tw-border-opacity: 1;border-color:rgb(from var(--destructive) r g b / var(--tw-border-opacity, 1))}.border-destructive\/15{border-color:rgb(from var(--destructive) r g b / .15)}.border-destructive\/20{border-color:rgb(from var(--destructive) r g b / .2)}.border-destructive\/25{border-color:rgb(from var(--destructive) r g b / .25)}.border-destructive\/30{border-color:rgb(from var(--destructive) r g b / .3)}.border-destructive\/40{border-color:rgb(from var(--destructive) r g b / .4)}.border-destructive\/50{border-color:rgb(from var(--destructive) r g b / .5)}.border-error\/30{border-color:rgb(from var(--error) r g b / .3)}.border-input{--tw-border-opacity: 1;border-color:rgb(from var(--input) r g b / var(--tw-border-opacity, 1))}.border-primary{--tw-border-opacity: 1;border-color:rgb(from var(--primary) r g b / var(--tw-border-opacity, 1))}.border-primary\/10{border-color:rgb(from var(--primary) r g b / .1)}.border-primary\/20{border-color:rgb(from var(--primary) r g b / .2)}.border-primary\/30{border-color:rgb(from var(--primary) r g b / .3)}.border-primary\/40{border-color:rgb(from var(--primary) r g b / .4)}.border-success{--tw-border-opacity: 1;border-color:rgb(from var(--success) r g b / var(--tw-border-opacity, 1))}.border-success\/20{border-color:rgb(from var(--success) r g b / .2)}.border-success\/30{border-color:rgb(from var(--success) r g b / .3)}.border-transparent{border-color:transparent}.border-warning\/30{border-color:rgb(from var(--warning) r g b / .3)}.border-l-error{--tw-border-opacity: 1;border-left-color:rgb(from var(--error) r g b / var(--tw-border-opacity, 1))}.border-l-success{--tw-border-opacity: 1;border-left-color:rgb(from var(--success) r g b / var(--tw-border-opacity, 1))}.border-l-transparent{border-left-color:transparent}.border-l-warning{--tw-border-opacity: 1;border-left-color:rgb(from var(--warning) r g b / var(--tw-border-opacity, 1))}.border-t-transparent{border-top-color:transparent}.bg-accent{--tw-bg-opacity: 1;background-color:rgb(from var(--accent) r g b / var(--tw-bg-opacity, 1))}.bg-background{--tw-bg-opacity: 1;background-color:rgb(from var(--background) r g b / var(--tw-bg-opacity, 1))}.bg-background\/95{background-color:rgb(from var(--background) r g b / .95)}.bg-border{--tw-bg-opacity: 1;background-color:rgb(from var(--border) r g b / var(--tw-bg-opacity, 1))}.bg-border\/55{background-color:rgb(from var(--border) r g b / .55)}.bg-border\/60{background-color:rgb(from var(--border) r g b / .6)}.bg-card{--tw-bg-opacity: 1;background-color:rgb(from var(--card) r g b / var(--tw-bg-opacity, 1))}.bg-destructive{--tw-bg-opacity: 1;background-color:rgb(from var(--destructive) r g b / var(--tw-bg-opacity, 1))}.bg-destructive\/10{background-color:rgb(from var(--destructive) r g b / .1)}.bg-destructive\/5{background-color:rgb(from var(--destructive) r g b / .05)}.bg-error-bg{--tw-bg-opacity: 1;background-color:rgb(from var(--error-bg) r g b / var(--tw-bg-opacity, 1))}.bg-foreground{--tw-bg-opacity: 1;background-color:rgb(from var(--foreground) r g b / var(--tw-bg-opacity, 1))}.bg-info-bg{--tw-bg-opacity: 1;background-color:rgb(from var(--info-bg) r g b / var(--tw-bg-opacity, 1))}.bg-muted{--tw-bg-opacity: 1;background-color:rgb(from var(--muted) r g b / var(--tw-bg-opacity, 1))}.bg-muted-foreground{--tw-bg-opacity: 1;background-color:rgb(from var(--muted-foreground) r g b / var(--tw-bg-opacity, 1))}.bg-muted-foreground\/40{background-color:rgb(from var(--muted-foreground) r g b / .4)}.bg-muted\/30{background-color:rgb(from var(--muted) r g b / .3)}.bg-muted\/50{background-color:rgb(from var(--muted) r g b / .5)}.bg-popover{--tw-bg-opacity: 1;background-color:rgb(from var(--popover) r g b / var(--tw-bg-opacity, 1))}.bg-primary{--tw-bg-opacity: 1;background-color:rgb(from var(--primary) r g b / var(--tw-bg-opacity, 1))}.bg-primary\/10{background-color:rgb(from var(--primary) r g b / .1)}.bg-primary\/15{background-color:rgb(from var(--primary) r g b / .15)}.bg-primary\/40{background-color:rgb(from var(--primary) r g b / .4)}.bg-primary\/5{background-color:rgb(from var(--primary) r g b / .05)}.bg-primary\/\[0\.03\]{background-color:rgb(from var(--primary) r g b / .03)}.bg-secondary{--tw-bg-opacity: 1;background-color:rgb(from var(--secondary) r g b / var(--tw-bg-opacity, 1))}.bg-secondary\/30{background-color:rgb(from var(--secondary) r g b / .3)}.bg-secondary\/40{background-color:rgb(from var(--secondary) r g b / .4)}.bg-secondary\/45{background-color:rgb(from var(--secondary) r g b / .45)}.bg-secondary\/50{background-color:rgb(from var(--secondary) r g b / .5)}.bg-secondary\/55{background-color:rgb(from var(--secondary) r g b / .55)}.bg-secondary\/60{background-color:rgb(from var(--secondary) r g b / .6)}.bg-success{--tw-bg-opacity: 1;background-color:rgb(from var(--success) r g b / var(--tw-bg-opacity, 1))}.bg-success-bg{--tw-bg-opacity: 1;background-color:rgb(from var(--success-bg) r g b / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-warning{--tw-bg-opacity: 1;background-color:rgb(from var(--warning) r g b / var(--tw-bg-opacity, 1))}.bg-warning-bg{--tw-bg-opacity: 1;background-color:rgb(from var(--warning-bg) r g b / var(--tw-bg-opacity, 1))}.fill-current{fill:currentColor}.fill-primary\/5{fill:rgb(from var(--primary) r g b / .05)}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-7{padding:1.75rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-14{padding-top:3.5rem;padding-bottom:3.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-px{padding-top:1px;padding-bottom:1px}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-10{padding-bottom:2.5rem}.pb-2\.5{padding-bottom:.625rem}.pb-20{padding-bottom:5rem}.pb-24{padding-bottom:6rem}.pb-3\.5{padding-bottom:.875rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-6{padding-bottom:1.5rem}.pb-\[env\(safe-area-inset-bottom\)\]{padding-bottom:env(safe-area-inset-bottom)}.pl-4{padding-left:1rem}.pl-8{padding-left:2rem}.pr-1{padding-right:.25rem}.pr-14{padding-right:3.5rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-2{padding-top:.5rem}.pt-2\.5{padding-top:.625rem}.pt-20{padding-top:5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.font-mono{font-family:Archivo,SF Mono,ui-monospace,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[0\.95em\]{font-size:.95em}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.text-\[2\.4rem\]{font-size:2.4rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-8{line-height:2rem}.leading-\[1\.05\]{line-height:1.05}.leading-\[1\.55\]{line-height:1.55}.leading-\[1\.65\]{line-height:1.65}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-\[-0\.01em\]{letter-spacing:-.01em}.tracking-\[-0\.02em\]{letter-spacing:-.02em}.tracking-\[-0\.035em\]{letter-spacing:-.035em}.tracking-\[0\.06em\]{letter-spacing:.06em}.tracking-\[0\.08em\]{letter-spacing:.08em}.tracking-\[0\.16em\]{letter-spacing:.16em}.tracking-\[0\.18em\]{letter-spacing:.18em}.tracking-\[0\.22em\]{letter-spacing:.22em}.tracking-\[0\.34em\]{letter-spacing:.34em}.tracking-\[0\.3em\]{letter-spacing:.3em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{--tw-text-opacity: 1;color:rgb(from var(--accent-foreground) r g b / var(--tw-text-opacity, 1))}.text-background{--tw-text-opacity: 1;color:rgb(from var(--background) r g b / var(--tw-text-opacity, 1))}.text-background\/60{color:rgb(from var(--background) r g b / .6)}.text-background\/80{color:rgb(from var(--background) r g b / .8)}.text-card-foreground{--tw-text-opacity: 1;color:rgb(from var(--card-foreground) r g b / var(--tw-text-opacity, 1))}.text-destructive{--tw-text-opacity: 1;color:rgb(from var(--destructive) r g b / var(--tw-text-opacity, 1))}.text-destructive-foreground{--tw-text-opacity: 1;color:rgb(from var(--destructive-foreground) r g b / var(--tw-text-opacity, 1))}.text-error{--tw-text-opacity: 1;color:rgb(from var(--error) r g b / var(--tw-text-opacity, 1))}.text-foreground{--tw-text-opacity: 1;color:rgb(from var(--foreground) r g b / var(--tw-text-opacity, 1))}.text-foreground\/50{color:rgb(from var(--foreground) r g b / .5)}.text-foreground\/90{color:rgb(from var(--foreground) r g b / .9)}.text-info{--tw-text-opacity: 1;color:rgb(from var(--info) r g b / var(--tw-text-opacity, 1))}.text-muted-foreground{--tw-text-opacity: 1;color:rgb(from var(--muted-foreground) r g b / var(--tw-text-opacity, 1))}.text-muted-foreground\/40{color:rgb(from var(--muted-foreground) r g b / .4)}.text-muted-foreground\/50{color:rgb(from var(--muted-foreground) r g b / .5)}.text-muted-foreground\/60{color:rgb(from var(--muted-foreground) r g b / .6)}.text-muted-foreground\/70{color:rgb(from var(--muted-foreground) r g b / .7)}.text-popover-foreground{--tw-text-opacity: 1;color:rgb(from var(--popover-foreground) r g b / var(--tw-text-opacity, 1))}.text-primary{--tw-text-opacity: 1;color:rgb(from var(--primary) r g b / var(--tw-text-opacity, 1))}.text-primary-foreground{--tw-text-opacity: 1;color:rgb(from var(--primary-foreground) r g b / var(--tw-text-opacity, 1))}.text-primary\/60{color:rgb(from var(--primary) r g b / .6)}.text-primary\/75{color:rgb(from var(--primary) r g b / .75)}.text-primary\/80{color:rgb(from var(--primary) r g b / .8)}.text-secondary-foreground{--tw-text-opacity: 1;color:rgb(from var(--secondary-foreground) r g b / var(--tw-text-opacity, 1))}.text-success{--tw-text-opacity: 1;color:rgb(from var(--success) r g b / var(--tw-text-opacity, 1))}.text-warning{--tw-text-opacity: 1;color:rgb(from var(--warning) r g b / var(--tw-text-opacity, 1))}.line-through{text-decoration-line:line-through}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-primary{accent-color:rgb(from var(--primary) r g b / 1)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[var\(--surface-shadow\)\]{--tw-shadow-color: var(--surface-shadow);--tw-shadow: var(--tw-shadow-colored)}.shadow-\[var\(--surface-shadow-lg\)\]{--tw-shadow-color: var(--surface-shadow-lg);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-border{--tw-ring-opacity: 1;--tw-ring-color: rgb(from var(--border) r g b / var(--tw-ring-opacity, 1))}.ring-destructive\/20{--tw-ring-color: rgb(from var(--destructive) r g b / .2)}.ring-destructive\/30{--tw-ring-color: rgb(from var(--destructive) r g b / .3)}.ring-primary\/20{--tw-ring-color: rgb(from var(--primary) r g b / .2)}.ring-ring{--tw-ring-opacity: 1;--tw-ring-color: rgb(from var(--ring) r g b / var(--tw-ring-opacity, 1))}.ring-warning\/30{--tw-ring-color: rgb(from var(--warning) r g b / .3)}.ring-offset-2{--tw-ring-offset-width: 2px}.ring-offset-background{--tw-ring-offset-color: rgb(from var(--background) r g b / 1)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.duration-160{transition-duration:.16s}.duration-200{transition-duration:.2s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-surface{transition-timing-function:cubic-bezier(.22,1,.36,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.animate-in{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.fade-in,.fade-in-0{--tw-enter-opacity: 0}.zoom-in-95{--tw-enter-scale: .95}.slide-in-from-left{--tw-enter-translate-x: -100%}.slide-in-from-top-2{--tw-enter-translate-y: -.5rem}.duration-150{animation-duration:.15s}.duration-160{animation-duration:.16s}.duration-200{animation-duration:.2s}.ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.ease-surface{animation-timing-function:cubic-bezier(.22,1,.36,1)}.running{animation-play-state:running}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{background:var(--border);border:2px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:var(--muted-foreground);background-clip:content-box}*:focus-visible{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(from var(--primary) r g b / var(--tw-ring-opacity, 1));--tw-ring-offset-width: 2px;--tw-ring-offset-color: rgb(from var(--background) r g b / 1)}::-moz-selection{background:color-mix(in srgb,var(--primary) 30%,transparent)}::selection{background:color-mix(in srgb,var(--primary) 30%,transparent)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fadeIn .2s ease-out}.motion-surface{transition-property:transform,box-shadow,border-color,background-color,color;transition-duration:.16s;transition-timing-function:var(--ease-surface, cubic-bezier(.22, 1, .36, 1))}.metric-number{font-family:Archivo,SF Mono,ui-monospace,monospace;font-variant-numeric:tabular-nums;letter-spacing:-.02em}@media (hover: none) and (pointer: coarse){button,a,[role=button]{min-height:44px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}@keyframes toastIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes toastOut{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.animate-toast-in{animation:toastIn .3s ease-out}.animate-toast-out{animation:toastOut .2s ease-in forwards}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{--tw-text-opacity: 1;color:rgb(from var(--foreground) r g b / var(--tw-text-opacity, 1))}.placeholder\:text-muted-foreground::-moz-placeholder{--tw-text-opacity: 1;color:rgb(from var(--muted-foreground) r g b / var(--tw-text-opacity, 1))}.placeholder\:text-muted-foreground::placeholder{--tw-text-opacity: 1;color:rgb(from var(--muted-foreground) r g b / var(--tw-text-opacity, 1))}.placeholder\:text-muted-foreground\/50::-moz-placeholder{color:rgb(from var(--muted-foreground) r g b / .5)}.placeholder\:text-muted-foreground\/50::placeholder{color:rgb(from var(--muted-foreground) r g b / .5)}.before\:h-1\.5:before{content:var(--tw-content);height:.375rem}.before\:w-1\.5:before{content:var(--tw-content);width:.375rem}@keyframes live-pulse{0%,to{content:var(--tw-content);opacity:1;transform:scale(1)}50%{content:var(--tw-content);opacity:.35;transform:scale(.82)}}.before\:animate-live-pulse:before{content:var(--tw-content);animation:live-pulse 2.4s ease-in-out infinite}.before\:rounded-full:before{content:var(--tw-content);border-radius:9999px}.before\:bg-destructive:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(from var(--destructive) r g b / var(--tw-bg-opacity, 1))}.before\:bg-success:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(from var(--success) r g b / var(--tw-bg-opacity, 1))}.before\:bg-warning:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(from var(--warning) r g b / var(--tw-bg-opacity, 1))}.first\:pt-0:first-child{padding-top:0}.last\:pb-0:last-child{padding-bottom:0}.focus-within\:bg-accent:focus-within{--tw-bg-opacity: 1;background-color:rgb(from var(--accent) r g b / var(--tw-bg-opacity, 1))}.hover\:-translate-y-0\.5:hover{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-border\/60:hover{border-color:rgb(from var(--border) r g b / .6)}.hover\:border-primary:hover{--tw-border-opacity: 1;border-color:rgb(from var(--primary) r g b / var(--tw-border-opacity, 1))}.hover\:border-primary\/20:hover{border-color:rgb(from var(--primary) r g b / .2)}.hover\:border-primary\/40:hover{border-color:rgb(from var(--primary) r g b / .4)}.hover\:bg-accent:hover{--tw-bg-opacity: 1;background-color:rgb(from var(--accent) r g b / var(--tw-bg-opacity, 1))}.hover\:bg-accent\/50:hover{background-color:rgb(from var(--accent) r g b / .5)}.hover\:bg-background:hover{--tw-bg-opacity: 1;background-color:rgb(from var(--background) r g b / var(--tw-bg-opacity, 1))}.hover\:bg-destructive\/10:hover{background-color:rgb(from var(--destructive) r g b / .1)}.hover\:bg-destructive\/90:hover{background-color:rgb(from var(--destructive) r g b / .9)}.hover\:bg-muted:hover{--tw-bg-opacity: 1;background-color:rgb(from var(--muted) r g b / var(--tw-bg-opacity, 1))}.hover\:bg-muted\/30:hover{background-color:rgb(from var(--muted) r g b / .3)}.hover\:bg-muted\/40:hover{background-color:rgb(from var(--muted) r g b / .4)}.hover\:bg-muted\/50:hover{background-color:rgb(from var(--muted) r g b / .5)}.hover\:bg-primary\/5:hover{background-color:rgb(from var(--primary) r g b / .05)}.hover\:bg-primary\/90:hover{background-color:rgb(from var(--primary) r g b / .9)}.hover\:bg-secondary:hover{--tw-bg-opacity: 1;background-color:rgb(from var(--secondary) r g b / var(--tw-bg-opacity, 1))}.hover\:bg-secondary\/45:hover{background-color:rgb(from var(--secondary) r g b / .45)}.hover\:bg-secondary\/50:hover{background-color:rgb(from var(--secondary) r g b / .5)}.hover\:bg-secondary\/80:hover{background-color:rgb(from var(--secondary) r g b / .8)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:text-destructive:hover{--tw-text-opacity: 1;color:rgb(from var(--destructive) r g b / var(--tw-text-opacity, 1))}.hover\:text-foreground:hover{--tw-text-opacity: 1;color:rgb(from var(--foreground) r g b / var(--tw-text-opacity, 1))}.hover\:text-primary:hover{--tw-text-opacity: 1;color:rgb(from var(--primary) r g b / var(--tw-text-opacity, 1))}.hover\:text-primary\/80:hover{color:rgb(from var(--primary) r g b / .8)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[var\(--surface-shadow-lg\)\]:hover{--tw-shadow-color: var(--surface-shadow-lg);--tw-shadow: var(--tw-shadow-colored)}.focus\:not-sr-only:focus{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.focus\:absolute:focus{position:absolute}.focus\:z-50:focus{z-index:50}.focus\:m-4:focus{margin:1rem}.focus\:rounded-md:focus{border-radius:var(--radius)}.focus\:bg-accent:focus{--tw-bg-opacity: 1;background-color:rgb(from var(--accent) r g b / var(--tw-bg-opacity, 1))}.focus\:bg-accent\/80:focus{background-color:rgb(from var(--accent) r g b / .8)}.focus\:bg-primary:focus{--tw-bg-opacity: 1;background-color:rgb(from var(--primary) r g b / var(--tw-bg-opacity, 1))}.focus\:px-4:focus{padding-left:1rem;padding-right:1rem}.focus\:py-2:focus{padding-top:.5rem;padding-bottom:.5rem}.focus\:text-accent-foreground:focus{--tw-text-opacity: 1;color:rgb(from var(--accent-foreground) r g b / var(--tw-text-opacity, 1))}.focus\:text-primary-foreground:focus{--tw-text-opacity: 1;color:rgb(from var(--primary-foreground) r g b / var(--tw-text-opacity, 1))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(from var(--ring) r g b / var(--tw-ring-opacity, 1))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-primary:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(from var(--primary) r g b / var(--tw-ring-opacity, 1))}.focus-visible\:ring-ring:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(from var(--ring) r g b / var(--tw-ring-opacity, 1))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: rgb(from var(--background) r g b / 1)}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[open] .group-open\:bg-primary\/10{background-color:rgb(from var(--primary) r g b / .1)}.group[open] .group-open\:text-primary{--tw-text-opacity: 1;color:rgb(from var(--primary) r g b / var(--tw-text-opacity, 1))}.group:hover .group-hover\:translate-x-0\.5{--tw-translate-x: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-destructive\/20{border-color:rgb(from var(--destructive) r g b / .2)}.group.destructive .group-\[\.destructive\]\:text-destructive{--tw-text-opacity: 1;color:rgb(from var(--destructive) r g b / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:hover\:border-destructive\/30:hover{border-color:rgb(from var(--destructive) r g b / .3)}.group.destructive .group-\[\.destructive\]\:hover\:bg-destructive\/10:hover{background-color:rgb(from var(--destructive) r g b / .1)}.group.destructive .group-\[\.destructive\]\:hover\:text-destructive:hover{--tw-text-opacity: 1;color:rgb(from var(--destructive) r g b / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-destructive:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(from var(--destructive) r g b / var(--tw-ring-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-destructive:focus{--tw-ring-offset-color: rgb(from var(--destructive) r g b / 1)}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled],.data-\[state\=closed\]\:pointer-events-none[data-state=closed]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x: 1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x: var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x: var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=active\]\:border-primary[data-state=active]{--tw-border-opacity: 1;border-color:rgb(from var(--primary) r g b / var(--tw-border-opacity, 1))}.data-\[selected\=true\]\:bg-secondary[data-selected=true]{--tw-bg-opacity: 1;background-color:rgb(from var(--secondary) r g b / var(--tw-bg-opacity, 1))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{--tw-bg-opacity: 1;background-color:rgb(from var(--primary) r g b / var(--tw-bg-opacity, 1))}.data-\[state\=open\]\:bg-accent\/80[data-state=open]{background-color:rgb(from var(--accent) r g b / .8)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{--tw-bg-opacity: 1;background-color:rgb(from var(--muted) r g b / var(--tw-bg-opacity, 1))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{--tw-bg-opacity: 1;background-color:rgb(from var(--input) r g b / var(--tw-bg-opacity, 1))}.data-\[state\=active\]\:font-semibold[data-state=active]{font-weight:600}.data-\[selected\=true\]\:text-foreground[data-selected=true],.data-\[state\=active\]\:text-foreground[data-state=active]{--tw-text-opacity: 1;color:rgb(from var(--foreground) r g b / var(--tw-text-opacity, 1))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.data-\[state\=closed\]\:animate-out[data-state=closed],.data-\[swipe\=end\]\:animate-out[data-swipe=end]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0}.data-\[state\=closed\]\:fade-out-80[data-state=closed]{--tw-exit-opacity: .8}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y: -.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x: .5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x: -.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y: .5rem}.data-\[state\=closed\]\:slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x: -50%}.data-\[state\=closed\]\:slide-out-to-right-full[data-state=closed]{--tw-exit-translate-x: 100%}.data-\[state\=closed\]\:slide-out-to-top-\[12\%\][data-state=closed]{--tw-exit-translate-y: -12%}.data-\[state\=closed\]\:slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y: -48%}.data-\[state\=open\]\:slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x: -50%}.data-\[state\=open\]\:slide-in-from-top-\[12\%\][data-state=open]{--tw-enter-translate-y: -12%}.data-\[state\=open\]\:slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y: -48%}.data-\[state\=open\]\:slide-in-from-top-full[data-state=open]{--tw-enter-translate-y: -100%}.data-\[state\=inactive\]\:hover\:text-foreground:hover[data-state=inactive]{--tw-text-opacity: 1;color:rgb(from var(--foreground) r g b / var(--tw-text-opacity, 1))}@media (min-width: 640px){.sm\:bottom-0{bottom:0}.sm\:right-0{right:0}.sm\:top-auto{top:auto}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mt-2\.5{margin-top:.625rem}.sm\:inline{display:inline}.sm\:inline-flex{display:inline-flex}.sm\:h-8{height:2rem}.sm\:w-56{width:14rem}.sm\:w-64{width:16rem}.sm\:w-8{width:2rem}.sm\:w-9{width:2.25rem}.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.sm\:flex-row{flex-direction:row}.sm\:flex-col{flex-direction:column}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:self-auto{align-self:auto}.sm\:justify-self-end{justify-self:end}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3\.5{padding:.875rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:text-left{text-align:left}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\:text-6xl{font-size:3.75rem;line-height:1}.sm\:text-\[13px\]{font-size:13px}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}.sm\:leading-5{line-height:1.25rem}.data-\[state\=open\]\:sm\:slide-in-from-bottom-full[data-state=open]{--tw-enter-translate-y: 100%}}@media (min-width: 768px){.md\:col-span-2{grid-column:span 2 / span 2}.md\:block{display:block}.md\:flex{display:flex}.md\:inline-flex{display:inline-flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:w-56{width:14rem}.md\:w-\[200px\]{width:200px}.md\:w-auto{width:auto}.md\:max-w-\[420px\]{max-width:420px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-wrap{flex-wrap:wrap}.md\:items-start{align-items:flex-start}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:px-0{padding-left:0;padding-right:0}.md\:pb-4{padding-bottom:1rem}}@media (min-width: 1024px){.lg\:mx-0{margin-left:0;margin-right:0}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:h-full{height:100%}.lg\:w-auto{width:auto}.lg\:max-w-3xl{max-width:48rem}.lg\:shrink{flex-shrink:1}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-\[1\.2fr_auto\]{grid-template-columns:1.2fr auto}.lg\:grid-cols-\[1fr_auto_1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr auto 1fr}.lg\:grid-cols-\[200px_minmax\(0\,1fr\)_288px\]{grid-template-columns:200px minmax(0,1fr) 288px}.lg\:grid-cols-\[280px_minmax\(0\,1fr\)\]{grid-template-columns:280px minmax(0,1fr)}.lg\:grid-cols-\[minmax\(0\,1\.05fr\)_minmax\(0\,0\.95fr\)\]{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr)}.lg\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.lg\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,0\.85fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,.85fr)}.lg\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1\.05fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr)}.lg\:grid-cols-\[minmax\(0\,1fr\)_minmax\(400px\,0\.8fr\)\]{grid-template-columns:minmax(0,1fr) minmax(400px,.8fr)}.lg\:flex-row{flex-direction:row}.lg\:flex-col{flex-direction:column}.lg\:flex-wrap{flex-wrap:wrap}.lg\:items-start{align-items:flex-start}.lg\:items-end{align-items:flex-end}.lg\:items-center{align-items:center}.lg\:items-stretch{align-items:stretch}.lg\:justify-end{justify-content:flex-end}.lg\:justify-between{justify-content:space-between}.lg\:gap-1{gap:.25rem}.lg\:overflow-visible{overflow:visible}.lg\:border-b-0{border-bottom-width:0px}.lg\:border-r{border-right-width:1px}.lg\:p-10{padding:2.5rem}.lg\:px-10{padding-left:2.5rem;padding-right:2.5rem}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:py-24{padding-top:6rem;padding-bottom:6rem}.lg\:pb-0{padding-bottom:0}.lg\:pt-28{padding-top:7rem}.lg\:text-right{text-align:right}}@media (min-width: 1280px){.xl\:sticky{position:sticky}.xl\:top-4{top:1rem}.xl\:block{display:block}.xl\:hidden{display:none}.xl\:w-auto{width:auto}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-\[200px_1fr\]{grid-template-columns:200px 1fr}.xl\:grid-cols-\[208px_minmax\(0\,1fr\)\]{grid-template-columns:208px minmax(0,1fr)}.xl\:grid-cols-\[minmax\(0\,0\.9fr\)_minmax\(0\,1\.1fr\)\]{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}.xl\:grid-cols-\[minmax\(0\,1\.15fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr)}.xl\:grid-cols-\[minmax\(0\,1\.35fr\)_minmax\(320px\,0\.85fr\)\]{grid-template-columns:minmax(0,1.35fr) minmax(320px,.85fr)}.xl\:grid-cols-\[minmax\(0\,1fr\)_280px\]{grid-template-columns:minmax(0,1fr) 280px}.xl\:flex-row{flex-direction:row}.xl\:flex-nowrap{flex-wrap:nowrap}.xl\:items-start{align-items:flex-start}.xl\:items-center{align-items:center}}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>svg\]\:size-4>svg{width:1rem;height:1rem}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-\[10px\] [cmdk-group-heading]{font-size:10px}.\[\&_\[cmdk-group-heading\]\]\:font-semibold [cmdk-group-heading]{font-weight:600}.\[\&_\[cmdk-group-heading\]\]\:uppercase [cmdk-group-heading]{text-transform:uppercase}.\[\&_\[cmdk-group-heading\]\]\:tracking-wider [cmdk-group-heading]{letter-spacing:.05em}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{--tw-text-opacity: 1;color:rgb(from var(--muted-foreground) r g b / var(--tw-text-opacity, 1))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-1\.5 [cmdk-group]{padding-left:.375rem;padding-right:.375rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-4 [cmdk-input-wrapper] svg{height:1rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-4 [cmdk-input-wrapper] svg{width:1rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-2 [cmdk-item]{padding-top:.5rem;padding-bottom:.5rem}.\[\&_\[cmdk-item\]_svg\]\:h-4 [cmdk-item] svg{height:1rem}.\[\&_\[cmdk-item\]_svg\]\:w-4 [cmdk-item] svg{width:1rem}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}.\[\&_tr\]\:border-border tr{--tw-border-opacity: 1;border-color:rgb(from var(--border) r g b / var(--tw-border-opacity, 1))}
@@ -1 +1 @@
1
- import{r as s,j as t}from"./vendor-CITafuNQ.js";import{c as i}from"./global-CHsQhrWl.js";const l=s.forwardRef(({className:e,type:r,...o},a)=>t.jsx("input",{type:r,className:i("flex h-9 w-full rounded-lg border border-border bg-card px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground",e),ref:a,...o}));l.displayName="Input";const d=s.forwardRef(({className:e,...r},o)=>t.jsx("label",{ref:o,className:i("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",e),...r}));d.displayName="Label";export{l as I,d as L};
1
+ import{r as s,j as t}from"./vendor-CITafuNQ.js";import{c as i}from"./global-D5dyWHqO.js";const l=s.forwardRef(({className:e,type:r,...o},a)=>t.jsx("input",{type:r,className:i("flex h-9 w-full rounded-lg border border-border bg-card px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground",e),ref:a,...o}));l.displayName="Input";const d=s.forwardRef(({className:e,...r},o)=>t.jsx("label",{ref:o,className:i("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",e),...r}));d.displayName="Label";export{l as I,d as L};
@@ -1,4 +1,4 @@
1
- import{B as v,c as g}from"./global-CHsQhrWl.js";import{r as u,j as e,a4 as O,a9 as L,aa as N,ab as p,ac as b,ad as j,P as K,ae as T,af as P,ag as R,ah as E,ai as D,aj as q,ak as k,a8 as U,q as B}from"./vendor-CITafuNQ.js";import{c as A}from"./clipboard-BnAnBk_-.js";import{p as G}from"./package-CR4pXT18.js";const S="/assets/live-dashboard-B7vLOY_S.png",_="/assets/live-logs-PRpgTV6S.png",F="/assets/live-model-management-xkBDeuLk.png",W="/assets/live-api-keys-CJUuaCev.png",C="/assets/live-en-dashboard-CJoX7IQT.png",Y="/assets/live-en-logs-BGGL53ab.png",H="/assets/live-en-model-management-BpjNblfR.png",$="/assets/live-en-api-keys-Bx8N-eoh.png",w=G.version,Q=(o,a)=>a[o],t={nav:{why:{zh:"现状",en:"The mess"},how:{zh:"怎么用",en:"How"},debug:{zh:"排查",en:"Debug"},local:{zh:"本地优先",en:"Local-first"},start:{zh:"开始",en:"Start"},faq:{zh:"FAQ",en:"FAQ"}},ctaConsole:{zh:"打开控制台",en:"Open console"},ctaInstall:{zh:"立即安装",en:"Install now"},ctaPreview:{zh:"看看控制台长什么样",en:"Preview the console"},hero:{badge:{zh:"v"+w+" · Rust 内核 · 完全开源",en:"v"+w+" · Rust core · Open source"},h1Top:{zh:"你的 API Key",en:"Your API key"},h1Bottom:{zh:"不该躺在 30 个 .env 里",en:"shouldn’t live in 30 .env files"},lead:{zh:"cc-gw 在你的机器上跑一个本地网关。Claude Code、OpenAI SDK、Anthropic SDK 全部指向同一个地址。换模型、换 provider、查日志,再也不用翻业务代码。",en:"cc-gw runs a small gateway right on your machine. Point Claude Code, the OpenAI SDK, and the Anthropic SDK at one address — then swap models, switch providers, and trace requests without touching your app code."},note:{zh:"不需要本机有 Rust 环境,npm 自动拉对应平台的预编译二进制。",en:"No Rust toolchain needed — npm pulls the right prebuilt binary for your platform."},proof:[{zh:"一条命令装好,本机就能跑",en:"One command to install, runs on your laptop"},{zh:"客户端只改 baseURL,不动业务逻辑",en:"Clients only change baseURL — your code stays put"},{zh:"所有数据都在 ~/.cc-gw 下,不走云",en:"Everything lives under ~/.cc-gw — nothing leaves your box"}],works:{zh:"已经在以下客户端里跑通",en:"Tested with"}},why:{eyebrow:{zh:"现状",en:"The mess"},title:{zh:"AI 接进来不难,难的是接进来之后",en:"Wiring up AI is easy. Living with it isn’t."},description:{zh:"你大概率已经踩过下面这三件事里的至少两件。这就是为什么有了 cc-gw。",en:"You’ve probably hit at least two of these. That’s why cc-gw exists."},cards:[{title:{zh:"Key 散在各个 .env 里",en:"Keys scattered across .env files"},body:{zh:"每个项目自己一份 baseURL、自己一份 key、自己一份模型名。时间一长,没人敢动,也没人记得清。",en:"Every project keeps its own baseURL, its own key, its own model name. Six months in, nobody dares touch it."},sample:`OPENAI_BASE_URL=https://...
1
+ import{B as v,c as g}from"./global-D5dyWHqO.js";import{r as u,j as e,a4 as O,a9 as L,aa as N,ab as p,ac as b,ad as j,P as K,ae as T,af as P,ag as R,ah as E,ai as D,aj as q,ak as k,a8 as U,q as B}from"./vendor-CITafuNQ.js";import{c as A}from"./clipboard-BnAnBk_-.js";import{p as G}from"./package-CKunvygM.js";const S="/assets/live-dashboard-B7vLOY_S.png",_="/assets/live-logs-PRpgTV6S.png",F="/assets/live-model-management-xkBDeuLk.png",W="/assets/live-api-keys-CJUuaCev.png",C="/assets/live-en-dashboard-CJoX7IQT.png",Y="/assets/live-en-logs-BGGL53ab.png",H="/assets/live-en-model-management-BpjNblfR.png",$="/assets/live-en-api-keys-Bx8N-eoh.png",w=G.version,Q=(o,a)=>a[o],t={nav:{why:{zh:"现状",en:"The mess"},how:{zh:"怎么用",en:"How"},debug:{zh:"排查",en:"Debug"},local:{zh:"本地优先",en:"Local-first"},start:{zh:"开始",en:"Start"},faq:{zh:"FAQ",en:"FAQ"}},ctaConsole:{zh:"打开控制台",en:"Open console"},ctaInstall:{zh:"立即安装",en:"Install now"},ctaPreview:{zh:"看看控制台长什么样",en:"Preview the console"},hero:{badge:{zh:"v"+w+" · Rust 内核 · 完全开源",en:"v"+w+" · Rust core · Open source"},h1Top:{zh:"你的 API Key",en:"Your API key"},h1Bottom:{zh:"不该躺在 30 个 .env 里",en:"shouldn’t live in 30 .env files"},lead:{zh:"cc-gw 在你的机器上跑一个本地网关。Claude Code、OpenAI SDK、Anthropic SDK 全部指向同一个地址。换模型、换 provider、查日志,再也不用翻业务代码。",en:"cc-gw runs a small gateway right on your machine. Point Claude Code, the OpenAI SDK, and the Anthropic SDK at one address — then swap models, switch providers, and trace requests without touching your app code."},note:{zh:"不需要本机有 Rust 环境,npm 自动拉对应平台的预编译二进制。",en:"No Rust toolchain needed — npm pulls the right prebuilt binary for your platform."},proof:[{zh:"一条命令装好,本机就能跑",en:"One command to install, runs on your laptop"},{zh:"客户端只改 baseURL,不动业务逻辑",en:"Clients only change baseURL — your code stays put"},{zh:"所有数据都在 ~/.cc-gw 下,不走云",en:"Everything lives under ~/.cc-gw — nothing leaves your box"}],works:{zh:"已经在以下客户端里跑通",en:"Tested with"}},why:{eyebrow:{zh:"现状",en:"The mess"},title:{zh:"AI 接进来不难,难的是接进来之后",en:"Wiring up AI is easy. Living with it isn’t."},description:{zh:"你大概率已经踩过下面这三件事里的至少两件。这就是为什么有了 cc-gw。",en:"You’ve probably hit at least two of these. That’s why cc-gw exists."},cards:[{title:{zh:"Key 散在各个 .env 里",en:"Keys scattered across .env files"},body:{zh:"每个项目自己一份 baseURL、自己一份 key、自己一份模型名。时间一长,没人敢动,也没人记得清。",en:"Every project keeps its own baseURL, its own key, its own model name. Six months in, nobody dares touch it."},sample:`OPENAI_BASE_URL=https://...
2
2
  ANTHROPIC_API_KEY=sk-ant-...
3
3
  MODEL=gpt-4o-2024-08-06`},{title:{zh:"出错只能猜",en:"Debugging is just guessing"},body:{zh:"是 payload 错?协议不对?上游挂了?key 被收回了?没有统一日志,只能 curl 一遍试一遍。",en:"Bad payload? Wrong protocol? Upstream down? Key revoked? Without one log to look at, you curl your way through every theory."},sample:`$ curl ... 401
4
4
  # 是 key 过期?还是 endpoint 写错了?
@@ -1 +1 @@
1
- import{r as g,j as t,aU as y,aV as N}from"./vendor-CITafuNQ.js";import{c as M}from"./card-BzBD4ugM.js";import{c as d}from"./global-CHsQhrWl.js";const $=e=>1-Math.pow(1-e,3);function R(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}const A=e=>Math.round(e).toLocaleString();function F({value:e,duration:i=600,format:n=A,className:s}){const r=g.useRef(R()).current,[u,m]=g.useState(e),o=g.useRef(e),a=g.useRef(void 0);return g.useEffect(()=>{const c=o.current,l=e;if(o.current=e,r||!Number.isFinite(l)||c===l){m(l);return}const x=performance.now(),f=p=>{const h=Math.min(1,(p-x)/i);m(c+(l-c)*$(h)),h<1&&(a.current=requestAnimationFrame(f))};return a.current=requestAnimationFrame(f),()=>{a.current!==void 0&&cancelAnimationFrame(a.current)}},[e,i,r]),t.jsx("span",{className:s,children:n(u)})}const L={sm:{wrap:"p-3.5",value:"text-xl",label:"text-[11px]",body:"mt-1"},md:{wrap:"p-5",value:"text-2xl",label:"text-xs",body:"mt-2"},lg:{wrap:"p-5",value:"text-3xl",label:"text-xs",body:"mt-2.5"}};function C(e,i){if(!e||e.length<2)return null;const n=100,s=28,r=Math.min(...e),m=Math.max(...e)-r||1,o=n/(e.length-1),c=`M ${e.map((x,f)=>{const p=f*o,h=s-(x-r)/m*(s-4)-2;return`${p.toFixed(2)},${h.toFixed(2)}`}).join(" L ")}`,l=`${c} L ${n},${s} L 0,${s} Z`;return t.jsxs("svg",{viewBox:`0 0 ${n} ${s}`,preserveAspectRatio:"none","aria-hidden":!0,className:"h-8 w-full",children:[t.jsx("path",{d:l,className:"fill-primary/5"}),t.jsx("path",{d:c,fill:"none",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",className:d(i)})]})}function k({delta:e}){const i=e.value>=0,n=!e.invertColor,s=i===n,r=e.format?e.format(e.value):`${e.value>0?"+":""}${e.value}`,u=i?y:N;return t.jsxs("span",{className:d("inline-flex items-center gap-0.5 px-1.5 py-0.5 text-[11px] font-medium",s?"bg-success-bg text-success":"bg-error-bg text-error"),children:[t.jsx(u,{className:"h-3 w-3","aria-hidden":!0}),r]})}function U({label:e,value:i,rawValue:n,format:s,suffix:r,icon:u,delta:m,sparkline:o,hint:a,size:c="md",featured:l=!1,dotClassName:x,className:f,valueTestId:p,interactive:h=!0,style:w}){const j=L[c],b=n!==void 0?t.jsx(F,{value:n,format:s}):i,v=(o==null?void 0:o.strokeClassName)??"text-primary/60";return t.jsxs("div",{className:d(M({variant:h?"interactive":"default"}),"motion-surface relative flex flex-col",j.wrap,l&&"bg-primary/[0.03]",f),style:w,children:[t.jsxs("div",{className:"flex items-center gap-2",children:[x?t.jsx("span",{className:d("h-[7px] w-[7px] rounded-full",x),"aria-hidden":!0}):null,u?t.jsx("span",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-lg bg-secondary text-muted-foreground",children:u}):null,t.jsx("span",{className:d("font-medium uppercase tracking-wider text-muted-foreground",j.label),children:e})]}),t.jsxs("div",{className:d("flex items-end gap-2",j.body),children:[t.jsxs("span",{...p?{"data-testid":p}:{},className:d("metric-number font-semibold tracking-tight text-foreground",j.value),children:[b,r?t.jsx("span",{className:"ml-0.5 text-sm font-medium text-muted-foreground",children:r}):null]}),m?t.jsx(k,{delta:m}):null]}),a?t.jsx("p",{className:"mt-1.5 text-xs text-muted-foreground/70",children:a}):null,o?t.jsx("div",{className:"mt-2.5",children:C(o.data,v)}):null]})}export{U as M};
1
+ import{r as g,j as t,aU as y,aV as N}from"./vendor-CITafuNQ.js";import{c as M}from"./card-kh1_vqEo.js";import{c as d}from"./global-D5dyWHqO.js";const $=e=>1-Math.pow(1-e,3);function R(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}const A=e=>Math.round(e).toLocaleString();function F({value:e,duration:i=600,format:n=A,className:s}){const r=g.useRef(R()).current,[u,m]=g.useState(e),o=g.useRef(e),a=g.useRef(void 0);return g.useEffect(()=>{const c=o.current,l=e;if(o.current=e,r||!Number.isFinite(l)||c===l){m(l);return}const x=performance.now(),f=p=>{const h=Math.min(1,(p-x)/i);m(c+(l-c)*$(h)),h<1&&(a.current=requestAnimationFrame(f))};return a.current=requestAnimationFrame(f),()=>{a.current!==void 0&&cancelAnimationFrame(a.current)}},[e,i,r]),t.jsx("span",{className:s,children:n(u)})}const L={sm:{wrap:"p-3.5",value:"text-xl",label:"text-[11px]",body:"mt-1"},md:{wrap:"p-5",value:"text-2xl",label:"text-xs",body:"mt-2"},lg:{wrap:"p-5",value:"text-3xl",label:"text-xs",body:"mt-2.5"}};function C(e,i){if(!e||e.length<2)return null;const n=100,s=28,r=Math.min(...e),m=Math.max(...e)-r||1,o=n/(e.length-1),c=`M ${e.map((x,f)=>{const p=f*o,h=s-(x-r)/m*(s-4)-2;return`${p.toFixed(2)},${h.toFixed(2)}`}).join(" L ")}`,l=`${c} L ${n},${s} L 0,${s} Z`;return t.jsxs("svg",{viewBox:`0 0 ${n} ${s}`,preserveAspectRatio:"none","aria-hidden":!0,className:"h-8 w-full",children:[t.jsx("path",{d:l,className:"fill-primary/5"}),t.jsx("path",{d:c,fill:"none",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",className:d(i)})]})}function k({delta:e}){const i=e.value>=0,n=!e.invertColor,s=i===n,r=e.format?e.format(e.value):`${e.value>0?"+":""}${e.value}`,u=i?y:N;return t.jsxs("span",{className:d("inline-flex items-center gap-0.5 px-1.5 py-0.5 text-[11px] font-medium",s?"bg-success-bg text-success":"bg-error-bg text-error"),children:[t.jsx(u,{className:"h-3 w-3","aria-hidden":!0}),r]})}function U({label:e,value:i,rawValue:n,format:s,suffix:r,icon:u,delta:m,sparkline:o,hint:a,size:c="md",featured:l=!1,dotClassName:x,className:f,valueTestId:p,interactive:h=!0,style:w}){const j=L[c],b=n!==void 0?t.jsx(F,{value:n,format:s}):i,v=(o==null?void 0:o.strokeClassName)??"text-primary/60";return t.jsxs("div",{className:d(M({variant:h?"interactive":"default"}),"motion-surface relative flex flex-col",j.wrap,l&&"bg-primary/[0.03]",f),style:w,children:[t.jsxs("div",{className:"flex items-center gap-2",children:[x?t.jsx("span",{className:d("h-[7px] w-[7px] rounded-full",x),"aria-hidden":!0}):null,u?t.jsx("span",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-lg bg-secondary text-muted-foreground",children:u}):null,t.jsx("span",{className:d("font-medium uppercase tracking-wider text-muted-foreground",j.label),children:e})]}),t.jsxs("div",{className:d("flex items-end gap-2",j.body),children:[t.jsxs("span",{...p?{"data-testid":p}:{},className:d("metric-number font-semibold tracking-tight text-foreground",j.value),children:[b,r?t.jsx("span",{className:"ml-0.5 text-sm font-medium text-muted-foreground",children:r}):null]}),m?t.jsx(k,{delta:m}):null]}),a?t.jsx("p",{className:"mt-1.5 text-xs text-muted-foreground/70",children:a}):null,o?t.jsx("div",{className:"mt-2.5",children:C(o.data,v)}):null]})}export{U as M};
@@ -0,0 +1 @@
1
+ const o="0.10.2",s={version:o};export{s as p};
@@ -1 +1 @@
1
- import{r as n,j as o}from"./vendor-CITafuNQ.js";import{p as i,q as p,r as c,s as t,A as m}from"./radix-Bux_1C5J.js";import{c as l}from"./global-CHsQhrWl.js";const x=i,b=p,h=m,f=n.forwardRef(({className:a,align:e="center",sideOffset:r=4,...s},d)=>o.jsx(c,{children:o.jsx(t,{ref:d,align:e,sideOffset:r,className:l("z-50 w-72 rounded-xl border border-[color:var(--surface-border)] bg-popover p-4 text-popover-foreground shadow-[var(--surface-shadow-lg)] outline-none data-[state=open]:animate-in data-[state=closed]:pointer-events-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",a),...s})}));f.displayName=t.displayName;export{x as P,b as a,f as b,h as c};
1
+ import{r as n,j as o}from"./vendor-CITafuNQ.js";import{p as i,q as p,r as c,s as t,A as m}from"./radix-Bux_1C5J.js";import{c as l}from"./global-D5dyWHqO.js";const x=i,b=p,h=m,f=n.forwardRef(({className:a,align:e="center",sideOffset:r=4,...s},d)=>o.jsx(c,{children:o.jsx(t,{ref:d,align:e,sideOffset:r,className:l("z-50 w-72 rounded-xl border border-[color:var(--surface-border)] bg-popover p-4 text-popover-foreground shadow-[var(--surface-shadow-lg)] outline-none data-[state=open]:animate-in data-[state=closed]:pointer-events-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",a),...s})}));f.displayName=t.displayName;export{x as P,b as a,f as b,h as c};
@@ -1 +1 @@
1
- import{j as t}from"./vendor-CITafuNQ.js";import{c as a}from"./global-CHsQhrWl.js";function x({value:n,onChange:s,options:i,className:l,block:o,"aria-label":m}){return t.jsx("div",{role:"group","aria-label":m,className:a("flex items-center gap-1 bg-secondary p-1",l),children:i.map(e=>{const r=e.value===n;return t.jsxs("button",{type:"button",onClick:()=>s(e.value),"aria-pressed":r,className:a("inline-flex h-8 items-center justify-center gap-1.5 whitespace-nowrap px-3.5 text-xs font-medium transition-all",o?"flex-1":"shrink-0",r?"bg-primary text-primary-foreground":"text-muted-foreground hover:bg-primary/5 hover:text-foreground"),children:[e.icon,e.label]},e.value)})})}export{x as S};
1
+ import{j as t}from"./vendor-CITafuNQ.js";import{c as a}from"./global-D5dyWHqO.js";function x({value:n,onChange:s,options:i,className:l,block:o,"aria-label":m}){return t.jsx("div",{role:"group","aria-label":m,className:a("flex items-center gap-1 bg-secondary p-1",l),children:i.map(e=>{const r=e.value===n;return t.jsxs("button",{type:"button",onClick:()=>s(e.value),"aria-pressed":r,className:a("inline-flex h-8 items-center justify-center gap-1.5 whitespace-nowrap px-3.5 text-xs font-medium transition-all",o?"flex-1":"shrink-0",r?"bg-primary text-primary-foreground":"text-muted-foreground hover:bg-primary/5 hover:text-foreground"),children:[e.icon,e.label]},e.value)})})}export{x as S};
@@ -1 +1 @@
1
- import{r as o,j as e,aj as d,$ as g,ar as N}from"./vendor-CITafuNQ.js";import{B as w,V as j,E as n,F as b,G as S,H as i,J as v,K as c,M as R,N as C,Q as m,U as p,W as f,X as u}from"./radix-Bux_1C5J.js";import{c as r}from"./global-CHsQhrWl.js";const k=w,L=j,I=o.forwardRef(({className:s,children:t,...a},l)=>e.jsxs(n,{ref:l,className:r("flex h-9 w-full items-center justify-between rounded-lg border border-border bg-card px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",s),...a,children:[t,e.jsx(b,{asChild:!0,children:e.jsx(d,{className:"h-4 w-4 opacity-50"})})]}));I.displayName=n.displayName;const x=o.forwardRef(({className:s,...t},a)=>e.jsx(m,{ref:a,className:r("flex cursor-default items-center justify-center py-1",s),...t,children:e.jsx(N,{className:"h-4 w-4"})}));x.displayName=m.displayName;const h=o.forwardRef(({className:s,...t},a)=>e.jsx(p,{ref:a,className:r("flex cursor-default items-center justify-center py-1",s),...t,children:e.jsx(d,{className:"h-4 w-4"})}));h.displayName=p.displayName;const B=o.forwardRef(({className:s,children:t,position:a="popper",...l},y)=>e.jsx(S,{children:e.jsxs(i,{ref:y,className:r("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-lg border border-border bg-popover text-popover-foreground shadow-[var(--surface-shadow-lg)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",a==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",s),position:a,...l,children:[e.jsx(x,{}),e.jsx(v,{className:r("p-2",a==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:t}),e.jsx(h,{})]})}));B.displayName=i.displayName;const U=o.forwardRef(({className:s,...t},a)=>e.jsx(f,{ref:a,className:r("py-1.5 pl-8 pr-2 text-sm font-semibold",s),...t}));U.displayName=f.displayName;const V=o.forwardRef(({className:s,children:t,...a},l)=>e.jsxs(c,{ref:l,className:r("relative flex w-full cursor-default select-none items-center rounded-md py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",s),...a,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(R,{children:e.jsx(g,{className:"h-4 w-4"})})}),e.jsx(C,{children:t})]}));V.displayName=c.displayName;const z=o.forwardRef(({className:s,...t},a)=>e.jsx(u,{ref:a,className:r("-mx-1 my-1 h-px bg-border",s),...t}));z.displayName=u.displayName;export{k as S,I as a,L as b,B as c,V as d};
1
+ import{r as o,j as e,aj as d,$ as g,ar as N}from"./vendor-CITafuNQ.js";import{B as w,V as j,E as n,F as b,G as S,H as i,J as v,K as c,M as R,N as C,Q as m,U as p,W as f,X as u}from"./radix-Bux_1C5J.js";import{c as r}from"./global-D5dyWHqO.js";const k=w,L=j,I=o.forwardRef(({className:s,children:t,...a},l)=>e.jsxs(n,{ref:l,className:r("flex h-9 w-full items-center justify-between rounded-lg border border-border bg-card px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",s),...a,children:[t,e.jsx(b,{asChild:!0,children:e.jsx(d,{className:"h-4 w-4 opacity-50"})})]}));I.displayName=n.displayName;const x=o.forwardRef(({className:s,...t},a)=>e.jsx(m,{ref:a,className:r("flex cursor-default items-center justify-center py-1",s),...t,children:e.jsx(N,{className:"h-4 w-4"})}));x.displayName=m.displayName;const h=o.forwardRef(({className:s,...t},a)=>e.jsx(p,{ref:a,className:r("flex cursor-default items-center justify-center py-1",s),...t,children:e.jsx(d,{className:"h-4 w-4"})}));h.displayName=p.displayName;const B=o.forwardRef(({className:s,children:t,position:a="popper",...l},y)=>e.jsx(S,{children:e.jsxs(i,{ref:y,className:r("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-lg border border-border bg-popover text-popover-foreground shadow-[var(--surface-shadow-lg)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",a==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",s),position:a,...l,children:[e.jsx(x,{}),e.jsx(v,{className:r("p-2",a==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:t}),e.jsx(h,{})]})}));B.displayName=i.displayName;const U=o.forwardRef(({className:s,...t},a)=>e.jsx(f,{ref:a,className:r("py-1.5 pl-8 pr-2 text-sm font-semibold",s),...t}));U.displayName=f.displayName;const V=o.forwardRef(({className:s,children:t,...a},l)=>e.jsxs(c,{ref:l,className:r("relative flex w-full cursor-default select-none items-center rounded-md py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",s),...a,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(R,{children:e.jsx(g,{className:"h-4 w-4"})})}),e.jsx(C,{children:t})]}));V.displayName=c.displayName;const z=o.forwardRef(({className:s,...t},a)=>e.jsx(u,{ref:a,className:r("-mx-1 my-1 h-px bg-border",s),...t}));z.displayName=u.displayName;export{k as S,I as a,L as b,B as c,V as d};
@@ -1 +1 @@
1
- import{r as p,j as e}from"./vendor-CITafuNQ.js";import{c as u,q as m}from"./app-yrdXegKB.js";import{a as b}from"./apiKeys-CdpEo7b1.js";import{u as x}from"./i18n-PeX9kBVO.js";const j=[{value:1,labelKey:"apiKeys.analytics.range.today"},{value:7,labelKey:"apiKeys.analytics.range.week"},{value:30,labelKey:"apiKeys.analytics.range.month"}];function v(){var s;const l=[{id:"anthropic",label:"Anthropic"},{id:"openai",label:"OpenAI"}],t=u(m.customEndpoints.all(),b.customEndpointOptionsRequest());return p.useMemo(()=>{var n;const a=(((n=t.data)==null?void 0:n.endpoints)??[]).map(o=>({id:o.id,label:o.label||o.id}));return[...l,...a]},[(s=t.data)==null?void 0:s.endpoints])}function N({available:l,hint:t,onChange:s,selected:a}){const{t:n}=x(),o=a.length===0,i=()=>{s([])},c=r=>{if(a.includes(r)){s(a.filter(d=>d!==r));return}s([...a,r])};return e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"rounded-lg border border-border bg-secondary px-3 py-3 text-xs text-muted-foreground",children:t}),e.jsxs("label",{className:"flex cursor-pointer items-center gap-2 rounded-lg border border-border bg-card px-3 py-2.5 transition-colors hover:border-primary/20 hover:bg-accent/50",children:[e.jsx("input",{type:"checkbox",checked:o,onChange:i,className:"h-4 w-4 rounded border-input accent-primary"}),e.jsx("span",{className:"text-sm font-medium",children:n("apiKeys.allEndpoints")})]}),e.jsx("div",{className:"grid max-h-40 gap-1 overflow-y-auto",children:l.map(r=>e.jsxs("label",{className:"flex cursor-pointer items-center gap-2 rounded-lg border border-border bg-card px-3 py-2.5 transition-colors hover:border-primary/20 hover:bg-accent/50",children:[e.jsx("input",{type:"checkbox",checked:!o&&a.includes(r.id),onChange:()=>c(r.id),className:"h-4 w-4 rounded border-input accent-primary"}),e.jsx("span",{className:"text-sm",children:r.label}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:["(",r.id,")"]})]},r.id))})]})}export{N as E,j as R,v as u};
1
+ import{r as p,j as e}from"./vendor-CITafuNQ.js";import{c as u,q as m}from"./app-DmrDy3E3.js";import{a as b}from"./apiKeys-Dvp0S9i6.js";import{u as x}from"./i18n-PeX9kBVO.js";const j=[{value:1,labelKey:"apiKeys.analytics.range.today"},{value:7,labelKey:"apiKeys.analytics.range.week"},{value:30,labelKey:"apiKeys.analytics.range.month"}];function v(){var s;const l=[{id:"anthropic",label:"Anthropic"},{id:"openai",label:"OpenAI"}],t=u(m.customEndpoints.all(),b.customEndpointOptionsRequest());return p.useMemo(()=>{var n;const a=(((n=t.data)==null?void 0:n.endpoints)??[]).map(o=>({id:o.id,label:o.label||o.id}));return[...l,...a]},[(s=t.data)==null?void 0:s.endpoints])}function N({available:l,hint:t,onChange:s,selected:a}){const{t:n}=x(),o=a.length===0,i=()=>{s([])},c=r=>{if(a.includes(r)){s(a.filter(d=>d!==r));return}s([...a,r])};return e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"rounded-lg border border-border bg-secondary px-3 py-3 text-xs text-muted-foreground",children:t}),e.jsxs("label",{className:"flex cursor-pointer items-center gap-2 rounded-lg border border-border bg-card px-3 py-2.5 transition-colors hover:border-primary/20 hover:bg-accent/50",children:[e.jsx("input",{type:"checkbox",checked:o,onChange:i,className:"h-4 w-4 rounded border-input accent-primary"}),e.jsx("span",{className:"text-sm font-medium",children:n("apiKeys.allEndpoints")})]}),e.jsx("div",{className:"grid max-h-40 gap-1 overflow-y-auto",children:l.map(r=>e.jsxs("label",{className:"flex cursor-pointer items-center gap-2 rounded-lg border border-border bg-card px-3 py-2.5 transition-colors hover:border-primary/20 hover:bg-accent/50",children:[e.jsx("input",{type:"checkbox",checked:!o&&a.includes(r.id),onChange:()=>c(r.id),className:"h-4 w-4 rounded border-input accent-primary"}),e.jsx("span",{className:"text-sm",children:r.label}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:["(",r.id,")"]})]},r.id))})]})}export{N as E,j as R,v as u};
@@ -1 +1 @@
1
- import{r as i,j as e}from"./vendor-CITafuNQ.js";import{y as s,z as n}from"./radix-Bux_1C5J.js";import{c as r}from"./global-CHsQhrWl.js";const c=i.forwardRef(({className:t,...a},o)=>e.jsx(s,{className:r("peer inline-flex h-7 w-12 shrink-0 cursor-pointer items-center rounded-full border border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",t),...a,ref:o,children:e.jsx(n,{className:r("pointer-events-none block h-6 w-6 rounded-full bg-background ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})}));c.displayName=s.displayName;export{c as S};
1
+ import{r as i,j as e}from"./vendor-CITafuNQ.js";import{y as s,z as n}from"./radix-Bux_1C5J.js";import{c as r}from"./global-D5dyWHqO.js";const c=i.forwardRef(({className:t,...a},o)=>e.jsx(s,{className:r("peer inline-flex h-7 w-12 shrink-0 cursor-pointer items-center rounded-full border border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",t),...a,ref:o,children:e.jsx(n,{className:r("pointer-events-none block h-6 w-6 rounded-full bg-background ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})}));c.displayName=s.displayName;export{c as S};
@@ -1 +1 @@
1
- import{_ as r}from"./charts-react-BQP6-BFp.js";import{u as d,i as m,a as b,b as i,c,d as f,f as n,g as p}from"./charts-core-BTTtAoo-.js";import{r as l,j as t}from"./vendor-CITafuNQ.js";import{c as o}from"./global-CHsQhrWl.js";d([m,b,i,c,f,n,p]);const _=r,x=l.forwardRef(({className:a,...e},s)=>t.jsx("div",{className:"relative w-full overflow-auto",children:t.jsx("table",{ref:s,className:o("w-full caption-bottom border-collapse text-sm",a),...e})}));x.displayName="Table";const u=l.forwardRef(({className:a,...e},s)=>t.jsx("thead",{ref:s,className:o("[&_tr]:border-b [&_tr]:border-border",a),...e}));u.displayName="TableHeader";const N=l.forwardRef(({className:a,...e},s)=>t.jsx("tbody",{ref:s,className:o("[&_tr:last-child]:border-0",a),...e}));N.displayName="TableBody";const T=l.forwardRef(({className:a,...e},s)=>t.jsx("tfoot",{ref:s,className:o("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",a),...e}));T.displayName="TableFooter";const w=l.forwardRef(({className:a,...e},s)=>t.jsx("tr",{ref:s,className:o("border-b border-border transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted group",a),...e}));w.displayName="TableRow";const y=l.forwardRef(({className:a,...e},s)=>t.jsx("th",{ref:s,className:o("h-10 px-4 text-left align-middle text-xs font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",a),...e}));y.displayName="TableHead";const h=l.forwardRef(({className:a,...e},s)=>t.jsx("td",{ref:s,className:o("px-4 py-3 align-middle text-sm [&:has([role=checkbox])]:pr-0",a),...e}));h.displayName="TableCell";const j=l.forwardRef(({className:a,...e},s)=>t.jsx("caption",{ref:s,className:o("mt-4 text-sm text-muted-foreground",a),...e}));j.displayName="TableCaption";export{_ as E,x as T,u as a,w as b,y as c,N as d,h as e};
1
+ import{_ as r}from"./charts-react-BQP6-BFp.js";import{u as d,i as m,a as b,b as i,c,d as f,f as n,g as p}from"./charts-core-BTTtAoo-.js";import{r as l,j as t}from"./vendor-CITafuNQ.js";import{c as o}from"./global-D5dyWHqO.js";d([m,b,i,c,f,n,p]);const _=r,x=l.forwardRef(({className:a,...e},s)=>t.jsx("div",{className:"relative w-full overflow-auto",children:t.jsx("table",{ref:s,className:o("w-full caption-bottom border-collapse text-sm",a),...e})}));x.displayName="Table";const u=l.forwardRef(({className:a,...e},s)=>t.jsx("thead",{ref:s,className:o("[&_tr]:border-b [&_tr]:border-border",a),...e}));u.displayName="TableHeader";const N=l.forwardRef(({className:a,...e},s)=>t.jsx("tbody",{ref:s,className:o("[&_tr:last-child]:border-0",a),...e}));N.displayName="TableBody";const T=l.forwardRef(({className:a,...e},s)=>t.jsx("tfoot",{ref:s,className:o("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",a),...e}));T.displayName="TableFooter";const w=l.forwardRef(({className:a,...e},s)=>t.jsx("tr",{ref:s,className:o("border-b border-border transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted group",a),...e}));w.displayName="TableRow";const y=l.forwardRef(({className:a,...e},s)=>t.jsx("th",{ref:s,className:o("h-10 px-4 text-left align-middle text-xs font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",a),...e}));y.displayName="TableHead";const h=l.forwardRef(({className:a,...e},s)=>t.jsx("td",{ref:s,className:o("px-4 py-3 align-middle text-sm [&:has([role=checkbox])]:pr-0",a),...e}));h.displayName="TableCell";const j=l.forwardRef(({className:a,...e},s)=>t.jsx("caption",{ref:s,className:o("mt-4 text-sm text-muted-foreground",a),...e}));j.displayName="TableCaption";export{_ as E,x as T,u as a,w as b,y as c,N as d,h as e};
@@ -1 +1 @@
1
- import{r as a,j as i}from"./vendor-CITafuNQ.js";import{t as c,u as o,v as n,w as f}from"./radix-Bux_1C5J.js";import{c as r}from"./global-CHsQhrWl.js";const u=c,d=a.forwardRef(({className:e,...s},t)=>i.jsx(o,{ref:t,className:r("inline-flex h-9 items-center gap-1 border-b border-border text-muted-foreground",e),...s}));d.displayName=o.displayName;const b=a.forwardRef(({className:e,...s},t)=>i.jsx(n,{ref:t,className:r("inline-flex items-center justify-center whitespace-nowrap border-b-2 border-transparent px-3 pb-2.5 pt-2 text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:border-primary data-[state=active]:text-foreground data-[state=active]:font-semibold data-[state=inactive]:hover:text-foreground",e),...s}));b.displayName=n.displayName;const l=a.forwardRef(({className:e,...s},t)=>i.jsx(f,{ref:t,className:r("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",e),...s}));l.displayName=f.displayName;export{u as T,d as a,b,l as c};
1
+ import{r as a,j as i}from"./vendor-CITafuNQ.js";import{t as c,u as o,v as n,w as f}from"./radix-Bux_1C5J.js";import{c as r}from"./global-D5dyWHqO.js";const u=c,d=a.forwardRef(({className:e,...s},t)=>i.jsx(o,{ref:t,className:r("inline-flex h-9 items-center gap-1 border-b border-border text-muted-foreground",e),...s}));d.displayName=o.displayName;const b=a.forwardRef(({className:e,...s},t)=>i.jsx(n,{ref:t,className:r("inline-flex items-center justify-center whitespace-nowrap border-b-2 border-transparent px-3 pb-2.5 pt-2 text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:border-primary data-[state=active]:text-foreground data-[state=active]:font-semibold data-[state=inactive]:hover:text-foreground",e),...s}));b.displayName=n.displayName;const l=a.forwardRef(({className:e,...s},t)=>i.jsx(f,{ref:t,className:r("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",e),...s}));l.displayName=f.displayName;export{u as T,d as a,b,l as c};
@@ -1 +1 @@
1
- import{a as o,b as q}from"./query-DZF7K6hv.js";import{a as x,t as y}from"./app-yrdXegKB.js";function j({mutationFn:C,successToast:u,errorToast:p,invalidateKeys:n,onSuccess:m,onError:f,...M}){const Q=o(),{pushToast:A}=x();return q({...M,mutationFn:async t=>{try{return await C(t)}catch(a){throw y(a)}},onSuccess:async(t,a,w,h)=>{n!=null&&n.length&&await Promise.all(n.map(g=>Q.invalidateQueries({queryKey:g})));const i=u==null?void 0:u(t,a);i&&A({...i,variant:"success"}),await(m==null?void 0:m(t,a,w,h))},onError:async(t,a,w,h)=>{const i=p==null?void 0:p(t,a);i&&A({...i,variant:"error"}),await(f==null?void 0:f(t,a,w,h))}})}export{j as u};
1
+ import{a as o,b as q}from"./query-DZF7K6hv.js";import{a as x,t as y}from"./app-DmrDy3E3.js";function j({mutationFn:C,successToast:u,errorToast:p,invalidateKeys:n,onSuccess:m,onError:f,...M}){const Q=o(),{pushToast:A}=x();return q({...M,mutationFn:async t=>{try{return await C(t)}catch(a){throw y(a)}},onSuccess:async(t,a,w,h)=>{n!=null&&n.length&&await Promise.all(n.map(g=>Q.invalidateQueries({queryKey:g})));const i=u==null?void 0:u(t,a);i&&A({...i,variant:"success"}),await(m==null?void 0:m(t,a,w,h))},onError:async(t,a,w,h)=>{const i=p==null?void 0:p(t,a);i&&A({...i,variant:"error"}),await(f==null?void 0:f(t,a,w,h))}})}export{j as u};
@@ -0,0 +1 @@
1
+ import{r as S,j as s,$ as oe}from"./vendor-CITafuNQ.js";import{u as ce}from"./query-DZF7K6hv.js";import{a as ue,c as me,q as J,e as pe,i as P,d as I,B as E}from"./app-DmrDy3E3.js";import{g as he}from"./gateway-DypmM2yK.js";import{u as O}from"./i18n-PeX9kBVO.js";import{c as H}from"./global-D5dyWHqO.js";import{D as W}from"./disclosure-Dpus5Sms.js";import{L as M,I as C}from"./label-Dg8bOG83.js";import{S as xe,a as fe,b as be,c as ge,d as B}from"./select-BMTHg2Ox.js";import{S as F}from"./switch-BjJJ5nhB.js";import{B as ve}from"./badge-DMgopDMC.js";const Ge=["claude-sonnet-4-5-20250929","claude-sonnet-4-5-20250929-thinking","claude-sonnet-4-20250514","claude-opus-4-1-20250805","claude-opus-4-1-20250805-thinking","claude-haiku-4-5-20251001","claude-haiku-4-5-20251001-thinking","claude-3-5-haiku-20241022"],Qe=["gpt-4o-mini","gpt-4o","o4-mini","o4-large","gpt-5-codex"];function ye(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Math.random().toString(36).slice(2,10)}function T(e,r){var t;return(t=e==null?void 0:e.customEndpoints)!=null&&t.length?e.customEndpoints:r}function z(e){return e?Object.entries(e).map(([r,t])=>({id:ye(),source:r,target:t})):[]}function Je(e,r){var a,n,h;if(!e)return{};const t={},i=e.endpointRouting??{};t.anthropic=z(((a=i.anthropic)==null?void 0:a.modelRoutes)??e.modelRoutes??{}),t.openai=z(((n=i.openai)==null?void 0:n.modelRoutes)??{});for(const u of T(e,r))(h=u.routing)!=null&&h.modelRoutes?t[u.id]=z(u.routing.modelRoutes):t[u.id]=[];return t}function je(e,r,t){var n,h,u;const i=T(e,r).find(y=>y.id===t);if(i)return((n=i.routing)==null?void 0:n.modelRoutes)??{};const a=e.endpointRouting??{};return t==="anthropic"?((h=a.anthropic)==null?void 0:h.modelRoutes)??e.modelRoutes??{}:t==="openai"?((u=a.openai)==null?void 0:u.modelRoutes)??{}:{}}function q(e,r,t){var a,n,h;if(t==="anthropic"||t==="openai")return((n=(a=e.endpointRouting)==null?void 0:a[t])==null?void 0:n.defaults)??e.defaults;const i=T(e,r).find(u=>u.id===t);return((h=i==null?void 0:i.routing)==null?void 0:h.defaults)??{completion:null,reasoning:null,background:null,longContextThreshold:e.defaults.longContextThreshold}}function Xe(e,r){if(!e)return{};const t={anthropic:q(e,r,"anthropic"),openai:q(e,r,"openai")};for(const i of T(e,r))t[i.id]=q(e,r,i.id);return t}function Ne(e){const r={};for(const t of e){const i=t.source.trim(),a=t.target.trim();i&&a&&(r[i]=a)}return r}function Ye(e,r){return JSON.stringify(Ne(e))!==JSON.stringify(r)}function We(e,r,t){var a,n,h;if(!r)return;if(e==="anthropic"||e==="openai")return(n=(a=r.endpointRouting)==null?void 0:a[e])==null?void 0:n.compatibility;const i=T(r,t).find(u=>u.id===e);return(h=i==null?void 0:i.routing)==null?void 0:h.compatibility}function Ze(e,r){var i,a;const t={anthropic:((i=e.routingPresets)==null?void 0:i.anthropic)??[],openai:((a=e.routingPresets)==null?void 0:a.openai)??[]};for(const n of T(e,r))t[n.id]=n.routingPresets??[];return t}function we(e,r){const t=[{key:"providers",label:e("modelManagement.tabs.providers"),description:e("modelManagement.tabs.providersDesc"),isSystem:!0,canDelete:!1},{key:"anthropic",label:e("modelManagement.tabs.anthropic"),description:e("modelManagement.tabs.anthropicDesc"),isSystem:!0,canDelete:!1,protocols:["anthropic"]},{key:"openai",label:e("modelManagement.tabs.openai"),description:e("modelManagement.tabs.openaiDesc"),isSystem:!0,canDelete:!1,protocols:["openai-auto","openai-chat","openai-responses"]}],i=r.map(a=>{let n=e("modelManagement.tabs.customEndpoint"),h=[];if(a.paths&&a.paths.length>0)n=`${e("modelManagement.tabs.customEndpoint")}: ${a.paths.map(u=>`${u.path} (${u.protocol})`).join(", ")}`,h=[...new Set(a.paths.map(u=>u.protocol))];else if(a.path){const u=a.protocol||"anthropic";n=`${e("modelManagement.tabs.customEndpoint")}: ${a.path} (${u})`,h=[u]}return{key:a.id,label:a.label||a.id,description:n,isSystem:!1,canDelete:a.deletable!==!1,protocols:h}});return[...t,...i]}function es(e){return e.label&&e.label.trim().length>0?`${e.label} (${e.id})`:e.id}function Se(e,r){if(!e)return!1;const[t]=e.split(":");return t===r||e===r}function Me(e,r,t){if(!e)return[];const i=["anthropic","openai",...T(e,r).map(n=>n.id)],a=[];for(const n of i){const h=je(e,r,n);for(const[u,y]of Object.entries(h))Se(y,t)&&a.push({endpoint:n,source:u,target:y})}return a}function ss(e,r,t){return Me(e,r,t).length}function rs(){var N;const{t:e}=O(),{pushToast:r}=ue(),t=me(J.config.full(),he.configRequest()),i=ce({queryKey:J.customEndpoints.all(),queryFn:pe.list,refetchInterval:1e4}),a=S.useMemo(()=>{var g;return((g=i.data)==null?void 0:g.endpoints)??[]},[(N=i.data)==null?void 0:N.endpoints]),n=S.useMemo(()=>we(e,a),[a,e]),[h,u]=S.useState(null);return S.useEffect(()=>{t.data&&u(t.data)},[t.data]),S.useEffect(()=>{!t.isError||!t.error||r({title:e("providers.toast.loadFailure",{message:t.error.message}),variant:"error"})},[t.error,t.isError,r,e]),{t:e,pushToast:r,config:h,setConfig:u,configQuery:t,customEndpoints:a,customEndpointsQuery:i,tabs:n,ensureConfig:()=>h?!0:(r({title:e("settings.toast.missingConfig"),variant:"error"}),t.refetch(),!1)}}const as={savePreset(e,r){return P(I.post(`/api/routing-presets/${e}`,{name:r}))},applyPreset(e,r){return P(I.post(`/api/routing-presets/${e}/apply`,{name:r}))},deletePreset(e,r){return P(I.delete(`/api/routing-presets/${e}/${encodeURIComponent(r)}`))},testProvider(e,r){return P(I.post(`/api/providers/${e}/test`,r??{}))},probeModels(e,r){return P(I.post(`/api/providers/${e}/models/probe`,r?{provider:r}:{}))}},ke={complete:"border-primary bg-primary text-primary-foreground",current:"border-primary bg-card text-primary ring-2 ring-primary/20",error:"border-destructive bg-card text-destructive ring-2 ring-destructive/20",upcoming:"border-border bg-card text-muted-foreground"},Ue={complete:"text-foreground",current:"text-foreground font-medium",error:"text-destructive font-medium",upcoming:"text-muted-foreground"};function ts({steps:e,current:r,onSelect:t,className:i}){return s.jsx("nav",{"aria-label":"steps",className:H("flex items-start",i),children:e.map((a,n)=>{const h=t&&(a.status==="complete"||a.status==="current"),u=n===e.length-1,y=a.status==="complete"?"bg-primary/40":"bg-border",N=s.jsx("span",{className:H("motion-surface flex h-7 w-7 shrink-0 items-center justify-center rounded-lg border text-xs font-semibold",ke[a.status]),"aria-current":a.id===r?"step":void 0,children:a.status==="complete"?s.jsx(oe,{className:"h-3.5 w-3.5","aria-hidden":!0}):n+1}),g=`stepnav-${a.id}-label`;return s.jsxs("div",{className:"flex flex-1 items-start",children:[s.jsxs("div",{className:"flex min-w-0 flex-col items-center gap-1.5",children:[h?s.jsx("button",{type:"button",onClick:()=>t==null?void 0:t(a.id),"aria-labelledby":g,className:"rounded-lg outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background motion-surface",children:N}):N,s.jsx("span",{id:g,className:H("text-center text-[11px] leading-tight",Ue[a.status]),children:a.label})]}),u?null:s.jsx("span",{"aria-hidden":!0,className:H("mx-1.5 mt-3.5 h-px flex-1",y)})]},a.id)})})}function Ce({result:e,className:r}){const{t}=O();return s.jsxs("div",{className:H("flex flex-wrap items-center gap-2 rounded-lg px-3 py-2 text-xs",e.ok?"bg-success-bg text-success":"bg-destructive/10 text-destructive",r),children:[s.jsx(ve,{variant:e.ok?"success":"destructive",className:"shrink-0",children:e.ok?t("workbench.testResult.success"):t("workbench.testResult.failure")}),e.status?s.jsx("span",{className:"shrink-0",children:t("workbench.testResult.status",{status:e.status})}):null,e.durationMs?s.jsx("span",{className:"shrink-0",children:t("workbench.testResult.duration",{duration:`${e.durationMs} ms`})}):null,e.message?s.jsx("span",{className:"min-w-0 truncate",title:e.message,children:e.message}):null]})}function V(){return typeof globalThis.crypto<"u"&&typeof globalThis.crypto.randomUUID=="function"?globalThis.crypto.randomUUID():Math.random().toString(36).slice(2,10)}function X(){return{_key:V(),id:"",label:""}}function Re(){return{_key:V(),name:"",value:""}}const _={openai:{baseUrl:"https://api.openai.com/v1"},deepseek:{baseUrl:"https://api.deepseek.com/v1"},huawei:{baseUrl:"https://api.modelarts-maas.com/v1"},kimi:{baseUrl:"https://api.moonshot.cn/v1"},anthropic:{baseUrl:"https://api.anthropic.com/v1"},custom:{}},Te=[{value:"openai",label:"OpenAI"},{value:"deepseek",label:"DeepSeek"},{value:"huawei",label:"Huawei Cloud"},{value:"kimi",label:"Kimi"},{value:"anthropic",label:"Anthropic"},{value:"custom",label:"Custom"}],ds=[{id:"basics",labelKey:"providers.drawer.steps.basics"},{id:"models",labelKey:"providers.drawer.steps.modelsVerify"}];function $(e){return e==="anthropic"?"authToken":"apiKey"}function Ee(e,r,t){return t(r==="authToken"?"providers.drawer.fields.authModeAuthToken":r==="xAuthToken"?"providers.drawer.fields.authModeXAuthToken":e==="anthropic"?"providers.drawer.fields.authModeApiKey":"providers.drawer.fields.authModeProviderDefault")}function Y(e){return e?{id:e.id,label:e.label??e.id,baseUrl:e.baseUrl,apiKey:e.apiKey??"",type:e.type??"custom",defaultModel:e.defaultModel??"",models:(e.models??[]).map(r=>({...r,_key:V()})),authMode:e.authMode??$(e.type??"custom"),nonStreamViaStream:e.nonStreamViaStream??!1,useAbsoluteUrl:e.useAbsoluteUrl??!1,streamUsage:e.streamUsage===!0,extraHeaders:Object.entries(e.extraHeaders??{}).map(([r,t])=>({name:r,value:t,_key:V()}))}:{id:"",label:"",baseUrl:"",apiKey:"",type:"custom",defaultModel:"",models:[],authMode:$("custom"),nonStreamViaStream:!1,useAbsoluteUrl:!1,streamUsage:!1,extraHeaders:[]}}function He(e){return{_key:V(),id:e.id,label:e.label,nonStreamViaStream:e.nonStreamViaStream}}function ls({form:e,errors:r,isCreate:t,advancedOpen:i,onAdvancedOpenChange:a,idInputRef:n,onProviderIdChange:h,onFieldChange:u,onTypeChange:y,onAuthModeChange:N,onNonStreamViaStreamChange:g,onUseAbsoluteUrlChange:k,onStreamUsageChange:m,onAddHeader:A,onRemoveHeader:j,onHeaderChange:w}){const{t:o}=O();return s.jsxs("div",{className:"space-y-8",children:[s.jsxs("section",{className:"space-y-5","aria-labelledby":"provider-type-fields",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("h3",{id:"provider-type-fields",className:"text-sm font-semibold",children:o("providers.drawer.sections.type")}),s.jsx("p",{className:"text-xs text-muted-foreground",children:o("providers.drawer.hints.type")})]}),s.jsx("div",{className:"grid gap-2 md:grid-cols-3",children:Te.map(b=>{var U;const R=b.value===e.type;return s.jsxs("button",{type:"button",onClick:()=>y(b.value),className:H("rounded-2xl border px-4 py-3 text-left transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",R?"border-primary bg-primary/10 text-primary":"border-border bg-card text-foreground hover:border-primary/20 hover:bg-accent/50"),children:[s.jsx("div",{className:"text-sm font-semibold",children:b.label}),s.jsx("div",{className:"mt-1 text-xs text-muted-foreground",children:((U=_[b.value??"custom"])==null?void 0:U.baseUrl)??o("providers.drawer.hints.customProvider")})]},b.value??"custom")})})]}),s.jsxs("section",{className:"space-y-4","aria-labelledby":"provider-basic-info",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("h3",{id:"provider-basic-info",className:"text-sm font-semibold",children:o("providers.drawer.sections.basic")}),s.jsx("p",{className:"text-xs text-muted-foreground",children:o("providers.drawer.hints.basic")})]}),s.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[s.jsxs(M,{className:"flex flex-col gap-2 text-sm",children:[s.jsx("span",{className:"text-xs text-muted-foreground",children:o("providers.drawer.fields.id")}),s.jsx(C,{value:e.id,ref:n,onChange:b=>h(b.target.value),disabled:!t,placeholder:o("providers.drawer.fields.idPlaceholder"),"aria-invalid":!!r.id}),r.id?s.jsx("span",{className:"text-xs text-destructive",children:r.id}):null]}),s.jsxs(M,{className:"flex flex-col gap-2 text-sm",children:[s.jsx("span",{className:"text-xs text-muted-foreground",children:o("providers.drawer.fields.label")}),s.jsx(C,{value:e.label,onChange:b=>u("label")(b.target.value),placeholder:o("providers.drawer.fields.labelPlaceholder")})]})]}),s.jsxs(M,{className:"flex flex-col gap-2 text-sm",children:[s.jsx("span",{className:"text-xs text-muted-foreground",children:o("providers.drawer.fields.baseUrl")}),s.jsx(C,{value:e.baseUrl,onChange:b=>u("baseUrl")(b.target.value),placeholder:o("providers.drawer.fields.baseUrlPlaceholder"),"aria-invalid":!!r.baseUrl}),r.baseUrl?s.jsx("span",{className:"text-xs text-destructive",children:r.baseUrl}):null]})]}),s.jsxs("section",{className:"space-y-4","aria-labelledby":"provider-auth-fields",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("h3",{id:"provider-auth-fields",className:"text-sm font-semibold",children:o("providers.drawer.sections.auth")}),s.jsx("p",{className:"text-xs text-muted-foreground",children:o("providers.drawer.hints.auth")})]}),s.jsxs(M,{className:"flex flex-col gap-2 text-sm",children:[s.jsx("span",{className:"text-xs text-muted-foreground",children:o("providers.drawer.fields.apiKey")}),s.jsx(C,{value:e.apiKey,onChange:b=>u("apiKey")(b.target.value),placeholder:o("providers.drawer.fields.apiKeyPlaceholder")})]}),s.jsxs("fieldset",{className:"grid gap-2 rounded-xl border border-transparent bg-card p-4 text-xs shadow-[var(--surface-shadow)]",children:[s.jsx("legend",{className:"px-1 text-muted-foreground",children:o("providers.drawer.fields.authMode")}),s.jsx("p",{className:"text-[11px] text-muted-foreground",children:o("providers.drawer.fields.authModeHint")}),s.jsxs("label",{className:"flex cursor-pointer items-start gap-3 rounded-xl border border-transparent px-3 py-2 transition hover:bg-accent focus-within:bg-accent",children:[s.jsx("input",{type:"radio",name:"provider-auth-mode",value:"apiKey",checked:e.authMode==="apiKey",onChange:()=>N("apiKey"),className:"mt-0.5 h-4 w-4 accent-primary"}),s.jsx("span",{children:Ee(e.type,"apiKey",o)})]}),s.jsxs("label",{className:"flex cursor-pointer items-start gap-3 rounded-xl border border-transparent px-3 py-2 transition hover:bg-accent focus-within:bg-accent",children:[s.jsx("input",{type:"radio",name:"provider-auth-mode",value:"authToken",checked:e.authMode==="authToken",onChange:()=>N("authToken"),className:"mt-0.5 h-4 w-4 accent-primary"}),s.jsx("span",{children:o("providers.drawer.fields.authModeAuthToken")})]}),s.jsxs("label",{className:"flex cursor-pointer items-start gap-3 rounded-xl border border-transparent px-3 py-2 transition hover:bg-accent focus-within:bg-accent",children:[s.jsx("input",{type:"radio",name:"provider-auth-mode",value:"xAuthToken",checked:e.authMode==="xAuthToken",onChange:()=>N("xAuthToken"),className:"mt-0.5 h-4 w-4 accent-primary"}),s.jsx("span",{children:o("providers.drawer.fields.authModeXAuthToken")})]})]}),s.jsxs(W,{open:i,onOpenChange:a,summary:o("providers.drawer.fields.advancedOptions"),className:"rounded-xl border border-transparent bg-card shadow-[var(--surface-shadow)]",summaryClassName:"px-4 py-3 text-sm font-medium",contentClassName:"border-t border-border px-4 py-4",children:[s.jsxs("div",{className:"flex items-start justify-between gap-4",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("p",{className:"text-sm font-medium",children:o("providers.drawer.fields.nonStreamViaStream")}),s.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground",children:o("providers.drawer.fields.nonStreamViaStreamHint")})]}),s.jsx(F,{checked:e.nonStreamViaStream,onCheckedChange:g,"aria-label":o("providers.drawer.fields.nonStreamViaStream")})]}),s.jsx("div",{className:"mt-4 border-t border-border pt-4",children:s.jsxs("div",{className:"flex items-start justify-between gap-4",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("p",{className:"text-sm font-medium",children:o("providers.drawer.fields.useAbsoluteUrl")}),s.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground",children:o("providers.drawer.fields.useAbsoluteUrlHint")})]}),s.jsx(F,{checked:e.useAbsoluteUrl,onCheckedChange:k,"aria-label":o("providers.drawer.fields.useAbsoluteUrl")})]})}),s.jsx("div",{className:"mt-4 border-t border-border pt-4",children:s.jsxs("div",{className:"flex items-start justify-between gap-4",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("p",{className:"text-sm font-medium",children:o("providers.drawer.fields.streamUsage")}),s.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground",children:o("providers.drawer.fields.streamUsageHint")})]}),s.jsx(F,{checked:e.streamUsage,onCheckedChange:m,"aria-label":o("providers.drawer.fields.streamUsage")})]})}),s.jsxs("div",{className:"mt-4 border-t border-border pt-4",children:[s.jsxs("div",{className:"flex items-start justify-between gap-4",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("p",{className:"text-sm font-medium",children:o("providers.drawer.fields.extraHeaders")}),s.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground",children:o("providers.drawer.fields.extraHeadersHint")})]}),s.jsx(E,{type:"button",variant:"outline",size:"sm",onClick:A,className:"bg-card text-xs",children:o("providers.drawer.fields.addHeader")})]}),r.extraHeaders?s.jsx("p",{className:"mt-2 text-xs text-destructive",children:r.extraHeaders}):null,e.extraHeaders.length>0?s.jsx("div",{className:"mt-3 space-y-3",children:e.extraHeaders.map((b,R)=>s.jsxs("div",{className:"rounded-xl border border-transparent bg-secondary/40 p-3",children:[s.jsxs("div",{className:"grid gap-3 md:grid-cols-2",children:[s.jsxs(M,{className:"flex flex-col gap-1.5 text-sm",children:[s.jsx("span",{className:"text-xs text-muted-foreground",children:o("providers.drawer.fields.headerName")}),s.jsx(C,{value:b.name,onChange:U=>w(R,{name:U.target.value}),placeholder:o("providers.drawer.fields.headerNamePlaceholder")})]}),s.jsxs(M,{className:"flex flex-col gap-1.5 text-sm",children:[s.jsx("span",{className:"text-xs text-muted-foreground",children:o("providers.drawer.fields.headerValue")}),s.jsx(C,{value:b.value,onChange:U=>w(R,{value:U.target.value}),placeholder:o("providers.drawer.fields.headerValuePlaceholder")})]})]}),s.jsx("div",{className:"mt-2 flex justify-end",children:s.jsx(E,{type:"button",variant:"ghost",size:"sm",className:"h-auto px-2 text-destructive",onClick:()=>j(R),children:o("providers.drawer.fields.removeHeader")})})]},b._key))}):null]})]})]})]})}function ns({form:e,errors:r,advancedOpen:t,onAdvancedOpenChange:i,onModelIdChange:a,onModelChange:n,onAddModel:h,onRemoveModel:u,onModelNonStreamViaStreamChange:y,onSetDefaultModel:N,testVerification:g,probeModels:k}){const{t:m}=O(),A=e.models.filter(j=>j.id.trim().length>0);return s.jsxs("div",{className:"space-y-8",children:[s.jsxs("section",{className:"space-y-4","aria-labelledby":"provider-model-fields",children:[s.jsxs("div",{className:"flex items-start justify-between gap-4",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("h3",{id:"provider-model-fields",className:"text-sm font-semibold",children:m("providers.drawer.fields.models")}),s.jsx("p",{className:"text-xs text-muted-foreground",children:m("providers.drawer.modelsDescription")})]}),s.jsxs("div",{className:"flex shrink-0 gap-2",children:[k?s.jsx(E,{type:"button",variant:"outline",size:"sm",onClick:k.onProbe,disabled:!k.available,title:k.available?void 0:m("providers.drawer.probe.needsBaseUrl"),className:"bg-card text-xs",children:m("providers.drawer.probe.button")}):null,s.jsx(E,{type:"button",variant:"outline",size:"sm",onClick:h,className:"bg-card text-xs",children:m("providers.drawer.fields.addModel")})]})]}),r.models?s.jsx("p",{className:"text-xs text-destructive",children:r.models}):null,s.jsxs("div",{className:"space-y-4",children:[e.models.map((j,w)=>s.jsxs("div",{className:"rounded-xl border border-transparent bg-card p-4 shadow-[var(--surface-shadow)]",children:[s.jsx("div",{className:"grid gap-4 md:grid-cols-2",children:s.jsxs(M,{className:"flex flex-col gap-2 text-sm",children:[s.jsx("span",{className:"text-xs text-muted-foreground",children:m("providers.drawer.fields.modelId")}),s.jsx(C,{value:j.id,onChange:o=>a(w,o.target.value),placeholder:m("providers.drawer.fields.modelIdPlaceholder")})]})}),s.jsxs(W,{open:t,onOpenChange:i,summary:m("providers.drawer.fields.advancedOptions"),className:"mt-4 rounded-xl bg-secondary/50",summaryClassName:"px-3 py-2 text-xs font-medium",contentClassName:"space-y-4 px-3 py-3",children:[s.jsxs(M,{className:"flex flex-col gap-2 text-sm",children:[s.jsx("span",{className:"text-xs text-muted-foreground",children:m("providers.drawer.fields.modelLabel")}),s.jsx(C,{value:j.label??"",onChange:o=>n(w,{label:o.target.value}),placeholder:m("providers.drawer.fields.modelLabelPlaceholder")})]}),s.jsxs(M,{className:"flex flex-col gap-2 text-sm",children:[s.jsx("span",{className:"text-xs text-muted-foreground",children:m("providers.drawer.fields.modelNonStreamViaStream")}),s.jsxs(xe,{value:j.nonStreamViaStream===void 0?"inherit":j.nonStreamViaStream?"enabled":"disabled",onValueChange:o=>y(w,o),children:[s.jsx(fe,{children:s.jsx(be,{})}),s.jsxs(ge,{children:[s.jsx(B,{value:"inherit",children:m("providers.drawer.fields.modelNonStreamViaStreamInherit")}),s.jsx(B,{value:"enabled",children:m("providers.drawer.fields.modelNonStreamViaStreamEnabled")}),s.jsx(B,{value:"disabled",children:m("providers.drawer.fields.modelNonStreamViaStreamDisabled")})]})]})]})]}),s.jsxs("div",{className:"mt-3 flex flex-wrap items-center justify-between gap-3 text-xs",children:[s.jsxs("label",{className:"flex items-center gap-2 text-muted-foreground",children:[s.jsx("input",{type:"radio",name:"defaultModel",value:j.id,"aria-label":m("providers.drawer.fields.setDefault"),checked:e.defaultModel===j.id,onChange:()=>N(j.id),disabled:j.id.trim().length===0,className:"h-4 w-4 accent-primary"}),m("providers.drawer.fields.setDefault")]}),s.jsx(E,{type:"button",variant:"ghost",size:"sm",className:"h-auto px-2 text-destructive",onClick:()=>u(w),disabled:e.models.length===0,children:m("providers.drawer.fields.removeModel")})]})]},j._key)),e.models.length===0?s.jsx("div",{className:"rounded-xl border border-warning/30 bg-warning-bg p-5",children:s.jsxs("div",{className:"space-y-2",children:[s.jsx("p",{className:"text-sm font-semibold text-warning",children:m("providers.drawer.noModelsTitle")}),s.jsx("p",{className:"text-xs leading-relaxed text-warning",children:m("providers.drawer.noModelsHint",{providerId:e.id||"provider-id"})}),s.jsxs("div",{className:"rounded-lg bg-secondary/50 p-2.5",children:[s.jsx("p",{className:"mb-1.5 text-xs font-medium text-foreground",children:m("providers.drawer.routeExample")}),s.jsxs("code",{className:"block rounded-lg border border-transparent bg-card px-2.5 py-1.5 font-mono text-xs text-foreground shadow-[var(--surface-shadow)]",children:['"claude-*": "',(e.id||"provider-id").trim()||"provider-id",':*"']})]})]})}):null]}),A.length>1?s.jsx("div",{className:"text-xs text-muted-foreground",children:m("providers.drawer.defaultHint",{model:e.defaultModel||m("providers.card.noDefault")})}):null]}),g?s.jsxs("section",{className:"space-y-3","aria-labelledby":"provider-verify-fields",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("h3",{id:"provider-verify-fields",className:"text-sm font-semibold",children:m("workbench.drawer.verifyTitle")}),s.jsx("p",{className:"text-xs text-muted-foreground",children:m("workbench.drawer.verifyHint")})]}),g.available?s.jsxs("div",{className:"space-y-3 rounded-xl border border-transparent bg-card p-4 shadow-[var(--surface-shadow)]",children:[s.jsx(E,{type:"button",variant:"outline",size:"sm",onClick:g.onTest,disabled:g.testing,children:g.testing?m("common.actions.testingConnection"):m("workbench.drawer.verifyRun")}),g.result?s.jsx(Ce,{result:g.result}):null]}):s.jsx("p",{className:"rounded-xl bg-secondary/50 px-4 py-3 text-xs text-muted-foreground",children:m("workbench.drawer.verifySaveFirst")})]}):null]})}const Ae=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function is({mode:e,provider:r,existingProviderIds:t}){const{t:i}=O(),[a,n]=S.useState(()=>Y(r)),[h,u]=S.useState({}),[y,N]=S.useState(e==="edit"),g=S.useRef(null),k=S.useCallback(()=>{n(Y(r)),u({}),N(e==="edit")},[r,e]),m=l=>d=>{n(x=>({...x,[l]:d}))},A=l=>{n(d=>{const c=!y||d.label.trim().length===0||d.label===d.id?l:d.label;return{...d,id:l,label:c}})},j=l=>{n(d=>{var Q;const c=_[l??"custom"]??_.custom,p=$(d.type),f=$(l),v=Object.values(_).map(D=>D.baseUrl).filter(D=>!!D),L=!d.baseUrl||v.includes(d.baseUrl),ie=e==="create"&&(d.models.length===0||d.models.every(D=>D.id.trim().length===0)),K={...d,type:l,authMode:d.authMode===p?f:d.authMode};return c!=null&&c.baseUrl&&L&&(K.baseUrl=c.baseUrl),c!=null&&c.models&&ie&&(K.models=c.models.map(He),K.defaultModel=c.defaultModel??((Q=c.models[0])==null?void 0:Q.id)??""),K})},w=(l,d)=>{n(x=>{const c=[...x.models];return c[l]={...c[l],...d},{...x,models:c}})},o=(l,d)=>{n(x=>{const c=[...x.models],p=c[l];if(!p)return x;const f=!y||!p.label||p.label===p.id,v={...p,id:d,label:f?d:p.label};c[l]=v;const L=x.defaultModel===p.id?d:x.defaultModel;return{...x,models:c,defaultModel:L}})},b=l=>{n(d=>{if(l<0||l>=d.models.length)return d;const x=d.models.filter((p,f)=>f!==l);let c=d.defaultModel;return x.some(p=>p.id===c)||(c=""),{...d,models:x,defaultModel:c}})},R=()=>{n(l=>({...l,models:[...l.models,X()]}))},U=l=>{n(d=>{const x=new Set(d.models.map(p=>p.id.trim())),c=l.filter(p=>p.id.trim().length>0&&!x.has(p.id.trim())).map(p=>{var f;return{...X(),id:p.id.trim(),label:((f=p.label)==null?void 0:f.trim())??""}});return c.length===0?d:{...d,models:[...d.models,...c]}})},Z=(l,d)=>{n(x=>{const c=[...x.extraHeaders];return c[l]={...c[l],...d},{...x,extraHeaders:c}})},ee=()=>{n(l=>({...l,extraHeaders:[...l.extraHeaders,Re()]}))},se=l=>{n(d=>{if(l<0||l>=d.extraHeaders.length)return d;const x=d.extraHeaders.filter((c,p)=>p!==l);return{...d,extraHeaders:x}})},re=l=>{n(d=>({...d,authMode:l}))},ae=l=>{n(d=>({...d,nonStreamViaStream:l}))},te=l=>{n(d=>({...d,useAbsoluteUrl:l}))},de=l=>{n(d=>({...d,streamUsage:l}))},le=(l,d)=>{w(l,{nonStreamViaStream:d==="inherit"?void 0:d==="enabled"})},ne=l=>{n(d=>({...d,defaultModel:l}))},G=()=>{const l={},d=a.id.trim(),x=a.baseUrl.trim();if(e==="create"&&(d.length===0?l.id=i("providers.drawer.errors.idRequired"):t.includes(d)&&(l.id=i("providers.drawer.errors.idDuplicate"))),e==="edit"&&d.length===0&&(l.id=i("providers.drawer.errors.idRequired")),x.length===0)l.baseUrl=i("providers.drawer.errors.baseUrlInvalid");else try{new URL(x)}catch{l.baseUrl=i("providers.drawer.errors.baseUrlInvalid")}if(a.models.length>0){const c=new Set;a.models.some(f=>{const v=f.id.trim();return v.length===0||c.has(v)?!0:(c.add(v),!1)})&&(l.models=i("providers.drawer.errors.modelInvalid"))}if(a.defaultModel&&!a.models.some(c=>c.id===a.defaultModel)&&(l.models=i("providers.drawer.errors.defaultInvalid")),a.extraHeaders.length>0){const c=new Set;for(const p of a.extraHeaders){const f=p.name.trim();if(f.length===0)continue;if(!Ae.test(f)){l.extraHeaders=i("providers.drawer.errors.headerNameInvalid");break}const v=f.toLowerCase();if(c.has(v)){l.extraHeaders=i("providers.drawer.errors.headerNameDuplicate");break}c.add(v)}}return u(l),l};return{form:a,errors:h,advancedOpen:y,setAdvancedOpen:N,providerIdRef:g,isCreate:e==="create",resetForm:k,validate:()=>Object.keys(G()).length===0,validateErrors:G,serialize:()=>{const l=a.models.map(f=>{var v;return{id:f.id.trim(),label:(v=f.label)!=null&&v.trim()?f.label.trim():void 0,nonStreamViaStream:f.nonStreamViaStream}}).filter(f=>f.id.length>0),d={};for(const f of a.extraHeaders){const v=f.name.trim();v.length>0&&(d[v]=f.value)}const x=Object.keys(d).length>0,c=a.authMode==="apiKey"&&a.type!=="anthropic"?void 0:a.authMode,p={id:a.id.trim(),label:a.label.trim()||a.id.trim(),baseUrl:a.baseUrl.trim(),apiKey:a.apiKey.trim()||void 0,type:a.type??"custom",defaultModel:a.defaultModel||void 0,models:l.length>0?l:void 0,extraHeaders:x?d:void 0,authMode:c};return a.nonStreamViaStream&&(p.nonStreamViaStream=!0),a.useAbsoluteUrl&&(p.useAbsoluteUrl=!0),a.streamUsage&&(p.streamUsage=!0),p},handleFieldChange:m,handleProviderIdChange:A,handleTypeChange:j,handleModelChange:w,handleModelIdChange:o,handleRemoveModel:b,handleAddModel:R,handleImportModels:U,handleHeaderChange:Z,handleAddHeader:ee,handleRemoveHeader:se,handleAuthModeChange:re,handleProviderNonStreamViaStreamChange:ae,handleUseAbsoluteUrlChange:te,handleStreamUsageChange:de,handleModelNonStreamViaStreamChange:le,handleSetDefaultModel:ne}}export{ls as B,Ge as C,ns as M,Qe as O,Te as P,ts as S,Ce as T,Ye as a,Xe as b,q as c,Je as d,Ze as e,ye as f,je as g,es as h,Ee as i,ds as j,Me as k,We as l,as as m,rs as n,ss as o,Se as r,is as u};
@@ -1,3 +1,3 @@
1
- import{j as n}from"./vendor-CITafuNQ.js";import{c as g}from"./global-CHsQhrWl.js";function l({className:t}){return n.jsx("div",{role:"status","aria-label":"Loading",className:g("animate-pulse rounded-xl bg-muted",t)})}function _(){return n.jsxs("div",{className:"space-y-3 rounded-xl bg-card p-6 shadow-[var(--surface-shadow)]",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx(l,{className:"h-3 w-24"}),n.jsx(l,{className:"h-10 w-10 rounded-xl"})]}),n.jsx(l,{className:"h-8 w-32"})]})}function y(){return n.jsxs("div",{className:"space-y-4 rounded-xl bg-card p-6 shadow-[var(--surface-shadow)]",children:[n.jsxs("div",{className:"space-y-2",children:[n.jsx(l,{className:"h-4 w-32"}),n.jsx(l,{className:"h-3 w-48"})]}),n.jsx(l,{className:"h-[320px] w-full rounded-xl"})]})}function N({columns:t=6}){const e=["w-24","w-16","w-20","w-28","w-14","w-12","w-20","w-16","w-14","w-12"];return n.jsx("tr",{className:"border-b",children:Array.from({length:t}).map((a,r)=>n.jsx("td",{className:"px-3 py-3",children:n.jsx(l,{className:g("h-4",e[r%e.length])})},r))})}const m=[168,184,198,208,218,228,238,248,258,268,278,292],b=2e5,c=12e4;function j(t){const e=new Date(t);return`${e.getFullYear()}-${`${e.getMonth()+1}`.padStart(2,"0")}-${`${e.getDate()}`.padStart(2,"0")} ${`${e.getHours()}`.padStart(2,"0")}:${`${e.getMinutes()}`.padStart(2,"0")}:${`${e.getSeconds()}`.padStart(2,"0")}`}function o(t){return t==null?"-":t.toLocaleString()}function T(t,e){const a=o(t);return a==="-"?"-":`${a} ${e}`}function E(t){return t?"true":"false"}function w(t,e){if(!t||t.trim().length===0)return e;if(t.length>b)return t;try{const a=JSON.parse(t);return JSON.stringify(a,null,2)}catch{return t}}function S(t){return t.length<=c?{displayedLength:t.length,isTruncated:!1,originalLength:t.length,text:t}:{displayedLength:c,isTruncated:!0,originalLength:t.length,text:`${t.slice(0,c)}
1
+ import{j as n}from"./vendor-CITafuNQ.js";import{c as g}from"./global-D5dyWHqO.js";function l({className:t}){return n.jsx("div",{role:"status","aria-label":"Loading",className:g("animate-pulse rounded-xl bg-muted",t)})}function _(){return n.jsxs("div",{className:"space-y-3 rounded-xl bg-card p-6 shadow-[var(--surface-shadow)]",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx(l,{className:"h-3 w-24"}),n.jsx(l,{className:"h-10 w-10 rounded-xl"})]}),n.jsx(l,{className:"h-8 w-32"})]})}function y(){return n.jsxs("div",{className:"space-y-4 rounded-xl bg-card p-6 shadow-[var(--surface-shadow)]",children:[n.jsxs("div",{className:"space-y-2",children:[n.jsx(l,{className:"h-4 w-32"}),n.jsx(l,{className:"h-3 w-48"})]}),n.jsx(l,{className:"h-[320px] w-full rounded-xl"})]})}function N({columns:t=6}){const e=["w-24","w-16","w-20","w-28","w-14","w-12","w-20","w-16","w-14","w-12"];return n.jsx("tr",{className:"border-b",children:Array.from({length:t}).map((a,r)=>n.jsx("td",{className:"px-3 py-3",children:n.jsx(l,{className:g("h-4",e[r%e.length])})},r))})}const m=[168,184,198,208,218,228,238,248,258,268,278,292],b=2e5,c=12e4;function j(t){const e=new Date(t);return`${e.getFullYear()}-${`${e.getMonth()+1}`.padStart(2,"0")}-${`${e.getDate()}`.padStart(2,"0")} ${`${e.getHours()}`.padStart(2,"0")}:${`${e.getMinutes()}`.padStart(2,"0")}:${`${e.getSeconds()}`.padStart(2,"0")}`}function o(t){return t==null?"-":t.toLocaleString()}function T(t,e){const a=o(t);return a==="-"?"-":`${a} ${e}`}function E(t){return t?"true":"false"}function w(t,e){if(!t||t.trim().length===0)return e;if(t.length>b)return t;try{const a=JSON.parse(t);return JSON.stringify(a,null,2)}catch{return t}}function S(t){return t.length<=c?{displayedLength:t.length,isTruncated:!1,originalLength:t.length,text:t}:{displayedLength:c,isTruncated:!0,originalLength:t.length,text:`${t.slice(0,c)}
2
2
 
3
3
  ...`}}function P(t,e){return S(w(t,e))}function k(t,e){return t.status_code===null||t.status_code===void 0?t.error?{label:e("common.status.error"),tone:"error",variant:"destructive"}:{label:e("common.status.pending"),tone:"pending",variant:"warning"}:t.error||t.status_code>=400?{label:t.status_code.toString(),tone:"error",variant:"destructive"}:{label:t.status_code.toString(),tone:"success",variant:"success"}}function D(t,e){if(!(!!t.error||(t.status_code??0)>=400))return{label:e("logs.detail.errorSource.none"),tone:"none"};switch(t.error_source){case"client":return{label:e("logs.detail.errorSource.client"),tone:"client"};case"gateway":return{label:e("logs.detail.errorSource.gateway"),tone:"gateway"};case"upstream":return{label:e("logs.detail.errorSource.upstream"),tone:"upstream"};default:return{label:e("logs.detail.errorSource.unknown"),tone:"unknown"}}}function M(t,e,a){const r=t.latency_ms,s=t.ttft_ms,d=r!=null&&r>0,h=!!t.error||(t.status_code??0)>=400,i=[];if(i.push({id:"arrived",title:a("logs.detail.trace.arrived"),atLabel:"0 ms",durLabel:null,detail:[t.endpoint||"-",t.stream?a("logs.detail.trace.streamOn"):a("logs.detail.trace.streamOff")].join(" · "),tone:"accent",barPct:0}),s!=null&&s>0&&i.push({id:"ttft",title:a("logs.detail.trace.ttft"),atLabel:`+${o(s)} ms`,durLabel:`${o(s)} ms`,detail:`${e} · ${t.model}`,tone:"warn",barPct:d?Math.min(100,Math.round(s/r*100)):100}),d){const u=r-(s??0),f=[`${o(t.output_tokens)} ${a("common.units.token")}`,t.tpot_ms!=null?`${a("logs.detail.trace.tpot")} ${o(t.tpot_ms)} ${a("common.units.msPerToken")}`:null].filter(p=>!!p);i.push({id:"complete",title:a("logs.detail.trace.complete"),atLabel:`+${o(r)} ms`,durLabel:u>0?`${o(u)} ms`:null,detail:f.join(" · "),tone:h?"error":"ok",barPct:u>0?Math.min(100,Math.round(u/r*100)):0})}else i.push({id:"pending",title:a("logs.detail.trace.pending"),atLabel:"",durLabel:null,detail:"",tone:"warn",barPct:0});return i}function $(t){let e=0;for(let a=0;a<t.length;a+=1)e=e*31+t.charCodeAt(a)>>>0;return e}function v(t){const e=t==null?void 0:t.trim();if(!e)return null;const a=$(e),r=m[a%m.length],s=`hsl(${r} 74% 46% / 0.55)`;return{sessionId:e,colorKey:`${r}`,accentStyle:{borderLeft:`2px solid ${s}`}}}export{y as C,_ as S,N as T,D as a,P as b,j as c,E as d,o as e,T as f,k as g,v as h,l as i,M as j};
@@ -14,14 +14,14 @@
14
14
  rel="stylesheet"
15
15
  />
16
16
  <title>cc-gw 控制台</title>
17
- <script type="module" crossorigin src="/assets/app-yrdXegKB.js"></script>
17
+ <script type="module" crossorigin src="/assets/app-DmrDy3E3.js"></script>
18
18
  <link rel="modulepreload" crossorigin href="/assets/vendor-CITafuNQ.js">
19
- <link rel="modulepreload" crossorigin href="/assets/global-CHsQhrWl.js">
19
+ <link rel="modulepreload" crossorigin href="/assets/global-D5dyWHqO.js">
20
20
  <link rel="modulepreload" crossorigin href="/assets/query-DZF7K6hv.js">
21
21
  <link rel="modulepreload" crossorigin href="/assets/i18n-PeX9kBVO.js">
22
22
  <link rel="modulepreload" crossorigin href="/assets/router-BoBrmro7.js">
23
23
  <link rel="modulepreload" crossorigin href="/assets/radix-Bux_1C5J.js">
24
- <link rel="stylesheet" crossorigin href="/assets/global-B_aXL20T.css">
24
+ <link rel="stylesheet" crossorigin href="/assets/global-CjRN4Kqi.css">
25
25
  </head>
26
26
  <body class="bg-background text-foreground">
27
27
  <div id="root"></div>
@@ -42,12 +42,12 @@
42
42
  }
43
43
  </script>
44
44
  <title>cc-gw | 你的 API Key 不该躺在 30 个 .env 里 · local-first AI gateway</title>
45
- <script type="module" crossorigin src="/assets/landing-CYc---DE.js"></script>
45
+ <script type="module" crossorigin src="/assets/landing-CXkPmDBs.js"></script>
46
46
  <link rel="modulepreload" crossorigin href="/assets/vendor-CITafuNQ.js">
47
- <link rel="modulepreload" crossorigin href="/assets/global-CHsQhrWl.js">
47
+ <link rel="modulepreload" crossorigin href="/assets/global-D5dyWHqO.js">
48
48
  <link rel="modulepreload" crossorigin href="/assets/clipboard-BnAnBk_-.js">
49
- <link rel="modulepreload" crossorigin href="/assets/package-CR4pXT18.js">
50
- <link rel="stylesheet" crossorigin href="/assets/global-B_aXL20T.css">
49
+ <link rel="modulepreload" crossorigin href="/assets/package-CKunvygM.js">
50
+ <link rel="stylesheet" crossorigin href="/assets/global-CjRN4Kqi.css">
51
51
  </head>
52
52
  <body class="bg-slate-50 text-slate-900">
53
53
  <div id="landing-root"></div>