@chenpu17/cc-gw 0.8.30 → 0.9.0-beta.1

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 (78) hide show
  1. package/package.json +8 -8
  2. package/src/web/dist/assets/About-WPCkWxkz.js +1 -0
  3. package/src/web/dist/assets/ApiKeys-Q-EteBox.js +1 -0
  4. package/src/web/dist/assets/{ConfirmDialog-VrbumD7j.js → ConfirmDialog-CvC_VLb2.js} +1 -1
  5. package/src/web/dist/assets/Dashboard-Q99L2W8N.js +1 -0
  6. package/src/web/dist/assets/DialogShell-CM92wXHo.js +1 -0
  7. package/src/web/dist/assets/Events-CBVp1fVz.js +1 -0
  8. package/src/web/dist/assets/{Help-BiuR792b.js → Help-M3pIEoJN.js} +1 -1
  9. package/src/web/dist/assets/Login-DtAkFJMT.js +1 -0
  10. package/src/web/dist/assets/Logs-CIPbrHMJ.js +1 -0
  11. package/src/web/dist/assets/{PageSection-D1vbxAKK.js → PageSection-N34Nu8NO.js} +1 -1
  12. package/src/web/dist/assets/PageState-CFLrRswm.js +1 -0
  13. package/src/web/dist/assets/{PageToolbar-DzpjQ7SY.js → PageToolbar-CWw40AFL.js} +1 -1
  14. package/src/web/dist/assets/ProvidersWorkbench-DvlPlloy.js +1 -0
  15. package/src/web/dist/assets/Settings-CNI4qHrl.js +1 -0
  16. package/src/web/dist/assets/Setup-CfD6U8Nf.js +2 -0
  17. package/src/web/dist/assets/{apiKeys-Dl_vgy_U.js → apiKeys-CoQ69TK_.js} +1 -1
  18. package/src/web/dist/assets/app-czRBzLXv.js +61 -0
  19. package/src/web/dist/assets/badge-DpUlf_NW.js +1 -0
  20. package/src/web/dist/assets/{card-DS9KKz-k.js → card-D4YOc5eB.js} +1 -1
  21. package/src/web/dist/assets/{charts-core-CAVUzIcU.js → charts-core-BTTtAoo-.js} +1 -1
  22. package/src/web/dist/assets/{charts-engine-BRCKiVl4.js → charts-engine-CFhx8nba.js} +1 -1
  23. package/src/web/dist/assets/{charts-react-B-D6Gq0w.js → charts-react-BQP6-BFp.js} +1 -1
  24. package/src/web/dist/assets/{disclosure-CqU8C-ET.js → disclosure-l5qsWhr7.js} +1 -1
  25. package/src/web/dist/assets/{gateway-Bt6lPuXq.js → gateway-Dxoj2rj4.js} +1 -1
  26. package/src/web/dist/assets/{global-zt8jbW7F.js → global-BCehxTGJ.js} +1 -1
  27. package/src/web/dist/assets/global-CIVH6GQV.css +1 -0
  28. package/src/web/dist/assets/{i18n-DWfLgqoF.js → i18n-PeX9kBVO.js} +1 -1
  29. package/src/web/dist/assets/{label-CWq3wWgE.js → label-DSVzZIex.js} +1 -1
  30. package/src/web/dist/assets/landing-DBrU8FIr.js +17 -0
  31. package/src/web/dist/assets/metric-card-G1bbpbiR.js +1 -0
  32. package/src/web/dist/assets/package-BXeeAB6b.js +1 -0
  33. package/src/web/dist/assets/popover-QZXvcPr8.js +1 -0
  34. package/src/web/dist/assets/{query-CZuclkQv.js → query-DZF7K6hv.js} +1 -1
  35. package/src/web/dist/assets/radix-Bux_1C5J.js +5 -0
  36. package/src/web/dist/assets/{router-C1-ppOz7.js → router-BoBrmro7.js} +2 -2
  37. package/src/web/dist/assets/segmented-control-13KTib6k.js +1 -0
  38. package/src/web/dist/assets/{select-CxIEo3DN.js → select-sOwKYsgI.js} +1 -1
  39. package/src/web/dist/assets/shared-HT9X1BTy.js +1 -0
  40. package/src/web/dist/assets/switch-7PH_rDz6.js +1 -0
  41. package/src/web/dist/assets/table-CVuTTP1s.js +1 -0
  42. package/src/web/dist/assets/{tabs-BOjStrRw.js → tabs-UWyz9J_W.js} +1 -1
  43. package/src/web/dist/assets/types-DYz12j32.js +1 -0
  44. package/src/web/dist/assets/useAppMutation-DbIs5qvT.js +1 -0
  45. package/src/web/dist/assets/{useEventStream-DeEWwZq0.js → useEventStream-BYg6oKvQ.js} +1 -1
  46. package/src/web/dist/assets/useProviderForm-BiVzWP3H.js +1 -0
  47. package/src/web/dist/assets/utils-B_Q3Hhgb.js +3 -0
  48. package/src/web/dist/assets/vendor-CITafuNQ.js +409 -0
  49. package/src/web/dist/index.html +15 -9
  50. package/src/web/dist/landing.html +5 -5
  51. package/src/web/dist/assets/About-CGQXnQXw.js +0 -1
  52. package/src/web/dist/assets/ApiKeys-Cse0CWpH.js +0 -1
  53. package/src/web/dist/assets/Dashboard-CtOgjfmM.js +0 -1
  54. package/src/web/dist/assets/DialogShell-TRFN3c58.js +0 -1
  55. package/src/web/dist/assets/EChart-CZqGiync.js +0 -1
  56. package/src/web/dist/assets/Events-C14a-qPg.js +0 -1
  57. package/src/web/dist/assets/Login-B-xiAusP.js +0 -1
  58. package/src/web/dist/assets/Logs-oNopHEDO.js +0 -1
  59. package/src/web/dist/assets/PageState-CPKqNFG7.js +0 -1
  60. package/src/web/dist/assets/ProvidersWorkbench-B5g4UvTf.js +0 -1
  61. package/src/web/dist/assets/Settings-CPpQt_UL.js +0 -1
  62. package/src/web/dist/assets/Setup-DNJ1W4sK.js +0 -2
  63. package/src/web/dist/assets/app-CeLCVbqy.js +0 -61
  64. package/src/web/dist/assets/global-B1Xg1dWA.css +0 -1
  65. package/src/web/dist/assets/landing-D6Ek28oa.js +0 -17
  66. package/src/web/dist/assets/metric-card-CueQ0u3Z.js +0 -1
  67. package/src/web/dist/assets/package-CdOrNWtP.js +0 -1
  68. package/src/web/dist/assets/popover-0fHMO-3Y.js +0 -1
  69. package/src/web/dist/assets/queryKeys-BlGm18Nk.js +0 -1
  70. package/src/web/dist/assets/radix-OaJStcH-.js +0 -5
  71. package/src/web/dist/assets/segmented-control-do2mQidJ.js +0 -1
  72. package/src/web/dist/assets/shared-fOyVvn5H.js +0 -1
  73. package/src/web/dist/assets/switch-B2cQk2bS.js +0 -1
  74. package/src/web/dist/assets/table-BxCEZcKF.js +0 -1
  75. package/src/web/dist/assets/useAppMutation-DY1JJByx.js +0 -1
  76. package/src/web/dist/assets/useProviderForm-DlALMLaD.js +0 -1
  77. package/src/web/dist/assets/utils-DrKJJFzS.js +0 -3
  78. package/src/web/dist/assets/vendor-m8O77Czp.js +0 -390
