@samanhappy/mcphub 1.0.13 → 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/frontend/dist/assets/{ActivityPage-CE_0BWmg.js → ActivityPage-BOpR9H2i.js} +2 -2
- package/frontend/dist/assets/{ActivityPage-CE_0BWmg.js.map → ActivityPage-BOpR9H2i.js.map} +1 -1
- package/frontend/dist/assets/{Dashboard-C_kJV2hI.js → Dashboard-C_-XmWQD.js} +2 -2
- package/frontend/dist/assets/{Dashboard-C_kJV2hI.js.map → Dashboard-C_-XmWQD.js.map} +1 -1
- package/frontend/dist/assets/{EndpointCopy-B3EdSQVa.js → EndpointCopy-8kX4-19c.js} +2 -2
- package/frontend/dist/assets/{EndpointCopy-B3EdSQVa.js.map → EndpointCopy-8kX4-19c.js.map} +1 -1
- package/frontend/dist/assets/{GroupsPage-B03GZgRv.js → GroupsPage-htoQ6Qs0.js} +2 -2
- package/frontend/dist/assets/{GroupsPage-B03GZgRv.js.map → GroupsPage-htoQ6Qs0.js.map} +1 -1
- package/frontend/dist/assets/{LoginPage-DOka7uPd.js → LoginPage-aPFHvaWh.js} +2 -2
- package/frontend/dist/assets/{LoginPage-DOka7uPd.js.map → LoginPage-aPFHvaWh.js.map} +1 -1
- package/frontend/dist/assets/{LogsPage-Cxbcszy1.js → LogsPage-Chwx1nBj.js} +2 -2
- package/frontend/dist/assets/{LogsPage-Cxbcszy1.js.map → LogsPage-Chwx1nBj.js.map} +1 -1
- package/frontend/dist/assets/{MarketPage-CCbEjen9.js → MarketPage-AeI9OXrF.js} +2 -2
- package/frontend/dist/assets/{MarketPage-CCbEjen9.js.map → MarketPage-AeI9OXrF.js.map} +1 -1
- package/frontend/dist/assets/{PromptsPage-imkPdk8y.js → PromptsPage-B4hqDzUf.js} +2 -2
- package/frontend/dist/assets/{PromptsPage-imkPdk8y.js.map → PromptsPage-B4hqDzUf.js.map} +1 -1
- package/frontend/dist/assets/{ResourcesPage-Cnjiq6zW.js → ResourcesPage-D6Pjuosf.js} +2 -2
- package/frontend/dist/assets/{ResourcesPage-Cnjiq6zW.js.map → ResourcesPage-D6Pjuosf.js.map} +1 -1
- package/frontend/dist/assets/ServersPage-CUIUW61l.js +37 -0
- package/frontend/dist/assets/ServersPage-CUIUW61l.js.map +1 -0
- package/frontend/dist/assets/{SettingsPage-CBsGkGlx.js → SettingsPage-BhlkLfh2.js} +2 -2
- package/frontend/dist/assets/{SettingsPage-CBsGkGlx.js.map → SettingsPage-BhlkLfh2.js.map} +1 -1
- package/frontend/dist/assets/{StatusDot-BiMZcum9.js → StatusDot-DeAk18AU.js} +2 -2
- package/frontend/dist/assets/{StatusDot-BiMZcum9.js.map → StatusDot-DeAk18AU.js.map} +1 -1
- package/frontend/dist/assets/ToggleGroup-B4Kg4S_t.js +2 -0
- package/frontend/dist/assets/ToggleGroup-B4Kg4S_t.js.map +1 -0
- package/frontend/dist/assets/{UsersPage-CvmNBWbr.js → UsersPage-DW6DqEcG.js} +2 -2
- package/frontend/dist/assets/{UsersPage-CvmNBWbr.js.map → UsersPage-DW6DqEcG.js.map} +1 -1
- package/frontend/dist/assets/{contextCost-Cpznd4kP.js → contextCost-Cy6hGdzI.js} +2 -2
- package/frontend/dist/assets/{contextCost-Cpznd4kP.js.map → contextCost-Cy6hGdzI.js.map} +1 -1
- package/frontend/dist/assets/{index-CfXY4mFI.js → index-Btd1KKSH.js} +3 -3
- package/frontend/dist/assets/{index-CfXY4mFI.js.map → index-Btd1KKSH.js.map} +1 -1
- package/frontend/dist/assets/index-H0KbCXxe.css +1 -0
- package/frontend/dist/assets/{resourceService-CA1x5Ugz.js → resourceService-BECsvcJr.js} +2 -2
- package/frontend/dist/assets/{resourceService-CA1x5Ugz.js.map → resourceService-BECsvcJr.js.map} +1 -1
- package/frontend/dist/assets/useSettingsData-ClhR9PBd.js +2 -0
- package/frontend/dist/assets/{useSettingsData-dhkLE8CB.js.map → useSettingsData-ClhR9PBd.js.map} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/frontend/dist/assets/ServersPage-C59cMoJ9.js +0 -37
- package/frontend/dist/assets/ServersPage-C59cMoJ9.js.map +0 -1
- package/frontend/dist/assets/ToggleGroup-CJS7Axui.js +0 -2
- package/frontend/dist/assets/ToggleGroup-CJS7Axui.js.map +0 -1
- package/frontend/dist/assets/index-D3p77Gge.css +0 -1
- package/frontend/dist/assets/useSettingsData-dhkLE8CB.js +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-orange-50:oklch(98% .016 73.684);--color-orange-200:oklch(90.1% .076 70.697);--color-orange-400:oklch(75% .183 55.934);--color-orange-700:oklch(55.3% .195 38.402);--color-orange-800:oklch(47% .157 37.304);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-800:oklch(43.8% .218 303.724);--color-purple-900:oklch(38.1% .176 304.987);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:currentColor}::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.-top-1{top:calc(var(--spacing)*-1)}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-3{top:calc(var(--spacing)*3)}.top-4{top:calc(var(--spacing)*4)}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing)*-.5)}.-right-1{right:calc(var(--spacing)*-1)}.right-0{right:calc(var(--spacing)*0)}.right-1\.5{right:calc(var(--spacing)*1.5)}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.-bottom-0\.5{bottom:calc(var(--spacing)*-.5)}.left-0{left:calc(var(--spacing)*0)}.-z-10{z-index:-10}.z-20{z-index:20}.z-50{z-index:50}.z-\[60\]{z-index:60}.z-\[100\]{z-index:100}.m-0{margin:calc(var(--spacing)*0)}.-mx-1\.5{margin-inline:calc(var(--spacing)*-1.5)}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.-my-1\.5{margin-block:calc(var(--spacing)*-1.5)}.my-4{margin-block:calc(var(--spacing)*4)}.my-6{margin-block:calc(var(--spacing)*6)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-5{margin-top:calc(var(--spacing)*5)}.mt-6{margin-top:calc(var(--spacing)*6)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-1\.5{margin-right:calc(var(--spacing)*1.5)}.mr-2{margin-right:calc(var(--spacing)*2)}.mr-3{margin-right:calc(var(--spacing)*3)}.mr-4{margin-right:calc(var(--spacing)*4)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-1\.5{margin-left:calc(var(--spacing)*1.5)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-3{margin-left:calc(var(--spacing)*3)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-6{margin-left:calc(var(--spacing)*6)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-20{height:calc(var(--spacing)*20)}.h-64{height:calc(var(--spacing)*64)}.h-96{height:calc(var(--spacing)*96)}.h-\[6px\]{height:6px}.h-\[18px\]{height:18px}.h-\[26px\]{height:26px}.h-\[38px\]{height:38px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-32{max-height:calc(var(--spacing)*32)}.max-h-40{max-height:calc(var(--spacing)*40)}.max-h-48{max-height:calc(var(--spacing)*48)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-64{max-height:calc(var(--spacing)*64)}.max-h-96{max-height:calc(var(--spacing)*96)}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(90vh-120px\)\]{max-height:calc(90vh - 120px)}.max-h-screen{max-height:100vh}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-\[30px\]{min-height:30px}.min-h-\[38px\]{min-height:38px}.min-h-\[240px\]{min-height:240px}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-2{width:calc(var(--spacing)*2)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-40{width:calc(var(--spacing)*40)}.w-48{width:calc(var(--spacing)*48)}.w-56{width:calc(var(--spacing)*56)}.w-\[6px\]{width:6px}.w-\[30px\]{width:30px}.w-\[232px\]{width:232px}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[520px\]{max-width:520px}.max-w-\[1680px\]{max-width:1680px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-48{min-width:calc(var(--spacing)*48)}.min-w-\[30px\]{min-width:30px}.min-w-\[100px\]{min-width:100px}.min-w-\[140px\]{min-width:140px}.min-w-\[200px\]{min-width:200px}.min-w-full{min-width:100%}.min-w-max{min-width:-moz-max-content;min-width:max-content}.flex-1{flex:1}.flex-\[2\]{flex:2}.flex-\[4\]{flex:4}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-full{--tw-translate-y:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-0{rotate:none}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize-y{resize:vertical}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-3\.5{gap:calc(var(--spacing)*3.5)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-px{gap:1px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-gray-200>:not(:last-child)){border-color:var(--color-gray-200)}.self-center{align-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-\[9px\]{border-top-left-radius:9px;border-top-right-radius:9px}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-t-md{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-md{border-bottom-right-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[oklch\(0\.88_0\.04_85\)\]{border-color:#e4d6ba}.border-\[oklch\(0\.88_0\.04_145\)\]{border-color:#c8dfc8}.border-\[var\(--hub-line\)\]{border-color:var(--hub-line)}.border-\[var\(--hub-line-2\)\]{border-color:var(--hub-line-2)}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-300{border-color:var(--color-amber-300)}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-300{border-color:var(--color-blue-300)}.border-blue-500{border-color:var(--color-blue-500)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-500{border-color:var(--color-gray-500)}.border-green-200{border-color:var(--color-green-200)}.border-green-400{border-color:var(--color-green-400)}.border-green-500{border-color:var(--color-green-500)}.border-orange-200{border-color:var(--color-orange-200)}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-red-400{border-color:var(--color-red-400)}.border-red-500{border-color:var(--color-red-500)}.border-yellow-200{border-color:var(--color-yellow-200)}.border-yellow-500{border-color:var(--color-yellow-500)}.border-l-blue-500{border-left-color:var(--color-blue-500)}.border-l-green-500{border-left-color:var(--color-green-500)}.border-l-red-600{border-left-color:var(--color-red-600)}.border-l-yellow-500{border-left-color:var(--color-yellow-500)}.bg-\[\#13C3FF\]{background-color:#13c3ff}.bg-\[oklch\(0\.97_0\.02_85\)\]{background-color:#fbf4e6}.bg-\[oklch\(0\.97_0\.03_145\)\]{background-color:#e9fbe9}.bg-\[var\(--hub-bg-2\)\]{background-color:var(--hub-bg-2)}.bg-\[var\(--hub-surface\)\]{background-color:var(--hub-surface)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-400\/80{background-color:#54a2ffcc}@supports (color:color-mix(in lab,red,red)){.bg-blue-400\/80{background-color:color-mix(in oklab,var(--color-blue-400)80%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-400\/80{background-color:#99a1afcc}@supports (color:color-mix(in lab,red,red)){.bg-gray-400\/80{background-color:color-mix(in oklab,var(--color-gray-400)80%,transparent)}}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-400\/80{background-color:#05df72cc}@supports (color:color-mix(in lab,red,red)){.bg-green-400\/80{background-color:color-mix(in oklab,var(--color-green-400)80%,transparent)}}.bg-green-600{background-color:var(--color-green-600)}.bg-orange-50{background-color:var(--color-orange-50)}.bg-orange-400\/80{background-color:#ff8b1acc}@supports (color:color-mix(in lab,red,red)){.bg-orange-400\/80{background-color:color-mix(in oklab,var(--color-orange-400)80%,transparent)}}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-400\/80{background-color:#c07effcc}@supports (color:color-mix(in lab,red,red)){.bg-purple-400\/80{background-color:color-mix(in oklab,var(--color-purple-400)80%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-400\/80{background-color:#ff6568cc}@supports (color:color-mix(in lab,red,red)){.bg-red-400\/80{background-color:color-mix(in oklab,var(--color-red-400)80%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/60{background-color:#fff9}@supports (color:color-mix(in lab,red,red)){.bg-white\/60{background-color:color-mix(in oklab,var(--color-white)60%,transparent)}}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-400\/80{background-color:#fac800cc}@supports (color:color-mix(in lab,red,red)){.bg-yellow-400\/80{background-color:color-mix(in oklab,var(--color-yellow-400)80%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from:var(--color-blue-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-gray-100{--tw-gradient-from:var(--color-gray-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-gray-200{--tw-gradient-to:var(--color-gray-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-purple-600{--tw-gradient-to:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-3\.5{padding:calc(var(--spacing)*3.5)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-10{padding:calc(var(--spacing)*10)}.p-12{padding:calc(var(--spacing)*12)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-3\.5{padding-inline:calc(var(--spacing)*3.5)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-5{padding-block:calc(var(--spacing)*5)}.py-12{padding-block:calc(var(--spacing)*12)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pr-7{padding-right:calc(var(--spacing)*7)}.pr-8{padding-right:calc(var(--spacing)*8)}.pr-9{padding-right:calc(var(--spacing)*9)}.pb-1\.5{padding-bottom:calc(var(--spacing)*1.5)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-16{padding-bottom:calc(var(--spacing)*16)}.pl-3{padding-left:calc(var(--spacing)*3)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10\.5px\]{font-size:10.5px}.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-\[13\.5px\]{font-size:13.5px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.leading-5{--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[oklch\(0\.42_0\.12_145\)\]{color:#135d1d}.text-\[oklch\(0\.45_0\.07_85\)\]{color:#675223}.text-\[var\(--hub-err\)\]{color:var(--hub-err)}.text-\[var\(--hub-ink\)\]{color:var(--hub-ink)}.text-\[var\(--hub-ink-2\)\]{color:var(--hub-ink-2)}.text-\[var\(--hub-ink-3\)\]{color:var(--hub-ink-3)}.text-\[var\(--hub-ok\)\]{color:var(--hub-ok)}.text-amber-400{color:var(--color-amber-400)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-gray-100{color:var(--color-gray-100)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-200{color:var(--color-green-200)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-orange-700{color:var(--color-orange-700)}.text-orange-800{color:var(--color-orange-800)}.text-purple-800{color:var(--color-purple-800)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-600{color:var(--color-yellow-600)}.text-yellow-700{color:var(--color-yellow-700)}.text-yellow-800{color:var(--color-yellow-800)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-\[var\(--hub-line\)\]{--tw-ring-color:var(--hub-line)}.ring-blue-500{--tw-ring-color:var(--color-blue-500)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}@media(hover:hover){.group-hover\:-translate-x-1:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:text-\[var\(--hub-ink-2\)\]:is(:where(.group):hover *){color:var(--hub-ink-2)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.file\:mr-4::file-selector-button{margin-right:calc(var(--spacing)*4)}.file\:rounded-md::file-selector-button{border-radius:var(--radius-md)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-blue-50::file-selector-button{background-color:var(--color-blue-50)}.file\:px-4::file-selector-button{padding-inline:calc(var(--spacing)*4)}.file\:py-2::file-selector-button{padding-block:calc(var(--spacing)*2)}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-semibold::file-selector-button{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.file\:text-blue-700::file-selector-button{color:var(--color-blue-700)}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing)*0)}@media(hover:hover){.hover\:border-blue-400:hover{border-color:var(--color-blue-400)}.hover\:border-gray-300:hover{border-color:var(--color-gray-300)}.hover\:border-gray-400:hover{border-color:var(--color-gray-400)}.hover\:bg-\[\#00A5E5\]:hover{background-color:#00a5e5}.hover\:bg-\[var\(--hub-surface-hover\)\]:hover{background-color:var(--hub-surface-hover)}.hover\:bg-amber-200:hover{background-color:var(--color-amber-200)}.hover\:bg-blue-50:hover{background-color:var(--color-blue-50)}.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-blue-200:hover{background-color:var(--color-blue-200)}.hover\:bg-blue-600:hover{background-color:var(--color-blue-600)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-gray-300:hover{background-color:var(--color-gray-300)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:text-\[var\(--hub-ink\)\]:hover{color:var(--hub-ink)}.hover\:text-\[var\(--hub-ink-2\)\]:hover{color:var(--hub-ink-2)}.hover\:text-amber-700:hover{color:var(--color-amber-700)}.hover\:text-blue-600:hover{color:var(--color-blue-600)}.hover\:text-blue-800:hover{color:var(--color-blue-800)}.hover\:text-blue-900:hover{color:var(--color-blue-900)}.hover\:text-gray-500:hover{color:var(--color-gray-500)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:text-gray-700:hover{color:var(--color-gray-700)}.hover\:text-gray-900:hover{color:var(--color-gray-900)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:text-red-700:hover{color:var(--color-red-700)}.hover\:text-red-900:hover{color:var(--color-red-900)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:file\:bg-blue-100:hover::file-selector-button{background-color:var(--color-blue-100)}}.focus\:border-blue-500:focus{border-color:var(--color-blue-500)}.focus\:border-transparent:focus{border-color:#0000}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-amber-500:focus{--tw-ring-color:var(--color-amber-500)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-red-500:focus{--tw-ring-color:var(--color-red-500)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media(min-width:40rem){.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media(min-width:48rem){.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-9{grid-column:span 9/span 9}.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-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:px-8{padding-inline:calc(var(--spacing)*8)}}@media(min-width:80rem){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:px-10{padding-inline:calc(var(--spacing)*10)}}:where(.dark\:divide-gray-700:where(.dark,.dark *)>:not(:last-child)){border-color:var(--color-gray-700)}.dark\:border-amber-700:where(.dark,.dark *){border-color:var(--color-amber-700)}.dark\:border-amber-900\/50:where(.dark,.dark *){border-color:#7b330680}@supports (color:color-mix(in lab,red,red)){.dark\:border-amber-900\/50:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-amber-900)50%,transparent)}}.dark\:border-gray-600:where(.dark,.dark *){border-color:var(--color-gray-600)}.dark\:border-gray-700:where(.dark,.dark *){border-color:var(--color-gray-700)}.dark\:border-red-900\/50:where(.dark,.dark *){border-color:#82181a80}@supports (color:color-mix(in lab,red,red)){.dark\:border-red-900\/50:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-red-900)50%,transparent)}}.dark\:bg-amber-900\/20:where(.dark,.dark *){background-color:#7b330633}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-900\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-amber-900)20%,transparent)}}.dark\:bg-amber-900\/40:where(.dark,.dark *){background-color:#7b330666}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-900\/40:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-amber-900)40%,transparent)}}.dark\:bg-blue-900\/40:where(.dark,.dark *){background-color:#1c398e66}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-900\/40:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-blue-900)40%,transparent)}}.dark\:bg-gray-700:where(.dark,.dark *){background-color:var(--color-gray-700)}.dark\:bg-gray-800:where(.dark,.dark *){background-color:var(--color-gray-800)}.dark\:bg-gray-800\/60:where(.dark,.dark *){background-color:#1e293999}@supports (color:color-mix(in lab,red,red)){.dark\:bg-gray-800\/60:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-gray-800)60%,transparent)}}.dark\:bg-green-900:where(.dark,.dark *){background-color:var(--color-green-900)}.dark\:bg-purple-900\/40:where(.dark,.dark *){background-color:#59168b66}@supports (color:color-mix(in lab,red,red)){.dark\:bg-purple-900\/40:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-purple-900)40%,transparent)}}.dark\:bg-red-900:where(.dark,.dark *){background-color:var(--color-red-900)}.dark\:bg-red-900\/20:where(.dark,.dark *){background-color:#82181a33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-900\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-red-900)20%,transparent)}}.dark\:from-gray-800:where(.dark,.dark *){--tw-gradient-from:var(--color-gray-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.dark\:to-gray-700:where(.dark,.dark *){--tw-gradient-to:var(--color-gray-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.dark\:text-amber-300:where(.dark,.dark *){color:var(--color-amber-300)}.dark\:text-amber-400:where(.dark,.dark *){color:var(--color-amber-400)}.dark\:text-amber-500:where(.dark,.dark *){color:var(--color-amber-500)}.dark\:text-blue-300:where(.dark,.dark *){color:var(--color-blue-300)}.dark\:text-gray-100:where(.dark,.dark *){color:var(--color-gray-100)}.dark\:text-gray-300:where(.dark,.dark *){color:var(--color-gray-300)}.dark\:text-gray-400:where(.dark,.dark *){color:var(--color-gray-400)}.dark\:text-gray-500:where(.dark,.dark *){color:var(--color-gray-500)}.dark\:text-green-200:where(.dark,.dark *){color:var(--color-green-200)}.dark\:text-purple-300:where(.dark,.dark *){color:var(--color-purple-300)}.dark\:text-red-200:where(.dark,.dark *){color:var(--color-red-200)}.dark\:text-red-300:where(.dark,.dark *){color:var(--color-red-300)}.dark\:text-red-400:where(.dark,.dark *){color:var(--color-red-400)}.dark\:text-red-500:where(.dark,.dark *){color:var(--color-red-500)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:text-yellow-400:where(.dark,.dark *){color:var(--color-yellow-400)}@media(hover:hover){.dark\:hover\:bg-amber-900\/60:where(.dark,.dark *):hover{background-color:#7b330699}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-amber-900\/60:where(.dark,.dark *):hover{background-color:color-mix(in oklab,var(--color-amber-900)60%,transparent)}}.dark\:hover\:bg-gray-100:where(.dark,.dark *):hover{background-color:var(--color-gray-100)}.dark\:hover\:bg-gray-600:where(.dark,.dark *):hover{background-color:var(--color-gray-600)}.dark\:hover\:bg-gray-700:where(.dark,.dark *):hover{background-color:var(--color-gray-700)}.dark\:hover\:bg-gray-800:where(.dark,.dark *):hover{background-color:var(--color-gray-800)}.dark\:hover\:text-gray-200:where(.dark,.dark *):hover{color:var(--color-gray-200)}.dark\:hover\:text-gray-300:where(.dark,.dark *):hover{color:var(--color-gray-300)}.dark\:hover\:text-gray-400:where(.dark,.dark *):hover{color:var(--color-gray-400)}}.dark\:focus\:ring-amber-400:where(.dark,.dark *):focus{--tw-ring-color:var(--color-amber-400)}}:root{--hub-bg:oklch(98.5% .002 250);--hub-bg-2:oklch(97.5% .002 250);--hub-surface:#fff;--hub-surface-hover:oklch(97% .003 250);--hub-switch-track-on:oklch(30% .004 250);--hub-ink:oklch(18% .01 250);--hub-ink-2:oklch(42% .01 250);--hub-ink-3:oklch(60% .01 250);--hub-line:oklch(92% .004 250);--hub-line-2:oklch(96% .003 250);--hub-accent:oklch(55% .15 250);--hub-accent-soft:oklch(95% .04 250);--hub-ok:oklch(66% .15 145);--hub-warn:oklch(78% .13 80);--hub-err:oklch(62% .18 25);--hub-mono:"Geist Mono","JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace}.dark{--hub-bg:oklch(18% .005 250);--hub-bg-2:oklch(21% .005 250);--hub-surface:oklch(22% .005 250);--hub-surface-hover:oklch(25% .005 250);--hub-switch-track-on:oklch(86% .004 250);--hub-ink:oklch(97% .005 250);--hub-ink-2:oklch(78% .005 250);--hub-ink-3:oklch(55% .005 250);--hub-line:oklch(30% .005 250);--hub-line-2:oklch(26% .005 250);--hub-accent-soft:oklch(32% .06 250)}.hub-card{background:var(--hub-surface);border:1px solid var(--hub-line);border-radius:10px}.hub-card-pad{padding:16px}.hub-surface{background:var(--hub-surface)}.hub-bg-2{background:var(--hub-bg-2)}.hub-border{border:1px solid var(--hub-line)}.hub-border-b{border-bottom:1px solid var(--hub-line-2)}.hub-border-t,.hub-divider>*+*{border-top:1px solid var(--hub-line-2)}.hub-mono{font-family:var(--hub-mono);font-feature-settings:"ss01";letter-spacing:-.01em}.hub-num{font-variant-numeric:tabular-nums}.hub-h1{letter-spacing:-.018em;color:var(--hub-ink);margin:0;font-size:22px;font-weight:600}.hub-sub{color:var(--hub-ink-3);margin:4px 0 0;font-size:13px}.hub-sect{color:var(--hub-ink-3);text-transform:uppercase;letter-spacing:.08em;font-size:11px;font-weight:500}.hub-card-title{color:var(--hub-ink);margin:0;font-size:13px;font-weight:500}.hub-status{color:var(--hub-ink-2);white-space:nowrap;align-items:center;gap:6px;font-size:12px;display:inline-flex}.hub-status-label{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.hub-dot{background:var(--hub-ink-3);border-radius:50%;flex-shrink:0;width:6px;height:6px}.hub-status.ok{color:#005813;color:oklch(40% .13 145)}.hub-status.ok .hub-dot{background:var(--hub-ok);box-shadow:0 0 0 3px #4ea95426}.hub-status.warn{color:#704e00;color:oklch(45% .13 80)}.hub-status.warn .hub-dot{background:var(--hub-warn);box-shadow:0 0 0 3px #e3ad4b2e}.hub-status.err{color:#a20519}.hub-status.err .hub-dot{background:var(--hub-err);box-shadow:0 0 0 3px #de4e4b26}.hub-status.muted{color:var(--hub-ink-3)}.hub-status.muted .hub-dot{background:var(--hub-ink-3)}.dark .hub-status.ok{color:#80cd82}.dark .hub-status.warn{color:#edbb64}.dark .hub-status.err{color:#ff958d;color:oklch(78% .15 25)}.hub-tag{color:var(--hub-ink-2);background:var(--hub-bg-2);border:1px solid var(--hub-line);font-size:11px;font-family:var(--hub-mono);white-space:nowrap;text-overflow:ellipsis;border-radius:5px;align-items:center;max-width:100%;padding:1px 7px;display:inline-flex;overflow:hidden}.hub-tag.accent{color:var(--hub-accent);background:var(--hub-accent-soft);border-color:#0000}.hub-tag.muted{color:var(--hub-ink-3)}.hub-kbd{font-family:var(--hub-mono);border:1px solid var(--hub-line);color:var(--hub-ink-3);background:var(--hub-surface);border-radius:4px;padding:1px 5px;font-size:11px}.hub-row{border-top:1px solid var(--hub-line-2);align-items:center;gap:12px;padding:11px 14px;display:grid}.hub-row:first-child{border-top:0}.hub-row.head{color:var(--hub-ink-3);text-transform:uppercase;letter-spacing:.08em;background:var(--hub-bg-2);padding:9px 14px;font-size:11px}.hub-row.hover:hover{background:var(--hub-surface-hover)}.hub-btn{border:1px solid var(--hub-line);background:var(--hub-surface);height:30px;color:var(--hub-ink);border-radius:7px;align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:500;transition:background .15s,border-color .15s;display:inline-flex}.hub-btn:hover{background:var(--hub-surface-hover)}.hub-btn:disabled{opacity:.5;cursor:not-allowed}.hub-btn.primary{background:var(--hub-ink);color:var(--hub-bg);border-color:var(--hub-ink)}.hub-btn.primary:hover{background:#25292e}.dark .hub-btn.primary{color:#101214}.hub-btn.ghost{border-color:#0000}.hub-btn.ghost:hover{background:var(--hub-surface-hover);border-color:var(--hub-line)}.hub-btn.danger{color:var(--hub-err)}.hub-btn.danger:hover{background:#ffedeb;background:oklch(96% .04 25);border-color:#ffbab3;border-color:oklch(85% .1 25)}.dark .hub-btn.danger:hover{background:#4f1a18}.hub-btn.sm{height:26px;padding:0 9px;font-size:12px}.hub-icon-btn{width:30px;height:30px;color:var(--hub-ink-2);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;place-items:center;transition:background .15s,border-color .15s;display:inline-grid}.hub-icon-btn:hover{background:var(--hub-surface-hover);border-color:var(--hub-line)}.hub-icon-btn.sm{border-radius:6px;width:26px;height:26px}.hub-input{border:1px solid var(--hub-line);background:var(--hub-surface);height:32px;color:var(--hub-ink);border-radius:7px;outline:0;width:100%;padding:0 10px;font-size:13px}.hub-input:focus{border-color:var(--hub-ink-2)}.hub-input::-moz-placeholder{color:var(--hub-ink-3)}.hub-input::placeholder{color:var(--hub-ink-3)}.hub-input.mono{font-family:var(--hub-mono);font-size:12.5px}.hub-switch{--hub-switch-width:44px;--hub-switch-height:24px;--hub-switch-thumb-size:18px;--hub-switch-thumb-offset:3px;--hub-switch-thumb-translate:20px;width:var(--hub-switch-width);height:var(--hub-switch-height);background:var(--hub-surface);box-shadow:inset 0 0 0 1px var(--hub-line);flex:0 0 var(--hub-switch-width);cursor:pointer;border:0;border-radius:999px;padding:0;transition:background .15s,box-shadow .15s;position:relative}.hub-switch.compact{--hub-switch-width:30px;--hub-switch-height:18px;--hub-switch-thumb-size:14px;--hub-switch-thumb-offset:2px;--hub-switch-thumb-translate:12px}.hub-switch.card{--hub-switch-width:32px;--hub-switch-height:18px;--hub-switch-thumb-size:14px;--hub-switch-thumb-offset:2px;--hub-switch-thumb-translate:14px}.hub-switch:after{content:"";top:var(--hub-switch-thumb-offset);left:var(--hub-switch-thumb-offset);width:var(--hub-switch-thumb-size);height:var(--hub-switch-thumb-size);background:#fff;border-radius:50%;transition:transform .15s,background .15s,box-shadow .15s;position:absolute;box-shadow:0 1px 2px #0000001f}.hub-switch.on{background:var(--hub-switch-track-on);box-shadow:inset 0 0 0 1px var(--hub-switch-track-on)}.hub-switch.on:after{transform:translate(var(--hub-switch-thumb-translate))}.hub-switch:focus-visible{outline:2px solid var(--hub-ink-2);outline-offset:2px}.hub-switch:disabled{opacity:.5;cursor:not-allowed}.dark .hub-switch:after{background:#f3f5f8;box-shadow:0 1px 2px #00000047}.dark .hub-switch.on:after{background:#101214}.hub-server-card-row{grid-template-columns:minmax(136px,196px) fit-content(92px) fit-content(72px) minmax(94px,108px) repeat(4,88px) 44px 28px;justify-content:space-between;align-items:center;gap:10px;display:grid}.hub-server-card-row>*{min-width:0}.hub-server-card-visibility{justify-self:start;width:100%}.hub-status.hub-server-card-status{gap:5px;font-size:11.5px}.hub-status.hub-server-card-status .hub-dot{width:5px;height:5px}.hub-status.hub-server-card-status.ok .hub-dot{box-shadow:0 0 0 2px #4ea9541f}.hub-status.hub-server-card-status.warn .hub-dot{box-shadow:0 0 0 2px #e3ad4b24}.hub-status.hub-server-card-status.err .hub-dot{box-shadow:0 0 0 2px #de4e4b1f}.hub-server-card-transport-tag{letter-spacing:.02em;border-radius:999px;height:24px;padding:0 7px;font-size:10.5px}.hub-server-card-select,.hub-server-card-visibility-badge{height:30px}.hub-server-card-select{border-radius:7px;padding:0 26px 0 9px!important;font-size:11px!important}.hub-server-card-visibility-badge{border-radius:7px;padding:0 9px;font-size:11px}.hub-server-capability-stat{border:1px solid var(--hub-line-2);background:var(--hub-bg-2);min-width:0;height:26px;color:var(--hub-ink-2);border-radius:6px;grid-template-columns:14px minmax(0,1fr);justify-self:stretch;align-items:center;gap:5px;padding:0 6px;font-size:11px;line-height:1;display:grid}.hub-server-capability-stat.is-empty{color:var(--hub-ink-3);opacity:.56;background:0 0;border-color:#0000}.hub-server-capability-icon{flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;line-height:0;display:inline-flex}.hub-server-capability-icon svg{display:block}.hub-server-capability-value{white-space:nowrap;text-overflow:clip;min-width:-moz-max-content;min-width:max-content;overflow:visible}@media(max-width:1440px){.hub-server-card-row{grid-template-columns:minmax(128px,180px) fit-content(88px) fit-content(66px) minmax(90px,102px) repeat(4,80px) 44px 28px;gap:9px}.hub-server-capability-stat{gap:5px;padding:0 6px}}.hub-endpoint{border:1px solid var(--hub-line);background:var(--hub-bg-2);border-radius:8px;align-items:center;gap:0;min-width:0;height:32px;display:flex;overflow:hidden}.hub-endpoint .hub-endpoint-label{border-right:1px solid var(--hub-line);height:100%;color:var(--hub-ink-3);font-size:11px;font-family:var(--hub-mono);text-transform:uppercase;letter-spacing:.05em;flex:none;align-items:center;padding:0 10px;display:flex}.hub-endpoint .hub-endpoint-url{font-family:var(--hub-mono);color:var(--hub-ink-2);white-space:nowrap;text-overflow:ellipsis;letter-spacing:-.01em;flex:1;min-width:0;padding:0 10px;font-size:12.5px;overflow:hidden}.hub-endpoint .hub-endpoint-copy{border-left:1px solid var(--hub-line);width:32px;height:100%;color:var(--hub-ink-3);cursor:pointer;background:0 0;border-top:0;border-bottom:0;border-right:0;border-radius:0;place-items:center;transition:background .15s;display:inline-grid}.hub-endpoint .hub-endpoint-copy:hover{background:var(--hub-surface-hover)}.hub-endpoint .hub-endpoint-copy.copied{color:var(--hub-ok)}.page-card .bg-gray-50,.page-card .dark\:bg-gray-800.rounded-md{background:var(--hub-bg-2)!important}.hub-sr-fields>div{border:1px solid var(--hub-line)!important;background:var(--hub-bg-2)!important;box-shadow:none!important;border-radius:8px!important;padding:12px 14px!important}.hub-sr-fields h3{color:var(--hub-ink)!important;font-size:12.5px!important;font-weight:500!important}.hub-sr-fields h3 .text-red-500{color:var(--hub-err)!important}.hub-sr-fields p{color:var(--hub-ink-3)!important}.hub-sr-fields input,.hub-sr-fields select{border:1px solid var(--hub-line)!important;background:var(--hub-surface)!important;height:32px!important;color:var(--hub-ink)!important;box-shadow:none!important;border-radius:7px!important;outline:0!important;margin-top:0!important;padding:0 10px!important;font-size:13px!important}.hub-sr-fields input.mono,.hub-sr-fields select.mono{font-family:var(--hub-mono)!important}.hub-sr-fields input:focus,.hub-sr-fields select:focus{border-color:var(--hub-ink-2)!important;box-shadow:none!important}.page-card,.dashboard-card{background:var(--hub-surface)!important;border:1px solid var(--hub-line)!important;box-shadow:none!important;border-radius:10px!important;transition:background .15s,border-color .15s!important}.page-card:hover,.dashboard-card:hover{box-shadow:none!important;transform:none!important}.dark .page-card,.dark .dashboard-card{background:var(--hub-surface)!important;border-color:var(--hub-line)!important;box-shadow:none!important}.dark .bg-white,.dark .dark\:bg-gray-800{background:var(--hub-surface)!important}.loading-container{background:var(--hub-surface)!important;border:1px solid var(--hub-line)!important;box-shadow:none!important;border-radius:10px!important}.empty-state{background:var(--hub-surface)!important;border:1px solid var(--hub-line)!important;text-align:center!important;border-radius:10px!important;padding:2.5rem 1.5rem!important}.empty-state p{color:var(--hub-ink-3)!important}.error-box{color:#8a0012!important;color:oklch(40% .18 25)!important;box-shadow:none!important;background:#fff1f0!important;background:oklch(97% .03 25)!important;border:1px solid oklch(85% .1 25)!important;border-radius:8px!important}.dark .error-box{background:#4f1a18!important;border-color:#972527!important}.error-box h3{color:#8a0012!important;color:oklch(40% .18 25)!important}.btn-primary{background:var(--hub-ink)!important;color:var(--hub-bg)!important;border:1px solid var(--hub-ink)!important;box-shadow:none!important;border-radius:7px!important;font-weight:500!important;transition:background .15s!important}.btn-primary:hover{color:var(--hub-bg)!important;box-shadow:none!important;background:#25292e!important;transform:none!important}.dark .btn-primary{background:var(--hub-ink)!important;color:#101214!important;border-color:var(--hub-ink)!important}.dark .btn-primary:hover{color:#101214!important;box-shadow:none!important;background:#e2e5e8!important;transform:none!important}.btn-secondary{background:var(--hub-surface)!important;color:var(--hub-ink)!important;border:1px solid var(--hub-line)!important;border-radius:7px!important;font-weight:500!important}.btn-secondary:hover{background:var(--hub-surface-hover)!important;color:var(--hub-ink)!important;border-color:var(--hub-line)!important;box-shadow:none!important;transform:none!important}.dark .btn-secondary,.dark .btn-secondary:hover{background:var(--hub-surface)!important;color:var(--hub-ink)!important;border-color:var(--hub-line)!important}.dark .btn-secondary:hover{background:var(--hub-surface-hover)!important}.btn-warning{color:#704e00!important;color:oklch(45% .13 80)!important;background:#fff0d7!important;background:oklch(96% .06 80)!important;border:1px solid oklch(85% .12 80)!important;border-radius:7px!important}.btn-warning:hover{color:#5f4200!important;color:oklch(40% .13 80)!important;background:#ffe4b7!important;background:oklch(93% .08 80)!important}.dark .btn-warning{color:#edbb64!important;background:#3e2a00!important;background:oklch(30% .08 80)!important;border-color:#704e00!important;border-color:oklch(45% .1 80)!important}.btn-danger{background:var(--hub-surface)!important;color:var(--hub-err)!important;border:1px solid var(--hub-line)!important;border-radius:7px!important}.btn-danger:hover{color:#8a0012!important;color:oklch(40% .18 25)!important;box-shadow:none!important;background:#fff1f0!important;background:oklch(97% .03 25)!important;border-color:#ffbab3!important;border-color:oklch(85% .1 25)!important;transform:none!important}.dark .btn-danger{background:var(--hub-surface)!important;color:#ff958d!important;color:oklch(78% .15 25)!important;border-color:var(--hub-line)!important}.dark .btn-danger:hover{background:#4f1a18!important;border-color:#972527!important}.form-input,input.form-input,select.form-input,textarea.form-input{background:var(--hub-surface)!important;border:1px solid var(--hub-line)!important;color:var(--hub-ink)!important;box-shadow:none!important;border-radius:7px!important;transition:border-color .15s!important}.form-input:focus,input.form-input:focus,select.form-input:focus,textarea.form-input:focus{border-color:var(--hub-ink-2)!important;box-shadow:none!important;outline:none!important}.dark .form-input,.dark input.form-input,.dark select.form-input,.dark textarea.form-input{background:var(--hub-surface)!important;border-color:var(--hub-line)!important;color:var(--hub-ink)!important}.status-badge-online,.status-badge-offline,.status-badge-connecting,.status-badge-oauth-required{background:0 0!important;border:0!important;border-radius:0!important;align-items:center!important;gap:6px!important;padding:0!important;font-size:12px!important;font-weight:500!important;line-height:1.4!important;display:inline-flex!important}.status-badge-online:before,.status-badge-offline:before,.status-badge-connecting:before,.status-badge-oauth-required:before{content:"";border-radius:50%;flex-shrink:0;width:6px;height:6px}.status-badge-online{color:#005813!important;color:oklch(40% .13 145)!important}.status-badge-online:before{background:var(--hub-ok);box-shadow:0 0 0 3px #4ea95426}.status-badge-offline{color:#a20519!important}.status-badge-offline:before{background:var(--hub-err);box-shadow:0 0 0 3px #de4e4b26}.status-badge-connecting{color:#704e00!important;color:oklch(45% .13 80)!important}.status-badge-connecting:before{background:var(--hub-warn);box-shadow:0 0 0 3px #e3ad4b2e}.status-badge-oauth-required{color:var(--hub-accent)!important}.status-badge-oauth-required:before{background:var(--hub-accent);box-shadow:0 0 0 3px #0f74c52e}.dark .status-badge-online,.dark .status-badge-offline,.dark .status-badge-connecting,.dark .status-badge-oauth-required{background:0 0!important;border:0!important}.dark .status-badge-online{color:#80cd82!important}.dark .status-badge-offline{color:#ff958d!important;color:oklch(78% .15 25)!important}.dark .status-badge-connecting{color:#edbb64!important}.status-icon-blue{background:var(--hub-accent-soft)!important;color:var(--hub-accent)!important}.status-icon-green{color:#005813!important;color:oklch(40% .13 145)!important;background:#dbf8da!important}.status-icon-red{color:#a20519!important;background:#ffedeb!important;background:oklch(96% .04 25)!important}.status-icon-yellow{color:#704e00!important;color:oklch(45% .13 80)!important;background:#fff0d7!important;background:oklch(96% .06 80)!important}.dark .status-icon-blue{color:#95c9ff!important;color:oklch(82% .1 250)!important;background:#193550!important}.dark .status-icon-green{color:#9bd69c!important;background:#1d341e!important}.dark .status-icon-red{color:#ff958d!important;color:oklch(78% .15 25)!important;background:#4f1a18!important}.dark .status-icon-yellow{color:#edbb64!important;background:#3d2a02!important}.table-container{overflow:hidden;box-shadow:none!important;border:1px solid var(--hub-line)!important;border-radius:10px!important}.dark .table-container{background:var(--hub-surface)!important;border-color:var(--hub-line)!important;box-shadow:none!important}.dark thead{background:var(--hub-bg-2)!important}.login-card{box-shadow:none!important}.hub-topbar{border-bottom:1px solid var(--hub-line);background:var(--hub-bg);align-items:center;gap:14px;height:48px;padding:0 22px;display:flex}.hub-crumb{color:var(--hub-ink-3);font-size:13px}.hub-crumb b{color:var(--hub-ink);font-weight:500}.hub-crumb .sep{color:var(--hub-ink-3);opacity:.5;margin:0 6px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-family:Inter,PingFang SC,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.dark body{color:#e5e7eb;background-color:#1f2a37}.dark .bg-white{background-color:#1f2937!important}.dark .text-gray-900{color:#f9fafb!important}.dark .text-gray-800{color:#f3f4f6!important}.dark .text-gray-700{color:#e5e7eb!important}.dark .text-gray-600{color:#d1d5db!important}.dark .border-gray-300,.dark .border-gray-200,.dark .divide-gray-200>:not([hidden])~:not([hidden]){border-color:#2f3b4c!important}.dark .bg-gray-100{background-color:#374151!important}.dark .hover\:bg-gray-100:hover{background-color:#6e7f9c26!important}.dark .hover\:text-gray-900:hover{color:#bebcb9!important}.dark .bg-gray-50{background-color:#1f2937!important}.dark .shadow{box-shadow:0 4px 12px #00000026,0 2px 6px #0000001a!important}.bg-blue-300{background-color:var(--color-blue-300)}.bg-custom-blue{background-color:#4a90e2}.text-custom-white{color:#fff}.status-badge-online{border:1px solid #a6d7b7;color:#81c784e6!important;background-color:#fff!important}.dark .status-badge-online{border:1px solid #4caf504d;color:#81c784e6!important;background-color:#4caf5026!important}.status-badge-offline{border:1px solid #d1d5db;color:#6b7280e6!important;background-color:#fff!important}.dark .status-badge-offline{border:1px solid #6b72804d;color:#9ca3afe6!important;background-color:#6b728026!important}.status-badge-connecting{border:1px solid #ffd57f;color:#ffd54fe6!important;background-color:#fff!important}.dark .status-badge-connecting{border:1px solid #ffc1074d;color:#ffd54fe6!important;background-color:#ffc10726!important}.status-badge-oauth-required{border:1px solid #ba68c8;color:#9c27b0e6!important;background-color:#fff!important}.dark .status-badge-oauth-required{border:1px solid #9c27b04d;color:#ba68c8e6!important;background-color:#9c27b026!important}.dark .status-icon-blue{color:#60a5fae6!important;background-color:#3b82f626!important}.dark .status-icon-green{color:#81c784e6!important;background-color:#4caf5026!important}.dark .status-icon-red{color:#ef9a9ae6!important;background-color:#f4433626!important}.dark .status-icon-yellow{color:#ffd54fe6!important;background-color:#ffc10726!important}.dashboard-card{border-radius:12px;transition:all .3s}.dashboard-card:hover{transform:translateY(-2px);box-shadow:0 8px 25px #0003,0 4px 12px #00000026!important}.icon-container{transition:all .3s}.icon-container:hover{filter:brightness(1.1);transform:scale(1.05)}.progress-bar-online{background:linear-gradient(90deg,#4caf50cc,#81c78499)}.progress-bar-offline{background:linear-gradient(90deg,#f44336cc,#ef9a9a99)}.progress-bar-connecting{background:linear-gradient(90deg,#ffc107cc,#ffd54f99)}.dark .table-container{border-radius:12px;overflow:hidden;box-shadow:0 4px 12px #00000026}.dark thead{background-color:#252d3a!important}.dark tbody tr{border-bottom:1px solid #2f3b4c}tbody tr:hover{transition:background-color .2s;background-color:var(--color-gray-100)!important}.dark tbody tr:hover{transition:background-color .2s;background-color:#37415180!important}.dark .error-box{border-radius:12px;box-shadow:0 4px 12px #f443361a;background-color:#f443361a!important;border-color:#f443364d!important}.dark .error-box h3{color:#ef9a9ae6!important}.dark .error-box p{color:#d1d5db!important}.loading-container{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px}.dark .loading-container{border:1px solid #2f3b4c;background-color:#1f2937cc!important}.label-primary{background-color:var(--color-blue-50)!important;color:var(--color-blue-500)!important}.dark .label-primary{color:#60a5fae6!important;background-color:#3b82f626!important}.label-secondary{background-color:var(--color-green-50)!important;color:var(--color-green-500)!important}.dark .label-secondary{color:#81c784e6!important;background-color:#4caf5026!important}.btn-primary{border:none;border-radius:8px;transition:all .3s;box-shadow:0 2px 4px #60a5fa33;color:#fff!important;background-color:#60a5fa!important}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px #3b82f64d;color:#fff!important;background-color:#3b82f6!important}.dark .btn-primary{border:1px solid #3b82f64d;transition:all .3s;color:#60a5fae6!important;background-color:#3b82f626!important}.dark .btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px #3b82f633;color:#60a5fa!important;background-color:#3b82f640!important}.btn-secondary{border-radius:8px;font-size:.875rem;color:#374151!important;background-color:#f9fafb!important;border:1px solid #d1d5db!important}.btn-secondary:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0000001a;color:#374151!important;background-color:#e5e7eb!important}.dark .btn-secondary{transition:all .3s;color:#9ca3afe6!important;background-color:#6b728026!important;border:1px solid #6b72804d!important}.dark .btn-secondary:hover{transform:translateY(-1px);color:#9ca3af!important;background-color:#6b728040!important}.btn-warning{border:none;border-radius:8px;transition:all .3s;background-color:var(--color-yellow-100)!important;color:var(--color-yellow-800)!important}.btn-warning:hover{background-color:var(--color-yellow-200)!important;color:var(--color-yellow-800)!important}.dark .btn-warning{border:1px solid #eab3084d;transition:all .3s;color:#facc15e6!important;background-color:#eab30826!important}.dark .btn-warning:hover{transform:translateY(-1px);color:#facc15!important;background-color:#eab30840!important}.btn-danger{border:none;border-radius:8px;transition:all .3s;background-color:var(--color-red-100)!important;color:var(--color-red-800)!important}.btn-danger:hover{background-color:var(--color-red-200)!important;color:var(--color-red-800)!important}.dark .btn-danger{border:1px solid #f443364d;transition:all .3s;color:#ef9a9ae6!important;background-color:#f4433626!important}.dark .btn-danger:hover{transform:translateY(-1px);box-shadow:0 4px 12px #f4433633;color:#ef9a9a!important;background-color:#f4433640!important}.form-input{border-radius:8px;transition:all .3s;color:#374151!important;background-color:#f9fafb!important;border-color:#d1d5db!important}.form-input:focus{border-color:#b8c1cf80;box-shadow:0 0 0 3px #3b82f61a}.dark .form-input{border-radius:8px;color:#e5e7eb!important;background-color:#1f2937!important;border-color:#2f3b4c!important}.dark .form-input:focus{border-color:#3b82f680!important;box-shadow:0 0 0 3px #3b82f61a!important}.dark .form-input::-moz-placeholder{color:#9ca3af!important}.dark .form-input::placeholder{color:#9ca3af!important}.page-card{border-radius:12px;transition:all .3s}.page-card:hover{transform:translateY(-1px)}.dark .page-card{border:1px solid #2f3b4c;box-shadow:0 4px 12px #00000026,0 2px 6px #0000001a;background-color:#1f2937!important}.text-status-red{color:#991b1b}.dark .text-status-red{color:#ef9a9ae6!important}.external-link{cursor:pointer;border-bottom:1px solid #0000;text-decoration:none;transition:all .2s ease-in-out;color:#2563eb!important}.external-link:hover{border-bottom-color:#1d4ed8;text-decoration:none;color:#1d4ed8!important}.dark .external-link{color:#60a5fa!important}.dark .external-link:hover{border-bottom-color:#93c5fd;color:#93c5fd!important}.border-red{border-color:#937d7d}.dark .border-red{border-color:#bca1a1e6!important}.dark .text-status-green{color:#81c784e6!important}.dark .empty-state{text-align:center;border:1px solid #2f3b4c;border-radius:12px;padding:3rem 2rem;background-color:#1f2937!important}.dark .empty-state p{color:#9ca3af!important}.dark .login-container{background-color:#1f2a37!important}.dark .login-card{border:1px solid #2f3b4c;border-radius:12px;box-shadow:0 8px 25px #0003,0 4px 12px #00000026;background-color:#1f2937!important}button{transition:transform .15s,opacity .15s}button:not(:disabled):active{transform:scale(.96)}button.is-loading{color:#0000!important;pointer-events:none!important;position:relative!important}button.is-loading>*{opacity:0!important}button.is-loading:after{content:"";border:2px solid #80808066;border-top-color:#666;border-radius:50%;width:1.2rem;height:1.2rem;margin-top:-.6rem;margin-left:-.6rem;animation:.6s linear infinite button-spinner;position:absolute;top:50%;left:50%;visibility:visible!important}button.bg-blue-600.is-loading:after,button.bg-blue-500.is-loading:after,button.bg-red-500.is-loading:after,button.bg-red-600.is-loading:after,button.btn-primary.is-loading:after,button.text-white.is-loading:after{border:2px solid #ffffff4d!important;border-top-color:#fff!important}@keyframes button-spinner{to{transform:rotate(360deg)}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{f as c,e as t,h as n}from"./index-
|
|
2
|
-
//# sourceMappingURL=resourceService-
|
|
1
|
+
import{f as c,e as t,h as n}from"./index-Btd1KKSH.js";import"./framework-vendor-DeqnZ0v6.js";import"./i18n-vendor-DP1IRITP.js";import"./icons-vendor-BTEm6PQs.js";const d=async(r,o,s)=>{try{const e=await t(`/servers/${encodeURIComponent(r)}/resources/${encodeURIComponent(o)}/toggle`,{enabled:s},{headers:{Authorization:`Bearer ${localStorage.getItem("mcphub_token")}`}});return{success:e.success,error:e.success?void 0:e.message}}catch(e){return console.error("Error toggling resource",{serverName:r,resourceUri:o,enabled:s,error:e}),{success:!1,error:e instanceof Error?e.message:"Unknown error occurred"}}},g=async(r,o,s)=>{try{const e=await n(`/servers/${encodeURIComponent(r)}/resources/${encodeURIComponent(o)}/description`,{description:s},{headers:{Authorization:`Bearer ${localStorage.getItem("mcphub_token")}`}});return{success:e.success,error:e.success?void 0:e.message}}catch(e){return console.error("Error updating resource description",{serverName:r,resourceUri:o,error:e}),{success:!1,error:e instanceof Error?e.message:"Unknown error occurred"}}},m=async(r,o)=>{var s;try{const e=await c(`/servers/${encodeURIComponent(r)}/resources/${encodeURIComponent(o)}/description`,{headers:{Authorization:`Bearer ${localStorage.getItem("mcphub_token")}`}});return{success:e.success,error:e.success?void 0:e.message,description:(s=e.data)==null?void 0:s.description}}catch(e){return console.error("Error resetting resource description",{serverName:r,resourceUri:o,error:e}),{success:!1,error:e instanceof Error?e.message:"Unknown error occurred"}}};export{m as resetResourceDescription,d as toggleResource,g as updateResourceDescription};
|
|
2
|
+
//# sourceMappingURL=resourceService-BECsvcJr.js.map
|
package/frontend/dist/assets/{resourceService-CA1x5Ugz.js.map → resourceService-BECsvcJr.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resourceService-
|
|
1
|
+
{"version":3,"file":"resourceService-BECsvcJr.js","sources":["../../src/services/resourceService.ts"],"sourcesContent":["import { apiDelete, apiPost, apiPut } from '../utils/fetchInterceptor';\n\n/**\n * Toggle a resource's enabled state for a specific server\n */\nexport const toggleResource = async (\n serverName: string,\n resourceUri: string,\n enabled: boolean,\n): Promise<{ success: boolean; error?: string }> => {\n try {\n const response = await apiPost<any>(\n `/servers/${encodeURIComponent(serverName)}/resources/${encodeURIComponent(resourceUri)}/toggle`,\n { enabled },\n {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('mcphub_token')}`,\n },\n },\n );\n\n return {\n success: response.success,\n error: response.success ? undefined : response.message,\n };\n } catch (error) {\n console.error('Error toggling resource', { serverName, resourceUri, enabled, error });\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n};\n\n/**\n * Update a resource's description for a specific server\n */\nexport const updateResourceDescription = async (\n serverName: string,\n resourceUri: string,\n description: string,\n): Promise<{ success: boolean; error?: string }> => {\n try {\n const response = await apiPut<any>(\n `/servers/${encodeURIComponent(serverName)}/resources/${encodeURIComponent(resourceUri)}/description`,\n { description },\n {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('mcphub_token')}`,\n },\n },\n );\n\n return {\n success: response.success,\n error: response.success ? undefined : response.message,\n };\n } catch (error) {\n console.error('Error updating resource description', { serverName, resourceUri, error });\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n};\n\nexport const resetResourceDescription = async (\n serverName: string,\n resourceUri: string,\n): Promise<{ success: boolean; error?: string; description?: string }> => {\n try {\n const response = await apiDelete<any>(\n `/servers/${encodeURIComponent(serverName)}/resources/${encodeURIComponent(resourceUri)}/description`,\n {\n headers: {\n Authorization: `Bearer ${localStorage.getItem('mcphub_token')}`,\n },\n },\n );\n\n return {\n success: response.success,\n error: response.success ? undefined : response.message,\n description: response.data?.description,\n };\n } catch (error) {\n console.error('Error resetting resource description', { serverName, resourceUri, error });\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error occurred',\n };\n }\n};\n"],"names":["toggleResource","serverName","resourceUri","enabled","response","apiPost","error","updateResourceDescription","description","apiPut","resetResourceDescription","apiDelete","_a"],"mappings":"kKAKO,MAAMA,EAAiB,MAC5BC,EACAC,EACAC,IACkD,CAClD,GAAI,CACF,MAAMC,EAAW,MAAMC,EACrB,YAAY,mBAAmBJ,CAAU,CAAC,cAAc,mBAAmBC,CAAW,CAAC,UACvF,CAAE,QAAAC,CAAA,EACF,CACE,QAAS,CACP,cAAe,UAAU,aAAa,QAAQ,cAAc,CAAC,EAAA,CAC/D,CACF,EAGF,MAAO,CACL,QAASC,EAAS,QAClB,MAAOA,EAAS,QAAU,OAAYA,EAAS,OAAA,CAEnD,OAASE,EAAO,CACd,eAAQ,MAAM,0BAA2B,CAAE,WAAAL,EAAY,YAAAC,EAAa,QAAAC,EAAS,MAAAG,EAAO,EAC7E,CACL,QAAS,GACT,MAAOA,aAAiB,MAAQA,EAAM,QAAU,wBAAA,CAEpD,CACF,EAKaC,EAA4B,MACvCN,EACAC,EACAM,IACkD,CAClD,GAAI,CACF,MAAMJ,EAAW,MAAMK,EACrB,YAAY,mBAAmBR,CAAU,CAAC,cAAc,mBAAmBC,CAAW,CAAC,eACvF,CAAE,YAAAM,CAAA,EACF,CACE,QAAS,CACP,cAAe,UAAU,aAAa,QAAQ,cAAc,CAAC,EAAA,CAC/D,CACF,EAGF,MAAO,CACL,QAASJ,EAAS,QAClB,MAAOA,EAAS,QAAU,OAAYA,EAAS,OAAA,CAEnD,OAASE,EAAO,CACd,eAAQ,MAAM,sCAAuC,CAAE,WAAAL,EAAY,YAAAC,EAAa,MAAAI,EAAO,EAChF,CACL,QAAS,GACT,MAAOA,aAAiB,MAAQA,EAAM,QAAU,wBAAA,CAEpD,CACF,EAEaI,EAA2B,MACtCT,EACAC,IACwE,OACxE,GAAI,CACF,MAAME,EAAW,MAAMO,EACrB,YAAY,mBAAmBV,CAAU,CAAC,cAAc,mBAAmBC,CAAW,CAAC,eACvF,CACE,QAAS,CACP,cAAe,UAAU,aAAa,QAAQ,cAAc,CAAC,EAAA,CAC/D,CACF,EAGF,MAAO,CACL,QAASE,EAAS,QAClB,MAAOA,EAAS,QAAU,OAAYA,EAAS,QAC/C,aAAaQ,EAAAR,EAAS,OAAT,YAAAQ,EAAe,WAAA,CAEhC,OAASN,EAAO,CACd,eAAQ,MAAM,uCAAwC,CAAE,WAAAL,EAAY,YAAAC,EAAa,MAAAI,EAAO,EACjF,CACL,QAAS,GACT,MAAOA,aAAiB,MAAQA,EAAM,QAAU,wBAAA,CAEpD,CACF"}
|
package/frontend/dist/assets/{useSettingsData-dhkLE8CB.js.map → useSettingsData-ClhR9PBd.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSettingsData-
|
|
1
|
+
{"version":3,"file":"useSettingsData-ClhR9PBd.js","sources":["../../src/hooks/useSettingsData.ts"],"sourcesContent":["import { useSettings } from '@/contexts/SettingsContext';\n\n/**\n * Hook that provides access to settings data via SettingsContext.\n * This hook is a thin wrapper around useSettings to maintain backward compatibility.\n * The actual data fetching happens once in SettingsProvider, avoiding duplicate API calls.\n */\nexport const useSettingsData = () => {\n return useSettings();\n};\n"],"names":["useSettingsData","useSettings"],"mappings":"wCAOO,MAAMA,EAAkB,IACtBC,EAAA"}
|
package/frontend/dist/index.html
CHANGED
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
10
10
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
11
11
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
|
12
|
-
<script type="module" crossorigin src="./assets/index-
|
|
12
|
+
<script type="module" crossorigin src="./assets/index-Btd1KKSH.js"></script>
|
|
13
13
|
<link rel="modulepreload" crossorigin href="./assets/framework-vendor-DeqnZ0v6.js">
|
|
14
14
|
<link rel="modulepreload" crossorigin href="./assets/i18n-vendor-DP1IRITP.js">
|
|
15
15
|
<link rel="modulepreload" crossorigin href="./assets/icons-vendor-BTEm6PQs.js">
|
|
16
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
16
|
+
<link rel="stylesheet" crossorigin href="./assets/index-H0KbCXxe.css">
|
|
17
17
|
</head>
|
|
18
18
|
|
|
19
19
|
<body class="bg-gray-100">
|
package/package.json
CHANGED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./resourceService-CA1x5Ugz.js","./index-CfXY4mFI.js","./framework-vendor-DeqnZ0v6.js","./i18n-vendor-DP1IRITP.js","./icons-vendor-BTEm6PQs.js","./index-D3p77Gge.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as d,j as e,d as cs}from"./framework-vendor-DeqnZ0v6.js";import{e as oe,f as He,h as ve,i as Ce,u as ds,_ as fe,j as us,k as ms,l as ps}from"./index-CfXY4mFI.js";import{f as ae,u as xs,a as hs}from"./contextCost-Cpznd4kP.js";import{S as bs}from"./StatusDot-BiMZcum9.js";import{u as Se}from"./useSettingsData-dhkLE8CB.js";import{S as Ee}from"./ToggleGroup-CJS7Axui.js";import{u as se}from"./i18n-vendor-DP1IRITP.js";import{n as Ke,o as Ge,l as Ne,p as gs,C as ue,q as ye,r as Pe,s as Xe,t as Ye,u as ze,m as we,W as fs,g as ys,F as js,X as ke,E as vs,v as Ns,R as je,T as ws,P as ks,w as Cs,x as Ss,y as Es}from"./icons-vendor-BTEm6PQs.js";import{D as Ps}from"./DeleteDialog-BBfJpiiD.js";import{S as Ze,d as zs}from"./variableDetection-hIevXYOZ.js";import{C as Ts}from"./ConfirmDialog-Cag_haxr.js";import{P as Ds}from"./Pagination-DBAu79mv.js";const Qe=async(s,n)=>{try{const t=n?`/tools/${encodeURIComponent(n)}/${encodeURIComponent(s.toolName)}`:"/tools/call",r=await oe(t,s.arguments,{headers:{Authorization:`Bearer ${localStorage.getItem("mcphub_token")}`}});return r.success===!1?{success:!1,error:r.message||"Tool call failed"}:{success:!0,content:(r==null?void 0:r.content)||[]}}catch(t){return console.error("Error calling tool",{toolName:s.toolName,server:n,error:t}),{success:!1,error:t instanceof Error?t.message:"Unknown error occurred"}}},Fs=async(s,n,t)=>{try{const r=await oe(`/servers/${encodeURIComponent(s)}/tools/${encodeURIComponent(n)}/toggle`,{enabled:t},{headers:{Authorization:`Bearer ${localStorage.getItem("mcphub_token")}`}});return{success:r.success,error:r.success?void 0:r.message}}catch(r){return console.error("Error toggling tool",{serverName:s,toolName:n,enabled:t,error:r}),{success:!1,error:r instanceof Error?r.message:"Unknown error occurred"}}},es=async(s,n,t)=>{try{const r=await ve(`/servers/${encodeURIComponent(s)}/tools/${encodeURIComponent(n)}/description`,{description:t},{headers:{Authorization:`Bearer ${localStorage.getItem("mcphub_token")}`}});return{success:r.success,error:r.success?void 0:r.message}}catch(r){return console.error("Error updating tool description",{serverName:s,toolName:n,error:r}),{success:!1,error:r instanceof Error?r.message:"Unknown error occurred"}}},ss=async(s,n)=>{var t;try{const r=await He(`/servers/${encodeURIComponent(s)}/tools/${encodeURIComponent(n)}/description`,{headers:{Authorization:`Bearer ${localStorage.getItem("mcphub_token")}`}});return{success:r.success,error:r.success?void 0:r.message,description:(t=r.data)==null?void 0:t.description}}catch(r){return console.error("Error resetting tool description",{serverName:s,toolName:n,error:r}),{success:!1,error:r instanceof Error?r.message:"Unknown error occurred"}}},Is=Object.freeze(Object.defineProperty({__proto__:null,callTool:Qe,resetToolDescription:ss,toggleTool:Fs,updateToolDescription:es},Symbol.toStringTag,{value:"Module"})),ts=({schema:s,onSubmit:n,onCancel:t,loading:r=!1,storageKey:y,title:v})=>{const{t:a}=se(),[N,o]=d.useState({}),[g,u]=d.useState({}),[S,D]=d.useState(!1),[j,F]=d.useState(""),[w,k]=d.useState(""),E=d.useMemo(()=>(m=>{const f=l=>{if(typeof l=="object"&&l!==null){const p=l;return{type:p.type||"string",description:p.description,enum:p.enum,default:p.default,properties:p.properties?Object.fromEntries(Object.entries(p.properties).map(([c,h])=>[c,f(h)])):void 0,required:p.required,items:p.items?f(p.items):void 0}}return{type:"string"}};return{type:m.type,properties:m.properties?Object.fromEntries(Object.entries(m.properties).map(([l,p])=>[l,f(p)])):void 0,required:m.required}})(s),[s]);d.useEffect(()=>{const x=(f,l="")=>{const p={};return f.type==="object"&&f.properties&&Object.entries(f.properties).forEach(([c,h])=>{const _=l?`${l}.${c}`:c;h.default!==void 0?p[c]=h.default:h.type==="string"?p[c]="":h.type==="number"||h.type==="integer"?p[c]=0:h.type==="boolean"?p[c]=!1:h.type==="array"?p[c]=[]:h.type==="object"&&(h.properties?p[c]=x(h,_):p[c]={})}),p};let m=x(E);if(y)try{const f=localStorage.getItem(y);if(f){const l=JSON.parse(f);m={...m,...l}}}catch(f){console.warn("Failed to load saved form data:",f)}o(m)},[E,y]),d.useEffect(()=>{S&&Object.keys(N).length>0&&(F(JSON.stringify(N,null,2)),k(""))},[S,N]);const A=x=>{F(x),k("");try{const m=JSON.parse(x);if(o(m),y)try{localStorage.setItem(y,JSON.stringify(m))}catch(f){console.warn("Failed to save form data to localStorage:",f)}}catch{k(a("tool.invalidJsonFormat"))}},O=()=>{F(JSON.stringify(N,null,2)),k(""),D(!0)},J=()=>{if(j.trim())try{const x=JSON.parse(j);o(x),k(""),D(!1)}catch{k(a("tool.fixJsonBeforeSwitching"));return}else D(!1)},R=(x,m)=>{o(f=>{const l={...f},p=x.split(".");let c=l;for(let h=0;h<p.length-1;h++)c[p[h]]||(c[p[h]]={}),c=c[p[h]];if(c[p[p.length-1]]=m,y)try{localStorage.setItem(y,JSON.stringify(l))}catch(h){console.warn("Failed to save form data to localStorage:",h)}return l}),g[x]&&u(f=>{const l={...f};return delete l[x],l})},T=()=>{const x={},m=(f,l,p="")=>{f.type==="object"&&f.properties&&Object.entries(f.properties).forEach(([c,h])=>{var H;const _=p?`${p}.${c}`:c,$=l==null?void 0:l[c];if((H=f.required)!=null&&H.includes(c)&&($==null||$===""||Array.isArray($)&&$.length===0)){x[_]=`${c} is required`;return}$!=null&&$!==""&&(h.type==="string"&&typeof $!="string"?x[_]=`${c} must be a string`:h.type==="number"&&typeof $!="number"?x[_]=`${c} must be a number`:h.type==="integer"&&(!Number.isInteger($)||typeof $!="number")?x[_]=`${c} must be an integer`:h.type==="boolean"&&typeof $!="boolean"?x[_]=`${c} must be a boolean`:h.type==="array"&&Array.isArray($)?h.items&&$.forEach((I,B)=>{var P;((P=h.items)==null?void 0:P.type)==="object"&&h.items.properties&&m(h.items,I,`${_}.${B}`)}):h.type==="object"&&typeof $=="object"&&m(h,$,_))})};return m(E,N),u(x),Object.keys(x).length===0},K=x=>{x.preventDefault(),T()&&n(N)},L=(x,m)=>m.split(".").reduce((f,l)=>f==null?void 0:f[l],x),q=(x,m,f,l)=>{const p=f==null?void 0:f[x];return m.type==="string"?m.enum?e.jsxs("select",{value:p||"",onChange:c=>l(c.target.value),className:"w-full border rounded-md px-2 py-1 text-sm border-gray-300 focus:outline-none focus:ring-1 focus:ring-blue-500",children:[e.jsx("option",{value:"",children:a("tool.selectOption")}),m.enum.map((c,h)=>e.jsx("option",{value:c,children:c},h))]}):e.jsx("input",{type:"text",value:p||"",onChange:c=>l(c.target.value),className:"w-full border rounded-md px-2 py-1 text-sm border-gray-300 focus:outline-none focus:ring-1 focus:ring-blue-500 form-input",placeholder:m.description||a("tool.enterKey",{key:x})}):m.type==="number"||m.type==="integer"?e.jsx("input",{type:"number",step:m.type==="integer"?"1":"any",value:p??"",onChange:c=>{const h=c.target.value===""?"":m.type==="integer"?parseInt(c.target.value):parseFloat(c.target.value);l(h)},className:"w-full border rounded-md px-2 py-1 text-sm border-gray-300 focus:outline-none focus:ring-1 focus:ring-blue-500 form-input"}):m.type==="boolean"?e.jsx("input",{type:"checkbox",checked:p||!1,onChange:c=>l(c.target.checked),className:"h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded"}):e.jsx("input",{type:"text",value:p||"",onChange:c=>l(c.target.value),className:"w-full border rounded-md px-2 py-1 text-sm border-gray-300 focus:outline-none focus:ring-1 focus:ring-blue-500 form-input",placeholder:m.description||a("tool.enterKey",{key:x})})},Y=(x,m,f="")=>{var h,_,$,H,I,B,P,U,z,W,ie,ne,me,pe;const l=f?`${f}.${x}`:x,p=L(N,l),c=g[l];if(m.type==="array"){const M=L(N,l)||[];return e.jsxs("div",{className:"mb-6",children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:[x,(f?(_=(h=L(E,f))==null?void 0:h.required)==null?void 0:_.includes(x):($=E.required)==null?void 0:$.includes(x))&&e.jsx("span",{className:"text-status-red ml-1",children:"*"})]}),m.description&&e.jsx("p",{className:"text-xs text-gray-500 mb-2",children:m.description}),e.jsxs("div",{className:"border border-gray-200 dark:border-gray-700 rounded-md p-3 bg-gray-50 dark:bg-gray-800",children:[M.map((X,ee)=>{var xe,he,be;return e.jsxs("div",{className:"mb-3 p-3 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-md",children:[e.jsxs("div",{className:"flex justify-between items-center mb-2",children:[e.jsx("span",{className:"text-sm font-medium text-gray-600",children:a("tool.item",{index:ee+1})}),e.jsx("button",{type:"button",onClick:()=>{const G=[...M];G.splice(ee,1),R(l,G)},className:"text-status-red hover:text-red-700 text-sm",children:a("common.remove")})]}),((xe=m.items)==null?void 0:xe.type)==="string"&&m.items.enum?e.jsxs("select",{value:X||"",onChange:G=>{const Z=[...M];Z[ee]=G.target.value,R(l,Z)},className:"w-full border rounded-md px-3 py-2 border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500",children:[e.jsx("option",{value:"",children:a("tool.selectOption")}),m.items.enum.map((G,Z)=>e.jsx("option",{value:G,children:G},Z))]}):((he=m.items)==null?void 0:he.type)==="object"&&m.items.properties?e.jsx("div",{className:"space-y-3",children:Object.entries(m.items.properties).map(([G,Z])=>{var Q,de;return e.jsxs("div",{children:[e.jsxs("label",{className:"block text-xs font-medium text-gray-600 mb-1",children:[G,((de=(Q=m.items)==null?void 0:Q.required)==null?void 0:de.includes(G))&&e.jsx("span",{className:"text-status-red ml-1",children:"*"})]}),q(G,Z,X,ge=>{const re=[...M];re[ee]={...re[ee],[G]:ge},R(l,re)})]},G)})}):e.jsx("input",{type:"text",value:X||"",onChange:G=>{const Z=[...M];Z[ee]=G.target.value,R(l,Z)},className:"w-full border rounded-md px-3 py-2 border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 form-input",placeholder:a("tool.enterValue",{type:((be=m.items)==null?void 0:be.type)||"value"})})]},ee)}),e.jsx("button",{type:"button",onClick:()=>{var ee;const X=((ee=m.items)==null?void 0:ee.type)==="object"?{}:"";R(l,[...M,X])},className:"w-full mt-2 px-3 py-2 text-sm text-blue-600 border border-blue-300 rounded-md hover:bg-blue-50",children:a("tool.addItem",{key:x})})]}),c&&e.jsx("p",{className:"text-status-red text-xs mt-1",children:c})]},l)}return m.type==="object"?m.properties?e.jsxs("div",{className:"mb-6",children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:[x,(f?(I=(H=L(E,f))==null?void 0:H.required)==null?void 0:I.includes(x):(B=E.required)==null?void 0:B.includes(x))&&e.jsx("span",{className:"text-status-red ml-1",children:"*"})]}),m.description&&e.jsx("p",{className:"text-xs text-gray-500 mb-2",children:m.description}),e.jsx("div",{className:"border border-gray-200 dark:border-gray-700 rounded-md p-4 bg-gray-50 dark:bg-gray-800",children:Object.entries(m.properties).map(([M,X])=>Y(M,X,l))}),c&&e.jsx("p",{className:"text-status-red text-xs mt-1",children:c})]},l):e.jsxs("div",{className:"mb-4",children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:[x,(f?(U=(P=L(E,f))==null?void 0:P.required)==null?void 0:U.includes(x):(z=E.required)==null?void 0:z.includes(x))&&e.jsx("span",{className:"text-status-red ml-1",children:"*"}),e.jsx("span",{className:"text-xs text-gray-500 ml-1",children:"(JSON object)"})]}),m.description&&e.jsx("p",{className:"text-xs text-gray-500 mb-2",children:m.description}),e.jsx("textarea",{value:typeof p=="object"?JSON.stringify(p,null,2):p||"{}",onChange:M=>{try{const X=JSON.parse(M.target.value);R(l,X)}catch{R(l,M.target.value)}},placeholder:`{
|
|
3
|
-
"key": "value"
|
|
4
|
-
}`,className:`w-full border rounded-md px-3 py-2 font-mono text-sm ${c?"border-red-500":"border-gray-300"} focus:outline-none focus:ring-2 focus:ring-blue-500`,rows:4}),c&&e.jsx("p",{className:"text-status-red text-xs mt-1",children:c})]},l):m.type==="string"?m.enum?e.jsxs("div",{className:"mb-4",children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:[x,(f?!1:(W=E.required)==null?void 0:W.includes(x))&&e.jsx("span",{className:"text-status-red ml-1",children:"*"})]}),m.description&&e.jsx("p",{className:"text-xs text-gray-500 mb-2",children:m.description}),e.jsxs("select",{value:p||"",onChange:M=>R(l,M.target.value),className:`w-full border rounded-md px-3 py-2 ${c?"border-red-500":"border-gray-300"} focus:outline-none focus:ring-2 focus:ring-blue-500`,children:[e.jsx("option",{value:"",children:a("tool.selectOption")}),m.enum.map((M,X)=>e.jsx("option",{value:M,children:M},X))]}),c&&e.jsx("p",{className:"text-status-red text-xs mt-1",children:c})]},l):e.jsxs("div",{className:"mb-4",children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:[x,(f?!1:(ie=E.required)==null?void 0:ie.includes(x))&&e.jsx("span",{className:"text-status-red ml-1",children:"*"})]}),m.description&&e.jsx("p",{className:"text-xs text-gray-500 mb-2",children:m.description}),e.jsx("input",{type:"text",value:p||"",onChange:M=>R(l,M.target.value),className:`w-full border rounded-md px-3 py-2 ${c?"border-red":"border-gray-200"} focus:outline-none form-input`}),c&&e.jsx("p",{className:"text-status-red text-xs mt-1",children:c})]},l):m.type==="number"||m.type==="integer"?e.jsxs("div",{className:"mb-4",children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:[x,(f?!1:(ne=E.required)==null?void 0:ne.includes(x))&&e.jsx("span",{className:"text-status-red ml-1",children:"*"})]}),m.description&&e.jsx("p",{className:"text-xs text-gray-500 mb-2",children:m.description}),e.jsx("input",{type:"number",step:m.type==="integer"?"1":"any",value:p??"",onChange:M=>{const X=M.target.value===""?"":m.type==="integer"?parseInt(M.target.value):parseFloat(M.target.value);R(l,X)},className:`w-full border rounded-md px-3 py-2 form-input ${c?"border-red-500":"border-gray-300"} focus:outline-none focus:ring-2 focus:ring-blue-500`}),c&&e.jsx("p",{className:"text-status-red text-xs mt-1",children:c})]},l):m.type==="boolean"?e.jsxs("div",{className:"mb-4",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx("input",{type:"checkbox",checked:p||!1,onChange:M=>R(l,M.target.checked),className:"h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded"}),e.jsxs("label",{className:"ml-2 block text-sm text-gray-700",children:[x,(f?!1:(me=E.required)==null?void 0:me.includes(x))&&e.jsx("span",{className:"text-status-red ml-1",children:"*"})]})]}),m.description&&e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:m.description}),c&&e.jsx("p",{className:"text-status-red text-xs mt-1",children:c})]},l):e.jsxs("div",{className:"mb-4",children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 mb-1",children:[x,(f?!1:(pe=E.required)==null?void 0:pe.includes(x))&&e.jsx("span",{className:"text-status-red ml-1",children:"*"}),e.jsxs("span",{className:"text-xs text-gray-500 ml-1",children:["(",m.type,")"]})]}),m.description&&e.jsx("p",{className:"text-xs text-gray-500 mb-2",children:m.description}),e.jsx("input",{type:"text",value:p||"",onChange:M=>R(l,M.target.value),placeholder:a("tool.enterValue",{type:m.type}),className:`w-full border rounded-md px-3 py-2 ${c?"border-red-500":"border-gray-300"} focus:outline-none focus:ring-2 focus:ring-blue-500 form-input`}),c&&e.jsx("p",{className:"text-status-red text-xs mt-1",children:c})]},l)};return E.properties?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex justify-between items-center pb-3",children:[e.jsx("h6",{className:"text-md font-medium text-gray-900",children:v}),e.jsxs("div",{className:"flex space-x-2",children:[e.jsx("button",{type:"button",onClick:J,className:`hub-btn sm ${S?"":"primary"}`,children:a("tool.formMode")}),e.jsx("button",{type:"button",onClick:O,className:`hub-btn sm ${S?"primary":""}`,children:a("tool.jsonMode")})]})]}),S?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:a("tool.jsonConfiguration")}),e.jsx("textarea",{value:j,onChange:x=>A(x.target.value),placeholder:`{
|
|
5
|
-
"key": "value"
|
|
6
|
-
}`,className:`w-full h-64 border rounded-md px-3 py-2 font-mono text-sm resize-y form-input ${w?"border-red-500":"border-gray-300"} focus:outline-none focus:ring-2 focus:ring-blue-500`}),w&&e.jsx("p",{className:"text-status-red text-xs mt-1",children:w})]}),e.jsxs("div",{className:"flex justify-end space-x-2 pt-4",children:[e.jsx("button",{type:"button",onClick:t,className:"hub-btn sm",children:a("tool.cancel")}),e.jsx("button",{onClick:()=>{try{const x=JSON.parse(j);n(x)}catch{k(a("tool.invalidJsonFormat"))}},disabled:r||!!w,className:"hub-btn sm primary",children:a(r?"tool.running":"tool.runTool")})]})]}):e.jsxs("form",{onSubmit:K,className:"space-y-4",children:[Object.entries(E.properties||{}).map(([x,m])=>Y(x,m)),e.jsxs("div",{className:"flex justify-end space-x-2 pt-4",children:[e.jsx("button",{type:"button",onClick:t,className:"hub-btn sm",children:a("tool.cancel")}),e.jsx("button",{type:"submit",disabled:r,className:"hub-btn sm primary",children:a(r?"tool.running":"tool.runTool")})]})]})]}):e.jsxs("div",{className:"p-4 bg-gray-50 dark:bg-gray-800 rounded-md",children:[e.jsx("p",{className:"text-sm text-gray-600",children:a("tool.noParameters")}),e.jsxs("div",{className:"flex justify-end space-x-2 mt-4",children:[e.jsx("button",{type:"button",onClick:t,className:"hub-btn",children:a("tool.cancel")}),e.jsx("button",{onClick:()=>n({}),disabled:r,className:"hub-btn primary",children:a(r?"tool.running":"tool.runTool")})]})]})},$s=({result:s,onClose:n})=>{const{t}=se(),r=s.content,y=u=>u?u.startsWith("image/")?u:`image/${u}`:"image/png",v=u=>{if(!u)return[];if(Array.isArray(u))return u.flatMap(j=>v(j));if(typeof u!="object")return[];const S=[];u.type==="image"&&u.data&&S.push({data:String(u.data),mimeType:y(u.mimeType||u.mime_type)});const D=u.image_base64||u.imageBase64||u.image_data||u.imageData||u.base64;return D&&S.push({data:String(D),mimeType:y(u.image_mimeType||u.image_mime_type||u.mimeType||u.mime_type)}),u.image&&typeof u.image=="object"&&S.push(...v(u.image)),Array.isArray(u.images)&&S.push(...v(u.images)),Array.isArray(u.content)&&S.push(...v(u.content)),S},a=u=>{const S=[];try{const F=JSON.parse(u);if(S.push(...v(F)),S.length>0)return S}catch{}const D=/data:image\/(png|jpe?g|gif|webp);base64,([A-Za-z0-9+/=]+)/g;let j;for(;(j=D.exec(u))!==null;){const F=`image/${j[1]==="jpg"?"jpeg":j[1]}`;S.push({data:j[2],mimeType:F})}return S},N=u=>{try{const S=JSON.parse(u),D=j=>{if(Array.isArray(j))return j.map(D);if(j&&typeof j=="object"){const F={};for(const[w,k]of Object.entries(j))typeof k=="string"&&w.toLowerCase().includes("base64")?F[w]="[base64 omitted]":F[w]=D(k);return F}return j};return JSON.stringify(D(S),null,2)}catch{return u.replace(/data:image\/(png|jpe?g|gif|webp);base64,[A-Za-z0-9+/=]+/g,"[image data omitted]")}},o=u=>Array.isArray(u)?u.map((S,D)=>e.jsx("div",{className:"mb-3 last:mb-0",children:g(S)},D)):g(u),g=u=>{if(typeof u=="string"){const S=a(u),D=N(u);return e.jsxs("div",{className:"bg-gray-50 dark:bg-gray-800 rounded-md p-3",children:[S.length>0&&e.jsx("div",{className:"mb-3 space-y-3",children:S.map((j,F)=>e.jsx("img",{src:`data:${j.mimeType||"image/png"};base64,${j.data}`,alt:t("tool.toolResult"),className:"max-w-full h-auto rounded-md"},F))}),e.jsx("pre",{className:"whitespace-pre-wrap text-sm text-gray-800 font-mono",children:D})]})}if(typeof u=="object"&&u!==null){if(u.type==="text"&&u.text){const S=a(u.text),D=N(u.text);return e.jsxs("div",{className:"bg-gray-50 dark:bg-gray-800 rounded-md p-3",children:[S.length>0&&e.jsx("div",{className:"mb-3 space-y-3",children:S.map((j,F)=>e.jsx("img",{src:`data:${j.mimeType||"image/png"};base64,${j.data}`,alt:t("tool.toolResult"),className:"max-w-full h-auto rounded-md"},F))}),e.jsx("pre",{className:"whitespace-pre-wrap text-sm text-gray-800 font-mono",children:D})]})}if(u.type==="image"&&u.data)return e.jsx("div",{className:"bg-gray-50 dark:bg-gray-800 rounded-md p-3",children:e.jsx("img",{src:`data:${u.mimeType||"image/png"};base64,${u.data}`,alt:t("tool.toolResult"),className:"max-w-full h-auto rounded-md"})});try{const S=typeof u=="string"?JSON.parse(u):u;return e.jsxs("div",{className:"bg-gray-50 dark:bg-gray-800 rounded-md p-3",children:[e.jsx("div",{className:"text-xs text-gray-500 mb-2",children:t("tool.jsonResponse")}),e.jsx("pre",{className:"text-sm text-gray-800 overflow-auto",children:JSON.stringify(S,null,2)})]})}catch{return e.jsx("div",{className:"bg-gray-50 dark:bg-gray-800 rounded-md p-3",children:e.jsx("pre",{className:"whitespace-pre-wrap text-sm text-gray-800 font-mono",children:String(u)})})}}return e.jsx("div",{className:"bg-gray-50 dark:bg-gray-800 rounded-md p-3",children:e.jsx("pre",{className:"whitespace-pre-wrap text-sm text-gray-800 font-mono",children:String(u)})})};return e.jsxs("div",{className:"border border-gray-300 rounded-lg bg-white dark:bg-gray-800 shadow-sm",children:[e.jsx("div",{className:"border-b border-gray-300 px-4 py-3 bg-gray-50 dark:bg-gray-800 rounded-t-lg",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[s.success?e.jsx(Ke,{size:20,className:"text-status-green"}):e.jsx(Ge,{size:20,className:"text-status-red"}),e.jsx("div",{children:e.jsxs("h4",{className:"text-sm font-medium text-gray-900",children:[t("tool.execution")," ",s.success?t("tool.successful"):t("tool.failed")]})})]}),e.jsx("button",{onClick:n,className:"text-gray-400 hover:text-gray-600 text-sm",children:"✕"})]})}),e.jsx("div",{className:"p-4",children:s.success?e.jsx("div",{children:s.content&&s.content.length>0?e.jsxs("div",{children:[e.jsx("div",{className:"text-sm text-gray-600 mb-3",children:t("tool.result")}),o(s.content)]}):e.jsx("div",{className:"text-sm text-gray-500 italic",children:t("tool.noContent")})}):e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-3",children:[e.jsx(Ne,{size:16,className:"text-red-500"}),e.jsx("span",{className:"text-sm font-medium text-red-700",children:t("tool.error")})]}),r&&r.length>0?e.jsxs("div",{children:[e.jsx("div",{className:"text-sm text-gray-600 mb-3",children:t("tool.errorDetails")}),o(r)]}):e.jsx("div",{className:"bg-red-50 border border-red-300 rounded-md p-3",children:e.jsx("pre",{className:"text-sm text-red-800 whitespace-pre-wrap",children:s.error||s.message||t("tool.unknownError")})})]})})]})},ce=({title:s,onClick:n,disabled:t=!1,loading:r=!1})=>e.jsx("button",{type:"button",className:"ml-2 p-1 text-amber-600 hover:text-amber-700 cursor-pointer transition-colors disabled:opacity-60 disabled:cursor-not-allowed",onClick:n,disabled:t,title:s,"aria-label":s,children:e.jsx(gs,{size:14,className:r?"animate-spin":""})});function Rs(s){return s==null?!0:typeof s=="string"?s.trim()==="":Array.isArray(s)?s.length===0:typeof s=="object"?Object.keys(s).length===0:!1}const _s=({tool:s,server:n,readOnly:t=!1,onToggle:r,onDescriptionUpdate:y,cost:v})=>{const{t:a}=se(),{showToast:N}=Ce(),{nameSeparator:o}=Se(),[g,u]=d.useState(!1),[S,D]=d.useState(!1),[j,F]=d.useState(!1),[w,k]=d.useState(null),[E,A]=d.useState(!1),[O,J]=d.useState(!1),[R,T]=d.useState(s.description||""),K=d.useRef(null),L=d.useRef(null),[q,Y]=d.useState(0),[x,m]=d.useState(!1);d.useEffect(()=>{E&&K.current&&(K.current.focus(),q>0&&(K.current.style.width=`${q+20}px`))},[E,q]),d.useEffect(()=>{!E&&L.current&&Y(L.current.offsetWidth)},[E,R]),d.useEffect(()=>{T(s.description||"")},[s.description]);const f=d.useCallback(()=>`mcphub_tool_form_${n?`${n}_`:""}${s.name}`,[s.name,n]),l=d.useCallback(()=>{localStorage.removeItem(f())},[f]),p=z=>{!t&&r&&r(s.name,z)},c=()=>{t||A(!0)},h=async()=>{if(!t)try{const z=await es(n,s.name,R);z.success?(A(!1),y&&y(s.name,R)):(T(s.description||""),console.error("Failed to update tool description:",z.error))}catch(z){console.error("Error updating tool description:",z),T(s.description||""),A(!1)}},_=z=>{T(z.target.value)},$=async()=>{if(!t){J(!0);try{const z=await ss(n,s.name);if(z.success){const W=z.description||"";T(W),A(!1),y==null||y(s.name,W,{restored:!0})}else N(z.error||a("tool.restoreDefaultFailed"),"error")}catch(z){console.error("Error resetting tool description:",z),N(a("tool.restoreDefaultFailed"),"error")}finally{J(!1)}}},H=z=>{z.key==="Enter"?h():z.key==="Escape"&&(T(s.description||""),A(!1))},I=async z=>{z.stopPropagation();try{if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(s.name),m(!0),N(a("common.copySuccess"),"success"),setTimeout(()=>m(!1),2e3);else{const W=document.createElement("textarea");W.value=s.name,W.style.position="fixed",W.style.left="-9999px",document.body.appendChild(W),W.focus(),W.select();try{document.execCommand("copy"),m(!0),N(a("common.copySuccess"),"success"),setTimeout(()=>m(!1),2e3)}catch(ie){N(a("common.copyFailed"),"error"),console.error("Copy to clipboard failed:",ie)}document.body.removeChild(W)}}catch(W){N(a("common.copyFailed"),"error"),console.error("Copy to clipboard failed:",W)}},B=async z=>{F(!0);try{z=Object.fromEntries(Object.entries(z).filter(([ie,ne])=>!Rs(ne)));const W=await Qe({toolName:s.name,arguments:z},n);k(W)}catch(W){k({success:!1,error:W instanceof Error?W.message:"Unknown error occurred"})}finally{F(!1)}},P=()=>{D(!1),l(),k(null)},U=()=>{k(null)};return e.jsxs("div",{className:"hub-card overflow-hidden",style:{marginBottom:8},children:[e.jsxs("div",{className:"flex justify-between items-center gap-2 px-3 py-2.5 cursor-pointer hover:bg-[var(--hub-surface-hover)] transition-colors",onClick:z=>{z.stopPropagation(),u(!g)},children:[e.jsxs("div",{className:"flex-1 min-w-0 flex items-center gap-1.5 flex-wrap",children:[e.jsx("span",{className:"hub-mono font-medium",style:{fontSize:13,color:"var(--hub-ink)"},children:s.name.replace(n+o,"")}),e.jsx("button",{className:"hub-icon-btn sm",onClick:I,title:a("common.copy"),children:x?e.jsx(ue,{size:12,style:{color:"var(--hub-ok)"}}):e.jsx(ye,{size:12})}),e.jsx("span",{className:"flex items-center gap-1",style:{fontSize:12,color:"var(--hub-ink-3)"},children:E?e.jsxs(e.Fragment,{children:[e.jsx("input",{ref:K,type:"text",className:"hub-input",style:{height:26,fontSize:12,width:q>0?`${q+20}px`:160,minWidth:80},value:R,onChange:_,onKeyDown:H,onClick:z=>z.stopPropagation()}),e.jsx("button",{className:"hub-icon-btn sm",onClick:z=>{z.stopPropagation(),h()},disabled:O,children:e.jsx(ue,{size:12,style:{color:"var(--hub-ok)"}})}),e.jsx(ce,{title:a("tool.restoreDefault"),onClick:z=>{z.stopPropagation(),$()},disabled:O,loading:O})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{ref:L,children:R||a("tool.noDescription")}),!t&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"hub-icon-btn sm",onClick:z=>{z.stopPropagation(),c()},children:e.jsx(Pe,{size:12})}),e.jsx(ce,{title:a("tool.restoreDefault"),onClick:z=>{z.stopPropagation(),$()},disabled:O,loading:O})]})]})})]}),e.jsxs("div",{className:"flex items-center gap-1.5 flex-shrink-0",children:[v!=null&&e.jsxs("span",{className:"hub-mono flex-shrink-0",style:{fontSize:11,color:"var(--hub-ink-3)"},title:a("cost.estimate"),children:["Σ ",ae(v)]}),e.jsx("div",{onClick:z=>z.stopPropagation(),children:e.jsx(Ee,{checked:s.enabled??!0,onCheckedChange:p,disabled:j||t})}),e.jsxs("button",{onClick:z=>{z.stopPropagation(),u(!0),D(!0)},className:"hub-btn sm",style:{color:"var(--hub-accent)"},disabled:j||!s.enabled,children:[j?e.jsx(Xe,{size:12,className:"animate-spin"}):e.jsx(Ye,{size:12}),e.jsx("span",{children:a(j?"tool.running":"tool.run")})]}),e.jsx("button",{className:"hub-icon-btn sm",children:g?e.jsx(ze,{size:14}):e.jsx(we,{size:14})})]})]}),g&&e.jsxs("div",{style:{borderTop:"1px solid var(--hub-line-2)",padding:"10px 12px",display:"flex",flexDirection:"column",gap:10},children:[!S&&e.jsxs("div",{style:{background:"var(--hub-bg-2)",borderRadius:7,padding:"8px 12px",border:"1px solid var(--hub-line)"},children:[e.jsx("div",{className:"hub-sect",style:{marginBottom:6},children:a("tool.inputSchema")}),e.jsx("pre",{className:"hub-mono overflow-auto",style:{fontSize:11.5,color:"var(--hub-ink-2)",margin:0},children:JSON.stringify(s.inputSchema,null,2)})]}),S&&e.jsxs("div",{style:{border:"1px solid var(--hub-line)",borderRadius:8,padding:14},children:[e.jsx(ts,{schema:s.inputSchema||{type:"object"},onSubmit:B,onCancel:P,loading:j,storageKey:f(),title:a("tool.runToolWithName",{name:s.name.replace(n+o,"")})}),w&&e.jsx("div",{style:{marginTop:12},children:e.jsx($s,{result:w,onClose:U})})]})]})]})},As=async(s,n)=>{try{const t=n?`/prompts/call/${n}`:"/prompts/call",r=await oe(t,{promptName:s.promptName,arguments:s.arguments});return r.success?{success:!0,data:r.data}:{success:!1,error:r.message||"Prompt call failed"}}catch(t){return console.error("Error calling prompt",{promptName:s.promptName,server:n,error:t}),{success:!1,error:t instanceof Error?t.message:"Unknown error occurred"}}},rs=async(s,n)=>{try{const t=await oe(`/mcp/${encodeURIComponent(n||"")}/prompts/${encodeURIComponent(s.promptName)}`,{name:s.promptName,arguments:s.arguments});if(!t.success)throw new Error(`Failed to get prompt: ${t.message||"Unknown error"}`);return{success:!0,data:t.data}}catch(t){return console.error("Error getting prompt",{promptName:s.promptName,server:n,error:t}),{success:!1,error:t instanceof Error?t.message:"Unknown error occurred"}}},Os=async(s,n,t)=>{try{const r=await oe(`/servers/${encodeURIComponent(s)}/prompts/${encodeURIComponent(n)}/toggle`,{enabled:t});return{success:r.success,error:r.success?void 0:r.message}}catch(r){return console.error("Error toggling prompt",{serverName:s,promptName:n,enabled:t,error:r}),{success:!1,error:r instanceof Error?r.message:"Unknown error occurred"}}},ns=async(s,n,t)=>{try{const r=await ve(`/servers/${encodeURIComponent(s)}/prompts/${encodeURIComponent(n)}/description`,{description:t},{headers:{Authorization:`Bearer ${localStorage.getItem("mcphub_token")}`}});return{success:r.success,error:r.success?void 0:r.message}}catch(r){return console.error("Error updating prompt description",{serverName:s,promptName:n,error:r}),{success:!1,error:r instanceof Error?r.message:"Unknown error occurred"}}},as=async(s,n)=>{var t;try{const r=await He(`/servers/${encodeURIComponent(s)}/prompts/${encodeURIComponent(n)}/description`,{headers:{Authorization:`Bearer ${localStorage.getItem("mcphub_token")}`}});return{success:r.success,error:r.success?void 0:r.message,description:(t=r.data)==null?void 0:t.description}}catch(r){return console.error("Error resetting prompt description",{serverName:s,promptName:n,error:r}),{success:!1,error:r instanceof Error?r.message:"Unknown error occurred"}}},Ms=Object.freeze(Object.defineProperty({__proto__:null,callPrompt:As,getPrompt:rs,resetPromptDescription:as,togglePrompt:Os,updatePromptDescription:ns},Symbol.toStringTag,{value:"Module"})),Ue=({result:s,onClose:n})=>{const{t}=se(),r=y=>{if(typeof y=="string")return e.jsx("div",{className:"bg-gray-50 dark:bg-gray-800 rounded-md p-3",children:e.jsx("pre",{className:"whitespace-pre-wrap text-sm text-gray-800 font-mono",children:y})});if(typeof y=="object"&&y!==null){if(y.description||y.messages)return e.jsxs("div",{className:"space-y-4",children:[y.description&&e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-medium text-gray-900 mb-2",children:t("prompt.description")}),e.jsx("div",{className:"bg-gray-50 dark:bg-gray-800 rounded-md p-3",children:e.jsx("p",{className:"text-sm text-gray-800",children:y.description})})]}),y.messages&&e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-medium text-gray-900 mb-2",children:t("prompt.messages")}),e.jsx("div",{className:"space-y-3",children:y.messages.map((v,a)=>e.jsxs("div",{className:"bg-gray-50 dark:bg-gray-800 rounded-md p-3",children:[e.jsx("div",{className:"flex items-center mb-2",children:e.jsxs("span",{className:"inline-block w-16 text-xs font-medium text-gray-500",children:[v.role,":"]})}),typeof v.content=="string"?e.jsx("pre",{className:"whitespace-pre-wrap text-sm text-gray-800 font-mono",children:v.content}):typeof v.content=="object"&&v.content.type==="text"?e.jsx("pre",{className:"whitespace-pre-wrap text-sm text-gray-800 font-mono",children:v.content.text}):e.jsx("pre",{className:"text-sm text-gray-800 overflow-auto",children:JSON.stringify(v.content,null,2)})]},a))})]})]});try{const v=typeof y=="string"?JSON.parse(y):y;return e.jsxs("div",{className:"bg-gray-50 dark:bg-gray-800 rounded-md p-3",children:[e.jsx("div",{className:"text-xs text-gray-500 mb-2",children:t("prompt.jsonResponse")}),e.jsx("pre",{className:"text-sm text-gray-800 overflow-auto",children:JSON.stringify(v,null,2)})]})}catch{return e.jsx("div",{className:"bg-gray-50 dark:bg-gray-800 rounded-md p-3",children:e.jsx("pre",{className:"whitespace-pre-wrap text-sm text-gray-800 font-mono",children:String(y)})})}}return e.jsx("div",{className:"bg-gray-50 dark:bg-gray-800 rounded-md p-3",children:e.jsx("pre",{className:"whitespace-pre-wrap text-sm text-gray-800 font-mono",children:String(y)})})};return e.jsxs("div",{className:"border border-gray-300 rounded-lg bg-white dark:bg-gray-800 shadow-sm",children:[e.jsx("div",{className:"border-b border-gray-300 px-4 py-3 bg-gray-50 dark:bg-gray-800 rounded-t-lg",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[s.success?e.jsx(Ke,{size:20,className:"text-status-green"}):e.jsx(Ge,{size:20,className:"text-status-red"}),e.jsx("div",{children:e.jsxs("h4",{className:"text-sm font-medium text-gray-900",children:[t("prompt.execution")," ",s.success?t("prompt.successful"):t("prompt.failed")]})})]}),e.jsx("button",{onClick:n,className:"text-gray-400 hover:text-gray-600 text-sm",children:"✕"})]})}),e.jsx("div",{className:"p-4",children:s.success?e.jsx("div",{children:s.data?e.jsxs("div",{children:[e.jsx("div",{className:"text-sm text-gray-600 mb-3",children:t("prompt.result")}),r(s.data)]}):e.jsx("div",{className:"text-sm text-gray-500 italic",children:t("prompt.noContent")})}):e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-3",children:[e.jsx(Ne,{size:16,className:"text-red-500"}),e.jsx("span",{className:"text-sm font-medium text-red-700",children:t("prompt.error")})]}),e.jsx("div",{className:"bg-red-50 border border-red-300 rounded-md p-3",children:e.jsx("pre",{className:"text-sm text-red-800 whitespace-pre-wrap",children:s.error||s.message||t("prompt.unknownError")})})]})})]})},Vs=({prompt:s,server:n,readOnly:t=!1,onToggle:r,onDescriptionUpdate:y,cost:v})=>{const{t:a}=se(),{showToast:N}=Ce(),{nameSeparator:o}=Se(),[g,u]=d.useState(!1),[S,D]=d.useState(!1),[j,F]=d.useState(!1),[w,k]=d.useState(null),[E,A]=d.useState(!1),[O,J]=d.useState(!1),[R,T]=d.useState(s.description||""),K=d.useRef(null),L=d.useRef(null),[q,Y]=d.useState(0);d.useEffect(()=>{E&&K.current&&(K.current.focus(),q>0&&(K.current.style.width=`${q+20}px`))},[E,q]),d.useEffect(()=>{!E&&L.current&&Y(L.current.offsetWidth)},[E,R]),d.useEffect(()=>{T(s.description||"")},[s.description]);const x=d.useCallback(()=>`mcphub_prompt_form_${n?`${n}_`:""}${s.name}`,[s.name,n]),m=d.useCallback(()=>{localStorage.removeItem(x())},[x]),f=P=>{!t&&r&&r(s.name,P)},l=()=>{t||A(!0)},p=async()=>{if(!t){A(!1);try{const P=await ns(n,s.name,R);P.success?y&&y(s.name,R):(N(P.error||a("prompt.descriptionUpdateFailed"),"error"),T(s.description||""))}catch(P){console.error("Error updating prompt description:",P),N(a("prompt.descriptionUpdateFailed"),"error"),T(s.description||"")}}},c=async()=>{if(!t){J(!0);try{const P=await as(n,s.name);if(P.success){const U=P.description||"";T(U),A(!1),y==null||y(s.name,U,{restored:!0})}else N(P.error||a("prompt.restoreDefaultFailed"),"error")}catch(P){console.error("Error resetting prompt description:",P),N(a("prompt.restoreDefaultFailed"),"error")}finally{J(!1)}}},h=P=>{T(P.target.value)},_=P=>{P.key==="Enter"?p():P.key==="Escape"&&(T(s.description||""),A(!1))},$=async P=>{F(!0);try{const U=await rs({promptName:s.name,arguments:P},n);console.log("GetPrompt result:",U),k({success:U.success,data:U.data,error:U.error})}catch(U){k({success:!1,error:U instanceof Error?U.message:"Unknown error occurred"})}finally{F(!1)}},H=()=>{D(!1),m(),k(null)},I=()=>{k(null)},B=()=>{if(!s.arguments||s.arguments.length===0)return{type:"object",properties:{},required:[]};const P={},U=[];return s.arguments.forEach(z=>{P[z.name]={type:"string",description:z.description||""},z.required&&U.push(z.name)}),{type:"object",properties:P,required:U}};return e.jsxs("div",{className:"hub-card overflow-hidden",style:{marginBottom:8},children:[e.jsxs("div",{className:"flex justify-between items-center gap-2 px-3 py-2.5 cursor-pointer hover:bg-[var(--hub-surface-hover)] transition-colors",onClick:()=>u(!g),children:[e.jsxs("div",{className:"flex-1 min-w-0 flex items-center gap-1.5 flex-wrap",children:[e.jsx("span",{className:"hub-mono font-medium",style:{fontSize:13,color:"var(--hub-ink)"},children:s.name.replace(n+o,"")}),s.title&&e.jsx("span",{style:{fontSize:12,color:"var(--hub-ink-2)"},children:s.title}),e.jsx("span",{className:"flex items-center gap-1",style:{fontSize:12,color:"var(--hub-ink-3)"},children:E?e.jsxs(e.Fragment,{children:[e.jsx("input",{ref:K,type:"text",className:"hub-input",style:{height:26,fontSize:12,width:q>0?`${q+20}px`:160,minWidth:80},value:R,onChange:h,onKeyDown:_,onClick:P=>P.stopPropagation()}),e.jsx("button",{className:"hub-icon-btn sm",onClick:P=>{P.stopPropagation(),p()},disabled:O,children:e.jsx(ue,{size:12,style:{color:"var(--hub-ok)"}})}),e.jsx(ce,{title:a("prompt.restoreDefault"),onClick:P=>{P.stopPropagation(),c()},disabled:O,loading:O})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{ref:L,children:R||a("tool.noDescription")}),!t&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"hub-icon-btn sm",onClick:P=>{P.stopPropagation(),l()},children:e.jsx(Pe,{size:12})}),e.jsx(ce,{title:a("prompt.restoreDefault"),onClick:P=>{P.stopPropagation(),c()},disabled:O,loading:O})]})]})})]}),e.jsxs("div",{className:"flex items-center gap-1.5 flex-shrink-0",children:[v!=null&&e.jsxs("span",{className:"hub-mono flex-shrink-0",style:{fontSize:11,color:"var(--hub-ink-3)"},title:a("cost.estimate"),children:["Σ ",ae(v)]}),e.jsx("div",{onClick:P=>P.stopPropagation(),children:s.enabled!==void 0&&e.jsx(Ee,{checked:s.enabled,onCheckedChange:f,disabled:j||t})}),e.jsxs("button",{onClick:P=>{P.stopPropagation(),u(!0),D(!0)},className:"hub-btn sm",style:{color:"var(--hub-accent)"},disabled:j||!s.enabled,children:[j?e.jsx(Xe,{size:12,className:"animate-spin"}):e.jsx(Ye,{size:12}),e.jsx("span",{children:a(j?"tool.running":"tool.run")})]}),e.jsx("button",{className:"hub-icon-btn sm",children:g?e.jsx(ze,{size:14}):e.jsx(we,{size:14})})]})]}),g&&e.jsxs("div",{style:{borderTop:"1px solid var(--hub-line-2)",padding:"10px 12px",display:"flex",flexDirection:"column",gap:10},children:[S&&e.jsxs("div",{style:{border:"1px solid var(--hub-line)",borderRadius:8,padding:14},children:[e.jsx(ts,{schema:B(),onSubmit:$,onCancel:H,loading:j,storageKey:x(),title:a("prompt.runPromptWithName",{name:s.name.replace(n+o,"")})}),w&&e.jsx("div",{style:{marginTop:12},children:e.jsx(Ue,{result:w,onClose:I})})]}),!S&&s.arguments&&s.arguments.length>0&&e.jsxs("div",{style:{background:"var(--hub-bg-2)",borderRadius:7,padding:"8px 12px",border:"1px solid var(--hub-line)"},children:[e.jsx("div",{className:"hub-sect",style:{marginBottom:6},children:a("tool.parameters")}),e.jsx("div",{style:{display:"flex",flexDirection:"column",gap:6},children:s.arguments.map((P,U)=>e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"hub-mono",style:{fontSize:12.5,color:"var(--hub-ink)"},children:P.name}),P.required&&e.jsx("span",{style:{color:"var(--hub-err)",fontSize:12},children:"*"})]}),P.description&&e.jsx("p",{style:{fontSize:12,color:"var(--hub-ink-3)",margin:"2px 0 0"},children:P.description})]}),P.title&&e.jsx("span",{style:{fontSize:11,color:"var(--hub-ink-3)"},children:P.title})]},U))})]}),!S&&w&&e.jsx("div",{children:e.jsx(Ue,{result:w,onClose:I})})]})]})},Js=({resource:s,readOnly:n=!1,onToggle:t,onDescriptionUpdate:r,cost:y})=>{const{t:v}=se(),[a,N]=d.useState(!1),[o,g]=d.useState(!1),[u,S]=d.useState(!1),[D,j]=d.useState(s.description||""),F=d.useRef(null),w=d.useRef(null),[k,E]=d.useState(0);d.useEffect(()=>{o&&F.current&&(F.current.focus(),k>0&&(F.current.style.width=`${k+20}px`))},[o,k]),d.useEffect(()=>{!o&&w.current&&E(w.current.offsetWidth)},[o,D]),d.useEffect(()=>{j(s.description||"")},[s.description]);const A=T=>{!n&&t&&t(s.uri,T)},O=async()=>{n||(g(!1),r&&await r(s.uri,D))},J=async()=>{if(!n){S(!0);try{await(r==null?void 0:r(s.uri,"",{restored:!0})),g(!1)}finally{S(!1)}}},R=T=>{T.key==="Enter"?O():T.key==="Escape"&&(j(s.description||""),g(!1))};return e.jsxs("div",{className:"hub-card overflow-hidden",style:{marginBottom:8},children:[e.jsxs("div",{className:"flex justify-between items-center gap-2 px-3 py-2.5 cursor-pointer hover:bg-[var(--hub-surface-hover)] transition-colors",onClick:()=>N(!a),children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-1.5 flex-wrap",children:[e.jsx("span",{className:"hub-mono font-medium truncate",style:{fontSize:13,color:"var(--hub-ink)"},children:s.name||s.uri}),e.jsx("span",{className:"hub-mono truncate",style:{fontSize:11.5,color:"var(--hub-ink-3)"},children:s.uri})]}),e.jsx("span",{className:"flex items-center gap-1 mt-0.5",style:{fontSize:12,color:"var(--hub-ink-3)"},children:o?e.jsxs(e.Fragment,{children:[e.jsx("input",{ref:F,type:"text",className:"hub-input",style:{height:26,fontSize:12,width:k>0?`${k+20}px`:160,minWidth:80},value:D,onChange:T=>j(T.target.value),onKeyDown:R,onClick:T=>T.stopPropagation()}),e.jsx("button",{className:"hub-icon-btn sm",onClick:T=>{T.stopPropagation(),O()},disabled:u,children:e.jsx(ue,{size:12,style:{color:"var(--hub-ok)"}})}),e.jsx(ce,{title:v("builtinResources.restoreDefault"),onClick:T=>{T.stopPropagation(),J()},disabled:u,loading:u})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{ref:w,children:D||v("tool.noDescription")}),!n&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"hub-icon-btn sm",onClick:T=>{T.stopPropagation(),g(!0)},children:e.jsx(Pe,{size:12})}),e.jsx(ce,{title:v("builtinResources.restoreDefault"),onClick:T=>{T.stopPropagation(),J()},disabled:u,loading:u})]})]})})]}),e.jsxs("div",{className:"flex items-center gap-1.5 flex-shrink-0",children:[y!=null&&e.jsxs("span",{className:"hub-mono flex-shrink-0",style:{fontSize:11,color:"var(--hub-ink-3)"},title:v("cost.estimate"),children:["Σ ",ae(y)]}),e.jsx("div",{onClick:T=>T.stopPropagation(),children:e.jsx(Ee,{checked:s.enabled!==!1,onCheckedChange:A,disabled:n})}),e.jsx("button",{className:"hub-icon-btn sm",children:a?e.jsx(ze,{size:14}):e.jsx(we,{size:14})})]})]}),a&&e.jsxs("div",{style:{borderTop:"1px solid var(--hub-line-2)",padding:"8px 12px"},children:[e.jsxs("span",{className:"hub-sect",children:[v("builtinResources.mimeType"),":"]})," ",e.jsx("span",{style:{fontSize:12,color:"var(--hub-ink-2)"},children:s.mimeType||"text/plain"})]})]})},Us=(s,n)=>n?n.isAdmin?!0:!!(s.owner&&s.owner===n.username):!1,Bs={private:{shortKey:"server.visibilityPrivateShort",shortFallback:"Private",longKey:"server.visibilityPrivate",longFallback:"Private — only the owner and admins",className:"bg-[var(--hub-bg-2)] text-[var(--hub-ink-2)] border-[var(--hub-line-2)]"},group:{shortKey:"server.visibilityGroupShort",shortFallback:"Group",longKey:"server.visibilityGroup",longFallback:"Group (reserved — not yet implemented)",className:"bg-[oklch(0.97_0.02_85)] text-[oklch(0.45_0.07_85)] border-[oklch(0.88_0.04_85)]"},public:{shortKey:"server.visibilityPublicShort",shortFallback:"Public",longKey:"server.visibilityPublic",longFallback:"Public — every authenticated user",className:"bg-[oklch(0.97_0.03_145)] text-[oklch(0.42_0.12_145)] border-[oklch(0.88_0.04_145)]"}},Te=s=>s==="public"||s==="group"?s:"private",Ws=(s,n)=>{const t=Te(n),r=Bs[t];return{value:t,shortLabel:s(r.shortKey,{defaultValue:r.shortFallback}),longLabel:s(r.longKey,{defaultValue:r.longFallback}),className:r.className}},Ls=(s,n)=>{const t=Te(n),r=[{value:"private",label:s("server.visibilityPrivateShort",{defaultValue:"Private"}),disabled:!1}];return t==="group"&&r.push({value:"group",label:s("server.visibilityGroupShort",{defaultValue:"Group"}),disabled:!0}),r.push({value:"public",label:s("server.visibilityPublicShort",{defaultValue:"Public"}),disabled:!1}),r},Be=({isLoading:s,children:n,className:t,overlayStyle:r,spinnerSize:y=12})=>e.jsxs("div",{className:t?`relative flex items-center ${t}`:"relative flex items-center","aria-busy":s,children:[e.jsx("div",{className:"flex w-full items-center justify-center",style:{visibility:s?"hidden":"visible",pointerEvents:s?"none":"auto"},children:n}),s&&e.jsx("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center",style:{background:"var(--hub-surface)",border:"1px solid var(--hub-line-2)",borderRadius:8,...r},children:e.jsx(je,{size:y,className:"animate-spin",style:{color:"var(--hub-ink-3)"}})})]}),We=({icon:s})=>e.jsx("span",{className:"hub-server-capability-icon","aria-hidden":"true",children:e.jsx(s,{size:11.5,strokeWidth:1.9,className:"block"})}),Le=(s,n)=>n?n==="stdio"?s("server.typeStdio")||"stdio":n==="sse"?s("server.typeSse")||"sse":n==="streamable-http"?s("server.typeStreamableHttp")||"http":n==="openapi"?s("server.typeOpenapi")||"openapi":n:null,qs="text/html;profile=mcp-app",qe=s=>s?!!(s.ui||s["ui/resourceUri"]):!1,Hs=s=>{var n,t;return!!((n=s.tools)!=null&&n.some(r=>qe(r._meta))||(t=s.resources)!=null&&t.some(r=>{var y;return((y=r.uri)==null?void 0:y.startsWith("ui://"))||r.mimeType===qs||qe(r._meta)}))},Ks=({server:s,cost:n,onRemove:t,onEdit:r,onToggle:y,onVisibilityChange:v,onRefresh:a,onReload:N})=>{var Fe,Ie,$e,Re,_e,Ae,Oe,Me,Ve,Je;const{t:o}=se(),{showToast:g}=Ce(),{exportMCPSettings:u,installConfig:S}=Se(),{auth:D}=ds(),j=((Fe=S==null?void 0:S.baseUrl)==null?void 0:Fe.replace(/\/+$/,""))||"",[F,w]=d.useState(!1),[k,E]=d.useState(null),[A,O]=d.useState(!1),[J,R]=d.useState(!1),[T,K]=d.useState(!1),[L,q]=d.useState(!1),[Y,x]=d.useState(!1),[m,f]=d.useState(!1),[l,p]=d.useState(!1),c=d.useRef(null),h=d.useRef(null);d.useEffect(()=>{const i=b=>{c.current&&!c.current.contains(b.target)&&x(!1),h.current&&!h.current.contains(b.target)&&f(!1)};return document.addEventListener("mousedown",i),()=>document.removeEventListener("mousedown",i)},[]);const _=((Ie=s.tools)==null?void 0:Ie.length)||0,$=(($e=s.tools)==null?void 0:$e.filter(i=>i.enabled!==!1).length)||0,H=((Re=s.prompts)==null?void 0:Re.length)||0,I=((_e=s.prompts)==null?void 0:_e.filter(i=>i.enabled!==!1).length)||0,B=((Ae=s.resources)==null?void 0:Ae.length)||0,P=((Oe=s.resources)==null?void 0:Oe.filter(i=>i.enabled!==!1).length)||0,U=Hs(s),z=async i=>{if(i.stopPropagation(),!(!Q||J||!y)){R(!0);try{await y(s,s.enabled===!1)}finally{R(!1)}}},W=async i=>{if(i.stopPropagation(),x(!1),!(!Q||L||!N)){q(!0);try{await N(s)?g(o("server.reloadSuccess")||"Server reloaded successfully","success"):g(o("server.reloadError",{serverName:s.name})||"Failed to reload","error")}finally{q(!1)}}},ie=async i=>{var C;if(i.stopPropagation(),!Q||T||!v)return;const b=i.target.value;if(b!==Te(s.visibility??((C=s.config)==null?void 0:C.visibility))){K(!0);try{await v(s,b)}finally{K(!1)}}},ne=async i=>{try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(i),!0}catch{}try{const b=document.createElement("textarea");b.value=i,b.style.position="fixed",b.style.left="-9999px",document.body.appendChild(b),b.focus(),b.select();const C=document.execCommand("copy");return document.body.removeChild(b),C}catch{return!1}},me=async i=>{if(i.stopPropagation(),!s.error)return;await ne(s.error)?(p(!0),g(o("common.copySuccess")||"Copied","success"),setTimeout(()=>p(!1),1500)):g(o("common.copyFailed")||"Copy failed","error")},pe=async i=>{if(i.stopPropagation(),x(!1),!!Q)try{const b=await u(s.name);if(!b||!b.success||!b.data){g((b==null?void 0:b.message)||o("common.copyFailed")||"Copy failed","error");return}const C=JSON.stringify(b.data,null,2),V=await ne(C);g(V?o("common.copySuccess")||"Copied":o("common.copyFailed")||"Copy failed",V?"success":"error")}catch(b){console.error("Error copying server configuration:",b),g(o("common.copyFailed")||"Copy failed","error")}},M=i=>{var b;if(i.stopPropagation(),(b=s.oauth)!=null&&b.authorizationUrl){const te=window.screen.width/2-300,le=window.screen.height/2-700/2;window.open(s.oauth.authorizationUrl,"OAuth Authorization",`width=600,height=700,left=${te},top=${le}`),g(o("status.oauthWindowOpened"),"info")}},X=async(i,b)=>{try{const{toggleTool:C}=await fe(async()=>{const{toggleTool:te}=await Promise.resolve().then(()=>Is);return{toggleTool:te}},void 0,import.meta.url),V=await C(s.name,i,b);V.success?(g(o(b?"tool.enableSuccess":"tool.disableSuccess",{name:i}),"success"),a==null||a()):g(V.error||o("tool.toggleFailed"),"error")}catch(C){console.error(C),g(o("tool.toggleFailed"),"error")}},ee=async(i,b)=>{try{const{togglePrompt:C}=await fe(async()=>{const{togglePrompt:te}=await Promise.resolve().then(()=>Ms);return{togglePrompt:te}},void 0,import.meta.url),V=await C(s.name,i,b);V.success?(g(o(b?"tool.enableSuccess":"tool.disableSuccess",{name:i}),"success"),a==null||a()):g(V.error||o("tool.toggleFailed"),"error")}catch(C){console.error(C),g(o("tool.toggleFailed"),"error")}},xe=async(i,b)=>{try{const{toggleResource:C}=await fe(async()=>{const{toggleResource:te}=await import("./resourceService-CA1x5Ugz.js");return{toggleResource:te}},__vite__mapDeps([0,1,2,3,4,5]),import.meta.url),V=await C(s.name,i,b);V.success?(g(o(b?"tool.enableSuccess":"tool.disableSuccess",{name:i}),"success"),a==null||a()):g(V.error||o("tool.toggleFailed"),"error")}catch(C){console.error(C),g(o("tool.toggleFailed"),"error")}},he=(i,b,C)=>{g(C!=null&&C.restored?o("tool.restoreDefaultSuccess"):o("tool.descriptionUpdateSuccess"),"success"),a==null||a()},be=(i,b,C)=>{g(C!=null&&C.restored?o("prompt.restoreDefaultSuccess"):o("prompt.descriptionUpdateSuccess"),"success"),a==null||a()},G=async(i,b,C)=>{try{const{updateResourceDescription:V,resetResourceDescription:te}=await fe(async()=>{const{updateResourceDescription:is,resetResourceDescription:ls}=await import("./resourceService-CA1x5Ugz.js");return{updateResourceDescription:is,resetResourceDescription:ls}},__vite__mapDeps([0,1,2,3,4,5]),import.meta.url),le=C!=null&&C.restored?await te(s.name,i):await V(s.name,i,b);le.success?(g(C!=null&&C.restored?o("builtinResources.restoreDefaultSuccess"):o("builtinResources.descriptionUpdateSuccess"),"success"),a==null||a()):g(le.error||(C!=null&&C.restored?o("builtinResources.restoreDefaultFailed"):o("builtinResources.descriptionUpdateFailed")),"error")}catch(V){console.error(V),g(C!=null&&C.restored?o("builtinResources.restoreDefaultFailed"):o("builtinResources.descriptionUpdateFailed"),"error")}};(()=>{var C;const i=s.config;if(!i)return"";if(i.url)return i.url;const b=[];return i.command&&b.push(i.command),(C=i.args)!=null&&C.length&&b.push(...i.args),b.join(" ")})();const Z=s.enabled!==!1,Q=Us(s,D.user),de=`${j}/mcp/${s.name}`,ge=(i,b)=>o(i,b),re=Ws(ge,s.visibility??((Me=s.config)==null?void 0:Me.visibility)),os=Ls(ge,re.value),De=[{key:"tools",icon:fs,total:_,enabled:$,label:o("server.tools")},{key:"prompts",icon:ys,total:H,enabled:I,label:o("server.prompts")},{key:"resources",icon:js,total:B,enabled:P,label:o("nav.resources")}];return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"hub-card overflow-visible",style:{marginBottom:10,opacity:Z?1:.7},children:[e.jsxs("div",{className:"hub-server-card-row cursor-pointer px-4 py-3 transition-colors hover:bg-[var(--hub-surface-hover)]",onClick:()=>w(!F),children:[e.jsxs("div",{className:"flex items-center gap-2.5 min-w-0",children:[e.jsx(we,{size:12,style:{color:"var(--hub-ink-3)",transform:F?"rotate(90deg)":"none",transition:"transform 0.15s",flexShrink:0}}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"hub-mono truncate",style:{fontSize:13.5,color:Z?"var(--hub-ink)":"var(--hub-ink-3)"},children:s.name}),U&&e.jsx("span",{className:"hub-tag accent flex-shrink-0",title:o("server.mcpApp"),children:"App"}),s.error&&e.jsxs("div",{className:"relative",ref:h,children:[e.jsx("button",{onClick:i=>{i.stopPropagation(),f(b=>!b)},className:"text-[var(--hub-err)] hover:opacity-80","aria-label":o("server.viewErrorDetails"),children:e.jsx(Ne,{size:14})}),m&&e.jsxs("div",{className:"absolute z-20 mt-1.5 hub-card",style:{left:0,top:"100%",width:460,maxHeight:320,overflow:"hidden",boxShadow:"0 8px 24px rgba(0,0,0,0.08)"},onClick:i=>i.stopPropagation(),children:[e.jsxs("div",{className:"flex items-center justify-between px-3 py-2",style:{borderBottom:"1px solid var(--hub-line-2)"},children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-[12px] font-medium",style:{color:"var(--hub-err)"},children:o("server.errorDetails")}),e.jsx("button",{onClick:me,className:"hub-icon-btn sm",title:o("common.copy"),children:l?e.jsx(ue,{size:12,className:"text-[var(--hub-ok)]"}):e.jsx(ye,{size:12})})]}),e.jsx("button",{onClick:()=>f(!1),className:"hub-icon-btn sm","aria-label":o("app.closeButton"),children:e.jsx(ke,{size:12})})]}),e.jsx("div",{className:"p-3 overflow-auto hub-mono",style:{maxHeight:260,fontSize:12},children:e.jsx("pre",{className:"whitespace-pre-wrap break-words m-0",style:{color:"var(--hub-ink-2)"},children:s.error})})]})]})]}),((Ve=s.config)==null?void 0:Ve.description)&&e.jsx("div",{className:"text-[11.5px] truncate",style:{color:"var(--hub-ink-3)",marginTop:1},title:s.config.description,children:s.config.description})]})]}),e.jsx("div",{className:"min-w-0",children:e.jsx(bs,{status:s.status,enabled:s.enabled,onAuthClick:M,className:"hub-server-card-status"})}),e.jsx("div",{className:"min-w-0",children:(Je=s.config)!=null&&Je.type?e.jsx("span",{className:"hub-tag hub-server-card-transport-tag",title:Le(o,s.config.type)??void 0,children:Le(o,s.config.type)}):e.jsx("span",{style:{color:"var(--hub-ink-3)",fontSize:12},children:"—"})}),e.jsx("div",{className:"hub-server-card-visibility min-w-0",onClick:i=>i.stopPropagation(),children:Q&&v?e.jsx(Be,{isLoading:T,className:"w-full",overlayStyle:{borderRadius:6},children:e.jsx("select",{value:re.value,onChange:ie,disabled:T,className:"hub-server-card-select w-full rounded-md border px-2 py-1 text-[11.5px] bg-[var(--hub-surface)] text-[var(--hub-ink)]",style:{borderColor:"var(--hub-line-2)"},"aria-label":o("server.visibility","Visibility"),title:re.longLabel,children:os.map(i=>e.jsx("option",{value:i.value,disabled:i.disabled,children:i.label},i.value))})}):e.jsx("span",{className:`hub-server-card-visibility-badge inline-flex items-center rounded-md border px-2 py-0.5 text-[11.5px] ${re.className}`,title:re.longLabel,children:re.shortLabel})}),De.map(({key:i,icon:b,total:C,enabled:V,label:te})=>{const le=C===0;return e.jsxs("span",{className:`hub-server-capability-stat hub-mono hub-num ${le?"is-empty":""}`,title:`${te}: ${V}/${C}`,children:[e.jsx("span",{className:"text-[var(--hub-ink-3)]",children:e.jsx(We,{icon:b})}),e.jsx("span",{className:"hub-server-capability-value",children:le?"0":`${V}/${C}`})]},i)}),n&&n.connected?e.jsxs("span",{className:"hub-server-capability-stat hub-mono hub-num",title:`${o("cost.exposed")} ${n.exposed} / ${o("cost.gross")} ${n.gross} · ${o("cost.estimate")}`,children:[e.jsx("span",{className:"text-[var(--hub-ink-3)]",children:"Σ"}),e.jsxs("span",{className:"hub-server-capability-value",children:[ae(n.exposed),"/",ae(n.gross)]})]}):n?e.jsx("span",{className:"hub-server-capability-stat hub-mono is-empty",title:o("cost.notConnected"),children:e.jsx("span",{className:"hub-server-capability-value",children:"—"})}):null,e.jsx("div",{className:"flex items-center justify-center",children:e.jsx(Be,{isLoading:J,className:"h-[18px] w-[30px]",overlayStyle:{borderRadius:999,background:"var(--hub-bg-2)"},spinnerSize:10,children:e.jsx("button",{type:"button",className:"hub-switch"+(Z?" on":""),onClick:z,disabled:J||!Q,"aria-label":o(Z?"server.disable":"server.enable")})})}),e.jsxs("div",{className:"relative",ref:c,children:[Q&&e.jsx("button",{className:"hub-icon-btn",onClick:i=>{i.stopPropagation(),x(b=>!b)},"aria-label":"More",children:e.jsx(vs,{size:14})}),Q&&Y&&e.jsxs("div",{className:"absolute right-0 top-full mt-1 z-20 hub-card",style:{minWidth:160,padding:4},onClick:i=>i.stopPropagation(),children:[e.jsxs("button",{onClick:i=>{i.stopPropagation(),x(!1),r(s)},className:"flex items-center gap-2 w-full px-2.5 py-1.5 text-[13px] rounded-md hover:bg-[var(--hub-surface-hover)] text-left",style:{color:"var(--hub-ink)"},children:[e.jsx(Ns,{size:13})," ",o("server.edit")]}),e.jsxs("button",{onClick:pe,className:"flex items-center gap-2 w-full px-2.5 py-1.5 text-[13px] rounded-md hover:bg-[var(--hub-surface-hover)] text-left",style:{color:"var(--hub-ink)"},children:[e.jsx(ye,{size:13})," ",o("server.copy")]}),N&&e.jsxs("button",{onClick:W,disabled:L||J||!Z,className:"flex items-center gap-2 w-full px-2.5 py-1.5 text-[13px] rounded-md hover:bg-[var(--hub-surface-hover)] text-left disabled:opacity-50 disabled:cursor-not-allowed",style:{color:"var(--hub-ink)"},children:[e.jsx(je,{size:13})," ",o("server.reload")]}),e.jsx("div",{style:{height:1,background:"var(--hub-line-2)",margin:"4px 0"}}),e.jsxs("button",{onClick:i=>{i.stopPropagation(),x(!1),O(!0)},className:"flex items-center gap-2 w-full px-2.5 py-1.5 text-[13px] rounded-md hover:bg-[var(--hub-surface-hover)] text-left",style:{color:"var(--hub-err)"},children:[e.jsx(ws,{size:13})," ",o("server.delete")]})]})]})]}),F&&e.jsxs("div",{style:{borderTop:"1px solid var(--hub-line-2)",background:"var(--hub-bg-2)",padding:"14px 16px 16px 38px"},children:[e.jsxs("div",{className:"flex items-center gap-1 mb-2 flex-wrap",children:[De.map(i=>{const b=k===i.key,C=i.icon;return e.jsxs("button",{onClick:()=>E(b?null:i.key),className:"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-md text-[12px] transition-colors hover:bg-[var(--hub-surface-hover)]",style:{background:b?"var(--hub-surface)":"transparent",border:"1px solid "+(b?"var(--hub-line)":"transparent"),color:b?"var(--hub-ink)":"var(--hub-ink-2)"},children:[e.jsx(We,{icon:C}),e.jsx("span",{children:i.label}),e.jsx("span",{className:"hub-mono hub-num",style:{color:"var(--hub-ink-3)",fontSize:11},children:i.total===0?"0":`${i.enabled}/${i.total}`})]},i.key)}),n&&n.connected&&e.jsxs("button",{onClick:()=>E(k==="cost"?null:"cost"),className:"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-md text-[12px] transition-colors hover:bg-[var(--hub-surface-hover)]",style:{background:k==="cost"?"var(--hub-surface)":"transparent",border:"1px solid "+(k==="cost"?"var(--hub-line)":"transparent"),color:k==="cost"?"var(--hub-ink)":"var(--hub-ink-2)"},title:o("cost.estimate"),children:[e.jsx("span",{style:{color:"var(--hub-ink-3)"},children:"Σ"}),e.jsx("span",{children:o("cost.totalFootprint")}),e.jsxs("span",{className:"hub-mono hub-num",style:{color:"var(--hub-ink-3)",fontSize:11},children:[ae(n.exposed),"/",ae(n.gross)]})]}),e.jsx("div",{className:"ml-auto max-w-full flex-shrink-0",children:e.jsxs("div",{className:"hub-endpoint",style:{height:26},children:[e.jsx("div",{className:"hub-endpoint-label",children:"/mcp/"}),e.jsx("div",{className:"hub-endpoint-url",title:de,style:{maxWidth:200},children:s.name}),e.jsx("button",{type:"button",className:"hub-endpoint-copy",onClick:async i=>{i.stopPropagation();const b=await ne(de);g(b?o("common.copySuccess")||"Copied":o("common.copyFailed")||"Failed",b?"success":"error")},title:o("common.copy"),children:e.jsx(ye,{size:12})})]})})]}),k==="cost"&&(n==null?void 0:n.connected)&&e.jsx("div",{className:"mt-2 space-y-1",children:[...n.items].sort((i,b)=>b.cost-i.cost).map(i=>e.jsxs("div",{className:"flex items-center justify-between hub-mono",style:{fontSize:11.5,color:i.enabled?"var(--hub-ink-2)":"var(--hub-ink-3)"},children:[e.jsx("span",{className:"truncate",children:i.name}),e.jsx("span",{className:"hub-num flex-shrink-0",children:ae(i.cost)})]},`${i.kind}:${i.name}`))}),k==="tools"&&s.tools&&e.jsx("div",{className:"space-y-3 mt-2",children:s.tools.map((i,b)=>{var C;return e.jsx(_s,{server:s.name,tool:i,readOnly:!Q,onToggle:X,onDescriptionUpdate:he,cost:(C=n==null?void 0:n.items.find(V=>V.kind==="tool"&&V.name===i.name))==null?void 0:C.cost},b)})}),k==="prompts"&&s.prompts&&e.jsx("div",{className:"space-y-3 mt-2",children:s.prompts.map((i,b)=>{var C;return e.jsx(Vs,{server:s.name,prompt:i,readOnly:!Q,onToggle:ee,onDescriptionUpdate:be,cost:(C=n==null?void 0:n.items.find(V=>V.kind==="prompt"&&V.name===i.name))==null?void 0:C.cost},b)})}),k==="resources"&&s.resources&&e.jsx("div",{className:"mt-2",children:s.resources.length===0?e.jsx("div",{className:"text-sm",style:{color:"var(--hub-ink-3)"},children:o("builtinResources.noResources")}):e.jsx("div",{className:"space-y-3",children:s.resources.map((i,b)=>{var C;return e.jsx(Js,{resource:i,readOnly:!Q,onToggle:xe,onDescriptionUpdate:G,cost:(C=n==null?void 0:n.items.find(V=>V.kind==="resource"&&V.name===i.uri))==null?void 0:C.cost},`${i.uri}-${b}`)})})})]})]}),e.jsx(Ps,{isOpen:A,onClose:()=>O(!1),onConfirm:()=>{t(s.name),O(!1)},serverName:s.name})]})},Gs=({onAdd:s})=>{const{t:n}=se(),[t,r]=d.useState(!1),[y,v]=d.useState(null),[a,N]=d.useState(!1),[o,g]=d.useState(null),[u,S]=d.useState([]),D=()=>{r(!t),v(null),N(!1),g(null)},j=async()=>{o&&(await F(o),N(!1),g(null))},F=async k=>{try{v(null);const E=await oe("/servers",k);if(!E.success){E&&E.message?v(E.message):v(n("server.addError"));return}r(!1),s()}catch(E){console.error("Error adding server:",E),navigator.onLine?E instanceof TypeError&&(E.message.includes("NetworkError")||E.message.includes("Failed to fetch"))?v(n("errors.serverConnection")):v(n("errors.serverAdd")):v(n("errors.network"))}},w=async k=>{try{const E=zs(k);E.length>0?(S(E),g(k),N(!0)):await F(k)}catch(E){console.error("Error processing server submission:",E),v(n("errors.serverAdd"))}};return e.jsxs("div",{children:[e.jsxs("button",{onClick:D,className:"hub-btn primary",children:[e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-3.5 w-3.5",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M10 3a1 1 0 011 1v5h5a1 1 0 110 2h-5v5a1 1 0 11-2 0v-5H4a1 1 0 110-2h5V4a1 1 0 011-1z",clipRule:"evenodd"})}),n("server.add")]}),t&&e.jsx("div",{className:"fixed inset-0 bg-black/50 z-50 flex items-center justify-center p-4",children:e.jsx(Ze,{onSubmit:w,onCancel:D,modalTitle:n("server.addServer"),formError:y})}),a&&e.jsx("div",{className:"fixed inset-0 bg-black/50 z-[60] flex items-center justify-center p-4",children:e.jsxs("div",{className:"hub-card p-6 w-full max-w-md",children:[e.jsx("h3",{className:"text-lg font-semibold text-gray-900 mb-4",children:n("server.confirmVariables")}),e.jsx("p",{className:"text-gray-600 mb-4",children:n("server.variablesDetected")}),e.jsx("div",{className:"bg-yellow-50 border border-yellow-200 rounded p-3 mb-4",children:e.jsxs("div",{className:"flex items-start",children:[e.jsx("div",{className:"flex-shrink-0",children:e.jsx("svg",{className:"h-5 w-5 text-yellow-400",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z",clipRule:"evenodd"})})}),e.jsxs("div",{className:"ml-3",children:[e.jsxs("h4",{className:"text-sm font-medium text-yellow-800",children:[n("server.detectedVariables"),":"]}),e.jsx("ul",{className:"mt-1 text-sm text-yellow-700",children:u.map((k,E)=>e.jsxs("li",{className:"font-mono",children:["$",`{${k}}`]},E))})]})]})}),e.jsx("p",{className:"text-gray-600 text-sm mb-6",children:n("server.confirmVariablesMessage")}),e.jsxs("div",{className:"flex justify-end space-x-3",children:[e.jsx("button",{onClick:()=>{N(!1),g(null)},className:"hub-btn",children:n("common.cancel")}),e.jsx("button",{onClick:j,className:"hub-btn primary",children:n("server.confirmAndAdd")})]})]})})]})},Xs=({server:s,onEdit:n,onCancel:t})=>{const{t:r}=se(),[y,v]=d.useState(null),a=async N=>{try{v(null);const o=encodeURIComponent(s.name),g=N.name&&N.name!==s.name,u={config:N.config,...g?{newName:N.name}:{}},S=await ve(`/servers/${o}`,u);if(!S.success){S&&S.message?v(S.message):v(r("server.updateError",{serverName:s.name}));return}n()}catch(o){console.error("Error updating server:",o),navigator.onLine?o instanceof TypeError&&(o.message.includes("NetworkError")||o.message.includes("Failed to fetch"))?v(r("errors.serverConnection")):v(r("errors.serverUpdate",{serverName:s.name})):v(r("errors.network"))}};return e.jsx("div",{className:"fixed inset-0 bg-black/50 z-50 flex items-center justify-center p-4",children:e.jsx(Ze,{onSubmit:a,onCancel:t,initialData:s,modalTitle:r("server.editTitle",{serverName:s.name}),formError:y})})},Ys=({onSuccess:s,onCancel:n})=>{const{t}=se(),[r,y]=d.useState(!1),[v,a]=d.useState(!1),[N,o]=d.useState(null),[g,u]=d.useState(null),[S,D]=d.useState(!1),[j,F]=d.useState(null),[w,k]=d.useState(""),[E,A]=d.useState(!1),[O,J]=d.useState(""),R=l=>{l.preventDefault(),y(!0)},T=l=>{l.preventDefault(),y(!1)},K=l=>{l.preventDefault(),y(!1);const p=l.dataTransfer.files;if(p.length>0){const c=p[0];c.name.endsWith(".mcpb")?(u(c),o(null)):o(t("mcpb.invalidFileType"))}},L=l=>{const p=l.target.files;if(p&&p.length>0){const c=p[0];c.name.endsWith(".mcpb")?(u(c),o(null)):o(t("mcpb.invalidFileType"))}},q=async()=>{if(!g){o(t("mcpb.noFileSelected"));return}a(!0),o(null);try{const l=new FormData;l.append("mcpbFile",g);const p=await ms(ps("/mcpb/upload"),{method:"POST",body:l}),c=await p.json();if(!p.ok)throw new Error(c.message||`HTTP error! Status: ${p.status}`);if(c.success&&c.data)F(c.data.manifest),k(c.data.extractDir),D(!0);else throw new Error(c.message||t("mcpb.uploadFailed"))}catch(l){console.error("MCPB upload error:",l),o(l instanceof Error?l.message:t("mcpb.uploadFailed"))}finally{a(!1)}},Y=async(l,p=!1)=>{var c;a(!0),o(null);try{const h=f(j,w,l);if(!p){const $=await us("/servers");if($.success&&((c=$.data)==null?void 0:c.find(I=>I.name===l))){J(l),A(!0),a(!1);return}}let _;if(p?_=await ve(`/servers/${encodeURIComponent(l)}`,{name:l,config:h}):_=await oe("/servers",{name:l,config:h}),_.success)s(h);else throw new Error(_.message||t("mcpb.installFailed"))}catch(h){console.error("MCPB install error:",h),o(h instanceof Error?h.message:t("mcpb.installFailed")),a(!1)}},x=()=>{A(!1),O&&Y(O,!0)},m=()=>{A(!1),J(""),a(!1)},f=(l,p,c)=>{var $;const h=(($=l.server)==null?void 0:$.mcp_config)||{},_={type:"stdio",command:h.command||"node",args:(h.args||[]).map(H=>H.replace("${__dirname}",p))};return h.env&&Object.keys(h.env).length>0&&(_.env={...h.env},Object.keys(_.env).forEach(H=>{typeof _.env[H]=="string"&&(_.env[H]=_.env[H].replace("${__dirname}",p))})),_};return S&&j?e.jsxs(e.Fragment,{children:[e.jsx(Ts,{isOpen:E,onClose:m,onConfirm:x,title:t("mcpb.serverExistsTitle"),message:t("mcpb.serverExistsConfirm",{serverName:O}),confirmText:t("mcpb.override"),cancelText:t("common.cancel"),variant:"warning"}),e.jsx("div",{className:`fixed inset-0 bg-black/50 z-50 flex items-center justify-center p-4 ${E?"opacity-50 pointer-events-none":""}`,children:e.jsxs("div",{className:"bg-white dark:bg-gray-800 shadow rounded-lg p-6 w-full max-w-3xl max-h-screen overflow-y-auto",children:[e.jsxs("div",{className:"flex justify-between items-center mb-6",children:[e.jsx("h2",{className:"text-xl font-semibold text-gray-900",children:t("mcpb.installServer")}),e.jsx("button",{onClick:n,className:"text-gray-500 hover:text-gray-700",children:"✕"})]}),N&&e.jsx("div",{className:"mb-4 bg-red-50 border-l-4 border-red-500 p-4 rounded",children:e.jsx("p",{className:"text-red-700",children:N})}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"bg-gray-50 dark:bg-gray-800 p-4 rounded-lg",children:[e.jsx("h3",{className:"font-medium text-gray-900 mb-2",children:t("mcpb.extensionInfo")}),e.jsxs("div",{className:"space-y-2 text-sm",children:[e.jsxs("div",{children:[e.jsxs("strong",{children:[t("mcpb.name"),":"]})," ",j.display_name||j.name]}),e.jsxs("div",{children:[e.jsxs("strong",{children:[t("mcpb.version"),":"]})," ",j.version]}),e.jsxs("div",{children:[e.jsxs("strong",{children:[t("mcpb.description"),":"]})," ",j.description]}),j.author&&e.jsxs("div",{children:[e.jsxs("strong",{children:[t("mcpb.author"),":"]})," ",j.author.name]}),j.tools&&j.tools.length>0&&e.jsxs("div",{children:[e.jsxs("strong",{children:[t("mcpb.tools"),":"]}),e.jsx("ul",{className:"list-disc list-inside ml-4",children:j.tools.map((l,p)=>e.jsxs("li",{children:[l.name," - ",l.description]},p))})]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:t("mcpb.serverName")}),e.jsx("input",{type:"text",id:"serverName",defaultValue:j.name,className:"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 form-input",placeholder:t("mcpb.serverNamePlaceholder")})]}),e.jsxs("div",{className:"flex justify-end space-x-4",children:[e.jsx("button",{onClick:n,disabled:v,className:"hub-btn",children:t("common.cancel")}),e.jsx("button",{onClick:()=>{const l=document.getElementById("serverName"),p=(l==null?void 0:l.value.trim())||j.name;Y(p)},disabled:v,className:"hub-btn primary",children:v?e.jsxs(e.Fragment,{children:[e.jsxs("svg",{className:"animate-spin h-4 w-4 mr-2",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),t("mcpb.installing")]}):t("mcpb.install")})]})]})]})})]}):e.jsx("div",{className:"fixed inset-0 bg-black/50 z-50 flex items-center justify-center p-4",children:e.jsxs("div",{className:"bg-white dark:bg-gray-800 shadow rounded-lg p-6 w-full max-w-lg",children:[e.jsxs("div",{className:"flex justify-between items-center mb-6",children:[e.jsx("h2",{className:"text-xl font-semibold text-gray-900",children:t("mcpb.uploadTitle")}),e.jsx("button",{onClick:n,className:"text-gray-500 hover:text-gray-700",children:"✕"})]}),N&&e.jsx("div",{className:"mb-4 bg-red-50 border-l-4 border-red-500 p-4 rounded",children:e.jsx("p",{className:"text-red-700",children:N})}),e.jsxs("div",{className:`relative border-2 border-dashed rounded-lg p-8 text-center transition-colors ${r?"border-blue-500 bg-blue-50":g?"border-gray-500 ":"border-gray-300 hover:border-gray-400"}`,onDragOver:R,onDragLeave:T,onDrop:K,children:[g?e.jsxs("div",{className:"space-y-2",children:[e.jsx("svg",{className:"mx-auto h-12 w-12 text-green-200",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})}),e.jsx("p",{className:"text-sm text-gray-900 font-medium",children:g.name}),e.jsxs("p",{className:"text-xs text-gray-500",children:[(g.size/1024/1024).toFixed(2)," MB"]})]}):e.jsxs("div",{className:"space-y-2",children:[e.jsx("svg",{className:"mx-auto h-12 w-12 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-gray-900",children:t("mcpb.dropFileHere")}),e.jsx("p",{className:"text-xs text-gray-500",children:t("mcpb.orClickToSelect")})]})]}),e.jsx("input",{type:"file",accept:".mcpb",onChange:L,className:"absolute inset-0 w-full h-full opacity-0 cursor-pointer"})]}),e.jsxs("div",{className:"mt-6 flex justify-end space-x-4",children:[e.jsx("button",{onClick:n,disabled:v,className:"hub-btn",children:t("common.cancel")}),e.jsx("button",{onClick:q,disabled:!g||v,className:"hub-btn primary flex items-center",children:v?e.jsxs(e.Fragment,{children:[e.jsxs("svg",{className:"animate-spin h-4 w-4 mr-2",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),t("mcpb.uploading")]}):t("mcpb.upload")})]})]})})},Zs=s=>Object.entries(s.mcpServers).map(([n,t])=>{const r={};return t.type==="sse"||t.type==="streamable-http"?(r.type=t.type,r.url=t.url,t.headers&&(r.headers=t.headers)):t.type==="openapi"?(r.type="openapi",r.openapi=t.openapi):(r.type="stdio",r.command=t.command,r.args=t.args||[],t.env&&(r.env=t.env),t.options&&(r.options=t.options)),{name:n,config:r}}),Qs=({onSuccess:s,onCancel:n})=>{const{t}=se(),[r,y]=d.useState(""),[v,a]=d.useState(null),[N,o]=d.useState(!1),[g,u]=d.useState(null),S=`{
|
|
7
|
-
"mcpServers": {
|
|
8
|
-
"stdio-server-example": {
|
|
9
|
-
"command": "npx",
|
|
10
|
-
"args": ["-y", "mcp-server-example"]
|
|
11
|
-
},
|
|
12
|
-
"sse-server-example": {
|
|
13
|
-
"type": "sse",
|
|
14
|
-
"url": "http://localhost:3000"
|
|
15
|
-
},
|
|
16
|
-
"http-server-example": {
|
|
17
|
-
"type": "streamable-http",
|
|
18
|
-
"url": "http://localhost:3001",
|
|
19
|
-
"headers": {
|
|
20
|
-
"Content-Type": "application/json",
|
|
21
|
-
"Authorization": "Bearer your-token"
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
"openapi-server-example": {
|
|
25
|
-
"type": "openapi",
|
|
26
|
-
"openapi": {
|
|
27
|
-
"url": "https://petstore.swagger.io/v2/swagger.json"
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
Supports: STDIO, SSE, HTTP (streamable-http), OpenAPI
|
|
34
|
-
All servers will be imported in a single efficient batch operation.`,D=w=>{try{const k=JSON.parse(w.trim());return!k.mcpServers||typeof k.mcpServers!="object"?(a(t("jsonImport.invalidFormat")),null):k}catch{return a(t("jsonImport.parseError")),null}},j=()=>{a(null);const w=D(r);w&&u(Zs(w))},F=async()=>{if(g){o(!0),a(null);try{const w=await oe("/servers/batch",{servers:g});if(w.success&&w.data){const{successCount:k,failureCount:E,results:A}=w.data;if(E>0){const O=A.filter(J=>!J.success).map(J=>`${J.name}: ${J.message||t("jsonImport.addFailed")}`);a(t("jsonImport.partialSuccess",{count:k,total:g.length})+`
|
|
35
|
-
`+O.join(`
|
|
36
|
-
`))}k>0&&s()}else a(w.message||t("jsonImport.importFailed"))}catch(w){console.error("Import error:",w),a(t("jsonImport.importFailed"))}finally{o(!1)}}};return e.jsx("div",{className:"fixed inset-0 bg-black/50 z-50 flex items-center justify-center p-4",children:e.jsxs("div",{className:"bg-white dark:bg-gray-800 shadow rounded-lg p-6 w-full max-w-4xl max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex justify-between items-center mb-6",children:[e.jsx("h2",{className:"text-xl font-semibold text-gray-900",children:t("jsonImport.title")}),e.jsx("button",{onClick:n,className:"text-gray-500 hover:text-gray-700",children:"✕"})]}),v&&e.jsx("div",{className:"mb-4 bg-red-50 border-l-4 border-red-500 p-4 rounded",children:e.jsx("p",{className:"text-red-700 whitespace-pre-wrap",children:v})}),g?e.jsxs("div",{children:[e.jsxs("div",{className:"mb-4",children:[e.jsx("h3",{className:"text-lg font-medium text-gray-900 mb-3",children:t("jsonImport.previewTitle")}),e.jsx("div",{className:"space-y-3",children:g.map((w,k)=>e.jsx("div",{className:"bg-gray-50 dark:bg-gray-800 p-4 rounded-lg border border-gray-200 dark:border-gray-700",children:e.jsx("div",{className:"flex items-start justify-between",children:e.jsxs("div",{className:"flex-1",children:[e.jsx("h4",{className:"font-medium text-gray-900",children:w.name}),e.jsxs("div",{className:"mt-2 space-y-1 text-sm text-gray-600",children:[e.jsxs("div",{children:[e.jsxs("strong",{children:[t("server.type"),":"]})," ",w.config.type||"stdio"]}),w.config.command&&e.jsxs("div",{children:[e.jsxs("strong",{children:[t("server.command"),":"]})," ",w.config.command]}),w.config.args&&w.config.args.length>0&&e.jsxs("div",{children:[e.jsxs("strong",{children:[t("server.arguments"),":"]})," ",w.config.args.join(" ")]}),w.config.url&&e.jsxs("div",{children:[e.jsxs("strong",{children:[t("server.url"),":"]})," ",w.config.url]}),w.config.env&&Object.keys(w.config.env).length>0&&e.jsxs("div",{children:[e.jsxs("strong",{children:[t("server.envVars"),":"]})," ",Object.keys(w.config.env).join(", ")]}),w.config.headers&&Object.keys(w.config.headers).length>0&&e.jsxs("div",{children:[e.jsxs("strong",{children:[t("server.headers"),":"]})," ",Object.keys(w.config.headers).join(", ")]})]})]})})},k))})]}),e.jsxs("div",{className:"flex justify-end space-x-4",children:[e.jsx("button",{onClick:()=>u(null),disabled:N,className:"hub-btn",children:t("common.back")}),e.jsx("button",{onClick:F,disabled:N,className:"hub-btn primary",children:N?e.jsxs(e.Fragment,{children:[e.jsxs("svg",{className:"animate-spin h-4 w-4 mr-2",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),t("jsonImport.importing")]}):t("jsonImport.import")})]})]}):e.jsxs("div",{children:[e.jsxs("div",{className:"mb-4",children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:t("jsonImport.inputLabel")}),e.jsx("textarea",{value:r,onChange:w=>y(w.target.value),className:"w-full h-96 px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 font-mono text-sm",placeholder:S}),e.jsx("p",{className:"text-xs text-gray-500 mt-2",children:t("jsonImport.inputHelp")})]}),e.jsxs("div",{className:"flex justify-end space-x-4",children:[e.jsx("button",{onClick:n,className:"hub-btn",children:t("common.cancel")}),e.jsx("button",{onClick:j,disabled:!r.trim(),className:"hub-btn primary",children:t("jsonImport.preview")})]})]})]})})},mt=()=>{const{t:s}=se(),n=cs(),{servers:t,allServers:r,error:y,setError:v,isLoading:a,pagination:N,currentPage:o,serversPerPage:g,setCurrentPage:u,setServersPerPage:S,handleServerAdd:D,handleServerEdit:j,handleServerRemove:F,handleServerToggle:w,handleServerVisibilityChange:k,handleServerReload:E,triggerRefresh:A}=xs({refreshOnMount:!0}),{serverCosts:O,refetch:J}=hs();d.useEffect(()=>{J()},[t,J]);const[R,T]=d.useState(null),[K,L]=d.useState(!1),[q,Y]=d.useState(!1),[x,m]=d.useState(!1),[f,l]=d.useState("all"),[p,c]=d.useState(""),h=d.useMemo(()=>({all:r.length,online:r.filter(I=>I.status==="connected").length,issues:r.filter(I=>I.status!=="connected"&&I.enabled!==!1).length}),[r]),_=d.useMemo(()=>{const I=p.trim().toLowerCase();return t.filter(B=>{var U,z;return f==="online"&&B.status!=="connected"||f==="issues"&&(B.status==="connected"||B.enabled===!1)?!1:I?(B.name+" "+(((U=B.config)==null?void 0:U.description)||"")+" "+(((z=B.tools)==null?void 0:z.map(W=>W.name).join(" "))||"")).toLowerCase().includes(I):!0})},[t,f,p]),$=async I=>{const B=await j(I);B&&T(B)},H=async()=>{L(!0);try{A(),await new Promise(I=>setTimeout(I,400))}finally{L(!1)}};return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-end justify-between gap-4 mb-6",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"hub-h1",children:s("pages.servers.title")}),e.jsxs("p",{className:"hub-sub",children:[e.jsx("span",{className:"hub-num",children:h.all})," ",s("nav.servers").toLowerCase()," ·"," ",e.jsx("span",{className:"hub-num",children:h.online})," ",s("status.online")," ·"," ",e.jsx("span",{className:"hub-num",children:h.issues})," ",s("common.inactive")||"issues"]})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("button",{className:"hub-btn",onClick:()=>n("/market"),children:[e.jsx(ks,{size:13})," ",s("nav.market")]}),e.jsxs("button",{className:"hub-btn",onClick:()=>m(!0),children:[e.jsx(Cs,{size:13})," ",s("jsonImport.button")]}),e.jsxs("button",{className:"hub-btn",onClick:()=>Y(!0),children:[e.jsx(Ss,{size:13})," ",s("mcpb.upload")]}),e.jsxs("button",{className:"hub-btn",onClick:H,disabled:K,"aria-label":s("common.refresh"),children:[e.jsx(je,{size:13,className:K?"animate-spin":""}),s("common.refresh")]}),e.jsx(Gs,{onAdd:D})]})]}),y&&e.jsxs("div",{className:"hub-card flex items-center justify-between gap-3 mb-4",style:{padding:"10px 14px",borderColor:"oklch(0.85 0.1 25)",background:"oklch(0.97 0.03 25)",color:"oklch(0.4 0.18 25)"},children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx(Ne,{size:14,className:"flex-shrink-0"}),e.jsx("span",{className:"truncate text-[13px]",children:y})]}),e.jsx("button",{className:"hub-icon-btn sm",onClick:()=>v(null),"aria-label":s("app.closeButton"),children:e.jsx(ke,{size:13})})]}),e.jsxs("div",{className:"flex items-center gap-2 mb-4 flex-wrap",children:[e.jsx("div",{className:"hub-card flex items-center",style:{padding:2,borderRadius:7,background:"var(--hub-surface)"},children:[["all",s("common.all")||"All",h.all],["online",s("status.online"),h.online],["issues",s("common.inactive")||"Issues",h.issues]].map(([I,B,P])=>e.jsxs("button",{onClick:()=>l(I),className:"inline-flex items-center gap-1.5 px-3 text-[12px]",style:{height:24,borderRadius:5,background:f===I?"var(--hub-bg-2)":"transparent",color:f===I?"var(--hub-ink)":"var(--hub-ink-3)",border:"1px solid "+(f===I?"var(--hub-line)":"transparent")},children:[B,e.jsx("span",{className:"hub-mono",style:{fontSize:11,color:"var(--hub-ink-3)"},children:P})]},I))}),e.jsxs("div",{className:"hub-card flex items-center gap-2 px-2.5 flex-1",style:{height:30,background:"var(--hub-surface)",maxWidth:360},children:[e.jsx(Es,{size:13,style:{color:"var(--hub-ink-3)"}}),e.jsx("input",{value:p,onChange:I=>c(I.target.value),className:"flex-1 bg-transparent outline-none text-[13px]",style:{color:"var(--hub-ink)"},placeholder:s("market.searchPlaceholder")||"Search…"}),p&&e.jsx("button",{onClick:()=>c(""),className:"hub-icon-btn sm",children:e.jsx(ke,{size:11})})]}),e.jsxs("div",{className:"ml-auto hub-mono text-[12px]",style:{color:"var(--hub-ink-3)"},children:[_.length,"/",t.length]})]}),a&&t.length===0?e.jsx("div",{className:"hub-card p-6 flex items-center justify-center",children:e.jsxs("div",{className:"flex flex-col items-center gap-2",children:[e.jsx(je,{size:20,className:"animate-spin",style:{color:"var(--hub-ink-3)"}}),e.jsx("p",{style:{color:"var(--hub-ink-3)"},children:s("app.loading")})]})}):_.length===0?e.jsx("div",{className:"hub-card p-10 text-center",style:{color:"var(--hub-ink-3)"},children:e.jsx("p",{children:t.length===0?s("app.noServers"):s("market.noServers")})}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"flex flex-col",children:_.map(I=>e.jsx(Ks,{server:I,cost:O.find(B=>B.name===I.name),onRemove:F,onEdit:$,onToggle:w,onVisibilityChange:k,onRefresh:A,onReload:E},I.name))}),e.jsxs("div",{className:"flex items-center mt-4 text-[12px]",style:{color:"var(--hub-ink-3)"},children:[e.jsx("div",{className:"flex-[2]",children:N?s("common.showing",{start:(N.page-1)*N.limit+1,end:Math.min(N.page*N.limit,N.total),total:N.total}):s("common.showing",{start:1,end:t.length,total:t.length})}),e.jsx("div",{className:"flex-[4] flex justify-center",children:N&&N.totalPages>1&&e.jsx(Ds,{currentPage:o,totalPages:N.totalPages,onPageChange:u,disabled:a})}),e.jsxs("div",{className:"flex-[2] flex items-center justify-end gap-2",children:[e.jsxs("label",{htmlFor:"perPage",children:[s("common.itemsPerPage"),":"]}),e.jsxs("select",{id:"perPage",value:g,onChange:I=>S(Number(I.target.value)),disabled:a,className:"hub-input",style:{height:26,width:70,padding:"0 6px",fontSize:12},children:[e.jsx("option",{value:5,children:"5"}),e.jsx("option",{value:10,children:"10"}),e.jsx("option",{value:20,children:"20"}),e.jsx("option",{value:50,children:"50"})]})]})]})]}),R&&e.jsx(Xs,{server:R,onEdit:()=>{T(null),A()},onCancel:()=>T(null)}),q&&e.jsx(Ys,{onSuccess:()=>{Y(!1),A()},onCancel:()=>Y(!1)}),x&&e.jsx(Qs,{onSuccess:()=>{m(!1),A()},onCancel:()=>m(!1)})]})};export{mt as default};
|
|
37
|
-
//# sourceMappingURL=ServersPage-C59cMoJ9.js.map
|