From db7f3f848b3d9392aa7bac0e49252992856d9d79 Mon Sep 17 00:00:00 2001 From: Amir Hossein Habibi Date: Tue, 7 Oct 2025 11:34:25 +0330 Subject: [PATCH 1/3] =?UTF-8?q?=F0=9F=9A=80=20feat(health/response):=20Add?= =?UTF-8?q?=20GitHub=20link=20to=20home=20response=20links?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/services/health/response.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/services/health/response.rs b/src/services/health/response.rs index 7df78f9..2c5c3ea 100644 --- a/src/services/health/response.rs +++ b/src/services/health/response.rs @@ -89,7 +89,8 @@ fn build_api_info(stats: EndpointStats) -> serde_json::Value { "contact": { "homepage": "habibi-dev.ir", "email": "habibi.dev@gmail.com", - "telegram": "https://t.me/habibi_dev" + "telegram": "https://t.me/habibi_dev", + "github": "https://github.com/habibi-dev/rest-api.ir" } }) } From fe09bef661754b60a199dfbb18a94affe8fcc812 Mon Sep 17 00:00:00 2001 From: Amir Hossein Habibi Date: Wed, 8 Oct 2025 22:26:49 +0330 Subject: [PATCH 2/3] =?UTF-8?q?=E2=9C=A8=20feat(index):=20Add=20index=20pa?= =?UTF-8?q?ge=20with=20API=20info,=20usage,=20and=20stats.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 132 +++++++++++++++++++++++++ Cargo.toml | 6 +- src/assets/index-Bu-dXgft.css | 1 + src/assets/index-DM3BAv3J.js | 168 ++++++++++++++++++++++++++++++++ src/services/health/mod.rs | 4 +- src/services/health/response.rs | 18 ++-- src/services/index/mod.rs | 44 +++++++++ src/services/mod.rs | 1 + src/services/routes.rs | 21 +++- templates/index.html | 77 +++++++++++++++ 10 files changed, 455 insertions(+), 17 deletions(-) create mode 100644 src/assets/index-Bu-dXgft.css create mode 100644 src/assets/index-DM3BAv3J.js create mode 100644 src/services/index/mod.rs create mode 100644 templates/index.html diff --git a/Cargo.lock b/Cargo.lock index 5b9f93d..9b05aeb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -114,6 +114,49 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +[[package]] +name = "askama" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f75363874b771be265f4ffe307ca705ef6f3baa19011c149da8674a87f1b75c4" +dependencies = [ + "askama_derive", + "itoa", + "percent-encoding", + "serde", + "serde_json", +] + +[[package]] +name = "askama_derive" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "129397200fe83088e8a68407a8e2b1f826cf0086b21ccdb866a722c8bcd3a94f" +dependencies = [ + "askama_parser", + "basic-toml", + "memchr", + "proc-macro2", + "pulldown-cmark", + "quote", + "rustc-hash", + "serde", + "serde_derive", + "syn 2.0.106", +] + +[[package]] +name = "askama_parser" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6ab5630b3d5eaf232620167977f95eb51f3432fc76852328774afbd242d4358" +dependencies = [ + "memchr", + "serde", + "serde_derive", + "winnow", +] + [[package]] name = "async-attributes" version = "1.1.2" @@ -374,6 +417,15 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" +[[package]] +name = "basic-toml" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba62675e8242a4c4e806d12f11d136e626e6c8361d6b829310732241652a178a" +dependencies = [ + "serde", +] + [[package]] name = "bigdecimal" version = "0.4.8" @@ -1117,6 +1169,12 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "http-range-header" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" + [[package]] name = "httparse" version = "1.10.1" @@ -1485,6 +1543,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "miniz_oxide" version = "0.8.9" @@ -1854,6 +1922,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "pulldown-cmark" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0" +dependencies = [ + "bitflags", + "memchr", + "unicase", +] + [[package]] name = "quote" version = "1.0.40" @@ -2063,6 +2142,7 @@ dependencies = [ name = "rust_rest_api" version = "0.1.5" dependencies = [ + "askama", "axum", "chrono", "chrono-tz", @@ -2075,6 +2155,7 @@ dependencies = [ "serde", "serde_json", "tokio", + "tower-http", ] [[package]] @@ -2083,6 +2164,12 @@ version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + [[package]] name = "rustix" version = "1.1.2" @@ -2927,6 +3014,19 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-util" +version = "0.7.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + [[package]] name = "toml_datetime" version = "0.7.2" @@ -2973,6 +3073,32 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "http-range-header", + "httpdate", + "mime", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tower-layer" version = "0.3.3" @@ -3038,6 +3164,12 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +[[package]] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + [[package]] name = "unicode-bidi" version = "0.3.18" diff --git a/Cargo.toml b/Cargo.toml index 0493286..64dfa59 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,13 +15,15 @@ axum = "0.8.4" tokio = { version = "1.47.1", features = ["full"] } serde_json = { version = "1.0.145", features = ["preserve_order"] } dotenvy = "0.15.7" -http = "1.3.1" serde = { version = "1.0.228", features = ["derive"] } chrono = "0.4.42" chrono-tz = "0.10.4" sea-orm = { version = "1.1.16", features = ["sqlx-sqlite", "runtime-tokio-rustls"] } once_cell = "1.21.3" rust-embed = "8.7.2" +askama = { version = "0.14", features = ["full"] } +tower-http = { version = "0.6.6", features = ["fs"] } +http = "1.3.1" [dependencies.migration] -path = "./migration" \ No newline at end of file +path = "./migration" diff --git a/src/assets/index-Bu-dXgft.css b/src/assets/index-Bu-dXgft.css new file mode 100644 index 0000000..e26ea75 --- /dev/null +++ b/src/assets/index-Bu-dXgft.css @@ -0,0 +1 @@ +/*! tailwindcss v4.1.3 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x: rotateX(0);--tw-rotate-y: rotateY(0);--tw-rotate-z: rotateZ(0);--tw-skew-x: skewX(0);--tw-skew-y: skewY(0);--tw-space-y-reverse: 0;--tw-border-style: solid;--tw-gradient-position: initial;--tw-gradient-from: #0000;--tw-gradient-via: #0000;--tw-gradient-to: #0000;--tw-gradient-stops: initial;--tw-gradient-via-stops: initial;--tw-gradient-from-position: 0%;--tw-gradient-via-position: 50%;--tw-gradient-to-position: 100%;--tw-leading: initial;--tw-font-weight: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-outline-style: solid;--tw-blur: initial;--tw-brightness: initial;--tw-contrast: initial;--tw-grayscale: initial;--tw-hue-rotate: initial;--tw-invert: initial;--tw-opacity: initial;--tw-saturate: initial;--tw-sepia: initial;--tw-drop-shadow: initial;--tw-drop-shadow-color: initial;--tw-drop-shadow-alpha: 100%;--tw-drop-shadow-size: initial;--tw-duration: initial}}}@layer theme{:root,:host{--font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-green-500: oklch(.723 .219 149.579);--color-blue-500: oklch(.623 .214 259.815);--color-blue-600: oklch(.546 .245 262.881);--color-purple-500: oklch(.627 .265 303.9);--color-purple-600: oklch(.558 .288 302.321);--color-white: #fff;--spacing: .25rem;--container-2xl: 42rem;--container-6xl: 72rem;--text-xs: .75rem;--text-xs--line-height: calc(1 / .75);--text-sm: .875rem;--text-sm--line-height: calc(1.25 / .875);--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-xl--line-height: calc(1.75 / 1.25);--text-2xl: 1.5rem;--text-3xl: 1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl: 2.25rem;--text-4xl--line-height: calc(2.5 / 2.25);--text-5xl: 3rem;--text-5xl--line-height: 1;--text-6xl: 3.75rem;--text-6xl--line-height: 1;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--leading-relaxed: 1.625;--radius-2xl: 1rem;--radius-3xl: 1.5rem;--animate-ping: ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-3xl: 64px;--default-transition-duration: .15s;--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--default-font-family: var(--font-sans);--default-font-feature-settings: var(--font-sans--font-feature-settings);--default-font-variation-settings: var(--font-sans--font-variation-settings);--default-mono-font-family: var(--font-mono);--default-mono-font-feature-settings: var(--font-mono--font-feature-settings);--default-mono-font-variation-settings: var(--font-mono--font-variation-settings)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}body{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;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings, normal);font-variation-settings:var(--default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1;color:currentColor}@supports (color: color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentColor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color: color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h1{font-size:var(--text-2xl);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h2{font-size:var(--text-xl);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h3{font-size:var(--text-lg);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h4{font-size:var(--text-base);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) p{font-size:var(--text-base);font-weight:var(--font-weight-normal);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) label,:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) button{font-size:var(--text-base);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) input{font-size:var(--text-base);font-weight:var(--font-weight-normal);line-height:1.5}}@layer utilities{.\@container\/card-header{container:card-header / inline-size}.absolute{position:absolute}.relative{position:relative}.-inset-1{inset:calc(var(--spacing) * -1)}.inset-0{inset:calc(var(--spacing) * 0)}.top-0{top:calc(var(--spacing) * 0)}.right-1\/4{right:25%}.-bottom-8{bottom:calc(var(--spacing) * -8)}.left-1\/2{left:50%}.left-1\/4{left:25%}.-z-10{z-index:-10}.z-10{z-index:10}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2 / span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (width >= 40rem){.container{max-width:40rem}}@media (width >= 48rem){.container{max-width:48rem}}@media (width >= 64rem){.container{max-width:64rem}}@media (width >= 80rem){.container{max-width:80rem}}@media (width >= 96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-16{margin-top:calc(var(--spacing) * 16)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-16{margin-bottom:calc(var(--spacing) * 16)}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-16{height:calc(var(--spacing) * 16)}.h-96{height:calc(var(--spacing) * 96)}.h-full{height:100%}.min-h-\[400px\]{min-height:400px}.min-h-screen{min-height:100vh}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-7{width:calc(var(--spacing) * 7)}.w-16{width:calc(var(--spacing) * 16)}.w-96{width:calc(var(--spacing) * 96)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-6xl{max-width:var(--container-6xl)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x) var(--tw-rotate-y) var(--tw-rotate-z) var(--tw-skew-x) var(--tw-skew-y)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.auto-rows-min{grid-auto-rows:min-content}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 12) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-y-reverse)))}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-primary\/20{border-color:var(--primary)}@supports (color: color-mix(in lab,red,red)){.border-primary\/20{border-color:color-mix(in oklab,var(--primary) 20%,transparent)}}.border-transparent{border-color:#0000}.bg-background{background-color:var(--background)}.bg-blue-500\/5{background-color:color-mix(in srgb,oklch(.623 .214 259.815) 5%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-blue-500\/5{background-color:color-mix(in oklab,var(--color-blue-500) 5%,transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive{background-color:var(--destructive)}.bg-muted,.bg-muted\/30{background-color:var(--muted)}@supports (color: color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--muted) 30%,transparent)}}.bg-primary,.bg-primary\/5{background-color:var(--primary)}@supports (color: color-mix(in lab,red,red)){.bg-primary\/5{background-color:color-mix(in oklab,var(--primary) 5%,transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color: color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary) 20%,transparent)}}.bg-purple-500\/5{background-color:color-mix(in srgb,oklch(.627 .265 303.9) 5%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-purple-500\/5{background-color:color-mix(in oklab,var(--color-purple-500) 5%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-gradient-to-br{--tw-gradient-position: to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position: to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-background{--tw-gradient-from: var(--background);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-card{--tw-gradient-from: var(--card);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary,.from-primary\/10{--tw-gradient-from: var(--primary);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}@supports (color: color-mix(in lab,red,red)){.from-primary\/10{--tw-gradient-from: color-mix(in oklab, var(--primary) 10%, transparent)}}.via-background{--tw-gradient-via: var(--background);--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-via-stops)}.via-blue-500{--tw-gradient-via: var(--color-blue-500);--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-via-stops)}.via-blue-600{--tw-gradient-via: var(--color-blue-600);--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-via-stops)}.via-card{--tw-gradient-via: var(--card);--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-via-stops)}.to-blue-500\/10{--tw-gradient-to: color-mix(in srgb, oklch(.623 .214 259.815) 10%, transparent);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}@supports (color: color-mix(in lab,red,red)){.to-blue-500\/10{--tw-gradient-to: color-mix(in oklab, var(--color-blue-500) 10%, transparent)}}.to-muted\/20{--tw-gradient-to: var(--muted);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}@supports (color: color-mix(in lab,red,red)){.to-muted\/20{--tw-gradient-to: color-mix(in oklab, var(--muted) 20%, transparent)}}.to-muted\/30{--tw-gradient-to: var(--muted);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}@supports (color: color-mix(in lab,red,red)){.to-muted\/30{--tw-gradient-to: color-mix(in oklab, var(--muted) 30%, transparent)}}.to-purple-500{--tw-gradient-to: var(--color-purple-500);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-600{--tw-gradient-to: var(--color-purple-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-clip-text{background-clip:text}.p-3{padding:calc(var(--spacing) * 3)}.p-6{padding:calc(var(--spacing) * 6)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading, var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading, var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading, var(--text-5xl--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading, var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.leading-none{--tw-leading: 1;line-height:1}.leading-relaxed{--tw-leading: var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight: var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.text-blue-500{color:var(--color-blue-500)}.text-card-foreground{color:var(--card-foreground)}.text-foreground,.text-foreground\/70{color:var(--foreground)}@supports (color: color-mix(in lab,red,red)){.text-foreground\/70{color:color-mix(in oklab,var(--foreground) 70%,transparent)}}.text-foreground\/80{color:var(--foreground)}@supports (color: color-mix(in lab,red,red)){.text-foreground\/80{color:color-mix(in oklab,var(--foreground) 80%,transparent)}}.text-green-500{color:var(--color-green-500)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-500{color:var(--color-purple-500)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.underline-offset-4{text-underline-offset:4px}.opacity-5{opacity:.05}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.shadow-xl{--tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, #0000001a), 0 8px 10px -6px var(--tw-shadow-color, #0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur: blur(8px);filter:var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, )}.blur-3xl{--tw-blur: blur(var(--blur-3xl));filter:var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, )}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.duration-500{--tw-duration: .5s;transition-duration:.5s}.outline-none{--tw-outline-style: none;outline-style:none}@media (hover: hover){.group-hover\:opacity-40:is(:where(.group):hover *){opacity:.4}}@media (hover: hover){.hover\:bg-accent:hover{background-color:var(--accent)}}@media (hover: hover){.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}}@media (hover: hover){.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}}@media (hover: hover){.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}}@media (hover: hover){.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}@media (hover: hover){.hover\:text-foreground:hover{color:var(--foreground)}}@media (hover: hover){.hover\:underline:hover{text-decoration-line:underline}}@media (hover: hover){.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, #0000001a), 0 4px 6px -4px var(--tw-shadow-color, #0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color: var(--ring)}@supports (color: color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing) * 4)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}@media (width >= 48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width >= 48rem){.md\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading, var(--text-6xl--line-height))}}@media (width >= 64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 60%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color: color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}@media (hover: hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color: color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}}@media (hover: hover){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color: color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing) * 6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing) * 6)}.\[\&\:last-child\]\:pb-6:last-child{padding-bottom:calc(var(--spacing) * 6)}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}@media (hover: hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}}@media (hover: hover){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}}@media (hover: hover){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color: color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}}@media (hover: hover){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color: color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary) 90%,transparent)}}}@media (hover: hover){a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}}:root{--font-size: 16px;--background: #fff;--foreground: oklch(.145 0 0);--card: #fff;--card-foreground: oklch(.145 0 0);--popover: oklch(1 0 0);--popover-foreground: oklch(.145 0 0);--primary: #030213;--primary-foreground: oklch(1 0 0);--secondary: oklch(.95 .0058 264.53);--secondary-foreground: #030213;--muted: #ececf0;--muted-foreground: #717182;--accent: #e9ebef;--accent-foreground: #030213;--destructive: #d4183d;--destructive-foreground: #fff;--border: #0000001a;--input: transparent;--input-background: #f3f3f5;--switch-background: #cbced4;--font-weight-medium: 500;--font-weight-normal: 400;--ring: oklch(.708 0 0);--chart-1: oklch(.646 .222 41.116);--chart-2: oklch(.6 .118 184.704);--chart-3: oklch(.398 .07 227.392);--chart-4: oklch(.828 .189 84.429);--chart-5: oklch(.769 .188 70.08);--radius: .625rem;--sidebar: oklch(.985 0 0);--sidebar-foreground: oklch(.145 0 0);--sidebar-primary: #030213;--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.97 0 0);--sidebar-accent-foreground: oklch(.205 0 0);--sidebar-border: oklch(.922 0 0);--sidebar-ring: oklch(.708 0 0)}.dark{--background: oklch(.145 0 0);--foreground: oklch(.985 0 0);--card: oklch(.145 0 0);--card-foreground: oklch(.985 0 0);--popover: oklch(.145 0 0);--popover-foreground: oklch(.985 0 0);--primary: oklch(.985 0 0);--primary-foreground: oklch(.205 0 0);--secondary: oklch(.269 0 0);--secondary-foreground: oklch(.985 0 0);--muted: oklch(.269 0 0);--muted-foreground: oklch(.708 0 0);--accent: oklch(.269 0 0);--accent-foreground: oklch(.985 0 0);--destructive: oklch(.396 .141 25.723);--destructive-foreground: oklch(.637 .237 25.331);--border: oklch(.269 0 0);--input: oklch(.269 0 0);--ring: oklch(.439 0 0);--font-weight-medium: 500;--font-weight-normal: 400;--chart-1: oklch(.488 .243 264.376);--chart-2: oklch(.696 .17 162.48);--chart-3: oklch(.769 .188 70.08);--chart-4: oklch(.627 .265 303.9);--chart-5: oklch(.645 .246 16.439);--sidebar: oklch(.205 0 0);--sidebar-foreground: oklch(.985 0 0);--sidebar-primary: oklch(.488 .243 264.376);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.269 0 0);--sidebar-accent-foreground: oklch(.985 0 0);--sidebar-border: oklch(.269 0 0);--sidebar-ring: oklch(.439 0 0)}html{font-size:var(--font-size)}@property --tw-rotate-x{syntax: "*"; inherits: false; initial-value: rotateX(0);}@property --tw-rotate-y{syntax: "*"; inherits: false; initial-value: rotateY(0);}@property --tw-rotate-z{syntax: "*"; inherits: false; initial-value: rotateZ(0);}@property --tw-skew-x{syntax: "*"; inherits: false; initial-value: skewX(0);}@property --tw-skew-y{syntax: "*"; inherits: false; initial-value: skewY(0);}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-gradient-position{syntax: "*"; inherits: false}@property --tw-gradient-from{syntax: ""; inherits: false; initial-value: #0000;}@property --tw-gradient-via{syntax: ""; inherits: false; initial-value: #0000;}@property --tw-gradient-to{syntax: ""; inherits: false; initial-value: #0000;}@property --tw-gradient-stops{syntax: "*"; inherits: false}@property --tw-gradient-via-stops{syntax: "*"; inherits: false}@property --tw-gradient-from-position{syntax: ""; inherits: false; initial-value: 0%;}@property --tw-gradient-via-position{syntax: ""; inherits: false; initial-value: 50%;}@property --tw-gradient-to-position{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-leading{syntax: "*"; inherits: false}@property --tw-font-weight{syntax: "*"; inherits: false}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false}@property --tw-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false}@property --tw-inset-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false}@property --tw-ring-offset-width{syntax: ""; inherits: false; initial-value: 0;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-outline-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-blur{syntax: "*"; inherits: false}@property --tw-brightness{syntax: "*"; inherits: false}@property --tw-contrast{syntax: "*"; inherits: false}@property --tw-grayscale{syntax: "*"; inherits: false}@property --tw-hue-rotate{syntax: "*"; inherits: false}@property --tw-invert{syntax: "*"; inherits: false}@property --tw-opacity{syntax: "*"; inherits: false}@property --tw-saturate{syntax: "*"; inherits: false}@property --tw-sepia{syntax: "*"; inherits: false}@property --tw-drop-shadow{syntax: "*"; inherits: false}@property --tw-drop-shadow-color{syntax: "*"; inherits: false}@property --tw-drop-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-drop-shadow-size{syntax: "*"; inherits: false}@property --tw-duration{syntax: "*"; inherits: false}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}} diff --git a/src/assets/index-DM3BAv3J.js b/src/assets/index-DM3BAv3J.js new file mode 100644 index 0000000..27c9f75 --- /dev/null +++ b/src/assets/index-DM3BAv3J.js @@ -0,0 +1,168 @@ +(function(){const c=document.createElement("link").relList;if(c&&c.supports&&c.supports("modulepreload"))return;for(const w of document.querySelectorAll('link[rel="modulepreload"]'))p(w);new MutationObserver(w=>{for(const x of w)if(x.type==="childList")for(const _ of x.addedNodes)_.tagName==="LINK"&&_.rel==="modulepreload"&&p(_)}).observe(document,{childList:!0,subtree:!0});function s(w){const x={};return w.integrity&&(x.integrity=w.integrity),w.referrerPolicy&&(x.referrerPolicy=w.referrerPolicy),w.crossOrigin==="use-credentials"?x.credentials="include":w.crossOrigin==="anonymous"?x.credentials="omit":x.credentials="same-origin",x}function p(w){if(w.ep)return;w.ep=!0;const x=s(w);fetch(w.href,x)}})();function Ec(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}var us={exports:{}},co={},cs={exports:{}},ue={};/** + * @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 tc;function Af(){if(tc)return ue;tc=1;var a=Symbol.for("react.element"),c=Symbol.for("react.portal"),s=Symbol.for("react.fragment"),p=Symbol.for("react.strict_mode"),w=Symbol.for("react.profiler"),x=Symbol.for("react.provider"),_=Symbol.for("react.context"),M=Symbol.for("react.forward_ref"),z=Symbol.for("react.suspense"),P=Symbol.for("react.memo"),U=Symbol.for("react.lazy"),m=Symbol.iterator;function G(h){return h===null||typeof h!="object"?null:(h=m&&h[m]||h["@@iterator"],typeof h=="function"?h:null)}var se={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},J=Object.assign,le={};function re(h,E,R){this.props=h,this.context=E,this.refs=le,this.updater=R||se}re.prototype.isReactComponent={},re.prototype.setState=function(h,E){if(typeof h!="object"&&typeof h!="function"&&h!=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,h,E,"setState")},re.prototype.forceUpdate=function(h){this.updater.enqueueForceUpdate(this,h,"forceUpdate")};function ee(){}ee.prototype=re.prototype;function Ie(h,E,R){this.props=h,this.context=E,this.refs=le,this.updater=R||se}var Se=Ie.prototype=new ee;Se.constructor=Ie,J(Se,re.prototype),Se.isPureReactComponent=!0;var he=Array.isArray,Te=Object.prototype.hasOwnProperty,de={current:null},ve={key:!0,ref:!0,__self:!0,__source:!0};function V(h,E,R){var I,W={},ne=null,K=null;if(E!=null)for(I in E.ref!==void 0&&(K=E.ref),E.key!==void 0&&(ne=""+E.key),E)Te.call(E,I)&&!ve.hasOwnProperty(I)&&(W[I]=E[I]);var Y=arguments.length-2;if(Y===1)W.children=R;else if(1>>1,E=k[h];if(0>>1;hw(W,L))new(K,W)?(k[h]=K,k[ne]=L,h=ne):(k[h]=W,k[I]=L,h=I);else if(new(K,L))k[h]=K,k[ne]=L,h=ne;else break e}}return H}function w(k,H){var L=k.sortIndex-H.sortIndex;return L!==0?L:k.id-H.id}if(typeof performance=="object"&&typeof performance.now=="function"){var x=performance;a.unstable_now=function(){return x.now()}}else{var _=Date,M=_.now();a.unstable_now=function(){return _.now()-M}}var z=[],P=[],U=1,m=null,G=3,se=!1,J=!1,le=!1,re=typeof setTimeout=="function"?setTimeout:null,ee=typeof clearTimeout=="function"?clearTimeout:null,Ie=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function Se(k){for(var H=s(P);H!==null;){if(H.callback===null)p(P);else if(H.startTime<=k)p(P),H.sortIndex=H.expirationTime,c(z,H);else break;H=s(P)}}function he(k){if(le=!1,Se(k),!J)if(s(z)!==null)J=!0,q(Te);else{var H=s(P);H!==null&&te(he,H.startTime-k)}}function Te(k,H){J=!1,le&&(le=!1,ee(V),V=-1),se=!0;var L=G;try{for(Se(H),m=s(z);m!==null&&(!(m.expirationTime>H)||k&&!lt());){var h=m.callback;if(typeof h=="function"){m.callback=null,G=m.priorityLevel;var E=h(m.expirationTime<=H);H=a.unstable_now(),typeof E=="function"?m.callback=E:m===s(z)&&p(z),Se(H)}else p(z);m=s(z)}if(m!==null)var R=!0;else{var I=s(P);I!==null&&te(he,I.startTime-H),R=!1}return R}finally{m=null,G=L,se=!1}}var de=!1,ve=null,V=-1,Pe=5,Ye=-1;function lt(){return!(a.unstable_now()-Yek||125h?(k.sortIndex=L,c(P,k),s(z)===null&&k===s(P)&&(le?(ee(V),V=-1):le=!0,te(he,L-h))):(k.sortIndex=E,c(z,k),J||se||(J=!0,q(Te))),k},a.unstable_shouldYield=lt,a.unstable_wrapCallback=function(k){var H=G;return function(){var L=G;G=H;try{return k.apply(this,arguments)}finally{G=L}}}})(ps)),ps}var ic;function Vf(){return ic||(ic=1,fs.exports=Uf()),fs.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 sc;function $f(){if(sc)return ft;sc=1;var a=Ss(),c=Vf();function s(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),z=Object.prototype.hasOwnProperty,P=/^[: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]*$/,U={},m={};function G(e){return z.call(m,e)?!0:z.call(U,e)?!1:P.test(e)?m[e]=!0:(U[e]=!0,!1)}function se(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function J(e,t,n,r){if(t===null||typeof t>"u"||se(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.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,n,r,o,l,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=l,this.removeEmptyString=i}var re={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){re[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];re[t]=new le(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){re[e]=new le(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){re[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){re[e]=new le(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){re[e]=new le(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){re[e]=new le(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){re[e]=new le(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){re[e]=new le(e,5,!1,e.toLowerCase(),null,!1,!1)});var ee=/[\-:]([a-z])/g;function Ie(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(ee,Ie);re[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(ee,Ie);re[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(ee,Ie);re[t]=new le(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){re[e]=new le(e,1,!1,e.toLowerCase(),null,!1,!1)}),re.xlinkHref=new le("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){re[e]=new le(e,1,!1,e.toLowerCase(),null,!0,!0)});function Se(e,t,n,r){var o=re.hasOwnProperty(t)?re[t]:null;(o!==null?o.type!==0:r||!(2u||o[i]!==l[u]){var d=` +`+o[i].replace(" at new "," at ");return e.displayName&&d.includes("")&&(d=d.replace("",e.displayName)),d}while(1<=i&&0<=u);break}}}finally{R=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?E(e):""}function W(e){switch(e.tag){case 5:return E(e.type);case 16:return E("Lazy");case 13:return E("Suspense");case 19:return E("SuspenseList");case 0:case 2:case 15:return e=I(e.type,!1),e;case 11:return e=I(e.type.render,!1),e;case 1:return e=I(e.type,!0),e;default:return""}}function ne(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 ve:return"Fragment";case de:return"Portal";case Pe:return"Profiler";case V:return"StrictMode";case ge:return"Suspense";case De:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case lt:return(e.displayName||"Context")+".Consumer";case Ye:return(e._context.displayName||"Context")+".Provider";case je:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Ce:return t=e.displayName||null,t!==null?t:ne(e.type)||"Memo";case q:t=e._payload,e=e._init;try{return ne(e(t))}catch{}}return null}function K(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 ne(t);case 8:return t===V?"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 Y(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function ce(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Ne(e){var t=ce(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,l=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(i){r=""+i,l.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function mt(e){e._valueTracker||(e._valueTracker=Ne(e))}function it(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=ce(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Kn(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 Rn(e,t){var n=t.checked;return L({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function po(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Y(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Cr(e,t){t=t.checked,t!=null&&Se(e,"checked",t,!1)}function $t(e,t){Cr(e,t);var n=Y(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?ht(e,t.type,n):t.hasOwnProperty("defaultValue")&&ht(e,t.type,Y(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Nr(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function ht(e,t,n){(t!=="number"||Kn(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var jn=Array.isArray;function nn(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=Ln.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function kt(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var rn={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},on=["Webkit","ms","Moz","O"];Object.keys(rn).forEach(function(e){on.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),rn[t]=rn[e]})});function go(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||rn.hasOwnProperty(e)&&rn[e]?(""+t).trim():t+"px"}function vo(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=go(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var yo=L({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 Zn(e,t){if(t){if(yo[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(s(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(s(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(s(61))}if(t.style!=null&&typeof t.style!="object")throw Error(s(62))}}function zr(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 Mn=null;function St(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Tr=null,ln=null,Wt=null;function Pr(e){if(e=Kr(e)){if(typeof Tr!="function")throw Error(s(280));var t=e.stateNode;t&&(t=Fo(t),Tr(e.stateNode,e.type,t))}}function ie(e){ln?Wt?Wt.push(e):Wt=[e]:ln=e}function be(){if(ln){var e=ln,t=Wt;if(Wt=ln=null,Pr(e),t)for(e=0;e>>=0,e===0?32:31-(Jc(e)/ed|0)|0}var ko=64,So=4194304;function jr(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 Eo(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,o=e.suspendedLanes,l=e.pingedLanes,i=n&268435455;if(i!==0){var u=i&~o;u!==0?r=jr(u):(l&=i,l!==0&&(r=jr(l)))}else i=n&~o,i!==0?r=jr(i):l!==0&&(r=jr(l));if(r===0)return 0;if(t!==0&&t!==r&&(t&o)===0&&(o=r&-r,l=t&-t,o>=l||o===16&&(l&4194240)!==0))return t;if((r&4)!==0&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function br(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Rt(t),e[t]=n}function od(e,t){var n=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 r=e.eventTimes;for(e=e.expirationTimes;0=Br),Gs=" ",Ks=!1;function Xs(e,t){switch(e){case"keyup":return bd.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Zs(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var er=!1;function Md(e,t){switch(e){case"compositionend":return Zs(t);case"keypress":return t.which!==32?null:(Ks=!0,Gs);case"textInput":return e=t.data,e===Gs&&Ks?null:e;default:return null}}function Id(e,t){if(er)return e==="compositionend"||!$l&&Xs(e,t)?(e=Vs(),To=Ol=mn=null,er=!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:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=oa(n)}}function ia(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?ia(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function sa(){for(var e=window,t=Kn();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Kn(e.document)}return t}function Ql(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 Hd(e){var t=sa(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&ia(n.ownerDocument.documentElement,n)){if(r!==null&&Ql(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=n.textContent.length,l=Math.min(r.start,o);r=r.end===void 0?l:Math.min(r.end,o),!e.extend&&l>r&&(o=r,r=l,l=o),o=la(n,l);var i=la(n,r);o&&i&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),l>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,tr=null,Yl=null,Hr=null,Gl=!1;function aa(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Gl||tr==null||tr!==Kn(r)||(r=tr,"selectionStart"in r&&Ql(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Hr&&$r(Hr,r)||(Hr=r,r=Do(Yl,"onSelect"),0ir||(e.current=ii[ir],ii[ir]=null,ir--)}function ye(e,t){ir++,ii[ir]=e.current,e.current=t}var yn={},Je=vn(yn),st=vn(!1),On=yn;function sr(e,t){var n=e.type.contextTypes;if(!n)return yn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},l;for(l in n)o[l]=t[l];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function at(e){return e=e.childContextTypes,e!=null}function Bo(){ke(st),ke(Je)}function Ea(e,t,n){if(Je.current!==yn)throw Error(s(168));ye(Je,t),ye(st,n)}function Ca(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(s(108,K(e)||"Unknown",o));return L({},n,r)}function Uo(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||yn,On=Je.current,ye(Je,e),ye(st,st.current),!0}function Na(e,t,n){var r=e.stateNode;if(!r)throw Error(s(169));n?(e=Ca(e,t,On),r.__reactInternalMemoizedMergedChildContext=e,ke(st),ke(Je),ye(Je,e)):ke(st),ye(st,n)}var Yt=null,Vo=!1,si=!1;function _a(e){Yt===null?Yt=[e]:Yt.push(e)}function nf(e){Vo=!0,_a(e)}function wn(){if(!si&&Yt!==null){si=!0;var e=0,t=me;try{var n=Yt;for(me=1;e>=i,o-=i,Gt=1<<32-Rt(t)+o|n<oe?(Qe=Z,Z=null):Qe=Z.sibling;var pe=C(g,Z,v[oe],j);if(pe===null){Z===null&&(Z=Qe);break}e&&Z&&pe.alternate===null&&t(g,Z),f=l(pe,f,oe),X===null?Q=pe:X.sibling=pe,X=pe,Z=Qe}if(oe===v.length)return n(g,Z),Ee&&Fn(g,oe),Q;if(Z===null){for(;oeoe?(Qe=Z,Z=null):Qe=Z.sibling;var Tn=C(g,Z,pe.value,j);if(Tn===null){Z===null&&(Z=Qe);break}e&&Z&&Tn.alternate===null&&t(g,Z),f=l(Tn,f,oe),X===null?Q=Tn:X.sibling=Tn,X=Tn,Z=Qe}if(pe.done)return n(g,Z),Ee&&Fn(g,oe),Q;if(Z===null){for(;!pe.done;oe++,pe=v.next())pe=T(g,pe.value,j),pe!==null&&(f=l(pe,f,oe),X===null?Q=pe:X.sibling=pe,X=pe);return Ee&&Fn(g,oe),Q}for(Z=r(g,Z);!pe.done;oe++,pe=v.next())pe=D(Z,g,oe,pe.value,j),pe!==null&&(e&&pe.alternate!==null&&Z.delete(pe.key===null?oe:pe.key),f=l(pe,f,oe),X===null?Q=pe:X.sibling=pe,X=pe);return e&&Z.forEach(function(Of){return t(g,Of)}),Ee&&Fn(g,oe),Q}function Me(g,f,v,j){if(typeof v=="object"&&v!==null&&v.type===ve&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case Te:e:{for(var Q=v.key,X=f;X!==null;){if(X.key===Q){if(Q=v.type,Q===ve){if(X.tag===7){n(g,X.sibling),f=o(X,v.props.children),f.return=g,g=f;break e}}else if(X.elementType===Q||typeof Q=="object"&&Q!==null&&Q.$$typeof===q&&ba(Q)===X.type){n(g,X.sibling),f=o(X,v.props),f.ref=Xr(g,X,v),f.return=g,g=f;break e}n(g,X);break}else t(g,X);X=X.sibling}v.type===ve?(f=Yn(v.props.children,g.mode,j,v.key),f.return=g,g=f):(j=gl(v.type,v.key,v.props,null,g.mode,j),j.ref=Xr(g,f,v),j.return=g,g=j)}return i(g);case de:e:{for(X=v.key;f!==null;){if(f.key===X)if(f.tag===4&&f.stateNode.containerInfo===v.containerInfo&&f.stateNode.implementation===v.implementation){n(g,f.sibling),f=o(f,v.children||[]),f.return=g,g=f;break e}else{n(g,f);break}else t(g,f);f=f.sibling}f=os(v,g.mode,j),f.return=g,g=f}return i(g);case q:return X=v._init,Me(g,f,X(v._payload),j)}if(jn(v))return A(g,f,v,j);if(H(v))return $(g,f,v,j);Qo(g,v)}return typeof v=="string"&&v!==""||typeof v=="number"?(v=""+v,f!==null&&f.tag===6?(n(g,f.sibling),f=o(f,v),f.return=g,g=f):(n(g,f),f=rs(v,g.mode,j),f.return=g,g=f),i(g)):n(g,f)}return Me}var dr=La(!0),Ma=La(!1),Yo=vn(null),Go=null,fr=null,pi=null;function mi(){pi=fr=Go=null}function hi(e){var t=Yo.current;ke(Yo),e._currentValue=t}function gi(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function pr(e,t){Go=e,pi=fr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(ut=!0),e.firstContext=null)}function _t(e){var t=e._currentValue;if(pi!==e)if(e={context:e,memoizedValue:t,next:null},fr===null){if(Go===null)throw Error(s(308));fr=e,Go.dependencies={lanes:0,firstContext:e}}else fr=fr.next=e;return t}var Bn=null;function vi(e){Bn===null?Bn=[e]:Bn.push(e)}function Ia(e,t,n,r){var o=t.interleaved;return o===null?(n.next=n,vi(t)):(n.next=o.next,o.next=n),t.interleaved=n,Xt(e,r)}function Xt(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var xn=!1;function yi(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Da(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 Zt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function kn(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,(fe&2)!==0){var o=r.pending;return o===null?t.next=t:(t.next=o.next,o.next=t),r.pending=t,Xt(e,n)}return o=r.interleaved,o===null?(t.next=t,vi(r)):(t.next=o.next,o.next=t),r.interleaved=t,Xt(e,n)}function Ko(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,bl(e,n)}}function Oa(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var o=null,l=null;if(n=n.firstBaseUpdate,n!==null){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};l===null?o=l=i:l=l.next=i,n=n.next}while(n!==null);l===null?o=l=t:l=l.next=t}else o=l=t;n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:l,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Xo(e,t,n,r){var o=e.updateQueue;xn=!1;var l=o.firstBaseUpdate,i=o.lastBaseUpdate,u=o.shared.pending;if(u!==null){o.shared.pending=null;var d=u,y=d.next;d.next=null,i===null?l=y:i.next=y,i=d;var N=e.alternate;N!==null&&(N=N.updateQueue,u=N.lastBaseUpdate,u!==i&&(u===null?N.firstBaseUpdate=y:u.next=y,N.lastBaseUpdate=d))}if(l!==null){var T=o.baseState;i=0,N=y=d=null,u=l;do{var C=u.lane,D=u.eventTime;if((r&C)===C){N!==null&&(N=N.next={eventTime:D,lane:0,tag:u.tag,payload:u.payload,callback:u.callback,next:null});e:{var A=e,$=u;switch(C=t,D=n,$.tag){case 1:if(A=$.payload,typeof A=="function"){T=A.call(D,T,C);break e}T=A;break e;case 3:A.flags=A.flags&-65537|128;case 0:if(A=$.payload,C=typeof A=="function"?A.call(D,T,C):A,C==null)break e;T=L({},T,C);break e;case 2:xn=!0}}u.callback!==null&&u.lane!==0&&(e.flags|=64,C=o.effects,C===null?o.effects=[u]:C.push(u))}else D={eventTime:D,lane:C,tag:u.tag,payload:u.payload,callback:u.callback,next:null},N===null?(y=N=D,d=T):N=N.next=D,i|=C;if(u=u.next,u===null){if(u=o.shared.pending,u===null)break;C=u,u=C.next,C.next=null,o.lastBaseUpdate=C,o.shared.pending=null}}while(!0);if(N===null&&(d=T),o.baseState=d,o.firstBaseUpdate=y,o.lastBaseUpdate=N,t=o.shared.interleaved,t!==null){o=t;do i|=o.lane,o=o.next;while(o!==t)}else l===null&&(o.shared.lanes=0);$n|=i,e.lanes=i,e.memoizedState=T}}function Aa(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=Ei.transition;Ei.transition={};try{e(!1),t()}finally{me=n,Ei.transition=r}}function ru(){return zt().memoizedState}function sf(e,t,n){var r=Nn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},ou(e))lu(t,n);else if(n=Ia(e,t,n,r),n!==null){var o=ot();Dt(n,e,r,o),iu(n,t,r)}}function af(e,t,n){var r=Nn(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(ou(e))lu(t,o);else{var l=e.alternate;if(e.lanes===0&&(l===null||l.lanes===0)&&(l=t.lastRenderedReducer,l!==null))try{var i=t.lastRenderedState,u=l(i,n);if(o.hasEagerState=!0,o.eagerState=u,jt(u,i)){var d=t.interleaved;d===null?(o.next=o,vi(t)):(o.next=d.next,d.next=o),t.interleaved=o;return}}catch{}finally{}n=Ia(e,t,o,r),n!==null&&(o=ot(),Dt(n,e,r,o),iu(n,t,r))}}function ou(e){var t=e.alternate;return e===ze||t!==null&&t===ze}function lu(e,t){eo=Jo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function iu(e,t,n){if((n&4194240)!==0){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,bl(e,n)}}var nl={readContext:_t,useCallback:et,useContext:et,useEffect:et,useImperativeHandle:et,useInsertionEffect:et,useLayoutEffect:et,useMemo:et,useReducer:et,useRef:et,useState:et,useDebugValue:et,useDeferredValue:et,useTransition:et,useMutableSource:et,useSyncExternalStore:et,useId:et,unstable_isNewReconciler:!1},uf={readContext:_t,useCallback:function(e,t){return Bt().memoizedState=[e,t===void 0?null:t],e},useContext:_t,useEffect:Ka,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,el(4194308,4,qa.bind(null,t,e),n)},useLayoutEffect:function(e,t){return el(4194308,4,e,t)},useInsertionEffect:function(e,t){return el(4,2,e,t)},useMemo:function(e,t){var n=Bt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Bt();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=sf.bind(null,ze,e),[r.memoizedState,e]},useRef:function(e){var t=Bt();return e={current:e},t.memoizedState=e},useState:Ya,useDebugValue:Ri,useDeferredValue:function(e){return Bt().memoizedState=e},useTransition:function(){var e=Ya(!1),t=e[0];return e=lf.bind(null,e[1]),Bt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=ze,o=Bt();if(Ee){if(n===void 0)throw Error(s(407));n=n()}else{if(n=t(),We===null)throw Error(s(349));(Vn&30)!==0||Va(r,t,n)}o.memoizedState=n;var l={value:n,getSnapshot:t};return o.queue=l,Ka(Ha.bind(null,r,l,e),[e]),r.flags|=2048,ro(9,$a.bind(null,r,l,n,t),void 0,null),n},useId:function(){var e=Bt(),t=We.identifierPrefix;if(Ee){var n=Kt,r=Gt;n=(r&~(1<<32-Rt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=to++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[At]=t,e[Gr]=r,_u(e,t,!1,!1),t.stateNode=e;e:{switch(i=zr(n,r),n){case"dialog":xe("cancel",e),xe("close",e),o=r;break;case"iframe":case"object":case"embed":xe("load",e),o=r;break;case"video":case"audio":for(o=0;oyr&&(t.flags|=128,r=!0,oo(l,!1),t.lanes=4194304)}else{if(!r)if(e=Zo(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),oo(l,!0),l.tail===null&&l.tailMode==="hidden"&&!i.alternate&&!Ee)return tt(t),null}else 2*Le()-l.renderingStartTime>yr&&n!==1073741824&&(t.flags|=128,r=!0,oo(l,!1),t.lanes=4194304);l.isBackwards?(i.sibling=t.child,t.child=i):(n=l.last,n!==null?n.sibling=i:t.child=i,l.last=i)}return l.tail!==null?(t=l.tail,l.rendering=t,l.tail=t.sibling,l.renderingStartTime=Le(),t.sibling=null,n=_e.current,ye(_e,r?n&1|2:n&1),t):(tt(t),null);case 22:case 23:return es(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&(t.mode&1)!==0?(xt&1073741824)!==0&&(tt(t),t.subtreeFlags&6&&(t.flags|=8192)):tt(t),null;case 24:return null;case 25:return null}throw Error(s(156,t.tag))}function vf(e,t){switch(ui(t),t.tag){case 1:return at(t.type)&&Bo(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return mr(),ke(st),ke(Je),Si(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return xi(t),null;case 13:if(ke(_e),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(s(340));cr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ke(_e),null;case 4:return mr(),null;case 10:return hi(t.type._context),null;case 22:case 23:return es(),null;case 24:return null;default:return null}}var il=!1,nt=!1,yf=typeof WeakSet=="function"?WeakSet:Set,O=null;function gr(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Re(e,t,r)}else n.current=null}function Vi(e,t,n){try{n()}catch(r){Re(e,t,r)}}var Pu=!1;function wf(e,t){if(ei=_o,e=sa(),Ql(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,l=r.focusNode;r=r.focusOffset;try{n.nodeType,l.nodeType}catch{n=null;break e}var i=0,u=-1,d=-1,y=0,N=0,T=e,C=null;t:for(;;){for(var D;T!==n||o!==0&&T.nodeType!==3||(u=i+o),T!==l||r!==0&&T.nodeType!==3||(d=i+r),T.nodeType===3&&(i+=T.nodeValue.length),(D=T.firstChild)!==null;)C=T,T=D;for(;;){if(T===e)break t;if(C===n&&++y===o&&(u=i),C===l&&++N===r&&(d=i),(D=T.nextSibling)!==null)break;T=C,C=T.parentNode}T=D}n=u===-1||d===-1?null:{start:u,end:d}}else n=null}n=n||{start:0,end:0}}else n=null;for(ti={focusedElem:e,selectionRange:n},_o=!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 A=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(A!==null){var $=A.memoizedProps,Me=A.memoizedState,g=t.stateNode,f=g.getSnapshotBeforeUpdate(t.elementType===t.type?$:Lt(t.type,$),Me);g.__reactInternalSnapshotBeforeUpdate=f}break;case 3:var v=t.stateNode.containerInfo;v.nodeType===1?v.textContent="":v.nodeType===9&&v.documentElement&&v.removeChild(v.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(s(163))}}catch(j){Re(t,t.return,j)}if(e=t.sibling,e!==null){e.return=t.return,O=e;break}O=t.return}return A=Pu,Pu=!1,A}function lo(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var l=o.destroy;o.destroy=void 0,l!==void 0&&Vi(t,n,l)}o=o.next}while(o!==r)}}function sl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function $i(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Ru(e){var t=e.alternate;t!==null&&(e.alternate=null,Ru(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[At],delete t[Gr],delete t[li],delete t[ef],delete t[tf])),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 ju(e){return e.tag===5||e.tag===3||e.tag===4}function bu(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||ju(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 Hi(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Ao));else if(r!==4&&(e=e.child,e!==null))for(Hi(e,t,n),e=e.sibling;e!==null;)Hi(e,t,n),e=e.sibling}function Wi(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Wi(e,t,n),e=e.sibling;e!==null;)Wi(e,t,n),e=e.sibling}var Xe=null,Mt=!1;function Sn(e,t,n){for(n=n.child;n!==null;)Lu(e,t,n),n=n.sibling}function Lu(e,t,n){if(Ot&&typeof Ot.onCommitFiberUnmount=="function")try{Ot.onCommitFiberUnmount(xo,n)}catch{}switch(n.tag){case 5:nt||gr(n,t);case 6:var r=Xe,o=Mt;Xe=null,Sn(e,t,n),Xe=r,Mt=o,Xe!==null&&(Mt?(e=Xe,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Xe.removeChild(n.stateNode));break;case 18:Xe!==null&&(Mt?(e=Xe,n=n.stateNode,e.nodeType===8?oi(e.parentNode,n):e.nodeType===1&&oi(e,n),Or(e)):oi(Xe,n.stateNode));break;case 4:r=Xe,o=Mt,Xe=n.stateNode.containerInfo,Mt=!0,Sn(e,t,n),Xe=r,Mt=o;break;case 0:case 11:case 14:case 15:if(!nt&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var l=o,i=l.destroy;l=l.tag,i!==void 0&&((l&2)!==0||(l&4)!==0)&&Vi(n,t,i),o=o.next}while(o!==r)}Sn(e,t,n);break;case 1:if(!nt&&(gr(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(u){Re(n,t,u)}Sn(e,t,n);break;case 21:Sn(e,t,n);break;case 22:n.mode&1?(nt=(r=nt)||n.memoizedState!==null,Sn(e,t,n),nt=r):Sn(e,t,n);break;default:Sn(e,t,n)}}function Mu(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new yf),t.forEach(function(r){var o=Tf.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function It(e,t){var n=t.deletions;if(n!==null)for(var r=0;ro&&(o=i),r&=~l}if(r=o,r=Le()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*kf(r/1960))-r,10e?16:e,Cn===null)var r=!1;else{if(e=Cn,Cn=null,fl=0,(fe&6)!==0)throw Error(s(331));var o=fe;for(fe|=4,O=e.current;O!==null;){var l=O,i=l.child;if((O.flags&16)!==0){var u=l.deletions;if(u!==null){for(var d=0;dLe()-Gi?Wn(e,0):Yi|=n),dt(e,t)}function Yu(e,t){t===0&&((e.mode&1)===0?t=1:(t=So,So<<=1,(So&130023424)===0&&(So=4194304)));var n=ot();e=Xt(e,t),e!==null&&(br(e,t,n),dt(e,n))}function zf(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Yu(e,n)}function Tf(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(s(314))}r!==null&&r.delete(t),Yu(e,n)}var Gu;Gu=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||st.current)ut=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return ut=!1,hf(e,t,n);ut=(e.flags&131072)!==0}else ut=!1,Ee&&(t.flags&1048576)!==0&&za(t,Ho,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;ll(e,t),e=t.pendingProps;var o=sr(t,Je.current);pr(t,n),o=Ni(null,t,r,e,o,n);var l=_i();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,at(r)?(l=!0,Uo(t)):l=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,yi(t),o.updater=rl,t.stateNode=o,o._reactInternals=t,bi(t,r,e,n),t=Di(null,t,r,!0,l,n)):(t.tag=0,Ee&&l&&ai(t),rt(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(ll(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=Rf(r),e=Lt(r,e),o){case 0:t=Ii(null,t,r,e,n);break e;case 1:t=xu(null,t,r,e,n);break e;case 11:t=hu(null,t,r,e,n);break e;case 14:t=gu(null,t,r,Lt(r.type,e),n);break e}throw Error(s(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Lt(r,o),Ii(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Lt(r,o),xu(e,t,r,o,n);case 3:e:{if(ku(t),e===null)throw Error(s(387));r=t.pendingProps,l=t.memoizedState,o=l.element,Da(e,t),Xo(t,r,null,n);var i=t.memoizedState;if(r=i.element,l.isDehydrated)if(l={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=l,t.memoizedState=l,t.flags&256){o=hr(Error(s(423)),t),t=Su(e,t,r,n,o);break e}else if(r!==o){o=hr(Error(s(424)),t),t=Su(e,t,r,n,o);break e}else for(wt=gn(t.stateNode.containerInfo.firstChild),yt=t,Ee=!0,bt=null,n=Ma(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(cr(),r===o){t=qt(e,t,n);break e}rt(e,t,r,n)}t=t.child}return t;case 5:return Fa(t),e===null&&di(t),r=t.type,o=t.pendingProps,l=e!==null?e.memoizedProps:null,i=o.children,ni(r,o)?i=null:l!==null&&ni(r,l)&&(t.flags|=32),wu(e,t),rt(e,t,i,n),t.child;case 6:return e===null&&di(t),null;case 13:return Eu(e,t,n);case 4:return wi(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=dr(t,null,r,n):rt(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Lt(r,o),hu(e,t,r,o,n);case 7:return rt(e,t,t.pendingProps,n),t.child;case 8:return rt(e,t,t.pendingProps.children,n),t.child;case 12:return rt(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,l=t.memoizedProps,i=o.value,ye(Yo,r._currentValue),r._currentValue=i,l!==null)if(jt(l.value,i)){if(l.children===o.children&&!st.current){t=qt(e,t,n);break e}}else for(l=t.child,l!==null&&(l.return=t);l!==null;){var u=l.dependencies;if(u!==null){i=l.child;for(var d=u.firstContext;d!==null;){if(d.context===r){if(l.tag===1){d=Zt(-1,n&-n),d.tag=2;var y=l.updateQueue;if(y!==null){y=y.shared;var N=y.pending;N===null?d.next=d:(d.next=N.next,N.next=d),y.pending=d}}l.lanes|=n,d=l.alternate,d!==null&&(d.lanes|=n),gi(l.return,n,t),u.lanes|=n;break}d=d.next}}else if(l.tag===10)i=l.type===t.type?null:l.child;else if(l.tag===18){if(i=l.return,i===null)throw Error(s(341));i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),gi(i,n,t),i=l.sibling}else i=l.child;if(i!==null)i.return=l;else for(i=l;i!==null;){if(i===t){i=null;break}if(l=i.sibling,l!==null){l.return=i.return,i=l;break}i=i.return}l=i}rt(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,pr(t,n),o=_t(o),r=r(o),t.flags|=1,rt(e,t,r,n),t.child;case 14:return r=t.type,o=Lt(r,t.pendingProps),o=Lt(r.type,o),gu(e,t,r,o,n);case 15:return vu(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Lt(r,o),ll(e,t),t.tag=1,at(r)?(e=!0,Uo(t)):e=!1,pr(t,n),au(t,r,o),bi(t,r,o,n),Di(null,t,r,!0,e,n);case 19:return Nu(e,t,n);case 22:return yu(e,t,n)}throw Error(s(156,t.tag))};function Ku(e,t){return Ts(e,t)}function Pf(e,t,n,r){this.tag=e,this.key=n,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=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Pt(e,t,n,r){return new Pf(e,t,n,r)}function ns(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Rf(e){if(typeof e=="function")return ns(e)?1:0;if(e!=null){if(e=e.$$typeof,e===je)return 11;if(e===Ce)return 14}return 2}function zn(e,t){var n=e.alternate;return n===null?(n=Pt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function gl(e,t,n,r,o,l){var i=2;if(r=e,typeof e=="function")ns(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case ve:return Yn(n.children,o,l,t);case V:i=8,o|=8;break;case Pe:return e=Pt(12,n,t,o|2),e.elementType=Pe,e.lanes=l,e;case ge:return e=Pt(13,n,t,o),e.elementType=ge,e.lanes=l,e;case De:return e=Pt(19,n,t,o),e.elementType=De,e.lanes=l,e;case te:return vl(n,o,l,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Ye:i=10;break e;case lt:i=9;break e;case je:i=11;break e;case Ce:i=14;break e;case q:i=16,r=null;break e}throw Error(s(130,e==null?e:typeof e,""))}return t=Pt(i,n,t,o),t.elementType=e,t.type=r,t.lanes=l,t}function Yn(e,t,n,r){return e=Pt(7,e,r,t),e.lanes=n,e}function vl(e,t,n,r){return e=Pt(22,e,r,t),e.elementType=te,e.lanes=n,e.stateNode={isHidden:!1},e}function rs(e,t,n){return e=Pt(6,e,null,t),e.lanes=n,e}function os(e,t,n){return t=Pt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function jf(e,t,n,r,o){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=jl(0),this.expirationTimes=jl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=jl(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function ls(e,t,n,r,o,l,i,u,d){return e=new jf(e,t,n,u,d),t===1?(t=1,l===!0&&(t|=8)):t=0,l=Pt(3,null,null,t),e.current=l,l.stateNode=e,l.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},yi(l),e}function bf(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(a)}catch(c){console.error(c)}}return a(),ds.exports=$f(),ds.exports}var uc;function Hf(){if(uc)return Cl;uc=1;var a=Cc();return Cl.createRoot=a.createRoot,Cl.hydrateRoot=a.hydrateRoot,Cl}var Wf=Hf(),we=Ss();const b=Ec(we);function cc(a,c){if(typeof a=="function")return a(c);a!=null&&(a.current=c)}function Qf(...a){return c=>{let s=!1;const p=a.map(w=>{const x=cc(w,c);return!s&&typeof x=="function"&&(s=!0),x});if(s)return()=>{for(let w=0;w{const{children:x,..._}=p,M=we.Children.toArray(x),z=M.find(Kf);if(z){const P=z.props.children,U=M.map(m=>m===z?we.Children.count(P)>1?we.Children.only(null):we.isValidElement(P)?P.props.children:null:m);return S.jsx(c,{..._,ref:w,children:we.isValidElement(P)?we.cloneElement(P,void 0,U):null})}return S.jsx(c,{..._,ref:w,children:x})});return s.displayName=`${a}.Slot`,s}var _c=Nc("Slot");function Yf(a){const c=we.forwardRef((s,p)=>{const{children:w,...x}=s;if(we.isValidElement(w)){const _=Zf(w),M=Xf(x,w.props);return w.type!==we.Fragment&&(M.ref=p?Qf(p,_):_),we.cloneElement(w,M)}return we.Children.count(w)>1?we.Children.only(null):null});return c.displayName=`${a}.SlotClone`,c}var Gf=Symbol("radix.slottable");function Kf(a){return we.isValidElement(a)&&typeof a.type=="function"&&"__radixId"in a.type&&a.type.__radixId===Gf}function Xf(a,c){const s={...c};for(const p in c){const w=a[p],x=c[p];/^on[A-Z]/.test(p)?w&&x?s[p]=(...M)=>{const z=x(...M);return w(...M),z}:w&&(s[p]=w):p==="style"?s[p]={...w,...x}:p==="className"&&(s[p]=[w,x].filter(Boolean).join(" "))}return{...a,...s}}function Zf(a){let c=Object.getOwnPropertyDescriptor(a.props,"ref")?.get,s=c&&"isReactWarning"in c&&c.isReactWarning;return s?a.ref:(c=Object.getOwnPropertyDescriptor(a,"ref")?.get,s=c&&"isReactWarning"in c&&c.isReactWarning,s?a.props.ref:a.props.ref||a.ref)}function zc(a){var c,s,p="";if(typeof a=="string"||typeof a=="number")p+=a;else if(typeof a=="object")if(Array.isArray(a)){var w=a.length;for(c=0;ctypeof a=="boolean"?`${a}`:a===0?"0":a,fc=Tc,Pc=(a,c)=>s=>{var p;if(c?.variants==null)return fc(a,s?.class,s?.className);const{variants:w,defaultVariants:x}=c,_=Object.keys(w).map(P=>{const U=s?.[P],m=x?.[P];if(U===null)return null;const G=dc(U)||dc(m);return w[P][G]}),M=s&&Object.entries(s).reduce((P,U)=>{let[m,G]=U;return G===void 0||(P[m]=G),P},{}),z=c==null||(p=c.compoundVariants)===null||p===void 0?void 0:p.reduce((P,U)=>{let{class:m,className:G,...se}=U;return Object.entries(se).every(J=>{let[le,re]=J;return Array.isArray(re)?re.includes({...x,...M}[le]):{...x,...M}[le]===re})?[...P,m,G]:P},[]);return fc(a,_,z,s?.class,s?.className)},Es="-",qf=a=>{const c=ep(a),{conflictingClassGroups:s,conflictingClassGroupModifiers:p}=a;return{getClassGroupId:_=>{const M=_.split(Es);return M[0]===""&&M.length!==1&&M.shift(),Rc(M,c)||Jf(_)},getConflictingClassGroupIds:(_,M)=>{const z=s[_]||[];return M&&p[_]?[...z,...p[_]]:z}}},Rc=(a,c)=>{if(a.length===0)return c.classGroupId;const s=a[0],p=c.nextPart.get(s),w=p?Rc(a.slice(1),p):void 0;if(w)return w;if(c.validators.length===0)return;const x=a.join(Es);return c.validators.find(({validator:_})=>_(x))?.classGroupId},pc=/^\[(.+)\]$/,Jf=a=>{if(pc.test(a)){const c=pc.exec(a)[1],s=c?.substring(0,c.indexOf(":"));if(s)return"arbitrary.."+s}},ep=a=>{const{theme:c,classGroups:s}=a,p={nextPart:new Map,validators:[]};for(const w in s)gs(s[w],p,w,c);return p},gs=(a,c,s,p)=>{a.forEach(w=>{if(typeof w=="string"){const x=w===""?c:mc(c,w);x.classGroupId=s;return}if(typeof w=="function"){if(tp(w)){gs(w(p),c,s,p);return}c.validators.push({validator:w,classGroupId:s});return}Object.entries(w).forEach(([x,_])=>{gs(_,mc(c,x),s,p)})})},mc=(a,c)=>{let s=a;return c.split(Es).forEach(p=>{s.nextPart.has(p)||s.nextPart.set(p,{nextPart:new Map,validators:[]}),s=s.nextPart.get(p)}),s},tp=a=>a.isThemeGetter,np=a=>{if(a<1)return{get:()=>{},set:()=>{}};let c=0,s=new Map,p=new Map;const w=(x,_)=>{s.set(x,_),c++,c>a&&(c=0,p=s,s=new Map)};return{get(x){let _=s.get(x);if(_!==void 0)return _;if((_=p.get(x))!==void 0)return w(x,_),_},set(x,_){s.has(x)?s.set(x,_):w(x,_)}}},vs="!",ys=":",rp=ys.length,op=a=>{const{prefix:c,experimentalParseClassName:s}=a;let p=w=>{const x=[];let _=0,M=0,z=0,P;for(let J=0;Jz?P-z:void 0;return{modifiers:x,hasImportantModifier:G,baseClassName:m,maybePostfixModifierPosition:se}};if(c){const w=c+ys,x=p;p=_=>_.startsWith(w)?x(_.substring(w.length)):{isExternal:!0,modifiers:[],hasImportantModifier:!1,baseClassName:_,maybePostfixModifierPosition:void 0}}if(s){const w=p;p=x=>s({className:x,parseClassName:w})}return p},lp=a=>a.endsWith(vs)?a.substring(0,a.length-1):a.startsWith(vs)?a.substring(1):a,ip=a=>{const c=Object.fromEntries(a.orderSensitiveModifiers.map(p=>[p,!0]));return p=>{if(p.length<=1)return p;const w=[];let x=[];return p.forEach(_=>{_[0]==="["||c[_]?(w.push(...x.sort(),_),x=[]):x.push(_)}),w.push(...x.sort()),w}},sp=a=>({cache:np(a.cacheSize),parseClassName:op(a),sortModifiers:ip(a),...qf(a)}),ap=/\s+/,up=(a,c)=>{const{parseClassName:s,getClassGroupId:p,getConflictingClassGroupIds:w,sortModifiers:x}=c,_=[],M=a.trim().split(ap);let z="";for(let P=M.length-1;P>=0;P-=1){const U=M[P],{isExternal:m,modifiers:G,hasImportantModifier:se,baseClassName:J,maybePostfixModifierPosition:le}=s(U);if(m){z=U+(z.length>0?" "+z:z);continue}let re=!!le,ee=p(re?J.substring(0,le):J);if(!ee){if(!re){z=U+(z.length>0?" "+z:z);continue}if(ee=p(J),!ee){z=U+(z.length>0?" "+z:z);continue}re=!1}const Ie=x(G).join(":"),Se=se?Ie+vs:Ie,he=Se+ee;if(_.includes(he))continue;_.push(he);const Te=w(ee,re);for(let de=0;de0?" "+z:z)}return z};function cp(){let a=0,c,s,p="";for(;a{if(typeof a=="string")return a;let c,s="";for(let p=0;pm(U),a());return s=sp(P),p=s.cache.get,w=s.cache.set,x=M,M(z)}function M(z){const P=p(z);if(P)return P;const U=up(z,s);return w(z,U),U}return function(){return x(cp.apply(null,arguments))}}const Ve=a=>{const c=s=>s[a]||[];return c.isThemeGetter=!0,c},bc=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Lc=/^\((?:(\w[\w-]*):)?(.+)\)$/i,fp=/^\d+\/\d+$/,pp=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,mp=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,hp=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,gp=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,vp=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,xr=a=>fp.test(a),ae=a=>!!a&&!Number.isNaN(Number(a)),Pn=a=>!!a&&Number.isInteger(Number(a)),ms=a=>a.endsWith("%")&&ae(a.slice(0,-1)),en=a=>pp.test(a),yp=()=>!0,wp=a=>mp.test(a)&&!hp.test(a),Mc=()=>!1,xp=a=>gp.test(a),kp=a=>vp.test(a),Sp=a=>!F(a)&&!B(a),Ep=a=>kr(a,Oc,Mc),F=a=>bc.test(a),Gn=a=>kr(a,Ac,wp),hs=a=>kr(a,Tp,ae),hc=a=>kr(a,Ic,Mc),Cp=a=>kr(a,Dc,kp),Nl=a=>kr(a,Fc,xp),B=a=>Lc.test(a),fo=a=>Sr(a,Ac),Np=a=>Sr(a,Pp),gc=a=>Sr(a,Ic),_p=a=>Sr(a,Oc),zp=a=>Sr(a,Dc),_l=a=>Sr(a,Fc,!0),kr=(a,c,s)=>{const p=bc.exec(a);return p?p[1]?c(p[1]):s(p[2]):!1},Sr=(a,c,s=!1)=>{const p=Lc.exec(a);return p?p[1]?c(p[1]):s:!1},Ic=a=>a==="position"||a==="percentage",Dc=a=>a==="image"||a==="url",Oc=a=>a==="length"||a==="size"||a==="bg-size",Ac=a=>a==="length",Tp=a=>a==="number",Pp=a=>a==="family-name",Fc=a=>a==="shadow",Rp=()=>{const a=Ve("color"),c=Ve("font"),s=Ve("text"),p=Ve("font-weight"),w=Ve("tracking"),x=Ve("leading"),_=Ve("breakpoint"),M=Ve("container"),z=Ve("spacing"),P=Ve("radius"),U=Ve("shadow"),m=Ve("inset-shadow"),G=Ve("text-shadow"),se=Ve("drop-shadow"),J=Ve("blur"),le=Ve("perspective"),re=Ve("aspect"),ee=Ve("ease"),Ie=Ve("animate"),Se=()=>["auto","avoid","all","avoid-page","page","left","right","column"],he=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],Te=()=>[...he(),B,F],de=()=>["auto","hidden","clip","visible","scroll"],ve=()=>["auto","contain","none"],V=()=>[B,F,z],Pe=()=>[xr,"full","auto",...V()],Ye=()=>[Pn,"none","subgrid",B,F],lt=()=>["auto",{span:["full",Pn,B,F]},Pn,B,F],je=()=>[Pn,"auto",B,F],ge=()=>["auto","min","max","fr",B,F],De=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],Ce=()=>["start","end","center","stretch","center-safe","end-safe"],q=()=>["auto",...V()],te=()=>[xr,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...V()],k=()=>[a,B,F],H=()=>[...he(),gc,hc,{position:[B,F]}],L=()=>["no-repeat",{repeat:["","x","y","space","round"]}],h=()=>["auto","cover","contain",_p,Ep,{size:[B,F]}],E=()=>[ms,fo,Gn],R=()=>["","none","full",P,B,F],I=()=>["",ae,fo,Gn],W=()=>["solid","dashed","dotted","double"],ne=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],K=()=>[ae,ms,gc,hc],Y=()=>["","none",J,B,F],ce=()=>["none",ae,B,F],Ne=()=>["none",ae,B,F],mt=()=>[ae,B,F],it=()=>[xr,"full",...V()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[en],breakpoint:[en],color:[yp],container:[en],"drop-shadow":[en],ease:["in","out","in-out"],font:[Sp],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[en],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[en],shadow:[en],spacing:["px",ae],text:[en],"text-shadow":[en],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",xr,F,B,re]}],container:["container"],columns:[{columns:[ae,F,B,M]}],"break-after":[{"break-after":Se()}],"break-before":[{"break-before":Se()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:Te()}],overflow:[{overflow:de()}],"overflow-x":[{"overflow-x":de()}],"overflow-y":[{"overflow-y":de()}],overscroll:[{overscroll:ve()}],"overscroll-x":[{"overscroll-x":ve()}],"overscroll-y":[{"overscroll-y":ve()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:Pe()}],"inset-x":[{"inset-x":Pe()}],"inset-y":[{"inset-y":Pe()}],start:[{start:Pe()}],end:[{end:Pe()}],top:[{top:Pe()}],right:[{right:Pe()}],bottom:[{bottom:Pe()}],left:[{left:Pe()}],visibility:["visible","invisible","collapse"],z:[{z:[Pn,"auto",B,F]}],basis:[{basis:[xr,"full","auto",M,...V()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[ae,xr,"auto","initial","none",F]}],grow:[{grow:["",ae,B,F]}],shrink:[{shrink:["",ae,B,F]}],order:[{order:[Pn,"first","last","none",B,F]}],"grid-cols":[{"grid-cols":Ye()}],"col-start-end":[{col:lt()}],"col-start":[{"col-start":je()}],"col-end":[{"col-end":je()}],"grid-rows":[{"grid-rows":Ye()}],"row-start-end":[{row:lt()}],"row-start":[{"row-start":je()}],"row-end":[{"row-end":je()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ge()}],"auto-rows":[{"auto-rows":ge()}],gap:[{gap:V()}],"gap-x":[{"gap-x":V()}],"gap-y":[{"gap-y":V()}],"justify-content":[{justify:[...De(),"normal"]}],"justify-items":[{"justify-items":[...Ce(),"normal"]}],"justify-self":[{"justify-self":["auto",...Ce()]}],"align-content":[{content:["normal",...De()]}],"align-items":[{items:[...Ce(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...Ce(),{baseline:["","last"]}]}],"place-content":[{"place-content":De()}],"place-items":[{"place-items":[...Ce(),"baseline"]}],"place-self":[{"place-self":["auto",...Ce()]}],p:[{p:V()}],px:[{px:V()}],py:[{py:V()}],ps:[{ps:V()}],pe:[{pe:V()}],pt:[{pt:V()}],pr:[{pr:V()}],pb:[{pb:V()}],pl:[{pl:V()}],m:[{m:q()}],mx:[{mx:q()}],my:[{my:q()}],ms:[{ms:q()}],me:[{me:q()}],mt:[{mt:q()}],mr:[{mr:q()}],mb:[{mb:q()}],ml:[{ml:q()}],"space-x":[{"space-x":V()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":V()}],"space-y-reverse":["space-y-reverse"],size:[{size:te()}],w:[{w:[M,"screen",...te()]}],"min-w":[{"min-w":[M,"screen","none",...te()]}],"max-w":[{"max-w":[M,"screen","none","prose",{screen:[_]},...te()]}],h:[{h:["screen","lh",...te()]}],"min-h":[{"min-h":["screen","lh","none",...te()]}],"max-h":[{"max-h":["screen","lh",...te()]}],"font-size":[{text:["base",s,fo,Gn]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[p,B,hs]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",ms,F]}],"font-family":[{font:[Np,F,c]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[w,B,F]}],"line-clamp":[{"line-clamp":[ae,"none",B,hs]}],leading:[{leading:[x,...V()]}],"list-image":[{"list-image":["none",B,F]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",B,F]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:k()}],"text-color":[{text:k()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...W(),"wavy"]}],"text-decoration-thickness":[{decoration:[ae,"from-font","auto",B,Gn]}],"text-decoration-color":[{decoration:k()}],"underline-offset":[{"underline-offset":[ae,"auto",B,F]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:V()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",B,F]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",B,F]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:H()}],"bg-repeat":[{bg:L()}],"bg-size":[{bg:h()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Pn,B,F],radial:["",B,F],conic:[Pn,B,F]},zp,Cp]}],"bg-color":[{bg:k()}],"gradient-from-pos":[{from:E()}],"gradient-via-pos":[{via:E()}],"gradient-to-pos":[{to:E()}],"gradient-from":[{from:k()}],"gradient-via":[{via:k()}],"gradient-to":[{to:k()}],rounded:[{rounded:R()}],"rounded-s":[{"rounded-s":R()}],"rounded-e":[{"rounded-e":R()}],"rounded-t":[{"rounded-t":R()}],"rounded-r":[{"rounded-r":R()}],"rounded-b":[{"rounded-b":R()}],"rounded-l":[{"rounded-l":R()}],"rounded-ss":[{"rounded-ss":R()}],"rounded-se":[{"rounded-se":R()}],"rounded-ee":[{"rounded-ee":R()}],"rounded-es":[{"rounded-es":R()}],"rounded-tl":[{"rounded-tl":R()}],"rounded-tr":[{"rounded-tr":R()}],"rounded-br":[{"rounded-br":R()}],"rounded-bl":[{"rounded-bl":R()}],"border-w":[{border:I()}],"border-w-x":[{"border-x":I()}],"border-w-y":[{"border-y":I()}],"border-w-s":[{"border-s":I()}],"border-w-e":[{"border-e":I()}],"border-w-t":[{"border-t":I()}],"border-w-r":[{"border-r":I()}],"border-w-b":[{"border-b":I()}],"border-w-l":[{"border-l":I()}],"divide-x":[{"divide-x":I()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":I()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...W(),"hidden","none"]}],"divide-style":[{divide:[...W(),"hidden","none"]}],"border-color":[{border:k()}],"border-color-x":[{"border-x":k()}],"border-color-y":[{"border-y":k()}],"border-color-s":[{"border-s":k()}],"border-color-e":[{"border-e":k()}],"border-color-t":[{"border-t":k()}],"border-color-r":[{"border-r":k()}],"border-color-b":[{"border-b":k()}],"border-color-l":[{"border-l":k()}],"divide-color":[{divide:k()}],"outline-style":[{outline:[...W(),"none","hidden"]}],"outline-offset":[{"outline-offset":[ae,B,F]}],"outline-w":[{outline:["",ae,fo,Gn]}],"outline-color":[{outline:k()}],shadow:[{shadow:["","none",U,_l,Nl]}],"shadow-color":[{shadow:k()}],"inset-shadow":[{"inset-shadow":["none",m,_l,Nl]}],"inset-shadow-color":[{"inset-shadow":k()}],"ring-w":[{ring:I()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:k()}],"ring-offset-w":[{"ring-offset":[ae,Gn]}],"ring-offset-color":[{"ring-offset":k()}],"inset-ring-w":[{"inset-ring":I()}],"inset-ring-color":[{"inset-ring":k()}],"text-shadow":[{"text-shadow":["none",G,_l,Nl]}],"text-shadow-color":[{"text-shadow":k()}],opacity:[{opacity:[ae,B,F]}],"mix-blend":[{"mix-blend":[...ne(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ne()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[ae]}],"mask-image-linear-from-pos":[{"mask-linear-from":K()}],"mask-image-linear-to-pos":[{"mask-linear-to":K()}],"mask-image-linear-from-color":[{"mask-linear-from":k()}],"mask-image-linear-to-color":[{"mask-linear-to":k()}],"mask-image-t-from-pos":[{"mask-t-from":K()}],"mask-image-t-to-pos":[{"mask-t-to":K()}],"mask-image-t-from-color":[{"mask-t-from":k()}],"mask-image-t-to-color":[{"mask-t-to":k()}],"mask-image-r-from-pos":[{"mask-r-from":K()}],"mask-image-r-to-pos":[{"mask-r-to":K()}],"mask-image-r-from-color":[{"mask-r-from":k()}],"mask-image-r-to-color":[{"mask-r-to":k()}],"mask-image-b-from-pos":[{"mask-b-from":K()}],"mask-image-b-to-pos":[{"mask-b-to":K()}],"mask-image-b-from-color":[{"mask-b-from":k()}],"mask-image-b-to-color":[{"mask-b-to":k()}],"mask-image-l-from-pos":[{"mask-l-from":K()}],"mask-image-l-to-pos":[{"mask-l-to":K()}],"mask-image-l-from-color":[{"mask-l-from":k()}],"mask-image-l-to-color":[{"mask-l-to":k()}],"mask-image-x-from-pos":[{"mask-x-from":K()}],"mask-image-x-to-pos":[{"mask-x-to":K()}],"mask-image-x-from-color":[{"mask-x-from":k()}],"mask-image-x-to-color":[{"mask-x-to":k()}],"mask-image-y-from-pos":[{"mask-y-from":K()}],"mask-image-y-to-pos":[{"mask-y-to":K()}],"mask-image-y-from-color":[{"mask-y-from":k()}],"mask-image-y-to-color":[{"mask-y-to":k()}],"mask-image-radial":[{"mask-radial":[B,F]}],"mask-image-radial-from-pos":[{"mask-radial-from":K()}],"mask-image-radial-to-pos":[{"mask-radial-to":K()}],"mask-image-radial-from-color":[{"mask-radial-from":k()}],"mask-image-radial-to-color":[{"mask-radial-to":k()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":he()}],"mask-image-conic-pos":[{"mask-conic":[ae]}],"mask-image-conic-from-pos":[{"mask-conic-from":K()}],"mask-image-conic-to-pos":[{"mask-conic-to":K()}],"mask-image-conic-from-color":[{"mask-conic-from":k()}],"mask-image-conic-to-color":[{"mask-conic-to":k()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:H()}],"mask-repeat":[{mask:L()}],"mask-size":[{mask:h()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",B,F]}],filter:[{filter:["","none",B,F]}],blur:[{blur:Y()}],brightness:[{brightness:[ae,B,F]}],contrast:[{contrast:[ae,B,F]}],"drop-shadow":[{"drop-shadow":["","none",se,_l,Nl]}],"drop-shadow-color":[{"drop-shadow":k()}],grayscale:[{grayscale:["",ae,B,F]}],"hue-rotate":[{"hue-rotate":[ae,B,F]}],invert:[{invert:["",ae,B,F]}],saturate:[{saturate:[ae,B,F]}],sepia:[{sepia:["",ae,B,F]}],"backdrop-filter":[{"backdrop-filter":["","none",B,F]}],"backdrop-blur":[{"backdrop-blur":Y()}],"backdrop-brightness":[{"backdrop-brightness":[ae,B,F]}],"backdrop-contrast":[{"backdrop-contrast":[ae,B,F]}],"backdrop-grayscale":[{"backdrop-grayscale":["",ae,B,F]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[ae,B,F]}],"backdrop-invert":[{"backdrop-invert":["",ae,B,F]}],"backdrop-opacity":[{"backdrop-opacity":[ae,B,F]}],"backdrop-saturate":[{"backdrop-saturate":[ae,B,F]}],"backdrop-sepia":[{"backdrop-sepia":["",ae,B,F]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":V()}],"border-spacing-x":[{"border-spacing-x":V()}],"border-spacing-y":[{"border-spacing-y":V()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",B,F]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[ae,"initial",B,F]}],ease:[{ease:["linear","initial",ee,B,F]}],delay:[{delay:[ae,B,F]}],animate:[{animate:["none",Ie,B,F]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[le,B,F]}],"perspective-origin":[{"perspective-origin":Te()}],rotate:[{rotate:ce()}],"rotate-x":[{"rotate-x":ce()}],"rotate-y":[{"rotate-y":ce()}],"rotate-z":[{"rotate-z":ce()}],scale:[{scale:Ne()}],"scale-x":[{"scale-x":Ne()}],"scale-y":[{"scale-y":Ne()}],"scale-z":[{"scale-z":Ne()}],"scale-3d":["scale-3d"],skew:[{skew:mt()}],"skew-x":[{"skew-x":mt()}],"skew-y":[{"skew-y":mt()}],transform:[{transform:[B,F,"","none","gpu","cpu"]}],"transform-origin":[{origin:Te()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:it()}],"translate-x":[{"translate-x":it()}],"translate-y":[{"translate-y":it()}],"translate-z":[{"translate-z":it()}],"translate-none":["translate-none"],accent:[{accent:k()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:k()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",B,F]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":V()}],"scroll-mx":[{"scroll-mx":V()}],"scroll-my":[{"scroll-my":V()}],"scroll-ms":[{"scroll-ms":V()}],"scroll-me":[{"scroll-me":V()}],"scroll-mt":[{"scroll-mt":V()}],"scroll-mr":[{"scroll-mr":V()}],"scroll-mb":[{"scroll-mb":V()}],"scroll-ml":[{"scroll-ml":V()}],"scroll-p":[{"scroll-p":V()}],"scroll-px":[{"scroll-px":V()}],"scroll-py":[{"scroll-py":V()}],"scroll-ps":[{"scroll-ps":V()}],"scroll-pe":[{"scroll-pe":V()}],"scroll-pt":[{"scroll-pt":V()}],"scroll-pr":[{"scroll-pr":V()}],"scroll-pb":[{"scroll-pb":V()}],"scroll-pl":[{"scroll-pl":V()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",B,F]}],fill:[{fill:["none",...k()]}],"stroke-w":[{stroke:[ae,fo,Gn,hs]}],stroke:[{stroke:["none",...k()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},jp=dp(Rp);function Er(...a){return jp(Tc(a))}const bp=Pc("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});function ws({className:a,variant:c,asChild:s=!1,...p}){const w=s?_c:"span";return S.jsx(w,{"data-slot":"badge",className:Er(bp({variant:c}),a),...p})}const Lp=Pc("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background text-foreground hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9 rounded-md"}},defaultVariants:{variant:"default",size:"default"}});function xs({className:a,variant:c,size:s,asChild:p=!1,...w}){const x=p?_c:"button";return S.jsx(x,{"data-slot":"button",className:Er(Lp({variant:c,size:s,className:a})),...w})}/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Mp=a=>a.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Ip=a=>a.replace(/^([A-Z])|[\s-_]+(\w)/g,(c,s,p)=>p?p.toUpperCase():s.toLowerCase()),vc=a=>{const c=Ip(a);return c.charAt(0).toUpperCase()+c.slice(1)},Bc=(...a)=>a.filter((c,s,p)=>!!c&&c.trim()!==""&&p.indexOf(c)===s).join(" ").trim();/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var Dp={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.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Op=we.forwardRef(({color:a="currentColor",size:c=24,strokeWidth:s=2,absoluteStrokeWidth:p,className:w="",children:x,iconNode:_,...M},z)=>we.createElement("svg",{ref:z,...Dp,width:c,height:c,stroke:a,strokeWidth:p?Number(s)*24/Number(c):s,className:Bc("lucide",w),...M},[..._.map(([P,U])=>we.createElement(P,U)),...Array.isArray(x)?x:[x]]));/** + * @license lucide-react v0.487.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=(a,c)=>{const s=we.forwardRef(({className:p,...w},x)=>we.createElement(Op,{ref:x,iconNode:c,className:Bc(`lucide-${Mp(vc(a))}`,`lucide-${a}`,p),...w}));return s.displayName=vc(a),s};/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ap=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],Fp=tn("activity",Ap);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Bp=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],Up=tn("copy",Bp);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Vp=[["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"}]],Uc=tn("external-link",Vp);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $p=[["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"}]],Hp=tn("globe",$p);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Wp=[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]],Qp=tn("mail",Wp);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Yp=[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}]],yc=tn("message-circle",Yp);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Gp=[["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"}]],Kp=tn("shield",Gp);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Xp=[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]],Vc=tn("trending-up",Xp);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Zp=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],qp=tn("zap",Zp);function Jp({name:a,version:c,description:s,provider:p,healthLink:w}){return S.jsxs("div",{className:"relative text-center space-y-6 mb-16 overflow-hidden rounded-3xl",children:[S.jsxs("div",{className:"absolute inset-0 -z-10",children:[S.jsx("div",{className:"absolute top-0 left-1/4 w-96 h-96 bg-primary/5 rounded-full blur-3xl animate-blob"}),S.jsx("div",{className:"absolute top-0 right-1/4 w-96 h-96 bg-blue-500/5 rounded-full blur-3xl animate-blob animation-delay-2000"}),S.jsx("div",{className:"absolute -bottom-8 left-1/2 w-96 h-96 bg-purple-500/5 rounded-full blur-3xl animate-blob animation-delay-4000"})]}),S.jsxs("div",{className:"relative py-12 space-y-4 overflow-hidden min-h-[400px]",children:[S.jsxs("div",{className:"absolute inset-0 -z-10",children:[S.jsx("div",{className:"request-particle",style:{left:"10%",animationDelay:"0s"}}),S.jsx("div",{className:"request-particle",style:{left:"25%",animationDelay:"1.5s"}}),S.jsx("div",{className:"request-particle",style:{left:"50%",animationDelay:"3s"}}),S.jsx("div",{className:"request-particle",style:{left:"75%",animationDelay:"4.5s"}}),S.jsx("div",{className:"request-particle",style:{left:"90%",animationDelay:"2s"}}),S.jsx("div",{className:"request-particle",style:{left:"35%",animationDelay:"2.8s"}}),S.jsx("div",{className:"request-particle",style:{left:"65%",animationDelay:"4s"}}),S.jsxs("svg",{className:"absolute inset-0 w-full h-full opacity-20",children:[S.jsx("line",{x1:"10%",y1:"0",x2:"25%",y2:"100%",stroke:"currentColor",strokeWidth:"2",className:"text-primary animate-pulse",style:{animationDuration:"3s"}}),S.jsx("line",{x1:"50%",y1:"0",x2:"75%",y2:"100%",stroke:"currentColor",strokeWidth:"2",className:"text-blue-500 animate-pulse",style:{animationDuration:"4s",animationDelay:"1s"}}),S.jsx("line",{x1:"90%",y1:"0",x2:"50%",y2:"100%",stroke:"currentColor",strokeWidth:"2",className:"text-purple-500 animate-pulse",style:{animationDuration:"5s",animationDelay:"2s"}}),S.jsx("line",{x1:"35%",y1:"0",x2:"65%",y2:"100%",stroke:"currentColor",strokeWidth:"2",className:"text-green-500 animate-pulse",style:{animationDuration:"4.5s",animationDelay:"0.5s"}})]})]}),S.jsxs(ws,{variant:"outline",className:"px-4 py-1 relative z-10",children:[S.jsx(qp,{className:"w-3 h-3 mr-1"}),"v",c]}),S.jsx("h1",{className:"text-5xl md:text-6xl bg-gradient-to-r from-primary via-blue-600 to-purple-600 bg-clip-text text-transparent relative z-10",children:a}),S.jsx("p",{className:"text-xl text-muted-foreground max-w-2xl mx-auto leading-relaxed relative z-10",children:s}),S.jsxs("p",{className:"text-sm text-muted-foreground relative z-10",children:["Created by ",S.jsx("span",{className:"font-medium",children:p})]})]}),S.jsx("div",{className:"flex gap-4 justify-center pb-6",children:S.jsx(xs,{asChild:!0,children:S.jsxs("a",{href:w,target:"_blank",rel:"noopener noreferrer",children:[S.jsx(Uc,{className:"w-4 h-4 mr-2"}),"API Health"]})})}),S.jsx("style",{children:` + @keyframes blob { + 0%, 100% { + transform: translate(0, 0) scale(1); + } + 33% { + transform: translate(30px, -50px) scale(1.1); + } + 66% { + transform: translate(-20px, 20px) scale(0.9); + } + } + @keyframes requestFlow { + 0% { + transform: translateY(-100%) scale(0.5); + opacity: 0; + } + 10% { + opacity: 1; + } + 90% { + opacity: 1; + } + 100% { + transform: translateY(400%) scale(1); + opacity: 0; + } + } + .animate-blob { + animation: blob 7s infinite; + } + .animation-delay-2000 { + animation-delay: 2s; + } + .animation-delay-4000 { + animation-delay: 4s; + } + .request-particle { + position: absolute; + width: 8px; + height: 8px; + background: linear-gradient(135deg, #3b82f6, #8b5cf6); + border-radius: 50%; + box-shadow: 0 0 15px rgba(59, 130, 246, 0.8), 0 0 25px rgba(139, 92, 246, 0.4); + animation: requestFlow 6s infinite ease-in-out; + opacity: 0.7; + } + `})]})}function em({className:a,...c}){return S.jsx("div",{"data-slot":"card",className:Er("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border",a),...c})}function tm({className:a,...c}){return S.jsx("div",{"data-slot":"card-header",className:Er("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 pt-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",a),...c})}function nm({className:a,...c}){return S.jsx("div",{"data-slot":"card-content",className:Er("px-6 [&:last-child]:pb-6",a),...c})}var rm=Cc();const om=Ec(rm);function lm(a){if(typeof document>"u")return;let c=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css",c.appendChild(s),s.styleSheet?s.styleSheet.cssText=a:s.appendChild(document.createTextNode(a))}const im=a=>{switch(a){case"success":return um;case"info":return dm;case"warning":return cm;case"error":return fm;default:return null}},sm=Array(12).fill(0),am=({visible:a,className:c})=>b.createElement("div",{className:["sonner-loading-wrapper",c].filter(Boolean).join(" "),"data-visible":a},b.createElement("div",{className:"sonner-spinner"},sm.map((s,p)=>b.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${p}`})))),um=b.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},b.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),cm=b.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},b.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),dm=b.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},b.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),fm=b.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},b.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),pm=b.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},b.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),b.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),mm=()=>{const[a,c]=b.useState(document.hidden);return b.useEffect(()=>{const s=()=>{c(document.hidden)};return document.addEventListener("visibilitychange",s),()=>window.removeEventListener("visibilitychange",s)},[]),a};let ks=1;class hm{constructor(){this.subscribe=c=>(this.subscribers.push(c),()=>{const s=this.subscribers.indexOf(c);this.subscribers.splice(s,1)}),this.publish=c=>{this.subscribers.forEach(s=>s(c))},this.addToast=c=>{this.publish(c),this.toasts=[...this.toasts,c]},this.create=c=>{var s;const{message:p,...w}=c,x=typeof c?.id=="number"||((s=c.id)==null?void 0:s.length)>0?c.id:ks++,_=this.toasts.find(z=>z.id===x),M=c.dismissible===void 0?!0:c.dismissible;return this.dismissedToasts.has(x)&&this.dismissedToasts.delete(x),_?this.toasts=this.toasts.map(z=>z.id===x?(this.publish({...z,...c,id:x,title:p}),{...z,...c,id:x,dismissible:M,title:p}):z):this.addToast({title:p,...w,dismissible:M,id:x}),x},this.dismiss=c=>(c?(this.dismissedToasts.add(c),requestAnimationFrame(()=>this.subscribers.forEach(s=>s({id:c,dismiss:!0})))):this.toasts.forEach(s=>{this.subscribers.forEach(p=>p({id:s.id,dismiss:!0}))}),c),this.message=(c,s)=>this.create({...s,message:c}),this.error=(c,s)=>this.create({...s,message:c,type:"error"}),this.success=(c,s)=>this.create({...s,type:"success",message:c}),this.info=(c,s)=>this.create({...s,type:"info",message:c}),this.warning=(c,s)=>this.create({...s,type:"warning",message:c}),this.loading=(c,s)=>this.create({...s,type:"loading",message:c}),this.promise=(c,s)=>{if(!s)return;let p;s.loading!==void 0&&(p=this.create({...s,promise:c,type:"loading",message:s.loading,description:typeof s.description!="function"?s.description:void 0}));const w=Promise.resolve(c instanceof Function?c():c);let x=p!==void 0,_;const M=w.then(async P=>{if(_=["resolve",P],b.isValidElement(P))x=!1,this.create({id:p,type:"default",message:P});else if(vm(P)&&!P.ok){x=!1;const m=typeof s.error=="function"?await s.error(`HTTP error! status: ${P.status}`):s.error,G=typeof s.description=="function"?await s.description(`HTTP error! status: ${P.status}`):s.description,J=typeof m=="object"&&!b.isValidElement(m)?m:{message:m};this.create({id:p,type:"error",description:G,...J})}else if(P instanceof Error){x=!1;const m=typeof s.error=="function"?await s.error(P):s.error,G=typeof s.description=="function"?await s.description(P):s.description,J=typeof m=="object"&&!b.isValidElement(m)?m:{message:m};this.create({id:p,type:"error",description:G,...J})}else if(s.success!==void 0){x=!1;const m=typeof s.success=="function"?await s.success(P):s.success,G=typeof s.description=="function"?await s.description(P):s.description,J=typeof m=="object"&&!b.isValidElement(m)?m:{message:m};this.create({id:p,type:"success",description:G,...J})}}).catch(async P=>{if(_=["reject",P],s.error!==void 0){x=!1;const U=typeof s.error=="function"?await s.error(P):s.error,m=typeof s.description=="function"?await s.description(P):s.description,se=typeof U=="object"&&!b.isValidElement(U)?U:{message:U};this.create({id:p,type:"error",description:m,...se})}}).finally(()=>{x&&(this.dismiss(p),p=void 0),s.finally==null||s.finally.call(s)}),z=()=>new Promise((P,U)=>M.then(()=>_[0]==="reject"?U(_[1]):P(_[1])).catch(U));return typeof p!="string"&&typeof p!="number"?{unwrap:z}:Object.assign(p,{unwrap:z})},this.custom=(c,s)=>{const p=s?.id||ks++;return this.create({jsx:c(p),id:p,...s}),p},this.getActiveToasts=()=>this.toasts.filter(c=>!this.dismissedToasts.has(c.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const pt=new hm,gm=(a,c)=>{const s=c?.id||ks++;return pt.addToast({title:a,...c,id:s}),s},vm=a=>a&&typeof a=="object"&&"ok"in a&&typeof a.ok=="boolean"&&"status"in a&&typeof a.status=="number",ym=gm,wm=()=>pt.toasts,xm=()=>pt.getActiveToasts(),km=Object.assign(ym,{success:pt.success,info:pt.info,warning:pt.warning,error:pt.error,custom:pt.custom,message:pt.message,promise:pt.promise,dismiss:pt.dismiss,loading:pt.loading},{getHistory:wm,getToasts:xm});lm("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function zl(a){return a.label!==void 0}const Sm=3,Em="24px",Cm="16px",wc=4e3,Nm=356,_m=14,zm=45,Tm=200;function Vt(...a){return a.filter(Boolean).join(" ")}function Pm(a){const[c,s]=a.split("-"),p=[];return c&&p.push(c),s&&p.push(s),p}const Rm=a=>{var c,s,p,w,x,_,M,z,P;const{invert:U,toast:m,unstyled:G,interacting:se,setHeights:J,visibleToasts:le,heights:re,index:ee,toasts:Ie,expanded:Se,removeToast:he,defaultRichColors:Te,closeButton:de,style:ve,cancelButtonStyle:V,actionButtonStyle:Pe,className:Ye="",descriptionClassName:lt="",duration:je,position:ge,gap:De,expandByDefault:Ce,classNames:q,icons:te,closeButtonAriaLabel:k="Close toast"}=a,[H,L]=b.useState(null),[h,E]=b.useState(null),[R,I]=b.useState(!1),[W,ne]=b.useState(!1),[K,Y]=b.useState(!1),[ce,Ne]=b.useState(!1),[mt,it]=b.useState(!1),[Kn,Rn]=b.useState(0),[po,Cr]=b.useState(0),$t=b.useRef(m.duration||je||wc),Nr=b.useRef(null),ht=b.useRef(null),jn=ee===0,nn=ee+1<=le,Ge=m.type,Ht=m.dismissible!==!1,mo=m.className||"",ho=m.descriptionClassName||"",bn=b.useMemo(()=>re.findIndex(ie=>ie.toastId===m.id)||0,[re,m.id]),_r=b.useMemo(()=>{var ie;return(ie=m.closeButton)!=null?ie:de},[m.closeButton,de]),Ln=b.useMemo(()=>m.duration||je||wc,[m.duration,je]),Xn=b.useRef(0),kt=b.useRef(0),rn=b.useRef(0),on=b.useRef(null),[go,vo]=ge.split("-"),yo=b.useMemo(()=>re.reduce((ie,be,Fe)=>Fe>=bn?ie:ie+be.height,0),[re,bn]),Zn=mm(),zr=m.invert||U,Mn=Ge==="loading";kt.current=b.useMemo(()=>bn*De+yo,[bn,yo]),b.useEffect(()=>{$t.current=Ln},[Ln]),b.useEffect(()=>{I(!0)},[]),b.useEffect(()=>{const ie=ht.current;if(ie){const be=ie.getBoundingClientRect().height;return Cr(be),J(Fe=>[{toastId:m.id,height:be,position:m.position},...Fe]),()=>J(Fe=>Fe.filter(qe=>qe.toastId!==m.id))}},[J,m.id]),b.useLayoutEffect(()=>{if(!R)return;const ie=ht.current,be=ie.style.height;ie.style.height="auto";const Fe=ie.getBoundingClientRect().height;ie.style.height=be,Cr(Fe),J(qe=>qe.find(Oe=>Oe.toastId===m.id)?qe.map(Oe=>Oe.toastId===m.id?{...Oe,height:Fe}:Oe):[{toastId:m.id,height:Fe,position:m.position},...qe])},[R,m.title,m.description,J,m.id,m.jsx,m.action,m.cancel]);const St=b.useCallback(()=>{ne(!0),Rn(kt.current),J(ie=>ie.filter(be=>be.toastId!==m.id)),setTimeout(()=>{he(m)},Tm)},[m,he,J,kt]);b.useEffect(()=>{if(m.promise&&Ge==="loading"||m.duration===1/0||m.type==="loading")return;let ie;return Se||se||Zn?(()=>{if(rn.current{$t.current!==1/0&&(Xn.current=new Date().getTime(),ie=setTimeout(()=>{m.onAutoClose==null||m.onAutoClose.call(m,m),St()},$t.current))})(),()=>clearTimeout(ie)},[Se,se,m,Ge,Zn,St]),b.useEffect(()=>{m.delete&&(St(),m.onDismiss==null||m.onDismiss.call(m,m))},[St,m.delete]);function Tr(){var ie;if(te?.loading){var be;return b.createElement("div",{className:Vt(q?.loader,m==null||(be=m.classNames)==null?void 0:be.loader,"sonner-loader"),"data-visible":Ge==="loading"},te.loading)}return b.createElement(am,{className:Vt(q?.loader,m==null||(ie=m.classNames)==null?void 0:ie.loader),visible:Ge==="loading"})}const ln=m.icon||te?.[Ge]||im(Ge);var Wt,Pr;return b.createElement("li",{tabIndex:0,ref:ht,className:Vt(Ye,mo,q?.toast,m==null||(c=m.classNames)==null?void 0:c.toast,q?.default,q?.[Ge],m==null||(s=m.classNames)==null?void 0:s[Ge]),"data-sonner-toast":"","data-rich-colors":(Wt=m.richColors)!=null?Wt:Te,"data-styled":!(m.jsx||m.unstyled||G),"data-mounted":R,"data-promise":!!m.promise,"data-swiped":mt,"data-removed":W,"data-visible":nn,"data-y-position":go,"data-x-position":vo,"data-index":ee,"data-front":jn,"data-swiping":K,"data-dismissible":Ht,"data-type":Ge,"data-invert":zr,"data-swipe-out":ce,"data-swipe-direction":h,"data-expanded":!!(Se||Ce&&R),"data-testid":m.testId,style:{"--index":ee,"--toasts-before":ee,"--z-index":Ie.length-ee,"--offset":`${W?Kn:kt.current}px`,"--initial-height":Ce?"auto":`${po}px`,...ve,...m.style},onDragEnd:()=>{Y(!1),L(null),on.current=null},onPointerDown:ie=>{ie.button!==2&&(Mn||!Ht||(Nr.current=new Date,Rn(kt.current),ie.target.setPointerCapture(ie.pointerId),ie.target.tagName!=="BUTTON"&&(Y(!0),on.current={x:ie.clientX,y:ie.clientY})))},onPointerUp:()=>{var ie,be,Fe;if(ce||!Ht)return;on.current=null;const qe=Number(((ie=ht.current)==null?void 0:ie.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),sn=Number(((be=ht.current)==null?void 0:be.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),Oe=new Date().getTime()-((Fe=Nr.current)==null?void 0:Fe.getTime()),$e=H==="x"?qe:sn,an=Math.abs($e)/Oe;if(Math.abs($e)>=zm||an>.11){Rn(kt.current),m.onDismiss==null||m.onDismiss.call(m,m),E(H==="x"?qe>0?"right":"left":sn>0?"down":"up"),St(),Ne(!0);return}else{var Ke,gt;(Ke=ht.current)==null||Ke.style.setProperty("--swipe-amount-x","0px"),(gt=ht.current)==null||gt.style.setProperty("--swipe-amount-y","0px")}it(!1),Y(!1),L(null)},onPointerMove:ie=>{var be,Fe,qe;if(!on.current||!Ht||((be=window.getSelection())==null?void 0:be.toString().length)>0)return;const Oe=ie.clientY-on.current.y,$e=ie.clientX-on.current.x;var an;const Ke=(an=a.swipeDirections)!=null?an:Pm(ge);!H&&(Math.abs($e)>1||Math.abs(Oe)>1)&&L(Math.abs($e)>Math.abs(Oe)?"x":"y");let gt={x:0,y:0};const un=Et=>1/(1.5+Math.abs(Et)/20);if(H==="y"){if(Ke.includes("top")||Ke.includes("bottom"))if(Ke.includes("top")&&Oe<0||Ke.includes("bottom")&&Oe>0)gt.y=Oe;else{const Et=Oe*un(Oe);gt.y=Math.abs(Et)0)gt.x=$e;else{const Et=$e*un($e);gt.x=Math.abs(Et)0||Math.abs(gt.y)>0)&&it(!0),(Fe=ht.current)==null||Fe.style.setProperty("--swipe-amount-x",`${gt.x}px`),(qe=ht.current)==null||qe.style.setProperty("--swipe-amount-y",`${gt.y}px`)}},_r&&!m.jsx&&Ge!=="loading"?b.createElement("button",{"aria-label":k,"data-disabled":Mn,"data-close-button":!0,onClick:Mn||!Ht?()=>{}:()=>{St(),m.onDismiss==null||m.onDismiss.call(m,m)},className:Vt(q?.closeButton,m==null||(p=m.classNames)==null?void 0:p.closeButton)},(Pr=te?.close)!=null?Pr:pm):null,(Ge||m.icon||m.promise)&&m.icon!==null&&(te?.[Ge]!==null||m.icon)?b.createElement("div",{"data-icon":"",className:Vt(q?.icon,m==null||(w=m.classNames)==null?void 0:w.icon)},m.promise||m.type==="loading"&&!m.icon?m.icon||Tr():null,m.type!=="loading"?ln:null):null,b.createElement("div",{"data-content":"",className:Vt(q?.content,m==null||(x=m.classNames)==null?void 0:x.content)},b.createElement("div",{"data-title":"",className:Vt(q?.title,m==null||(_=m.classNames)==null?void 0:_.title)},m.jsx?m.jsx:typeof m.title=="function"?m.title():m.title),m.description?b.createElement("div",{"data-description":"",className:Vt(lt,ho,q?.description,m==null||(M=m.classNames)==null?void 0:M.description)},typeof m.description=="function"?m.description():m.description):null),b.isValidElement(m.cancel)?m.cancel:m.cancel&&zl(m.cancel)?b.createElement("button",{"data-button":!0,"data-cancel":!0,style:m.cancelButtonStyle||V,onClick:ie=>{zl(m.cancel)&&Ht&&(m.cancel.onClick==null||m.cancel.onClick.call(m.cancel,ie),St())},className:Vt(q?.cancelButton,m==null||(z=m.classNames)==null?void 0:z.cancelButton)},m.cancel.label):null,b.isValidElement(m.action)?m.action:m.action&&zl(m.action)?b.createElement("button",{"data-button":!0,"data-action":!0,style:m.actionButtonStyle||Pe,onClick:ie=>{zl(m.action)&&(m.action.onClick==null||m.action.onClick.call(m.action,ie),!ie.defaultPrevented&&St())},className:Vt(q?.actionButton,m==null||(P=m.classNames)==null?void 0:P.actionButton)},m.action.label):null)};function xc(){if(typeof window>"u"||typeof document>"u")return"ltr";const a=document.documentElement.getAttribute("dir");return a==="auto"||!a?window.getComputedStyle(document.documentElement).direction:a}function jm(a,c){const s={};return[a,c].forEach((p,w)=>{const x=w===1,_=x?"--mobile-offset":"--offset",M=x?Cm:Em;function z(P){["top","right","bottom","left"].forEach(U=>{s[`${_}-${U}`]=typeof P=="number"?`${P}px`:P})}typeof p=="number"||typeof p=="string"?z(p):typeof p=="object"?["top","right","bottom","left"].forEach(P=>{p[P]===void 0?s[`${_}-${P}`]=M:s[`${_}-${P}`]=typeof p[P]=="number"?`${p[P]}px`:p[P]}):z(M)}),s}const bm=b.forwardRef(function(c,s){const{id:p,invert:w,position:x="bottom-right",hotkey:_=["altKey","KeyT"],expand:M,closeButton:z,className:P,offset:U,mobileOffset:m,theme:G="light",richColors:se,duration:J,style:le,visibleToasts:re=Sm,toastOptions:ee,dir:Ie=xc(),gap:Se=_m,icons:he,containerAriaLabel:Te="Notifications"}=c,[de,ve]=b.useState([]),V=b.useMemo(()=>p?de.filter(R=>R.toasterId===p):de.filter(R=>!R.toasterId),[de,p]),Pe=b.useMemo(()=>Array.from(new Set([x].concat(V.filter(R=>R.position).map(R=>R.position)))),[V,x]),[Ye,lt]=b.useState([]),[je,ge]=b.useState(!1),[De,Ce]=b.useState(!1),[q,te]=b.useState(G!=="system"?G:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),k=b.useRef(null),H=_.join("+").replace(/Key/g,"").replace(/Digit/g,""),L=b.useRef(null),h=b.useRef(!1),E=b.useCallback(R=>{ve(I=>{var W;return(W=I.find(ne=>ne.id===R.id))!=null&&W.delete||pt.dismiss(R.id),I.filter(({id:ne})=>ne!==R.id)})},[]);return b.useEffect(()=>pt.subscribe(R=>{if(R.dismiss){requestAnimationFrame(()=>{ve(I=>I.map(W=>W.id===R.id?{...W,delete:!0}:W))});return}setTimeout(()=>{om.flushSync(()=>{ve(I=>{const W=I.findIndex(ne=>ne.id===R.id);return W!==-1?[...I.slice(0,W),{...I[W],...R},...I.slice(W+1)]:[R,...I]})})})}),[de]),b.useEffect(()=>{if(G!=="system"){te(G);return}if(G==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?te("dark"):te("light")),typeof window>"u")return;const R=window.matchMedia("(prefers-color-scheme: dark)");try{R.addEventListener("change",({matches:I})=>{te(I?"dark":"light")})}catch{R.addListener(({matches:W})=>{try{te(W?"dark":"light")}catch(ne){console.error(ne)}})}},[G]),b.useEffect(()=>{de.length<=1&&ge(!1)},[de]),b.useEffect(()=>{const R=I=>{var W;if(_.every(Y=>I[Y]||I.code===Y)){var K;ge(!0),(K=k.current)==null||K.focus()}I.code==="Escape"&&(document.activeElement===k.current||(W=k.current)!=null&&W.contains(document.activeElement))&&ge(!1)};return document.addEventListener("keydown",R),()=>document.removeEventListener("keydown",R)},[_]),b.useEffect(()=>{if(k.current)return()=>{L.current&&(L.current.focus({preventScroll:!0}),L.current=null,h.current=!1)}},[k.current]),b.createElement("section",{ref:s,"aria-label":`${Te} ${H}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},Pe.map((R,I)=>{var W;const[ne,K]=R.split("-");return V.length?b.createElement("ol",{key:R,dir:Ie==="auto"?xc():Ie,tabIndex:-1,ref:k,className:P,"data-sonner-toaster":!0,"data-sonner-theme":q,"data-y-position":ne,"data-x-position":K,style:{"--front-toast-height":`${((W=Ye[0])==null?void 0:W.height)||0}px`,"--width":`${Nm}px`,"--gap":`${Se}px`,...le,...jm(U,m)},onBlur:Y=>{h.current&&!Y.currentTarget.contains(Y.relatedTarget)&&(h.current=!1,L.current&&(L.current.focus({preventScroll:!0}),L.current=null))},onFocus:Y=>{Y.target instanceof HTMLElement&&Y.target.dataset.dismissible==="false"||h.current||(h.current=!0,L.current=Y.relatedTarget)},onMouseEnter:()=>ge(!0),onMouseMove:()=>ge(!0),onMouseLeave:()=>{De||ge(!1)},onDragEnd:()=>ge(!1),onPointerDown:Y=>{Y.target instanceof HTMLElement&&Y.target.dataset.dismissible==="false"||Ce(!0)},onPointerUp:()=>Ce(!1)},V.filter(Y=>!Y.position&&I===0||Y.position===R).map((Y,ce)=>{var Ne,mt;return b.createElement(Rm,{key:Y.id,icons:he,index:ce,toast:Y,defaultRichColors:se,duration:(Ne=ee?.duration)!=null?Ne:J,className:ee?.className,descriptionClassName:ee?.descriptionClassName,invert:w,visibleToasts:re,closeButton:(mt=ee?.closeButton)!=null?mt:z,interacting:De,position:R,style:ee?.style,unstyled:ee?.unstyled,classNames:ee?.classNames,cancelButtonStyle:ee?.cancelButtonStyle,actionButtonStyle:ee?.actionButtonStyle,closeButtonAriaLabel:ee?.closeButtonAriaLabel,removeToast:E,toasts:V.filter(it=>it.position==Y.position),heights:Ye.filter(it=>it.position==Y.position),setHeights:lt,expandByDefault:M,gap:Se,expanded:je,swipeDirections:c.swipeDirections})})):null}))});function Lm({title:a,path:c,desc:s,example:p,usageCount:w=0}){const x=_=>{navigator.clipboard.writeText(_),km.success("Copied to clipboard!")};return S.jsxs(em,{className:"h-full hover:shadow-lg transition-shadow",children:[S.jsxs(tm,{className:"space-y-3",children:[S.jsxs("div",{className:"flex items-center justify-between",children:[S.jsx("h3",{className:"font-semibold",children:a}),w>0&&S.jsxs(ws,{variant:"secondary",className:"gap-1",children:[S.jsx(Vc,{className:"w-3 h-3"}),w]})]}),S.jsx(ws,{variant:"outline",className:"font-mono text-xs w-fit",children:c}),S.jsx("p",{className:"text-sm text-muted-foreground",children:s})]}),S.jsxs(nm,{className:"space-y-4",children:[S.jsxs("div",{className:"bg-muted rounded-lg p-3",children:[S.jsx("p",{className:"text-sm font-mono text-muted-foreground mb-2",children:"Example:"}),S.jsxs("div",{className:"flex items-center gap-2",children:[S.jsx("code",{className:"text-xs bg-background px-2 py-1 rounded flex-1 truncate",children:p}),S.jsx(xs,{size:"sm",variant:"outline",onClick:()=>x(p),className:"shrink-0",children:S.jsx(Up,{className:"w-3 h-3"})})]})]}),S.jsx(xs,{variant:"outline",size:"sm",asChild:!0,className:"w-full",children:S.jsxs("a",{href:p,target:"_blank",rel:"noopener noreferrer",children:[S.jsx(Uc,{className:"w-3 h-3 mr-1"}),"Try it"]})})]})]})}function Mm({totalRequests:a}){return S.jsxs("div",{className:"relative group",children:[S.jsx("div",{className:"absolute -inset-1 bg-gradient-to-r from-primary via-blue-500 to-purple-500 rounded-2xl blur opacity-25 group-hover:opacity-40 transition duration-500"}),S.jsxs("div",{className:"relative bg-gradient-to-br from-card via-card to-muted/30 rounded-2xl px-8 py-6 shadow-xl",children:[S.jsxs("div",{className:"absolute inset-0 overflow-hidden rounded-2xl opacity-5",children:[S.jsx("div",{className:"stat-wave"}),S.jsx("div",{className:"stat-wave",style:{animationDelay:"1s"}})]}),S.jsxs("div",{className:"relative flex items-center gap-6",children:[S.jsxs("div",{className:"relative",children:[S.jsx("div",{className:"absolute inset-0 bg-primary/20 rounded-full animate-ping",style:{animationDuration:"2s"}}),S.jsx("div",{className:"relative flex items-center justify-center w-16 h-16 bg-gradient-to-br from-primary/10 to-blue-500/10 rounded-full border-2 border-primary/20",children:S.jsx(Fp,{className:"w-7 h-7",color:"#673ab7"})})]}),S.jsxs("div",{className:"flex-1",children:[S.jsxs("div",{className:"flex items-baseline gap-2 mb-1",children:[S.jsx("span",{className:"text-sm text-muted-foreground",children:"Total API Requests"}),S.jsx(Vc,{className:"w-3 h-3 text-green-500"})]}),S.jsxs("div",{className:"flex items-baseline gap-3",children:[S.jsx("span",{className:"text-4xl font-bold bg-gradient-to-r from-primary via-blue-600 to-purple-600 bg-clip-text text-transparent",children:a.toLocaleString()}),S.jsx("span",{className:"text-xs text-muted-foreground px-2 py-1 bg-muted rounded-full",children:"Live"})]})]})]})]}),S.jsx("style",{children:` + @keyframes wave { + 0% { + transform: translateX(-100%) translateY(-50%) rotate(45deg); + } + 100% { + transform: translateX(200%) translateY(-50%) rotate(45deg); + } + } + .stat-wave { + position: absolute; + width: 200%; + height: 200%; + background: linear-gradient(90deg, transparent, rgba(59, 130, 246, 0.3), transparent); + animation: wave 3s infinite linear; + } + `})]})}function Im({contact:a,privacy:c}){return S.jsx("div",{className:"border rounded-xl p-6 bg-muted/30",children:S.jsxs("div",{className:"grid md:grid-cols-2 gap-8",children:[S.jsxs("div",{children:[S.jsxs("h3",{className:"text-sm font-medium mb-4 flex items-center gap-2 text-muted-foreground",children:[S.jsx(yc,{className:"w-4 h-4"}),"Contact"]}),S.jsxs("div",{className:"space-y-2 text-sm",children:[S.jsxs("a",{href:`https://${a.homepage}`,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-2 text-foreground/80 hover:text-foreground transition-colors",children:[S.jsx(Hp,{className:"w-4 h-4"}),a.homepage]}),S.jsxs("a",{href:`mailto:${a.email}`,className:"flex items-center gap-2 text-foreground/80 hover:text-foreground transition-colors",children:[S.jsx(Qp,{className:"w-4 h-4"}),a.email]}),S.jsxs("a",{href:a.telegram,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-2 text-foreground/80 hover:text-foreground transition-colors",children:[S.jsx(yc,{className:"w-4 h-4"}),"Telegram"]})]})]}),S.jsxs("div",{children:[S.jsxs("h3",{className:"text-sm font-medium mb-4 flex items-center gap-2 text-muted-foreground",children:[S.jsx(Kp,{className:"w-4 h-4"}),"Privacy"]}),S.jsx("p",{className:"text-sm text-foreground/70 leading-relaxed",children:c})]})]})})}var Dm=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Om=Dm.reduce((a,c)=>{const s=Nc(`Primitive.${c}`),p=we.forwardRef((w,x)=>{const{asChild:_,...M}=w,z=_?s:c;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),S.jsx(z,{...M,ref:x})});return p.displayName=`Primitive.${c}`,{...a,[c]:p}},{}),Am="Separator",kc="horizontal",Fm=["horizontal","vertical"],$c=we.forwardRef((a,c)=>{const{decorative:s,orientation:p=kc,...w}=a,x=Bm(p)?p:kc,M=s?{role:"none"}:{"aria-orientation":x==="vertical"?x:void 0,role:"separator"};return S.jsx(Om.div,{"data-orientation":x,...M,...w,ref:c})});$c.displayName=Am;function Bm(a){return Fm.includes(a)}var Um=$c;function Sc({className:a,orientation:c="horizontal",decorative:s=!0,...p}){return S.jsx(Um,{"data-slot":"separator-root",decorative:s,orientation:c,className:Er("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",a),...p})}var Vm=(a,c,s,p,w,x,_,M)=>{let z=document.documentElement,P=["light","dark"];function U(se){(Array.isArray(a)?a:[a]).forEach(J=>{let le=J==="class",re=le&&x?w.map(ee=>x[ee]||ee):w;le?(z.classList.remove(...re),z.classList.add(x&&x[se]?x[se]:se)):z.setAttribute(J,se)}),m(se)}function m(se){M&&P.includes(se)&&(z.style.colorScheme=se)}function G(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(p)U(p);else try{let se=localStorage.getItem(c)||s,J=_&&se==="system"?G():se;U(J)}catch{}},$m=we.createContext(void 0),Hm={setTheme:a=>{},themes:[]},Wm=()=>{var a;return(a=we.useContext($m))!=null?a:Hm};we.memo(({forcedTheme:a,storageKey:c,attribute:s,enableSystem:p,enableColorScheme:w,defaultTheme:x,value:_,themes:M,nonce:z,scriptProps:P})=>{let U=JSON.stringify([s,c,x,a,M,_,p,w]).slice(1,-1);return we.createElement("script",{...P,suppressHydrationWarning:!0,nonce:typeof window>"u"?z:"",dangerouslySetInnerHTML:{__html:`(${Vm.toString()})(${U})`}})});const Qm=({...a})=>{const{theme:c="system"}=Wm();return S.jsx(bm,{theme:c,className:"toaster group",style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)"},...a})},Ym={service:{name:"rest-api.ir",version:"0.1.5",description:"A simple public REST API providing useful endpoints like time, IP, and system info β€” built with Rust for learning, testing, and fun.",provider:"Amir Hossein Habibi"},endpoints:[{title:"UTC Time",path:"/time",desc:"Get the current UTC time ⏰",example:"https://rest-api.ir/api/v1/time"},{title:"Timezone",path:"/time/{tz}",desc:"Localized time for any timezone 🌐",example:"https://rest-api.ir/api/v1/time/asia/tehran"},{title:"IP Address",path:"/ip",desc:"Discover your public IP address 🌍",example:"https://rest-api.ir/api/v1/ip"},{title:"Countries",path:"/country",desc:"Explore countries",example:"https://rest-api.ir/api/v1/country"},{title:"Countries Full",path:"/country/full",desc:"Explore countries, currencies, languages & flags πŸ—ΊοΈ",example:"https://rest-api.ir/api/v1/country/full"}],usage:{total_requests:799,by_endpoint:{"/health":2,"/time":3,"/time/asia/tehran":1,"/ip":18,"/country":2,"/country/full":33}},privacy:"We log minimal request metadata for abuse prevention and aggregate analytics.",contact:{homepage:"habibi-dev.ir",email:"habibi.dev@gmail.com",telegram:"https://t.me/habibi_dev"},links:{health:"https://rest-api.ir/health"}};function Gm(){const a=window.options||Ym,c=s=>a.usage.by_endpoint[s]||0;return S.jsxs("div",{className:"min-h-screen bg-gradient-to-br from-background via-background to-muted/20",children:[S.jsxs("div",{className:"container mx-auto px-4 py-12 max-w-6xl",children:[S.jsx(Jp,{name:a.service.name,version:a.service.version,description:a.service.description,provider:a.service.provider,healthLink:a.links.health}),S.jsxs("div",{className:"space-y-12",children:[S.jsx("div",{className:"flex justify-center",children:S.jsx(Mm,{totalRequests:a.usage.total_requests})}),S.jsx(Sc,{}),S.jsxs("section",{children:[S.jsxs("div",{className:"text-center mb-8",children:[S.jsx("h2",{className:"text-3xl mb-4",children:"Available Endpoints"}),S.jsx("p",{className:"text-muted-foreground max-w-2xl mx-auto",children:"Explore our collection of useful REST API endpoints. Each endpoint is designed to be simple, fast, and reliable."})]}),S.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-6",children:a.endpoints.map((s,p)=>S.jsx(Lm,{title:s.title,path:s.path,desc:s.desc,example:s.example,usageCount:c(s.path)},p))})]}),S.jsx(Sc,{}),S.jsx("section",{children:S.jsx(Im,{contact:a.contact,privacy:a.privacy})})]}),S.jsx("footer",{className:"mt-16 pt-8 border-t text-center text-sm text-muted-foreground",children:S.jsxs("p",{children:["Built with ❀️ by ",a.service.provider," β€’ Powered by Rust"]})})]}),S.jsx(Qm,{})]})}Wf.createRoot(document.getElementById("root")).render(S.jsx(Gm,{})); diff --git a/src/services/health/mod.rs b/src/services/health/mod.rs index bce9b80..ad43dca 100644 --- a/src/services/health/mod.rs +++ b/src/services/health/mod.rs @@ -1,4 +1,4 @@ -mod response; +pub(crate) mod response; use crate::services::AppState; use axum::Router; @@ -7,7 +7,7 @@ use response::{fallback, health_check, init}; pub fn routers(state: AppState) -> Router { Router::new() - .route("/", get(init)) + .route("/info", get(init)) .route("/health", get(health_check)) .fallback(fallback) .with_state(state) diff --git a/src/services/health/response.rs b/src/services/health/response.rs index 2c5c3ea..defb9e4 100644 --- a/src/services/health/response.rs +++ b/src/services/health/response.rs @@ -39,7 +39,7 @@ pub async fn health_check() -> api_response::Json }))) } -async fn collect_endpoint_stats(state: &AppState) -> EndpointStats { +pub async fn collect_endpoint_stats(state: &AppState) -> EndpointStats { let total = state.stats_cache.total_hits().await; let (health, time, tehran, ip, country, country_full) = tokio::join!( @@ -125,12 +125,12 @@ fn build_endpoints_list() -> serde_json::Value { ]) } -struct EndpointStats { - total: u64, - health: Option, - time: Option, - tehran: Option, - ip: Option, - country: Option, - country_full: Option, +pub struct EndpointStats { + pub total: u64, + pub health: Option, + pub time: Option, + pub tehran: Option, + pub ip: Option, + pub country: Option, + pub country_full: Option, } diff --git a/src/services/index/mod.rs b/src/services/index/mod.rs new file mode 100644 index 0000000..6a95ec6 --- /dev/null +++ b/src/services/index/mod.rs @@ -0,0 +1,44 @@ +use crate::utility::url; +use askama::Template; +use axum::response::{Html, IntoResponse, Response}; +use std::env; +use axum::extract::State; +use crate::services::AppState; +use crate::services::health::response::EndpointStats; + +#[derive(Template)] +#[template(path = "index.html")] +struct IndexTemplate { + title: String, + version: String, + url: String, + domain: String, + stats: EndpointStats , +} + +impl IntoResponse for IndexTemplate { + fn into_response(self) -> Response { + match self.render() { + Ok(html) => Html(html).into_response(), + Err(_) => ( + http::StatusCode::INTERNAL_SERVER_ERROR, + "Failed to render template", + ) + .into_response(), + } + } +} + +pub async fn index_handler(State(state): State) -> impl IntoResponse { + let domain = env::var("APP_FINAL_DOMAIN").unwrap_or(String::from("localhost")); + const VERSION: &str = env!("CARGO_PKG_VERSION"); + let stats = crate::services::health::response::collect_endpoint_stats(&state).await; + + IndexTemplate { + title: "rest-api".into(), + version: VERSION.into(), + url: url("/"), + stats, + domain, + } +} diff --git a/src/services/mod.rs b/src/services/mod.rs index 3073f94..40c71c1 100644 --- a/src/services/mod.rs +++ b/src/services/mod.rs @@ -5,6 +5,7 @@ mod ip; pub mod jobs; pub mod routes; mod time; +mod index; pub use cache::StatsCache; use sea_orm::DatabaseConnection; diff --git a/src/services/routes.rs b/src/services/routes.rs index 4ae83ff..688a620 100644 --- a/src/services/routes.rs +++ b/src/services/routes.rs @@ -1,11 +1,22 @@ use crate::middleware::visit_event; +use crate::services::index::index_handler; use crate::services::{AppState, country, health, ip, time}; use axum::routing::{MethodRouter, get}; use axum::{Router, middleware}; +use std::path::PathBuf; +use tower_http::services::fs::ServeDir; pub struct Routes; impl Routes { pub fn routes(app_state: AppState) -> Router { + let assets_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("src/assets"); + + // routes that need state + let stateful_routes = Router::new() + .route("/", get(index_handler)) + .with_state(app_state.clone()); + + // routes that don't need state or have their own state let api = Router::new() .nest("/time", Self::generate(time::routers_list())) .nest("/ip", Self::generate(ip::routers_list())) @@ -13,19 +24,21 @@ impl Routes { .route("/flags/{code}", get(country::flag::get_flag)); Router::new() + .merge(stateful_routes) .merge(health::routers(app_state.clone())) + .nest_service("/assets", ServeDir::new(assets_path)) .nest("/api/v1", api) .route_layer(middleware::from_fn_with_state( app_state.clone(), visit_event, )) } + pub fn generate(routers_list: Vec<(&str, MethodRouter)>) -> Router { - let routers = routers_list; let mut app = Router::new(); - for router in routers { - app = app.route(router.0, router.1); + for (path, method_router) in routers_list { + app = app.route(path, method_router); } app } -} +} \ No newline at end of file diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..ecb12aa --- /dev/null +++ b/templates/index.html @@ -0,0 +1,77 @@ + + + + + + {{ title }} + + + + + + +
+ + + \ No newline at end of file From 407ab518f149e240022b53149b41f56b78759fc3 Mon Sep 17 00:00:00 2001 From: Amir Hossein Habibi Date: Wed, 8 Oct 2025 22:28:06 +0330 Subject: [PATCH 3/3] =?UTF-8?q?=F0=9F=9A=80=20chore(Cargo):=20Bump=20proje?= =?UTF-8?q?ct=20version=20to=200.2.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9b05aeb..7bb44ee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2140,7 +2140,7 @@ dependencies = [ [[package]] name = "rust_rest_api" -version = "0.1.5" +version = "0.2.0" dependencies = [ "askama", "axum", diff --git a/Cargo.toml b/Cargo.toml index 64dfa59..25f55f1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rust_rest_api" -version = "0.1.5" +version = "0.2.0" edition = "2024" license = "MIT" authors = ["Habibi-Dev"]