@@ -1 +0,0 @@
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:Inter,SF Pro Display,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:Inter,SF Mono,IBM Plex Mono,JetBrains 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: 220 14% 96%;--foreground: 224 71% 4%;--card: 0 0% 100%;--card-foreground: 224 71% 4%;--popover: 0 0% 100%;--popover-foreground: 224 71% 4%;--primary: 234 89% 54%;--primary-foreground: 0 0% 100%;--secondary: 220 13% 95%;--secondary-foreground: 224 71% 4%;--muted: 220 13% 91%;--muted-foreground: 220 9% 46%;--accent: 220 13% 95%;--accent-foreground: 234 89% 54%;--destructive: 0 84% 60%;--destructive-foreground: 0 0% 100%;--border: 220 13% 91%;--input: 220 13% 91%;--ring: 234 89% 54%;--radius: .5rem;--success: 152 69% 31%;--success-bg: 152 68% 96%;--warning: 38 92% 50%;--warning-bg: 48 96% 96%;--error: 0 84% 60%;--error-bg: 0 86% 97%;--info: 234 89% 54%;--info-bg: 234 85% 97%;--chart-1: 234 89% 54%;--chart-2: 152 69% 31%;--chart-3: 38 92% 50%;--chart-4: 0 84% 60%;--chart-5: 280 67% 51%;--surface-shadow: 0 1px 3px rgba(0, 0, 0, .02), 0 4px 12px rgba(0, 0, 0, .04);--surface-shadow-lg: 0 2px 6px rgba(0, 0, 0, .03), 0 8px 24px rgba(0, 0, 0, .06);--surface-border: rgba(0, 0, 0, .06);--ease-surface: cubic-bezier(.22, 1, .36, 1)}.dark,[data-theme=dark]{--background: 224 71% 4%;--foreground: 210 20% 98%;--card: 224 48% 8%;--card-foreground: 210 20% 98%;--popover: 224 48% 8%;--popover-foreground: 210 20% 98%;--primary: 234 89% 74%;--primary-foreground: 224 71% 4%;--secondary: 215 28% 14%;--secondary-foreground: 210 20% 98%;--muted: 215 28% 17%;--muted-foreground: 218 11% 58%;--accent: 215 28% 17%;--accent-foreground: 234 89% 74%;--destructive: 0 72% 65%;--destructive-foreground: 0 0% 100%;--border: 215 28% 17%;--input: 215 28% 17%;--ring: 234 89% 74%;--success: 152 60% 50%;--success-bg: 152 45% 14%;--warning: 38 92% 60%;--warning-bg: 38 60% 14%;--error: 0 72% 65%;--error-bg: 0 50% 16%;--info: 234 89% 74%;--info-bg: 234 50% 16%;--chart-1: 234 89% 74%;--chart-2: 152 60% 50%;--chart-3: 38 92% 60%;--chart-4: 0 72% 65%;--chart-5: 280 67% 65%;--surface-shadow: 0 1px 3px rgba(0, 0, 0, .3), 0 1px 2px rgba(0, 0, 0, .2);--surface-shadow-lg: 0 4px 12px rgba(0, 0, 0, .4), 0 1px 3px rgba(0, 0, 0, .2);--surface-border: rgba(255, 255, 255, .08)}*{border-color:hsl(var(--border))}html,body,#root{height:100%;width:100%;overflow-x:hidden}body{background-color:hsl(var(--background));color:hsl(var(--foreground));font-family:Inter,SF Pro Display,PingFang SC,Noto Sans SC,system-ui,-apple-system,sans-serif;font-feature-settings:"rlig" 1,"calt" 1,"cv11" 1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}.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-x-10{left:2.5rem;right:2.5rem}.inset-y-0{top:0;bottom:0}.-bottom-40{bottom:-10rem}.-right-1{right:-.25rem}.-top-1{top:-.25rem}.-top-10{top:-2.5rem}.-top-40{top:-10rem}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.left-0{left:0}.left-1\/2{left:50%}.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-\[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}.-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}.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-3{margin-left:.75rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-auto{margin-right:auto}.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}.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\.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-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-40{height:10rem}.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-\[320px\]{height:320px}.h-\[36vh\]{height:36vh}.h-\[460px\]{height:460px}.h-\[640px\]{height:640px}.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-\[400px\]{max-height:400px}.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-52{width:13rem}.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-\[1100px\]{width:1100px}.w-\[130px\]{width:130px}.w-\[132px\]{width:132px}.w-\[168px\]{width:168px}.w-\[1px\]{width:1px}.w-\[220px\]{width:220px}.w-\[80px\]{width:80px}.w-\[900px\]{width:900px}.w-\[min\(96vw\,1200px\)\]{width:min(96vw,1200px)}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.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-\[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-4xl{max-width:56rem}.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-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[220px\]{max-width:220px}.max-w-\[240px\]{max-width:240px}.max-w-\[280px\]{max-width:280px}.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-shrink-0,.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-left{transform-origin:left}.-translate-x-1\/2{--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-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))}.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))}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fade-in .2s ease-out}@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-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-\[minmax\(0\,1fr\)_auto_minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto}.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-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-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]){border-color:hsl(var(--border))}.divide-border\/50>:not([hidden])~:not([hidden]){border-color:hsl(var(--border) / .5)}.divide-slate-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(226 232 240 / var(--tw-divide-opacity, 1))}.self-start{align-self:flex-start}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.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-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:.75rem}.rounded-b-xl{border-bottom-right-radius:.75rem;border-bottom-left-radius:.75rem}.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-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[color\:var\(--surface-border\)\]{border-color:var(--surface-border)}.border-\[hsl\(var\(--success\)\/0\.2\)\]{border-color:hsl(var(--success)/.2)}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-300{--tw-border-opacity: 1;border-color:rgb(252 211 77 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-border\/30{border-color:hsl(var(--border) / .3)}.border-border\/40{border-color:hsl(var(--border) / .4)}.border-border\/45{border-color:hsl(var(--border) / .45)}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-border\/55{border-color:hsl(var(--border) / .55)}.border-border\/60{border-color:hsl(var(--border) / .6)}.border-border\/70{border-color:hsl(var(--border) / .7)}.border-cyan-200{--tw-border-opacity: 1;border-color:rgb(165 243 252 / var(--tw-border-opacity, 1))}.border-destructive{border-color:hsl(var(--destructive))}.border-destructive\/15{border-color:hsl(var(--destructive) / .15)}.border-destructive\/20{border-color:hsl(var(--destructive) / .2)}.border-destructive\/25{border-color:hsl(var(--destructive) / .25)}.border-destructive\/30{border-color:hsl(var(--destructive) / .3)}.border-destructive\/40{border-color:hsl(var(--destructive) / .4)}.border-destructive\/50{border-color:hsl(var(--destructive) / .5)}.border-emerald-200\/70{border-color:#a7f3d0b3}.border-emerald-300{--tw-border-opacity: 1;border-color:rgb(110 231 183 / var(--tw-border-opacity, 1))}.border-indigo-200{--tw-border-opacity: 1;border-color:rgb(199 210 254 / var(--tw-border-opacity, 1))}.border-indigo-500\/30{border-color:#6366f14d}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-primary\/10{border-color:hsl(var(--primary) / .1)}.border-primary\/15{border-color:hsl(var(--primary) / .15)}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/40{border-color:hsl(var(--primary) / .4)}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-slate-200{--tw-border-opacity: 1;border-color:rgb(226 232 240 / var(--tw-border-opacity, 1))}.border-slate-200\/70{border-color:#e2e8f0b3}.border-slate-200\/80{border-color:#e2e8f0cc}.border-transparent{border-color:transparent}.border-white\/10{border-color:#ffffff1a}.border-white\/15{border-color:#ffffff26}.border-white\/20{border-color:#fff3}.border-l-error{border-left-color:hsl(var(--error))}.border-l-success{border-left-color:hsl(var(--success))}.border-l-transparent{border-left-color:transparent}.border-l-warning{border-left-color:hsl(var(--warning))}.border-t-transparent{border-top-color:transparent}.bg-\[hsl\(var\(--success-bg\)\)\]{background-color:hsl(var(--success-bg))}.bg-accent{background-color:hsl(var(--accent))}.bg-accent\/90{background-color:hsl(var(--accent) / .9)}.bg-amber-100{--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1))}.bg-amber-300\/70{background-color:#fcd34db3}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-background{background-color:hsl(var(--background))}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-border{background-color:hsl(var(--border))}.bg-border\/55{background-color:hsl(var(--border) / .55)}.bg-border\/60{background-color:hsl(var(--border) / .6)}.bg-card{background-color:hsl(var(--card))}.bg-cyan-50\/60{background-color:#ecfeff99}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/10{background-color:hsl(var(--destructive) / .1)}.bg-destructive\/5{background-color:hsl(var(--destructive) / .05)}.bg-emerald-100{--tw-bg-opacity: 1;background-color:rgb(209 250 229 / var(--tw-bg-opacity, 1))}.bg-emerald-400{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity, 1))}.bg-emerald-400\/70{background-color:#34d399b3}.bg-emerald-50{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity, 1))}.bg-emerald-500\/10{background-color:#10b9811a}.bg-emerald-500\/15{background-color:#10b98126}.bg-indigo-100{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity, 1))}.bg-indigo-50\/60{background-color:#eef2ff99}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/40{background-color:hsl(var(--muted-foreground) / .4)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-pink-100{--tw-bg-opacity: 1;background-color:rgb(252 231 243 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-popover\/95{background-color:hsl(var(--popover) / .95)}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/15{background-color:hsl(var(--primary) / .15)}.bg-primary\/40{background-color:hsl(var(--primary) / .4)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-primary\/\[0\.03\]{background-color:hsl(var(--primary) / .03)}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-rose-400\/70{background-color:#fb7185b3}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/40{background-color:hsl(var(--secondary) / .4)}.bg-secondary\/45{background-color:hsl(var(--secondary) / .45)}.bg-secondary\/50{background-color:hsl(var(--secondary) / .5)}.bg-secondary\/55{background-color:hsl(var(--secondary) / .55)}.bg-secondary\/60{background-color:hsl(var(--secondary) / .6)}.bg-slate-100{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity, 1))}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.bg-slate-200\/70{background-color:#e2e8f0b3}.bg-slate-50{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity, 1))}.bg-slate-50\/60{background-color:#f8fafc99}.bg-slate-900\/60{background-color:#0f172a99}.bg-slate-950{--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1))}.bg-success{background-color:hsl(var(--success))}.bg-success-bg{background-color:hsl(var(--success-bg))}.bg-transparent{background-color:transparent}.bg-violet-100{--tw-bg-opacity: 1;background-color:rgb(237 233 254 / var(--tw-bg-opacity, 1))}.bg-warning{background-color:hsl(var(--warning))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/10{background-color:#ffffff1a}.bg-white\/5{background-color:#ffffff0d}.bg-white\/85{background-color:#ffffffd9}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-amber-500\/20{--tw-gradient-from: rgb(245 158 11 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-500\/20{--tw-gradient-from: rgb(6 182 212 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-50{--tw-gradient-from: #ecfdf5 var(--tw-gradient-from-position);--tw-gradient-to: rgb(236 253 245 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-500\/20{--tw-gradient-from: rgb(16 185 129 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(16 185 129 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-300{--tw-gradient-from: #a5b4fc var(--tw-gradient-from-position);--tw-gradient-to: rgb(165 180 252 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-50{--tw-gradient-from: #eef2ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(238 242 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500\/10{--tw-gradient-from: rgb(99 102 241 / .1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500\/30{--tw-gradient-from: rgb(99 102 241 / .3) var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-50{--tw-gradient-from: #f8fafc var(--tw-gradient-from-position);--tw-gradient-to: rgb(248 250 252 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-violet-300{--tw-gradient-to: rgb(196 181 253 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #c4b5fd var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-violet-500\/25{--tw-gradient-to: rgb(139 92 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(139 92 246 / .25) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-white{--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #fff var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-cyan-300{--tw-gradient-to: #67e8f9 var(--tw-gradient-to-position)}.to-cyan-50{--tw-gradient-to: #ecfeff var(--tw-gradient-to-position)}.to-cyan-500\/10{--tw-gradient-to: rgb(6 182 212 / .1) var(--tw-gradient-to-position)}.to-cyan-500\/30{--tw-gradient-to: rgb(6 182 212 / .3) var(--tw-gradient-to-position)}.to-indigo-500\/20{--tw-gradient-to: rgb(99 102 241 / .2) var(--tw-gradient-to-position)}.to-rose-500\/20{--tw-gradient-to: rgb(244 63 94 / .2) var(--tw-gradient-to-position)}.to-teal-500\/20{--tw-gradient-to: rgb(20 184 166 / .2) var(--tw-gradient-to-position)}.to-white{--tw-gradient-to: #fff var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.fill-current{fill:currentColor}.fill-primary\/5{fill:hsl(var(--primary) / .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}.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-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-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-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:Inter,SF Mono,IBM Plex Mono,JetBrains 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-\[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-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\.08em\]{letter-spacing:.08em}.tracking-\[0\.14em\]{letter-spacing:.14em}.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-\[hsl\(var\(--success\)\/1\)\]{color:hsl(var(--success)/1)}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-800{--tw-text-opacity: 1;color:rgb(146 64 14 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-cyan-600{--tw-text-opacity: 1;color:rgb(8 145 178 / var(--tw-text-opacity, 1))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-300{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-emerald-500{--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity, 1))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-emerald-800{--tw-text-opacity: 1;color:rgb(6 95 70 / var(--tw-text-opacity, 1))}.text-emerald-950{--tw-text-opacity: 1;color:rgb(2 44 34 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-foreground\/90{color:hsl(var(--foreground) / .9)}.text-indigo-300{--tw-text-opacity: 1;color:rgb(165 180 252 / var(--tw-text-opacity, 1))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.text-indigo-700{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/40{color:hsl(var(--muted-foreground) / .4)}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-muted-foreground\/70{color:hsl(var(--muted-foreground) / .7)}.text-muted-foreground\/75{color:hsl(var(--muted-foreground) / .75)}.text-pink-700{--tw-text-opacity: 1;color:rgb(190 24 93 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/60{color:hsl(var(--primary) / .6)}.text-primary\/70{color:hsl(var(--primary) / .7)}.text-primary\/75{color:hsl(var(--primary) / .75)}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.text-rose-500{--tw-text-opacity: 1;color:rgb(244 63 94 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-slate-100{--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.text-slate-200{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-slate-500{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity, 1))}.text-slate-600{--tw-text-opacity: 1;color:rgb(71 85 105 / var(--tw-text-opacity, 1))}.text-slate-700{--tw-text-opacity: 1;color:rgb(51 65 85 / var(--tw-text-opacity, 1))}.text-slate-900{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity, 1))}.text-slate-950{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.text-success{color:hsl(var(--success))}.text-transparent{color:transparent}.text-violet-700{--tw-text-opacity: 1;color:rgb(109 40 217 / var(--tw-text-opacity, 1))}.text-warning{color:hsl(var(--warning))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / 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-\[hsl\(var\(--primary\)\)\],.accent-primary{accent-color:hsl(var(--primary))}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-45{opacity:.45}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-\[0\.18\]{opacity:.18}.shadow-\[0_0_10px_rgba\(52\,211\,153\,0\.8\)\]{--tw-shadow: 0 0 10px rgba(52,211,153,.8);--tw-shadow-colored: 0 0 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_10px_30px_-18px_rgba\(79\,70\,229\,0\.4\)\]{--tw-shadow: 0 10px 30px -18px rgba(79,70,229,.4);--tw-shadow-colored: 0 10px 30px -18px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_30px_80px_-30px_rgba\(15\,23\,42\,0\.45\)\]{--tw-shadow: 0 30px 80px -30px rgba(15,23,42,.45);--tw-shadow-colored: 0 30px 80px -30px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_3px_10px_rgba\(15\,23\,42\,0\.18\)\]{--tw-shadow: 0 3px 10px rgba(15,23,42,.18);--tw-shadow-colored: 0 3px 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_40px_100px_-40px_rgba\(15\,23\,42\,0\.5\)\]{--tw-shadow: 0 40px 100px -40px rgba(15,23,42,.5);--tw-shadow-colored: 0 40px 100px -40px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_40px_120px_-20px_rgba\(2\,6\,23\,0\.8\)\]{--tw-shadow: 0 40px 120px -20px rgba(2,6,23,.8);--tw-shadow-colored: 0 40px 120px -20px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[inset_0_0_0_1px_rgba\(15\,23\,42\,0\.06\)\]{--tw-shadow: inset 0 0 0 1px rgba(15,23,42,.06);--tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.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-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);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)}.shadow-indigo-500\/20{--tw-shadow-color: rgb(99 102 241 / .2);--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-inset{--tw-ring-inset: inset}.ring-amber-200\/50{--tw-ring-color: rgb(253 230 138 / .5)}.ring-destructive\/20{--tw-ring-color: hsl(var(--destructive) / .2)}.ring-destructive\/30{--tw-ring-color: hsl(var(--destructive) / .3)}.ring-indigo-100{--tw-ring-opacity: 1;--tw-ring-color: rgb(224 231 255 / var(--tw-ring-opacity, 1))}.ring-indigo-500\/10{--tw-ring-color: rgb(99 102 241 / .1)}.ring-indigo-500\/15{--tw-ring-color: rgb(99 102 241 / .15)}.ring-primary\/20{--tw-ring-color: hsl(var(--primary) / .2)}.ring-ring{--tw-ring-color: hsl(var(--ring))}.ring-slate-200{--tw-ring-opacity: 1;--tw-ring-color: rgb(226 232 240 / var(--tw-ring-opacity, 1))}.ring-white\/5{--tw-ring-color: rgb(255 255 255 / .05)}.ring-offset-2{--tw-ring-offset-width: 2px}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.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)}.blur-3xl{--tw-blur: blur(64px);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)}.blur-\[100px\]{--tw-blur: blur(100px);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)}.blur-\[120px\]{--tw-blur: blur(120px);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)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.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:6px;height:6px}::-webkit-scrollbar-track{background-color:transparent}::-webkit-scrollbar-thumb{border-radius:9999px;background-color:hsl(var(--border))}::-webkit-scrollbar-thumb:hover{background-color:hsl(var(--muted-foreground) / .4)}*: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-color: hsl(var(--primary));--tw-ring-offset-width: 2px;--tw-ring-offset-color: hsl(var(--background))}::-moz-selection{background-color:#818cf859}::selection{background-color:#818cf859}@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:Inter,SF Mono,IBM Plex Mono,JetBrains 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{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground\/50::-moz-placeholder{color:hsl(var(--muted-foreground) / .5)}.placeholder\:text-muted-foreground\/50::placeholder{color:hsl(var(--muted-foreground) / .5)}.before\:h-1\.5:before{content:var(--tw-content);height:.375rem}.before\:w-1\.5:before{content:var(--tw-content);width:.375rem}.before\:rounded-full:before{content:var(--tw-content);border-radius:9999px}.before\:bg-destructive:before{content:var(--tw-content);background-color:hsl(var(--destructive))}.before\:bg-emerald-500:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity, 1))}.before\:bg-success:before{content:var(--tw-content);background-color:hsl(var(--success))}.before\:bg-warning:before{content:var(--tw-content);background-color:hsl(var(--warning))}.first\:pt-0:first-child{padding-top:0}.last\:pb-0:last-child{padding-bottom:0}.focus-within\:bg-accent:focus-within{background-color:hsl(var(--accent))}.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:hsl(var(--border) / .6)}.hover\:border-primary\/20:hover{border-color:hsl(var(--primary) / .2)}.hover\:border-slate-300:hover{--tw-border-opacity: 1;border-color:rgb(203 213 225 / var(--tw-border-opacity, 1))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-accent\/80:hover{background-color:hsl(var(--accent) / .8)}.hover\:bg-destructive\/10:hover{background-color:hsl(var(--destructive) / .1)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-muted\/30:hover{background-color:hsl(var(--muted) / .3)}.hover\:bg-muted\/40:hover{background-color:hsl(var(--muted) / .4)}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-primary\/5:hover{background-color:hsl(var(--primary) / .05)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/45:hover{background-color:hsl(var(--secondary) / .45)}.hover\:bg-secondary\/50:hover{background-color:hsl(var(--secondary) / .5)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-slate-100:hover{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-white\/15:hover{background-color:#ffffff26}.hover\:bg-white\/20:hover{background-color:#fff3}.hover\:bg-white\/70:hover{background-color:#ffffffb3}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-primary:hover{color:hsl(var(--primary))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-slate-900:hover{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity, 1))}.hover\:text-slate-950:hover{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_20px_50px_-30px_rgba\(15\,23\,42\,0\.25\)\]:hover{--tw-shadow: 0 20px 50px -30px rgba(15,23,42,.25);--tw-shadow-colored: 0 20px 50px -30px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.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:calc(var(--radius) - 2px)}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-accent\/80:focus{background-color:hsl(var(--accent) / .8)}.focus\:bg-primary:focus{background-color:hsl(var(--primary))}.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{color:hsl(var(--accent-foreground))}.focus\:text-primary-foreground:focus{color:hsl(var(--primary-foreground))}.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-color: hsl(var(--ring))}.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-inset:focus-visible{--tw-ring-inset: inset}.focus-visible\:ring-primary:focus-visible{--tw-ring-color: hsl(var(--primary))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.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:hsl(var(--primary) / .1)}.group[open] .group-open\:text-primary{color:hsl(var(--primary))}.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\:text-muted-foreground{color:hsl(var(--muted-foreground))}.group:hover .group-hover\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-destructive\/20{border-color:hsl(var(--destructive) / .2)}.group.destructive .group-\[\.destructive\]\:text-destructive{color:hsl(var(--destructive))}.group.destructive .group-\[\.destructive\]\:hover\:border-destructive\/30:hover{border-color:hsl(var(--destructive) / .3)}.group.destructive .group-\[\.destructive\]\:hover\:bg-destructive\/10:hover{background-color:hsl(var(--destructive) / .1)}.group.destructive .group-\[\.destructive\]\:hover\:text-destructive:hover{color:hsl(var(--destructive))}.group.destructive .group-\[\.destructive\]\:focus\:ring-destructive:focus{--tw-ring-color: hsl(var(--destructive))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color: #dc2626}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.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]{border-color:hsl(var(--primary))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent\/80[data-state=open]{background-color:hsl(var(--accent) / .8)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[state\=active\]\:font-semibold[data-state=active]{font-weight:600}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.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-\[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-\[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]{color:hsl(var(--foreground))}.dark\:border-amber-700:is([data-theme=dark] *){--tw-border-opacity: 1;border-color:rgb(180 83 9 / var(--tw-border-opacity, 1))}.dark\:border-amber-800:is([data-theme=dark] *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-amber-900\/50:is([data-theme=dark] *){border-color:#78350f80}.dark\:border-border:is([data-theme=dark] *){border-color:hsl(var(--border))}.dark\:border-emerald-700:is([data-theme=dark] *){--tw-border-opacity: 1;border-color:rgb(4 120 87 / var(--tw-border-opacity, 1))}.dark\:border-red-700:is([data-theme=dark] *){--tw-border-opacity: 1;border-color:rgb(185 28 28 / var(--tw-border-opacity, 1))}.dark\:bg-amber-950:is([data-theme=dark] *){--tw-bg-opacity: 1;background-color:rgb(69 26 3 / var(--tw-bg-opacity, 1))}.dark\:bg-amber-950\/30:is([data-theme=dark] *){background-color:#451a034d}.dark\:bg-amber-950\/40:is([data-theme=dark] *){background-color:#451a0366}.dark\:bg-emerald-950:is([data-theme=dark] *){--tw-bg-opacity: 1;background-color:rgb(2 44 34 / var(--tw-bg-opacity, 1))}.dark\:bg-emerald-950\/40:is([data-theme=dark] *){background-color:#022c2266}.dark\:bg-indigo-950\/40:is([data-theme=dark] *){background-color:#1e1b4b66}.dark\:bg-pink-950\/40:is([data-theme=dark] *){background-color:#50072466}.dark\:bg-red-950:is([data-theme=dark] *){--tw-bg-opacity: 1;background-color:rgb(69 10 10 / var(--tw-bg-opacity, 1))}.dark\:bg-red-950\/40:is([data-theme=dark] *){background-color:#450a0a66}.dark\:bg-secondary:is([data-theme=dark] *){background-color:hsl(var(--secondary))}.dark\:bg-slate-900:is([data-theme=dark] *){--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.dark\:bg-violet-950\/40:is([data-theme=dark] *){background-color:#2e106566}.dark\:text-amber-200:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity, 1))}.dark\:text-amber-300:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-emerald-100:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(209 250 229 / var(--tw-text-opacity, 1))}.dark\:text-emerald-200:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(167 243 208 / var(--tw-text-opacity, 1))}.dark\:text-emerald-400:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.dark\:text-indigo-400:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(129 140 248 / var(--tw-text-opacity, 1))}.dark\:text-pink-400:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(244 114 182 / var(--tw-text-opacity, 1))}.dark\:text-red-200:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-slate-50:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(248 250 252 / var(--tw-text-opacity, 1))}.dark\:text-violet-400:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(167 139 250 / var(--tw-text-opacity, 1))}.dark\:ring-amber-500\/20:is([data-theme=dark] *){--tw-ring-color: rgb(245 158 11 / .2)}@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\:flex{display:flex}.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\:table-cell{display:table-cell}.md\:grid{display:grid}.md\:hidden{display:none}.md\:w-48{width:12rem}.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\:grid-cols-\[minmax\(0\,1fr\)_auto_minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto}.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\:table-cell{display:table-cell}.lg\:hidden{display:none}.lg\:w-auto{width:auto}.lg\:max-w-3xl{max-width:48rem}.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-\[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\: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-\[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\.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}.\[\&_\:\:selection\]\:bg-blue-500\/40 ::-moz-selection{background-color:#3b82f666}.\[\&_\:\:selection\]\:bg-blue-500\/40 ::selection{background-color:#3b82f666}.\[\&_\:\:selection\]\:bg-indigo-400\/40 ::-moz-selection{background-color:#818cf866}.\[\&_\:\:selection\]\:bg-indigo-400\/40 ::selection{background-color:#818cf866}.\[\&_\:\:selection\]\:text-white ::-moz-selection{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.\[\&_\:\:selection\]\:text-white ::selection{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.\[\&_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{border-color:hsl(var(--border))}
@@ -1,17 +0,0 @@
1
- import{B as v,c as p}from"./global-zt8jbW7F.js";import{r as u,j as e,a4 as O,a7 as L,a8 as N,a9 as g,aa as b,ab as w,P as _,ac as K,ad as T,ae as P,af as R,ag as E,ah as D,ai as k,a6 as q,q as U}from"./vendor-m8O77Czp.js";import{c as A}from"./clipboard-BnAnBk_-.js";import{p as B}from"./package-CdOrNWtP.js";const S="/assets/live-dashboard-B7vLOY_S.png",G="/assets/live-logs-PRpgTV6S.png",W="/assets/live-model-management-xkBDeuLk.png",F="/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",j=B.version,M=(n,r)=>r[n],s={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"+j+" · Rust 内核 · 完全开源",en:"v"+j+" · 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
- ANTHROPIC_API_KEY=sk-ant-...
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
- # 是 key 过期?还是 endpoint 写错了?
5
- # Or has the key been rotated?`},{title:{zh:"换模型像拆地雷",en:"Swapping models is a minefield"},body:{zh:"想从 GPT-4o 换 Claude Sonnet?要么 grep 30 个文件挨个改,要么改一堆环境变量然后祈祷。",en:"Want to try Claude Sonnet instead of GPT-4o? Either grep 30 files or rotate a pile of env vars and pray."},sample:`- model: gpt-4o
6
- + model: claude-sonnet-4-5
7
- // 30 处需要同步修改…`}]},how:{eyebrow:{zh:"怎么解决",en:"The fix"},title:{zh:"一个本地入口,背后什么都能换",en:"One local endpoint. Anything behind it can change."},description:{zh:"客户端只认 cc-gw。模型、provider、路由策略,全都在网关里调,业务代码不动。",en:"Your clients only know cc-gw. Models, providers, routing rules — all live in the gateway. Your code never moves."},diagramLabels:{clients:{zh:"你的客户端",en:"Your clients"},gateway:{zh:"本地网关",en:"Local gateway"},providers:{zh:"上游 Provider",en:"Upstream providers"}},differentiator:{eyebrow:{zh:"一个真正的差异化",en:"A real superpower"},title:{zh:"用 Anthropic 的代码,调 GPT-4o;反过来也行",en:"Write Anthropic code, route to GPT-4o. Or the other way around."},body:{zh:"cc-gw 在网关层完成 Anthropic ↔ OpenAI Chat ↔ OpenAI Responses 三端六方向的协议转换,包括 SSE 流式。所以 Claude Code 里写的代码可以路由到 GPT-4o,OpenAI SDK 写的代码也可以路由到 Claude。",en:"cc-gw does full bidirectional translation across Anthropic, OpenAI Chat, and OpenAI Responses — including SSE streaming. So your Claude Code can run on GPT-4o, and your OpenAI SDK can run on Claude."},example:{zh:"示例:客户端协议 → 上游模型",en:"Example: client protocol → upstream model"}},flowSteps:[{zh:"客户端发起请求",en:"Client sends request"},{zh:"按规则匹配 Provider",en:"Routes to the right provider"},{zh:"协议转换 + 流式透传",en:"Translates protocol + streams through"},{zh:"回包同时落日志",en:"Logs the round-trip on the way back"}]},debug:{eyebrow:{zh:"排查",en:"Observability"},title:{zh:"出了事,能看到一整段对话",en:"When things break, see the whole conversation"},description:{zh:"不只是看一条请求成功没成功。完整的请求与响应都被保留下来,跨协议转换哪里出了问题,两侧一对照就清楚。",en:"More than a success or failure flag. Full requests and responses are retained, so when cross-protocol translation goes wrong you can diff both sides and see exactly where."},payload:{title:{zh:"四段 payload,分开存",en:"Four payloads, stored separately"},body:{zh:"每个请求都会保留:客户端发出的、网关转给上游的、上游回来的、再转回客户端的。跨协议有 bug?两侧对照一下就清楚了。",en:"For every request we keep four blobs: what the client sent, what we sent upstream, what came back, and what the client finally received. Cross-protocol bug? Compare both sides — done."},stages:[{zh:"客户端请求",en:"Client request"},{zh:"上游请求",en:"Upstream request"},{zh:"上游响应",en:"Upstream response"},{zh:"客户端响应",en:"Client response"}],clientSide:{zh:"客户端侧",en:"client side"},upstreamSide:{zh:"上游侧",en:"upstream side"}},pillars:[{icon:_,title:{zh:"Logs",en:"Logs"},body:{zh:"按 endpoint / Key / 状态码筛选,定位失败请求只要几秒。可选保留完整 payload。",en:"Filter by endpoint, key, or status code. Optional full-payload capture."}},{icon:K,title:{zh:"Events",en:"Events"},body:{zh:"配置变更、Key 增删、鉴权失败、并发拒绝,全部以事件形式可追溯。",en:"Config changes, key edits, auth failures, concurrency rejects — all auditable as events."}}]},local:{eyebrow:{zh:"本地优先",en:"Local-first"},title:{zh:"所有东西都在你机器的 ~/.cc-gw 下",en:"Everything lives under ~/.cc-gw on your machine"},description:{zh:"没有云端,没有遥测,没有外部依赖。配置可以版本管理,数据库可以直接打开,要离线跑就离线跑。",en:"No cloud. No telemetry. No external dependencies. Version-control your config, open the SQLite file with any tool, run it offline if you want to."},pillars:[{icon:T,title:{zh:"Key 加密落库",en:"Keys encrypted at rest"},body:{zh:"API Key 用 AES-256-GCM 加密存储,索引只走 SHA-256 哈希,明文永不落盘。",en:"API keys encrypted with AES-256-GCM. Lookups go through SHA-256 hashes — plaintext never hits disk."}},{icon:P,title:{zh:"按客户端独立 Key",en:"Per-client API keys"},body:{zh:"为不同客户端、环境、成员发独立 Key。可设并发上限,可配 endpoint 白名单,停用即时生效。",en:"Issue separate keys per client, env, or teammate. Set concurrency caps, restrict to specific endpoints, revoke instantly."}},{icon:R,title:{zh:"配置热改,无需重启",en:"Hot reload — no restart"},body:{zh:"改路由、加自定义 endpoint、调默认模型,控制台保存即生效。Rust 后端常驻,开发机也能长期挂着。",en:"Edit routing, add custom endpoints, change defaults — saves apply live. The Rust process is light enough to leave running on your laptop."}},{icon:E,title:{zh:"老用户数据无痛迁移",en:"Old data just works"},body:{zh:"从旧 Node 版本升级?config.json 和 gateway.db 直接继承,自动做 schema 迁移,历史日志一条不丢。",en:"Upgrading from the old Node build? Your config.json and gateway.db carry over — schema is migrated in place, no log loss."}}],treeCaption:{zh:"一切都在这个目录下,备份它就等于备份了整个 cc-gw。",en:"Back up this folder and you’ve backed up your entire cc-gw setup."}},start:{eyebrow:{zh:"开始",en:"Get started"},title:{zh:"4 步跑起来",en:"Up and running in four steps"},description:{zh:"不用先改团队流程。先让一个客户端走通,看到价值再往后扩。",en:"No team-wide migration. Get one client through first — expand from there."},steps:[{title:{zh:"安装",en:"Install"},body:{zh:"一条命令搞定,npm 会自动拉对应平台的预编译二进制。",en:"One command. npm grabs the prebuilt binary for your platform automatically."},code:"npm install -g @chenpu17/cc-gw"},{title:{zh:"启动",en:"Start"},body:{zh:"前台模式方便观察日志;想常驻就 `--daemon`。默认绑定 127.0.0.1:4100。",en:"Foreground for live logs, or `--daemon` to keep it running. Binds to 127.0.0.1:4100 by default."},code:"cc-gw start --foreground --port 4100"},{title:{zh:"加 Provider",en:"Add a provider"},body:{zh:"打开控制台,把你的 OpenAI / Anthropic / 兼容 provider 填进去。",en:"Open the console and plug in your OpenAI, Anthropic, or any compatible provider."},code:"open http://127.0.0.1:4100/ui"},{title:{zh:"指过去",en:"Point your client"},body:{zh:"客户端只改 baseURL。Anthropic 协议走根路径,OpenAI 协议加 /openai/v1 前缀。",en:"Just change baseURL. Anthropic protocol uses the root path; OpenAI uses /openai/v1."},code:`ANTHROPIC_BASE_URL='http://127.0.0.1:4100'
8
- OPENAI_BASE_URL='http://127.0.0.1:4100/openai/v1'`}]},console:{eyebrow:{zh:"控制台",en:"Console"},title:{zh:"不是摆设,是你每天用的地方",en:"Not for show — you’ll be in here daily"},description:{zh:"请求进来之后,趋势、日志、路由、Key 都在同一个台子里。",en:"Once requests start flowing, trends, logs, routing, and keys all live under one roof."}},fit:{eyebrow:{zh:"适合谁",en:"Who it’s for"},title:{zh:"诚实地说:它不是为所有人做的",en:"Honestly: it’s not for everyone"},description:{zh:"如果你的 AI 调用已经开始扩张,但又没到要上组织级治理平台的程度,cc-gw 多半正好卡在合适的位置。",en:"If your AI usage is growing but you’re not ready for an enterprise governance platform, cc-gw probably sits right where you need it."},yesTitle:{zh:"适合",en:"Good fit"},noTitle:{zh:"不适合",en:"Not a fit"},yes:[{zh:"同时在用 Claude Code、OpenAI SDK、Anthropic SDK",en:"Already juggling Claude Code, OpenAI SDK, and Anthropic SDK"},{zh:"2-10 人 AI 小队,需要共享入口和日志",en:"A 2–10 person AI team that needs a shared entrypoint and shared logs"},{zh:"10-100 人研发团队,开始多人共享模型调用",en:"A 10–100 dev team starting to share model calls across people"},{zh:"想自托管,对数据归属敏感",en:"You self-host. Data sovereignty matters."},{zh:"受不了把 key、baseURL 散在每个项目里",en:"You’re tired of keys and baseURLs sprinkled across every repo"}],no:[{zh:"需要跨 BU 治理、复杂审批流",en:"You need cross-BU governance and complex approval flows"},{zh:"需要企业 SSO 与组织级策略中台",en:"Enterprise SSO and org-level policy hubs"},{zh:"需要多副本 HA 集群",en:"High-availability multi-replica clusters"},{zh:"强 Compliance 场景(金融、医疗等)",en:"Heavily regulated industries (finance, healthcare)"},{zh:"希望一套大平台囊括所有 AI 成本结算",en:"A single platform to handle all AI cost reconciliation"}]},faq:{eyebrow:{zh:"FAQ",en:"FAQ"},title:{zh:"你可能想问",en:"You probably want to ask"},description:{zh:"从是否值得装、会不会绑死、数据放哪几个最常见的疑问开始。",en:"Starting with the questions people ask most: is it worth it, does it lock me in, where does my data live."},items:[{q:{zh:"我一个人用,也值得装吗?",en:"I’m a solo dev — is it still worth it?"},a:{zh:"只用一个 provider、一个项目,可能不需要。但只要你同时在用 Claude Code 和 OpenAI SDK,或者经常切模型,统一入口能省下来的维护时间会很可观。",en:"If you use one provider and one project, probably not. But the moment you’re juggling Claude Code and the OpenAI SDK — or switching models often — having one entrypoint pays back fast."}},{q:{zh:"会不会被 cc-gw 绑死?",en:"Will I get locked into cc-gw?"},a:{zh:"不会。客户端用的还是 OpenAI / Anthropic 标准协议,不要 cc-gw 也能工作。配置和数据都是 JSON + SQLite,可以直接读、直接迁。",en:"No. Your clients still speak standard OpenAI / Anthropic protocols and work fine without cc-gw. Your config is plain JSON, your data is plain SQLite — read or migrate it any time."}},{q:{zh:"数据存在哪里?会上传吗?",en:"Where does my data live? Does anything get uploaded?"},a:{zh:"全部在本机 ~/.cc-gw/ 下:config.json、SQLite 数据库、加密密钥、日志文件。请求只在你和上游 provider 之间转发,cc-gw 自己不发遥测。",en:"Everything is local under ~/.cc-gw/: config.json, the SQLite database, the encryption key, and log files. Requests flow only between you and the upstream provider — cc-gw sends no telemetry."}},{q:{zh:"它和 LiteLLM、One API 这些有啥区别?",en:"How is it different from LiteLLM or One API?"},a:{zh:"主要三点:(1) 默认本地优先、零云依赖;(2) 跨协议三端六方向真正双向转换,包括 SSE 流式;(3) 内置四段 payload 存储,专门给跨协议排查用。",en:"Three things: (1) local-first by default, zero cloud dependency; (2) true bidirectional translation across Anthropic, OpenAI Chat, and OpenAI Responses — streaming included; (3) built-in four-segment payload storage purpose-built for cross-protocol debugging."}},{q:{zh:"安装需要本机有 Rust 吗?",en:"Do I need Rust installed?"},a:{zh:"不需要。npm 包通过 optionalDependencies 自动拉对应平台的预编译二进制:macOS arm64、Linux x64/arm64、Windows x64。",en:"No. The npm package uses optionalDependencies to pull the right prebuilt binary for your platform: macOS arm64, Linux x64/arm64, and Windows x64."}}]},cta:{title:{zh:"今天就把这件事处理掉",en:"Take care of this today"},body:{zh:"一条命令就能装好。先在本地跑通一个客户端,看到价值再往后扩。",en:"One command to install. Get one client running locally, see if it pays back, then keep going."}},footer:{tagline:{zh:"cc-gw · 给开发者和小团队的本地优先 AI 网关",en:"cc-gw · A local-first AI gateway for developers and small teams"},console:{zh:"控制台",en:"Console"},changelog:{zh:"更新日志",en:"Changelog"}}},Q=["Claude Code","OpenAI SDK","Anthropic SDK","cURL","LangChain","Vercel AI SDK"],J=[{client:"Anthropic SDK",upstream:{zh:"OpenAI · GPT-4o",en:"OpenAI · GPT-4o"},accent:"from-amber-500/20 to-rose-500/20 text-amber-600"},{client:"OpenAI SDK",upstream:{zh:"Anthropic · Claude Sonnet",en:"Anthropic · Claude Sonnet"},accent:"from-cyan-500/20 to-indigo-500/20 text-cyan-600"},{client:"Claude Code",upstream:{zh:"本地 Ollama / 自建模型",en:"Local Ollama / self-hosted"},accent:"from-emerald-500/20 to-teal-500/20 text-emerald-600"}],Z={zh:"兼容 provider · 自建模型",en:"Compatible providers · self-hosted"},z={copy:{zh:"复制",en:"Copy"},copied:{zh:"已复制",en:"Copied"}},V=`~/.cc-gw/
9
- ├── config.json # 直接编辑也行 / edit by hand if you like
10
- ├── encryption.key # 自动生成 / auto-generated
11
- ├── cc-gw.pid
12
- ├── data/
13
- │ └── gateway.db # SQLite (WAL) — 直接 sqlite3 打开
14
- └── logs/
15
- └── cc-gw.log`,y=[{id:"dashboard",shot:{zh:S,en:C},label:{zh:"总览",en:"Dashboard"},blurb:{zh:"今天的请求量、延迟、健康状态,一屏看完。",en:"Today’s request volume, latency, and health — at a glance."}},{id:"logs",shot:{zh:G,en:Y},label:{zh:"请求日志",en:"Logs"},blurb:{zh:"按 endpoint / Key / 状态码筛,几秒定位。",en:"Filter by endpoint, key, or status. Find issues in seconds."}},{id:"routing",shot:{zh:W,en:H},label:{zh:"模型路由",en:"Routing"},blurb:{zh:"别名、通配匹配、fallback 链全在 UI 里维护。",en:"Aliases, wildcards, and fallback chains — all in the UI."}},{id:"keys",shot:{zh:F,en:$},label:{zh:"API Keys",en:"API Keys"},blurb:{zh:"按客户端发独立 Key,可设并发上限。",en:"Per-client keys with concurrency caps."}}];function X(n){if(n.trim().startsWith("#"))return e.jsx("span",{className:"text-slate-500",children:n});if(n.startsWith("$ "))return e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"select-none text-emerald-400",children:"$ "}),e.jsx("span",{className:"text-slate-100",children:n.slice(2)})]});const r=n.match(/^(\s*)([A-Z_][\w]*)(\s*=\s*)(.+)$/);if(r){const[,i,x,m,d]=r,t=d.startsWith("'")||d.startsWith('"');return e.jsxs(e.Fragment,{children:[e.jsx("span",{children:i}),e.jsx("span",{className:"text-indigo-300",children:x}),e.jsx("span",{className:"text-slate-400",children:m}),e.jsx("span",{className:t?"text-emerald-300":"text-slate-100",children:d})]})}return e.jsx("span",{className:"text-slate-100",children:n})}function ee({code:n,label:r,className:i,copyLabel:x,copiedLabel:m}){const[d,t]=u.useState(!1);async function c(){await A(n),t(!0),window.setTimeout(()=>t(!1),1800)}return e.jsxs("div",{className:p("relative min-w-0",i),children:[e.jsxs("button",{type:"button","aria-label":`Copy ${r}`,onClick:c,className:"absolute right-3 top-3 z-10 inline-flex items-center gap-1.5 rounded-lg border border-white/10 bg-white/10 px-2.5 py-1 text-[11px] font-medium text-slate-100 transition hover:bg-white/15",children:[d?e.jsx(b,{className:"h-3.5 w-3.5"}):e.jsx(k,{className:"h-3.5 w-3.5"}),d?m:x]}),e.jsx("pre",{className:"max-w-full overflow-x-auto rounded-2xl bg-slate-950 p-5 font-mono text-[13px] leading-7 text-slate-100 ring-1 ring-white/5 [&_::selection]:bg-blue-500/40 [&_::selection]:text-white",children:e.jsx("code",{children:n.split(`
16
- `).map((f,a)=>e.jsx("span",{className:"block",children:X(f)??" "},a))})})]})}function te(){const[n,r]=u.useState(!1),i="npm install -g @chenpu17/cc-gw";async function x(){await A(i),r(!0),window.setTimeout(()=>r(!1),1800)}return e.jsxs("div",{className:"inline-flex w-full max-w-md items-center gap-2 rounded-2xl border border-white/15 bg-white/5 py-2 pl-4 pr-2 backdrop-blur-sm",children:[e.jsx("span",{className:"select-none font-mono text-emerald-400",children:"$"}),e.jsx("span",{className:"select-all truncate font-mono text-sm text-slate-100",children:i}),e.jsx("button",{type:"button","aria-label":"Copy install command",onClick:x,className:"ml-auto inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-lg bg-white/10 text-slate-200 transition hover:bg-white/20",children:n?e.jsx(b,{className:"h-3.5 w-3.5 text-emerald-400"}):e.jsx(k,{className:"h-3.5 w-3.5"})})]})}function h({eyebrow:n,title:r,description:i}){return e.jsxs("div",{className:"max-w-3xl",children:[e.jsx("div",{className:"font-mono text-xs font-semibold uppercase tracking-[0.22em] text-indigo-600",children:n}),e.jsx("h2",{className:"mt-4 text-3xl font-semibold tracking-[-0.02em] text-slate-950 sm:text-4xl",children:r}),e.jsx("p",{className:"mt-4 text-base leading-8 text-slate-600 sm:text-lg",children:i})]})}function se(){const[n,r]=u.useState("zh"),[i,x]=u.useState(y[0].id),[m,d]=u.useState(0),t=a=>M(n,a),c=y.find(a=>a.id===i)??y[0],f=[{href:"#why",label:t(s.nav.why)},{href:"#how",label:t(s.nav.how)},{href:"#debug",label:t(s.nav.debug)},{href:"#local",label:t(s.nav.local)},{href:"#start",label:t(s.nav.start)},{href:"#faq",label:t(s.nav.faq)}];return e.jsxs("div",{className:"min-h-screen bg-white text-slate-950 antialiased",children:[e.jsxs("header",{className:"sticky top-0 z-30 border-b border-slate-200/70 bg-white/85 backdrop-blur-xl",children:[e.jsxs("div",{className:"mx-auto flex w-full max-w-6xl items-center justify-between gap-4 px-6 py-3.5 sm:px-8 lg:px-10",children:[e.jsxs("a",{href:"#top",className:"flex items-center gap-2.5",children:[e.jsx(v,{className:"h-9 w-9",title:"cc-gw"}),e.jsxs("div",{className:"leading-tight",children:[e.jsx("div",{className:"text-[15px] font-semibold tracking-tight",children:"cc-gw"}),e.jsx("div",{className:"font-mono text-[10px] uppercase tracking-[0.18em] text-slate-500",children:"local-first ai gateway"})]})]}),e.jsx("nav",{className:"hidden items-center gap-1 lg:flex",children:f.map(a=>e.jsx("a",{href:a.href,className:"rounded-lg px-3 py-1.5 text-sm text-slate-600 transition hover:bg-slate-100 hover:text-slate-900",children:a.label},a.href))}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{type:"button",onClick:()=>r(n==="zh"?"en":"zh"),"aria-label":"Toggle language",className:"inline-flex items-center gap-1.5 rounded-lg border border-slate-200 bg-white px-2.5 py-1.5 text-xs font-semibold text-slate-700 transition hover:border-slate-300",children:[e.jsx(O,{className:"h-3.5 w-3.5"}),n==="zh"?"EN":"中文"]}),e.jsx("a",{href:"/ui/",className:"hidden rounded-lg border border-slate-200 bg-white px-3.5 py-1.5 text-sm font-medium text-slate-700 transition hover:border-slate-300 hover:text-slate-950 sm:inline-flex",children:t(s.ctaConsole)}),e.jsxs("a",{href:"https://github.com/chenpu17/cc-gw2",className:"inline-flex items-center gap-1.5 rounded-lg bg-slate-950 px-3.5 py-1.5 text-sm font-medium text-white transition hover:bg-slate-800",children:[e.jsx(L,{className:"h-4 w-4"}),"GitHub"]})]})]}),e.jsx("nav",{"aria-label":"Mobile section navigation",className:"flex gap-1.5 overflow-x-auto border-t border-slate-200/70 px-4 py-2 lg:hidden",children:[...f,{href:"/ui/",label:t(s.ctaConsole)}].map(a=>e.jsx("a",{href:a.href,className:"shrink-0 rounded-lg bg-slate-100 px-3 py-1 text-xs font-medium text-slate-700",children:a.label},a.href))})]}),e.jsxs("main",{id:"top",children:[e.jsxs("section",{className:"relative overflow-hidden bg-slate-950 text-white [&_::selection]:bg-indigo-400/40 [&_::selection]:text-white",children:[e.jsx("div",{"aria-hidden":!0,className:"absolute inset-0 opacity-[0.18]",style:{backgroundImage:"linear-gradient(to right, rgba(148,163,184,0.18) 1px, transparent 1px), linear-gradient(to bottom, rgba(148,163,184,0.18) 1px, transparent 1px)",backgroundSize:"48px 48px",maskImage:"radial-gradient(ellipse at center top, black 30%, transparent 75%)",WebkitMaskImage:"radial-gradient(ellipse at center top, black 30%, transparent 75%)"}}),e.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute -top-40 left-1/2 h-[640px] w-[1100px] -translate-x-1/2 rounded-full opacity-60 blur-[120px]",style:{background:"radial-gradient(closest-side, rgba(99,102,241,0.55), transparent 70%), radial-gradient(closest-side at 70% 60%, rgba(34,211,238,0.35), transparent 70%)"}}),e.jsxs("div",{className:"relative mx-auto w-full max-w-6xl px-6 pb-24 pt-20 sm:px-8 lg:px-10 lg:pt-28",children:[e.jsxs("div",{className:"mx-auto max-w-3xl text-center",children:[e.jsxs("span",{className:"inline-flex items-center gap-2 rounded-full border border-white/15 bg-white/5 px-3.5 py-1 text-xs font-medium text-slate-200 backdrop-blur-sm",children:[e.jsx("span",{className:"inline-flex h-1.5 w-1.5 rounded-full bg-emerald-400 shadow-[0_0_10px_rgba(52,211,153,0.8)]"}),t(s.hero.badge)]}),e.jsxs("h1",{className:"mt-7 text-[2.4rem] font-bold leading-[1.05] tracking-[-0.035em] sm:text-6xl",children:[t(s.hero.h1Top),e.jsx("span",{className:"mt-2 block bg-gradient-to-r from-indigo-300 via-violet-300 to-cyan-300 bg-clip-text text-transparent",children:t(s.hero.h1Bottom)})]}),e.jsx("p",{className:"mx-auto mt-6 max-w-2xl text-base leading-8 text-slate-300 sm:text-lg",children:t(s.hero.lead)}),e.jsxs("div",{className:"mt-9 flex flex-col items-center justify-center gap-3 sm:flex-row",children:[e.jsxs("a",{href:"#start",className:"group inline-flex items-center justify-center gap-2 rounded-xl bg-white px-5 py-3 text-sm font-semibold text-slate-950 shadow-lg shadow-indigo-500/20 transition hover:bg-slate-100",children:[e.jsx(N,{className:"h-4 w-4"}),t(s.ctaInstall),e.jsx(g,{className:"h-4 w-4 transition-transform group-hover:translate-x-0.5"})]}),e.jsx("a",{href:"#console",className:"inline-flex items-center justify-center gap-2 rounded-xl border border-white/20 bg-white/5 px-5 py-3 text-sm font-semibold text-white backdrop-blur-sm transition hover:bg-white/10",children:t(s.ctaPreview)})]}),e.jsxs("div",{className:"mt-7 flex flex-col items-center gap-2",children:[e.jsx(te,{}),e.jsx("p",{className:"font-mono text-[11px] text-slate-400",children:t(s.hero.note)})]}),e.jsx("ul",{className:"mt-10 grid gap-3 text-left sm:grid-cols-3",children:s.hero.proof.map((a,l)=>e.jsxs("li",{className:"flex items-start gap-2 rounded-xl border border-white/10 bg-white/5 px-4 py-3 text-[13px] leading-6 text-slate-200 backdrop-blur-sm",children:[e.jsx(b,{className:"mt-0.5 h-4 w-4 shrink-0 text-emerald-400"}),e.jsx("span",{children:t(a)})]},l))})]}),e.jsxs("div",{className:"relative mx-auto mt-16 max-w-5xl",children:[e.jsx("div",{"aria-hidden":!0,className:"absolute inset-x-10 -top-10 h-40 rounded-full bg-gradient-to-r from-indigo-500/30 via-violet-500/25 to-cyan-500/30 blur-3xl"}),e.jsxs("div",{className:"relative overflow-hidden rounded-2xl border border-white/15 bg-slate-900/60 p-1.5 shadow-[0_40px_120px_-20px_rgba(2,6,23,0.8)] ring-1 ring-white/5 backdrop-blur",children:[e.jsxs("div",{className:"flex items-center gap-1.5 border-b border-white/10 px-4 py-2.5",children:[e.jsx("span",{className:"h-2.5 w-2.5 rounded-full bg-rose-400/70"}),e.jsx("span",{className:"h-2.5 w-2.5 rounded-full bg-amber-300/70"}),e.jsx("span",{className:"h-2.5 w-2.5 rounded-full bg-emerald-400/70"}),e.jsx("div",{className:"ml-3 flex-1 truncate rounded-md bg-white/5 px-3 py-1 text-center font-mono text-[11px] text-slate-300",children:"127.0.0.1:4100/ui/"})]}),e.jsx("img",{src:n==="en"?C:S,alt:"cc-gw dashboard screenshot",className:"block w-full rounded-b-xl",loading:"eager"})]})]}),e.jsxs("div",{className:"mt-16",children:[e.jsx("p",{className:"text-center font-mono text-[11px] uppercase tracking-[0.22em] text-slate-400",children:t(s.hero.works)}),e.jsx("div",{className:"mt-5 flex flex-wrap items-center justify-center gap-2",children:Q.map(a=>e.jsx("span",{className:"rounded-full border border-white/10 bg-white/5 px-3.5 py-1.5 text-sm text-slate-200 backdrop-blur-sm",children:a},a))})]})]})]}),e.jsxs("section",{id:"why",className:"mx-auto w-full max-w-6xl px-6 py-20 sm:px-8 lg:px-10 lg:py-24",children:[e.jsx(h,{eyebrow:t(s.why.eyebrow),title:t(s.why.title),description:t(s.why.description)}),e.jsx("div",{className:"mt-12 grid gap-5 md:grid-cols-3",children:s.why.cards.map(a=>e.jsxs("div",{className:"group relative overflow-hidden rounded-2xl border border-slate-200 bg-white p-6 transition hover:border-slate-300 hover:shadow-[0_20px_50px_-30px_rgba(15,23,42,0.25)]",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(w,{className:"h-4 w-4 text-rose-500"}),e.jsx("h3",{className:"text-base font-semibold text-slate-950",children:t(a.title)})]}),e.jsx("p",{className:"mt-3 text-sm leading-7 text-slate-600",children:t(a.body)}),e.jsx("pre",{className:"mt-5 overflow-hidden rounded-lg bg-slate-50 p-3 font-mono text-[11.5px] leading-6 text-slate-500 ring-1 ring-slate-200",children:a.sample})]},a.title.en))})]}),e.jsx("section",{id:"how",className:"border-y border-slate-200/80 bg-slate-50/60",children:e.jsxs("div",{className:"mx-auto w-full max-w-6xl px-6 py-20 sm:px-8 lg:px-10 lg:py-24",children:[e.jsx(h,{eyebrow:t(s.how.eyebrow),title:t(s.how.title),description:t(s.how.description)}),e.jsxs("div",{className:"mt-12 grid gap-6 lg:grid-cols-[1fr_auto_1fr_auto_1fr] lg:items-stretch",children:[e.jsxs("div",{className:"rounded-2xl border border-slate-200 bg-white p-5",children:[e.jsx("div",{className:"font-mono text-[11px] font-semibold uppercase tracking-[0.18em] text-slate-500",children:t(s.how.diagramLabels.clients)}),e.jsxs("ul",{className:"mt-3 space-y-2 text-sm text-slate-700",children:[e.jsx("li",{className:"rounded-lg bg-slate-50 px-3 py-2",children:"Claude Code"}),e.jsx("li",{className:"rounded-lg bg-slate-50 px-3 py-2",children:"OpenAI SDK"}),e.jsx("li",{className:"rounded-lg bg-slate-50 px-3 py-2",children:"Anthropic SDK"}),e.jsx("li",{className:"rounded-lg bg-slate-50 px-3 py-2 text-slate-500",children:"cURL · LangChain · …"})]})]}),e.jsx("div",{className:"hidden flex-col items-center justify-center text-slate-300 lg:flex",children:e.jsx(g,{className:"h-6 w-6"})}),e.jsxs("div",{className:"rounded-2xl border border-indigo-200 bg-gradient-to-br from-indigo-50 via-white to-cyan-50 p-5 ring-1 ring-indigo-100",children:[e.jsx("div",{className:"font-mono text-[11px] font-semibold uppercase tracking-[0.18em] text-indigo-600",children:t(s.how.diagramLabels.gateway)}),e.jsx("div",{className:"mt-3 rounded-xl bg-slate-950 px-4 py-3 font-mono text-[12px] text-slate-100",children:"127.0.0.1:4100"}),e.jsx("ul",{className:"mt-3 space-y-1.5 text-[13px] text-slate-700",children:s.how.flowSteps.map((a,l)=>e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"mt-1 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full bg-indigo-100 font-mono text-[10px] font-semibold text-indigo-700",children:l+1}),e.jsx("span",{children:t(a)})]},l))})]}),e.jsx("div",{className:"hidden flex-col items-center justify-center text-slate-300 lg:flex",children:e.jsx(g,{className:"h-6 w-6"})}),e.jsxs("div",{className:"rounded-2xl border border-slate-200 bg-white p-5",children:[e.jsx("div",{className:"font-mono text-[11px] font-semibold uppercase tracking-[0.18em] text-slate-500",children:t(s.how.diagramLabels.providers)}),e.jsxs("ul",{className:"mt-3 space-y-2 text-sm text-slate-700",children:[e.jsx("li",{className:"rounded-lg bg-slate-50 px-3 py-2",children:"OpenAI"}),e.jsx("li",{className:"rounded-lg bg-slate-50 px-3 py-2",children:"Anthropic"}),e.jsx("li",{className:"rounded-lg bg-slate-50 px-3 py-2",children:"Azure / Bedrock"}),e.jsx("li",{className:"rounded-lg bg-slate-50 px-3 py-2 text-slate-500",children:t(Z)})]})]})]}),e.jsx("div",{className:"mt-14 overflow-hidden rounded-3xl border border-slate-200 bg-white",children:e.jsxs("div",{className:"grid gap-0 lg:grid-cols-[minmax(0,1fr)_minmax(0,1.05fr)]",children:[e.jsxs("div",{className:"border-b border-slate-200 p-8 lg:border-b-0 lg:border-r lg:p-10",children:[e.jsx("div",{className:"font-mono text-[11px] font-semibold uppercase tracking-[0.22em] text-indigo-600",children:t(s.how.differentiator.eyebrow)}),e.jsx("h3",{className:"mt-3 text-2xl font-semibold tracking-[-0.01em] text-slate-950",children:t(s.how.differentiator.title)}),e.jsx("p",{className:"mt-4 text-sm leading-7 text-slate-600",children:t(s.how.differentiator.body)})]}),e.jsxs("div",{className:"bg-slate-50/60 p-8 lg:p-10",children:[e.jsx("div",{className:"font-mono text-[11px] font-semibold uppercase tracking-[0.18em] text-slate-500",children:t(s.how.differentiator.example)}),e.jsx("ul",{className:"mt-4 space-y-3",children:J.map(a=>e.jsxs("li",{className:"flex items-center gap-3 rounded-xl bg-white px-4 py-3 ring-1 ring-slate-200",children:[e.jsx("span",{className:"rounded-md bg-slate-100 px-2 py-1 font-mono text-xs text-slate-700",children:a.client}),e.jsx(g,{className:"h-3.5 w-3.5 text-slate-400"}),e.jsx("span",{className:"rounded-md bg-gradient-to-r px-2 py-1 font-mono text-xs ring-1 ring-inset ring-slate-200 bg-slate-950 text-slate-100",children:t(a.upstream)})]},a.client))})]})]})})]})}),e.jsxs("section",{id:"debug",className:"mx-auto w-full max-w-6xl px-6 py-20 sm:px-8 lg:px-10 lg:py-24",children:[e.jsx(h,{eyebrow:t(s.debug.eyebrow),title:t(s.debug.title),description:t(s.debug.description)}),e.jsx("div",{className:"mt-12 grid gap-px overflow-hidden rounded-2xl bg-slate-200 ring-1 ring-slate-200 md:grid-cols-3",children:s.debug.pillars.map(({icon:a,title:l,body:o})=>e.jsxs("div",{className:"bg-white p-7",children:[e.jsx("div",{className:"inline-flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br from-indigo-500/10 to-cyan-500/10 text-indigo-600 ring-1 ring-indigo-500/15",children:e.jsx(a,{className:"h-5 w-5"})}),e.jsx("h3",{className:"mt-5 text-base font-semibold text-slate-950",children:t(l)}),e.jsx("p",{className:"mt-2 text-sm leading-7 text-slate-600",children:t(o)})]},l.en))}),e.jsxs("div",{className:"mt-10 overflow-hidden rounded-2xl border border-slate-200 bg-gradient-to-br from-slate-50 to-white p-8",children:[e.jsx("h3",{className:"text-xl font-semibold text-slate-950",children:t(s.debug.payload.title)}),e.jsx("p",{className:"mt-3 max-w-3xl text-sm leading-7 text-slate-600",children:t(s.debug.payload.body)}),e.jsx("div",{className:"mt-6 grid gap-3 sm:grid-cols-2 lg:grid-cols-4",children:s.debug.payload.stages.map((a,l)=>{const o=l===0||l===3;return e.jsxs("div",{className:p("rounded-xl border px-4 py-4",o?"border-cyan-200 bg-cyan-50/60":"border-indigo-200 bg-indigo-50/60"),children:[e.jsxs("div",{className:"font-mono text-[10px] font-semibold uppercase tracking-[0.18em] text-slate-500",children:["payload [",l+1,"/4]"]}),e.jsx("div",{className:"mt-2 text-sm font-semibold text-slate-900",children:t(a)}),e.jsx("div",{className:"mt-1 font-mono text-[11px] text-slate-500",children:t(o?s.debug.payload.clientSide:s.debug.payload.upstreamSide)})]},l)})})]})]}),e.jsx("section",{id:"local",className:"border-y border-slate-200/80 bg-slate-50/60",children:e.jsxs("div",{className:"mx-auto w-full max-w-6xl px-6 py-20 sm:px-8 lg:px-10 lg:py-24",children:[e.jsx(h,{eyebrow:t(s.local.eyebrow),title:t(s.local.title),description:t(s.local.description)}),e.jsxs("div",{className:"mt-12 grid gap-8 lg:grid-cols-[minmax(0,1.05fr)_minmax(0,0.95fr)] lg:items-start",children:[e.jsx("div",{className:"grid gap-px overflow-hidden rounded-2xl bg-slate-200 ring-1 ring-slate-200 sm:grid-cols-2",children:s.local.pillars.map(({icon:a,title:l,body:o})=>e.jsxs("div",{className:"bg-white p-6",children:[e.jsx("div",{className:"inline-flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br from-indigo-500/10 to-cyan-500/10 text-indigo-600 ring-1 ring-indigo-500/15",children:e.jsx(a,{className:"h-5 w-5"})}),e.jsx("h3",{className:"mt-4 text-base font-semibold text-slate-950",children:t(l)}),e.jsx("p",{className:"mt-2 text-sm leading-7 text-slate-600",children:t(o)})]},l.en))}),e.jsxs("div",{children:[e.jsxs("div",{className:"overflow-hidden rounded-2xl border border-white/10 bg-slate-950 p-1.5 shadow-[0_30px_80px_-30px_rgba(15,23,42,0.45)]",children:[e.jsxs("div",{className:"flex items-center gap-1.5 px-3 py-2",children:[e.jsx("span",{className:"h-2.5 w-2.5 rounded-full bg-rose-400/70"}),e.jsx("span",{className:"h-2.5 w-2.5 rounded-full bg-amber-300/70"}),e.jsx("span",{className:"h-2.5 w-2.5 rounded-full bg-emerald-400/70"}),e.jsx("div",{className:"ml-3 flex-1 truncate rounded-md bg-white/5 px-3 py-1 font-mono text-[11px] text-slate-300",children:"~/.cc-gw"})]}),e.jsx("pre",{className:"overflow-x-auto px-5 pb-5 pt-2 font-mono text-[12.5px] leading-7 text-slate-100",children:e.jsx("code",{children:V.split(`
17
- `).map((a,l)=>e.jsx("span",{className:"block",children:a.includes("#")?e.jsxs(e.Fragment,{children:[e.jsx("span",{children:a.slice(0,a.indexOf("#"))}),e.jsx("span",{className:"text-slate-500",children:a.slice(a.indexOf("#"))})]}):a},l))})})]}),e.jsx("p",{className:"mt-4 px-1 text-sm leading-7 text-slate-600",children:t(s.local.treeCaption)})]})]})]})}),e.jsxs("section",{id:"start",className:"mx-auto w-full max-w-6xl px-6 py-20 sm:px-8 lg:px-10 lg:py-24",children:[e.jsx(h,{eyebrow:t(s.start.eyebrow),title:t(s.start.title),description:t(s.start.description)}),e.jsx("ol",{className:"mt-12 grid gap-5 md:grid-cols-2",children:s.start.steps.map((a,l)=>e.jsxs("li",{className:"flex flex-col rounded-2xl border border-slate-200 bg-white p-6",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"inline-flex h-8 min-w-[2rem] items-center justify-center rounded-lg bg-slate-950 px-2 font-mono text-xs font-semibold text-white",children:String(l+1).padStart(2,"0")}),e.jsx("h3",{className:"text-base font-semibold text-slate-950",children:t(a.title)})]}),e.jsx("p",{className:"mt-3 text-sm leading-7 text-slate-600",children:t(a.body)}),e.jsx("div",{className:"mt-5",children:e.jsx(ee,{label:`step ${l+1}: ${a.title.en}`,code:a.code,copyLabel:t(z.copy),copiedLabel:t(z.copied)})})]},a.title.en))})]}),e.jsx("section",{id:"console",className:"border-y border-slate-200/80 bg-slate-50/60",children:e.jsxs("div",{className:"mx-auto w-full max-w-6xl px-6 py-20 sm:px-8 lg:px-10 lg:py-24",children:[e.jsx(h,{eyebrow:t(s.console.eyebrow),title:t(s.console.title),description:t(s.console.description)}),e.jsxs("div",{className:"mt-12 grid gap-8 lg:grid-cols-[280px_minmax(0,1fr)]",children:[e.jsx("div",{role:"tablist","aria-orientation":"vertical",className:"flex flex-col gap-1.5",children:y.map(a=>{const l=a.id===i;return e.jsxs("button",{type:"button",role:"tab",id:`console-tab-${a.id}`,"aria-selected":l,"aria-controls":`console-panel-${a.id}`,onClick:()=>x(a.id),className:p("rounded-xl border px-4 py-3 text-left transition",l?"border-indigo-500/30 bg-white shadow-[0_10px_30px_-18px_rgba(79,70,229,0.4)] ring-1 ring-indigo-500/10":"border-transparent bg-transparent hover:bg-white/70"),children:[e.jsx("div",{className:p("text-sm font-semibold",l?"text-slate-950":"text-slate-700"),children:t(a.label)}),e.jsx("div",{className:p("mt-1 text-xs leading-5",l?"text-slate-600":"text-slate-500"),children:t(a.blurb)})]},a.id)})}),e.jsxs("div",{role:"tabpanel",id:`console-panel-${c.id}`,"aria-labelledby":`console-tab-${c.id}`,className:"overflow-hidden rounded-2xl border border-slate-200 bg-slate-950 p-1.5 shadow-[0_30px_80px_-30px_rgba(15,23,42,0.45)]",children:[e.jsxs("div",{className:"flex items-center gap-1.5 px-3 py-2",children:[e.jsx("span",{className:"h-2.5 w-2.5 rounded-full bg-rose-400/70"}),e.jsx("span",{className:"h-2.5 w-2.5 rounded-full bg-amber-300/70"}),e.jsx("span",{className:"h-2.5 w-2.5 rounded-full bg-emerald-400/70"}),e.jsxs("div",{className:"ml-3 flex-1 truncate rounded-md bg-white/5 px-3 py-1 font-mono text-[11px] text-slate-300",children:["127.0.0.1:4100/ui/",c.id]})]}),e.jsx("img",{src:t(c.shot),alt:`${t(c.label)} screenshot`,className:"block w-full rounded-b-xl"},c.id+n)]})]})]})}),e.jsxs("section",{id:"fit",className:"mx-auto w-full max-w-6xl px-6 py-20 sm:px-8 lg:px-10 lg:py-24",children:[e.jsx(h,{eyebrow:t(s.fit.eyebrow),title:t(s.fit.title),description:t(s.fit.description)}),e.jsxs("div",{className:"mt-12 grid gap-5 md:grid-cols-2",children:[e.jsxs("div",{className:"rounded-2xl border border-emerald-200/70 bg-gradient-to-br from-emerald-50 to-white p-7",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-lg bg-emerald-500/15 text-emerald-600",children:e.jsx(b,{className:"h-4 w-4"})}),e.jsx("h3",{className:"text-base font-semibold text-slate-950",children:t(s.fit.yesTitle)})]}),e.jsx("ul",{className:"mt-5 space-y-3",children:s.fit.yes.map((a,l)=>e.jsxs("li",{className:"flex items-start gap-3 text-sm leading-7 text-slate-700",children:[e.jsx(b,{className:"mt-1 h-4 w-4 shrink-0 text-emerald-500"}),t(a)]},l))})]}),e.jsxs("div",{className:"rounded-2xl border border-slate-200 bg-white p-7",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-lg bg-slate-200/70 text-slate-500",children:e.jsx(w,{className:"h-4 w-4"})}),e.jsx("h3",{className:"text-base font-semibold text-slate-950",children:t(s.fit.noTitle)})]}),e.jsx("ul",{className:"mt-5 space-y-3",children:s.fit.no.map((a,l)=>e.jsxs("li",{className:"flex items-start gap-3 text-sm leading-7 text-slate-600",children:[e.jsx(w,{className:"mt-1 h-4 w-4 shrink-0 text-slate-400"}),t(a)]},l))})]})]})]}),e.jsx("section",{id:"faq",className:"border-y border-slate-200/80 bg-slate-50/60",children:e.jsxs("div",{className:"mx-auto w-full max-w-6xl px-6 py-20 sm:px-8 lg:px-10 lg:py-24",children:[e.jsx(h,{eyebrow:t(s.faq.eyebrow),title:t(s.faq.title),description:t(s.faq.description)}),e.jsx("div",{className:"mx-auto mt-12 max-w-3xl divide-y divide-slate-200 rounded-2xl border border-slate-200 bg-white",children:s.faq.items.map((a,l)=>{const o=m===l;return e.jsxs("div",{children:[e.jsxs("button",{type:"button",onClick:()=>d(o?null:l),"aria-expanded":o,className:"flex w-full items-center justify-between gap-6 px-6 py-5 text-left",children:[e.jsx("span",{className:"text-base font-semibold text-slate-900",children:t(a.q)}),e.jsx(D,{className:p("h-5 w-5 shrink-0 text-slate-400 transition-transform",o&&"rotate-180 text-slate-700")})]}),o&&e.jsx("div",{className:"px-6 pb-6 text-sm leading-7 text-slate-600",children:t(a.a)})]},l)})})]})}),e.jsx("section",{className:"px-6 py-24 sm:px-8 lg:px-10",children:e.jsxs("div",{className:"relative mx-auto w-full max-w-6xl overflow-hidden rounded-3xl bg-slate-950 px-8 py-14 text-white shadow-[0_40px_100px_-40px_rgba(15,23,42,0.5)] sm:px-12 [&_::selection]:bg-indigo-400/40 [&_::selection]:text-white",children:[e.jsx("div",{"aria-hidden":!0,className:"absolute inset-0 opacity-25",style:{backgroundImage:"linear-gradient(to right, rgba(148,163,184,0.16) 1px, transparent 1px), linear-gradient(to bottom, rgba(148,163,184,0.16) 1px, transparent 1px)",backgroundSize:"40px 40px",maskImage:"radial-gradient(ellipse at center, black 30%, transparent 75%)",WebkitMaskImage:"radial-gradient(ellipse at center, black 30%, transparent 75%)"}}),e.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute -bottom-40 left-1/2 h-[460px] w-[900px] -translate-x-1/2 rounded-full opacity-50 blur-[100px]",style:{background:"radial-gradient(closest-side, rgba(99,102,241,0.6), transparent 70%), radial-gradient(closest-side at 70% 60%, rgba(34,211,238,0.4), transparent 70%)"}}),e.jsxs("div",{className:"relative grid gap-10 lg:grid-cols-[1.2fr_auto] lg:items-end",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-3xl font-semibold tracking-[-0.02em] sm:text-4xl",children:t(s.cta.title)}),e.jsx("p",{className:"mt-5 max-w-xl text-base leading-8 text-slate-300",children:t(s.cta.body)})]}),e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row lg:flex-col lg:items-end",children:[e.jsxs("a",{href:"https://www.npmjs.com/package/@chenpu17/cc-gw",className:"inline-flex items-center justify-center gap-2 rounded-xl bg-white px-5 py-3 text-sm font-semibold text-slate-950 transition hover:bg-slate-100",children:[e.jsx(N,{className:"h-4 w-4"}),t(s.ctaInstall)]}),e.jsxs("a",{href:"/ui/",className:"inline-flex items-center justify-center gap-2 rounded-xl border border-white/20 bg-white/5 px-5 py-3 text-sm font-semibold text-white transition hover:bg-white/10",children:[t(s.ctaConsole),e.jsx(g,{className:"h-4 w-4"})]})]})]})]})})]}),e.jsx("footer",{className:"border-t border-slate-200 bg-white",children:e.jsxs("div",{className:"mx-auto flex w-full max-w-6xl flex-col gap-4 px-6 py-10 text-sm text-slate-500 sm:px-8 lg:flex-row lg:items-center lg:justify-between lg:px-10",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(v,{className:"h-7 w-7",title:"cc-gw"}),e.jsxs("div",{children:[e.jsx("div",{className:"text-slate-700",children:t(s.footer.tagline)}),e.jsxs("div",{className:"font-mono text-[11px] text-slate-400",children:["v",j]})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-5",children:[e.jsx("a",{href:"/ui/",className:"hover:text-slate-900",children:t(s.footer.console)}),e.jsx("a",{href:"https://www.npmjs.com/package/@chenpu17/cc-gw",className:"hover:text-slate-900",children:"npm"}),e.jsx("a",{href:"https://github.com/chenpu17/cc-gw2",className:"hover:text-slate-900",children:"GitHub"}),e.jsx("a",{href:"https://github.com/chenpu17/cc-gw2/releases",className:"hover:text-slate-900",children:t(s.footer.changelog)})]})]})})]})}const I=document.getElementById("landing-root");if(!I)throw new Error("Root element #landing-root not found");q.createRoot(I).render(e.jsx(U.StrictMode,{children:e.jsx(se,{})}));
@@ -1 +0,0 @@
1
- import{r as g,j as t,aE as v,aF as y}from"./vendor-m8O77Czp.js";import{c as N}from"./card-DS9KKz-k.js";import{c as f}from"./global-zt8jbW7F.js";const M=e=>1-Math.pow(1-e,3);function $(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}const R=e=>Math.round(e).toLocaleString();function k({value:e,duration:a=600,format:n=R,className:r}){const s=g.useRef($()).current,[d,m]=g.useState(e),o=g.useRef(e),i=g.useRef(void 0);return g.useEffect(()=>{const c=o.current,l=e;if(o.current=e,s||!Number.isFinite(l)||c===l){m(l);return}const p=performance.now(),u=h=>{const x=Math.min(1,(h-p)/a);m(c+(l-c)*M(x)),x<1&&(i.current=requestAnimationFrame(u))};return i.current=requestAnimationFrame(u),()=>{i.current!==void 0&&cancelAnimationFrame(i.current)}},[e,a,s]),t.jsx("span",{className:r,children:n(d)})}const F={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 A(e,a){if(!e||e.length<2)return null;const n=100,r=28,s=Math.min(...e),m=Math.max(...e)-s||1,o=n/(e.length-1),c=`M ${e.map((p,u)=>{const h=u*o,x=r-(p-s)/m*(r-4)-2;return`${h.toFixed(2)},${x.toFixed(2)}`}).join(" L ")}`,l=`${c} L ${n},${r} L 0,${r} Z`;return t.jsxs("svg",{viewBox:`0 0 ${n} ${r}`,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:f(a)})]})}function C({delta:e}){const a=e.value>=0,n=!e.invertColor,r=a===n,s=e.format?e.format(e.value):`${e.value>0?"+":""}${e.value}`,d=a?v:y;return t.jsxs("span",{className:f("inline-flex items-center gap-0.5 rounded-full px-1.5 py-0.5 text-[11px] font-medium",r?"bg-emerald-100 text-emerald-800 dark:bg-emerald-950/40 dark:text-emerald-400":"bg-red-100 text-red-700 dark:bg-red-950/40 dark:text-red-400"),children:[t.jsx(d,{className:"h-3 w-3","aria-hidden":!0}),s]})}function D({label:e,value:a,rawValue:n,format:r,suffix:s,icon:d,delta:m,sparkline:o,hint:i,size:c="md",featured:l=!1,className:p,valueTestId:u,interactive:h=!0,style:x}){const j=F[c],w=n!==void 0?t.jsx(k,{value:n,format:r}):a,b=(o==null?void 0:o.strokeClassName)??"text-primary/60";return t.jsxs("div",{className:f(N({variant:h?"interactive":"default"}),"motion-surface relative flex flex-col",j.wrap,l&&"bg-primary/[0.03]",p),style:x,children:[t.jsxs("div",{className:"flex items-center gap-2",children:[d?t.jsx("span",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-lg bg-secondary text-muted-foreground",children:d}):null,t.jsx("span",{className:f("font-medium uppercase tracking-wider text-muted-foreground",j.label),children:e})]}),t.jsxs("div",{className:f("flex items-end gap-2",j.body),children:[t.jsxs("span",{...u?{"data-testid":u}:{},className:f("metric-number font-semibold tracking-tight text-foreground",j.value),children:[w,s?t.jsx("span",{className:"ml-0.5 text-sm font-medium text-muted-foreground",children:s}):null]}),m?t.jsx(C,{delta:m}):null]}),i?t.jsx("p",{className:"mt-1.5 text-xs text-muted-foreground/70",children:i}):null,o?t.jsx("div",{className:"mt-2.5",children:A(o.data,b)}):null]})}export{D as M};
@@ -1 +0,0 @@
1
- const o="0.8.30",s={version:o};export{s as p};
@@ -1 +0,0 @@
1
- import{r as n,j as o}from"./vendor-m8O77Czp.js";import{l as i,m as p,n as c,o as a,A as l}from"./radix-OaJStcH-.js";import{c as m}from"./global-zt8jbW7F.js";const v=i,x=p,h=l,f=n.forwardRef(({className:t,align:e="center",sideOffset:r=4,...s},d)=>o.jsx(c,{children:o.jsx(a,{ref:d,align:e,sideOffset:r,className:m("z-50 w-72 rounded-xl border border-[color:var(--surface-border)] bg-popover p-4 text-popover-foreground shadow-[var(--surface-shadow-lg)] backdrop-blur 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",t),...s})}));f.displayName=a.displayName;export{v as P,x as a,f as b,h as c};
@@ -1 +0,0 @@
1
- import{j as o,Y as s,aJ as i}from"./vendor-m8O77Czp.js";import{c as n}from"./global-zt8jbW7F.js";import{a as d}from"./query-CZuclkQv.js";import{r as l,t as u}from"./app-CeLCVbqy.js";const g=s("inline-flex items-center rounded-md border-0 px-2 py-0.5 text-[11px] font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"bg-primary/10 text-primary",secondary:"border-transparent bg-secondary text-muted-foreground",destructive:"bg-red-100 text-red-700 dark:bg-red-950/40 dark:text-red-400",outline:"border border-border bg-transparent text-muted-foreground",success:"gap-1.5 bg-emerald-100 text-emerald-800 before:h-1.5 before:w-1.5 before:rounded-full before:bg-emerald-500 dark:bg-emerald-950/40 dark:text-emerald-400",warning:"bg-amber-100 text-amber-800 dark:bg-amber-950/40 dark:text-amber-400",info:"bg-indigo-100 text-indigo-700 dark:bg-indigo-950/40 dark:text-indigo-400",purple:"bg-violet-100 text-violet-700 dark:bg-violet-950/40 dark:text-violet-400",pink:"bg-pink-100 text-pink-700 dark:bg-pink-950/40 dark:text-pink-400"}},defaultVariants:{variant:"default"}});function c({className:e,variant:t,...r}){return o.jsx("div",{className:n(g({variant:t}),e),...r})}function x(e,t,r){return d({queryKey:e,placeholderData:i,...r,queryFn:async()=>{try{return await l(t)}catch(a){throw u(a)}}})}const y={auth:{session:()=>["auth","session"],web:()=>["auth","web"]},config:{full:()=>["config","full"],info:()=>["config","info"],exportTimeout:()=>["config","export-timeout"]},customEndpoints:{all:()=>["custom-endpoints"]},providers:{all:()=>["providers","all"]},stats:{overview:(e="all")=>["stats","overview",e],daily:(e,t="all")=>["stats","daily",e,t],model:(e,t,r="all")=>["stats","model",e,t,r]},status:{byEndpoint:(e="all")=>["status",e],gateway:()=>["status","gateway"]},db:{info:()=>["db","info"]},dashboard:{summary:(e="all")=>["dashboard","summary",e]},logs:{list:e=>["logs",e],recent:(e="all")=>["logs","recent",e],detail:e=>["logs","detail",e]},events:{list:e=>["events",e]},apiKeys:{all:()=>["api-keys"],overview:e=>["api-keys","overview",e],usage:e=>["api-keys","usage",e]}};export{c as B,y as q,x as u};
@@ -1,5 +0,0 @@
1
- import{r as s,j as u,R as Nt,o as Dt,q as ge,u as Hr,t as Wr,v as zr,w as Yr,x as Xr,y as qr,z as Zr,B as Jr,C as Qr,D as es,E as Je,F as Qe}from"./vendor-m8O77Czp.js";function Jt(e,n){if(typeof e=="function")return e(n);e!=null&&(e.current=n)}function Fe(...e){return n=>{let t=!1;const o=e.map(r=>{const a=Jt(r,n);return!t&&typeof a=="function"&&(t=!0),a});if(t)return()=>{for(let r=0;r<o.length;r++){const a=o[r];typeof a=="function"?a():Jt(e[r],null)}}}}function M(...e){return s.useCallback(Fe(...e),e)}var ts=Symbol.for("react.lazy"),ze=Nt[" use ".trim().toString()];function ns(e){return typeof e=="object"&&e!==null&&"then"in e}function ln(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===ts&&"_payload"in e&&ns(e._payload)}function os(e){const n=rs(e),t=s.forwardRef((o,r)=>{let{children:a,...i}=o;ln(a)&&typeof ze=="function"&&(a=ze(a._payload));const c=s.Children.toArray(a),l=c.find(as);if(l){const d=l.props.children,f=c.map(p=>p===l?s.Children.count(d)>1?s.Children.only(null):s.isValidElement(d)?d.props.children:null:p);return u.jsx(n,{...i,ref:r,children:s.isValidElement(d)?s.cloneElement(d,void 0,f):null})}return u.jsx(n,{...i,ref:r,children:a})});return t.displayName=`${e}.Slot`,t}var Sc=os("Slot");function rs(e){const n=s.forwardRef((t,o)=>{let{children:r,...a}=t;if(ln(r)&&typeof ze=="function"&&(r=ze(r._payload)),s.isValidElement(r)){const i=cs(r),c=is(a,r.props);return r.type!==s.Fragment&&(c.ref=o?Fe(o,i):i),s.cloneElement(r,c)}return s.Children.count(r)>1?s.Children.only(null):null});return n.displayName=`${e}.SlotClone`,n}var ss=Symbol("radix.slottable");function as(e){return s.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===ss}function is(e,n){const t={...n};for(const o in n){const r=e[o],a=n[o];/^on[A-Z]/.test(o)?r&&a?t[o]=(...c)=>{const l=a(...c);return r(...c),l}:r&&(t[o]=r):o==="style"?t[o]={...r,...a}:o==="className"&&(t[o]=[r,a].filter(Boolean).join(" "))}return{...e,...t}}function cs(e){var o,r;let n=(o=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:o.get,t=n&&"isReactWarning"in n&&n.isReactWarning;return t?e.ref:(n=(r=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:r.get,t=n&&"isReactWarning"in n&&n.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}function E(e,n,{checkForDefaultPrevented:t=!0}={}){return function(r){if(e==null||e(r),t===!1||!r.defaultPrevented)return n==null?void 0:n(r)}}function ls(e,n){const t=s.createContext(n),o=a=>{const{children:i,...c}=a,l=s.useMemo(()=>c,Object.values(c));return u.jsx(t.Provider,{value:l,children:i})};o.displayName=e+"Provider";function r(a){const i=s.useContext(t);if(i)return i;if(n!==void 0)return n;throw new Error(`\`${a}\` must be used within \`${e}\``)}return[o,r]}function se(e,n=[]){let t=[];function o(a,i){const c=s.createContext(i),l=t.length;t=[...t,i];const d=p=>{var y;const{scope:v,children:h,...w}=p,m=((y=v==null?void 0:v[e])==null?void 0:y[l])||c,g=s.useMemo(()=>w,Object.values(w));return u.jsx(m.Provider,{value:g,children:h})};d.displayName=a+"Provider";function f(p,v){var m;const h=((m=v==null?void 0:v[e])==null?void 0:m[l])||c,w=s.useContext(h);if(w)return w;if(i!==void 0)return i;throw new Error(`\`${p}\` must be used within \`${a}\``)}return[d,f]}const r=()=>{const a=t.map(i=>s.createContext(i));return function(c){const l=(c==null?void 0:c[e])||a;return s.useMemo(()=>({[`__scope${e}`]:{...c,[e]:l}}),[c,l])}};return r.scopeName=e,[o,us(r,...n)]}function us(...e){const n=e[0];if(e.length===1)return n;const t=()=>{const o=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(a){const i=o.reduce((c,{useScope:l,scopeName:d})=>{const p=l(a)[`__scope${d}`];return{...c,...p}},{});return s.useMemo(()=>({[`__scope${n.scopeName}`]:i}),[i])}};return t.scopeName=n.scopeName,t}var X=globalThis!=null&&globalThis.document?s.useLayoutEffect:()=>{},ds=Nt[" useInsertionEffect ".trim().toString()]||X;function de({prop:e,defaultProp:n,onChange:t=()=>{},caller:o}){const[r,a,i]=fs({defaultProp:n,onChange:t}),c=e!==void 0,l=c?e:r;{const f=s.useRef(e!==void 0);s.useEffect(()=>{const p=f.current;p!==c&&console.warn(`${o} is changing from ${p?"controlled":"uncontrolled"} to ${c?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),f.current=c},[c,o])}const d=s.useCallback(f=>{var p;if(c){const v=ps(f)?f(e):f;v!==e&&((p=i.current)==null||p.call(i,v))}else a(f)},[c,e,a,i]);return[l,d]}function fs({defaultProp:e,onChange:n}){const[t,o]=s.useState(e),r=s.useRef(t),a=s.useRef(n);return ds(()=>{a.current=n},[n]),s.useEffect(()=>{var i;r.current!==t&&((i=a.current)==null||i.call(a,t),r.current=t)},[t,r]),[t,o,a]}function ps(e){return typeof e=="function"}function xe(e){const n=vs(e),t=s.forwardRef((o,r)=>{const{children:a,...i}=o,c=s.Children.toArray(a),l=c.find(hs);if(l){const d=l.props.children,f=c.map(p=>p===l?s.Children.count(d)>1?s.Children.only(null):s.isValidElement(d)?d.props.children:null:p);return u.jsx(n,{...i,ref:r,children:s.isValidElement(d)?s.cloneElement(d,void 0,f):null})}return u.jsx(n,{...i,ref:r,children:a})});return t.displayName=`${e}.Slot`,t}function vs(e){const n=s.forwardRef((t,o)=>{const{children:r,...a}=t;if(s.isValidElement(r)){const i=xs(r),c=gs(a,r.props);return r.type!==s.Fragment&&(c.ref=o?Fe(o,i):i),s.cloneElement(r,c)}return s.Children.count(r)>1?s.Children.only(null):null});return n.displayName=`${e}.SlotClone`,n}var un=Symbol("radix.slottable");function ms(e){const n=({children:t})=>u.jsx(u.Fragment,{children:t});return n.displayName=`${e}.Slottable`,n.__radixId=un,n}function hs(e){return s.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===un}function gs(e,n){const t={...n};for(const o in n){const r=e[o],a=n[o];/^on[A-Z]/.test(o)?r&&a?t[o]=(...c)=>{const l=a(...c);return r(...c),l}:r&&(t[o]=r):o==="style"?t[o]={...r,...a}:o==="className"&&(t[o]=[r,a].filter(Boolean).join(" "))}return{...e,...t}}function xs(e){var o,r;let n=(o=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:o.get,t=n&&"isReactWarning"in n&&n.isReactWarning;return t?e.ref:(n=(r=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:r.get,t=n&&"isReactWarning"in n&&n.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}var Cs=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],_=Cs.reduce((e,n)=>{const t=xe(`Primitive.${n}`),o=s.forwardRef((r,a)=>{const{asChild:i,...c}=r,l=i?t:n;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),u.jsx(l,{...c,ref:a})});return o.displayName=`Primitive.${n}`,{...e,[n]:o}},{});function dn(e,n){e&&Dt.flushSync(()=>e.dispatchEvent(n))}function Ot(e){const n=e+"CollectionProvider",[t,o]=se(n),[r,a]=t(n,{collectionRef:{current:null},itemMap:new Map}),i=m=>{const{scope:g,children:y}=m,x=ge.useRef(null),C=ge.useRef(new Map).current;return u.jsx(r,{scope:g,itemMap:C,collectionRef:x,children:y})};i.displayName=n;const c=e+"CollectionSlot",l=xe(c),d=ge.forwardRef((m,g)=>{const{scope:y,children:x}=m,C=a(c,y),S=M(g,C.collectionRef);return u.jsx(l,{ref:S,children:x})});d.displayName=c;const f=e+"CollectionItemSlot",p="data-radix-collection-item",v=xe(f),h=ge.forwardRef((m,g)=>{const{scope:y,children:x,...C}=m,S=ge.useRef(null),I=M(g,S),N=a(f,y);return ge.useEffect(()=>(N.itemMap.set(S,{ref:S,...C}),()=>void N.itemMap.delete(S))),u.jsx(v,{[p]:"",ref:I,children:x})});h.displayName=f;function w(m){const g=a(e+"CollectionConsumer",m);return ge.useCallback(()=>{const x=g.collectionRef.current;if(!x)return[];const C=Array.from(x.querySelectorAll(`[${p}]`));return Array.from(g.itemMap.values()).sort((N,R)=>C.indexOf(N.ref.current)-C.indexOf(R.ref.current))},[g.collectionRef,g.itemMap])}return[{Provider:i,Slot:d,ItemSlot:h},w,o]}var ws=s.createContext(void 0);function et(e){const n=s.useContext(ws);return e||n||"ltr"}function ce(e){const n=s.useRef(e);return s.useEffect(()=>{n.current=e}),s.useMemo(()=>(...t)=>{var o;return(o=n.current)==null?void 0:o.call(n,...t)},[])}function ys(e,n=globalThis==null?void 0:globalThis.document){const t=ce(e);s.useEffect(()=>{const o=r=>{r.key==="Escape"&&t(r)};return n.addEventListener("keydown",o,{capture:!0}),()=>n.removeEventListener("keydown",o,{capture:!0})},[t,n])}var Es="DismissableLayer",Et="dismissableLayer.update",Ss="dismissableLayer.pointerDownOutside",bs="dismissableLayer.focusOutside",Qt,fn=s.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Re=s.forwardRef((e,n)=>{const{disableOutsidePointerEvents:t=!1,onEscapeKeyDown:o,onPointerDownOutside:r,onFocusOutside:a,onInteractOutside:i,onDismiss:c,...l}=e,d=s.useContext(fn),[f,p]=s.useState(null),v=(f==null?void 0:f.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,h]=s.useState({}),w=M(n,R=>p(R)),m=Array.from(d.layers),[g]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),y=m.indexOf(g),x=f?m.indexOf(f):-1,C=d.layersWithOutsidePointerEventsDisabled.size>0,S=x>=y,I=_s(R=>{const T=R.target,B=[...d.branches].some($=>$.contains(T));!S||B||(r==null||r(R),i==null||i(R),R.defaultPrevented||c==null||c())},v),N=Ts(R=>{const T=R.target;[...d.branches].some($=>$.contains(T))||(a==null||a(R),i==null||i(R),R.defaultPrevented||c==null||c())},v);return ys(R=>{x===d.layers.size-1&&(o==null||o(R),!R.defaultPrevented&&c&&(R.preventDefault(),c()))},v),s.useEffect(()=>{if(f)return t&&(d.layersWithOutsidePointerEventsDisabled.size===0&&(Qt=v.body.style.pointerEvents,v.body.style.pointerEvents="none"),d.layersWithOutsidePointerEventsDisabled.add(f)),d.layers.add(f),en(),()=>{t&&d.layersWithOutsidePointerEventsDisabled.size===1&&(v.body.style.pointerEvents=Qt)}},[f,v,t,d]),s.useEffect(()=>()=>{f&&(d.layers.delete(f),d.layersWithOutsidePointerEventsDisabled.delete(f),en())},[f,d]),s.useEffect(()=>{const R=()=>h({});return document.addEventListener(Et,R),()=>document.removeEventListener(Et,R)},[]),u.jsx(_.div,{...l,ref:w,style:{pointerEvents:C?S?"auto":"none":void 0,...e.style},onFocusCapture:E(e.onFocusCapture,N.onFocusCapture),onBlurCapture:E(e.onBlurCapture,N.onBlurCapture),onPointerDownCapture:E(e.onPointerDownCapture,I.onPointerDownCapture)})});Re.displayName=Es;var Ps="DismissableLayerBranch",Rs=s.forwardRef((e,n)=>{const t=s.useContext(fn),o=s.useRef(null),r=M(n,o);return s.useEffect(()=>{const a=o.current;if(a)return t.branches.add(a),()=>{t.branches.delete(a)}},[t.branches]),u.jsx(_.div,{...e,ref:r})});Rs.displayName=Ps;function _s(e,n=globalThis==null?void 0:globalThis.document){const t=ce(e),o=s.useRef(!1),r=s.useRef(()=>{});return s.useEffect(()=>{const a=c=>{if(c.target&&!o.current){let l=function(){pn(Ss,t,d,{discrete:!0})};const d={originalEvent:c};c.pointerType==="touch"?(n.removeEventListener("click",r.current),r.current=l,n.addEventListener("click",r.current,{once:!0})):l()}else n.removeEventListener("click",r.current);o.current=!1},i=window.setTimeout(()=>{n.addEventListener("pointerdown",a)},0);return()=>{window.clearTimeout(i),n.removeEventListener("pointerdown",a),n.removeEventListener("click",r.current)}},[n,t]),{onPointerDownCapture:()=>o.current=!0}}function Ts(e,n=globalThis==null?void 0:globalThis.document){const t=ce(e),o=s.useRef(!1);return s.useEffect(()=>{const r=a=>{a.target&&!o.current&&pn(bs,t,{originalEvent:a},{discrete:!1})};return n.addEventListener("focusin",r),()=>n.removeEventListener("focusin",r)},[n,t]),{onFocusCapture:()=>o.current=!0,onBlurCapture:()=>o.current=!1}}function en(){const e=new CustomEvent(Et);document.dispatchEvent(e)}function pn(e,n,t,{discrete:o}){const r=t.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:t});n&&r.addEventListener(e,n,{once:!0}),o?dn(r,a):r.dispatchEvent(a)}var xt=0;function tt(){s.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??tn()),document.body.insertAdjacentElement("beforeend",e[1]??tn()),xt++,()=>{xt===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(n=>n.remove()),xt--}},[])}function tn(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var Ct="focusScope.autoFocusOnMount",wt="focusScope.autoFocusOnUnmount",nn={bubbles:!1,cancelable:!0},Is="FocusScope",ke=s.forwardRef((e,n)=>{const{loop:t=!1,trapped:o=!1,onMountAutoFocus:r,onUnmountAutoFocus:a,...i}=e,[c,l]=s.useState(null),d=ce(r),f=ce(a),p=s.useRef(null),v=M(n,m=>l(m)),h=s.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;s.useEffect(()=>{if(o){let m=function(C){if(h.paused||!c)return;const S=C.target;c.contains(S)?p.current=S:fe(p.current,{select:!0})},g=function(C){if(h.paused||!c)return;const S=C.relatedTarget;S!==null&&(c.contains(S)||fe(p.current,{select:!0}))},y=function(C){if(document.activeElement===document.body)for(const I of C)I.removedNodes.length>0&&fe(c)};document.addEventListener("focusin",m),document.addEventListener("focusout",g);const x=new MutationObserver(y);return c&&x.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",m),document.removeEventListener("focusout",g),x.disconnect()}}},[o,c,h.paused]),s.useEffect(()=>{if(c){rn.add(h);const m=document.activeElement;if(!c.contains(m)){const y=new CustomEvent(Ct,nn);c.addEventListener(Ct,d),c.dispatchEvent(y),y.defaultPrevented||(Ms(js(vn(c)),{select:!0}),document.activeElement===m&&fe(c))}return()=>{c.removeEventListener(Ct,d),setTimeout(()=>{const y=new CustomEvent(wt,nn);c.addEventListener(wt,f),c.dispatchEvent(y),y.defaultPrevented||fe(m??document.body,{select:!0}),c.removeEventListener(wt,f),rn.remove(h)},0)}}},[c,d,f,h]);const w=s.useCallback(m=>{if(!t&&!o||h.paused)return;const g=m.key==="Tab"&&!m.altKey&&!m.ctrlKey&&!m.metaKey,y=document.activeElement;if(g&&y){const x=m.currentTarget,[C,S]=As(x);C&&S?!m.shiftKey&&y===S?(m.preventDefault(),t&&fe(C,{select:!0})):m.shiftKey&&y===C&&(m.preventDefault(),t&&fe(S,{select:!0})):y===x&&m.preventDefault()}},[t,o,h.paused]);return u.jsx(_.div,{tabIndex:-1,...i,ref:v,onKeyDown:w})});ke.displayName=Is;function Ms(e,{select:n=!1}={}){const t=document.activeElement;for(const o of e)if(fe(o,{select:n}),document.activeElement!==t)return}function As(e){const n=vn(e),t=on(n,e),o=on(n.reverse(),e);return[t,o]}function vn(e){const n=[],t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const r=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||r?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;t.nextNode();)n.push(t.currentNode);return n}function on(e,n){for(const t of e)if(!Ns(t,{upTo:n}))return t}function Ns(e,{upTo:n}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(n!==void 0&&e===n)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function Ds(e){return e instanceof HTMLInputElement&&"select"in e}function fe(e,{select:n=!1}={}){if(e&&e.focus){const t=document.activeElement;e.focus({preventScroll:!0}),e!==t&&Ds(e)&&n&&e.select()}}var rn=Os();function Os(){let e=[];return{add(n){const t=e[0];n!==t&&(t==null||t.pause()),e=sn(e,n),e.unshift(n)},remove(n){var t;e=sn(e,n),(t=e[0])==null||t.resume()}}}function sn(e,n){const t=[...e],o=t.indexOf(n);return o!==-1&&t.splice(o,1),t}function js(e){return e.filter(n=>n.tagName!=="A")}var Ls=Nt[" useId ".trim().toString()]||(()=>{}),Fs=0;function ne(e){const[n,t]=s.useState(Ls());return X(()=>{t(o=>o??String(Fs++))},[e]),e||(n?`radix-${n}`:"")}var ks="Arrow",mn=s.forwardRef((e,n)=>{const{children:t,width:o=10,height:r=5,...a}=e;return u.jsx(_.svg,{...a,ref:n,width:o,height:r,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?t:u.jsx("polygon",{points:"0,0 30,0 15,10"})})});mn.displayName=ks;var $s=mn;function hn(e){const[n,t]=s.useState(void 0);return X(()=>{if(e){t({width:e.offsetWidth,height:e.offsetHeight});const o=new ResizeObserver(r=>{if(!Array.isArray(r)||!r.length)return;const a=r[0];let i,c;if("borderBoxSize"in a){const l=a.borderBoxSize,d=Array.isArray(l)?l[0]:l;i=d.inlineSize,c=d.blockSize}else i=e.offsetWidth,c=e.offsetHeight;t({width:i,height:c})});return o.observe(e,{box:"border-box"}),()=>o.unobserve(e)}else t(void 0)},[e]),n}var jt="Popper",[gn,pe]=se(jt),[Bs,xn]=gn(jt),Cn=e=>{const{__scopePopper:n,children:t}=e,[o,r]=s.useState(null);return u.jsx(Bs,{scope:n,anchor:o,onAnchorChange:r,children:t})};Cn.displayName=jt;var wn="PopperAnchor",yn=s.forwardRef((e,n)=>{const{__scopePopper:t,virtualRef:o,...r}=e,a=xn(wn,t),i=s.useRef(null),c=M(n,i),l=s.useRef(null);return s.useEffect(()=>{const d=l.current;l.current=(o==null?void 0:o.current)||i.current,d!==l.current&&a.onAnchorChange(l.current)}),o?null:u.jsx(_.div,{...r,ref:c})});yn.displayName=wn;var Lt="PopperContent",[Us,Vs]=gn(Lt),En=s.forwardRef((e,n)=>{var P,D,F,A,O,j;const{__scopePopper:t,side:o="bottom",sideOffset:r=0,align:a="center",alignOffset:i=0,arrowPadding:c=0,avoidCollisions:l=!0,collisionBoundary:d=[],collisionPadding:f=0,sticky:p="partial",hideWhenDetached:v=!1,updatePositionStrategy:h="optimized",onPlaced:w,...m}=e,g=xn(Lt,t),[y,x]=s.useState(null),C=M(n,Q=>x(Q)),[S,I]=s.useState(null),N=hn(S),R=(N==null?void 0:N.width)??0,T=(N==null?void 0:N.height)??0,B=o+(a!=="center"?"-"+a:""),$=typeof f=="number"?f:{top:0,right:0,bottom:0,left:0,...f},V=Array.isArray(d)?d:[d],H=V.length>0,G={padding:$,boundary:V.filter(Ks),altBoundary:H},{refs:z,floatingStyles:Y,placement:L,isPositioned:W,middlewareData:k}=Hr({strategy:"fixed",placement:B,whileElementsMounted:(...Q)=>Jr(...Q,{animationFrame:h==="always"}),elements:{reference:g.anchor},middleware:[Wr({mainAxis:r+T,alignmentAxis:i}),l&&zr({mainAxis:!0,crossAxis:!1,limiter:p==="partial"?Qr():void 0,...G}),l&&Yr({...G}),Xr({...G,apply:({elements:Q,rects:ie,availableWidth:Ie,availableHeight:Me})=>{const{width:Ae,height:Kr}=ie.reference,He=Q.floating.style;He.setProperty("--radix-popper-available-width",`${Ie}px`),He.setProperty("--radix-popper-available-height",`${Me}px`),He.setProperty("--radix-popper-anchor-width",`${Ae}px`),He.setProperty("--radix-popper-anchor-height",`${Kr}px`)}}),S&&qr({element:S,padding:c}),Hs({arrowWidth:R,arrowHeight:T}),v&&Zr({strategy:"referenceHidden",...G})]}),[b,K]=Pn(L),U=ce(w);X(()=>{W&&(U==null||U())},[W,U]);const Z=(P=k.arrow)==null?void 0:P.x,le=(D=k.arrow)==null?void 0:D.y,te=((F=k.arrow)==null?void 0:F.centerOffset)!==0,[ue,J]=s.useState();return X(()=>{y&&J(window.getComputedStyle(y).zIndex)},[y]),u.jsx("div",{ref:z.setFloating,"data-radix-popper-content-wrapper":"",style:{...Y,transform:W?Y.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ue,"--radix-popper-transform-origin":[(A=k.transformOrigin)==null?void 0:A.x,(O=k.transformOrigin)==null?void 0:O.y].join(" "),...((j=k.hide)==null?void 0:j.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:u.jsx(Us,{scope:t,placedSide:b,onArrowChange:I,arrowX:Z,arrowY:le,shouldHideArrow:te,children:u.jsx(_.div,{"data-side":b,"data-align":K,...m,ref:C,style:{...m.style,animation:W?void 0:"none"}})})})});En.displayName=Lt;var Sn="PopperArrow",Gs={top:"bottom",right:"left",bottom:"top",left:"right"},bn=s.forwardRef(function(n,t){const{__scopePopper:o,...r}=n,a=Vs(Sn,o),i=Gs[a.placedSide];return u.jsx("span",{ref:a.onArrowChange,style:{position:"absolute",left:a.arrowX,top:a.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[a.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[a.placedSide],visibility:a.shouldHideArrow?"hidden":void 0},children:u.jsx($s,{...r,ref:t,style:{...r.style,display:"block"}})})});bn.displayName=Sn;function Ks(e){return e!==null}var Hs=e=>({name:"transformOrigin",options:e,fn(n){var g,y,x;const{placement:t,rects:o,middlewareData:r}=n,i=((g=r.arrow)==null?void 0:g.centerOffset)!==0,c=i?0:e.arrowWidth,l=i?0:e.arrowHeight,[d,f]=Pn(t),p={start:"0%",center:"50%",end:"100%"}[f],v=(((y=r.arrow)==null?void 0:y.x)??0)+c/2,h=(((x=r.arrow)==null?void 0:x.y)??0)+l/2;let w="",m="";return d==="bottom"?(w=i?p:`${v}px`,m=`${-l}px`):d==="top"?(w=i?p:`${v}px`,m=`${o.floating.height+l}px`):d==="right"?(w=`${-l}px`,m=i?p:`${h}px`):d==="left"&&(w=`${o.floating.width+l}px`,m=i?p:`${h}px`),{data:{x:w,y:m}}}});function Pn(e){const[n,t="center"]=e.split("-");return[n,t]}var nt=Cn,$e=yn,ot=En,rt=bn,Ws="Portal",_e=s.forwardRef((e,n)=>{var c;const{container:t,...o}=e,[r,a]=s.useState(!1);X(()=>a(!0),[]);const i=t||r&&((c=globalThis==null?void 0:globalThis.document)==null?void 0:c.body);return i?es.createPortal(u.jsx(_.div,{...o,ref:n}),i):null});_e.displayName=Ws;function zs(e,n){return s.useReducer((t,o)=>n[t][o]??t,e)}var ee=e=>{const{present:n,children:t}=e,o=Ys(n),r=typeof t=="function"?t({present:o.isPresent}):s.Children.only(t),a=M(o.ref,Xs(r));return typeof t=="function"||o.isPresent?s.cloneElement(r,{ref:a}):null};ee.displayName="Presence";function Ys(e){const[n,t]=s.useState(),o=s.useRef(null),r=s.useRef(e),a=s.useRef("none"),i=e?"mounted":"unmounted",[c,l]=zs(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return s.useEffect(()=>{const d=We(o.current);a.current=c==="mounted"?d:"none"},[c]),X(()=>{const d=o.current,f=r.current;if(f!==e){const v=a.current,h=We(d);e?l("MOUNT"):h==="none"||(d==null?void 0:d.display)==="none"?l("UNMOUNT"):l(f&&v!==h?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,l]),X(()=>{if(n){let d;const f=n.ownerDocument.defaultView??window,p=h=>{const m=We(o.current).includes(CSS.escape(h.animationName));if(h.target===n&&m&&(l("ANIMATION_END"),!r.current)){const g=n.style.animationFillMode;n.style.animationFillMode="forwards",d=f.setTimeout(()=>{n.style.animationFillMode==="forwards"&&(n.style.animationFillMode=g)})}},v=h=>{h.target===n&&(a.current=We(o.current))};return n.addEventListener("animationstart",v),n.addEventListener("animationcancel",p),n.addEventListener("animationend",p),()=>{f.clearTimeout(d),n.removeEventListener("animationstart",v),n.removeEventListener("animationcancel",p),n.removeEventListener("animationend",p)}}else l("ANIMATION_END")},[n,l]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:s.useCallback(d=>{o.current=d?getComputedStyle(d):null,t(d)},[])}}function We(e){return(e==null?void 0:e.animationName)||"none"}function Xs(e){var o,r;let n=(o=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:o.get,t=n&&"isReactWarning"in n&&n.isReactWarning;return t?e.ref:(n=(r=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:r.get,t=n&&"isReactWarning"in n&&n.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}var yt="rovingFocusGroup.onEntryFocus",qs={bubbles:!1,cancelable:!0},Be="RovingFocusGroup",[St,Rn,Zs]=Ot(Be),[Js,st]=se(Be,[Zs]),[Qs,ea]=Js(Be),_n=s.forwardRef((e,n)=>u.jsx(St.Provider,{scope:e.__scopeRovingFocusGroup,children:u.jsx(St.Slot,{scope:e.__scopeRovingFocusGroup,children:u.jsx(ta,{...e,ref:n})})}));_n.displayName=Be;var ta=s.forwardRef((e,n)=>{const{__scopeRovingFocusGroup:t,orientation:o,loop:r=!1,dir:a,currentTabStopId:i,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:l,onEntryFocus:d,preventScrollOnEntryFocus:f=!1,...p}=e,v=s.useRef(null),h=M(n,v),w=et(a),[m,g]=de({prop:i,defaultProp:c??null,onChange:l,caller:Be}),[y,x]=s.useState(!1),C=ce(d),S=Rn(t),I=s.useRef(!1),[N,R]=s.useState(0);return s.useEffect(()=>{const T=v.current;if(T)return T.addEventListener(yt,C),()=>T.removeEventListener(yt,C)},[C]),u.jsx(Qs,{scope:t,orientation:o,dir:w,loop:r,currentTabStopId:m,onItemFocus:s.useCallback(T=>g(T),[g]),onItemShiftTab:s.useCallback(()=>x(!0),[]),onFocusableItemAdd:s.useCallback(()=>R(T=>T+1),[]),onFocusableItemRemove:s.useCallback(()=>R(T=>T-1),[]),children:u.jsx(_.div,{tabIndex:y||N===0?-1:0,"data-orientation":o,...p,ref:h,style:{outline:"none",...e.style},onMouseDown:E(e.onMouseDown,()=>{I.current=!0}),onFocus:E(e.onFocus,T=>{const B=!I.current;if(T.target===T.currentTarget&&B&&!y){const $=new CustomEvent(yt,qs);if(T.currentTarget.dispatchEvent($),!$.defaultPrevented){const V=S().filter(L=>L.focusable),H=V.find(L=>L.active),G=V.find(L=>L.id===m),Y=[H,G,...V].filter(Boolean).map(L=>L.ref.current);Mn(Y,f)}}I.current=!1}),onBlur:E(e.onBlur,()=>x(!1))})})}),Tn="RovingFocusGroupItem",In=s.forwardRef((e,n)=>{const{__scopeRovingFocusGroup:t,focusable:o=!0,active:r=!1,tabStopId:a,children:i,...c}=e,l=ne(),d=a||l,f=ea(Tn,t),p=f.currentTabStopId===d,v=Rn(t),{onFocusableItemAdd:h,onFocusableItemRemove:w,currentTabStopId:m}=f;return s.useEffect(()=>{if(o)return h(),()=>w()},[o,h,w]),u.jsx(St.ItemSlot,{scope:t,id:d,focusable:o,active:r,children:u.jsx(_.span,{tabIndex:p?0:-1,"data-orientation":f.orientation,...c,ref:n,onMouseDown:E(e.onMouseDown,g=>{o?f.onItemFocus(d):g.preventDefault()}),onFocus:E(e.onFocus,()=>f.onItemFocus(d)),onKeyDown:E(e.onKeyDown,g=>{if(g.key==="Tab"&&g.shiftKey){f.onItemShiftTab();return}if(g.target!==g.currentTarget)return;const y=ra(g,f.orientation,f.dir);if(y!==void 0){if(g.metaKey||g.ctrlKey||g.altKey||g.shiftKey)return;g.preventDefault();let C=v().filter(S=>S.focusable).map(S=>S.ref.current);if(y==="last")C.reverse();else if(y==="prev"||y==="next"){y==="prev"&&C.reverse();const S=C.indexOf(g.currentTarget);C=f.loop?sa(C,S+1):C.slice(S+1)}setTimeout(()=>Mn(C))}}),children:typeof i=="function"?i({isCurrentTabStop:p,hasTabStop:m!=null}):i})})});In.displayName=Tn;var na={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function oa(e,n){return n!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function ra(e,n,t){const o=oa(e.key,t);if(!(n==="vertical"&&["ArrowLeft","ArrowRight"].includes(o))&&!(n==="horizontal"&&["ArrowUp","ArrowDown"].includes(o)))return na[o]}function Mn(e,n=!1){const t=document.activeElement;for(const o of e)if(o===t||(o.focus({preventScroll:n}),document.activeElement!==t))return}function sa(e,n){return e.map((t,o)=>e[(n+o)%e.length])}var An=_n,Nn=In,bt=["Enter"," "],aa=["ArrowDown","PageUp","Home"],Dn=["ArrowUp","PageDown","End"],ia=[...aa,...Dn],ca={ltr:[...bt,"ArrowRight"],rtl:[...bt,"ArrowLeft"]},la={ltr:["ArrowLeft"],rtl:["ArrowRight"]},Ue="Menu",[Oe,ua,da]=Ot(Ue),[Ee,On]=se(Ue,[da,pe,st]),at=pe(),jn=st(),[fa,Se]=Ee(Ue),[pa,Ve]=Ee(Ue),Ln=e=>{const{__scopeMenu:n,open:t=!1,children:o,dir:r,onOpenChange:a,modal:i=!0}=e,c=at(n),[l,d]=s.useState(null),f=s.useRef(!1),p=ce(a),v=et(r);return s.useEffect(()=>{const h=()=>{f.current=!0,document.addEventListener("pointerdown",w,{capture:!0,once:!0}),document.addEventListener("pointermove",w,{capture:!0,once:!0})},w=()=>f.current=!1;return document.addEventListener("keydown",h,{capture:!0}),()=>{document.removeEventListener("keydown",h,{capture:!0}),document.removeEventListener("pointerdown",w,{capture:!0}),document.removeEventListener("pointermove",w,{capture:!0})}},[]),u.jsx(nt,{...c,children:u.jsx(fa,{scope:n,open:t,onOpenChange:p,content:l,onContentChange:d,children:u.jsx(pa,{scope:n,onClose:s.useCallback(()=>p(!1),[p]),isUsingKeyboardRef:f,dir:v,modal:i,children:o})})})};Ln.displayName=Ue;var va="MenuAnchor",Ft=s.forwardRef((e,n)=>{const{__scopeMenu:t,...o}=e,r=at(t);return u.jsx($e,{...r,...o,ref:n})});Ft.displayName=va;var kt="MenuPortal",[ma,Fn]=Ee(kt,{forceMount:void 0}),kn=e=>{const{__scopeMenu:n,forceMount:t,children:o,container:r}=e,a=Se(kt,n);return u.jsx(ma,{scope:n,forceMount:t,children:u.jsx(ee,{present:t||a.open,children:u.jsx(_e,{asChild:!0,container:r,children:o})})})};kn.displayName=kt;var oe="MenuContent",[ha,$t]=Ee(oe),$n=s.forwardRef((e,n)=>{const t=Fn(oe,e.__scopeMenu),{forceMount:o=t.forceMount,...r}=e,a=Se(oe,e.__scopeMenu),i=Ve(oe,e.__scopeMenu);return u.jsx(Oe.Provider,{scope:e.__scopeMenu,children:u.jsx(ee,{present:o||a.open,children:u.jsx(Oe.Slot,{scope:e.__scopeMenu,children:i.modal?u.jsx(ga,{...r,ref:n}):u.jsx(xa,{...r,ref:n})})})})}),ga=s.forwardRef((e,n)=>{const t=Se(oe,e.__scopeMenu),o=s.useRef(null),r=M(n,o);return s.useEffect(()=>{const a=o.current;if(a)return Qe(a)},[]),u.jsx(Bt,{...e,ref:r,trapFocus:t.open,disableOutsidePointerEvents:t.open,disableOutsideScroll:!0,onFocusOutside:E(e.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>t.onOpenChange(!1)})}),xa=s.forwardRef((e,n)=>{const t=Se(oe,e.__scopeMenu);return u.jsx(Bt,{...e,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>t.onOpenChange(!1)})}),Ca=xe("MenuContent.ScrollLock"),Bt=s.forwardRef((e,n)=>{const{__scopeMenu:t,loop:o=!1,trapFocus:r,onOpenAutoFocus:a,onCloseAutoFocus:i,disableOutsidePointerEvents:c,onEntryFocus:l,onEscapeKeyDown:d,onPointerDownOutside:f,onFocusOutside:p,onInteractOutside:v,onDismiss:h,disableOutsideScroll:w,...m}=e,g=Se(oe,t),y=Ve(oe,t),x=at(t),C=jn(t),S=ua(t),[I,N]=s.useState(null),R=s.useRef(null),T=M(n,R,g.onContentChange),B=s.useRef(0),$=s.useRef(""),V=s.useRef(0),H=s.useRef(null),G=s.useRef("right"),z=s.useRef(0),Y=w?Je:s.Fragment,L=w?{as:Ca,allowPinchZoom:!0}:void 0,W=b=>{var P,D;const K=$.current+b,U=S().filter(F=>!F.disabled),Z=document.activeElement,le=(P=U.find(F=>F.ref.current===Z))==null?void 0:P.textValue,te=U.map(F=>F.textValue),ue=Aa(te,K,le),J=(D=U.find(F=>F.textValue===ue))==null?void 0:D.ref.current;(function F(A){$.current=A,window.clearTimeout(B.current),A!==""&&(B.current=window.setTimeout(()=>F(""),1e3))})(K),J&&setTimeout(()=>J.focus())};s.useEffect(()=>()=>window.clearTimeout(B.current),[]),tt();const k=s.useCallback(b=>{var U,Z;return G.current===((U=H.current)==null?void 0:U.side)&&Da(b,(Z=H.current)==null?void 0:Z.area)},[]);return u.jsx(ha,{scope:t,searchRef:$,onItemEnter:s.useCallback(b=>{k(b)&&b.preventDefault()},[k]),onItemLeave:s.useCallback(b=>{var K;k(b)||((K=R.current)==null||K.focus(),N(null))},[k]),onTriggerLeave:s.useCallback(b=>{k(b)&&b.preventDefault()},[k]),pointerGraceTimerRef:V,onPointerGraceIntentChange:s.useCallback(b=>{H.current=b},[]),children:u.jsx(Y,{...L,children:u.jsx(ke,{asChild:!0,trapped:r,onMountAutoFocus:E(a,b=>{var K;b.preventDefault(),(K=R.current)==null||K.focus({preventScroll:!0})}),onUnmountAutoFocus:i,children:u.jsx(Re,{asChild:!0,disableOutsidePointerEvents:c,onEscapeKeyDown:d,onPointerDownOutside:f,onFocusOutside:p,onInteractOutside:v,onDismiss:h,children:u.jsx(An,{asChild:!0,...C,dir:y.dir,orientation:"vertical",loop:o,currentTabStopId:I,onCurrentTabStopIdChange:N,onEntryFocus:E(l,b=>{y.isUsingKeyboardRef.current||b.preventDefault()}),preventScrollOnEntryFocus:!0,children:u.jsx(ot,{role:"menu","aria-orientation":"vertical","data-state":to(g.open),"data-radix-menu-content":"",dir:y.dir,...x,...m,ref:T,style:{outline:"none",...m.style},onKeyDown:E(m.onKeyDown,b=>{const U=b.target.closest("[data-radix-menu-content]")===b.currentTarget,Z=b.ctrlKey||b.altKey||b.metaKey,le=b.key.length===1;U&&(b.key==="Tab"&&b.preventDefault(),!Z&&le&&W(b.key));const te=R.current;if(b.target!==te||!ia.includes(b.key))return;b.preventDefault();const J=S().filter(P=>!P.disabled).map(P=>P.ref.current);Dn.includes(b.key)&&J.reverse(),Ia(J)}),onBlur:E(e.onBlur,b=>{b.currentTarget.contains(b.target)||(window.clearTimeout(B.current),$.current="")}),onPointerMove:E(e.onPointerMove,je(b=>{const K=b.target,U=z.current!==b.clientX;if(b.currentTarget.contains(K)&&U){const Z=b.clientX>z.current?"right":"left";G.current=Z,z.current=b.clientX}}))})})})})})})});$n.displayName=oe;var wa="MenuGroup",Ut=s.forwardRef((e,n)=>{const{__scopeMenu:t,...o}=e;return u.jsx(_.div,{role:"group",...o,ref:n})});Ut.displayName=wa;var ya="MenuLabel",Bn=s.forwardRef((e,n)=>{const{__scopeMenu:t,...o}=e;return u.jsx(_.div,{...o,ref:n})});Bn.displayName=ya;var Ye="MenuItem",an="menu.itemSelect",it=s.forwardRef((e,n)=>{const{disabled:t=!1,onSelect:o,...r}=e,a=s.useRef(null),i=Ve(Ye,e.__scopeMenu),c=$t(Ye,e.__scopeMenu),l=M(n,a),d=s.useRef(!1),f=()=>{const p=a.current;if(!t&&p){const v=new CustomEvent(an,{bubbles:!0,cancelable:!0});p.addEventListener(an,h=>o==null?void 0:o(h),{once:!0}),dn(p,v),v.defaultPrevented?d.current=!1:i.onClose()}};return u.jsx(Un,{...r,ref:l,disabled:t,onClick:E(e.onClick,f),onPointerDown:p=>{var v;(v=e.onPointerDown)==null||v.call(e,p),d.current=!0},onPointerUp:E(e.onPointerUp,p=>{var v;d.current||(v=p.currentTarget)==null||v.click()}),onKeyDown:E(e.onKeyDown,p=>{const v=c.searchRef.current!=="";t||v&&p.key===" "||bt.includes(p.key)&&(p.currentTarget.click(),p.preventDefault())})})});it.displayName=Ye;var Un=s.forwardRef((e,n)=>{const{__scopeMenu:t,disabled:o=!1,textValue:r,...a}=e,i=$t(Ye,t),c=jn(t),l=s.useRef(null),d=M(n,l),[f,p]=s.useState(!1),[v,h]=s.useState("");return s.useEffect(()=>{const w=l.current;w&&h((w.textContent??"").trim())},[a.children]),u.jsx(Oe.ItemSlot,{scope:t,disabled:o,textValue:r??v,children:u.jsx(Nn,{asChild:!0,...c,focusable:!o,children:u.jsx(_.div,{role:"menuitem","data-highlighted":f?"":void 0,"aria-disabled":o||void 0,"data-disabled":o?"":void 0,...a,ref:d,onPointerMove:E(e.onPointerMove,je(w=>{o?i.onItemLeave(w):(i.onItemEnter(w),w.defaultPrevented||w.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:E(e.onPointerLeave,je(w=>i.onItemLeave(w))),onFocus:E(e.onFocus,()=>p(!0)),onBlur:E(e.onBlur,()=>p(!1))})})})}),Ea="MenuCheckboxItem",Vn=s.forwardRef((e,n)=>{const{checked:t=!1,onCheckedChange:o,...r}=e;return u.jsx(zn,{scope:e.__scopeMenu,checked:t,children:u.jsx(it,{role:"menuitemcheckbox","aria-checked":Xe(t)?"mixed":t,...r,ref:n,"data-state":Gt(t),onSelect:E(r.onSelect,()=>o==null?void 0:o(Xe(t)?!0:!t),{checkForDefaultPrevented:!1})})})});Vn.displayName=Ea;var Gn="MenuRadioGroup",[Sa,ba]=Ee(Gn,{value:void 0,onValueChange:()=>{}}),Kn=s.forwardRef((e,n)=>{const{value:t,onValueChange:o,...r}=e,a=ce(o);return u.jsx(Sa,{scope:e.__scopeMenu,value:t,onValueChange:a,children:u.jsx(Ut,{...r,ref:n})})});Kn.displayName=Gn;var Hn="MenuRadioItem",Wn=s.forwardRef((e,n)=>{const{value:t,...o}=e,r=ba(Hn,e.__scopeMenu),a=t===r.value;return u.jsx(zn,{scope:e.__scopeMenu,checked:a,children:u.jsx(it,{role:"menuitemradio","aria-checked":a,...o,ref:n,"data-state":Gt(a),onSelect:E(o.onSelect,()=>{var i;return(i=r.onValueChange)==null?void 0:i.call(r,t)},{checkForDefaultPrevented:!1})})})});Wn.displayName=Hn;var Vt="MenuItemIndicator",[zn,Pa]=Ee(Vt,{checked:!1}),Yn=s.forwardRef((e,n)=>{const{__scopeMenu:t,forceMount:o,...r}=e,a=Pa(Vt,t);return u.jsx(ee,{present:o||Xe(a.checked)||a.checked===!0,children:u.jsx(_.span,{...r,ref:n,"data-state":Gt(a.checked)})})});Yn.displayName=Vt;var Ra="MenuSeparator",Xn=s.forwardRef((e,n)=>{const{__scopeMenu:t,...o}=e;return u.jsx(_.div,{role:"separator","aria-orientation":"horizontal",...o,ref:n})});Xn.displayName=Ra;var _a="MenuArrow",qn=s.forwardRef((e,n)=>{const{__scopeMenu:t,...o}=e,r=at(t);return u.jsx(rt,{...r,...o,ref:n})});qn.displayName=_a;var Ta="MenuSub",[bc,Zn]=Ee(Ta),Ne="MenuSubTrigger",Jn=s.forwardRef((e,n)=>{const t=Se(Ne,e.__scopeMenu),o=Ve(Ne,e.__scopeMenu),r=Zn(Ne,e.__scopeMenu),a=$t(Ne,e.__scopeMenu),i=s.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:l}=a,d={__scopeMenu:e.__scopeMenu},f=s.useCallback(()=>{i.current&&window.clearTimeout(i.current),i.current=null},[]);return s.useEffect(()=>f,[f]),s.useEffect(()=>{const p=c.current;return()=>{window.clearTimeout(p),l(null)}},[c,l]),u.jsx(Ft,{asChild:!0,...d,children:u.jsx(Un,{id:r.triggerId,"aria-haspopup":"menu","aria-expanded":t.open,"aria-controls":r.contentId,"data-state":to(t.open),...e,ref:Fe(n,r.onTriggerChange),onClick:p=>{var v;(v=e.onClick)==null||v.call(e,p),!(e.disabled||p.defaultPrevented)&&(p.currentTarget.focus(),t.open||t.onOpenChange(!0))},onPointerMove:E(e.onPointerMove,je(p=>{a.onItemEnter(p),!p.defaultPrevented&&!e.disabled&&!t.open&&!i.current&&(a.onPointerGraceIntentChange(null),i.current=window.setTimeout(()=>{t.onOpenChange(!0),f()},100))})),onPointerLeave:E(e.onPointerLeave,je(p=>{var h,w;f();const v=(h=t.content)==null?void 0:h.getBoundingClientRect();if(v){const m=(w=t.content)==null?void 0:w.dataset.side,g=m==="right",y=g?-5:5,x=v[g?"left":"right"],C=v[g?"right":"left"];a.onPointerGraceIntentChange({area:[{x:p.clientX+y,y:p.clientY},{x,y:v.top},{x:C,y:v.top},{x:C,y:v.bottom},{x,y:v.bottom}],side:m}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>a.onPointerGraceIntentChange(null),300)}else{if(a.onTriggerLeave(p),p.defaultPrevented)return;a.onPointerGraceIntentChange(null)}})),onKeyDown:E(e.onKeyDown,p=>{var h;const v=a.searchRef.current!=="";e.disabled||v&&p.key===" "||ca[o.dir].includes(p.key)&&(t.onOpenChange(!0),(h=t.content)==null||h.focus(),p.preventDefault())})})})});Jn.displayName=Ne;var Qn="MenuSubContent",eo=s.forwardRef((e,n)=>{const t=Fn(oe,e.__scopeMenu),{forceMount:o=t.forceMount,...r}=e,a=Se(oe,e.__scopeMenu),i=Ve(oe,e.__scopeMenu),c=Zn(Qn,e.__scopeMenu),l=s.useRef(null),d=M(n,l);return u.jsx(Oe.Provider,{scope:e.__scopeMenu,children:u.jsx(ee,{present:o||a.open,children:u.jsx(Oe.Slot,{scope:e.__scopeMenu,children:u.jsx(Bt,{id:c.contentId,"aria-labelledby":c.triggerId,...r,ref:d,align:"start",side:i.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:f=>{var p;i.isUsingKeyboardRef.current&&((p=l.current)==null||p.focus()),f.preventDefault()},onCloseAutoFocus:f=>f.preventDefault(),onFocusOutside:E(e.onFocusOutside,f=>{f.target!==c.trigger&&a.onOpenChange(!1)}),onEscapeKeyDown:E(e.onEscapeKeyDown,f=>{i.onClose(),f.preventDefault()}),onKeyDown:E(e.onKeyDown,f=>{var h;const p=f.currentTarget.contains(f.target),v=la[i.dir].includes(f.key);p&&v&&(a.onOpenChange(!1),(h=c.trigger)==null||h.focus(),f.preventDefault())})})})})})});eo.displayName=Qn;function to(e){return e?"open":"closed"}function Xe(e){return e==="indeterminate"}function Gt(e){return Xe(e)?"indeterminate":e?"checked":"unchecked"}function Ia(e){const n=document.activeElement;for(const t of e)if(t===n||(t.focus(),document.activeElement!==n))return}function Ma(e,n){return e.map((t,o)=>e[(n+o)%e.length])}function Aa(e,n,t){const r=n.length>1&&Array.from(n).every(d=>d===n[0])?n[0]:n,a=t?e.indexOf(t):-1;let i=Ma(e,Math.max(a,0));r.length===1&&(i=i.filter(d=>d!==t));const l=i.find(d=>d.toLowerCase().startsWith(r.toLowerCase()));return l!==t?l:void 0}function Na(e,n){const{x:t,y:o}=e;let r=!1;for(let a=0,i=n.length-1;a<n.length;i=a++){const c=n[a],l=n[i],d=c.x,f=c.y,p=l.x,v=l.y;f>o!=v>o&&t<(p-d)*(o-f)/(v-f)+d&&(r=!r)}return r}function Da(e,n){if(!n)return!1;const t={x:e.clientX,y:e.clientY};return Na(t,n)}function je(e){return n=>n.pointerType==="mouse"?e(n):void 0}var Oa=Ln,ja=Ft,La=kn,Fa=$n,ka=Ut,$a=Bn,Ba=it,Ua=Vn,Va=Kn,Ga=Wn,Ka=Yn,Ha=Xn,Wa=qn,za=Jn,Ya=eo,ct="DropdownMenu",[Xa]=se(ct,[On]),q=On(),[qa,no]=Xa(ct),oo=e=>{const{__scopeDropdownMenu:n,children:t,dir:o,open:r,defaultOpen:a,onOpenChange:i,modal:c=!0}=e,l=q(n),d=s.useRef(null),[f,p]=de({prop:r,defaultProp:a??!1,onChange:i,caller:ct});return u.jsx(qa,{scope:n,triggerId:ne(),triggerRef:d,contentId:ne(),open:f,onOpenChange:p,onOpenToggle:s.useCallback(()=>p(v=>!v),[p]),modal:c,children:u.jsx(Oa,{...l,open:f,onOpenChange:p,dir:o,modal:c,children:t})})};oo.displayName=ct;var ro="DropdownMenuTrigger",so=s.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,disabled:o=!1,...r}=e,a=no(ro,t),i=q(t);return u.jsx(ja,{asChild:!0,...i,children:u.jsx(_.button,{type:"button",id:a.triggerId,"aria-haspopup":"menu","aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":a.open?"open":"closed","data-disabled":o?"":void 0,disabled:o,...r,ref:Fe(n,a.triggerRef),onPointerDown:E(e.onPointerDown,c=>{!o&&c.button===0&&c.ctrlKey===!1&&(a.onOpenToggle(),a.open||c.preventDefault())}),onKeyDown:E(e.onKeyDown,c=>{o||(["Enter"," "].includes(c.key)&&a.onOpenToggle(),c.key==="ArrowDown"&&a.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(c.key)&&c.preventDefault())})})})});so.displayName=ro;var Za="DropdownMenuPortal",ao=e=>{const{__scopeDropdownMenu:n,...t}=e,o=q(n);return u.jsx(La,{...o,...t})};ao.displayName=Za;var io="DropdownMenuContent",co=s.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...o}=e,r=no(io,t),a=q(t),i=s.useRef(!1);return u.jsx(Fa,{id:r.contentId,"aria-labelledby":r.triggerId,...a,...o,ref:n,onCloseAutoFocus:E(e.onCloseAutoFocus,c=>{var l;i.current||(l=r.triggerRef.current)==null||l.focus(),i.current=!1,c.preventDefault()}),onInteractOutside:E(e.onInteractOutside,c=>{const l=c.detail.originalEvent,d=l.button===0&&l.ctrlKey===!0,f=l.button===2||d;(!r.modal||f)&&(i.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});co.displayName=io;var Ja="DropdownMenuGroup",Qa=s.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...o}=e,r=q(t);return u.jsx(ka,{...r,...o,ref:n})});Qa.displayName=Ja;var ei="DropdownMenuLabel",lo=s.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...o}=e,r=q(t);return u.jsx($a,{...r,...o,ref:n})});lo.displayName=ei;var ti="DropdownMenuItem",uo=s.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...o}=e,r=q(t);return u.jsx(Ba,{...r,...o,ref:n})});uo.displayName=ti;var ni="DropdownMenuCheckboxItem",fo=s.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...o}=e,r=q(t);return u.jsx(Ua,{...r,...o,ref:n})});fo.displayName=ni;var oi="DropdownMenuRadioGroup",ri=s.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...o}=e,r=q(t);return u.jsx(Va,{...r,...o,ref:n})});ri.displayName=oi;var si="DropdownMenuRadioItem",po=s.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...o}=e,r=q(t);return u.jsx(Ga,{...r,...o,ref:n})});po.displayName=si;var ai="DropdownMenuItemIndicator",vo=s.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...o}=e,r=q(t);return u.jsx(Ka,{...r,...o,ref:n})});vo.displayName=ai;var ii="DropdownMenuSeparator",mo=s.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...o}=e,r=q(t);return u.jsx(Ha,{...r,...o,ref:n})});mo.displayName=ii;var ci="DropdownMenuArrow",li=s.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...o}=e,r=q(t);return u.jsx(Wa,{...r,...o,ref:n})});li.displayName=ci;var ui="DropdownMenuSubTrigger",ho=s.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...o}=e,r=q(t);return u.jsx(za,{...r,...o,ref:n})});ho.displayName=ui;var di="DropdownMenuSubContent",go=s.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...o}=e,r=q(t);return u.jsx(Ya,{...r,...o,ref:n,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});go.displayName=di;var Pc=oo,Rc=so,_c=ao,Tc=co,Ic=lo,Mc=uo,Ac=fo,Nc=po,Dc=vo,Oc=mo,jc=ho,Lc=go,xo=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),fi="VisuallyHidden",Co=s.forwardRef((e,n)=>u.jsx(_.span,{...e,ref:n,style:{...xo,...e.style}}));Co.displayName=fi;var pi=Co,[lt]=se("Tooltip",[pe]),ut=pe(),wo="TooltipProvider",vi=700,Pt="tooltip.open",[mi,Kt]=lt(wo),yo=e=>{const{__scopeTooltip:n,delayDuration:t=vi,skipDelayDuration:o=300,disableHoverableContent:r=!1,children:a}=e,i=s.useRef(!0),c=s.useRef(!1),l=s.useRef(0);return s.useEffect(()=>{const d=l.current;return()=>window.clearTimeout(d)},[]),u.jsx(mi,{scope:n,isOpenDelayedRef:i,delayDuration:t,onOpen:s.useCallback(()=>{window.clearTimeout(l.current),i.current=!1},[]),onClose:s.useCallback(()=>{window.clearTimeout(l.current),l.current=window.setTimeout(()=>i.current=!0,o)},[o]),isPointerInTransitRef:c,onPointerInTransitChange:s.useCallback(d=>{c.current=d},[]),disableHoverableContent:r,children:a})};yo.displayName=wo;var Le="Tooltip",[hi,Ge]=lt(Le),Eo=e=>{const{__scopeTooltip:n,children:t,open:o,defaultOpen:r,onOpenChange:a,disableHoverableContent:i,delayDuration:c}=e,l=Kt(Le,e.__scopeTooltip),d=ut(n),[f,p]=s.useState(null),v=ne(),h=s.useRef(0),w=i??l.disableHoverableContent,m=c??l.delayDuration,g=s.useRef(!1),[y,x]=de({prop:o,defaultProp:r??!1,onChange:R=>{R?(l.onOpen(),document.dispatchEvent(new CustomEvent(Pt))):l.onClose(),a==null||a(R)},caller:Le}),C=s.useMemo(()=>y?g.current?"delayed-open":"instant-open":"closed",[y]),S=s.useCallback(()=>{window.clearTimeout(h.current),h.current=0,g.current=!1,x(!0)},[x]),I=s.useCallback(()=>{window.clearTimeout(h.current),h.current=0,x(!1)},[x]),N=s.useCallback(()=>{window.clearTimeout(h.current),h.current=window.setTimeout(()=>{g.current=!0,x(!0),h.current=0},m)},[m,x]);return s.useEffect(()=>()=>{h.current&&(window.clearTimeout(h.current),h.current=0)},[]),u.jsx(nt,{...d,children:u.jsx(hi,{scope:n,contentId:v,open:y,stateAttribute:C,trigger:f,onTriggerChange:p,onTriggerEnter:s.useCallback(()=>{l.isOpenDelayedRef.current?N():S()},[l.isOpenDelayedRef,N,S]),onTriggerLeave:s.useCallback(()=>{w?I():(window.clearTimeout(h.current),h.current=0)},[I,w]),onOpen:S,onClose:I,disableHoverableContent:w,children:t})})};Eo.displayName=Le;var Rt="TooltipTrigger",So=s.forwardRef((e,n)=>{const{__scopeTooltip:t,...o}=e,r=Ge(Rt,t),a=Kt(Rt,t),i=ut(t),c=s.useRef(null),l=M(n,c,r.onTriggerChange),d=s.useRef(!1),f=s.useRef(!1),p=s.useCallback(()=>d.current=!1,[]);return s.useEffect(()=>()=>document.removeEventListener("pointerup",p),[p]),u.jsx($e,{asChild:!0,...i,children:u.jsx(_.button,{"aria-describedby":r.open?r.contentId:void 0,"data-state":r.stateAttribute,...o,ref:l,onPointerMove:E(e.onPointerMove,v=>{v.pointerType!=="touch"&&!f.current&&!a.isPointerInTransitRef.current&&(r.onTriggerEnter(),f.current=!0)}),onPointerLeave:E(e.onPointerLeave,()=>{r.onTriggerLeave(),f.current=!1}),onPointerDown:E(e.onPointerDown,()=>{r.open&&r.onClose(),d.current=!0,document.addEventListener("pointerup",p,{once:!0})}),onFocus:E(e.onFocus,()=>{d.current||r.onOpen()}),onBlur:E(e.onBlur,r.onClose),onClick:E(e.onClick,r.onClose)})})});So.displayName=Rt;var Ht="TooltipPortal",[gi,xi]=lt(Ht,{forceMount:void 0}),bo=e=>{const{__scopeTooltip:n,forceMount:t,children:o,container:r}=e,a=Ge(Ht,n);return u.jsx(gi,{scope:n,forceMount:t,children:u.jsx(ee,{present:t||a.open,children:u.jsx(_e,{asChild:!0,container:r,children:o})})})};bo.displayName=Ht;var be="TooltipContent",Po=s.forwardRef((e,n)=>{const t=xi(be,e.__scopeTooltip),{forceMount:o=t.forceMount,side:r="top",...a}=e,i=Ge(be,e.__scopeTooltip);return u.jsx(ee,{present:o||i.open,children:i.disableHoverableContent?u.jsx(Ro,{side:r,...a,ref:n}):u.jsx(Ci,{side:r,...a,ref:n})})}),Ci=s.forwardRef((e,n)=>{const t=Ge(be,e.__scopeTooltip),o=Kt(be,e.__scopeTooltip),r=s.useRef(null),a=M(n,r),[i,c]=s.useState(null),{trigger:l,onClose:d}=t,f=r.current,{onPointerInTransitChange:p}=o,v=s.useCallback(()=>{c(null),p(!1)},[p]),h=s.useCallback((w,m)=>{const g=w.currentTarget,y={x:w.clientX,y:w.clientY},x=bi(y,g.getBoundingClientRect()),C=Pi(y,x),S=Ri(m.getBoundingClientRect()),I=Ti([...C,...S]);c(I),p(!0)},[p]);return s.useEffect(()=>()=>v(),[v]),s.useEffect(()=>{if(l&&f){const w=g=>h(g,f),m=g=>h(g,l);return l.addEventListener("pointerleave",w),f.addEventListener("pointerleave",m),()=>{l.removeEventListener("pointerleave",w),f.removeEventListener("pointerleave",m)}}},[l,f,h,v]),s.useEffect(()=>{if(i){const w=m=>{const g=m.target,y={x:m.clientX,y:m.clientY},x=(l==null?void 0:l.contains(g))||(f==null?void 0:f.contains(g)),C=!_i(y,i);x?v():C&&(v(),d())};return document.addEventListener("pointermove",w),()=>document.removeEventListener("pointermove",w)}},[l,f,i,d,v]),u.jsx(Ro,{...e,ref:a})}),[wi,yi]=lt(Le,{isInside:!1}),Ei=ms("TooltipContent"),Ro=s.forwardRef((e,n)=>{const{__scopeTooltip:t,children:o,"aria-label":r,onEscapeKeyDown:a,onPointerDownOutside:i,...c}=e,l=Ge(be,t),d=ut(t),{onClose:f}=l;return s.useEffect(()=>(document.addEventListener(Pt,f),()=>document.removeEventListener(Pt,f)),[f]),s.useEffect(()=>{if(l.trigger){const p=v=>{const h=v.target;h!=null&&h.contains(l.trigger)&&f()};return window.addEventListener("scroll",p,{capture:!0}),()=>window.removeEventListener("scroll",p,{capture:!0})}},[l.trigger,f]),u.jsx(Re,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:i,onFocusOutside:p=>p.preventDefault(),onDismiss:f,children:u.jsxs(ot,{"data-state":l.stateAttribute,...d,...c,ref:n,style:{...c.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[u.jsx(Ei,{children:o}),u.jsx(wi,{scope:t,isInside:!0,children:u.jsx(pi,{id:l.contentId,role:"tooltip",children:r||o})})]})})});Po.displayName=be;var _o="TooltipArrow",Si=s.forwardRef((e,n)=>{const{__scopeTooltip:t,...o}=e,r=ut(t);return yi(_o,t).isInside?null:u.jsx(rt,{...r,...o,ref:n})});Si.displayName=_o;function bi(e,n){const t=Math.abs(n.top-e.y),o=Math.abs(n.bottom-e.y),r=Math.abs(n.right-e.x),a=Math.abs(n.left-e.x);switch(Math.min(t,o,r,a)){case a:return"left";case r:return"right";case t:return"top";case o:return"bottom";default:throw new Error("unreachable")}}function Pi(e,n,t=5){const o=[];switch(n){case"top":o.push({x:e.x-t,y:e.y+t},{x:e.x+t,y:e.y+t});break;case"bottom":o.push({x:e.x-t,y:e.y-t},{x:e.x+t,y:e.y-t});break;case"left":o.push({x:e.x+t,y:e.y-t},{x:e.x+t,y:e.y+t});break;case"right":o.push({x:e.x-t,y:e.y-t},{x:e.x-t,y:e.y+t});break}return o}function Ri(e){const{top:n,right:t,bottom:o,left:r}=e;return[{x:r,y:n},{x:t,y:n},{x:t,y:o},{x:r,y:o}]}function _i(e,n){const{x:t,y:o}=e;let r=!1;for(let a=0,i=n.length-1;a<n.length;i=a++){const c=n[a],l=n[i],d=c.x,f=c.y,p=l.x,v=l.y;f>o!=v>o&&t<(p-d)*(o-f)/(v-f)+d&&(r=!r)}return r}function Ti(e){const n=e.slice();return n.sort((t,o)=>t.x<o.x?-1:t.x>o.x?1:t.y<o.y?-1:t.y>o.y?1:0),Ii(n)}function Ii(e){if(e.length<=1)return e.slice();const n=[];for(let o=0;o<e.length;o++){const r=e[o];for(;n.length>=2;){const a=n[n.length-1],i=n[n.length-2];if((a.x-i.x)*(r.y-i.y)>=(a.y-i.y)*(r.x-i.x))n.pop();else break}n.push(r)}n.pop();const t=[];for(let o=e.length-1;o>=0;o--){const r=e[o];for(;t.length>=2;){const a=t[t.length-1],i=t[t.length-2];if((a.x-i.x)*(r.y-i.y)>=(a.y-i.y)*(r.x-i.x))t.pop();else break}t.push(r)}return t.pop(),n.length===1&&t.length===1&&n[0].x===t[0].x&&n[0].y===t[0].y?n:n.concat(t)}var Fc=yo,kc=Eo,$c=So,Bc=bo,Uc=Po;function cn(e,[n,t]){return Math.min(t,Math.max(n,e))}function To(e){const n=s.useRef({value:e,previous:e});return s.useMemo(()=>(n.current.value!==e&&(n.current.previous=n.current.value,n.current.value=e),n.current.previous),[e])}var Mi=[" ","Enter","ArrowUp","ArrowDown"],Ai=[" ","Enter"],Ce="Select",[dt,ft,Ni]=Ot(Ce),[Te]=se(Ce,[Ni,pe]),pt=pe(),[Di,ve]=Te(Ce),[Oi,ji]=Te(Ce),Io=e=>{const{__scopeSelect:n,children:t,open:o,defaultOpen:r,onOpenChange:a,value:i,defaultValue:c,onValueChange:l,dir:d,name:f,autoComplete:p,disabled:v,required:h,form:w}=e,m=pt(n),[g,y]=s.useState(null),[x,C]=s.useState(null),[S,I]=s.useState(!1),N=et(d),[R,T]=de({prop:o,defaultProp:r??!1,onChange:a,caller:Ce}),[B,$]=de({prop:i,defaultProp:c,onChange:l,caller:Ce}),V=s.useRef(null),H=g?w||!!g.closest("form"):!0,[G,z]=s.useState(new Set),Y=Array.from(G).map(L=>L.props.value).join(";");return u.jsx(nt,{...m,children:u.jsxs(Di,{required:h,scope:n,trigger:g,onTriggerChange:y,valueNode:x,onValueNodeChange:C,valueNodeHasChildren:S,onValueNodeHasChildrenChange:I,contentId:ne(),value:B,onValueChange:$,open:R,onOpenChange:T,dir:N,triggerPointerDownPosRef:V,disabled:v,children:[u.jsx(dt.Provider,{scope:n,children:u.jsx(Oi,{scope:e.__scopeSelect,onNativeOptionAdd:s.useCallback(L=>{z(W=>new Set(W).add(L))},[]),onNativeOptionRemove:s.useCallback(L=>{z(W=>{const k=new Set(W);return k.delete(L),k})},[]),children:t})}),H?u.jsxs(Qo,{"aria-hidden":!0,required:h,tabIndex:-1,name:f,autoComplete:p,value:B,onChange:L=>$(L.target.value),disabled:v,form:w,children:[B===void 0?u.jsx("option",{value:""}):null,Array.from(G)]},Y):null]})})};Io.displayName=Ce;var Mo="SelectTrigger",Ao=s.forwardRef((e,n)=>{const{__scopeSelect:t,disabled:o=!1,...r}=e,a=pt(t),i=ve(Mo,t),c=i.disabled||o,l=M(n,i.onTriggerChange),d=ft(t),f=s.useRef("touch"),[p,v,h]=tr(m=>{const g=d().filter(C=>!C.disabled),y=g.find(C=>C.value===i.value),x=nr(g,m,y);x!==void 0&&i.onValueChange(x.value)}),w=m=>{c||(i.onOpenChange(!0),h()),m&&(i.triggerPointerDownPosRef.current={x:Math.round(m.pageX),y:Math.round(m.pageY)})};return u.jsx($e,{asChild:!0,...a,children:u.jsx(_.button,{type:"button",role:"combobox","aria-controls":i.contentId,"aria-expanded":i.open,"aria-required":i.required,"aria-autocomplete":"none",dir:i.dir,"data-state":i.open?"open":"closed",disabled:c,"data-disabled":c?"":void 0,"data-placeholder":er(i.value)?"":void 0,...r,ref:l,onClick:E(r.onClick,m=>{m.currentTarget.focus(),f.current!=="mouse"&&w(m)}),onPointerDown:E(r.onPointerDown,m=>{f.current=m.pointerType;const g=m.target;g.hasPointerCapture(m.pointerId)&&g.releasePointerCapture(m.pointerId),m.button===0&&m.ctrlKey===!1&&m.pointerType==="mouse"&&(w(m),m.preventDefault())}),onKeyDown:E(r.onKeyDown,m=>{const g=p.current!=="";!(m.ctrlKey||m.altKey||m.metaKey)&&m.key.length===1&&v(m.key),!(g&&m.key===" ")&&Mi.includes(m.key)&&(w(),m.preventDefault())})})})});Ao.displayName=Mo;var No="SelectValue",Do=s.forwardRef((e,n)=>{const{__scopeSelect:t,className:o,style:r,children:a,placeholder:i="",...c}=e,l=ve(No,t),{onValueNodeHasChildrenChange:d}=l,f=a!==void 0,p=M(n,l.onValueNodeChange);return X(()=>{d(f)},[d,f]),u.jsx(_.span,{...c,ref:p,style:{pointerEvents:"none"},children:er(l.value)?u.jsx(u.Fragment,{children:i}):a})});Do.displayName=No;var Li="SelectIcon",Oo=s.forwardRef((e,n)=>{const{__scopeSelect:t,children:o,...r}=e;return u.jsx(_.span,{"aria-hidden":!0,...r,ref:n,children:o||"▼"})});Oo.displayName=Li;var Fi="SelectPortal",jo=e=>u.jsx(_e,{asChild:!0,...e});jo.displayName=Fi;var we="SelectContent",Lo=s.forwardRef((e,n)=>{const t=ve(we,e.__scopeSelect),[o,r]=s.useState();if(X(()=>{r(new DocumentFragment)},[]),!t.open){const a=o;return a?Dt.createPortal(u.jsx(Fo,{scope:e.__scopeSelect,children:u.jsx(dt.Slot,{scope:e.__scopeSelect,children:u.jsx("div",{children:e.children})})}),a):null}return u.jsx(ko,{...e,ref:n})});Lo.displayName=we;var re=10,[Fo,me]=Te(we),ki="SelectContentImpl",$i=xe("SelectContent.RemoveScroll"),ko=s.forwardRef((e,n)=>{const{__scopeSelect:t,position:o="item-aligned",onCloseAutoFocus:r,onEscapeKeyDown:a,onPointerDownOutside:i,side:c,sideOffset:l,align:d,alignOffset:f,arrowPadding:p,collisionBoundary:v,collisionPadding:h,sticky:w,hideWhenDetached:m,avoidCollisions:g,...y}=e,x=ve(we,t),[C,S]=s.useState(null),[I,N]=s.useState(null),R=M(n,P=>S(P)),[T,B]=s.useState(null),[$,V]=s.useState(null),H=ft(t),[G,z]=s.useState(!1),Y=s.useRef(!1);s.useEffect(()=>{if(C)return Qe(C)},[C]),tt();const L=s.useCallback(P=>{const[D,...F]=H().map(j=>j.ref.current),[A]=F.slice(-1),O=document.activeElement;for(const j of P)if(j===O||(j==null||j.scrollIntoView({block:"nearest"}),j===D&&I&&(I.scrollTop=0),j===A&&I&&(I.scrollTop=I.scrollHeight),j==null||j.focus(),document.activeElement!==O))return},[H,I]),W=s.useCallback(()=>L([T,C]),[L,T,C]);s.useEffect(()=>{G&&W()},[G,W]);const{onOpenChange:k,triggerPointerDownPosRef:b}=x;s.useEffect(()=>{if(C){let P={x:0,y:0};const D=A=>{var O,j;P={x:Math.abs(Math.round(A.pageX)-(((O=b.current)==null?void 0:O.x)??0)),y:Math.abs(Math.round(A.pageY)-(((j=b.current)==null?void 0:j.y)??0))}},F=A=>{P.x<=10&&P.y<=10?A.preventDefault():C.contains(A.target)||k(!1),document.removeEventListener("pointermove",D),b.current=null};return b.current!==null&&(document.addEventListener("pointermove",D),document.addEventListener("pointerup",F,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",D),document.removeEventListener("pointerup",F,{capture:!0})}}},[C,k,b]),s.useEffect(()=>{const P=()=>k(!1);return window.addEventListener("blur",P),window.addEventListener("resize",P),()=>{window.removeEventListener("blur",P),window.removeEventListener("resize",P)}},[k]);const[K,U]=tr(P=>{const D=H().filter(O=>!O.disabled),F=D.find(O=>O.ref.current===document.activeElement),A=nr(D,P,F);A&&setTimeout(()=>A.ref.current.focus())}),Z=s.useCallback((P,D,F)=>{const A=!Y.current&&!F;(x.value!==void 0&&x.value===D||A)&&(B(P),A&&(Y.current=!0))},[x.value]),le=s.useCallback(()=>C==null?void 0:C.focus(),[C]),te=s.useCallback((P,D,F)=>{const A=!Y.current&&!F;(x.value!==void 0&&x.value===D||A)&&V(P)},[x.value]),ue=o==="popper"?_t:$o,J=ue===_t?{side:c,sideOffset:l,align:d,alignOffset:f,arrowPadding:p,collisionBoundary:v,collisionPadding:h,sticky:w,hideWhenDetached:m,avoidCollisions:g}:{};return u.jsx(Fo,{scope:t,content:C,viewport:I,onViewportChange:N,itemRefCallback:Z,selectedItem:T,onItemLeave:le,itemTextRefCallback:te,focusSelectedItem:W,selectedItemText:$,position:o,isPositioned:G,searchRef:K,children:u.jsx(Je,{as:$i,allowPinchZoom:!0,children:u.jsx(ke,{asChild:!0,trapped:x.open,onMountAutoFocus:P=>{P.preventDefault()},onUnmountAutoFocus:E(r,P=>{var D;(D=x.trigger)==null||D.focus({preventScroll:!0}),P.preventDefault()}),children:u.jsx(Re,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:i,onFocusOutside:P=>P.preventDefault(),onDismiss:()=>x.onOpenChange(!1),children:u.jsx(ue,{role:"listbox",id:x.contentId,"data-state":x.open?"open":"closed",dir:x.dir,onContextMenu:P=>P.preventDefault(),...y,...J,onPlaced:()=>z(!0),ref:R,style:{display:"flex",flexDirection:"column",outline:"none",...y.style},onKeyDown:E(y.onKeyDown,P=>{const D=P.ctrlKey||P.altKey||P.metaKey;if(P.key==="Tab"&&P.preventDefault(),!D&&P.key.length===1&&U(P.key),["ArrowUp","ArrowDown","Home","End"].includes(P.key)){let A=H().filter(O=>!O.disabled).map(O=>O.ref.current);if(["ArrowUp","End"].includes(P.key)&&(A=A.slice().reverse()),["ArrowUp","ArrowDown"].includes(P.key)){const O=P.target,j=A.indexOf(O);A=A.slice(j+1)}setTimeout(()=>L(A)),P.preventDefault()}})})})})})})});ko.displayName=ki;var Bi="SelectItemAlignedPosition",$o=s.forwardRef((e,n)=>{const{__scopeSelect:t,onPlaced:o,...r}=e,a=ve(we,t),i=me(we,t),[c,l]=s.useState(null),[d,f]=s.useState(null),p=M(n,R=>f(R)),v=ft(t),h=s.useRef(!1),w=s.useRef(!0),{viewport:m,selectedItem:g,selectedItemText:y,focusSelectedItem:x}=i,C=s.useCallback(()=>{if(a.trigger&&a.valueNode&&c&&d&&m&&g&&y){const R=a.trigger.getBoundingClientRect(),T=d.getBoundingClientRect(),B=a.valueNode.getBoundingClientRect(),$=y.getBoundingClientRect();if(a.dir!=="rtl"){const O=$.left-T.left,j=B.left-O,Q=R.left-j,ie=R.width+Q,Ie=Math.max(ie,T.width),Me=window.innerWidth-re,Ae=cn(j,[re,Math.max(re,Me-Ie)]);c.style.minWidth=ie+"px",c.style.left=Ae+"px"}else{const O=T.right-$.right,j=window.innerWidth-B.right-O,Q=window.innerWidth-R.right-j,ie=R.width+Q,Ie=Math.max(ie,T.width),Me=window.innerWidth-re,Ae=cn(j,[re,Math.max(re,Me-Ie)]);c.style.minWidth=ie+"px",c.style.right=Ae+"px"}const V=v(),H=window.innerHeight-re*2,G=m.scrollHeight,z=window.getComputedStyle(d),Y=parseInt(z.borderTopWidth,10),L=parseInt(z.paddingTop,10),W=parseInt(z.borderBottomWidth,10),k=parseInt(z.paddingBottom,10),b=Y+L+G+k+W,K=Math.min(g.offsetHeight*5,b),U=window.getComputedStyle(m),Z=parseInt(U.paddingTop,10),le=parseInt(U.paddingBottom,10),te=R.top+R.height/2-re,ue=H-te,J=g.offsetHeight/2,P=g.offsetTop+J,D=Y+L+P,F=b-D;if(D<=te){const O=V.length>0&&g===V[V.length-1].ref.current;c.style.bottom="0px";const j=d.clientHeight-m.offsetTop-m.offsetHeight,Q=Math.max(ue,J+(O?le:0)+j+W),ie=D+Q;c.style.height=ie+"px"}else{const O=V.length>0&&g===V[0].ref.current;c.style.top="0px";const Q=Math.max(te,Y+m.offsetTop+(O?Z:0)+J)+F;c.style.height=Q+"px",m.scrollTop=D-te+m.offsetTop}c.style.margin=`${re}px 0`,c.style.minHeight=K+"px",c.style.maxHeight=H+"px",o==null||o(),requestAnimationFrame(()=>h.current=!0)}},[v,a.trigger,a.valueNode,c,d,m,g,y,a.dir,o]);X(()=>C(),[C]);const[S,I]=s.useState();X(()=>{d&&I(window.getComputedStyle(d).zIndex)},[d]);const N=s.useCallback(R=>{R&&w.current===!0&&(C(),x==null||x(),w.current=!1)},[C,x]);return u.jsx(Vi,{scope:t,contentWrapper:c,shouldExpandOnScrollRef:h,onScrollButtonChange:N,children:u.jsx("div",{ref:l,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:S},children:u.jsx(_.div,{...r,ref:p,style:{boxSizing:"border-box",maxHeight:"100%",...r.style}})})})});$o.displayName=Bi;var Ui="SelectPopperPosition",_t=s.forwardRef((e,n)=>{const{__scopeSelect:t,align:o="start",collisionPadding:r=re,...a}=e,i=pt(t);return u.jsx(ot,{...i,...a,ref:n,align:o,collisionPadding:r,style:{boxSizing:"border-box",...a.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});_t.displayName=Ui;var[Vi,Wt]=Te(we,{}),Tt="SelectViewport",Bo=s.forwardRef((e,n)=>{const{__scopeSelect:t,nonce:o,...r}=e,a=me(Tt,t),i=Wt(Tt,t),c=M(n,a.onViewportChange),l=s.useRef(0);return u.jsxs(u.Fragment,{children:[u.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),u.jsx(dt.Slot,{scope:t,children:u.jsx(_.div,{"data-radix-select-viewport":"",role:"presentation",...r,ref:c,style:{position:"relative",flex:1,overflow:"hidden auto",...r.style},onScroll:E(r.onScroll,d=>{const f=d.currentTarget,{contentWrapper:p,shouldExpandOnScrollRef:v}=i;if(v!=null&&v.current&&p){const h=Math.abs(l.current-f.scrollTop);if(h>0){const w=window.innerHeight-re*2,m=parseFloat(p.style.minHeight),g=parseFloat(p.style.height),y=Math.max(m,g);if(y<w){const x=y+h,C=Math.min(w,x),S=x-C;p.style.height=C+"px",p.style.bottom==="0px"&&(f.scrollTop=S>0?S:0,p.style.justifyContent="flex-end")}}}l.current=f.scrollTop})})})]})});Bo.displayName=Tt;var Uo="SelectGroup",[Gi,Ki]=Te(Uo),Hi=s.forwardRef((e,n)=>{const{__scopeSelect:t,...o}=e,r=ne();return u.jsx(Gi,{scope:t,id:r,children:u.jsx(_.div,{role:"group","aria-labelledby":r,...o,ref:n})})});Hi.displayName=Uo;var Vo="SelectLabel",Go=s.forwardRef((e,n)=>{const{__scopeSelect:t,...o}=e,r=Ki(Vo,t);return u.jsx(_.div,{id:r.id,...o,ref:n})});Go.displayName=Vo;var qe="SelectItem",[Wi,Ko]=Te(qe),Ho=s.forwardRef((e,n)=>{const{__scopeSelect:t,value:o,disabled:r=!1,textValue:a,...i}=e,c=ve(qe,t),l=me(qe,t),d=c.value===o,[f,p]=s.useState(a??""),[v,h]=s.useState(!1),w=M(n,x=>{var C;return(C=l.itemRefCallback)==null?void 0:C.call(l,x,o,r)}),m=ne(),g=s.useRef("touch"),y=()=>{r||(c.onValueChange(o),c.onOpenChange(!1))};if(o==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return u.jsx(Wi,{scope:t,value:o,disabled:r,textId:m,isSelected:d,onItemTextChange:s.useCallback(x=>{p(C=>C||((x==null?void 0:x.textContent)??"").trim())},[]),children:u.jsx(dt.ItemSlot,{scope:t,value:o,disabled:r,textValue:f,children:u.jsx(_.div,{role:"option","aria-labelledby":m,"data-highlighted":v?"":void 0,"aria-selected":d&&v,"data-state":d?"checked":"unchecked","aria-disabled":r||void 0,"data-disabled":r?"":void 0,tabIndex:r?void 0:-1,...i,ref:w,onFocus:E(i.onFocus,()=>h(!0)),onBlur:E(i.onBlur,()=>h(!1)),onClick:E(i.onClick,()=>{g.current!=="mouse"&&y()}),onPointerUp:E(i.onPointerUp,()=>{g.current==="mouse"&&y()}),onPointerDown:E(i.onPointerDown,x=>{g.current=x.pointerType}),onPointerMove:E(i.onPointerMove,x=>{var C;g.current=x.pointerType,r?(C=l.onItemLeave)==null||C.call(l):g.current==="mouse"&&x.currentTarget.focus({preventScroll:!0})}),onPointerLeave:E(i.onPointerLeave,x=>{var C;x.currentTarget===document.activeElement&&((C=l.onItemLeave)==null||C.call(l))}),onKeyDown:E(i.onKeyDown,x=>{var S;((S=l.searchRef)==null?void 0:S.current)!==""&&x.key===" "||(Ai.includes(x.key)&&y(),x.key===" "&&x.preventDefault())})})})})});Ho.displayName=qe;var De="SelectItemText",Wo=s.forwardRef((e,n)=>{const{__scopeSelect:t,className:o,style:r,...a}=e,i=ve(De,t),c=me(De,t),l=Ko(De,t),d=ji(De,t),[f,p]=s.useState(null),v=M(n,y=>p(y),l.onItemTextChange,y=>{var x;return(x=c.itemTextRefCallback)==null?void 0:x.call(c,y,l.value,l.disabled)}),h=f==null?void 0:f.textContent,w=s.useMemo(()=>u.jsx("option",{value:l.value,disabled:l.disabled,children:h},l.value),[l.disabled,l.value,h]),{onNativeOptionAdd:m,onNativeOptionRemove:g}=d;return X(()=>(m(w),()=>g(w)),[m,g,w]),u.jsxs(u.Fragment,{children:[u.jsx(_.span,{id:l.textId,...a,ref:v}),l.isSelected&&i.valueNode&&!i.valueNodeHasChildren?Dt.createPortal(a.children,i.valueNode):null]})});Wo.displayName=De;var zo="SelectItemIndicator",Yo=s.forwardRef((e,n)=>{const{__scopeSelect:t,...o}=e;return Ko(zo,t).isSelected?u.jsx(_.span,{"aria-hidden":!0,...o,ref:n}):null});Yo.displayName=zo;var It="SelectScrollUpButton",Xo=s.forwardRef((e,n)=>{const t=me(It,e.__scopeSelect),o=Wt(It,e.__scopeSelect),[r,a]=s.useState(!1),i=M(n,o.onScrollButtonChange);return X(()=>{if(t.viewport&&t.isPositioned){let c=function(){const d=l.scrollTop>0;a(d)};const l=t.viewport;return c(),l.addEventListener("scroll",c),()=>l.removeEventListener("scroll",c)}},[t.viewport,t.isPositioned]),r?u.jsx(Zo,{...e,ref:i,onAutoScroll:()=>{const{viewport:c,selectedItem:l}=t;c&&l&&(c.scrollTop=c.scrollTop-l.offsetHeight)}}):null});Xo.displayName=It;var Mt="SelectScrollDownButton",qo=s.forwardRef((e,n)=>{const t=me(Mt,e.__scopeSelect),o=Wt(Mt,e.__scopeSelect),[r,a]=s.useState(!1),i=M(n,o.onScrollButtonChange);return X(()=>{if(t.viewport&&t.isPositioned){let c=function(){const d=l.scrollHeight-l.clientHeight,f=Math.ceil(l.scrollTop)<d;a(f)};const l=t.viewport;return c(),l.addEventListener("scroll",c),()=>l.removeEventListener("scroll",c)}},[t.viewport,t.isPositioned]),r?u.jsx(Zo,{...e,ref:i,onAutoScroll:()=>{const{viewport:c,selectedItem:l}=t;c&&l&&(c.scrollTop=c.scrollTop+l.offsetHeight)}}):null});qo.displayName=Mt;var Zo=s.forwardRef((e,n)=>{const{__scopeSelect:t,onAutoScroll:o,...r}=e,a=me("SelectScrollButton",t),i=s.useRef(null),c=ft(t),l=s.useCallback(()=>{i.current!==null&&(window.clearInterval(i.current),i.current=null)},[]);return s.useEffect(()=>()=>l(),[l]),X(()=>{var f;const d=c().find(p=>p.ref.current===document.activeElement);(f=d==null?void 0:d.ref.current)==null||f.scrollIntoView({block:"nearest"})},[c]),u.jsx(_.div,{"aria-hidden":!0,...r,ref:n,style:{flexShrink:0,...r.style},onPointerDown:E(r.onPointerDown,()=>{i.current===null&&(i.current=window.setInterval(o,50))}),onPointerMove:E(r.onPointerMove,()=>{var d;(d=a.onItemLeave)==null||d.call(a),i.current===null&&(i.current=window.setInterval(o,50))}),onPointerLeave:E(r.onPointerLeave,()=>{l()})})}),zi="SelectSeparator",Jo=s.forwardRef((e,n)=>{const{__scopeSelect:t,...o}=e;return u.jsx(_.div,{"aria-hidden":!0,...o,ref:n})});Jo.displayName=zi;var At="SelectArrow",Yi=s.forwardRef((e,n)=>{const{__scopeSelect:t,...o}=e,r=pt(t),a=ve(At,t),i=me(At,t);return a.open&&i.position==="popper"?u.jsx(rt,{...r,...o,ref:n}):null});Yi.displayName=At;var Xi="SelectBubbleInput",Qo=s.forwardRef(({__scopeSelect:e,value:n,...t},o)=>{const r=s.useRef(null),a=M(o,r),i=To(n);return s.useEffect(()=>{const c=r.current;if(!c)return;const l=window.HTMLSelectElement.prototype,f=Object.getOwnPropertyDescriptor(l,"value").set;if(i!==n&&f){const p=new Event("change",{bubbles:!0});f.call(c,n),c.dispatchEvent(p)}},[i,n]),u.jsx(_.select,{...t,style:{...xo,...t.style},ref:a,defaultValue:n})});Qo.displayName=Xi;function er(e){return e===""||e===void 0}function tr(e){const n=ce(e),t=s.useRef(""),o=s.useRef(0),r=s.useCallback(i=>{const c=t.current+i;n(c),function l(d){t.current=d,window.clearTimeout(o.current),d!==""&&(o.current=window.setTimeout(()=>l(""),1e3))}(c)},[n]),a=s.useCallback(()=>{t.current="",window.clearTimeout(o.current)},[]);return s.useEffect(()=>()=>window.clearTimeout(o.current),[]),[t,r,a]}function nr(e,n,t){const r=n.length>1&&Array.from(n).every(d=>d===n[0])?n[0]:n,a=t?e.indexOf(t):-1;let i=qi(e,Math.max(a,0));r.length===1&&(i=i.filter(d=>d!==t));const l=i.find(d=>d.textValue.toLowerCase().startsWith(r.toLowerCase()));return l!==t?l:void 0}function qi(e,n){return e.map((t,o)=>e[(n+o)%e.length])}var Vc=Io,Gc=Ao,Kc=Do,Hc=Oo,Wc=jo,zc=Lo,Yc=Bo,Xc=Go,qc=Ho,Zc=Wo,Jc=Yo,Qc=Xo,el=qo,tl=Jo,vt="Dialog",[or]=se(vt),[Zi,ae]=or(vt),rr=e=>{const{__scopeDialog:n,children:t,open:o,defaultOpen:r,onOpenChange:a,modal:i=!0}=e,c=s.useRef(null),l=s.useRef(null),[d,f]=de({prop:o,defaultProp:r??!1,onChange:a,caller:vt});return u.jsx(Zi,{scope:n,triggerRef:c,contentRef:l,contentId:ne(),titleId:ne(),descriptionId:ne(),open:d,onOpenChange:f,onOpenToggle:s.useCallback(()=>f(p=>!p),[f]),modal:i,children:t})};rr.displayName=vt;var sr="DialogTrigger",Ji=s.forwardRef((e,n)=>{const{__scopeDialog:t,...o}=e,r=ae(sr,t),a=M(n,r.triggerRef);return u.jsx(_.button,{type:"button","aria-haspopup":"dialog","aria-expanded":r.open,"aria-controls":r.contentId,"data-state":Xt(r.open),...o,ref:a,onClick:E(e.onClick,r.onOpenToggle)})});Ji.displayName=sr;var zt="DialogPortal",[Qi,ar]=or(zt,{forceMount:void 0}),ir=e=>{const{__scopeDialog:n,forceMount:t,children:o,container:r}=e,a=ae(zt,n);return u.jsx(Qi,{scope:n,forceMount:t,children:s.Children.map(o,i=>u.jsx(ee,{present:t||a.open,children:u.jsx(_e,{asChild:!0,container:r,children:i})}))})};ir.displayName=zt;var Ze="DialogOverlay",cr=s.forwardRef((e,n)=>{const t=ar(Ze,e.__scopeDialog),{forceMount:o=t.forceMount,...r}=e,a=ae(Ze,e.__scopeDialog);return a.modal?u.jsx(ee,{present:o||a.open,children:u.jsx(tc,{...r,ref:n})}):null});cr.displayName=Ze;var ec=xe("DialogOverlay.RemoveScroll"),tc=s.forwardRef((e,n)=>{const{__scopeDialog:t,...o}=e,r=ae(Ze,t);return u.jsx(Je,{as:ec,allowPinchZoom:!0,shards:[r.contentRef],children:u.jsx(_.div,{"data-state":Xt(r.open),...o,ref:n,style:{pointerEvents:"auto",...o.style}})})}),ye="DialogContent",lr=s.forwardRef((e,n)=>{const t=ar(ye,e.__scopeDialog),{forceMount:o=t.forceMount,...r}=e,a=ae(ye,e.__scopeDialog);return u.jsx(ee,{present:o||a.open,children:a.modal?u.jsx(nc,{...r,ref:n}):u.jsx(oc,{...r,ref:n})})});lr.displayName=ye;var nc=s.forwardRef((e,n)=>{const t=ae(ye,e.__scopeDialog),o=s.useRef(null),r=M(n,t.contentRef,o);return s.useEffect(()=>{const a=o.current;if(a)return Qe(a)},[]),u.jsx(ur,{...e,ref:r,trapFocus:t.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:E(e.onCloseAutoFocus,a=>{var i;a.preventDefault(),(i=t.triggerRef.current)==null||i.focus()}),onPointerDownOutside:E(e.onPointerDownOutside,a=>{const i=a.detail.originalEvent,c=i.button===0&&i.ctrlKey===!0;(i.button===2||c)&&a.preventDefault()}),onFocusOutside:E(e.onFocusOutside,a=>a.preventDefault())})}),oc=s.forwardRef((e,n)=>{const t=ae(ye,e.__scopeDialog),o=s.useRef(!1),r=s.useRef(!1);return u.jsx(ur,{...e,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:a=>{var i,c;(i=e.onCloseAutoFocus)==null||i.call(e,a),a.defaultPrevented||(o.current||(c=t.triggerRef.current)==null||c.focus(),a.preventDefault()),o.current=!1,r.current=!1},onInteractOutside:a=>{var l,d;(l=e.onInteractOutside)==null||l.call(e,a),a.defaultPrevented||(o.current=!0,a.detail.originalEvent.type==="pointerdown"&&(r.current=!0));const i=a.target;((d=t.triggerRef.current)==null?void 0:d.contains(i))&&a.preventDefault(),a.detail.originalEvent.type==="focusin"&&r.current&&a.preventDefault()}})}),ur=s.forwardRef((e,n)=>{const{__scopeDialog:t,trapFocus:o,onOpenAutoFocus:r,onCloseAutoFocus:a,...i}=e,c=ae(ye,t),l=s.useRef(null),d=M(n,l);return tt(),u.jsxs(u.Fragment,{children:[u.jsx(ke,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:r,onUnmountAutoFocus:a,children:u.jsx(Re,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":Xt(c.open),...i,ref:d,onDismiss:()=>c.onOpenChange(!1)})}),u.jsxs(u.Fragment,{children:[u.jsx(rc,{titleId:c.titleId}),u.jsx(ac,{contentRef:l,descriptionId:c.descriptionId})]})]})}),Yt="DialogTitle",dr=s.forwardRef((e,n)=>{const{__scopeDialog:t,...o}=e,r=ae(Yt,t);return u.jsx(_.h2,{id:r.titleId,...o,ref:n})});dr.displayName=Yt;var fr="DialogDescription",pr=s.forwardRef((e,n)=>{const{__scopeDialog:t,...o}=e,r=ae(fr,t);return u.jsx(_.p,{id:r.descriptionId,...o,ref:n})});pr.displayName=fr;var vr="DialogClose",mr=s.forwardRef((e,n)=>{const{__scopeDialog:t,...o}=e,r=ae(vr,t);return u.jsx(_.button,{type:"button",...o,ref:n,onClick:E(e.onClick,()=>r.onOpenChange(!1))})});mr.displayName=vr;function Xt(e){return e?"open":"closed"}var hr="DialogTitleWarning",[nl,gr]=ls(hr,{contentName:ye,titleName:Yt,docsSlug:"dialog"}),rc=({titleId:e})=>{const n=gr(hr),t=`\`${n.contentName}\` requires a \`${n.titleName}\` for the component to be accessible for screen reader users.
2
-
3
- If you want to hide the \`${n.titleName}\`, you can wrap it with our VisuallyHidden component.
4
-
5
- For more information, see https://radix-ui.com/primitives/docs/components/${n.docsSlug}`;return s.useEffect(()=>{e&&(document.getElementById(e)||console.error(t))},[t,e]),null},sc="DialogDescriptionWarning",ac=({contentRef:e,descriptionId:n})=>{const o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${gr(sc).contentName}}.`;return s.useEffect(()=>{var a;const r=(a=e.current)==null?void 0:a.getAttribute("aria-describedby");n&&r&&(document.getElementById(n)||console.warn(o))},[o,e,n]),null},ol=rr,rl=ir,sl=cr,al=lr,il=dr,cl=pr,ll=mr,mt="Tabs",[ic]=se(mt,[st]),xr=st(),[cc,qt]=ic(mt),Cr=s.forwardRef((e,n)=>{const{__scopeTabs:t,value:o,onValueChange:r,defaultValue:a,orientation:i="horizontal",dir:c,activationMode:l="automatic",...d}=e,f=et(c),[p,v]=de({prop:o,onChange:r,defaultProp:a??"",caller:mt});return u.jsx(cc,{scope:t,baseId:ne(),value:p,onValueChange:v,orientation:i,dir:f,activationMode:l,children:u.jsx(_.div,{dir:f,"data-orientation":i,...d,ref:n})})});Cr.displayName=mt;var wr="TabsList",yr=s.forwardRef((e,n)=>{const{__scopeTabs:t,loop:o=!0,...r}=e,a=qt(wr,t),i=xr(t);return u.jsx(An,{asChild:!0,...i,orientation:a.orientation,dir:a.dir,loop:o,children:u.jsx(_.div,{role:"tablist","aria-orientation":a.orientation,...r,ref:n})})});yr.displayName=wr;var Er="TabsTrigger",Sr=s.forwardRef((e,n)=>{const{__scopeTabs:t,value:o,disabled:r=!1,...a}=e,i=qt(Er,t),c=xr(t),l=Rr(i.baseId,o),d=_r(i.baseId,o),f=o===i.value;return u.jsx(Nn,{asChild:!0,...c,focusable:!r,active:f,children:u.jsx(_.button,{type:"button",role:"tab","aria-selected":f,"aria-controls":d,"data-state":f?"active":"inactive","data-disabled":r?"":void 0,disabled:r,id:l,...a,ref:n,onMouseDown:E(e.onMouseDown,p=>{!r&&p.button===0&&p.ctrlKey===!1?i.onValueChange(o):p.preventDefault()}),onKeyDown:E(e.onKeyDown,p=>{[" ","Enter"].includes(p.key)&&i.onValueChange(o)}),onFocus:E(e.onFocus,()=>{const p=i.activationMode!=="manual";!f&&!r&&p&&i.onValueChange(o)})})})});Sr.displayName=Er;var br="TabsContent",Pr=s.forwardRef((e,n)=>{const{__scopeTabs:t,value:o,forceMount:r,children:a,...i}=e,c=qt(br,t),l=Rr(c.baseId,o),d=_r(c.baseId,o),f=o===c.value,p=s.useRef(f);return s.useEffect(()=>{const v=requestAnimationFrame(()=>p.current=!1);return()=>cancelAnimationFrame(v)},[]),u.jsx(ee,{present:r||f,children:({present:v})=>u.jsx(_.div,{"data-state":f?"active":"inactive","data-orientation":c.orientation,role:"tabpanel","aria-labelledby":l,hidden:!v,id:d,tabIndex:0,...i,ref:n,style:{...e.style,animationDuration:p.current?"0s":void 0},children:v&&a})})});Pr.displayName=br;function Rr(e,n){return`${e}-trigger-${n}`}function _r(e,n){return`${e}-content-${n}`}var ul=Cr,dl=yr,fl=Sr,pl=Pr,ht="Popover",[Tr]=se(ht,[pe]),Ke=pe(),[lc,he]=Tr(ht),Ir=e=>{const{__scopePopover:n,children:t,open:o,defaultOpen:r,onOpenChange:a,modal:i=!1}=e,c=Ke(n),l=s.useRef(null),[d,f]=s.useState(!1),[p,v]=de({prop:o,defaultProp:r??!1,onChange:a,caller:ht});return u.jsx(nt,{...c,children:u.jsx(lc,{scope:n,contentId:ne(),triggerRef:l,open:p,onOpenChange:v,onOpenToggle:s.useCallback(()=>v(h=>!h),[v]),hasCustomAnchor:d,onCustomAnchorAdd:s.useCallback(()=>f(!0),[]),onCustomAnchorRemove:s.useCallback(()=>f(!1),[]),modal:i,children:t})})};Ir.displayName=ht;var Mr="PopoverAnchor",Ar=s.forwardRef((e,n)=>{const{__scopePopover:t,...o}=e,r=he(Mr,t),a=Ke(t),{onCustomAnchorAdd:i,onCustomAnchorRemove:c}=r;return s.useEffect(()=>(i(),()=>c()),[i,c]),u.jsx($e,{...a,...o,ref:n})});Ar.displayName=Mr;var Nr="PopoverTrigger",Dr=s.forwardRef((e,n)=>{const{__scopePopover:t,...o}=e,r=he(Nr,t),a=Ke(t),i=M(n,r.triggerRef),c=u.jsx(_.button,{type:"button","aria-haspopup":"dialog","aria-expanded":r.open,"aria-controls":r.contentId,"data-state":kr(r.open),...o,ref:i,onClick:E(e.onClick,r.onOpenToggle)});return r.hasCustomAnchor?c:u.jsx($e,{asChild:!0,...a,children:c})});Dr.displayName=Nr;var Zt="PopoverPortal",[uc,dc]=Tr(Zt,{forceMount:void 0}),Or=e=>{const{__scopePopover:n,forceMount:t,children:o,container:r}=e,a=he(Zt,n);return u.jsx(uc,{scope:n,forceMount:t,children:u.jsx(ee,{present:t||a.open,children:u.jsx(_e,{asChild:!0,container:r,children:o})})})};Or.displayName=Zt;var Pe="PopoverContent",jr=s.forwardRef((e,n)=>{const t=dc(Pe,e.__scopePopover),{forceMount:o=t.forceMount,...r}=e,a=he(Pe,e.__scopePopover);return u.jsx(ee,{present:o||a.open,children:a.modal?u.jsx(pc,{...r,ref:n}):u.jsx(vc,{...r,ref:n})})});jr.displayName=Pe;var fc=xe("PopoverContent.RemoveScroll"),pc=s.forwardRef((e,n)=>{const t=he(Pe,e.__scopePopover),o=s.useRef(null),r=M(n,o),a=s.useRef(!1);return s.useEffect(()=>{const i=o.current;if(i)return Qe(i)},[]),u.jsx(Je,{as:fc,allowPinchZoom:!0,children:u.jsx(Lr,{...e,ref:r,trapFocus:t.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:E(e.onCloseAutoFocus,i=>{var c;i.preventDefault(),a.current||(c=t.triggerRef.current)==null||c.focus()}),onPointerDownOutside:E(e.onPointerDownOutside,i=>{const c=i.detail.originalEvent,l=c.button===0&&c.ctrlKey===!0,d=c.button===2||l;a.current=d},{checkForDefaultPrevented:!1}),onFocusOutside:E(e.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1})})})}),vc=s.forwardRef((e,n)=>{const t=he(Pe,e.__scopePopover),o=s.useRef(!1),r=s.useRef(!1);return u.jsx(Lr,{...e,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:a=>{var i,c;(i=e.onCloseAutoFocus)==null||i.call(e,a),a.defaultPrevented||(o.current||(c=t.triggerRef.current)==null||c.focus(),a.preventDefault()),o.current=!1,r.current=!1},onInteractOutside:a=>{var l,d;(l=e.onInteractOutside)==null||l.call(e,a),a.defaultPrevented||(o.current=!0,a.detail.originalEvent.type==="pointerdown"&&(r.current=!0));const i=a.target;((d=t.triggerRef.current)==null?void 0:d.contains(i))&&a.preventDefault(),a.detail.originalEvent.type==="focusin"&&r.current&&a.preventDefault()}})}),Lr=s.forwardRef((e,n)=>{const{__scopePopover:t,trapFocus:o,onOpenAutoFocus:r,onCloseAutoFocus:a,disableOutsidePointerEvents:i,onEscapeKeyDown:c,onPointerDownOutside:l,onFocusOutside:d,onInteractOutside:f,...p}=e,v=he(Pe,t),h=Ke(t);return tt(),u.jsx(ke,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:r,onUnmountAutoFocus:a,children:u.jsx(Re,{asChild:!0,disableOutsidePointerEvents:i,onInteractOutside:f,onEscapeKeyDown:c,onPointerDownOutside:l,onFocusOutside:d,onDismiss:()=>v.onOpenChange(!1),children:u.jsx(ot,{"data-state":kr(v.open),role:"dialog",id:v.contentId,...h,...p,ref:n,style:{...p.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),Fr="PopoverClose",mc=s.forwardRef((e,n)=>{const{__scopePopover:t,...o}=e,r=he(Fr,t);return u.jsx(_.button,{type:"button",...o,ref:n,onClick:E(e.onClick,()=>r.onOpenChange(!1))})});mc.displayName=Fr;var hc="PopoverArrow",gc=s.forwardRef((e,n)=>{const{__scopePopover:t,...o}=e,r=Ke(t);return u.jsx(rt,{...r,...o,ref:n})});gc.displayName=hc;function kr(e){return e?"open":"closed"}var vl=Ir,ml=Ar,hl=Dr,gl=Or,xl=jr,gt="Switch",[xc]=se(gt),[Cc,wc]=xc(gt),$r=s.forwardRef((e,n)=>{const{__scopeSwitch:t,name:o,checked:r,defaultChecked:a,required:i,disabled:c,value:l="on",onCheckedChange:d,form:f,...p}=e,[v,h]=s.useState(null),w=M(n,C=>h(C)),m=s.useRef(!1),g=v?f||!!v.closest("form"):!0,[y,x]=de({prop:r,defaultProp:a??!1,onChange:d,caller:gt});return u.jsxs(Cc,{scope:t,checked:y,disabled:c,children:[u.jsx(_.button,{type:"button",role:"switch","aria-checked":y,"aria-required":i,"data-state":Gr(y),"data-disabled":c?"":void 0,disabled:c,value:l,...p,ref:w,onClick:E(e.onClick,C=>{x(S=>!S),g&&(m.current=C.isPropagationStopped(),m.current||C.stopPropagation())})}),g&&u.jsx(Vr,{control:v,bubbles:!m.current,name:o,value:l,checked:y,required:i,disabled:c,form:f,style:{transform:"translateX(-100%)"}})]})});$r.displayName=gt;var Br="SwitchThumb",Ur=s.forwardRef((e,n)=>{const{__scopeSwitch:t,...o}=e,r=wc(Br,t);return u.jsx(_.span,{"data-state":Gr(r.checked),"data-disabled":r.disabled?"":void 0,...o,ref:n})});Ur.displayName=Br;var yc="SwitchBubbleInput",Vr=s.forwardRef(({__scopeSwitch:e,control:n,checked:t,bubbles:o=!0,...r},a)=>{const i=s.useRef(null),c=M(i,a),l=To(t),d=hn(n);return s.useEffect(()=>{const f=i.current;if(!f)return;const p=window.HTMLInputElement.prototype,h=Object.getOwnPropertyDescriptor(p,"checked").set;if(l!==t&&h){const w=new Event("click",{bubbles:o});h.call(f,t),f.dispatchEvent(w)}},[l,t,o]),u.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:t,...r,tabIndex:-1,ref:c,style:{...r.style,...d,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});Vr.displayName=yc;function Gr(e){return e?"checked":"unchecked"}var Cl=$r,wl=Ur;export{ml as A,Vc as B,Tc as C,cl as D,Gc as E,Hc as F,Wc as G,zc as H,Mc as I,Yc as J,qc as K,Ic as L,Jc as M,Zc as N,sl as O,_c as P,Qc as Q,Nc as R,Sc as S,Rc as T,el as U,Kc as V,Xc as W,tl as X,jc as a,Lc as b,Ac as c,Dc as d,Oc as e,Pc as f,Fc as g,kc as h,$c as i,Bc as j,Uc as k,vl as l,hl as m,gl as n,xl as o,ul as p,dl as q,fl as r,pl as s,ol as t,il as u,rl as v,al as w,ll as x,Cl as y,wl as z};
@@ -1 +0,0 @@
1
- import{j as t}from"./vendor-m8O77Czp.js";import{c as a}from"./global-zt8jbW7F.js";function d({value:n,onChange:l,options:s,className:i,block:o,"aria-label":u}){return t.jsx("div",{role:"group","aria-label":u,className:a("flex items-center gap-1 rounded-full bg-secondary p-1",i),children:s.map(e=>{const r=e.value===n;return t.jsxs("button",{type:"button",onClick:()=>l(e.value),"aria-pressed":r,className:a("inline-flex h-8 items-center justify-center gap-1.5 whitespace-nowrap rounded-full 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{d as S};
@@ -1 +0,0 @@
1
- import{r as p,j as e}from"./vendor-m8O77Czp.js";import{u,q as m}from"./queryKeys-BlGm18Nk.js";import{a as b}from"./apiKeys-Dl_vgy_U.js";import{u as x}from"./i18n-DWfLgqoF.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 +0,0 @@
1
- import{r as i,j as e}from"./vendor-m8O77Czp.js";import{y as r,z as n}from"./radix-OaJStcH-.js";import{c as s}from"./global-zt8jbW7F.js";const c=i.forwardRef(({className:a,...t},o)=>e.jsx(r,{className:s("peer inline-flex h-7 w-12 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-[inset_0_0_0_1px_rgba(15,23,42,0.06)] 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",a),...t,ref:o,children:e.jsx(n,{className:s("pointer-events-none block h-6 w-6 rounded-full bg-background shadow-[0_3px_10px_rgba(15,23,42,0.18)] ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})}));c.displayName=r.displayName;export{c as S};
@@ -1 +0,0 @@
1
- import{r as t,j as r}from"./vendor-m8O77Czp.js";import{c as s}from"./global-zt8jbW7F.js";const l=t.forwardRef(({className:e,...a},o)=>r.jsx("div",{className:"relative w-full overflow-auto",children:r.jsx("table",{ref:o,className:s("w-full caption-bottom border-collapse text-sm",e),...a})}));l.displayName="Table";const d=t.forwardRef(({className:e,...a},o)=>r.jsx("thead",{ref:o,className:s("[&_tr]:border-b [&_tr]:border-border",e),...a}));d.displayName="TableHeader";const b=t.forwardRef(({className:e,...a},o)=>r.jsx("tbody",{ref:o,className:s("[&_tr:last-child]:border-0",e),...a}));b.displayName="TableBody";const m=t.forwardRef(({className:e,...a},o)=>r.jsx("tfoot",{ref:o,className:s("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",e),...a}));m.displayName="TableFooter";const c=t.forwardRef(({className:e,...a},o)=>r.jsx("tr",{ref:o,className:s("border-b border-border transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted group",e),...a}));c.displayName="TableRow";const f=t.forwardRef(({className:e,...a},o)=>r.jsx("th",{ref:o,className:s("h-10 px-4 text-left align-middle text-xs font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",e),...a}));f.displayName="TableHead";const i=t.forwardRef(({className:e,...a},o)=>r.jsx("td",{ref:o,className:s("px-4 py-3 align-middle text-sm [&:has([role=checkbox])]:pr-0",e),...a}));i.displayName="TableCell";const x=t.forwardRef(({className:e,...a},o)=>r.jsx("caption",{ref:o,className:s("mt-4 text-sm text-muted-foreground",e),...a}));x.displayName="TableCaption";export{l as T,d as a,c as b,f as c,b as d,i as e};