diff --git a/dist/assets/index-Q1ssxN3K.css b/dist/assets/index-Q1ssxN3K.css deleted file mode 100644 index 3f8d5e6..0000000 --- a/dist/assets/index-Q1ssxN3K.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.static{position:static}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.bottom-full{bottom:100%}.left-0{left:0}.left-3{left:.75rem}.left-4{left:1rem}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.top-0{top:0}.top-1\/2{top:50%}.top-24{top:6rem}.top-full{top:100%}.z-10{z-index:10}.z-50{z-index:50}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.col-span-4{grid-column:span 4 / span 4}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-0{height:0px}.h-10{height:2.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.max-h-48{max-height:12rem}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-10{width:2.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-full{width:100%}.min-w-0{min-width:0px}.max-w-16{max-width:4rem}.max-w-20{max-width:5rem}.max-w-32{max-width:8rem}.max-w-4xl{max-width:56rem}.max-w-7xl{max-width:80rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes slideUp{0%{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}.animate-slide-up{animation:slideUp .3s ease-out}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.resize{resize:both}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-0\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.125rem * var(--tw-space-x-reverse));margin-left:calc(.125rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l-4{border-left-width:4px}.border-r-4{border-right-width:4px}.border-t{border-top-width:1px}.border-t-4{border-top-width:4px}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-300{--tw-border-opacity: 1;border-color:rgb(134 239 172 / var(--tw-border-opacity, 1))}.border-purple-300{--tw-border-opacity: 1;border-color:rgb(216 180 254 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-l-transparent{border-left-color:transparent}.border-r-transparent{border-right-color:transparent}.border-t-gray-900{--tw-border-opacity: 1;border-top-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.border-t-transparent{border-top-color:transparent}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-200{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-indigo-100{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity, 1))}.bg-orange-100{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-purple-50{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.bg-purple-600{--tw-bg-opacity: 1;background-color:rgb(147 51 234 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.from-blue-50{--tw-gradient-from: #eff6ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 246 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-indigo-100{--tw-gradient-to: #e0e7ff var(--tw-gradient-to-position)}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pl-10{padding-left:2.5rem}.pr-10{padding-right:2.5rem}.pr-32{padding-right:8rem}.pr-4{padding-right:1rem}.pt-2{padding-top:.5rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.capitalize{text-transform:capitalize}.leading-relaxed{line-height:1.625}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.text-indigo-700{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity, 1))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity, 1))}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.placeholder-gray-500::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(107 114 128 / var(--tw-placeholder-opacity, 1))}.placeholder-gray-500::placeholder{--tw-placeholder-opacity: 1;color:rgb(107 114 128 / var(--tw-placeholder-opacity, 1))}.opacity-0{opacity:0}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.line-clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.hover\:border-blue-300:hover{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity, 1))}.hover\:bg-blue-100:hover{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-200:hover{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-600:hover{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.hover\:bg-green-100:hover{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.hover\:bg-green-200:hover{--tw-bg-opacity: 1;background-color:rgb(187 247 208 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-indigo-200:hover{--tw-bg-opacity: 1;background-color:rgb(199 210 254 / var(--tw-bg-opacity, 1))}.hover\:bg-orange-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 215 170 / var(--tw-bg-opacity, 1))}.hover\:bg-purple-200:hover{--tw-bg-opacity: 1;background-color:rgb(233 213 255 / var(--tw-bg-opacity, 1))}.hover\:bg-purple-700:hover{--tw-bg-opacity: 1;background-color:rgb(126 34 206 / var(--tw-bg-opacity, 1))}.hover\:bg-red-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.hover\:bg-red-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 202 202 / var(--tw-bg-opacity, 1))}.hover\:bg-yellow-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.hover\:text-blue-600:hover{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.hover\:text-blue-700:hover{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.hover\:text-orange-600:hover{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.hover\:text-red-600:hover{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-transparent:focus{border-color:transparent}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-400:disabled{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.disabled\:bg-gray-50:disabled{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.disabled\:text-gray-500:disabled{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:opacity-100{opacity:1}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-gray-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.dark\:border-gray-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\:border-green-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.dark\:border-purple-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(126 34 206 / var(--tw-border-opacity, 1))}.dark\:border-yellow-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(133 77 14 / var(--tw-border-opacity, 1))}.dark\:border-t-gray-700:is(.dark *){--tw-border-opacity: 1;border-top-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\:bg-blue-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 64 175 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-900\/20:is(.dark *){background-color:#1e3a8a33}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(20 83 45 / var(--tw-bg-opacity, 1))}.dark\:bg-green-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:bg-indigo-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(49 46 129 / var(--tw-bg-opacity, 1))}.dark\:bg-orange-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(124 45 18 / var(--tw-bg-opacity, 1))}.dark\:bg-purple-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(88 28 135 / var(--tw-bg-opacity, 1))}.dark\:bg-purple-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(59 7 100 / var(--tw-bg-opacity, 1))}.dark\:bg-red-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-900\/20:is(.dark *){background-color:#713f1233}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-300:is(.dark *){--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-indigo-300:is(.dark *){--tw-text-opacity: 1;color:rgb(165 180 252 / var(--tw-text-opacity, 1))}.dark\:text-indigo-400:is(.dark *){--tw-text-opacity: 1;color:rgb(129 140 248 / var(--tw-text-opacity, 1))}.dark\:text-orange-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 186 116 / var(--tw-text-opacity, 1))}.dark\:text-orange-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.dark\:text-purple-300:is(.dark *){--tw-text-opacity: 1;color:rgb(216 180 254 / var(--tw-text-opacity, 1))}.dark\:text-purple-400:is(.dark *){--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.dark\:placeholder-gray-400:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder-gray-400:is(.dark *)::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.dark\:ring-offset-gray-800:is(.dark *){--tw-ring-offset-color: #1f2937}.dark\:hover\:border-blue-600:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity, 1))}.dark\:hover\:bg-blue-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 64 175 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-blue-900:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-600:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-green-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(22 101 52 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-green-900:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(20 83 45 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-indigo-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 48 163 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-orange-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(154 52 18 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-purple-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(107 33 168 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-red-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(153 27 27 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-red-900:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-yellow-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(133 77 14 / var(--tw-bg-opacity, 1))}.dark\:hover\:text-blue-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:hover\:text-blue-400:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:hover\:text-orange-400:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.dark\:hover\:text-red-400:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:focus\:ring-blue-600:focus:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity, 1))}@media (min-width: 640px){.sm\:block{display:block}.sm\:flex{display:flex}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}}@media (min-width: 768px){.md\:flex{display:flex}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width: 1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (min-width: 1280px){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}} diff --git a/dist/assets/index-zzBFbG-r.js b/dist/assets/index-zzBFbG-r.js deleted file mode 100644 index 6ed9a8d..0000000 --- a/dist/assets/index-zzBFbG-r.js +++ /dev/null @@ -1,527 +0,0 @@ -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))n(a);new MutationObserver(a=>{for(const s of a)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function r(a){const s={};return a.integrity&&(s.integrity=a.integrity),a.referrerPolicy&&(s.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?s.credentials="include":a.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(a){if(a.ep)return;a.ep=!0;const s=r(a);fetch(a.href,s)}})();function nu(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var au={exports:{}},Ga={},su={exports:{}},Z={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Ln=Symbol.for("react.element"),Fd=Symbol.for("react.portal"),Wd=Symbol.for("react.fragment"),Vd=Symbol.for("react.strict_mode"),Ud=Symbol.for("react.profiler"),Hd=Symbol.for("react.provider"),Bd=Symbol.for("react.context"),Gd=Symbol.for("react.forward_ref"),Qd=Symbol.for("react.suspense"),Kd=Symbol.for("react.memo"),qd=Symbol.for("react.lazy"),To=Symbol.iterator;function Yd(e){return e===null||typeof e!="object"?null:(e=To&&e[To]||e["@@iterator"],typeof e=="function"?e:null)}var lu={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},ou=Object.assign,iu={};function Fr(e,t,r){this.props=e,this.context=t,this.refs=iu,this.updater=r||lu}Fr.prototype.isReactComponent={};Fr.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Fr.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function uu(){}uu.prototype=Fr.prototype;function Tl(e,t,r){this.props=e,this.context=t,this.refs=iu,this.updater=r||lu}var Ml=Tl.prototype=new uu;Ml.constructor=Tl;ou(Ml,Fr.prototype);Ml.isPureReactComponent=!0;var Mo=Array.isArray,cu=Object.prototype.hasOwnProperty,Il={current:null},du={key:!0,ref:!0,__self:!0,__source:!0};function fu(e,t,r){var n,a={},s=null,o=null;if(t!=null)for(n in t.ref!==void 0&&(o=t.ref),t.key!==void 0&&(s=""+t.key),t)cu.call(t,n)&&!du.hasOwnProperty(n)&&(a[n]=t[n]);var i=arguments.length-2;if(i===1)a.children=r;else if(1>>1,G=h[L];if(0>>1;La(C,j))xa(I,C)?(h[L]=I,h[x]=j,L=x):(h[L]=C,h[ne]=j,L=ne);else if(xa(I,j))h[L]=I,h[x]=j,L=x;else break e}}return N}function a(h,N){var j=h.sortIndex-N.sortIndex;return j!==0?j:h.id-N.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var o=Date,i=o.now();e.unstable_now=function(){return o.now()-i}}var u=[],d=[],m=1,y=null,p=3,w=!1,v=!1,k=!1,_=typeof setTimeout=="function"?setTimeout:null,f=typeof clearTimeout=="function"?clearTimeout:null,c=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function g(h){for(var N=r(d);N!==null;){if(N.callback===null)n(d);else if(N.startTime<=h)n(d),N.sortIndex=N.expirationTime,t(u,N);else break;N=r(d)}}function b(h){if(k=!1,g(h),!v)if(r(u)!==null)v=!0,te(A);else{var N=r(d);N!==null&&q(b,N.startTime-h)}}function A(h,N){v=!1,k&&(k=!1,f(M),M=-1),w=!0;var j=p;try{for(g(N),y=r(u);y!==null&&(!(y.expirationTime>N)||h&&!U());){var L=y.callback;if(typeof L=="function"){y.callback=null,p=y.priorityLevel;var G=L(y.expirationTime<=N);N=e.unstable_now(),typeof G=="function"?y.callback=G:y===r(u)&&n(u),g(N)}else n(u);y=r(u)}if(y!==null)var J=!0;else{var ne=r(d);ne!==null&&q(b,ne.startTime-N),J=!1}return J}finally{y=null,p=j,w=!1}}var P=!1,R=null,M=-1,B=5,V=-1;function U(){return!(e.unstable_now()-Vh||125L?(h.sortIndex=j,t(d,h),r(u)===null&&h===r(d)&&(k?(f(M),M=-1):k=!0,q(b,j-L))):(h.sortIndex=G,t(u,h),v||w||(v=!0,te(A))),h},e.unstable_shouldYield=U,e.unstable_wrapCallback=function(h){var N=p;return function(){var j=p;p=N;try{return h.apply(this,arguments)}finally{p=j}}}})(yu);hu.exports=yu;var uf=hu.exports;/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var cf=F,Ke=uf;function E(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Fs=Object.prototype.hasOwnProperty,df=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Lo={},$o={};function ff(e){return Fs.call($o,e)?!0:Fs.call(Lo,e)?!1:df.test(e)?$o[e]=!0:(Lo[e]=!0,!1)}function gf(e,t,r,n){if(r!==null&&r.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return n?!1:r!==null?!r.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function mf(e,t,r,n){if(t===null||typeof t>"u"||gf(e,t,r,n))return!0;if(n)return!1;if(r!==null)switch(r.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Le(e,t,r,n,a,s,o){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=n,this.attributeNamespace=a,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=s,this.removeEmptyString=o}var Ee={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Ee[e]=new Le(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Ee[t]=new Le(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Ee[e]=new Le(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Ee[e]=new Le(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Ee[e]=new Le(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Ee[e]=new Le(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Ee[e]=new Le(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Ee[e]=new Le(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Ee[e]=new Le(e,5,!1,e.toLowerCase(),null,!1,!1)});var $l=/[\-:]([a-z])/g;function Ol(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace($l,Ol);Ee[t]=new Le(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace($l,Ol);Ee[t]=new Le(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace($l,Ol);Ee[t]=new Le(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Ee[e]=new Le(e,1,!1,e.toLowerCase(),null,!1,!1)});Ee.xlinkHref=new Le("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Ee[e]=new Le(e,1,!1,e.toLowerCase(),null,!0,!0)});function Fl(e,t,r,n){var a=Ee.hasOwnProperty(t)?Ee[t]:null;(a!==null?a.type!==0:n||!(2i||a[o]!==s[i]){var u=` -`+a[o].replace(" at new "," at ");return e.displayName&&u.includes("")&&(u=u.replace("",e.displayName)),u}while(1<=o&&0<=i);break}}}finally{ms=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?rn(e):""}function pf(e){switch(e.tag){case 5:return rn(e.type);case 16:return rn("Lazy");case 13:return rn("Suspense");case 19:return rn("SuspenseList");case 0:case 2:case 15:return e=ps(e.type,!1),e;case 11:return e=ps(e.type.render,!1),e;case 1:return e=ps(e.type,!0),e;default:return""}}function Hs(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case pr:return"Fragment";case mr:return"Portal";case Ws:return"Profiler";case Wl:return"StrictMode";case Vs:return"Suspense";case Us:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case wu:return(e.displayName||"Context")+".Consumer";case vu:return(e._context.displayName||"Context")+".Provider";case Vl:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Ul:return t=e.displayName||null,t!==null?t:Hs(e.type)||"Memo";case _t:t=e._payload,e=e._init;try{return Hs(e(t))}catch{}}return null}function hf(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Hs(t);case 8:return t===Wl?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Ut(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function bu(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function yf(e){var t=bu(e)?"checked":"value",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),n=""+e[t];if(!e.hasOwnProperty(t)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var a=r.get,s=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(o){n=""+o,s.call(this,o)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(o){n=""+o},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Gn(e){e._valueTracker||(e._valueTracker=yf(e))}function Su(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var r=t.getValue(),n="";return e&&(n=bu(e)?e.checked?"true":"false":e.value),e=n,e!==r?(t.setValue(e),!0):!1}function ba(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Bs(e,t){var r=t.checked;return ge({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??e._wrapperState.initialChecked})}function Fo(e,t){var r=t.defaultValue==null?"":t.defaultValue,n=t.checked!=null?t.checked:t.defaultChecked;r=Ut(t.value!=null?t.value:r),e._wrapperState={initialChecked:n,initialValue:r,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function ju(e,t){t=t.checked,t!=null&&Fl(e,"checked",t,!1)}function Gs(e,t){ju(e,t);var r=Ut(t.value),n=t.type;if(r!=null)n==="number"?(r===0&&e.value===""||e.value!=r)&&(e.value=""+r):e.value!==""+r&&(e.value=""+r);else if(n==="submit"||n==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Qs(e,t.type,r):t.hasOwnProperty("defaultValue")&&Qs(e,t.type,Ut(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Wo(e,t,r){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var n=t.type;if(!(n!=="submit"&&n!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,r||t===e.value||(e.value=t),e.defaultValue=t}r=e.name,r!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,r!==""&&(e.name=r)}function Qs(e,t,r){(t!=="number"||ba(e.ownerDocument)!==e)&&(r==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+r&&(e.defaultValue=""+r))}var nn=Array.isArray;function Cr(e,t,r,n){if(e=e.options,t){t={};for(var a=0;a"+t.valueOf().toString()+"",t=Qn.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function yn(e,t){if(t){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=t;return}}e.textContent=t}var ln={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},xf=["Webkit","ms","Moz","O"];Object.keys(ln).forEach(function(e){xf.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ln[t]=ln[e]})});function Eu(e,t,r){return t==null||typeof t=="boolean"||t===""?"":r||typeof t!="number"||t===0||ln.hasOwnProperty(e)&&ln[e]?(""+t).trim():t+"px"}function _u(e,t){e=e.style;for(var r in t)if(t.hasOwnProperty(r)){var n=r.indexOf("--")===0,a=Eu(r,t[r],n);r==="float"&&(r="cssFloat"),n?e.setProperty(r,a):e[r]=a}}var vf=ge({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Ys(e,t){if(t){if(vf[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(E(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(E(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(E(61))}if(t.style!=null&&typeof t.style!="object")throw Error(E(62))}}function Xs(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Js=null;function Hl(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Zs=null,Ar=null,Er=null;function Ho(e){if(e=Fn(e)){if(typeof Zs!="function")throw Error(E(280));var t=e.stateNode;t&&(t=Xa(t),Zs(e.stateNode,e.type,t))}}function zu(e){Ar?Er?Er.push(e):Er=[e]:Ar=e}function Pu(){if(Ar){var e=Ar,t=Er;if(Er=Ar=null,Ho(e),t)for(e=0;e>>=0,e===0?32:31-(zf(e)/Pf|0)|0}var Kn=64,qn=4194304;function an(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Ca(e,t){var r=e.pendingLanes;if(r===0)return 0;var n=0,a=e.suspendedLanes,s=e.pingedLanes,o=r&268435455;if(o!==0){var i=o&~a;i!==0?n=an(i):(s&=o,s!==0&&(n=an(s)))}else o=r&~a,o!==0?n=an(o):s!==0&&(n=an(s));if(n===0)return 0;if(t!==0&&t!==n&&!(t&a)&&(a=n&-n,s=t&-t,a>=s||a===16&&(s&4194240)!==0))return t;if(n&4&&(n|=r&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=n;0r;r++)t.push(e);return t}function $n(e,t,r){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-ot(t),e[t]=r}function Mf(e,t){var r=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var n=e.eventTimes;for(e=e.expirationTimes;0=un),Zo=" ",ei=!1;function Xu(e,t){switch(e){case"keyup":return u0.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ju(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var hr=!1;function d0(e,t){switch(e){case"compositionend":return Ju(t);case"keypress":return t.which!==32?null:(ei=!0,Zo);case"textInput":return e=t.data,e===Zo&&ei?null:e;default:return null}}function f0(e,t){if(hr)return e==="compositionend"||!Jl&&Xu(e,t)?(e=qu(),da=ql=Rt=null,hr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=ai(r)}}function rc(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?rc(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function nc(){for(var e=window,t=ba();t instanceof e.HTMLIFrameElement;){try{var r=typeof t.contentWindow.location.href=="string"}catch{r=!1}if(r)e=t.contentWindow;else break;t=ba(e.document)}return t}function Zl(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function k0(e){var t=nc(),r=e.focusedElem,n=e.selectionRange;if(t!==r&&r&&r.ownerDocument&&rc(r.ownerDocument.documentElement,r)){if(n!==null&&Zl(r)){if(t=n.start,e=n.end,e===void 0&&(e=t),"selectionStart"in r)r.selectionStart=t,r.selectionEnd=Math.min(e,r.value.length);else if(e=(t=r.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var a=r.textContent.length,s=Math.min(n.start,a);n=n.end===void 0?s:Math.min(n.end,a),!e.extend&&s>n&&(a=n,n=s,s=a),a=si(r,s);var o=si(r,n);a&&o&&(e.rangeCount!==1||e.anchorNode!==a.node||e.anchorOffset!==a.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&(t=t.createRange(),t.setStart(a.node,a.offset),e.removeAllRanges(),s>n?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}}for(t=[],e=r;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof r.focus=="function"&&r.focus(),r=0;r=document.documentMode,yr=null,sl=null,dn=null,ll=!1;function li(e,t,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;ll||yr==null||yr!==ba(n)||(n=yr,"selectionStart"in n&&Zl(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),dn&&Sn(dn,n)||(dn=n,n=_a(sl,"onSelect"),0wr||(e.current=fl[wr],fl[wr]=null,wr--)}function le(e,t){wr++,fl[wr]=e.current,e.current=t}var Ht={},Re=Gt(Ht),Fe=Gt(!1),ar=Ht;function Rr(e,t){var r=e.type.contextTypes;if(!r)return Ht;var n=e.stateNode;if(n&&n.__reactInternalMemoizedUnmaskedChildContext===t)return n.__reactInternalMemoizedMaskedChildContext;var a={},s;for(s in r)a[s]=t[s];return n&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function We(e){return e=e.childContextTypes,e!=null}function Pa(){ie(Fe),ie(Re)}function gi(e,t,r){if(Re.current!==Ht)throw Error(E(168));le(Re,t),le(Fe,r)}function fc(e,t,r){var n=e.stateNode;if(t=t.childContextTypes,typeof n.getChildContext!="function")return r;n=n.getChildContext();for(var a in n)if(!(a in t))throw Error(E(108,hf(e)||"Unknown",a));return ge({},r,n)}function Da(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Ht,ar=Re.current,le(Re,e),le(Fe,Fe.current),!0}function mi(e,t,r){var n=e.stateNode;if(!n)throw Error(E(169));r?(e=fc(e,t,ar),n.__reactInternalMemoizedMergedChildContext=e,ie(Fe),ie(Re),le(Re,e)):ie(Fe),le(Fe,r)}var xt=null,Ja=!1,_s=!1;function gc(e){xt===null?xt=[e]:xt.push(e)}function R0(e){Ja=!0,gc(e)}function Qt(){if(!_s&&xt!==null){_s=!0;var e=0,t=re;try{var r=xt;for(re=1;e>=o,a-=o,vt=1<<32-ot(t)+a|r<M?(B=R,R=null):B=R.sibling;var V=p(f,R,g[M],b);if(V===null){R===null&&(R=B);break}e&&R&&V.alternate===null&&t(f,R),c=s(V,c,M),P===null?A=V:P.sibling=V,P=V,R=B}if(M===g.length)return r(f,R),ue&&Yt(f,M),A;if(R===null){for(;MM?(B=R,R=null):B=R.sibling;var U=p(f,R,V.value,b);if(U===null){R===null&&(R=B);break}e&&R&&U.alternate===null&&t(f,R),c=s(U,c,M),P===null?A=U:P.sibling=U,P=U,R=B}if(V.done)return r(f,R),ue&&Yt(f,M),A;if(R===null){for(;!V.done;M++,V=g.next())V=y(f,V.value,b),V!==null&&(c=s(V,c,M),P===null?A=V:P.sibling=V,P=V);return ue&&Yt(f,M),A}for(R=n(f,R);!V.done;M++,V=g.next())V=w(R,f,M,V.value,b),V!==null&&(e&&V.alternate!==null&&R.delete(V.key===null?M:V.key),c=s(V,c,M),P===null?A=V:P.sibling=V,P=V);return e&&R.forEach(function(H){return t(f,H)}),ue&&Yt(f,M),A}function _(f,c,g,b){if(typeof g=="object"&&g!==null&&g.type===pr&&g.key===null&&(g=g.props.children),typeof g=="object"&&g!==null){switch(g.$$typeof){case Bn:e:{for(var A=g.key,P=c;P!==null;){if(P.key===A){if(A=g.type,A===pr){if(P.tag===7){r(f,P.sibling),c=a(P,g.props.children),c.return=f,f=c;break e}}else if(P.elementType===A||typeof A=="object"&&A!==null&&A.$$typeof===_t&&yi(A)===P.type){r(f,P.sibling),c=a(P,g.props),c.ref=Yr(f,P,g),c.return=f,f=c;break e}r(f,P);break}else t(f,P);P=P.sibling}g.type===pr?(c=nr(g.props.children,f.mode,b,g.key),c.return=f,f=c):(b=va(g.type,g.key,g.props,null,f.mode,b),b.ref=Yr(f,c,g),b.return=f,f=b)}return o(f);case mr:e:{for(P=g.key;c!==null;){if(c.key===P)if(c.tag===4&&c.stateNode.containerInfo===g.containerInfo&&c.stateNode.implementation===g.implementation){r(f,c.sibling),c=a(c,g.children||[]),c.return=f,f=c;break e}else{r(f,c);break}else t(f,c);c=c.sibling}c=Ls(g,f.mode,b),c.return=f,f=c}return o(f);case _t:return P=g._init,_(f,c,P(g._payload),b)}if(nn(g))return v(f,c,g,b);if(Br(g))return k(f,c,g,b);ra(f,g)}return typeof g=="string"&&g!==""||typeof g=="number"?(g=""+g,c!==null&&c.tag===6?(r(f,c.sibling),c=a(c,g),c.return=f,f=c):(r(f,c),c=Is(g,f.mode,b),c.return=f,f=c),o(f)):r(f,c)}return _}var Mr=yc(!0),xc=yc(!1),Ma=Gt(null),Ia=null,Sr=null,no=null;function ao(){no=Sr=Ia=null}function so(e){var t=Ma.current;ie(Ma),e._currentValue=t}function pl(e,t,r){for(;e!==null;){var n=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,n!==null&&(n.childLanes|=t)):n!==null&&(n.childLanes&t)!==t&&(n.childLanes|=t),e===r)break;e=e.return}}function zr(e,t){Ia=e,no=Sr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(Oe=!0),e.firstContext=null)}function tt(e){var t=e._currentValue;if(no!==e)if(e={context:e,memoizedValue:t,next:null},Sr===null){if(Ia===null)throw Error(E(308));Sr=e,Ia.dependencies={lanes:0,firstContext:e}}else Sr=Sr.next=e;return t}var Zt=null;function lo(e){Zt===null?Zt=[e]:Zt.push(e)}function vc(e,t,r,n){var a=t.interleaved;return a===null?(r.next=r,lo(t)):(r.next=a.next,a.next=r),t.interleaved=r,jt(e,n)}function jt(e,t){e.lanes|=t;var r=e.alternate;for(r!==null&&(r.lanes|=t),r=e,e=e.return;e!==null;)e.childLanes|=t,r=e.alternate,r!==null&&(r.childLanes|=t),r=e,e=e.return;return r.tag===3?r.stateNode:null}var zt=!1;function oo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function wc(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function kt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Ot(e,t,r){var n=e.updateQueue;if(n===null)return null;if(n=n.shared,ee&2){var a=n.pending;return a===null?t.next=t:(t.next=a.next,a.next=t),n.pending=t,jt(e,r)}return a=n.interleaved,a===null?(t.next=t,lo(n)):(t.next=a.next,a.next=t),n.interleaved=t,jt(e,r)}function ga(e,t,r){if(t=t.updateQueue,t!==null&&(t=t.shared,(r&4194240)!==0)){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,Gl(e,r)}}function xi(e,t){var r=e.updateQueue,n=e.alternate;if(n!==null&&(n=n.updateQueue,r===n)){var a=null,s=null;if(r=r.firstBaseUpdate,r!==null){do{var o={eventTime:r.eventTime,lane:r.lane,tag:r.tag,payload:r.payload,callback:r.callback,next:null};s===null?a=s=o:s=s.next=o,r=r.next}while(r!==null);s===null?a=s=t:s=s.next=t}else a=s=t;r={baseState:n.baseState,firstBaseUpdate:a,lastBaseUpdate:s,shared:n.shared,effects:n.effects},e.updateQueue=r;return}e=r.lastBaseUpdate,e===null?r.firstBaseUpdate=t:e.next=t,r.lastBaseUpdate=t}function La(e,t,r,n){var a=e.updateQueue;zt=!1;var s=a.firstBaseUpdate,o=a.lastBaseUpdate,i=a.shared.pending;if(i!==null){a.shared.pending=null;var u=i,d=u.next;u.next=null,o===null?s=d:o.next=d,o=u;var m=e.alternate;m!==null&&(m=m.updateQueue,i=m.lastBaseUpdate,i!==o&&(i===null?m.firstBaseUpdate=d:i.next=d,m.lastBaseUpdate=u))}if(s!==null){var y=a.baseState;o=0,m=d=u=null,i=s;do{var p=i.lane,w=i.eventTime;if((n&p)===p){m!==null&&(m=m.next={eventTime:w,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var v=e,k=i;switch(p=t,w=r,k.tag){case 1:if(v=k.payload,typeof v=="function"){y=v.call(w,y,p);break e}y=v;break e;case 3:v.flags=v.flags&-65537|128;case 0:if(v=k.payload,p=typeof v=="function"?v.call(w,y,p):v,p==null)break e;y=ge({},y,p);break e;case 2:zt=!0}}i.callback!==null&&i.lane!==0&&(e.flags|=64,p=a.effects,p===null?a.effects=[i]:p.push(i))}else w={eventTime:w,lane:p,tag:i.tag,payload:i.payload,callback:i.callback,next:null},m===null?(d=m=w,u=y):m=m.next=w,o|=p;if(i=i.next,i===null){if(i=a.shared.pending,i===null)break;p=i,i=p.next,p.next=null,a.lastBaseUpdate=p,a.shared.pending=null}}while(!0);if(m===null&&(u=y),a.baseState=u,a.firstBaseUpdate=d,a.lastBaseUpdate=m,t=a.shared.interleaved,t!==null){a=t;do o|=a.lane,a=a.next;while(a!==t)}else s===null&&(a.shared.lanes=0);or|=o,e.lanes=o,e.memoizedState=y}}function vi(e,t,r){if(e=t.effects,t.effects=null,e!==null)for(t=0;tr?r:4,e(!0);var n=Ps.transition;Ps.transition={};try{e(!1),t()}finally{re=r,Ps.transition=n}}function Lc(){return rt().memoizedState}function L0(e,t,r){var n=Wt(e);if(r={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null},$c(e))Oc(t,r);else if(r=vc(e,t,r,n),r!==null){var a=Me();it(r,e,n,a),Fc(r,t,n)}}function $0(e,t,r){var n=Wt(e),a={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null};if($c(e))Oc(t,a);else{var s=e.alternate;if(e.lanes===0&&(s===null||s.lanes===0)&&(s=t.lastRenderedReducer,s!==null))try{var o=t.lastRenderedState,i=s(o,r);if(a.hasEagerState=!0,a.eagerState=i,ut(i,o)){var u=t.interleaved;u===null?(a.next=a,lo(t)):(a.next=u.next,u.next=a),t.interleaved=a;return}}catch{}finally{}r=vc(e,t,a,n),r!==null&&(a=Me(),it(r,e,n,a),Fc(r,t,n))}}function $c(e){var t=e.alternate;return e===fe||t!==null&&t===fe}function Oc(e,t){fn=Oa=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function Fc(e,t,r){if(r&4194240){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,Gl(e,r)}}var Fa={readContext:tt,useCallback:ze,useContext:ze,useEffect:ze,useImperativeHandle:ze,useInsertionEffect:ze,useLayoutEffect:ze,useMemo:ze,useReducer:ze,useRef:ze,useState:ze,useDebugValue:ze,useDeferredValue:ze,useTransition:ze,useMutableSource:ze,useSyncExternalStore:ze,useId:ze,unstable_isNewReconciler:!1},O0={readContext:tt,useCallback:function(e,t){return dt().memoizedState=[e,t===void 0?null:t],e},useContext:tt,useEffect:ki,useImperativeHandle:function(e,t,r){return r=r!=null?r.concat([e]):null,pa(4194308,4,Dc.bind(null,t,e),r)},useLayoutEffect:function(e,t){return pa(4194308,4,e,t)},useInsertionEffect:function(e,t){return pa(4,2,e,t)},useMemo:function(e,t){var r=dt();return t=t===void 0?null:t,e=e(),r.memoizedState=[e,t],e},useReducer:function(e,t,r){var n=dt();return t=r!==void 0?r(t):t,n.memoizedState=n.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},n.queue=e,e=e.dispatch=L0.bind(null,fe,e),[n.memoizedState,e]},useRef:function(e){var t=dt();return e={current:e},t.memoizedState=e},useState:wi,useDebugValue:ho,useDeferredValue:function(e){return dt().memoizedState=e},useTransition:function(){var e=wi(!1),t=e[0];return e=I0.bind(null,e[1]),dt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,r){var n=fe,a=dt();if(ue){if(r===void 0)throw Error(E(407));r=r()}else{if(r=t(),je===null)throw Error(E(349));lr&30||jc(n,t,r)}a.memoizedState=r;var s={value:r,getSnapshot:t};return a.queue=s,ki(Cc.bind(null,n,s,e),[e]),n.flags|=2048,Pn(9,Nc.bind(null,n,s,r,t),void 0,null),r},useId:function(){var e=dt(),t=je.identifierPrefix;if(ue){var r=wt,n=vt;r=(n&~(1<<32-ot(n)-1)).toString(32)+r,t=":"+t+"R"+r,r=_n++,0<\/script>",e=e.removeChild(e.firstChild)):typeof n.is=="string"?e=o.createElement(r,{is:n.is}):(e=o.createElement(r),r==="select"&&(o=e,n.multiple?o.multiple=!0:n.size&&(o.size=n.size))):e=o.createElementNS(e,r),e[ft]=t,e[Cn]=n,Yc(e,t,!1,!1),t.stateNode=e;e:{switch(o=Xs(r,n),r){case"dialog":oe("cancel",e),oe("close",e),a=n;break;case"iframe":case"object":case"embed":oe("load",e),a=n;break;case"video":case"audio":for(a=0;a$r&&(t.flags|=128,n=!0,Xr(s,!1),t.lanes=4194304)}else{if(!n)if(e=$a(o),e!==null){if(t.flags|=128,n=!0,r=e.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),Xr(s,!0),s.tail===null&&s.tailMode==="hidden"&&!o.alternate&&!ue)return Pe(t),null}else 2*ye()-s.renderingStartTime>$r&&r!==1073741824&&(t.flags|=128,n=!0,Xr(s,!1),t.lanes=4194304);s.isBackwards?(o.sibling=t.child,t.child=o):(r=s.last,r!==null?r.sibling=o:t.child=o,s.last=o)}return s.tail!==null?(t=s.tail,s.rendering=t,s.tail=t.sibling,s.renderingStartTime=ye(),t.sibling=null,r=de.current,le(de,n?r&1|2:r&1),t):(Pe(t),null);case 22:case 23:return bo(),n=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==n&&(t.flags|=8192),n&&t.mode&1?He&1073741824&&(Pe(t),t.subtreeFlags&6&&(t.flags|=8192)):Pe(t),null;case 24:return null;case 25:return null}throw Error(E(156,t.tag))}function Q0(e,t){switch(to(t),t.tag){case 1:return We(t.type)&&Pa(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ir(),ie(Fe),ie(Re),co(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return uo(t),null;case 13:if(ie(de),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(E(340));Tr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ie(de),null;case 4:return Ir(),null;case 10:return so(t.type._context),null;case 22:case 23:return bo(),null;case 24:return null;default:return null}}var aa=!1,De=!1,K0=typeof WeakSet=="function"?WeakSet:Set,O=null;function jr(e,t){var r=e.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(n){pe(e,t,n)}else r.current=null}function jl(e,t,r){try{r()}catch(n){pe(e,t,n)}}var Di=!1;function q0(e,t){if(ol=Aa,e=nc(),Zl(e)){if("selectionStart"in e)var r={start:e.selectionStart,end:e.selectionEnd};else e:{r=(r=e.ownerDocument)&&r.defaultView||window;var n=r.getSelection&&r.getSelection();if(n&&n.rangeCount!==0){r=n.anchorNode;var a=n.anchorOffset,s=n.focusNode;n=n.focusOffset;try{r.nodeType,s.nodeType}catch{r=null;break e}var o=0,i=-1,u=-1,d=0,m=0,y=e,p=null;t:for(;;){for(var w;y!==r||a!==0&&y.nodeType!==3||(i=o+a),y!==s||n!==0&&y.nodeType!==3||(u=o+n),y.nodeType===3&&(o+=y.nodeValue.length),(w=y.firstChild)!==null;)p=y,y=w;for(;;){if(y===e)break t;if(p===r&&++d===a&&(i=o),p===s&&++m===n&&(u=o),(w=y.nextSibling)!==null)break;y=p,p=y.parentNode}y=w}r=i===-1||u===-1?null:{start:i,end:u}}else r=null}r=r||{start:0,end:0}}else r=null;for(il={focusedElem:e,selectionRange:r},Aa=!1,O=t;O!==null;)if(t=O,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,O=e;else for(;O!==null;){t=O;try{var v=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(v!==null){var k=v.memoizedProps,_=v.memoizedState,f=t.stateNode,c=f.getSnapshotBeforeUpdate(t.elementType===t.type?k:at(t.type,k),_);f.__reactInternalSnapshotBeforeUpdate=c}break;case 3:var g=t.stateNode.containerInfo;g.nodeType===1?g.textContent="":g.nodeType===9&&g.documentElement&&g.removeChild(g.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(E(163))}}catch(b){pe(t,t.return,b)}if(e=t.sibling,e!==null){e.return=t.return,O=e;break}O=t.return}return v=Di,Di=!1,v}function gn(e,t,r){var n=t.updateQueue;if(n=n!==null?n.lastEffect:null,n!==null){var a=n=n.next;do{if((a.tag&e)===e){var s=a.destroy;a.destroy=void 0,s!==void 0&&jl(t,r,s)}a=a.next}while(a!==n)}}function ts(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var r=t=t.next;do{if((r.tag&e)===e){var n=r.create;r.destroy=n()}r=r.next}while(r!==t)}}function Nl(e){var t=e.ref;if(t!==null){var r=e.stateNode;switch(e.tag){case 5:e=r;break;default:e=r}typeof t=="function"?t(e):t.current=e}}function Zc(e){var t=e.alternate;t!==null&&(e.alternate=null,Zc(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[ft],delete t[Cn],delete t[dl],delete t[P0],delete t[D0])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function ed(e){return e.tag===5||e.tag===3||e.tag===4}function Ri(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||ed(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Cl(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?r.nodeType===8?r.parentNode.insertBefore(e,t):r.insertBefore(e,t):(r.nodeType===8?(t=r.parentNode,t.insertBefore(e,r)):(t=r,t.appendChild(e)),r=r._reactRootContainer,r!=null||t.onclick!==null||(t.onclick=za));else if(n!==4&&(e=e.child,e!==null))for(Cl(e,t,r),e=e.sibling;e!==null;)Cl(e,t,r),e=e.sibling}function Al(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?r.insertBefore(e,t):r.appendChild(e);else if(n!==4&&(e=e.child,e!==null))for(Al(e,t,r),e=e.sibling;e!==null;)Al(e,t,r),e=e.sibling}var Ne=null,st=!1;function Et(e,t,r){for(r=r.child;r!==null;)td(e,t,r),r=r.sibling}function td(e,t,r){if(gt&&typeof gt.onCommitFiberUnmount=="function")try{gt.onCommitFiberUnmount(Qa,r)}catch{}switch(r.tag){case 5:De||jr(r,t);case 6:var n=Ne,a=st;Ne=null,Et(e,t,r),Ne=n,st=a,Ne!==null&&(st?(e=Ne,r=r.stateNode,e.nodeType===8?e.parentNode.removeChild(r):e.removeChild(r)):Ne.removeChild(r.stateNode));break;case 18:Ne!==null&&(st?(e=Ne,r=r.stateNode,e.nodeType===8?Es(e.parentNode,r):e.nodeType===1&&Es(e,r),kn(e)):Es(Ne,r.stateNode));break;case 4:n=Ne,a=st,Ne=r.stateNode.containerInfo,st=!0,Et(e,t,r),Ne=n,st=a;break;case 0:case 11:case 14:case 15:if(!De&&(n=r.updateQueue,n!==null&&(n=n.lastEffect,n!==null))){a=n=n.next;do{var s=a,o=s.destroy;s=s.tag,o!==void 0&&(s&2||s&4)&&jl(r,t,o),a=a.next}while(a!==n)}Et(e,t,r);break;case 1:if(!De&&(jr(r,t),n=r.stateNode,typeof n.componentWillUnmount=="function"))try{n.props=r.memoizedProps,n.state=r.memoizedState,n.componentWillUnmount()}catch(i){pe(r,t,i)}Et(e,t,r);break;case 21:Et(e,t,r);break;case 22:r.mode&1?(De=(n=De)||r.memoizedState!==null,Et(e,t,r),De=n):Et(e,t,r);break;default:Et(e,t,r)}}function Ti(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new K0),t.forEach(function(n){var a=ag.bind(null,e,n);r.has(n)||(r.add(n),n.then(a,a))})}}function nt(e,t){var r=t.deletions;if(r!==null)for(var n=0;na&&(a=o),n&=~s}if(n=a,n=ye()-n,n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*X0(n/1960))-n,10e?16:e,Tt===null)var n=!1;else{if(e=Tt,Tt=null,Ua=0,ee&6)throw Error(E(331));var a=ee;for(ee|=4,O=e.current;O!==null;){var s=O,o=s.child;if(O.flags&16){var i=s.deletions;if(i!==null){for(var u=0;uye()-wo?rr(e,0):vo|=r),Ve(e,t)}function ud(e,t){t===0&&(e.mode&1?(t=qn,qn<<=1,!(qn&130023424)&&(qn=4194304)):t=1);var r=Me();e=jt(e,t),e!==null&&($n(e,t,r),Ve(e,r))}function ng(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),ud(e,r)}function ag(e,t){var r=0;switch(e.tag){case 13:var n=e.stateNode,a=e.memoizedState;a!==null&&(r=a.retryLane);break;case 19:n=e.stateNode;break;default:throw Error(E(314))}n!==null&&n.delete(t),ud(e,r)}var cd;cd=function(e,t,r){if(e!==null)if(e.memoizedProps!==t.pendingProps||Fe.current)Oe=!0;else{if(!(e.lanes&r)&&!(t.flags&128))return Oe=!1,B0(e,t,r);Oe=!!(e.flags&131072)}else Oe=!1,ue&&t.flags&1048576&&mc(t,Ta,t.index);switch(t.lanes=0,t.tag){case 2:var n=t.type;ha(e,t),e=t.pendingProps;var a=Rr(t,Re.current);zr(t,r),a=go(null,t,n,e,a,r);var s=mo();return t.flags|=1,typeof a=="object"&&a!==null&&typeof a.render=="function"&&a.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,We(n)?(s=!0,Da(t)):s=!1,t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,oo(t),a.updater=es,t.stateNode=a,a._reactInternals=t,yl(t,n,e,r),t=wl(null,t,n,!0,s,r)):(t.tag=0,ue&&s&&eo(t),Te(null,t,a,r),t=t.child),t;case 16:n=t.elementType;e:{switch(ha(e,t),e=t.pendingProps,a=n._init,n=a(n._payload),t.type=n,a=t.tag=lg(n),e=at(n,e),a){case 0:t=vl(null,t,n,e,r);break e;case 1:t=_i(null,t,n,e,r);break e;case 11:t=Ai(null,t,n,e,r);break e;case 14:t=Ei(null,t,n,at(n.type,e),r);break e}throw Error(E(306,n,""))}return t;case 0:return n=t.type,a=t.pendingProps,a=t.elementType===n?a:at(n,a),vl(e,t,n,a,r);case 1:return n=t.type,a=t.pendingProps,a=t.elementType===n?a:at(n,a),_i(e,t,n,a,r);case 3:e:{if(Qc(t),e===null)throw Error(E(387));n=t.pendingProps,s=t.memoizedState,a=s.element,wc(e,t),La(t,n,null,r);var o=t.memoizedState;if(n=o.element,s.isDehydrated)if(s={element:n,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},t.updateQueue.baseState=s,t.memoizedState=s,t.flags&256){a=Lr(Error(E(423)),t),t=zi(e,t,n,r,a);break e}else if(n!==a){a=Lr(Error(E(424)),t),t=zi(e,t,n,r,a);break e}else for(Be=$t(t.stateNode.containerInfo.firstChild),Qe=t,ue=!0,lt=null,r=xc(t,null,n,r),t.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(Tr(),n===a){t=Nt(e,t,r);break e}Te(e,t,n,r)}t=t.child}return t;case 5:return kc(t),e===null&&ml(t),n=t.type,a=t.pendingProps,s=e!==null?e.memoizedProps:null,o=a.children,ul(n,a)?o=null:s!==null&&ul(n,s)&&(t.flags|=32),Gc(e,t),Te(e,t,o,r),t.child;case 6:return e===null&&ml(t),null;case 13:return Kc(e,t,r);case 4:return io(t,t.stateNode.containerInfo),n=t.pendingProps,e===null?t.child=Mr(t,null,n,r):Te(e,t,n,r),t.child;case 11:return n=t.type,a=t.pendingProps,a=t.elementType===n?a:at(n,a),Ai(e,t,n,a,r);case 7:return Te(e,t,t.pendingProps,r),t.child;case 8:return Te(e,t,t.pendingProps.children,r),t.child;case 12:return Te(e,t,t.pendingProps.children,r),t.child;case 10:e:{if(n=t.type._context,a=t.pendingProps,s=t.memoizedProps,o=a.value,le(Ma,n._currentValue),n._currentValue=o,s!==null)if(ut(s.value,o)){if(s.children===a.children&&!Fe.current){t=Nt(e,t,r);break e}}else for(s=t.child,s!==null&&(s.return=t);s!==null;){var i=s.dependencies;if(i!==null){o=s.child;for(var u=i.firstContext;u!==null;){if(u.context===n){if(s.tag===1){u=kt(-1,r&-r),u.tag=2;var d=s.updateQueue;if(d!==null){d=d.shared;var m=d.pending;m===null?u.next=u:(u.next=m.next,m.next=u),d.pending=u}}s.lanes|=r,u=s.alternate,u!==null&&(u.lanes|=r),pl(s.return,r,t),i.lanes|=r;break}u=u.next}}else if(s.tag===10)o=s.type===t.type?null:s.child;else if(s.tag===18){if(o=s.return,o===null)throw Error(E(341));o.lanes|=r,i=o.alternate,i!==null&&(i.lanes|=r),pl(o,r,t),o=s.sibling}else o=s.child;if(o!==null)o.return=s;else for(o=s;o!==null;){if(o===t){o=null;break}if(s=o.sibling,s!==null){s.return=o.return,o=s;break}o=o.return}s=o}Te(e,t,a.children,r),t=t.child}return t;case 9:return a=t.type,n=t.pendingProps.children,zr(t,r),a=tt(a),n=n(a),t.flags|=1,Te(e,t,n,r),t.child;case 14:return n=t.type,a=at(n,t.pendingProps),a=at(n.type,a),Ei(e,t,n,a,r);case 15:return Hc(e,t,t.type,t.pendingProps,r);case 17:return n=t.type,a=t.pendingProps,a=t.elementType===n?a:at(n,a),ha(e,t),t.tag=1,We(n)?(e=!0,Da(t)):e=!1,zr(t,r),Wc(t,n,a),yl(t,n,a,r),wl(null,t,n,!0,e,r);case 19:return qc(e,t,r);case 22:return Bc(e,t,r)}throw Error(E(156,t.tag))};function dd(e,t){return $u(e,t)}function sg(e,t,r,n){this.tag=e,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=n,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ze(e,t,r,n){return new sg(e,t,r,n)}function jo(e){return e=e.prototype,!(!e||!e.isReactComponent)}function lg(e){if(typeof e=="function")return jo(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Vl)return 11;if(e===Ul)return 14}return 2}function Vt(e,t){var r=e.alternate;return r===null?(r=Ze(e.tag,t,e.key,e.mode),r.elementType=e.elementType,r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=t,r.type=e.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=e.flags&14680064,r.childLanes=e.childLanes,r.lanes=e.lanes,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,t=e.dependencies,r.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function va(e,t,r,n,a,s){var o=2;if(n=e,typeof e=="function")jo(e)&&(o=1);else if(typeof e=="string")o=5;else e:switch(e){case pr:return nr(r.children,a,s,t);case Wl:o=8,a|=8;break;case Ws:return e=Ze(12,r,t,a|2),e.elementType=Ws,e.lanes=s,e;case Vs:return e=Ze(13,r,t,a),e.elementType=Vs,e.lanes=s,e;case Us:return e=Ze(19,r,t,a),e.elementType=Us,e.lanes=s,e;case ku:return ns(r,a,s,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case vu:o=10;break e;case wu:o=9;break e;case Vl:o=11;break e;case Ul:o=14;break e;case _t:o=16,n=null;break e}throw Error(E(130,e==null?e:typeof e,""))}return t=Ze(o,r,t,a),t.elementType=e,t.type=n,t.lanes=s,t}function nr(e,t,r,n){return e=Ze(7,e,n,t),e.lanes=r,e}function ns(e,t,r,n){return e=Ze(22,e,n,t),e.elementType=ku,e.lanes=r,e.stateNode={isHidden:!1},e}function Is(e,t,r){return e=Ze(6,e,null,t),e.lanes=r,e}function Ls(e,t,r){return t=Ze(4,e.children!==null?e.children:[],e.key,t),t.lanes=r,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function og(e,t,r,n,a){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=ys(0),this.expirationTimes=ys(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ys(0),this.identifierPrefix=n,this.onRecoverableError=a,this.mutableSourceEagerHydrationData=null}function No(e,t,r,n,a,s,o,i,u){return e=new og(e,t,r,i,u),t===1?(t=1,s===!0&&(t|=8)):t=0,s=Ze(3,null,null,t),e.current=s,s.stateNode=e,s.memoizedState={element:n,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},oo(s),e}function ig(e,t,r){var n=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(pd)}catch(e){console.error(e)}}pd(),pu.exports=qe;var gg=pu.exports,hd,Vi=gg;hd=Vi.createRoot,Vi.hydrateRoot;/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */var mg={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const pg=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().trim(),W=(e,t)=>{const r=F.forwardRef(({color:n="currentColor",size:a=24,strokeWidth:s=2,absoluteStrokeWidth:o,className:i="",children:u,...d},m)=>F.createElement("svg",{ref:m,...mg,width:a,height:a,stroke:n,strokeWidth:o?Number(s)*24/Number(a):s,className:["lucide",`lucide-${pg(e)}`,i].join(" "),...d},[...t.map(([y,p])=>F.createElement(y,p)),...Array.isArray(u)?u:[u]]));return r.displayName=`${e}`,r};/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const hg=W("AlertCircle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const yg=W("AlertTriangle",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z",key:"c3ski4"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const xg=W("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const vg=W("BarChart3",[["path",{d:"M3 3v18h18",key:"1s2lah"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const yd=W("BellOff",[["path",{d:"M8.7 3A6 6 0 0 1 18 8a21.3 21.3 0 0 0 .6 5",key:"o7mx20"}],["path",{d:"M17 17H3s3-2 3-9a4.67 4.67 0 0 1 .3-1.7",key:"16f1lm"}],["path",{d:"M10.3 21a1.94 1.94 0 0 0 3.4 0",key:"qgo35s"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const _o=W("Bell",[["path",{d:"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9",key:"1qo2s2"}],["path",{d:"M10.3 21a1.94 1.94 0 0 0 3.4 0",key:"qgo35s"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const xd=W("BookOpen",[["path",{d:"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z",key:"vv98re"}],["path",{d:"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z",key:"1cyq3y"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Rn=W("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const vd=W("Calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const wg=W("CheckCircle",[["path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14",key:"g774vq"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ui=W("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const kg=W("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Hi=W("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Bi=W("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Gi=W("ChevronsLeft",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Qi=W("ChevronsRight",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const bg=W("Cloud",[["path",{d:"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z",key:"p7xjir"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Sg=W("Code",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const jg=W("Database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ng=W("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Dl=W("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Cg=W("EyeOff",[["path",{d:"M9.88 9.88a3 3 0 1 0 4.24 4.24",key:"1jxqfv"}],["path",{d:"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68",key:"9wicm4"}],["path",{d:"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61",key:"1jreej"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ag=W("Eye",[["path",{d:"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z",key:"rwhkz3"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Eg=W("FileDown",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M12 18v-6",key:"17g6i2"}],["path",{d:"m9 15 3 3 3-3",key:"1npd3o"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const _g=W("FileUp",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M12 12v6",key:"3ahymv"}],["path",{d:"m15 15-3-3-3 3",key:"15xj92"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const wd=W("Folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const zg=W("Gamepad2",[["line",{x1:"6",x2:"10",y1:"11",y2:"11",key:"1gktln"}],["line",{x1:"8",x2:"8",y1:"9",y2:"13",key:"qnk9ow"}],["line",{x1:"15",x2:"15.01",y1:"12",y2:"12",key:"krot7o"}],["line",{x1:"18",x2:"18.01",y1:"10",y2:"10",key:"1lcuu1"}],["path",{d:"M17.32 5H6.68a4 4 0 0 0-3.978 3.59c-.006.052-.01.101-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258-.007-.05-.011-.1-.017-.151A4 4 0 0 0 17.32 5z",key:"mfqc10"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ki=W("GitBranch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const kd=W("Github",[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const bd=W("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Pg=W("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Sd=W("Key",[["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["path",{d:"m15.5 7.5 3 3L22 7l-3-3",key:"1rn1fs"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Dg=W("LogOut",[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Rg=W("Moon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Tg=W("Package",[["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}],["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Mg=W("Palette",[["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z",key:"12rzf8"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ig=W("Pause",[["rect",{width:"4",height:"16",x:"6",y:"4",key:"iffhe4"}],["rect",{width:"4",height:"16",x:"14",y:"4",key:"sjin7j"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const tr=W("PenLine",[["path",{d:"M12 20h9",key:"t2du7b"}],["path",{d:"M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z",key:"ymcmye"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Lg=W("Play",[["polygon",{points:"5 3 19 12 5 21 5 3",key:"191637"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Tn=W("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const jd=W("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Mn=W("Save",[["path",{d:"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z",key:"1owoqh"}],["polyline",{points:"17 21 17 13 7 13 7 21",key:"1md35c"}],["polyline",{points:"7 3 7 8 15 8",key:"8nz8an"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const zo=W("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Nd=W("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const $g=W("Shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Og=W("SlidersHorizontal",[["line",{x1:"21",x2:"14",y1:"4",y2:"4",key:"obuewd"}],["line",{x1:"10",x2:"3",y1:"4",y2:"4",key:"1q6298"}],["line",{x1:"21",x2:"12",y1:"12",y2:"12",key:"1iu8h1"}],["line",{x1:"8",x2:"3",y1:"12",y2:"12",key:"ntss68"}],["line",{x1:"21",x2:"16",y1:"20",y2:"20",key:"14d8ph"}],["line",{x1:"12",x2:"3",y1:"20",y2:"20",key:"m0wm8r"}],["line",{x1:"14",x2:"14",y1:"2",y2:"6",key:"14e1ph"}],["line",{x1:"8",x2:"8",y1:"10",y2:"14",key:"1i6ji0"}],["line",{x1:"16",x2:"16",y1:"18",y2:"22",key:"1lctlv"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Fg=W("Smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Po=W("Star",[["polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2",key:"8f66p6"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Wg=W("Sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const qi=W("Tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Yi=W("TestTube",[["path",{d:"M14.5 2v17.5c0 1.4-1.1 2.5-2.5 2.5h0c-1.4 0-2.5-1.1-2.5-2.5V2",key:"187lwq"}],["path",{d:"M8.5 2h7",key:"csnxdl"}],["path",{d:"M14.5 16h-5",key:"1ox875"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Rl=W("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Vg=W("Upload",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ug=W("Users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Cd=W("Wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",key:"cbrjhi"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ge=W("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/** - * @license lucide-react v0.344.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Hg=W("Zap",[["polygon",{points:"13 2 3 14 12 14 11 22 21 10 12 10 13 2",key:"45s27k"}]]),Bg={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},Xi=e=>{let t;const r=new Set,n=(m,y)=>{const p=typeof m=="function"?m(t):m;if(!Object.is(p,t)){const w=t;t=y??(typeof p!="object"||p===null)?p:Object.assign({},t,p),r.forEach(v=>v(t,w))}},a=()=>t,u={setState:n,getState:a,getInitialState:()=>d,subscribe:m=>(r.add(m),()=>r.delete(m)),destroy:()=>{(Bg?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),r.clear()}},d=t=e(n,a,u);return u},Gg=e=>e?Xi(e):Xi;var Ad={exports:{}},Ed={},_d={exports:{}},zd={};/** - * @license React - * use-sync-external-store-shim.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Or=F;function Qg(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Kg=typeof Object.is=="function"?Object.is:Qg,qg=Or.useState,Yg=Or.useEffect,Xg=Or.useLayoutEffect,Jg=Or.useDebugValue;function Zg(e,t){var r=t(),n=qg({inst:{value:r,getSnapshot:t}}),a=n[0].inst,s=n[1];return Xg(function(){a.value=r,a.getSnapshot=t,$s(a)&&s({inst:a})},[e,r,t]),Yg(function(){return $s(a)&&s({inst:a}),e(function(){$s(a)&&s({inst:a})})},[e]),Jg(r),r}function $s(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!Kg(e,r)}catch{return!0}}function em(e,t){return t()}var tm=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?em:Zg;zd.useSyncExternalStore=Or.useSyncExternalStore!==void 0?Or.useSyncExternalStore:tm;_d.exports=zd;var rm=_d.exports;/** - * @license React - * use-sync-external-store-shim/with-selector.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var is=F,nm=rm;function am(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var sm=typeof Object.is=="function"?Object.is:am,lm=nm.useSyncExternalStore,om=is.useRef,im=is.useEffect,um=is.useMemo,cm=is.useDebugValue;Ed.useSyncExternalStoreWithSelector=function(e,t,r,n,a){var s=om(null);if(s.current===null){var o={hasValue:!1,value:null};s.current=o}else o=s.current;s=um(function(){function u(w){if(!d){if(d=!0,m=w,w=n(w),a!==void 0&&o.hasValue){var v=o.value;if(a(v,w))return y=v}return y=w}if(v=y,sm(m,w))return v;var k=n(w);return a!==void 0&&a(v,k)?(m=w,v):(m=w,y=k)}var d=!1,m,y,p=r===void 0?null:r;return[function(){return u(t())},p===null?void 0:function(){return u(p())}]},[t,r,n,a]);var i=lm(e,s[0],s[1]);return im(function(){o.hasValue=!0,o.value=i},[i]),cm(i),i};Ad.exports=Ed;var dm=Ad.exports;const fm=nu(dm),Pd={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},{useDebugValue:gm}=tf,{useSyncExternalStoreWithSelector:mm}=fm;let Ji=!1;const pm=e=>e;function hm(e,t=pm,r){(Pd?"production":void 0)!=="production"&&r&&!Ji&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),Ji=!0);const n=mm(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,r);return gm(n),n}const ym=e=>{(Pd?"production":void 0)!=="production"&&typeof e!="function"&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");const t=typeof e=="function"?Gg(e):e,r=(n,a)=>hm(t,n,a);return Object.assign(r,t),r},xm=e=>ym,vm={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};function wm(e,t){let r;try{r=e()}catch{return}return{getItem:a=>{var s;const o=u=>u===null?null:JSON.parse(u,void 0),i=(s=r.getItem(a))!=null?s:null;return i instanceof Promise?i.then(o):o(i)},setItem:(a,s)=>r.setItem(a,JSON.stringify(s,void 0)),removeItem:a=>r.removeItem(a)}}const In=e=>t=>{try{const r=e(t);return r instanceof Promise?r:{then(n){return In(n)(r)},catch(n){return this}}}catch(r){return{then(n){return this},catch(n){return In(n)(r)}}}},km=(e,t)=>(r,n,a)=>{let s={getStorage:()=>localStorage,serialize:JSON.stringify,deserialize:JSON.parse,partialize:_=>_,version:0,merge:(_,f)=>({...f,..._}),...t},o=!1;const i=new Set,u=new Set;let d;try{d=s.getStorage()}catch{}if(!d)return e((..._)=>{console.warn(`[zustand persist middleware] Unable to update item '${s.name}', the given storage is currently unavailable.`),r(..._)},n,a);const m=In(s.serialize),y=()=>{const _=s.partialize({...n()});let f;const c=m({state:_,version:s.version}).then(g=>d.setItem(s.name,g)).catch(g=>{f=g});if(f)throw f;return c},p=a.setState;a.setState=(_,f)=>{p(_,f),y()};const w=e((..._)=>{r(..._),y()},n,a);let v;const k=()=>{var _;if(!d)return;o=!1,i.forEach(c=>c(n()));const f=((_=s.onRehydrateStorage)==null?void 0:_.call(s,n()))||void 0;return In(d.getItem.bind(d))(s.name).then(c=>{if(c)return s.deserialize(c)}).then(c=>{if(c)if(typeof c.version=="number"&&c.version!==s.version){if(s.migrate)return s.migrate(c.state,c.version);console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return c.state}).then(c=>{var g;return v=s.merge(c,(g=n())!=null?g:w),r(v,!0),y()}).then(()=>{f==null||f(v,void 0),o=!0,u.forEach(c=>c(v))}).catch(c=>{f==null||f(void 0,c)})};return a.persist={setOptions:_=>{s={...s,..._},_.getStorage&&(d=_.getStorage())},clearStorage:()=>{d==null||d.removeItem(s.name)},getOptions:()=>s,rehydrate:()=>k(),hasHydrated:()=>o,onHydrate:_=>(i.add(_),()=>{i.delete(_)}),onFinishHydration:_=>(u.add(_),()=>{u.delete(_)})},k(),v||w},bm=(e,t)=>(r,n,a)=>{let s={storage:wm(()=>localStorage),partialize:k=>k,version:0,merge:(k,_)=>({..._,...k}),...t},o=!1;const i=new Set,u=new Set;let d=s.storage;if(!d)return e((...k)=>{console.warn(`[zustand persist middleware] Unable to update item '${s.name}', the given storage is currently unavailable.`),r(...k)},n,a);const m=()=>{const k=s.partialize({...n()});return d.setItem(s.name,{state:k,version:s.version})},y=a.setState;a.setState=(k,_)=>{y(k,_),m()};const p=e((...k)=>{r(...k),m()},n,a);a.getInitialState=()=>p;let w;const v=()=>{var k,_;if(!d)return;o=!1,i.forEach(c=>{var g;return c((g=n())!=null?g:p)});const f=((_=s.onRehydrateStorage)==null?void 0:_.call(s,(k=n())!=null?k:p))||void 0;return In(d.getItem.bind(d))(s.name).then(c=>{if(c)if(typeof c.version=="number"&&c.version!==s.version){if(s.migrate)return[!0,s.migrate(c.state,c.version)];console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return[!1,c.state];return[!1,void 0]}).then(c=>{var g;const[b,A]=c;if(w=s.merge(A,(g=n())!=null?g:p),r(w,!0),b)return m()}).then(()=>{f==null||f(w,void 0),w=n(),o=!0,u.forEach(c=>c(w))}).catch(c=>{f==null||f(void 0,c)})};return a.persist={setOptions:k=>{s={...s,...k},k.storage&&(d=k.storage)},clearStorage:()=>{d==null||d.removeItem(s.name)},getOptions:()=>s,rehydrate:()=>v(),hasHydrated:()=>o,onHydrate:k=>(i.add(k),()=>{i.delete(k)}),onFinishHydration:k=>(u.add(k),()=>{u.delete(k)})},s.skipHydration||v(),w||p},Sm=(e,t)=>"getStorage"in t||"serialize"in t||"deserialize"in t?((vm?"production":void 0)!=="production"&&console.warn("[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead."),km(e,t)):bm(e,t),jm=Sm,Zi={query:"",tags:[],languages:[],platforms:[],sortBy:"stars",sortOrder:"desc",isAnalyzed:void 0,isSubscribed:void 0},Nm=[{id:"all",name:"全部分类",icon:"Folder",keywords:[]},{id:"web",name:"Web应用",icon:"Globe",keywords:["web应用","web","website","frontend","react","vue","angular"]},{id:"mobile",name:"移动应用",icon:"Smartphone",keywords:["移动应用","mobile","android","ios","flutter","react-native"]},{id:"desktop",name:"桌面应用",icon:"Code",keywords:["桌面应用","desktop","electron","gui","qt","gtk"]},{id:"database",name:"数据库",icon:"Database",keywords:["数据库","database","sql","nosql","mongodb","mysql","postgresql"]},{id:"ai",name:"AI/机器学习",icon:"Bot",keywords:["ai工具","ai","ml","machine learning","deep learning","neural"]},{id:"devtools",name:"开发工具",icon:"Wrench",keywords:["开发工具","tool","cli","build","deploy","debug","test","automation"]},{id:"security",name:"安全工具",icon:"Shield",keywords:["安全工具","security","encryption","auth","vulnerability"]},{id:"game",name:"游戏",icon:"Gamepad2",keywords:["游戏","game","gaming","unity","unreal","godot"]},{id:"design",name:"设计工具",icon:"Palette",keywords:["设计工具","design","ui","ux","graphics","image"]},{id:"productivity",name:"效率工具",icon:"Zap",keywords:["效率工具","productivity","note","todo","calendar","task"]},{id:"education",name:"教育学习",icon:"BookOpen",keywords:["教育学习","education","learning","tutorial","course"]},{id:"social",name:"社交网络",icon:"Users",keywords:["社交网络","social","chat","messaging","communication"]},{id:"analytics",name:"数据分析",icon:"BarChart3",keywords:["数据分析","analytics","data","visualization","chart"]}],At=xm()(jm((e,t)=>({user:null,githubToken:null,isAuthenticated:!1,repositories:[],isLoading:!1,lastSync:null,aiConfigs:[],activeAIConfig:null,webdavConfigs:[],activeWebDAVConfig:null,lastBackup:null,searchFilters:Zi,searchResults:[],releases:[],releaseSubscriptions:new Set,readReleases:new Set,customCategories:[],theme:"light",currentView:"repositories",language:"zh",setUser:r=>{console.log("Setting user:",r),e({user:r,isAuthenticated:!!r})},setGitHubToken:r=>{console.log("Setting GitHub token:",!!r),e({githubToken:r})},logout:()=>e({user:null,githubToken:null,isAuthenticated:!1,repositories:[],releases:[],releaseSubscriptions:new Set,readReleases:new Set,searchResults:[],lastSync:null}),setRepositories:r=>e({repositories:r,searchResults:r}),updateRepository:r=>e(n=>({repositories:n.repositories.map(s=>s.id===r.id?r:s),searchResults:n.searchResults.map(s=>s.id===r.id?r:s)})),setLoading:r=>e({isLoading:r}),setLastSync:r=>e({lastSync:r}),addAIConfig:r=>e(n=>({aiConfigs:[...n.aiConfigs,r]})),updateAIConfig:(r,n)=>e(a=>({aiConfigs:a.aiConfigs.map(s=>s.id===r?{...s,...n}:s)})),deleteAIConfig:r=>e(n=>({aiConfigs:n.aiConfigs.filter(a=>a.id!==r),activeAIConfig:n.activeAIConfig===r?null:n.activeAIConfig})),setActiveAIConfig:r=>e({activeAIConfig:r}),addWebDAVConfig:r=>e(n=>({webdavConfigs:[...n.webdavConfigs,r]})),updateWebDAVConfig:(r,n)=>e(a=>({webdavConfigs:a.webdavConfigs.map(s=>s.id===r?{...s,...n}:s)})),deleteWebDAVConfig:r=>e(n=>({webdavConfigs:n.webdavConfigs.filter(a=>a.id!==r),activeWebDAVConfig:n.activeWebDAVConfig===r?null:n.activeWebDAVConfig})),setActiveWebDAVConfig:r=>e({activeWebDAVConfig:r}),setLastBackup:r=>e({lastBackup:r}),setSearchFilters:r=>e(n=>({searchFilters:{...n.searchFilters,...r}})),setSearchResults:r=>e({searchResults:r}),setReleases:r=>e({releases:r}),addReleases:r=>e(n=>{const a=new Set(n.releases.map(o=>o.id)),s=r.filter(o=>!a.has(o.id));return{releases:[...n.releases,...s]}}),toggleReleaseSubscription:r=>e(n=>{const a=new Set(n.releaseSubscriptions);return a.has(r)?a.delete(r):a.add(r),{releaseSubscriptions:a}}),markReleaseAsRead:r=>e(n=>{const a=new Set(n.readReleases);return a.add(r),{readReleases:a}}),markAllReleasesAsRead:()=>e(r=>({readReleases:new Set(r.releases.map(a=>a.id))})),addCustomCategory:r=>e(n=>({customCategories:[...n.customCategories,{...r,isCustom:!0}]})),updateCustomCategory:(r,n)=>e(a=>({customCategories:a.customCategories.map(s=>s.id===r?{...s,...n}:s)})),deleteCustomCategory:r=>e(n=>({customCategories:n.customCategories.filter(a=>a.id!==r)})),setTheme:r=>e({theme:r}),setCurrentView:r=>e({currentView:r}),setLanguage:r=>e({language:r})}),{name:"github-stars-manager",partialize:e=>({user:e.user,githubToken:e.githubToken,isAuthenticated:e.isAuthenticated,repositories:e.repositories,lastSync:e.lastSync,aiConfigs:e.aiConfigs,activeAIConfig:e.activeAIConfig,webdavConfigs:e.webdavConfigs,activeWebDAVConfig:e.activeWebDAVConfig,lastBackup:e.lastBackup,releaseSubscriptions:Array.from(e.releaseSubscriptions),readReleases:Array.from(e.readReleases),releases:e.releases,customCategories:e.customCategories,theme:e.theme,language:e.language}),onRehydrateStorage:()=>e=>{var t,r,n;e&&(Array.isArray(e.releaseSubscriptions)?e.releaseSubscriptions=new Set(e.releaseSubscriptions):e.releaseSubscriptions=new Set,Array.isArray(e.readReleases)?e.readReleases=new Set(e.readReleases):e.readReleases=new Set,e.isAuthenticated=!!(e.user&&e.githubToken),e.searchResults=e.repositories||[],e.searchFilters=Zi,e.language||(e.language="zh"),e.webdavConfigs||(e.webdavConfigs=[]),e.customCategories||(e.customCategories=[]),console.log("Store rehydrated:",{isAuthenticated:e.isAuthenticated,repositoriesCount:((t=e.repositories)==null?void 0:t.length)||0,lastSync:e.lastSync,language:e.language,webdavConfigsCount:((r=e.webdavConfigs)==null?void 0:r.length)||0,customCategoriesCount:((n=e.customCategories)==null?void 0:n.length)||0}))}})),Do=(e,t="zh")=>[...Nm.map(n=>({...n,name:t==="en"?Cm(n.name):n.name})),...e],Cm=e=>({全部分类:"All Categories",Web应用:"Web Apps",移动应用:"Mobile Apps",桌面应用:"Desktop Apps",数据库:"Database","AI/机器学习":"AI/Machine Learning",开发工具:"Development Tools",安全工具:"Security Tools",游戏:"Games",设计工具:"Design Tools",效率工具:"Productivity Tools",教育学习:"Education",社交网络:"Social Network",数据分析:"Data Analytics"})[e]||e,Am="https://api.github.com";class Vn{constructor(t){this.token=t}async makeRequest(t,r={}){const n=await fetch(`${Am}${t}`,{...r,headers:{Authorization:`Bearer ${this.token}`,Accept:"application/vnd.github.v3+json","X-GitHub-Api-Version":"2022-11-28",...r.headers}});if(!n.ok)throw n.status===401?new Error("GitHub token expired or invalid"):new Error(`GitHub API error: ${n.status} ${n.statusText}`);return n.json()}async getCurrentUser(){return this.makeRequest("/user")}async getStarredRepositories(t=1,r=100){return await this.makeRequest(`/user/starred?page=${t}&per_page=${r}&sort=updated`)}async getAllStarredRepositories(){let t=[],r=1;const n=100;for(;;){const a=await this.getStarredRepositories(r,n);if(a.length===0||(t=[...t,...a],a.lengthsetTimeout(s,100))}return t}async getRepositoryReadme(t,r){try{const n=await this.makeRequest(`/repos/${t}/${r}/readme`);return n.encoding==="base64"?atob(n.content):n.content}catch(n){return console.warn(`Failed to fetch README for ${t}/${r}:`,n),""}}async getRepositoryReleases(t,r,n=1,a=30){try{return(await this.makeRequest(`/repos/${t}/${r}/releases?page=${n}&per_page=${a}`)).map(o=>({id:o.id,tag_name:o.tag_name,name:o.name||o.tag_name,body:o.body||"",published_at:o.published_at,html_url:o.html_url,repository:{id:0,full_name:`${t}/${r}`,name:r}}))}catch(s){return console.warn(`Failed to fetch releases for ${t}/${r}:`,s),[]}}async getMultipleRepositoryReleases(t){const r=[];for(const n of t){const[a,s]=n.full_name.split("/"),o=await this.getRepositoryReleases(a,s,1,5);o.forEach(i=>{i.repository.id=n.id}),r.push(...o),await new Promise(i=>setTimeout(i,150))}return r.sort((n,a)=>new Date(a.published_at).getTime()-new Date(n.published_at).getTime())}async getIncrementalRepositoryReleases(t,r,n,a=10){try{let s=`/repos/${t}/${r}/releases?per_page=${a}`;const i=(await this.makeRequest(s)).map(u=>({id:u.id,tag_name:u.tag_name,name:u.name||u.tag_name,body:u.body||"",published_at:u.published_at,html_url:u.html_url,repository:{id:0,full_name:`${t}/${r}`,name:r}}));if(n){const u=new Date(n);return i.filter(d=>new Date(d.published_at)>u)}return i}catch(s){return console.warn(`Failed to fetch incremental releases for ${t}/${r}:`,s),[]}}async checkRateLimit(){const t=await this.makeRequest("/rate_limit");return{remaining:t.rate.remaining,reset:t.rate.reset}}}const Em=()=>{const[e,t]=F.useState(""),[r,n]=F.useState(!1),[a,s]=F.useState(""),{setUser:o,setGitHubToken:i,repositories:u,lastSync:d}=At(),m=async()=>{if(!e.trim()){s("Please enter a valid GitHub token");return}n(!0),s("");try{const w=await new Vn(e).getCurrentUser();i(e),o(w),console.log("Successfully authenticated user:",w)}catch(p){console.error("Authentication failed:",p),s(p instanceof Error?p.message:"Failed to authenticate. Please check your token.")}finally{n(!1)}},y=p=>{p.key==="Enter"&&!r&&m()};return l.jsx("div",{className:"min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100 flex items-center justify-center p-4",children:l.jsxs("div",{className:"max-w-md w-full",children:[l.jsxs("div",{className:"text-center mb-8",children:[l.jsx("div",{className:"flex items-center justify-center w-16 h-16 bg-blue-600 rounded-2xl mx-auto mb-4 shadow-lg",children:l.jsx(Po,{className:"w-8 h-8 text-white"})}),l.jsx("h1",{className:"text-3xl font-bold text-gray-900 mb-2",children:"GitHub Stars Manager"}),l.jsx("p",{className:"text-gray-600 text-lg",children:"AI-powered repository management"})]}),l.jsxs("div",{className:"bg-white rounded-2xl shadow-xl border border-gray-200 p-8",children:[l.jsxs("div",{className:"text-center mb-6",children:[l.jsx(kd,{className:"w-10 h-10 text-gray-700 mx-auto mb-3"}),l.jsx("h2",{className:"text-xl font-semibold text-gray-900 mb-2",children:"Connect with GitHub"}),l.jsx("p",{className:"text-gray-600 text-sm",children:"Enter your GitHub personal access token to get started"})]}),u.length>0&&d&&l.jsxs("div",{className:"mb-4 p-3 bg-green-50 border border-green-200 rounded-lg",children:[l.jsxs("div",{className:"flex items-center space-x-2 text-green-700",children:[l.jsx("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),l.jsxs("span",{className:"text-sm font-medium",children:["已缓存 ",u.length," 个仓库"]})]}),l.jsxs("p",{className:"text-xs text-green-600 mt-1",children:["上次同步: ",new Date(d).toLocaleString()]})]}),l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{children:[l.jsx("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"GitHub Personal Access Token"}),l.jsxs("div",{className:"relative",children:[l.jsx(Sd,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 w-5 h-5"}),l.jsx("input",{type:"password",placeholder:"ghp_xxxxxxxxxxxxxxxxxxxx",value:e,onChange:p=>{t(p.target.value),s("")},onKeyPress:y,disabled:r,className:"w-full pl-10 pr-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white text-gray-900 disabled:bg-gray-50 disabled:text-gray-500"})]})]}),a&&l.jsxs("div",{className:"flex items-center space-x-2 p-3 bg-red-50 border border-red-200 rounded-lg",children:[l.jsx(hg,{className:"w-5 h-5 text-red-500 flex-shrink-0"}),l.jsx("p",{className:"text-sm text-red-700",children:a})]}),l.jsx("button",{onClick:m,disabled:r||!e.trim(),className:"w-full flex items-center justify-center space-x-2 px-6 py-3 bg-blue-600 hover:bg-blue-700 disabled:bg-gray-400 disabled:cursor-not-allowed text-white rounded-lg font-medium transition-colors",children:r?l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"w-5 h-5 border-2 border-white border-t-transparent rounded-full animate-spin"}),l.jsx("span",{children:"Connecting..."})]}):l.jsxs(l.Fragment,{children:[l.jsx("span",{children:"Connect to GitHub"}),l.jsx(xg,{className:"w-5 h-5"})]})})]}),l.jsxs("div",{className:"mt-6 p-4 bg-gray-50 rounded-lg",children:[l.jsx("h3",{className:"font-medium text-gray-900 mb-2 text-sm",children:"How to create a GitHub token:"}),l.jsxs("ol",{className:"text-xs text-gray-600 space-y-1",children:[l.jsx("li",{children:"1. Go to GitHub Settings → Developer settings → Personal access tokens"}),l.jsx("li",{children:'2. Click "Generate new token (classic)"'}),l.jsxs("li",{children:["3. Select scopes: ",l.jsx("strong",{children:"repo"})," and ",l.jsx("strong",{children:"user"})]}),l.jsx("li",{children:"4. Copy the generated token and paste it above"})]}),l.jsx("div",{className:"mt-3",children:l.jsx("a",{href:"https://github.com/settings/tokens",target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 hover:text-blue-700 text-sm font-medium hover:underline",children:"Create token on GitHub →"})})]})]})]})})},_m=()=>{const{user:e,theme:t,currentView:r,isLoading:n,lastSync:a,githubToken:s,repositories:o,setTheme:i,setCurrentView:u,setRepositories:d,setReleases:m,setLoading:y,setLastSync:p,logout:w,language:v}=At(),k=async()=>{if(!s){alert("GitHub token not found. Please login again.");return}y(!0);try{const c=new Vn(s);console.log("Fetching starred repositories...");const g=await c.getAllStarredRepositories(),b=new Map(o.map(M=>[M.id,M])),A=g.map(M=>{const B=b.get(M.id);return B?{...M,ai_summary:B.ai_summary,ai_tags:B.ai_tags,ai_platforms:B.ai_platforms,analyzed_at:B.analyzed_at}:M});d(A),console.log("Fetching releases...");const P=await c.getMultipleRepositoryReleases(A.slice(0,20));m(P),p(new Date().toISOString()),console.log("Sync completed successfully");const R=g.length-o.length;R>0?alert(`同步完成!发现 ${R} 个新仓库。`):alert("同步完成!所有仓库都是最新的。")}catch(c){console.error("Sync failed:",c),c instanceof Error&&c.message.includes("token")?(alert("GitHub token 已过期或无效,请重新登录。"),w()):alert("同步失败,请检查网络连接。")}finally{y(!1)}},_=c=>{if(!c)return"Never";const g=new Date(c),A=new Date().getTime()-g.getTime(),P=Math.floor(A/(1e3*60*60));return P<1?"Just now":P<24?`${P}h ago`:g.toLocaleDateString()},f=(c,g)=>v==="zh"?c:g;return l.jsx("header",{className:"bg-white dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 sticky top-0 z-50",children:l.jsx("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8",children:l.jsxs("div",{className:"flex items-center justify-between h-16",children:[l.jsxs("div",{className:"flex items-center space-x-3",children:[l.jsx("div",{className:"flex items-center justify-center w-10 h-10 bg-blue-600 rounded-lg",children:l.jsx(Po,{className:"w-6 h-6 text-white"})}),l.jsxs("div",{children:[l.jsx("h1",{className:"text-xl font-bold text-gray-900 dark:text-white",children:"GitHub Stars Manager"}),l.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:"AI-powered repository management"})]})]}),l.jsxs("nav",{className:"hidden md:flex items-center space-x-1",children:[l.jsxs("button",{onClick:()=>u("repositories"),className:`px-4 py-2 rounded-lg font-medium transition-colors ${r==="repositories"?"bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300":"text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700"}`,children:[l.jsx(zo,{className:"w-4 h-4 inline mr-2"}),f("仓库","Repositories")," (",o.length,")"]}),l.jsxs("button",{onClick:()=>u("releases"),className:`px-4 py-2 rounded-lg font-medium transition-colors ${r==="releases"?"bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300":"text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700"}`,children:[l.jsx(vd,{className:"w-4 h-4 inline mr-2"}),f("发布","Releases")]}),l.jsxs("button",{onClick:()=>u("settings"),className:`px-4 py-2 rounded-lg font-medium transition-colors ${r==="settings"?"bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300":"text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700"}`,children:[l.jsx(Nd,{className:"w-4 h-4 inline mr-2"}),f("设置","Settings")]})]}),l.jsxs("div",{className:"flex items-center space-x-3",children:[l.jsx("a",{href:"https://github.com/AmintaCCCP/GithubStarsManager",target:"_blank",rel:"noopener noreferrer",className:"p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",title:f("查看项目源码","View project source code"),children:l.jsx(kd,{className:"w-5 h-5 text-gray-700 dark:text-gray-300"})}),l.jsxs("div",{className:"hidden sm:flex items-center space-x-2 text-sm text-gray-500 dark:text-gray-400",children:[l.jsxs("span",{children:[f("上次同步:","Last sync:")," ",_(a)]}),l.jsx("button",{onClick:k,disabled:n,className:"p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors disabled:opacity-50",title:f("同步仓库","Sync repositories"),children:l.jsx(jd,{className:`w-4 h-4 ${n?"animate-spin":""}`})})]}),l.jsx("button",{onClick:()=>i(t==="light"?"dark":"light"),className:"p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",title:f("切换主题","Toggle theme"),children:t==="light"?l.jsx(Rg,{className:"w-5 h-5 text-gray-700 dark:text-gray-300"}):l.jsx(Wg,{className:"w-5 h-5 text-gray-700 dark:text-gray-300"})}),e&&l.jsxs("div",{className:"flex items-center space-x-3",children:[l.jsx("img",{src:e.avatar_url,alt:e.name||e.login,className:"w-8 h-8 rounded-full"}),l.jsx("div",{className:"hidden sm:block",children:l.jsx("p",{className:"text-sm font-medium text-gray-900 dark:text-white",children:e.name||e.login})}),l.jsx("button",{onClick:w,className:"p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",title:f("退出登录","Logout"),children:l.jsx(Dg,{className:"w-4 h-4 text-gray-700 dark:text-gray-300"})})]})]})]})})})};class us{constructor(t,r="zh"){this.config=t,this.language=r}async analyzeRepository(t,r,n){var s,o;const a=this.createAnalysisPrompt(t,r,n);try{const i=await fetch(`${this.config.baseUrl}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.config.apiKey}`},body:JSON.stringify({model:this.config.model,messages:[{role:"system",content:this.language==="zh"?"你是一个专业的GitHub仓库分析助手。请严格按照用户指定的语言进行分析,无论原始内容是什么语言。请用中文简洁地分析仓库,提供实用的概述、分类标签和支持的平台类型。":"You are a professional GitHub repository analysis assistant. Please strictly analyze in the language specified by the user, regardless of the original content language. Please analyze repositories concisely in English, providing practical overviews, category tags, and supported platform types."},{role:"user",content:a}],temperature:.3,max_tokens:400})});if(!i.ok)throw new Error(`AI API error: ${i.status} ${i.statusText}`);const d=(o=(s=(await i.json()).choices[0])==null?void 0:s.message)==null?void 0:o.content;if(!d)throw new Error("No content received from AI service");return this.parseAIResponse(d)}catch(i){return console.error("AI analysis failed:",i),this.fallbackAnalysis(t)}}createAnalysisPrompt(t,r,n){var o;const a=` -${this.language==="zh"?"仓库名称":"Repository Name"}: ${t.full_name} -${this.language==="zh"?"描述":"Description"}: ${t.description||(this.language==="zh"?"无描述":"No description")} -${this.language==="zh"?"编程语言":"Programming Language"}: ${t.language||(this.language==="zh"?"未知":"Unknown")} -${this.language==="zh"?"Star数":"Stars"}: ${t.stargazers_count} -${this.language==="zh"?"主题标签":"Topics"}: ${((o=t.topics)==null?void 0:o.join(", "))||(this.language==="zh"?"无":"None")} - -${this.language==="zh"?"README内容 (前2000字符)":"README Content (first 2000 characters)"}: -${r.substring(0,2e3)} - `.trim(),s=n&&n.length>0?` - -${this.language==="zh"?"可用的应用分类":"Available Application Categories"}: ${n.join(", ")}`:"";return this.language==="zh"?` -请分析这个GitHub仓库并提供: - -1. 一个简洁的中文概述(不超过50字),说明这个仓库的主要功能和用途 -2. 3-5个相关的应用类型标签(用中文,类似应用商店的分类,如:开发工具、Web应用、移动应用、数据库、AI工具等${n?",请优先从提供的分类中选择":""}) -3. 支持的平台类型(从以下选择:mac、windows、linux、ios、android、docker、web、cli) - -重要:请严格使用中文进行分析和回复,无论原始README是什么语言。 - -请以JSON格式回复: -{ - "summary": "你的中文概述", - "tags": ["标签1", "标签2", "标签3", "标签4", "标签5"], - "platforms": ["platform1", "platform2", "platform3"] -} - -仓库信息: -${a}${s} - -重点关注实用性和准确的分类,帮助用户快速理解仓库的用途和支持的平台。 - `.trim():` -Please analyze this GitHub repository and provide: - -1. A concise English overview (no more than 50 words) explaining the main functionality and purpose of this repository -2. 3-5 relevant application type tags (in English, similar to app store categories, such as: development tools, web apps, mobile apps, database, AI tools, etc.${n?", please prioritize from the provided categories":""}) -3. Supported platform types (choose from: mac, windows, linux, ios, android, docker, web, cli) - -Important: Please strictly use English for analysis and response, regardless of the original README language. - -Please reply in JSON format: -{ - "summary": "Your English overview", - "tags": ["tag1", "tag2", "tag3", "tag4", "tag5"], - "platforms": ["platform1", "platform2", "platform3"] -} - -Repository information: -${a}${s} - -Focus on practicality and accurate categorization to help users quickly understand the repository's purpose and supported platforms. - `.trim()}parseAIResponse(t){try{const r=t.match(/\{[\s\S]*\}/);if(r){const n=JSON.parse(r[0]);return{summary:n.summary||(this.language==="zh"?"无法生成概述":"Unable to generate summary"),tags:Array.isArray(n.tags)?n.tags.slice(0,5):[],platforms:Array.isArray(n.platforms)?n.platforms.slice(0,8):[]}}return{summary:t.substring(0,50)+"...",tags:[],platforms:[]}}catch(r){return console.error("Failed to parse AI response:",r),{summary:this.language==="zh"?"分析失败":"Analysis failed",tags:[],platforms:[]}}}fallbackAnalysis(t){const r=t.description?`${t.description}(${t.language||(this.language==="zh"?"未知语言":"Unknown language")}${this.language==="zh"?"项目":" project"})`:this.language==="zh"?`一个${t.language||"软件"}项目,拥有${t.stargazers_count}个星标`:`A ${t.language||"software"} project with ${t.stargazers_count} stars`,n=[],a=[];if(t.language){const m=(this.language==="zh"?{JavaScript:{tag:"Web应用",platforms:["web","cli"]},TypeScript:{tag:"Web应用",platforms:["web","cli"]},Python:{tag:"Python工具",platforms:["linux","mac","windows","cli"]},Java:{tag:"Java应用",platforms:["linux","mac","windows"]},Go:{tag:"系统工具",platforms:["linux","mac","windows","cli"]},Rust:{tag:"系统工具",platforms:["linux","mac","windows","cli"]},"C++":{tag:"系统软件",platforms:["linux","mac","windows"]},C:{tag:"系统软件",platforms:["linux","mac","windows"]},Swift:{tag:"移动应用",platforms:["ios","mac"]},Kotlin:{tag:"移动应用",platforms:["android"]},Dart:{tag:"移动应用",platforms:["ios","android"]},PHP:{tag:"Web应用",platforms:["web","linux"]},Ruby:{tag:"Web应用",platforms:["web","linux","mac"]},Shell:{tag:"脚本工具",platforms:["linux","mac","cli"]}}:{JavaScript:{tag:"Web App",platforms:["web","cli"]},TypeScript:{tag:"Web App",platforms:["web","cli"]},Python:{tag:"Python Tool",platforms:["linux","mac","windows","cli"]},Java:{tag:"Java App",platforms:["linux","mac","windows"]},Go:{tag:"System Tool",platforms:["linux","mac","windows","cli"]},Rust:{tag:"System Tool",platforms:["linux","mac","windows","cli"]},"C++":{tag:"System Software",platforms:["linux","mac","windows"]},C:{tag:"System Software",platforms:["linux","mac","windows"]},Swift:{tag:"Mobile App",platforms:["ios","mac"]},Kotlin:{tag:"Mobile App",platforms:["android"]},Dart:{tag:"Mobile App",platforms:["ios","android"]},PHP:{tag:"Web App",platforms:["web","linux"]},Ruby:{tag:"Web App",platforms:["web","linux","mac"]},Shell:{tag:"Script Tool",platforms:["linux","mac","cli"]}})[t.language];m&&(n.push(m.tag),a.push(...m.platforms))}const s=(t.description||"").toLowerCase(),o=t.name.toLowerCase(),i=`${s} ${o}`,u=this.language==="zh"?{web:{keywords:["web","frontend","website"],tag:"Web应用",platforms:["web"]},api:{keywords:["api","backend","server"],tag:"后端服务",platforms:["linux","docker"]},cli:{keywords:["cli","command","tool"],tag:"命令行工具",platforms:["cli","linux","mac","windows"]},library:{keywords:["library","framework","sdk"],tag:"开发库",platforms:[]},mobile:{keywords:["mobile","android","ios"],tag:"移动应用",platforms:[]},game:{keywords:["game","gaming"],tag:"游戏",platforms:["windows","mac","linux"]},ai:{keywords:["ai","ml","machine learning"],tag:"AI工具",platforms:["linux","mac","windows"]},database:{keywords:["database","db","storage"],tag:"数据库",platforms:["linux","docker"]},docker:{keywords:["docker","container"],tag:"容器化",platforms:["docker"]}}:{web:{keywords:["web","frontend","website"],tag:"Web App",platforms:["web"]},api:{keywords:["api","backend","server"],tag:"Backend Service",platforms:["linux","docker"]},cli:{keywords:["cli","command","tool"],tag:"CLI Tool",platforms:["cli","linux","mac","windows"]},library:{keywords:["library","framework","sdk"],tag:"Development Library",platforms:[]},mobile:{keywords:["mobile","android","ios"],tag:"Mobile App",platforms:[]},game:{keywords:["game","gaming"],tag:"Game",platforms:["windows","mac","linux"]},ai:{keywords:["ai","ml","machine learning"],tag:"AI Tool",platforms:["linux","mac","windows"]},database:{keywords:["database","db","storage"],tag:"Database",platforms:["linux","docker"]},docker:{keywords:["docker","container"],tag:"Containerized",platforms:["docker"]}};return Object.values(u).forEach(({keywords:d,tag:m,platforms:y})=>{d.some(p=>i.includes(p))&&(n.push(m),a.push(...y))}),i.includes("android")&&a.push("android"),i.includes("ios")&&a.push("ios"),{summary:r.substring(0,50),tags:[...new Set(n)].slice(0,5),platforms:[...new Set(a)].slice(0,8)}}async testConnection(){try{return(await fetch(`${this.config.baseUrl}/models`,{method:"GET",headers:{Authorization:`Bearer ${this.config.apiKey}`}})).ok}catch{return!1}}async searchRepositories(t,r){var n,a;if(!r.trim())return t;try{const s=this.createSearchPrompt(r),o=await fetch(`${this.config.baseUrl}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.config.apiKey}`},body:JSON.stringify({model:this.config.model,messages:[{role:"system",content:this.language==="zh"?"你是一个智能搜索助手。请分析用户的搜索意图,提取关键词并提供多语言翻译。":"You are an intelligent search assistant. Please analyze user search intent, extract keywords and provide multilingual translations."},{role:"user",content:s}],temperature:.1,max_tokens:200})});if(o.ok){const u=(a=(n=(await o.json()).choices[0])==null?void 0:n.message)==null?void 0:a.content;if(u){const d=this.parseSearchResponse(u);return this.performEnhancedSearch(t,r,d)}}}catch(s){console.warn("AI search failed, falling back to basic search:",s)}return this.performBasicSearch(t,r)}createSearchPrompt(t){return this.language==="zh"?` -用户搜索查询: "${t}" - -请分析这个搜索查询并提供: -1. 主要关键词(中英文) -2. 相关的技术术语和同义词 -3. 可能的应用类型或分类 - -以JSON格式回复: -{ - "keywords": ["关键词1", "keyword1", "关键词2", "keyword2"], - "categories": ["分类1", "category1"], - "synonyms": ["同义词1", "synonym1"] -} - `.trim():` -User search query: "${t}" - -Please analyze this search query and provide: -1. Main keywords (in English and Chinese) -2. Related technical terms and synonyms -3. Possible application types or categories - -Reply in JSON format: -{ - "keywords": ["keyword1", "关键词1", "keyword2", "关键词2"], - "categories": ["category1", "分类1"], - "synonyms": ["synonym1", "同义词1"] -} - `.trim()}parseSearchResponse(t){try{const r=t.match(/\{[\s\S]*\}/);if(r){const n=JSON.parse(r[0]);return[...n.keywords||[],...n.categories||[],...n.synonyms||[]].filter(s=>typeof s=="string"&&s.length>0)}}catch(r){console.warn("Failed to parse AI search response:",r)}return[]}performEnhancedSearch(t,r,n){const a=[r,...n];return t.filter(s=>{const o=[s.name,s.full_name,s.description||"",s.language||"",...s.topics||[],s.ai_summary||"",...s.ai_tags||[],...s.ai_platforms||[]].join(" ").toLowerCase();return a.some(i=>{const u=i.toLowerCase();return o.includes(u)||u.split(/\s+/).every(d=>o.includes(d))})})}performBasicSearch(t,r){const n=r.toLowerCase();return t.filter(a=>{const s=[a.name,a.full_name,a.description||"",a.language||"",...a.topics||[],a.ai_summary||"",...a.ai_tags||[],...a.ai_platforms||[]].join(" ").toLowerCase();return n.split(/\s+/).every(i=>s.includes(i))})}static async searchRepositories(t,r){if(!r.trim())return t;const n=r.toLowerCase();return t.filter(a=>{const s=[a.name,a.full_name,a.description||"",a.language||"",...a.topics||[],a.ai_summary||"",...a.ai_tags||[],...a.ai_platforms||[]].join(" ").toLowerCase();return n.split(/\s+/).every(i=>s.includes(i))})}}const zm=()=>{const{searchFilters:e,repositories:t,releaseSubscriptions:r,aiConfigs:n,activeAIConfig:a,language:s,setSearchFilters:o,setSearchResults:i}=At(),[u,d]=F.useState(!1),[m,y]=F.useState(e.query),[p,w]=F.useState(!1),[v,k]=F.useState([]),[_,f]=F.useState([]),[c,g]=F.useState([]);F.useEffect(()=>{const h=[...new Set(t.map(L=>L.language).filter(Boolean))],N=[...new Set([...t.flatMap(L=>L.ai_tags||[]),...t.flatMap(L=>L.topics||[])])],j=[...new Set(t.flatMap(L=>L.ai_platforms||[]))];k(h),f(N),g(j)},[t]),F.useEffect(()=>{(async()=>{e.query&&!p?(w(!0),await b(),w(!1)):e.query||A()})()},[e,t,r]);const b=async()=>{let h=t;if(e.query){const N=n.find(j=>j.id===a);if(N)try{h=await new us(N,s).searchRepositories(h,e.query)}catch(j){console.warn("AI search failed, falling back to basic search:",j),h=P(h,e.query)}else h=P(h,e.query)}h=R(h),i(h)},A=()=>{const h=R(t);i(h)},P=(h,N)=>{const j=N.toLowerCase();return h.filter(L=>{const G=[L.name,L.full_name,L.description||"",L.language||"",...L.topics||[],L.ai_summary||"",...L.ai_tags||[],...L.ai_platforms||[]].join(" ").toLowerCase();return j.split(/\s+/).every(ne=>G.includes(ne))})},R=h=>{let N=h;return e.languages.length>0&&(N=N.filter(j=>j.language&&e.languages.includes(j.language))),e.tags.length>0&&(N=N.filter(j=>{const L=[...j.ai_tags||[],...j.topics||[]];return e.tags.some(G=>L.includes(G))})),e.platforms.length>0&&(N=N.filter(j=>{const L=j.ai_platforms||[];return e.platforms.some(G=>L.includes(G))})),e.isAnalyzed!==void 0&&(N=N.filter(j=>e.isAnalyzed?!!j.analyzed_at:!j.analyzed_at)),e.isSubscribed!==void 0&&(N=N.filter(j=>e.isSubscribed?r.has(j.id):!r.has(j.id))),e.minStars!==void 0&&(N=N.filter(j=>j.stargazers_count>=e.minStars)),e.maxStars!==void 0&&(N=N.filter(j=>j.stargazers_count<=e.maxStars)),N.sort((j,L)=>{let G,J;switch(e.sortBy){case"stars":G=j.stargazers_count,J=L.stargazers_count;break;case"updated":G=new Date(j.updated_at).getTime(),J=new Date(L.updated_at).getTime();break;case"name":G=j.name.toLowerCase(),J=L.name.toLowerCase();break;default:G=new Date(j.updated_at).getTime(),J=new Date(L.updated_at).getTime()}return e.sortOrder==="desc"?J>G?1:-1:G>J?1:-1}),N},M=()=>{o({query:m})},B=()=>{y(""),o({query:""})},V=h=>{h.key==="Enter"&&M()},U=h=>{const N=e.languages.includes(h)?e.languages.filter(j=>j!==h):[...e.languages,h];o({languages:N})},H=h=>{const N=e.tags.includes(h)?e.tags.filter(j=>j!==h):[...e.tags,h];o({tags:N})},K=h=>{const N=e.platforms.includes(h)?e.platforms.filter(j=>j!==h):[...e.platforms,h];o({platforms:N})},T=()=>{y(""),o({query:"",tags:[],languages:[],platforms:[],sortBy:"stars",sortOrder:"desc",minStars:void 0,maxStars:void 0,isAnalyzed:void 0,isSubscribed:void 0})},$=e.languages.length+e.tags.length+e.platforms.length+(e.minStars!==void 0?1:0)+(e.maxStars!==void 0?1:0)+(e.isAnalyzed!==void 0?1:0)+(e.isSubscribed!==void 0?1:0),te=h=>({mac:"fab fa-apple",macos:"fab fa-apple",windows:"fab fa-windows",win:"fab fa-windows",linux:"fab fa-linux",ios:"fab fa-apple",android:"fab fa-android",web:"fas fa-globe",cli:"fas fa-terminal",docker:"fab fa-docker"})[h.toLowerCase()]||"fas fa-desktop",q=(h,N)=>s==="zh"?h:N;return l.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-xl border border-gray-200 dark:border-gray-700 p-6 mb-6",children:[l.jsxs("div",{className:"relative mb-4",children:[l.jsx(zo,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 w-5 h-5"}),l.jsx("input",{type:"text",placeholder:q("使用自然语言搜索仓库 (例如: '查找所有笔记应用')","Search repositories with natural language (e.g., 'find all note-taking apps')"),value:m,onChange:h=>y(h.target.value),onKeyPress:V,className:"w-full pl-10 pr-32 py-3 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white dark:bg-gray-700 text-gray-900 dark:text-white placeholder-gray-500 dark:placeholder-gray-400"}),l.jsxs("div",{className:"absolute right-2 top-1/2 transform -translate-y-1/2 flex items-center space-x-2",children:[m&&l.jsx("button",{onClick:B,className:"p-1.5 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 transition-colors",title:q("清除搜索","Clear search"),children:l.jsx(Ge,{className:"w-4 h-4"})}),l.jsx("button",{onClick:M,disabled:p,className:"px-4 py-1.5 bg-blue-600 text-white rounded-md hover:bg-blue-700 transition-colors text-sm font-medium disabled:opacity-50",children:p?q("搜索中...","Searching..."):q("搜索","Search")})]})]}),l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"flex items-center space-x-3",children:[l.jsxs("button",{onClick:()=>d(!u),className:`flex items-center space-x-2 px-4 py-2 rounded-lg transition-colors ${u||$>0?"bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300":"bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-600"}`,children:[l.jsx(Og,{className:"w-4 h-4"}),l.jsx("span",{children:q("过滤器","Filters")}),$>0&&l.jsx("span",{className:"bg-blue-600 text-white rounded-full px-2 py-0.5 text-xs",children:$})]}),$>0&&l.jsxs("button",{onClick:T,className:"flex items-center space-x-1 px-3 py-2 text-sm text-gray-600 dark:text-gray-400 hover:text-gray-800 dark:hover:text-gray-200 transition-colors",children:[l.jsx(Ge,{className:"w-4 h-4"}),l.jsx("span",{children:q("清除全部","Clear all")})]})]}),l.jsxs("div",{className:"flex items-center space-x-3",children:[l.jsxs("select",{value:e.sortBy,onChange:h=>o({sortBy:h.target.value}),className:"px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white text-sm",children:[l.jsx("option",{value:"stars",children:q("按星标排序","Sort by Stars")}),l.jsx("option",{value:"updated",children:q("按更新排序","Sort by Updated")}),l.jsx("option",{value:"name",children:q("按名称排序","Sort by Name")})]}),l.jsx("button",{onClick:()=>o({sortOrder:e.sortOrder==="desc"?"asc":"desc"}),className:"px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white text-sm hover:bg-gray-50 dark:hover:bg-gray-600 transition-colors",children:e.sortOrder==="desc"?"↓":"↑"})]})]}),u&&l.jsxs("div",{className:"mt-6 pt-6 border-t border-gray-200 dark:border-gray-700 space-y-6",children:[l.jsxs("div",{children:[l.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-white mb-3",children:q("状态过滤","Status Filters")}),l.jsxs("div",{className:"flex flex-wrap gap-2",children:[l.jsxs("button",{onClick:()=>o({isAnalyzed:e.isAnalyzed===!0?void 0:!0}),className:`flex items-center space-x-2 px-3 py-1.5 rounded-lg text-sm transition-colors ${e.isAnalyzed===!0?"bg-green-100 text-green-700 dark:bg-green-900 dark:text-green-300":"bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-600"}`,children:[l.jsx(wg,{className:"w-4 h-4"}),l.jsx("span",{children:q("已AI分析","AI Analyzed")})]}),l.jsxs("button",{onClick:()=>o({isAnalyzed:e.isAnalyzed===!1?void 0:!1}),className:`flex items-center space-x-2 px-3 py-1.5 rounded-lg text-sm transition-colors ${e.isAnalyzed===!1?"bg-orange-100 text-orange-700 dark:bg-orange-900 dark:text-orange-300":"bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-600"}`,children:[l.jsx(Ge,{className:"w-4 h-4"}),l.jsx("span",{children:q("未AI分析","Not Analyzed")})]}),l.jsxs("button",{onClick:()=>o({isSubscribed:e.isSubscribed===!0?void 0:!0}),className:`flex items-center space-x-2 px-3 py-1.5 rounded-lg text-sm transition-colors ${e.isSubscribed===!0?"bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300":"bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-600"}`,children:[l.jsx(_o,{className:"w-4 h-4"}),l.jsx("span",{children:q("已订阅Release","Subscribed to Releases")})]}),l.jsxs("button",{onClick:()=>o({isSubscribed:e.isSubscribed===!1?void 0:!1}),className:`flex items-center space-x-2 px-3 py-1.5 rounded-lg text-sm transition-colors ${e.isSubscribed===!1?"bg-red-100 text-red-700 dark:bg-red-900 dark:text-red-300":"bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-600"}`,children:[l.jsx(yd,{className:"w-4 h-4"}),l.jsx("span",{children:q("未订阅Release","Not Subscribed to Releases")})]})]})]}),v.length>0&&l.jsxs("div",{children:[l.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-white mb-3",children:q("编程语言","Programming Languages")}),l.jsx("div",{className:"flex flex-wrap gap-2",children:v.slice(0,12).map(h=>l.jsx("button",{onClick:()=>U(h),className:`px-3 py-1.5 rounded-lg text-sm transition-colors ${e.languages.includes(h)?"bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300":"bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-600"}`,children:h},h))})]}),c.length>0&&l.jsxs("div",{children:[l.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-white mb-3",children:q("支持平台","Supported Platforms")}),l.jsx("div",{className:"flex flex-wrap gap-2",children:c.map(h=>l.jsxs("button",{onClick:()=>K(h),className:`flex items-center space-x-2 px-3 py-1.5 rounded-lg text-sm transition-colors ${e.platforms.includes(h)?"bg-purple-100 text-purple-700 dark:bg-purple-900 dark:text-purple-300":"bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-600"}`,children:[l.jsx("i",{className:`${te(h)} w-4 h-4`}),l.jsx("span",{children:h})]},h))})]}),_.length>0&&l.jsxs("div",{children:[l.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-white mb-3",children:q("标签","Tags")}),l.jsx("div",{className:"flex flex-wrap gap-2",children:_.slice(0,15).map(h=>l.jsx("button",{onClick:()=>H(h),className:`px-3 py-1.5 rounded-lg text-sm transition-colors ${e.tags.includes(h)?"bg-green-100 text-green-700 dark:bg-green-900 dark:text-green-300":"bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-600"}`,children:h},h))})]}),l.jsxs("div",{children:[l.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-white mb-3",children:q("Star数量范围","Star Count Range")}),l.jsxs("div",{className:"flex items-center space-x-4",children:[l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx("label",{className:"text-sm text-gray-600 dark:text-gray-400",children:q("最小:","Min:")}),l.jsx("input",{type:"number",placeholder:"0",value:e.minStars||"",onChange:h=>o({minStars:h.target.value?parseInt(h.target.value):void 0}),className:"w-24 px-3 py-1.5 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white text-sm"})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx("label",{className:"text-sm text-gray-600 dark:text-gray-400",children:q("最大:","Max:")}),l.jsx("input",{type:"number",placeholder:"∞",value:e.maxStars||"",onChange:h=>o({maxStars:h.target.value?parseInt(h.target.value):void 0}),className:"w-24 px-3 py-1.5 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white text-sm"})]})]})]})]})]})};function Ce(e){const t=Object.prototype.toString.call(e);return e instanceof Date||typeof e=="object"&&t==="[object Date]"?new e.constructor(+e):typeof e=="number"||t==="[object Number]"||typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function Pm(e,t){return e instanceof Date?new e.constructor(t):new Date(t)}const oa=43200,eu=1440;let Dm={};function Rm(){return Dm}function tu(e){const t=Ce(e),r=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return r.setUTCFullYear(t.getFullYear()),+e-+r}function wa(e,t){const r=Ce(e),n=Ce(t),a=r.getTime()-n.getTime();return a<0?-1:a>0?1:a}function Tm(e){return Pm(e,Date.now())}function Mm(e,t){const r=Ce(e),n=Ce(t),a=r.getFullYear()-n.getFullYear(),s=r.getMonth()-n.getMonth();return a*12+s}function Im(e){return t=>{const n=(e?Math[e]:Math.trunc)(t);return n===0?0:n}}function Lm(e,t){return+Ce(e)-+Ce(t)}function $m(e){const t=Ce(e);return t.setHours(23,59,59,999),t}function Om(e){const t=Ce(e),r=t.getMonth();return t.setFullYear(t.getFullYear(),r+1,0),t.setHours(23,59,59,999),t}function Fm(e){const t=Ce(e);return+$m(t)==+Om(t)}function Wm(e,t){const r=Ce(e),n=Ce(t),a=wa(r,n),s=Math.abs(Mm(r,n));let o;if(s<1)o=0;else{r.getMonth()===1&&r.getDate()>27&&r.setDate(30),r.setMonth(r.getMonth()-a*s);let i=wa(r,n)===-a;Fm(Ce(e))&&s===1&&wa(e,n)===1&&(i=!1),o=a*(s-Number(i))}return o===0?0:o}function Vm(e,t,r){const n=Lm(e,t)/1e3;return Im(r==null?void 0:r.roundingMethod)(n)}const Um={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},Hm=(e,t,r)=>{let n;const a=Um[e];return typeof a=="string"?n=a:t===1?n=a.one:n=a.other.replace("{{count}}",t.toString()),r!=null&&r.addSuffix?r.comparison&&r.comparison>0?"in "+n:n+" ago":n};function Os(e){return(t={})=>{const r=t.width?String(t.width):e.defaultWidth;return e.formats[r]||e.formats[e.defaultWidth]}}const Bm={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Gm={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Qm={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Km={date:Os({formats:Bm,defaultWidth:"full"}),time:Os({formats:Gm,defaultWidth:"full"}),dateTime:Os({formats:Qm,defaultWidth:"full"})},qm={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Ym=(e,t,r,n)=>qm[e];function Zr(e){return(t,r)=>{const n=r!=null&&r.context?String(r.context):"standalone";let a;if(n==="formatting"&&e.formattingValues){const o=e.defaultFormattingWidth||e.defaultWidth,i=r!=null&&r.width?String(r.width):o;a=e.formattingValues[i]||e.formattingValues[o]}else{const o=e.defaultWidth,i=r!=null&&r.width?String(r.width):e.defaultWidth;a=e.values[i]||e.values[o]}const s=e.argumentCallback?e.argumentCallback(t):t;return a[s]}}const Xm={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},Jm={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},Zm={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},ep={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},tp={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},rp={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},np=(e,t)=>{const r=Number(e),n=r%100;if(n>20||n<10)switch(n%10){case 1:return r+"st";case 2:return r+"nd";case 3:return r+"rd"}return r+"th"},ap={ordinalNumber:np,era:Zr({values:Xm,defaultWidth:"wide"}),quarter:Zr({values:Jm,defaultWidth:"wide",argumentCallback:e=>e-1}),month:Zr({values:Zm,defaultWidth:"wide"}),day:Zr({values:ep,defaultWidth:"wide"}),dayPeriod:Zr({values:tp,defaultWidth:"wide",formattingValues:rp,defaultFormattingWidth:"wide"})};function en(e){return(t,r={})=>{const n=r.width,a=n&&e.matchPatterns[n]||e.matchPatterns[e.defaultMatchWidth],s=t.match(a);if(!s)return null;const o=s[0],i=n&&e.parsePatterns[n]||e.parsePatterns[e.defaultParseWidth],u=Array.isArray(i)?lp(i,y=>y.test(o)):sp(i,y=>y.test(o));let d;d=e.valueCallback?e.valueCallback(u):u,d=r.valueCallback?r.valueCallback(d):d;const m=t.slice(o.length);return{value:d,rest:m}}}function sp(e,t){for(const r in e)if(Object.prototype.hasOwnProperty.call(e,r)&&t(e[r]))return r}function lp(e,t){for(let r=0;r{const n=t.match(e.matchPattern);if(!n)return null;const a=n[0],s=t.match(e.parsePattern);if(!s)return null;let o=e.valueCallback?e.valueCallback(s[0]):s[0];o=r.valueCallback?r.valueCallback(o):o;const i=t.slice(a.length);return{value:o,rest:i}}}const ip=/^(\d+)(th|st|nd|rd)?/i,up=/\d+/i,cp={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},dp={any:[/^b/i,/^(a|c)/i]},fp={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},gp={any:[/1/i,/2/i,/3/i,/4/i]},mp={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},pp={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},hp={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},yp={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},xp={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},vp={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},wp={ordinalNumber:op({matchPattern:ip,parsePattern:up,valueCallback:e=>parseInt(e,10)}),era:en({matchPatterns:cp,defaultMatchWidth:"wide",parsePatterns:dp,defaultParseWidth:"any"}),quarter:en({matchPatterns:fp,defaultMatchWidth:"wide",parsePatterns:gp,defaultParseWidth:"any",valueCallback:e=>e+1}),month:en({matchPatterns:mp,defaultMatchWidth:"wide",parsePatterns:pp,defaultParseWidth:"any"}),day:en({matchPatterns:hp,defaultMatchWidth:"wide",parsePatterns:yp,defaultParseWidth:"any"}),dayPeriod:en({matchPatterns:xp,defaultMatchWidth:"any",parsePatterns:vp,defaultParseWidth:"any"})},kp={code:"en-US",formatDistance:Hm,formatLong:Km,formatRelative:Ym,localize:ap,match:wp,options:{weekStartsOn:0,firstWeekContainsDate:1}};function bp(e,t,r){const n=Rm(),a=(r==null?void 0:r.locale)??n.locale??kp,s=2520,o=wa(e,t);if(isNaN(o))throw new RangeError("Invalid time value");const i=Object.assign({},r,{addSuffix:r==null?void 0:r.addSuffix,comparison:o});let u,d;o>0?(u=Ce(t),d=Ce(e)):(u=Ce(e),d=Ce(t));const m=Vm(d,u),y=(tu(d)-tu(u))/1e3,p=Math.round((m-y)/60);let w;if(p<2)return r!=null&&r.includeSeconds?m<5?a.formatDistance("lessThanXSeconds",5,i):m<10?a.formatDistance("lessThanXSeconds",10,i):m<20?a.formatDistance("lessThanXSeconds",20,i):m<40?a.formatDistance("halfAMinute",0,i):m<60?a.formatDistance("lessThanXMinutes",1,i):a.formatDistance("xMinutes",1,i):p===0?a.formatDistance("lessThanXMinutes",1,i):a.formatDistance("xMinutes",p,i);if(p<45)return a.formatDistance("xMinutes",p,i);if(p<90)return a.formatDistance("aboutXHours",1,i);if(p{const{releaseSubscriptions:r,toggleReleaseSubscription:n,updateRepository:a,githubToken:s,aiConfigs:o,activeAIConfig:i,isLoading:u,setLoading:d,language:m,customCategories:y}=At(),[p,w]=F.useState(!1),[v,k]=F.useState({description:e.custom_description||e.description||"",tags:e.custom_tags||e.ai_tags||[],category:e.custom_category||""}),[_,f]=F.useState(""),[c,g]=F.useState(!1),[b,A]=F.useState(!1),P=F.useRef(null),R=r.has(e.id),M=Do(y,m);F.useEffect(()=>{const C=()=>{if(P.current){const x=P.current,I=x.scrollHeight>x.clientHeight;A(I)}};return C(),window.addEventListener("resize",C),()=>window.removeEventListener("resize",C)},[e,t,p]);const B=C=>C>=1e6?`${(C/1e6).toFixed(1)}M`:C>=1e3?`${(C/1e3).toFixed(1)}K`:C.toString(),V=C=>({JavaScript:"#f1e05a",TypeScript:"#3178c6",Python:"#3572A5",Java:"#b07219","C++":"#f34b7d",C:"#555555","C#":"#239120",Go:"#00ADD8",Rust:"#dea584",PHP:"#4F5D95",Ruby:"#701516",Swift:"#fa7343",Kotlin:"#A97BFF",Dart:"#00B4AB",Shell:"#89e051",HTML:"#e34c26",CSS:"#1572B6",Vue:"#4FC08D",React:"#61DAFB"})[C]||"#6b7280",U=C=>({mac:"fab fa-apple",macos:"fab fa-apple",windows:"fab fa-windows",win:"fab fa-windows",linux:"fab fa-linux",ios:"fab fa-apple",android:"fab fa-android",web:"fas fa-globe",cli:"fas fa-terminal",docker:"fab fa-docker"})[C.toLowerCase()]||"fas fa-desktop",H=async()=>{if(!s){alert("GitHub token not found. Please login again.");return}const C=o.find(x=>x.id===i);if(!C){alert(m==="zh"?"请先在设置中配置AI服务。":"Please configure AI service in settings first.");return}if(e.analyzed_at){const x=m==="zh"?`此仓库已于 ${new Date(e.analyzed_at).toLocaleString()} 进行过AI分析。 - -是否要重新分析?这将覆盖现有的分析结果。`:`This repository was analyzed on ${new Date(e.analyzed_at).toLocaleString()}. - -Do you want to re-analyze? This will overwrite the existing analysis results.`;if(!confirm(x))return}d(!0);try{const x=new Vn(s),I=new us(C,m),[Q,Y]=e.full_name.split("/"),xe=await x.getRepositoryReadme(Q,Y),ae=y.map(dr=>dr.name),me=await I.analyzeRepository(e,xe,ae),pt={...e,ai_summary:me.summary,ai_tags:me.tags,ai_platforms:me.platforms,analyzed_at:new Date().toISOString()};a(pt);const Ue=e.analyzed_at?m==="zh"?"AI重新分析完成!":"AI re-analysis completed!":m==="zh"?"AI分析完成!":"AI analysis completed!";alert(Ue)}catch(x){console.error("AI analysis failed:",x),alert(m==="zh"?"AI分析失败,请检查AI配置和网络连接。":"AI analysis failed. Please check AI configuration and network connection.")}finally{d(!1)}},K=()=>{const C={...e,custom_description:v.description!==e.description?v.description:void 0,custom_tags:v.tags.length>0?v.tags:void 0,custom_category:v.category?v.category:void 0,last_edited:new Date().toISOString()};a(C),w(!1)},T=()=>{k({description:e.custom_description||e.description||"",tags:e.custom_tags||e.ai_tags||[],category:e.custom_category||""}),w(!1)},$=()=>{_.trim()&&!v.tags.includes(_.trim())&&(k(C=>({...C,tags:[...C.tags,_.trim()]})),f(""))},te=C=>{k(x=>({...x,tags:x.tags.filter(I=>I!==C)}))},q=C=>C.replace("github.com","deepwiki.com"),N=e.custom_description?{content:e.custom_description,isCustom:!0}:t&&e.ai_summary?{content:e.ai_summary,isAI:!0}:e.description?{content:e.description,isAI:!1}:{content:m==="zh"?"暂无描述":"No description available",isAI:!1},L=e.custom_tags&&e.custom_tags.length>0?{tags:e.custom_tags,isCustom:!0}:e.ai_tags&&e.ai_tags.length>0?{tags:e.ai_tags,isCustom:!1}:{tags:e.topics||[],isCustom:!1},J=e.custom_category?e.custom_category:null,ne=()=>{if(e.analyzed_at){const C=new Date(e.analyzed_at).toLocaleString();return m==="zh"?`已于 ${C} 分析过,点击重新分析`:`Analyzed on ${C}, click to re-analyze`}else return m==="zh"?"AI分析此仓库":"Analyze with AI"};return l.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-xl border border-gray-200 dark:border-gray-700 p-6 hover:shadow-lg transition-all duration-200 hover:border-blue-300 dark:hover:border-blue-600 animate-slide-up flex flex-col h-full",children:[l.jsxs("div",{className:"flex items-center space-x-3 mb-3",children:[l.jsx("img",{src:e.owner.avatar_url,alt:e.owner.login,className:"w-8 h-8 rounded-full flex-shrink-0"}),l.jsxs("div",{className:"min-w-0 flex-1",children:[l.jsx("h3",{className:"font-semibold text-gray-900 dark:text-white truncate",children:e.name}),l.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400 truncate",children:e.owner.login})]})]}),l.jsxs("div",{className:"flex items-center justify-between mb-4",children:[l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx("button",{onClick:H,disabled:u,className:`p-2 rounded-lg transition-colors ${e.analyzed_at?"bg-green-100 text-green-600 dark:bg-green-900 dark:text-green-400 hover:bg-green-200 dark:hover:bg-green-800":"bg-purple-100 text-purple-600 dark:bg-purple-900 dark:text-purple-400 hover:bg-purple-200 dark:hover:bg-purple-800"} disabled:opacity-50`,title:ne(),children:l.jsx(Rn,{className:"w-4 h-4"})}),l.jsx("button",{onClick:()=>n(e.id),className:`p-2 rounded-lg transition-colors ${R?"bg-blue-100 text-blue-600 dark:bg-blue-900 dark:text-blue-400":"bg-gray-100 text-gray-500 dark:bg-gray-700 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600"}`,title:R?"Unsubscribe from releases":"Subscribe to releases",children:R?l.jsx(_o,{className:"w-4 h-4"}):l.jsx(yd,{className:"w-4 h-4"})}),l.jsx("button",{onClick:()=>w(!p),className:"p-2 rounded-lg bg-orange-100 text-orange-600 dark:bg-orange-900 dark:text-orange-400 hover:bg-orange-200 dark:hover:bg-orange-800 transition-colors",title:m==="zh"?"编辑仓库信息":"Edit repository info",children:l.jsx(tr,{className:"w-4 h-4"})})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx("a",{href:q(e.html_url),target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center w-8 h-8 rounded-lg bg-indigo-100 text-indigo-600 dark:bg-indigo-900 dark:text-indigo-400 hover:bg-indigo-200 dark:hover:bg-indigo-800 transition-colors",title:m==="zh"?"在DeepWiki中查看":"View on DeepWiki",children:l.jsx(xd,{className:"w-4 h-4"})}),l.jsx("a",{href:e.html_url,target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center w-8 h-8 rounded-lg bg-gray-100 text-gray-500 dark:bg-gray-700 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors",title:"View on GitHub",children:l.jsx(Dl,{className:"w-4 h-4"})})]})]}),p&&l.jsxs("div",{className:"mb-4 p-4 bg-gray-50 dark:bg-gray-700 rounded-lg border border-gray-200 dark:border-gray-600",children:[l.jsx("h4",{className:"font-medium text-gray-900 dark:text-white mb-3",children:m==="zh"?"编辑仓库信息":"Edit Repository Info"}),l.jsxs("div",{className:"mb-3",children:[l.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:m==="zh"?"描述":"Description"}),l.jsx("textarea",{value:v.description,onChange:C=>k(x=>({...x,description:C.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-white text-sm resize-none",rows:3,placeholder:m==="zh"?"输入仓库描述...":"Enter repository description..."})]}),l.jsxs("div",{className:"mb-3",children:[l.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:m==="zh"?"分类":"Category"}),l.jsxs("select",{value:v.category,onChange:C=>k(x=>({...x,category:C.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-white text-sm",children:[l.jsx("option",{value:"",children:m==="zh"?"选择分类...":"Select category..."}),M.filter(C=>C.id!=="all").map(C=>l.jsx("option",{value:C.name,children:C.name},C.id))]})]}),l.jsxs("div",{className:"mb-3",children:[l.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:m==="zh"?"标签":"Tags"}),l.jsx("div",{className:"flex flex-wrap gap-2 mb-2",children:v.tags.map((C,x)=>l.jsxs("span",{className:"inline-flex items-center px-2 py-1 bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300 rounded text-xs",children:[C,l.jsx("button",{onClick:()=>te(C),className:"ml-1 text-blue-500 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-200",children:l.jsx(Ge,{className:"w-3 h-3"})})]},x))}),l.jsxs("div",{className:"flex space-x-2",children:[l.jsx("input",{type:"text",value:_,onChange:C=>f(C.target.value),onKeyPress:C=>C.key==="Enter"&&$(),className:"flex-1 px-3 py-1 border border-gray-300 dark:border-gray-600 rounded bg-white dark:bg-gray-800 text-gray-900 dark:text-white text-sm",placeholder:m==="zh"?"添加标签...":"Add tag..."}),l.jsx("button",{onClick:$,className:"px-3 py-1 bg-blue-600 text-white rounded text-sm hover:bg-blue-700 transition-colors",children:l.jsx(Tn,{className:"w-4 h-4"})})]})]}),l.jsxs("div",{className:"flex space-x-2",children:[l.jsxs("button",{onClick:K,className:"flex items-center space-x-1 px-3 py-1.5 bg-green-600 text-white rounded text-sm hover:bg-green-700 transition-colors",children:[l.jsx(Mn,{className:"w-4 h-4"}),l.jsx("span",{children:m==="zh"?"保存":"Save"})]}),l.jsxs("button",{onClick:T,className:"flex items-center space-x-1 px-3 py-1.5 bg-gray-500 text-white rounded text-sm hover:bg-gray-600 transition-colors",children:[l.jsx(Ge,{className:"w-4 h-4"}),l.jsx("span",{children:m==="zh"?"取消":"Cancel"})]})]})]}),l.jsxs("div",{className:"mb-4 flex-1",children:[l.jsxs("div",{className:"relative",onMouseEnter:()=>b&&g(!0),onMouseLeave:()=>g(!1),children:[l.jsx("p",{ref:P,className:"text-gray-700 dark:text-gray-300 text-sm leading-relaxed line-clamp-3 mb-2",children:N.content}),b&&c&&l.jsxs("div",{className:"absolute z-50 bottom-full left-0 right-0 mb-2 p-3 bg-gray-900 dark:bg-gray-700 text-white text-sm rounded-lg shadow-lg border border-gray-200 dark:border-gray-600 max-h-48 overflow-y-auto",children:[l.jsx("div",{className:"whitespace-pre-wrap break-words",children:N.content}),l.jsx("div",{className:"absolute top-full left-4 w-0 h-0 border-l-4 border-r-4 border-t-4 border-l-transparent border-r-transparent border-t-gray-900 dark:border-t-gray-700"})]})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[N.isCustom&&l.jsxs("div",{className:"flex items-center space-x-1 text-xs text-orange-600 dark:text-orange-400",children:[l.jsx(tr,{className:"w-3 h-3"}),l.jsx("span",{children:m==="zh"?"自定义":"Custom"})]}),N.isAI&&l.jsxs("div",{className:"flex items-center space-x-1 text-xs text-green-600 dark:text-green-400",children:[l.jsx(Rn,{className:"w-3 h-3"}),l.jsx("span",{children:m==="zh"?"AI总结":"AI Summary"})]})]})]}),J&&l.jsx("div",{className:"mb-3",children:l.jsxs("span",{className:"inline-flex items-center px-2 py-1 bg-indigo-100 text-indigo-700 dark:bg-indigo-900 dark:text-indigo-300 rounded-md text-xs font-medium",children:[l.jsx(qi,{className:"w-3 h-3 mr-1"}),J]})}),L.tags.length>0&&l.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[L.tags.slice(0,3).map((C,x)=>l.jsxs("span",{className:`px-2 py-1 rounded-md text-xs font-medium ${L.isCustom?"bg-orange-100 text-orange-700 dark:bg-orange-900 dark:text-orange-300":"bg-purple-100 text-purple-700 dark:bg-purple-900 dark:text-purple-300"}`,children:[L.isCustom&&l.jsx(tr,{className:"w-3 h-3 inline mr-1"}),!L.isCustom&&l.jsx(qi,{className:"w-3 h-3 inline mr-1"}),C]},x)),e.topics&&e.topics.length>0&&!L.isCustom&&l.jsx(l.Fragment,{children:e.topics.slice(0,2).map((C,x)=>l.jsx("span",{className:"px-2 py-1 bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 rounded-md text-xs",children:C},`topic-${x}`))})]}),e.ai_platforms&&e.ai_platforms.length>0&&l.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[l.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400",children:m==="zh"?"支持平台:":"Platforms:"}),l.jsx("div",{className:"flex space-x-1",children:e.ai_platforms.slice(0,6).map((C,x)=>l.jsx("div",{className:"w-6 h-6 flex items-center justify-center bg-gray-100 dark:bg-gray-700 rounded text-gray-600 dark:text-gray-400",title:C,children:l.jsx("i",{className:`${U(C)} text-xs`})},x))})]}),l.jsxs("div",{className:"space-y-3 mt-auto",children:[l.jsxs("div",{className:"flex items-center justify-between text-sm text-gray-500 dark:text-gray-400",children:[l.jsxs("div",{className:"flex items-center space-x-4",children:[e.language&&l.jsxs("div",{className:"flex items-center space-x-1",children:[l.jsx("div",{className:"w-3 h-3 rounded-full",style:{backgroundColor:V(e.language)}}),l.jsx("span",{className:"truncate max-w-20",children:e.language})]}),l.jsxs("div",{className:"flex items-center space-x-1",children:[l.jsx(Po,{className:"w-4 h-4"}),l.jsx("span",{children:B(e.stargazers_count)})]})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[e.last_edited&&l.jsxs("div",{className:"flex items-center space-x-1 text-xs",children:[l.jsx(tr,{className:"w-3 h-3 text-orange-500"}),l.jsx("span",{children:m==="zh"?"已编辑":"Edited"})]}),e.analyzed_at&&l.jsxs("div",{className:"flex items-center space-x-1 text-xs",children:[l.jsx("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),l.jsx("span",{children:m==="zh"?"AI已分析":"AI analyzed"})]})]})]}),l.jsxs("div",{className:"flex items-center space-x-1 text-sm text-gray-500 dark:text-gray-400 pt-2 border-t border-gray-100 dark:border-gray-700",children:[l.jsx(vd,{className:"w-4 h-4 flex-shrink-0"}),l.jsxs("span",{className:"truncate",children:[m==="zh"?"更新于":"Updated"," ",ka(new Date(e.updated_at),{addSuffix:!0})]})]})]})]})},jp=({repositories:e,selectedCategory:t})=>{const{githubToken:r,aiConfigs:n,activeAIConfig:a,isLoading:s,setLoading:o,updateRepository:i,language:u,customCategories:d}=At(),[m,y]=F.useState(!0),[p,w]=F.useState(!1),[v,k]=F.useState({current:0,total:0}),[_,f]=F.useState(!1),c=F.useRef(!1),g=F.useRef(!1),b=Do(d,u),A=e.filter(H=>{if(t==="all")return!0;const K=b.find($=>$.id===t);if(!K)return!1;if(H.custom_category===K.name)return!0;if(H.ai_tags&&H.ai_tags.length>0)return H.ai_tags.some($=>K.keywords.some(te=>$.toLowerCase().includes(te.toLowerCase())||te.toLowerCase().includes($.toLowerCase())));const T=[H.name,H.description||"",H.language||"",...H.topics||[],H.ai_summary||""].join(" ").toLowerCase();return K.keywords.some($=>T.includes($.toLowerCase()))}),P=async(H=!1)=>{if(!r){alert(u==="zh"?"GitHub token 未找到,请重新登录。":"GitHub token not found. Please login again.");return}const K=n.find(h=>h.id===a);if(!K){alert(u==="zh"?"请先在设置中配置AI服务。":"Please configure AI service in settings first.");return}const T=H?A.filter(h=>!h.analyzed_at):A;if(T.length===0){alert(u==="zh"?H?"所有仓库都已经分析过了!":"没有可分析的仓库!":H?"All repositories have been analyzed!":"No repositories to analyze!");return}const $=u==="zh"?H?"未分析":"全部":H?"unanalyzed":"all",te=u==="zh"?`将对 ${T.length} 个${$}仓库进行AI分析,这可能需要几分钟时间。是否继续?`:`Will analyze ${T.length} ${$} repositories with AI. This may take several minutes. Continue?`;if(confirm(te)){c.current=!1,g.current=!0,o(!0),k({current:0,total:T.length}),w(!1),f(!1);try{const h=new Vn(r),N=new us(K,u),j=d.map(J=>J.name);let L=0;for(let J=0;JsetTimeout(C,1e3));if(c.current){console.log("Analysis stopped during pause");break}const ne=T[J];k({current:J+1,total:T.length});try{const[C,x]=ne.full_name.split("/"),I=await h.getRepositoryReadme(C,x),Q=await N.analyzeRepository(ne,I,j),Y={...ne,ai_summary:Q.summary,ai_tags:Q.tags,ai_platforms:Q.platforms,analyzed_at:new Date().toISOString()};i(Y),L++,await new Promise(xe=>setTimeout(xe,1e3))}catch(C){console.warn(`Failed to analyze ${ne.full_name}:`,C)}}const G=c.current?u==="zh"?`AI分析已停止!已成功分析了 ${L} 个仓库。`:`AI analysis stopped! Successfully analyzed ${L} repositories.`:u==="zh"?`AI分析完成!成功分析了 ${L} 个仓库。`:`AI analysis completed! Successfully analyzed ${L} repositories.`;alert(G)}catch(h){console.error("AI analysis failed:",h),alert(u==="zh"?"AI分析失败,请检查AI配置和网络连接。":"AI analysis failed. Please check AI configuration and network connection.")}finally{g.current=!1,c.current=!1,o(!1),k({current:0,total:0}),f(!1)}}},R=()=>{g.current&&(f(!_),console.log(_?"Analysis resumed":"Analysis paused"))},M=()=>{if(!g.current)return;confirm(u==="zh"?"确定要停止AI分析吗?已分析的结果将会保存。":"Are you sure you want to stop AI analysis? Analyzed results will be saved.")&&(c.current=!0,f(!1),console.log("Stop requested by user"))};if(A.length===0){const H=b.find(T=>T.id===t),K=(H==null?void 0:H.name)||t;return l.jsx("div",{className:"text-center py-12",children:l.jsx("p",{className:"text-gray-500 dark:text-gray-400",children:t==="all"?u==="zh"?"未找到仓库。点击同步加载您的星标仓库。":"No repositories found. Click sync to load your starred repositories.":u==="zh"?`在"${K}"分类中未找到仓库。`:`No repositories found in "${K}" category.`})})}const B=A.filter(H=>!H.analyzed_at).length,V=A.filter(H=>H.analyzed_at).length,U=(H,K)=>u==="zh"?H:K;return l.jsxs("div",{className:"space-y-6",children:[l.jsxs("div",{className:"flex items-center justify-between bg-white dark:bg-gray-800 rounded-xl border border-gray-200 dark:border-gray-700 p-4",children:[l.jsxs("div",{className:"flex items-center space-x-4",children:[l.jsxs("div",{className:"relative",children:[l.jsxs("button",{onClick:()=>w(!p),disabled:s,className:"flex items-center space-x-2 px-4 py-2 bg-purple-100 text-purple-700 dark:bg-purple-900 dark:text-purple-300 rounded-lg hover:bg-purple-200 dark:hover:bg-purple-800 transition-colors disabled:opacity-50",children:[l.jsx(Rn,{className:"w-4 h-4"}),l.jsx("span",{children:s?U(`AI分析中... (${v.current}/${v.total})`,`AI Analyzing... (${v.current}/${v.total})`):U("AI分析","AI Analysis")}),l.jsx(kg,{className:"w-4 h-4"})]}),p&&!s&&l.jsxs("div",{className:"absolute top-full left-0 mt-2 w-56 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg shadow-lg z-10",children:[l.jsxs("button",{onClick:()=>P(!1),className:"w-full px-4 py-3 text-left hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors border-b border-gray-100 dark:border-gray-600",children:[l.jsx("div",{className:"font-medium text-gray-900 dark:text-white",children:U("分析全部","Analyze All")}),l.jsx("div",{className:"text-sm text-gray-500 dark:text-gray-400",children:U(`分析 ${A.length} 个仓库`,`Analyze ${A.length} repositories`)})]}),l.jsxs("button",{onClick:()=>P(!0),disabled:B===0,className:"w-full px-4 py-3 text-left hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[l.jsx("div",{className:"font-medium text-gray-900 dark:text-white",children:U("分析未分析的","Analyze Unanalyzed")}),l.jsx("div",{className:"text-sm text-gray-500 dark:text-gray-400",children:U(`分析 ${B} 个未分析仓库`,`Analyze ${B} unanalyzed repositories`)})]})]})]}),s&&v.total>0&&l.jsxs("div",{className:"flex items-center space-x-3",children:[l.jsx("div",{className:"w-32 bg-gray-200 dark:bg-gray-700 rounded-full h-2",children:l.jsx("div",{className:"bg-purple-600 h-2 rounded-full transition-all duration-300",style:{width:`${v.current/v.total*100}%`}})}),l.jsxs("span",{className:"text-sm text-gray-600 dark:text-gray-400",children:[Math.round(v.current/v.total*100),"%"]}),l.jsx("button",{onClick:R,className:"p-1.5 rounded-lg bg-yellow-100 text-yellow-700 dark:bg-yellow-900 dark:text-yellow-300 hover:bg-yellow-200 dark:hover:bg-yellow-800 transition-colors",title:_?U("继续","Resume"):U("暂停","Pause"),children:_?l.jsx(Lg,{className:"w-4 h-4"}):l.jsx(Ig,{className:"w-4 h-4"})}),l.jsx("button",{onClick:M,className:"px-3 py-1.5 rounded-lg bg-red-100 text-red-700 dark:bg-red-900 dark:text-red-300 hover:bg-red-200 dark:hover:bg-red-800 transition-colors text-sm",children:U("停止","Stop")})]}),!s&&l.jsxs("div",{className:"flex items-center space-x-3",children:[l.jsx("span",{className:"text-sm text-gray-600 dark:text-gray-400",children:U("显示内容:","Display:")}),l.jsxs("div",{className:"flex items-center space-x-4",children:[l.jsxs("label",{className:"flex items-center space-x-2 cursor-pointer",children:[l.jsx("input",{type:"radio",name:"displayContent",checked:m,onChange:()=>y(!0),className:"w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-800 focus:ring-2 dark:bg-gray-700 dark:border-gray-600"}),l.jsx("span",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:U("AI总结","AI Summary")})]}),l.jsxs("label",{className:"flex items-center space-x-2 cursor-pointer",children:[l.jsx("input",{type:"radio",name:"displayContent",checked:!m,onChange:()=>y(!1),className:"w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-800 focus:ring-2 dark:bg-gray-700 dark:border-gray-600"}),l.jsx("span",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:U("原始描述","Original Description")})]})]})]})]}),l.jsxs("div",{className:"text-sm text-gray-500 dark:text-gray-400",children:[U(`显示 ${A.length} 个仓库`,`Showing ${A.length} repositories`),V>0&&l.jsxs("span",{className:"ml-2",children:["• ",V," ",U("个已AI分析","AI analyzed")]}),B>0&&l.jsxs("span",{className:"ml-2",children:["• ",B," ",U("个未分析","unanalyzed")]})]})]}),l.jsx("div",{className:"grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-6",children:A.map(H=>l.jsx(Sp,{repository:H,showAISummary:m},H.id))})]})},ru={Folder:wd,Code:Sg,Globe:bd,Smartphone:Fg,Database:jg,Shield:$g,Gamepad2:zg,Palette:Mg,Bot:Rn,Wrench:Cd,BookOpen:xd,Zap:Hg,Users:Ug,BarChart3:vg,Plus:Tn},Np=({repositories:e,selectedCategory:t,onCategorySelect:r})=>{const{customCategories:n,addCustomCategory:a,updateCustomCategory:s,deleteCustomCategory:o,language:i}=At(),[u,d]=F.useState(!1),[m,y]=F.useState(null),[p,w]=F.useState(null),[v,k]=F.useState({name:"",icon:"Folder",keywords:""}),[_,f]=F.useState(""),c=Do(n,i),g=T=>T.id==="all"?e.length:e.filter($=>{if($.custom_category===T.name)return!0;if($.ai_tags&&$.ai_tags.length>0)return $.ai_tags.some(q=>T.keywords.some(h=>q.toLowerCase().includes(h.toLowerCase())||h.toLowerCase().includes(q.toLowerCase())));const te=[$.name,$.description||"",$.language||"",...$.topics||[],$.ai_summary||""].join(" ").toLowerCase();return T.keywords.some(q=>te.includes(q.toLowerCase()))}).length,b=()=>{if(!v.name.trim()){alert(i==="zh"?"请输入分类名称":"Please enter category name");return}const T={id:Date.now().toString(),name:v.name.trim(),icon:v.icon,keywords:v.keywords.split(",").map($=>$.trim()).filter($=>$),isCustom:!0};a(T),k({name:"",icon:"Folder",keywords:""}),d(!1)},A=T=>{if(!v.name.trim()){alert(i==="zh"?"请输入分类名称":"Please enter category name");return}s(T,{name:v.name.trim(),icon:v.icon,keywords:v.keywords.split(",").map($=>$.trim()).filter($=>$)}),k({name:"",icon:"Folder",keywords:""}),y(null)},P=T=>{k({name:T.name,icon:T.icon,keywords:T.keywords.join(", ")}),y(T.id)},R=T=>{f(T.name),w(T.id)},M=T=>{if(!_.trim()){alert(i==="zh"?"请输入分类名称":"Please enter category name");return}const $=c.find(te=>te.id===T);if($)if($.isCustom)s(T,{name:_.trim()});else{const te={id:Date.now().toString(),name:_.trim(),icon:$.icon,keywords:$.keywords,isCustom:!0};a(te)}f(""),w(null)},B=()=>{f(""),w(null)},V=T=>{const $=c.find(h=>h.id===T);if(!$)return;const te=g($);if(te>0){alert(i==="zh"?`无法删除分类"${$.name}",因为其中还有 ${te} 个仓库。`:`Cannot delete category "${$.name}" because it contains ${te} repositories.`);return}const q=i==="zh"?`确定要删除分类"${$.name}"吗?`:`Are you sure you want to delete category "${$.name}"?`;confirm(q)&&($.isCustom?o(T):alert(i==="zh"?"默认分类无法删除,但可以重命名。":"Default categories cannot be deleted, but can be renamed."))},U=()=>{k({name:"",icon:"Folder",keywords:""}),d(!1),y(null)},H=T=>g(T)===0&&T.id!=="all",K=(T,$)=>i==="zh"?T:$;return l.jsxs("div",{className:"w-64 bg-white dark:bg-gray-800 rounded-xl border border-gray-200 dark:border-gray-700 p-4 h-fit sticky top-24",children:[l.jsxs("div",{className:"flex items-center justify-between mb-4",children:[l.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-white",children:K("应用分类","Categories")}),l.jsx("button",{onClick:()=>d(!0),className:"p-1.5 rounded-lg bg-blue-100 text-blue-600 dark:bg-blue-900 dark:text-blue-400 hover:bg-blue-200 dark:hover:bg-blue-800 transition-colors",title:K("添加分类","Add Category"),children:l.jsx(Tn,{className:"w-4 h-4"})})]}),(u||m)&&l.jsxs("div",{className:"mb-4 p-3 bg-gray-50 dark:bg-gray-700 rounded-lg border border-gray-200 dark:border-gray-600",children:[l.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-white mb-3",children:m?K("编辑分类","Edit Category"):K("添加分类","Add Category")}),l.jsxs("div",{className:"space-y-3",children:[l.jsxs("div",{children:[l.jsx("label",{className:"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-1",children:K("名称","Name")}),l.jsx("input",{type:"text",value:v.name,onChange:T=>k($=>({...$,name:T.target.value})),className:"w-full px-2 py-1 border border-gray-300 dark:border-gray-600 rounded bg-white dark:bg-gray-800 text-gray-900 dark:text-white text-sm",placeholder:K("分类名称","Category name")})]}),l.jsxs("div",{children:[l.jsx("label",{className:"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-1",children:K("图标","Icon")}),l.jsx("select",{value:v.icon,onChange:T=>k($=>({...$,icon:T.target.value})),className:"w-full px-2 py-1 border border-gray-300 dark:border-gray-600 rounded bg-white dark:bg-gray-800 text-gray-900 dark:text-white text-sm",children:Object.keys(ru).map(T=>l.jsx("option",{value:T,children:T},T))})]}),l.jsxs("div",{children:[l.jsx("label",{className:"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-1",children:K("关键词","Keywords")}),l.jsx("input",{type:"text",value:v.keywords,onChange:T=>k($=>({...$,keywords:T.target.value})),className:"w-full px-2 py-1 border border-gray-300 dark:border-gray-600 rounded bg-white dark:bg-gray-800 text-gray-900 dark:text-white text-sm",placeholder:K("用逗号分隔","Comma separated")})]}),l.jsxs("div",{className:"flex space-x-2",children:[l.jsxs("button",{onClick:()=>m?A(m):b(),className:"flex items-center space-x-1 px-2 py-1 bg-green-600 text-white rounded text-xs hover:bg-green-700 transition-colors",children:[l.jsx(Mn,{className:"w-3 h-3"}),l.jsx("span",{children:K("保存","Save")})]}),l.jsxs("button",{onClick:U,className:"flex items-center space-x-1 px-2 py-1 bg-gray-500 text-white rounded text-xs hover:bg-gray-600 transition-colors",children:[l.jsx(Ge,{className:"w-3 h-3"}),l.jsx("span",{children:K("取消","Cancel")})]})]})]})]}),l.jsx("div",{className:"space-y-1",children:c.map(T=>{const $=g(T),te=ru[T.icon]||wd,q=t===T.id,h=p===T.id,N=H(T);return l.jsx("div",{className:"group",children:h?l.jsxs("div",{className:"flex items-center space-x-2 px-3 py-2.5",children:[l.jsx(te,{className:"w-4 h-4 flex-shrink-0 text-gray-500"}),l.jsx("input",{type:"text",value:_,onChange:j=>f(j.target.value),onKeyPress:j=>{j.key==="Enter"?M(T.id):j.key==="Escape"&&B()},className:"flex-1 px-2 py-1 border border-gray-300 dark:border-gray-600 rounded bg-white dark:bg-gray-800 text-gray-900 dark:text-white text-sm",autoFocus:!0}),l.jsx("button",{onClick:()=>M(T.id),className:"p-1 rounded text-green-600 hover:bg-green-100 dark:hover:bg-green-900",title:K("保存","Save"),children:l.jsx(Mn,{className:"w-3 h-3"})}),l.jsx("button",{onClick:B,className:"p-1 rounded text-gray-500 hover:bg-gray-100 dark:hover:bg-gray-700",title:K("取消","Cancel"),children:l.jsx(Ge,{className:"w-3 h-3"})})]}):l.jsxs("button",{onClick:()=>r(T.id),className:`w-full flex items-center justify-between px-3 py-2.5 rounded-lg text-left transition-colors ${q?"bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300":"text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700"}`,children:[l.jsxs("div",{className:"flex items-center space-x-3 min-w-0 flex-1",children:[l.jsx(te,{className:"w-4 h-4 flex-shrink-0"}),l.jsx("span",{className:"text-sm font-medium truncate",children:T.name})]}),l.jsxs("div",{className:"flex items-center space-x-1",children:[l.jsx("span",{className:`text-xs px-2 py-1 rounded-full ${q?"bg-blue-200 text-blue-800 dark:bg-blue-800 dark:text-blue-200":"bg-gray-200 text-gray-600 dark:bg-gray-600 dark:text-gray-400"}`,children:$}),T.id!=="all"&&l.jsxs("div",{className:"flex items-center space-x-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[l.jsx("button",{onClick:j=>{j.stopPropagation(),R(T)},className:"p-1 rounded text-gray-500 hover:text-blue-600 dark:text-gray-400 dark:hover:text-blue-400",title:K("重命名","Rename"),children:l.jsx(tr,{className:"w-3 h-3"})}),T.isCustom&&l.jsx("button",{onClick:j=>{j.stopPropagation(),P(T)},className:"p-1 rounded text-gray-500 hover:text-orange-600 dark:text-gray-400 dark:hover:text-orange-400",title:K("编辑","Edit"),children:l.jsx(Cd,{className:"w-3 h-3"})}),N&&l.jsx("button",{onClick:j=>{j.stopPropagation(),V(T.id)},className:"p-1 rounded text-gray-500 hover:text-red-600 dark:text-gray-400 dark:hover:text-red-400",title:K("删除","Delete"),children:l.jsx(Rl,{className:"w-3 h-3"})})]})]})]})},T.id)})})]})},Cp=()=>{const{releases:e,repositories:t,releaseSubscriptions:r,readReleases:n,githubToken:a,language:s,setReleases:o,addReleases:i,markReleaseAsRead:u}=At(),[d,m]=F.useState(""),[y,p]=F.useState([]),[w,v]=F.useState(!1),[k,_]=F.useState(null),[f,c]=F.useState(1),[g,b]=F.useState(100),[A,P]=F.useState("compact"),R=x=>{const I=x.toLowerCase(),Q=[];return Object.entries({windows:[".exe",".msi",".zip",".7z","windows","win32","win64","win-x64","win-x86","win-arm64","-win.",".win.","-windows.",".windows.","setup","installer"],macos:[".dmg",".pkg",".app.zip","darwin","macos","mac-os","osx","mac-universal","-mac.",".mac.","-macos.",".macos.","-darwin.",".darwin.","universal","x86_64-apple","arm64-apple"],linux:[".deb",".rpm",".tar.gz",".tar.xz",".tar.bz2",".appimage","linux","ubuntu","debian","fedora","centos","arch","alpine","-linux.",".linux.","x86_64-unknown-linux","aarch64-unknown-linux","musl","gnu"],android:[".apk",".aab","android","-android.",".android.","arm64-v8a","armeabi-v7a","x86","x86_64"],ios:[".ipa","ios","-ios.",".ios.","iphone","ipad"]}).forEach(([xe,ae])=>{ae.some(me=>I.includes(me))&&Q.push(xe)}),Q.length===0&&(I.includes("source")||I.includes("src")||I.includes("universal")||I.includes("all")||I.match(/\.(zip|tar\.gz|tar\.xz)$/)&&!I.includes("win")&&!I.includes("mac")&&!I.includes("linux"))&&Q.push("universal"),Q.length>0?Q:["universal"]},M=x=>{const I=/\[([^\]]+)\]\((https?:\/\/[^\)]+)\)/g,Q=[];let Y;for(;(Y=I.exec(x.body))!==null;){const[,ae,me]=Y;if(me.includes("/download/")||me.includes("/releases/")||ae.toLowerCase().includes("download")||/\.(exe|dmg|deb|rpm|apk|ipa|zip|tar\.gz|msi|pkg|appimage)$/i.test(me)){const pt=R(ae+" "+me);Q.push({name:ae,url:me,platforms:pt})}}const xe=/https:\/\/github\.com\/[^\/]+\/[^\/]+\/releases\/download\/[^\/]+\/([^\s\)]+)/g;for(;(Y=xe.exec(x.body))!==null;){const[ae,me]=Y,pt=R(me);Q.some(Ue=>Ue.url===ae)||Q.push({name:me,url:ae,platforms:pt})}return Q},B=e.filter(x=>r.has(x.repository.id)),V=F.useMemo(()=>{let x=B;if(d.trim()){const I=d.toLowerCase();x=x.filter(Q=>Q.repository.name.toLowerCase().includes(I)||Q.repository.full_name.toLowerCase().includes(I)||Q.tag_name.toLowerCase().includes(I)||Q.name.toLowerCase().includes(I)||Q.body.toLowerCase().includes(I))}return y.length>0&&(x=x.filter(I=>M(I).some(Y=>y.some(xe=>Y.platforms.includes(xe))))),x.sort((I,Q)=>new Date(Q.published_at).getTime()-new Date(I.published_at).getTime())},[B,d,y]),U=Math.ceil(V.length/g),H=(f-1)*g,K=V.slice(H,H+g),T=F.useMemo(()=>{const x=new Set;return B.forEach(I=>{M(I).forEach(Y=>{Y.platforms.forEach(xe=>x.add(xe))})}),Array.from(x).sort()},[B]),$=async()=>{if(!a){alert(s==="zh"?"GitHub token 未找到,请重新登录。":"GitHub token not found. Please login again.");return}v(!0);try{const x=new Vn(a),I=t.filter(Ue=>r.has(Ue.id));if(I.length===0){alert(s==="zh"?"没有订阅的仓库。":"No subscribed repositories.");return}let Q=0;const Y=[],xe=e.length>0?Math.max(...e.map(Ue=>new Date(Ue.published_at).getTime())):0,ae=xe>0?new Date(xe).toISOString():void 0;for(const Ue of I){const[dr,Un]=Ue.full_name.split("/"),cs=e.some(qt=>qt.repository.id===Ue.id);let Kt;cs?Kt=await x.getIncrementalRepositoryReleases(dr,Un,ae,10):Kt=await x.getRepositoryReleases(dr,Un,1,10),Kt.forEach(qt=>{qt.repository.id=Ue.id}),Y.push(...Kt),Q+=Kt.length,await new Promise(qt=>setTimeout(qt,200))}Y.length>0&&i(Y);const me=new Date().toISOString();_(me);const pt=s==="zh"?`刷新完成!发现 ${Q} 个新Release。`:`Refresh completed! Found ${Q} new releases.`;alert(pt)}catch(x){console.error("Refresh failed:",x),alert(s==="zh"?"Release刷新失败,请检查网络连接。":"Release refresh failed. Please check your network connection.")}finally{v(!1)}},te=x=>{p(I=>I.includes(x)?I.filter(Q=>Q!==x):[...I,x]),c(1)},q=()=>{m(""),p([]),c(1)},h=x=>{c(Math.max(1,Math.min(x,U)))},N=()=>{const I=[],Q=[];for(let Y=Math.max(2,f-2);Y<=Math.min(U-1,f+2);Y++)I.push(Y);return f-2>2?Q.push(1,"..."):Q.push(1),Q.push(...I),f+21&&Q.push(U),Q},j=x=>({windows:"fab fa-windows",macos:"fab fa-apple",linux:"fab fa-linux",android:"fab fa-android",ios:"fab fa-apple",universal:"fas fa-download"})[x]||"fas fa-download",L=x=>({windows:"text-blue-600 dark:text-blue-400",macos:"text-gray-600 dark:text-gray-400",linux:"text-yellow-600 dark:text-yellow-400",android:"text-green-600 dark:text-green-400",ios:"text-gray-600 dark:text-gray-400",universal:"text-purple-600 dark:text-purple-400"})[x]||"text-gray-600 dark:text-gray-400",G=(x,I=200)=>x.length<=I?x:x.substring(0,I)+"...",J=x=>{u(x)},ne=x=>!n.has(x),C=(x,I)=>s==="zh"?x:I;if(B.length===0){const x=r.size;return l.jsxs("div",{className:"text-center py-12",children:[l.jsx(Tg,{className:"w-16 h-16 text-gray-400 dark:text-gray-600 mx-auto mb-4"}),l.jsx("h3",{className:"text-lg font-medium text-gray-900 dark:text-white mb-2",children:x===0?C("没有Release订阅","No Release Subscriptions"):C("没有最近的Release","No Recent Releases")}),l.jsx("p",{className:"text-gray-500 dark:text-gray-400 mb-6 max-w-md mx-auto",children:x===0?C("从仓库页面订阅仓库Release以在此查看更新。","Subscribe to repository releases from the Repositories tab to see updates here."):C(`您已订阅 ${x} 个仓库,但没有找到最近的Release。尝试同步以获取最新更新。`,`You're subscribed to ${x} repositories, but no recent releases were found. Try syncing to get the latest updates.`)}),x===0&&l.jsxs("div",{className:"bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg p-4 max-w-md mx-auto",children:[l.jsxs("div",{className:"flex items-center space-x-2 text-blue-700 dark:text-blue-300",children:[l.jsx(_o,{className:"w-5 h-5"}),l.jsx("span",{className:"font-medium",children:C("如何订阅:","How to subscribe:")})]}),l.jsx("p",{className:"text-sm text-blue-600 dark:text-blue-400 mt-2",children:C("转到仓库页面,点击任何仓库卡片上的铃铛图标以订阅其Release。","Go to the Repositories tab and click the bell icon on any repository card to subscribe to its releases.")})]})]})}return l.jsxs("div",{className:"max-w-7xl mx-auto",children:[l.jsxs("div",{className:"mb-8",children:[l.jsxs("div",{className:"flex items-center justify-between mb-4",children:[l.jsxs("div",{children:[l.jsx("h2",{className:"text-2xl font-bold text-gray-900 dark:text-white mb-2",children:C("Release时间线","Release Timeline")}),l.jsx("p",{className:"text-gray-600 dark:text-gray-400",children:C(`来自您的 ${r.size} 个订阅仓库的最新Release`,`Latest releases from your ${r.size} subscribed repositories`)})]}),l.jsxs("div",{className:"flex items-center space-x-3",children:[l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx("button",{onClick:()=>P("compact"),className:`p-2 rounded-lg transition-colors ${A==="compact"?"bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300":"bg-gray-100 text-gray-500 dark:bg-gray-700 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600"}`,title:C("精简视图","Compact View"),children:l.jsx(Cg,{className:"w-4 h-4"})}),l.jsx("button",{onClick:()=>P("detailed"),className:`p-2 rounded-lg transition-colors ${A==="detailed"?"bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300":"bg-gray-100 text-gray-500 dark:bg-gray-700 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600"}`,title:C("详细视图","Detailed View"),children:l.jsx(Ag,{className:"w-4 h-4"})})]}),k&&l.jsxs("span",{className:"text-sm text-gray-500 dark:text-gray-400",children:[C("上次刷新:","Last refresh:")," ",ka(new Date(k),{addSuffix:!0})]}),l.jsxs("button",{onClick:$,disabled:w,className:"flex items-center space-x-2 px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[l.jsx(jd,{className:`w-4 h-4 ${w?"animate-spin":""}`}),l.jsx("span",{children:w?C("刷新中...","Refreshing..."):C("刷新","Refresh")})]})]})]}),l.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-xl border border-gray-200 dark:border-gray-700 p-4 mb-6",children:[l.jsxs("div",{className:"relative mb-4",children:[l.jsx(zo,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 w-5 h-5"}),l.jsx("input",{type:"text",placeholder:C("搜索Release...","Search releases..."),value:d,onChange:x=>{m(x.target.value),c(1)},className:"w-full pl-10 pr-10 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white dark:bg-gray-700 text-gray-900 dark:text-white"}),d&&l.jsx("button",{onClick:()=>{m(""),c(1)},className:"absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300",children:l.jsx(Ge,{className:"w-4 h-4"})})]}),T.length>0&&l.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[l.jsx("span",{className:"text-sm font-medium text-gray-700 dark:text-gray-300 mr-2",children:C("平台:","Platforms:")}),T.map(x=>l.jsxs("button",{onClick:()=>te(x),className:`flex items-center space-x-2 px-3 py-1.5 rounded-lg text-sm transition-colors ${y.includes(x)?"bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300":"bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-600"}`,children:[l.jsx("i",{className:`${j(x)} w-4 h-4`}),l.jsx("span",{className:"capitalize",children:x})]},x)),(d||y.length>0)&&l.jsxs("button",{onClick:q,className:"flex items-center space-x-1 px-3 py-1.5 text-sm text-gray-600 dark:text-gray-400 hover:text-gray-800 dark:hover:text-gray-200 transition-colors",children:[l.jsx(Ge,{className:"w-4 h-4"}),l.jsx("span",{children:C("清除","Clear")})]})]})]}),l.jsxs("div",{className:"flex items-center justify-between mb-6",children:[l.jsxs("div",{className:"flex items-center space-x-4",children:[l.jsx("span",{className:"text-sm text-gray-600 dark:text-gray-400",children:C(`显示 ${H+1}-${Math.min(H+g,V.length)} 共 ${V.length} 个Release`,`Showing ${H+1}-${Math.min(H+g,V.length)} of ${V.length} releases`)}),(d||y.length>0)&&l.jsxs("span",{className:"text-sm text-blue-600 dark:text-blue-400",children:["(",C("已筛选","filtered"),")"]})]}),l.jsxs("div",{className:"flex items-center space-x-4",children:[l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx("span",{className:"text-sm text-gray-600 dark:text-gray-400",children:C("每页:","Per page:")}),l.jsxs("select",{value:g,onChange:x=>{b(Number(x.target.value)),c(1)},className:"px-3 py-1 border border-gray-300 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-900 dark:text-white text-sm",children:[l.jsx("option",{value:50,children:"50"}),l.jsx("option",{value:100,children:"100"}),l.jsx("option",{value:200,children:"200"}),l.jsx("option",{value:500,children:"500"})]})]}),U>1&&l.jsxs("div",{className:"flex items-center space-x-1",children:[l.jsx("button",{onClick:()=>h(1),disabled:f===1,className:"p-2 rounded-lg bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600 disabled:opacity-50 disabled:cursor-not-allowed",children:l.jsx(Gi,{className:"w-4 h-4"})}),l.jsx("button",{onClick:()=>h(f-1),disabled:f===1,className:"p-2 rounded-lg bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600 disabled:opacity-50 disabled:cursor-not-allowed",children:l.jsx(Hi,{className:"w-4 h-4"})}),N().map((x,I)=>l.jsx("button",{onClick:()=>typeof x=="number"?h(x):void 0,disabled:typeof x!="number",className:`px-3 py-2 rounded-lg text-sm ${x===f?"bg-blue-600 text-white":typeof x=="number"?"bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600":"text-gray-400 cursor-default"}`,children:x},I)),l.jsx("button",{onClick:()=>h(f+1),disabled:f===U,className:"p-2 rounded-lg bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600 disabled:opacity-50 disabled:cursor-not-allowed",children:l.jsx(Bi,{className:"w-4 h-4"})}),l.jsx("button",{onClick:()=>h(U),disabled:f===U,className:"p-2 rounded-lg bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600 disabled:opacity-50 disabled:cursor-not-allowed",children:l.jsx(Qi,{className:"w-4 h-4"})})]})]})]})]}),l.jsx("div",{className:"space-y-4",children:K.map(x=>{const I=M(x),Q=ne(x.id);return l.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-xl border border-gray-200 dark:border-gray-700 hover:shadow-lg transition-shadow cursor-pointer",onClick:()=>J(x.id),children:A==="detailed"?l.jsxs("div",{className:"p-6",children:[l.jsxs("div",{className:"flex items-start justify-between mb-4",children:[l.jsxs("div",{className:"flex items-center space-x-3 flex-1 min-w-0",children:[Q&&l.jsx("div",{className:"w-3 h-3 bg-blue-500 rounded-full flex-shrink-0"}),l.jsx("div",{className:"flex items-center justify-center w-10 h-10 bg-green-100 dark:bg-green-900 rounded-lg flex-shrink-0",children:l.jsx(Ki,{className:"w-5 h-5 text-green-600 dark:text-green-400"})}),l.jsxs("div",{className:"min-w-0 flex-1",children:[l.jsxs("h4",{className:"font-semibold text-gray-900 dark:text-white truncate",children:[x.repository.name," ",x.tag_name]}),l.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400 truncate",children:x.repository.full_name})]})]}),l.jsxs("div",{className:"flex items-center space-x-2 flex-shrink-0",children:[l.jsx("span",{className:"text-sm text-gray-500 dark:text-gray-400",children:ka(new Date(x.published_at),{addSuffix:!0})}),l.jsx("a",{href:x.html_url,target:"_blank",rel:"noopener noreferrer",className:"p-2 rounded-lg bg-gray-100 text-gray-500 dark:bg-gray-700 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors",title:C("在GitHub上查看","View on GitHub"),onClick:Y=>{Y.stopPropagation(),J(x.id)},children:l.jsx(Dl,{className:"w-4 h-4"})})]})]}),x.name&&x.name!==x.tag_name&&l.jsx("h5",{className:"font-medium text-gray-800 dark:text-gray-200 mb-2",children:x.name}),I.length>0&&l.jsxs("div",{className:"mb-4",children:[l.jsx("h6",{className:"text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:C("下载:","Downloads:")}),l.jsx("div",{className:"flex flex-wrap gap-2",children:I.map((Y,xe)=>l.jsxs("a",{href:Y.url,target:"_blank",rel:"noopener noreferrer",className:"flex items-center space-x-2 px-3 py-2 bg-gray-100 dark:bg-gray-700 rounded-lg hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors text-sm",title:Y.name,onClick:ae=>{ae.stopPropagation(),J(x.id)},children:[l.jsx("div",{className:"flex items-center space-x-1",children:Y.platforms.map((ae,me)=>l.jsx("i",{className:`${j(ae)} w-4 h-4 ${L(ae)}`,title:ae},me))}),l.jsx("span",{className:"truncate max-w-32",children:Y.name})]},xe))})]}),x.body&&l.jsxs("div",{className:"prose prose-sm dark:prose-invert max-w-none",children:[l.jsx("div",{className:"text-gray-700 dark:text-gray-300 whitespace-pre-wrap",children:G(x.body)}),x.body.length>200&&l.jsx("a",{href:x.html_url,target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 dark:text-blue-400 hover:underline text-sm mt-2 inline-block",onClick:Y=>{Y.stopPropagation(),J(x.id)},children:C("阅读完整Release说明 →","Read full release notes →")})]})]}):l.jsx("div",{className:"p-4",children:l.jsxs("div",{className:"grid grid-cols-12 gap-4 items-center",children:[l.jsx("div",{className:"col-span-3 min-w-0",children:l.jsxs("div",{className:"flex items-center space-x-2",children:[Q&&l.jsx("div",{className:"w-2 h-2 bg-blue-500 rounded-full flex-shrink-0"}),l.jsx("div",{className:"w-6 h-6 bg-green-100 dark:bg-green-900 rounded flex items-center justify-center flex-shrink-0",children:l.jsx(Ki,{className:"w-3 h-3 text-green-600 dark:text-green-400"})}),l.jsxs("div",{className:"min-w-0 flex-1",children:[l.jsx("p",{className:"font-medium text-gray-900 dark:text-white text-sm truncate",children:x.repository.name}),l.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 truncate",children:x.tag_name})]})]})}),l.jsx("div",{className:"col-span-3 min-w-0",children:l.jsx("p",{className:"text-sm text-gray-900 dark:text-white truncate",title:x.name||x.tag_name,children:x.name||x.tag_name})}),l.jsx("div",{className:"col-span-4 min-w-0",children:I.length>0?l.jsxs("div",{className:"flex flex-wrap gap-1",children:[I.slice(0,6).map((Y,xe)=>l.jsxs("a",{href:Y.url,target:"_blank",rel:"noopener noreferrer",className:"flex items-center space-x-1 px-2 py-1 bg-gray-100 dark:bg-gray-700 rounded hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors",title:`${Y.name} (${Y.platforms.join(", ")})`,onClick:ae=>{ae.stopPropagation(),J(x.id)},children:[l.jsx("div",{className:"flex items-center space-x-0.5",children:Y.platforms.map((ae,me)=>l.jsx("i",{className:`${j(ae)} w-3 h-3 ${L(ae)}`,title:ae},me))}),l.jsx("span",{className:"text-xs text-gray-700 dark:text-gray-300 truncate max-w-16",children:Y.name.split(".").pop()||Y.name})]},xe)),I.length>6&&l.jsxs("span",{className:"text-xs text-gray-500 dark:text-gray-400 px-2 py-1",children:["+",I.length-6]})]}):l.jsx("span",{className:"text-xs text-gray-400 dark:text-gray-500",children:C("无下载","No downloads")})}),l.jsxs("div",{className:"col-span-2 flex items-center justify-end space-x-2",children:[l.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400",children:ka(new Date(x.published_at),{addSuffix:!0})}),l.jsx("a",{href:x.html_url,target:"_blank",rel:"noopener noreferrer",className:"p-1.5 rounded bg-gray-100 text-gray-500 dark:bg-gray-700 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors",title:C("在GitHub上查看","View on GitHub"),onClick:Y=>{Y.stopPropagation(),J(x.id)},children:l.jsx(Dl,{className:"w-3 h-3"})})]})]})})},x.id)})}),U>1&&l.jsx("div",{className:"flex items-center justify-center mt-8",children:l.jsxs("div",{className:"flex items-center space-x-1",children:[l.jsx("button",{onClick:()=>h(1),disabled:f===1,className:"p-2 rounded-lg bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600 disabled:opacity-50 disabled:cursor-not-allowed",children:l.jsx(Gi,{className:"w-4 h-4"})}),l.jsx("button",{onClick:()=>h(f-1),disabled:f===1,className:"p-2 rounded-lg bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600 disabled:opacity-50 disabled:cursor-not-allowed",children:l.jsx(Hi,{className:"w-4 h-4"})}),N().map((x,I)=>l.jsx("button",{onClick:()=>typeof x=="number"?h(x):void 0,disabled:typeof x!="number",className:`px-3 py-2 rounded-lg text-sm ${x===f?"bg-blue-600 text-white":typeof x=="number"?"bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600":"text-gray-400 cursor-default"}`,children:x},I)),l.jsx("button",{onClick:()=>h(f+1),disabled:f===U,className:"p-2 rounded-lg bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600 disabled:opacity-50 disabled:cursor-not-allowed",children:l.jsx(Bi,{className:"w-4 h-4"})}),l.jsx("button",{onClick:()=>h(U),disabled:f===U,className:"p-2 rounded-lg bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-600 disabled:opacity-50 disabled:cursor-not-allowed",children:l.jsx(Qi,{className:"w-4 h-4"})})]})})]})};class tn{constructor(t){this.config=t}getAuthHeader(){return`Basic ${btoa(`${this.config.username}:${this.config.password}`)}`}getFullPath(t){const r=this.config.path.endsWith("/")?this.config.path:`${this.config.path}/`;return`${this.config.url}${r}${t}`}handleNetworkError(t,r){throw console.error(`WebDAV ${r} failed:`,t),t.name==="TypeError"&&t.message.includes("Failed to fetch")||t.message&&t.message.includes("NetworkError when attempting to fetch resource")||t.name==="NetworkError"||t.message&&t.message.includes("NetworkError")?new Error(`CORS策略阻止了连接到WebDAV服务器。 - -这是一个常见的浏览器安全限制。要解决此问题,您需要: - -1. 在WebDAV服务器上配置CORS头: - • Access-Control-Allow-Origin: ${window.location.origin} - • Access-Control-Allow-Methods: GET, PUT, PROPFIND, HEAD, OPTIONS, MKCOL - • Access-Control-Allow-Headers: Authorization, Content-Type, Depth - -2. 常见WebDAV服务器配置示例: - - Apache (.htaccess): - Header always set Access-Control-Allow-Origin "${window.location.origin}" - Header always set Access-Control-Allow-Methods "GET, PUT, PROPFIND, HEAD, OPTIONS, MKCOL" - Header always set Access-Control-Allow-Headers "Authorization, Content-Type, Depth" - - Nginx: - add_header Access-Control-Allow-Origin "${window.location.origin}"; - add_header Access-Control-Allow-Methods "GET, PUT, PROPFIND, HEAD, OPTIONS, MKCOL"; - add_header Access-Control-Allow-Headers "Authorization, Content-Type, Depth"; - -3. 其他检查项: - • 确保WebDAV服务器正在运行 - • 验证URL格式正确(包含协议 http:// 或 https://) - • 如果应用使用HTTPS,WebDAV服务器也应使用HTTPS - -技术详情: ${t.message}`):new Error(`WebDAV ${r} 失败: ${t.message||"未知错误"}`)}async testConnection(){try{if(!this.config.url.startsWith("http://")&&!this.config.url.startsWith("https://"))throw new Error("WebDAV URL必须以 http:// 或 https:// 开头");const t=new AbortController,r=setTimeout(()=>t.abort(),1e4);try{const n=await fetch(this.config.url,{method:"OPTIONS",headers:{Authorization:this.getAuthHeader()},signal:t.signal});if(clearTimeout(r),n.ok)return!0;const a=await fetch(this.config.url,{method:"PROPFIND",headers:{Authorization:this.getAuthHeader(),Depth:"0"}});return a.ok||a.status===207}catch(n){throw clearTimeout(r),n.name==="AbortError"?new Error("连接超时。请检查WebDAV服务器是否可访问。"):n}}catch(t){this.handleNetworkError(t,"连接测试")}}async uploadFile(t,r){try{if(!this.config.url.startsWith("http://")&&!this.config.url.startsWith("https://"))throw new Error("WebDAV URL必须以 http:// 或 https:// 开头");await this.ensureDirectoryExists();const n=new AbortController,a=setTimeout(()=>n.abort(),3e4);try{const s=await fetch(this.getFullPath(t),{method:"PUT",headers:{Authorization:this.getAuthHeader(),"Content-Type":"application/json"},body:r,signal:n.signal});if(clearTimeout(a),!s.ok)throw s.status===401?new Error("身份验证失败。请检查用户名和密码。"):s.status===403?new Error("访问被拒绝。请检查指定路径的权限。"):s.status===404?new Error("路径未找到。请验证WebDAV URL和路径是否正确。"):s.status===507?new Error("服务器存储空间不足。"):new Error(`上传失败,HTTP状态码 ${s.status}: ${s.statusText}`);return!0}catch(s){throw clearTimeout(a),s.name==="AbortError"?new Error("上传超时。文件可能太大或网络连接缓慢。"):s}}catch(n){if(n.message.includes("身份验证失败")||n.message.includes("访问被拒绝")||n.message.includes("路径未找到")||n.message.includes("存储空间不足")||n.message.includes("上传失败,HTTP状态码")||n.message.includes("上传超时")||n.message.includes("WebDAV URL必须"))throw n;this.handleNetworkError(n,"上传")}}async ensureDirectoryExists(){try{if(!this.config.path||this.config.path==="/")return;const t=this.config.url+this.config.path,r=await fetch(t,{method:"MKCOL",headers:{Authorization:this.getAuthHeader()}});!r.ok&&r.status!==405&&console.warn("无法创建目录,可能已存在或权限不足")}catch(t){console.warn("目录创建检查失败:",t)}}async downloadFile(t){try{const r=new AbortController,n=setTimeout(()=>r.abort(),3e4);try{const a=await fetch(this.getFullPath(t),{method:"GET",headers:{Authorization:this.getAuthHeader()},signal:r.signal});if(clearTimeout(n),a.ok)return await a.text();if(a.status===404)return null;throw a.status===401?new Error("身份验证失败。请检查用户名和密码。"):new Error(`下载失败,HTTP状态码 ${a.status}: ${a.statusText}`)}catch(a){throw clearTimeout(n),a.name==="AbortError"?new Error("下载超时。请检查网络连接。"):a}}catch(r){if(r.message.includes("身份验证失败")||r.message.includes("下载超时"))throw r;if(r.message.includes("HTTP 404"))return null;this.handleNetworkError(r,"下载")}}async fileExists(t){try{const r=new AbortController,n=setTimeout(()=>r.abort(),1e4),a=await fetch(this.getFullPath(t),{method:"HEAD",headers:{Authorization:this.getAuthHeader()},signal:r.signal});return clearTimeout(n),a.ok}catch(r){return console.error("WebDAV文件检查失败:",r),!1}}async listFiles(){try{const t=new AbortController,r=setTimeout(()=>t.abort(),15e3);try{const n=await fetch(this.config.url+this.config.path,{method:"PROPFIND",headers:{Authorization:this.getAuthHeader(),Depth:"1","Content-Type":"application/xml"},body:` - - - - - - - `,signal:t.signal});if(clearTimeout(r),n.ok||n.status===207){const s=(await n.text()).match(/([^<]+)<\/D:displayname>/g);if(s)return s.map(o=>o.replace(/<\/?D:displayname>/g,"")).filter(o=>o.endsWith(".json"))}else throw n.status===401?new Error("身份验证失败。请检查用户名和密码。"):new Error(`列出文件失败,HTTP状态码 ${n.status}: ${n.statusText}`);return[]}catch(n){throw clearTimeout(r),n.name==="AbortError"?new Error("列出文件超时。请检查网络连接。"):n}}catch(t){if(t.message.includes("身份验证失败")||t.message.includes("列出文件超时"))throw t;this.handleNetworkError(t,"列出文件")}}static validateConfig(t){const r=[];return t.url?!t.url.startsWith("http://")&&!t.url.startsWith("https://")&&r.push("WebDAV URL必须以 http:// 或 https:// 开头"):r.push("WebDAV URL是必需的"),t.username||r.push("用户名是必需的"),t.password||r.push("密码是必需的"),t.path?t.path.startsWith("/")||r.push("路径必须以 / 开头"):r.push("路径是必需的"),r}async getServerInfo(){try{const t=await fetch(this.config.url,{method:"OPTIONS",headers:{Authorization:this.getAuthHeader()}});if(t.ok)return{server:t.headers.get("Server")||void 0,davLevel:t.headers.get("DAV")||void 0}}catch(t){console.warn("无法获取服务器信息:",t)}return{}}}const Ap=()=>{const{aiConfigs:e,activeAIConfig:t,webdavConfigs:r,activeWebDAVConfig:n,lastBackup:a,githubToken:s,language:o,repositories:i,releaseSubscriptions:u,addAIConfig:d,updateAIConfig:m,deleteAIConfig:y,setActiveAIConfig:p,addWebDAVConfig:w,updateWebDAVConfig:v,deleteWebDAVConfig:k,setActiveWebDAVConfig:_,setLastBackup:f,setGitHubToken:c,setLanguage:g,setRepositories:b,setReleases:A}=At(),[P,R]=F.useState(!1),[M,B]=F.useState(!1),[V,U]=F.useState(null),[H,K]=F.useState(null),[T,$]=F.useState(null),[te,q]=F.useState(null),[h,N]=F.useState("idle"),[j,L]=F.useState({name:"",baseUrl:"https://api.openai.com/v1",apiKey:"",model:"gpt-3.5-turbo"}),[G,J]=F.useState({name:"",url:"",username:"",password:"",path:"/github-stars-backup"}),[ne,C]=F.useState({}),[x,I]=F.useState({}),Q=F.useRef(null),Y=()=>{if(!j.name||!j.baseUrl||!j.apiKey||!j.model){alert(o==="zh"?"请填写所有字段":"Please fill in all fields");return}const S={id:Date.now().toString(),name:j.name,baseUrl:j.baseUrl,apiKey:j.apiKey,model:j.model,isActive:e.length===0};d(S),S.isActive&&p(S.id),L({name:"",baseUrl:"https://api.openai.com/v1",apiKey:"",model:"gpt-3.5-turbo"}),R(!1)},xe=()=>{const S=tn.validateConfig(G);if(S.length>0){alert(S.join(` -`));return}const z={id:Date.now().toString(),name:G.name,url:G.url,username:G.username,password:G.password,path:G.path,isActive:r.length===0};w(z),z.isActive&&_(z.id),J({name:"",url:"",username:"",password:"",path:"/github-stars-backup"}),B(!1)},ae=S=>{U(S.id),C({...S})},me=()=>{if(!ne.name||!ne.baseUrl||!ne.apiKey||!ne.model){alert(o==="zh"?"请填写所有字段":"Please fill in all fields");return}m(V,ne),U(null),C({})},pt=S=>{K(S.id),I({...S})},Ue=()=>{const S=tn.validateConfig(x);if(S.length>0){alert(S.join(` -`));return}v(H,x),K(null),I({})},dr=async S=>{$(S.id);try{const X=await new us(S,o).testConnection();alert(X?o==="zh"?"✅ 连接成功!AI配置正常工作。":"✅ Connection successful! AI configuration is working.":o==="zh"?"❌ 连接失败。请检查您的配置。":"❌ Connection failed. Please check your configuration.")}catch(z){const X=o==="zh"?`❌ 连接失败: ${z instanceof Error?z.message:"未知错误"}`:`❌ Connection failed: ${z instanceof Error?z.message:"Unknown error"}`;alert(X)}finally{$(null)}},Un=async S=>{q(S.id);try{const z=new tn(S);if(await z.testConnection()){const be=await z.getServerInfo();let se=o==="zh"?"✅ WebDAV连接成功!":"✅ WebDAV connection successful!";be.server&&(se+=` -${o==="zh"?"服务器":"Server"}: ${be.server}`),be.davLevel&&(se+=` -${o==="zh"?"DAV级别":"DAV Level"}: ${be.davLevel}`),alert(se)}else alert(o==="zh"?"❌ WebDAV连接失败。请检查您的配置。":"❌ WebDAV connection failed. Please check your configuration.")}catch(z){const X=o==="zh"?`❌ WebDAV连接测试失败: - -${z instanceof Error?z.message:"未知错误"}`:`❌ WebDAV connection test failed: - -${z instanceof Error?z.message:"Unknown error"}`;alert(X)}finally{q(null)}},cs=S=>{e.forEach(z=>{m(z.id,{isActive:z.id===S})}),p(S)},Kt=S=>{r.forEach(z=>{v(z.id,{isActive:z.id===S})}),_(S)},qt=async()=>{const S=r.find(z=>z.id===n);if(!S){alert(o==="zh"?"请先配置并激活WebDAV服务。":"Please configure and activate WebDAV service first.");return}N("backing-up");try{const z=new tn(S),X={version:"1.0",timestamp:new Date().toISOString(),repositories:i,aiConfigs:e,webdavConfigs:r,releaseSubscriptions:Array.from(u),settings:{language:o,lastBackup:a,activeAIConfig:t,activeWebDAVConfig:n}},be=`github-stars-backup-${new Date().toISOString().split("T")[0]}.json`,se=JSON.stringify(X,null,2);await z.uploadFile(be,se);const ht=new Date().toISOString();f(ht),alert(o==="zh"?`✅ 备份成功! -文件名: ${be} -备份时间: ${new Date(ht).toLocaleString()}`:`✅ Backup successful! -Filename: ${be} -Backup time: ${new Date(ht).toLocaleString()}`)}catch(z){console.error("Backup failed:",z);const X=o==="zh"?`❌ 备份失败: - -${z instanceof Error?z.message:"未知错误"}`:`❌ Backup failed: - -${z instanceof Error?z.message:"Unknown error"}`;alert(X)}finally{N("idle")}},Rd=async()=>{var X,be;const S=r.find(se=>se.id===n);if(!S){alert(o==="zh"?"请先配置并激活WebDAV服务。":"Please configure and activate WebDAV service first.");return}if(confirm(o==="zh"?`⚠️ 恢复操作将覆盖当前的仓库数据和配置。 - -确定要继续吗?`:`⚠️ Restore operation will overwrite current repository data and configurations. - -Are you sure you want to continue?`)){N("restoring");try{const se=new tn(S),Ur=(await se.listFiles()).filter(he=>he.startsWith("github-stars-backup-"));if(Ur.length===0){alert(o==="zh"?"没有找到备份文件。":"No backup files found.");return}const fr=Ur.sort().reverse()[0],Hr=await se.downloadFile(fr);if(!Hr){alert(o==="zh"?"无法读取备份文件。":"Unable to read backup file.");return}const _e=JSON.parse(Hr);_e.repositories&&b(_e.repositories),_e.releases&&A(_e.releases),alert(o==="zh"?`✅ 恢复成功! -备份文件: ${fr} -备份时间: ${new Date(_e.timestamp).toLocaleString()} -仓库数量: ${((X=_e.repositories)==null?void 0:X.length)||0} - -页面将刷新以应用更改。`:`✅ Restore successful! -Backup file: ${fr} -Backup time: ${new Date(_e.timestamp).toLocaleString()} -Repositories: ${((be=_e.repositories)==null?void 0:be.length)||0} - -Page will refresh to apply changes.`),setTimeout(()=>window.location.reload(),2e3)}catch(se){console.error("Restore failed:",se);const ht=o==="zh"?`❌ 恢复失败: - -${se instanceof Error?se.message:"未知错误"}`:`❌ Restore failed: - -${se instanceof Error?se.message:"Unknown error"}`;alert(ht)}finally{N("idle")}}},Td=()=>{N("exporting");try{const S={version:"1.0",timestamp:new Date().toISOString(),aiConfigs:e,webdavConfigs:r,settings:{language:o,activeAIConfig:t,activeWebDAVConfig:n}},z=JSON.stringify(S,null,2),X=new Blob([z],{type:"application/json"}),be=URL.createObjectURL(X),se=document.createElement("a");se.href=be,se.download=`github-stars-config-${new Date().toISOString().split("T")[0]}.json`,document.body.appendChild(se),se.click(),document.body.removeChild(se),URL.revokeObjectURL(be),alert(o==="zh"?`✅ 配置导出成功!文件已下载到您的设备。 - -注意:此文件包含敏感信息(API密钥、密码),请妥善保管。`:`✅ Configuration exported successfully! File has been downloaded to your device. - -Note: This file contains sensitive information (API keys, passwords), please keep it secure.`)}catch(S){console.error("Export failed:",S),alert(o==="zh"?`❌ 导出失败: ${S instanceof Error?S.message:"未知错误"}`:`❌ Export failed: ${S instanceof Error?S.message:"Unknown error"}`)}finally{N("idle")}},Md=()=>{var S;(S=Q.current)==null||S.click()},Id=async S=>{var X,be,se,ht,Ur,fr,Hr;const z=(X=S.target.files)==null?void 0:X[0];if(z){N("importing");try{const _e=await z.text(),he=JSON.parse(_e);if(!he.version||!he.timestamp)throw new Error(o==="zh"?"无效的配置文件格式":"Invalid configuration file format");const Od=o==="zh"?`⚠️ 导入配置将覆盖当前的AI和WebDAV配置。 - -配置文件信息: -• 创建时间: ${new Date(he.timestamp).toLocaleString()} -• AI配置: ${((be=he.aiConfigs)==null?void 0:be.length)||0} 个 -• WebDAV配置: ${((se=he.webdavConfigs)==null?void 0:se.length)||0} 个 - -确定要继续吗?`:`⚠️ Importing configuration will overwrite current AI and WebDAV configurations. - -Configuration file info: -• Created: ${new Date(he.timestamp).toLocaleString()} -• AI configs: ${((ht=he.aiConfigs)==null?void 0:ht.length)||0} -• WebDAV configs: ${((Ur=he.webdavConfigs)==null?void 0:Ur.length)||0} - -Are you sure you want to continue?`;if(!confirm(Od))return;he.aiConfigs&&Array.isArray(he.aiConfigs)&&he.aiConfigs.forEach(ce=>{if(ce.name&&ce.baseUrl&&ce.model){const ds={id:Date.now().toString()+Math.random().toString(36).substr(2,9),name:`${ce.name} (导入)`,baseUrl:ce.baseUrl,apiKey:ce.apiKey||"",model:ce.model,isActive:!1};d(ds)}}),he.webdavConfigs&&Array.isArray(he.webdavConfigs)&&he.webdavConfigs.forEach(ce=>{if(ce.name&&ce.url&&ce.username&&ce.path){const ds={id:Date.now().toString()+Math.random().toString(36).substr(2,9),name:`${ce.name} (导入)`,url:ce.url,username:ce.username,password:ce.password||"",path:ce.path,isActive:!1};w(ds)}}),he.settings&&he.settings.language&&g(he.settings.language);const Ro=((fr=he.aiConfigs)==null?void 0:fr.some(ce=>ce.apiKey&&ce.apiKey!=="***"))||((Hr=he.webdavConfigs)==null?void 0:Hr.some(ce=>ce.password&&ce.password!=="***"));alert(o==="zh"?`✅ 配置导入成功!${Ro?` - -所有配置信息(包括API密钥和密码)已完整导入。`:` - -注意:如果配置中缺少API密钥和密码,请手动补充。`}`:`✅ Configuration imported successfully!${Ro?` - -All configuration information (including API keys and passwords) has been imported completely.`:` - -Note: If API keys and passwords are missing from the configuration, please add them manually.`}`)}catch(_e){console.error("Import failed:",_e),alert(o==="zh"?`❌ 导入失败: ${_e instanceof Error?_e.message:"未知错误"}`:`❌ Import failed: ${_e instanceof Error?_e.message:"Unknown error"}`)}finally{N("idle"),Q.current&&(Q.current.value="")}}},Ld=[{name:"OpenAI GPT-3.5",baseUrl:"https://api.openai.com/v1",model:"gpt-3.5-turbo"},{name:"OpenAI GPT-4",baseUrl:"https://api.openai.com/v1",model:"gpt-4"},{name:"Anthropic Claude",baseUrl:"https://api.anthropic.com/v1",model:"claude-3-sonnet-20240229"}],$d=[{name:"Nextcloud",url:"https://your-nextcloud.com/remote.php/dav/files/username",path:"/github-stars-backup"},{name:"ownCloud",url:"https://your-owncloud.com/remote.php/webdav",path:"/github-stars-backup"},{name:"坚果云",url:"https://dav.jianguoyun.com/dav",path:"/github-stars-backup"}],D=(S,z)=>o==="zh"?S:z;return l.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[l.jsxs("div",{className:"mb-8",children:[l.jsx("h2",{className:"text-2xl font-bold text-gray-900 dark:text-white mb-2",children:D("设置","Settings")}),l.jsx("p",{className:"text-gray-600 dark:text-gray-400",children:D("配置您的AI服务、WebDAV备份和应用程序偏好","Configure your AI services, WebDAV backup, and application preferences")})]}),l.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-xl border border-gray-200 dark:border-gray-700 p-6",children:[l.jsxs("div",{className:"flex items-center space-x-3 mb-4",children:[l.jsx("div",{className:"flex items-center justify-center w-10 h-10 bg-indigo-100 dark:bg-indigo-900 rounded-lg",children:l.jsx(Nd,{className:"w-5 h-5 text-indigo-600 dark:text-indigo-400"})}),l.jsxs("div",{children:[l.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-white",children:D("配置管理","Configuration Management")}),l.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:D("导入和导出您的应用配置","Import and export your application configurations")})]})]}),l.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[l.jsxs("button",{onClick:Td,disabled:h!=="idle",className:"flex items-center justify-center space-x-2 px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[l.jsx(Eg,{className:"w-4 h-4"}),l.jsx("span",{children:h==="exporting"?D("导出中...","Exporting..."):D("导出配置","Export Configuration")})]}),l.jsxs("button",{onClick:Md,disabled:h!=="idle",className:"flex items-center justify-center space-x-2 px-4 py-2 bg-green-600 text-white rounded-lg hover:bg-green-700 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[l.jsx(_g,{className:"w-4 h-4"}),l.jsx("span",{children:h==="importing"?D("导入中...","Importing..."):D("导入配置","Import Configuration")})]})]}),l.jsx("input",{ref:Q,type:"file",accept:".json",onChange:Id,className:"hidden"}),l.jsx("div",{className:"mt-4 p-3 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg",children:l.jsxs("div",{className:"flex items-start space-x-2",children:[l.jsx(Pg,{className:"w-5 h-5 text-blue-600 dark:text-blue-400 flex-shrink-0 mt-0.5"}),l.jsxs("div",{className:"text-sm text-blue-700 dark:text-blue-300",children:[l.jsx("p",{className:"font-medium mb-1",children:D("配置导入导出说明","Configuration Import/Export Notes")}),l.jsxs("ul",{className:"list-disc list-inside space-y-1 text-xs",children:[l.jsx("li",{children:D("导出的配置文件包含完整的API密钥和密码信息","Exported configuration files contain complete API keys and password information")}),l.jsx("li",{children:D("请妥善保管导出的配置文件,避免泄露敏感信息","Please keep exported configuration files secure to avoid leaking sensitive information")}),l.jsx("li",{children:D("导入配置将完整恢复所有设置,包括敏感信息","Importing configuration will completely restore all settings, including sensitive information")}),l.jsx("li",{children:D("建议定期导出配置作为备份","It is recommended to export configuration regularly as backup")})]})]})]})})]}),l.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-xl border border-gray-200 dark:border-gray-700 p-6",children:[l.jsxs("div",{className:"flex items-center space-x-3 mb-4",children:[l.jsx("div",{className:"flex items-center justify-center w-10 h-10 bg-blue-100 dark:bg-blue-900 rounded-lg",children:l.jsx(bd,{className:"w-5 h-5 text-blue-600 dark:text-blue-400"})}),l.jsxs("div",{children:[l.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-white",children:D("语言设置","Language Settings")}),l.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:D("选择界面语言和AI分析语言","Choose interface language and AI analysis language")})]})]}),l.jsxs("div",{className:"space-y-3",children:[l.jsxs("div",{children:[l.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:D("界面语言","Interface Language")}),l.jsxs("select",{value:o,onChange:S=>g(S.target.value),className:"w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white",children:[l.jsx("option",{value:"zh",children:"中文"}),l.jsx("option",{value:"en",children:"English"})]})]}),l.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:D("此设置将影响界面显示语言和AI分析生成的标签、描述的语言。","This setting affects the interface display language and the language of AI-generated tags and descriptions.")})]})]}),l.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-xl border border-gray-200 dark:border-gray-700 p-6",children:[l.jsxs("div",{className:"flex items-center space-x-3 mb-4",children:[l.jsx("div",{className:"flex items-center justify-center w-10 h-10 bg-gray-100 dark:bg-gray-700 rounded-lg",children:l.jsx(Sd,{className:"w-5 h-5 text-gray-600 dark:text-gray-400"})}),l.jsxs("div",{children:[l.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-white",children:D("GitHub访问令牌","GitHub Access Token")}),l.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:D("用于GitHub API的个人访问令牌","Personal access token for GitHub API")})]})]}),l.jsxs("div",{className:"space-y-3",children:[l.jsxs("div",{className:"flex items-center space-x-3",children:[l.jsx("input",{type:"password",placeholder:"ghp_xxxxxxxxxxxxxxxxxxxx",value:s||"",onChange:S=>c(S.target.value),className:"flex-1 px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"}),l.jsx("span",{className:`px-3 py-2 rounded-lg text-sm ${s?"bg-green-100 text-green-700 dark:bg-green-900 dark:text-green-300":"bg-red-100 text-red-700 dark:bg-red-900 dark:text-red-300"}`,children:s?D("已连接","Connected"):D("未设置","Not Set")})]}),l.jsxs("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:[D("在","Create a personal access token at")," ",l.jsx("a",{href:"https://github.com/settings/tokens",target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 dark:text-blue-400 hover:underline",children:D("GitHub设置","GitHub Settings")})," ",D("创建个人访问令牌,需要'repo'和'user'权限。","with 'repo' and 'user' scopes.")]})]})]}),l.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-xl border border-gray-200 dark:border-gray-700 p-6",children:[l.jsxs("div",{className:"flex items-center justify-between mb-6",children:[l.jsxs("div",{className:"flex items-center space-x-3",children:[l.jsx("div",{className:"flex items-center justify-center w-10 h-10 bg-green-100 dark:bg-green-900 rounded-lg",children:l.jsx(bg,{className:"w-5 h-5 text-green-600 dark:text-green-400"})}),l.jsxs("div",{children:[l.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-white",children:D("WebDAV备份","WebDAV Backup")}),l.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:D("配置WebDAV服务器以备份和恢复数据","Configure WebDAV server for data backup and restore")})]})]}),l.jsxs("button",{onClick:()=>B(!0),className:"flex items-center space-x-2 px-4 py-2 bg-green-600 text-white rounded-lg hover:bg-green-700 transition-colors",children:[l.jsx(Tn,{className:"w-4 h-4"}),l.jsx("span",{children:D("添加WebDAV","Add WebDAV")})]})]}),r.length>0&&l.jsxs("div",{className:"mb-6 p-4 bg-gray-50 dark:bg-gray-700 rounded-lg",children:[l.jsxs("div",{className:"flex items-center justify-between mb-4",children:[l.jsxs("div",{className:"flex items-center space-x-3",children:[l.jsx("div",{className:`w-3 h-3 rounded-full ${n?"bg-green-500":"bg-gray-400"}`}),l.jsx("span",{className:"text-sm font-medium text-gray-900 dark:text-white",children:n?D("WebDAV已配置","WebDAV Configured"):D("WebDAV未激活","WebDAV Not Active")}),a&&l.jsxs("span",{className:"text-xs text-gray-500 dark:text-gray-400",children:[D("上次备份:","Last backup:")," ",new Date(a).toLocaleString()]})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsxs("button",{onClick:qt,disabled:!n||h!=="idle",className:"flex items-center space-x-2 px-3 py-1.5 bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300 rounded-lg hover:bg-blue-200 dark:hover:bg-blue-800 transition-colors text-sm disabled:opacity-50",children:[l.jsx(Vg,{className:"w-4 h-4"}),l.jsx("span",{children:h==="backing-up"?D("备份中...","Backing up..."):D("备份","Backup")})]}),l.jsxs("button",{onClick:Rd,disabled:!n||h!=="idle",className:"flex items-center space-x-2 px-3 py-1.5 bg-orange-100 text-orange-700 dark:bg-orange-900 dark:text-orange-300 rounded-lg hover:bg-orange-200 dark:hover:bg-orange-800 transition-colors text-sm disabled:opacity-50",children:[l.jsx(Ng,{className:"w-4 h-4"}),l.jsx("span",{children:h==="restoring"?D("恢复中...","Restoring..."):D("恢复","Restore")})]})]})]}),l.jsxs("div",{className:"flex items-start space-x-3 p-3 bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg",children:[l.jsx(yg,{className:"w-5 h-5 text-yellow-600 dark:text-yellow-400 flex-shrink-0 mt-0.5"}),l.jsxs("div",{className:"text-sm",children:[l.jsx("p",{className:"font-medium text-yellow-800 dark:text-yellow-200 mb-1",children:D("重要提示:CORS配置","Important: CORS Configuration")}),l.jsx("p",{className:"text-yellow-700 dark:text-yellow-300",children:D("如果遇到连接错误,请确保您的WebDAV服务器配置了正确的CORS头。点击测试连接按钮查看详细的错误信息和解决方案。","If you encounter connection errors, ensure your WebDAV server is configured with proper CORS headers. Click the test connection button for detailed error messages and solutions.")})]})]})]}),l.jsx("div",{className:"space-y-4",children:r.map(S=>l.jsx("div",{className:`p-4 border rounded-lg transition-colors ${S.id===n?"border-green-300 bg-green-50 dark:border-green-700 dark:bg-green-950":"border-gray-200 dark:border-gray-600"}`,children:H===S.id?l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[l.jsxs("div",{children:[l.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[D("配置名称","Configuration Name")," *"]}),l.jsx("input",{type:"text",value:x.name||"",onChange:z=>I(X=>({...X,name:z.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"})]}),l.jsxs("div",{children:[l.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[D("用户名","Username")," *"]}),l.jsx("input",{type:"text",value:x.username||"",onChange:z=>I(X=>({...X,username:z.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"})]})]}),l.jsxs("div",{children:[l.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[D("WebDAV服务器URL","WebDAV Server URL")," *"]}),l.jsx("input",{type:"url",value:x.url||"",onChange:z=>I(X=>({...X,url:z.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"})]}),l.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[l.jsxs("div",{children:[l.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[D("密码","Password")," *"]}),l.jsx("input",{type:"password",value:x.password||"",onChange:z=>I(X=>({...X,password:z.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"})]}),l.jsxs("div",{children:[l.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[D("备份路径","Backup Path")," *"]}),l.jsx("input",{type:"text",value:x.path||"",onChange:z=>I(X=>({...X,path:z.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"})]})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsxs("button",{onClick:Ue,className:"flex items-center space-x-2 px-3 py-1.5 bg-green-600 text-white rounded-lg hover:bg-green-700 transition-colors text-sm",children:[l.jsx(Ui,{className:"w-4 h-4"}),l.jsx("span",{children:D("保存","Save")})]}),l.jsxs("button",{onClick:()=>{K(null),I({})},className:"flex items-center space-x-2 px-3 py-1.5 bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 rounded-lg hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors text-sm",children:[l.jsx(Ge,{className:"w-4 h-4"}),l.jsx("span",{children:D("取消","Cancel")})]})]})]}):l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{children:[l.jsxs("h4",{className:"font-medium text-gray-900 dark:text-white",children:[S.name,S.id===n&&l.jsx("span",{className:"ml-2 px-2 py-1 bg-green-100 text-green-700 dark:bg-green-900 dark:text-green-300 rounded text-xs",children:D("活跃","Active")})]}),l.jsxs("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:[S.url," • ",S.path]})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsxs("button",{onClick:()=>Un(S),disabled:te===S.id,className:"flex items-center space-x-2 px-3 py-1.5 bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 rounded-lg hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors text-sm",children:[l.jsx(Yi,{className:"w-4 h-4"}),l.jsx("span",{children:te===S.id?D("测试中...","Testing..."):D("测试","Test")})]}),l.jsx("button",{onClick:()=>pt(S),className:"p-1.5 text-blue-600 dark:text-blue-400 hover:bg-blue-100 dark:hover:bg-blue-900 rounded-lg transition-colors",children:l.jsx(tr,{className:"w-4 h-4"})}),S.id!==n&&l.jsx("button",{onClick:()=>Kt(S.id),className:"px-3 py-1.5 bg-green-100 text-green-700 dark:bg-green-900 dark:text-green-300 rounded-lg hover:bg-green-200 dark:hover:bg-green-800 transition-colors text-sm",children:D("设为活跃","Set Active")}),l.jsx("button",{onClick:()=>k(S.id),className:"p-1.5 text-red-600 dark:text-red-400 hover:bg-red-100 dark:hover:bg-red-900 rounded-lg transition-colors",children:l.jsx(Rl,{className:"w-4 h-4"})})]})]})},S.id))}),M&&l.jsxs("div",{className:"mt-6 p-4 border border-gray-200 dark:border-gray-600 rounded-lg bg-gray-50 dark:bg-gray-750",children:[l.jsx("h4",{className:"font-medium text-gray-900 dark:text-white mb-4",children:D("添加新的WebDAV配置","Add New WebDAV Configuration")}),l.jsxs("div",{className:"mb-4",children:[l.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:D("快速设置(可选)","Quick Setup (Optional)")}),l.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-2",children:$d.map((S,z)=>l.jsxs("button",{onClick:()=>J(X=>({...X,...S})),className:"p-3 text-left border border-gray-200 dark:border-gray-600 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",children:[l.jsx("p",{className:"font-medium text-sm text-gray-900 dark:text-white",children:S.name}),l.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:S.url})]},z))})]}),l.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-4",children:[l.jsxs("div",{children:[l.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[D("配置名称","Configuration Name")," *"]}),l.jsx("input",{type:"text",placeholder:D("我的WebDAV服务器","My WebDAV Server"),value:G.name||"",onChange:S=>J(z=>({...z,name:S.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"})]}),l.jsxs("div",{children:[l.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[D("用户名","Username")," *"]}),l.jsx("input",{type:"text",placeholder:"username",value:G.username||"",onChange:S=>J(z=>({...z,username:S.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"})]})]}),l.jsxs("div",{className:"mb-4",children:[l.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[D("WebDAV服务器URL","WebDAV Server URL")," *"]}),l.jsx("input",{type:"url",placeholder:"https://your-server.com/webdav",value:G.url||"",onChange:S=>J(z=>({...z,url:S.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"})]}),l.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-4",children:[l.jsxs("div",{children:[l.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[D("密码","Password")," *"]}),l.jsx("input",{type:"password",placeholder:"password",value:G.password||"",onChange:S=>J(z=>({...z,password:S.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"})]}),l.jsxs("div",{children:[l.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:[D("备份路径","Backup Path")," *"]}),l.jsx("input",{type:"text",placeholder:"/github-stars-backup",value:G.path||"",onChange:S=>J(z=>({...z,path:S.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"})]})]}),l.jsxs("div",{className:"flex items-center space-x-3",children:[l.jsxs("button",{onClick:xe,className:"flex items-center space-x-2 px-4 py-2 bg-green-600 text-white rounded-lg hover:bg-green-700 transition-colors",children:[l.jsx(Mn,{className:"w-4 h-4"}),l.jsx("span",{children:D("保存配置","Save Configuration")})]}),l.jsxs("button",{onClick:()=>{B(!1),J({name:"",url:"",username:"",password:"",path:"/github-stars-backup"})},className:"flex items-center space-x-2 px-4 py-2 bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 rounded-lg hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors",children:[l.jsx(Ge,{className:"w-4 h-4"}),l.jsx("span",{children:D("取消","Cancel")})]})]})]})]}),l.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-xl border border-gray-200 dark:border-gray-700 p-6",children:[l.jsxs("div",{className:"flex items-center justify-between mb-6",children:[l.jsxs("div",{className:"flex items-center space-x-3",children:[l.jsx("div",{className:"flex items-center justify-center w-10 h-10 bg-purple-100 dark:bg-purple-900 rounded-lg",children:l.jsx(Rn,{className:"w-5 h-5 text-purple-600 dark:text-purple-400"})}),l.jsxs("div",{children:[l.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-white",children:D("AI配置","AI Configurations")}),l.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:D("管理用于仓库分析的AI服务配置","Manage your AI service configurations for repository analysis")})]})]}),l.jsxs("button",{onClick:()=>R(!0),className:"flex items-center space-x-2 px-4 py-2 bg-purple-600 text-white rounded-lg hover:bg-purple-700 transition-colors",children:[l.jsx(Tn,{className:"w-4 h-4"}),l.jsx("span",{children:D("添加配置","Add Configuration")})]})]}),l.jsx("div",{className:"space-y-4",children:e.map(S=>l.jsx("div",{className:`p-4 border rounded-lg transition-colors ${S.id===t?"border-purple-300 bg-purple-50 dark:border-purple-700 dark:bg-purple-950":"border-gray-200 dark:border-gray-600"}`,children:V===S.id?l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[l.jsxs("div",{children:[l.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:D("配置名称","Configuration Name")}),l.jsx("input",{type:"text",value:ne.name||"",onChange:z=>C(X=>({...X,name:z.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"})]}),l.jsxs("div",{children:[l.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:D("模型","Model")}),l.jsx("input",{type:"text",value:ne.model||"",onChange:z=>C(X=>({...X,model:z.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"})]})]}),l.jsxs("div",{children:[l.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:D("API基础URL","API Base URL")}),l.jsx("input",{type:"url",value:ne.baseUrl||"",onChange:z=>C(X=>({...X,baseUrl:z.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"})]}),l.jsxs("div",{children:[l.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:D("API密钥","API Key")}),l.jsx("input",{type:"password",value:ne.apiKey||"",onChange:z=>C(X=>({...X,apiKey:z.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsxs("button",{onClick:me,className:"flex items-center space-x-2 px-3 py-1.5 bg-purple-600 text-white rounded-lg hover:bg-purple-700 transition-colors text-sm",children:[l.jsx(Ui,{className:"w-4 h-4"}),l.jsx("span",{children:D("保存","Save")})]}),l.jsxs("button",{onClick:()=>{U(null),C({})},className:"flex items-center space-x-2 px-3 py-1.5 bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 rounded-lg hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors text-sm",children:[l.jsx(Ge,{className:"w-4 h-4"}),l.jsx("span",{children:D("取消","Cancel")})]})]})]}):l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{children:[l.jsxs("h4",{className:"font-medium text-gray-900 dark:text-white",children:[S.name,S.id===t&&l.jsx("span",{className:"ml-2 px-2 py-1 bg-purple-100 text-purple-700 dark:bg-purple-900 dark:text-purple-300 rounded text-xs",children:D("活跃","Active")})]}),l.jsxs("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:[S.baseUrl," • ",S.model]})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsxs("button",{onClick:()=>dr(S),disabled:T===S.id,className:"flex items-center space-x-2 px-3 py-1.5 bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 rounded-lg hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors text-sm",children:[l.jsx(Yi,{className:"w-4 h-4"}),l.jsx("span",{children:T===S.id?D("测试中...","Testing..."):D("测试","Test")})]}),l.jsx("button",{onClick:()=>ae(S),className:"p-1.5 text-blue-600 dark:text-blue-400 hover:bg-blue-100 dark:hover:bg-blue-900 rounded-lg transition-colors",children:l.jsx(tr,{className:"w-4 h-4"})}),S.id!==t&&l.jsx("button",{onClick:()=>cs(S.id),className:"px-3 py-1.5 bg-purple-100 text-purple-700 dark:bg-purple-900 dark:text-purple-300 rounded-lg hover:bg-purple-200 dark:hover:bg-purple-800 transition-colors text-sm",children:D("设为活跃","Set Active")}),l.jsx("button",{onClick:()=>y(S.id),className:"p-1.5 text-red-600 dark:text-red-400 hover:bg-red-100 dark:hover:bg-red-900 rounded-lg transition-colors",children:l.jsx(Rl,{className:"w-4 h-4"})})]})]})},S.id))}),P&&l.jsxs("div",{className:"mt-6 p-4 border border-gray-200 dark:border-gray-600 rounded-lg bg-gray-50 dark:bg-gray-750",children:[l.jsx("h4",{className:"font-medium text-gray-900 dark:text-white mb-4",children:D("添加新的AI配置","Add New AI Configuration")}),l.jsxs("div",{className:"mb-4",children:[l.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:D("快速设置(可选)","Quick Setup (Optional)")}),l.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-2",children:Ld.map((S,z)=>l.jsxs("button",{onClick:()=>L(X=>({...X,...S})),className:"p-3 text-left border border-gray-200 dark:border-gray-600 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",children:[l.jsx("p",{className:"font-medium text-sm text-gray-900 dark:text-white",children:S.name}),l.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:S.model})]},z))})]}),l.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-4",children:[l.jsxs("div",{children:[l.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:D("配置名称","Configuration Name")}),l.jsx("input",{type:"text",placeholder:D("我的OpenAI配置","My OpenAI Config"),value:j.name||"",onChange:S=>L(z=>({...z,name:S.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"})]}),l.jsxs("div",{children:[l.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:D("模型","Model")}),l.jsx("input",{type:"text",placeholder:"gpt-3.5-turbo",value:j.model||"",onChange:S=>L(z=>({...z,model:S.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"})]})]}),l.jsxs("div",{className:"mb-4",children:[l.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:D("API基础URL","API Base URL")}),l.jsx("input",{type:"url",placeholder:"https://api.openai.com/v1",value:j.baseUrl||"",onChange:S=>L(z=>({...z,baseUrl:S.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"})]}),l.jsxs("div",{className:"mb-4",children:[l.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:D("API密钥","API Key")}),l.jsx("input",{type:"password",placeholder:"sk-xxxxxxxxxxxxxxxxxxxx",value:j.apiKey||"",onChange:S=>L(z=>({...z,apiKey:S.target.value})),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white"})]}),l.jsxs("div",{className:"flex items-center space-x-3",children:[l.jsxs("button",{onClick:Y,className:"flex items-center space-x-2 px-4 py-2 bg-purple-600 text-white rounded-lg hover:bg-purple-700 transition-colors",children:[l.jsx(Mn,{className:"w-4 h-4"}),l.jsx("span",{children:D("保存配置","Save Configuration")})]}),l.jsxs("button",{onClick:()=>{R(!1),L({name:"",baseUrl:"https://api.openai.com/v1",apiKey:"",model:"gpt-3.5-turbo"})},className:"flex items-center space-x-2 px-4 py-2 bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 rounded-lg hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors",children:[l.jsx(Ge,{className:"w-4 h-4"}),l.jsx("span",{children:D("取消","Cancel")})]})]})]})]})]})};function Ep(){const{isAuthenticated:e,currentView:t,theme:r,searchResults:n,repositories:a}=At(),[s,o]=F.useState("all");if(F.useEffect(()=>{r==="dark"?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")},[r]),!e)return l.jsx(Em,{});const i=()=>{switch(t){case"repositories":return l.jsxs("div",{className:"flex space-x-6",children:[l.jsx(Np,{repositories:a,selectedCategory:s,onCategorySelect:o}),l.jsxs("div",{className:"flex-1 space-y-6",children:[l.jsx(zm,{}),l.jsx(jp,{repositories:n.length>0?n:a,selectedCategory:s})]})]});case"releases":return l.jsx(Cp,{});case"settings":return l.jsx(Ap,{});default:return null}};return l.jsxs("div",{className:"min-h-screen bg-gray-50 dark:bg-gray-900",children:[l.jsx(_m,{}),l.jsx("main",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8",children:i()})]})}console.log("Main.tsx loading...");const Dd=document.getElementById("root");if(!Dd)throw new Error("Root element not found");console.log("Root element found, creating React root...");const _p=hd(Dd);_p.render(l.jsx(F.StrictMode,{children:l.jsx(Ep,{})}));console.log("React app rendered"); diff --git a/dist/index.html b/dist/index.html index 9a41ea3..a36d468 100644 --- a/dist/index.html +++ b/dist/index.html @@ -10,8 +10,8 @@ - - + +
diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index 120c2b8..8334e32 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -168,6 +168,10 @@ export const SearchBar: React.FC = () => { aValue = a.name.toLowerCase(); bValue = b.name.toLowerCase(); break; + case 'starred': + aValue = a.starred_at ? new Date(a.starred_at).getTime() : 0; + bValue = b.starred_at ? new Date(b.starred_at).getTime() : 0; + break; default: aValue = new Date(a.updated_at).getTime(); bValue = new Date(b.updated_at).getTime(); @@ -361,13 +365,14 @@ export const SearchBar: React.FC = () => {