diff --git a/README.md b/README.md index a997fa2..d2e7761 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# React + Vite +# React + TypeScript + Vite This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. @@ -13,5 +13,61 @@ The React Compiler is not enabled on this template because of its impact on dev ## Expanding the ESLint configuration -If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project. -"# POS" +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + + // Remove tseslint.configs.recommended and replace with this + tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + tseslint.configs.stylisticTypeChecked, + + // Other configs... + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + // Enable lint rules for React + reactX.configs['recommended-typescript'], + // Enable lint rules for React DOM + reactDom.configs.recommended, + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` diff --git a/dist/assets/index-B9I6omMk.css b/dist/assets/index-B9I6omMk.css new file mode 100644 index 0000000..ef88316 --- /dev/null +++ b/dist/assets/index-B9I6omMk.css @@ -0,0 +1 @@ +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-orange-50:oklch(98% .016 73.684);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-200:oklch(90.1% .076 70.697);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-orange-700:oklch(55.3% .195 38.402);--color-orange-800:oklch(47% .157 37.304);--color-orange-900:oklch(40.8% .123 38.172);--color-green-100:oklch(96.2% .044 156.743);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-900:oklch(39.3% .095 152.535);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-900:oklch(38.1% .176 304.987);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{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}::-webkit-calendar-picker-indicator{line-height:1}:-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}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.-top-1{top:calc(var(--spacing)*-1)}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-full{top:100%}.-right-1{right:calc(var(--spacing)*-1)}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.bottom-0{bottom:calc(var(--spacing)*0)}.left-0{left:calc(var(--spacing)*0)}.left-3{left:calc(var(--spacing)*3)}.left-full{left:100%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[9999\]{z-index:9999}.col-span-2{grid-column:span 2/span 2}.col-span-full{grid-column:1/-1}.mx-auto{margin-inline:auto}.my-2{margin-block:calc(var(--spacing)*2)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mr-1{margin-right:calc(var(--spacing)*1)}.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-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.h-4{height:calc(var(--spacing)*4)}.h-8{height:calc(var(--spacing)*8)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-40{height:calc(var(--spacing)*40)}.h-64{height:calc(var(--spacing)*64)}.h-72{height:calc(var(--spacing)*72)}.h-80{height:calc(var(--spacing)*80)}.h-96{height:calc(var(--spacing)*96)}.h-\[85vh\]{height:85vh}.h-\[calc\(100vh-64px\)\]{height:calc(100vh - 64px)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[90vh\]{max-height:90vh}.min-h-\[500px\]{min-height:500px}.min-h-screen{min-height:100vh}.w-4{width:calc(var(--spacing)*4)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-64{width:calc(var(--spacing)*64)}.w-full{width:100%}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\[2\.5rem\]{min-width:2.5rem}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.list-disc{list-style-type:disc}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing)*1)}.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)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-slate-100>:not(:last-child)){border-color:var(--color-slate-100)}.self-center{align-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-l-lg{border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.rounded-r-lg{border-top-right-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.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-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-black{border-color:var(--color-black)}.border-blue-100{border-color:var(--color-blue-100)}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-600{border-color:var(--color-blue-600)}.border-orange-300{border-color:var(--color-orange-300)}.border-red-100{border-color:var(--color-red-100)}.border-red-200{border-color:var(--color-red-200)}.border-slate-100{border-color:var(--color-slate-100)}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-300{border-color:var(--color-slate-300)}.border-transparent{border-color:#0000}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-50\/50{background-color:#eff6ff80}@supports (color:color-mix(in lab,red,red)){.bg-blue-50\/50{background-color:color-mix(in oklab,var(--color-blue-50)50%,transparent)}}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-600{background-color:var(--color-green-600)}.bg-orange-50{background-color:var(--color-orange-50)}.bg-orange-100{background-color:var(--color-orange-100)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-200{background-color:var(--color-slate-200)}.bg-slate-800{background-color:var(--color-slate-800)}.bg-slate-900{background-color:var(--color-slate-900)}.bg-white{background-color:var(--color-white)}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-10{padding:calc(var(--spacing)*10)}.p-12{padding:calc(var(--spacing)*12)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.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-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-4{padding-top:calc(var(--spacing)*4)}.pr-3{padding-right:calc(var(--spacing)*3)}.pr-4{padding-right:calc(var(--spacing)*4)}.pr-8{padding-right:calc(var(--spacing)*8)}.pr-14{padding-right:calc(var(--spacing)*14)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-10{padding-bottom:calc(var(--spacing)*10)}.pb-24{padding-bottom:calc(var(--spacing)*24)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-5{padding-left:calc(var(--spacing)*5)}.pl-8{padding-left:calc(var(--spacing)*8)}.pl-10{padding-left:calc(var(--spacing)*10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.text-black{color:var(--color-black)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-orange-500{color:var(--color-orange-500)}.text-orange-600{color:var(--color-orange-600)}.text-orange-700{color:var(--color-orange-700)}.text-orange-800{color:var(--color-orange-800)}.text-purple-500{color:var(--color-purple-500)}.text-purple-600{color:var(--color-purple-600)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.placeholder-slate-400::placeholder{color:var(--color-slate-400)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-orange-100{--tw-ring-color:var(--color-orange-100)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,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,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-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))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}@media(hover:hover){.group-hover\:bg-blue-600:is(:where(.group):hover *){background-color:var(--color-blue-600)}.group-hover\:text-white:is(:where(.group):hover *){color:var(--color-white)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:bg-blue-50:hover{background-color:var(--color-blue-50)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-orange-50:hover{background-color:var(--color-orange-50)}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\:bg-slate-200:hover{background-color:var(--color-slate-200)}.hover\:bg-slate-700:hover{background-color:var(--color-slate-700)}.hover\:text-blue-600:hover{color:var(--color-blue-600)}.hover\:text-red-500:hover{color:var(--color-red-500)}.hover\:text-slate-700:hover{color:var(--color-slate-700)}.hover\:text-slate-800:hover{color:var(--color-slate-800)}.hover\:underline:hover{text-decoration-line:underline}.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)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:border-blue-500:focus{border-color:var(--color-blue-500)}.focus\:border-transparent:focus{border-color:#0000}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-red-500:focus{--tw-ring-color:var(--color-red-500)}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-slate-300:disabled{background-color:var(--color-slate-300)}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:w-48{width:calc(var(--spacing)*48)}.sm\:w-64{width:calc(var(--spacing)*64)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}}@media(min-width:48rem){.md\:relative{position:relative}.md\:mx-0{margin-inline:calc(var(--spacing)*0)}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-full{height:100%}.md\:h-screen{height:100vh}.md\:w-96{width:calc(var(--spacing)*96)}.md\:w-auto{width:auto}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:p-8{padding:calc(var(--spacing)*8)}.md\:pb-4{padding-bottom:calc(var(--spacing)*4)}}@media(min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:w-auto{width:auto}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}}@media(prefers-color-scheme:dark){:where(.dark\:divide-slate-700>:not(:last-child)){border-color:var(--color-slate-700)}.dark\:border-blue-800{border-color:var(--color-blue-800)}.dark\:border-blue-900\/30{border-color:#1c398e4d}@supports (color:color-mix(in lab,red,red)){.dark\:border-blue-900\/30{border-color:color-mix(in oklab,var(--color-blue-900)30%,transparent)}}.dark\:border-orange-500\/50{border-color:#fe6e0080}@supports (color:color-mix(in lab,red,red)){.dark\:border-orange-500\/50{border-color:color-mix(in oklab,var(--color-orange-500)50%,transparent)}}.dark\:border-red-900{border-color:var(--color-red-900)}.dark\:border-red-900\/50{border-color:#82181a80}@supports (color:color-mix(in lab,red,red)){.dark\:border-red-900\/50{border-color:color-mix(in oklab,var(--color-red-900)50%,transparent)}}.dark\:border-slate-600{border-color:var(--color-slate-600)}.dark\:border-slate-700{border-color:var(--color-slate-700)}.dark\:border-slate-700\/50{border-color:#31415880}@supports (color:color-mix(in lab,red,red)){.dark\:border-slate-700\/50{border-color:color-mix(in oklab,var(--color-slate-700)50%,transparent)}}.dark\:bg-blue-900\/10{background-color:#1c398e1a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-900\/10{background-color:color-mix(in oklab,var(--color-blue-900)10%,transparent)}}.dark\:bg-blue-900\/30{background-color:#1c398e4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-900\/30{background-color:color-mix(in oklab,var(--color-blue-900)30%,transparent)}}.dark\:bg-green-900\/30{background-color:#0d542b4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-green-900\/30{background-color:color-mix(in oklab,var(--color-green-900)30%,transparent)}}.dark\:bg-orange-900\/20{background-color:#7e2a0c33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-orange-900\/20{background-color:color-mix(in oklab,var(--color-orange-900)20%,transparent)}}.dark\:bg-orange-900\/30{background-color:#7e2a0c4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-orange-900\/30{background-color:color-mix(in oklab,var(--color-orange-900)30%,transparent)}}.dark\:bg-purple-900\/30{background-color:#59168b4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-purple-900\/30{background-color:color-mix(in oklab,var(--color-purple-900)30%,transparent)}}.dark\:bg-red-900\/20{background-color:#82181a33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-900\/20{background-color:color-mix(in oklab,var(--color-red-900)20%,transparent)}}.dark\:bg-red-900\/30{background-color:#82181a4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-900\/30{background-color:color-mix(in oklab,var(--color-red-900)30%,transparent)}}.dark\:bg-slate-700{background-color:var(--color-slate-700)}.dark\:bg-slate-700\/30{background-color:#3141584d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-slate-700\/30{background-color:color-mix(in oklab,var(--color-slate-700)30%,transparent)}}.dark\:bg-slate-700\/50{background-color:#31415880}@supports (color:color-mix(in lab,red,red)){.dark\:bg-slate-700\/50{background-color:color-mix(in oklab,var(--color-slate-700)50%,transparent)}}.dark\:bg-slate-800{background-color:var(--color-slate-800)}.dark\:bg-slate-800\/50{background-color:#1d293d80}@supports (color:color-mix(in lab,red,red)){.dark\:bg-slate-800\/50{background-color:color-mix(in oklab,var(--color-slate-800)50%,transparent)}}.dark\:bg-slate-800\/80{background-color:#1d293dcc}@supports (color:color-mix(in lab,red,red)){.dark\:bg-slate-800\/80{background-color:color-mix(in oklab,var(--color-slate-800)80%,transparent)}}.dark\:bg-slate-900{background-color:var(--color-slate-900)}.dark\:bg-slate-900\/50{background-color:#0f172b80}@supports (color:color-mix(in lab,red,red)){.dark\:bg-slate-900\/50{background-color:color-mix(in oklab,var(--color-slate-900)50%,transparent)}}.dark\:text-blue-400{color:var(--color-blue-400)}.dark\:text-green-400{color:var(--color-green-400)}.dark\:text-orange-200{color:var(--color-orange-200)}.dark\:text-orange-400{color:var(--color-orange-400)}.dark\:text-purple-400{color:var(--color-purple-400)}.dark\:text-red-200{color:var(--color-red-200)}.dark\:text-red-400{color:var(--color-red-400)}.dark\:text-slate-200{color:var(--color-slate-200)}.dark\:text-slate-300{color:var(--color-slate-300)}.dark\:text-slate-400{color:var(--color-slate-400)}.dark\:text-white{color:var(--color-white)}.dark\:text-white\/60{color:#fff9}@supports (color:color-mix(in lab,red,red)){.dark\:text-white\/60{color:color-mix(in oklab,var(--color-white)60%,transparent)}}.dark\:ring-orange-900\/20{--tw-ring-color:#7e2a0c33}@supports (color:color-mix(in lab,red,red)){.dark\:ring-orange-900\/20{--tw-ring-color:color-mix(in oklab,var(--color-orange-900)20%,transparent)}}@media(hover:hover){.dark\:hover\:bg-blue-900\/30:hover{background-color:#1c398e4d}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-blue-900\/30:hover{background-color:color-mix(in oklab,var(--color-blue-900)30%,transparent)}}.dark\:hover\:bg-orange-900\/30:hover{background-color:#7e2a0c4d}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-orange-900\/30:hover{background-color:color-mix(in oklab,var(--color-orange-900)30%,transparent)}}.dark\:hover\:bg-red-900\/20:hover{background-color:#82181a33}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-red-900\/20:hover{background-color:color-mix(in oklab,var(--color-red-900)20%,transparent)}}.dark\:hover\:bg-red-900\/30:hover{background-color:#82181a4d}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-red-900\/30:hover{background-color:color-mix(in oklab,var(--color-red-900)30%,transparent)}}.dark\:hover\:bg-slate-600:hover{background-color:var(--color-slate-600)}.dark\:hover\:bg-slate-700:hover{background-color:var(--color-slate-700)}.dark\:hover\:bg-slate-700\/30:hover{background-color:#3141584d}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-slate-700\/30:hover{background-color:color-mix(in oklab,var(--color-slate-700)30%,transparent)}}.dark\:hover\:bg-slate-700\/50:hover{background-color:#31415880}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-slate-700\/50:hover{background-color:color-mix(in oklab,var(--color-slate-700)50%,transparent)}}.dark\:hover\:text-slate-200:hover{color:var(--color-slate-200)}.dark\:hover\:text-slate-300:hover{color:var(--color-slate-300)}.dark\:hover\:text-white:hover{color:var(--color-white)}}.dark\:disabled\:bg-slate-700:disabled{background-color:var(--color-slate-700)}}@media print{.print\:block{display:block}}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";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-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}} diff --git a/dist/assets/index-bgBs8EDK.js b/dist/assets/index-bgBs8EDK.js new file mode 100644 index 0000000..aaec962 --- /dev/null +++ b/dist/assets/index-bgBs8EDK.js @@ -0,0 +1,109 @@ +function lD(e,t){for(var n=0;nr[l]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const o of l)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(l){const o={};return l.integrity&&(o.integrity=l.integrity),l.referrerPolicy&&(o.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?o.credentials="include":l.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(l){if(l.ep)return;l.ep=!0;const o=n(l);fetch(l.href,o)}})();function ea(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Jm={exports:{}},Jo={};var sS;function oD(){if(sS)return Jo;sS=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function n(r,l,o){var s=null;if(o!==void 0&&(s=""+o),l.key!==void 0&&(s=""+l.key),"key"in l){o={};for(var f in l)f!=="key"&&(o[f]=l[f])}else o=l;return l=o.ref,{$$typeof:e,type:r,key:s,ref:l!==void 0?l:null,props:o}}return Jo.Fragment=t,Jo.jsx=n,Jo.jsxs=n,Jo}var cS;function uD(){return cS||(cS=1,Jm.exports=oD()),Jm.exports}var y=uD(),ev={exports:{}},je={};var fS;function sD(){if(fS)return je;fS=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),l=Symbol.for("react.profiler"),o=Symbol.for("react.consumer"),s=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),h=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),x=Symbol.iterator;function w(D){return D===null||typeof D!="object"?null:(D=x&&D[x]||D["@@iterator"],typeof D=="function"?D:null)}var j={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},S=Object.assign,O={};function E(D,X,re){this.props=D,this.context=X,this.refs=O,this.updater=re||j}E.prototype.isReactComponent={},E.prototype.setState=function(D,X){if(typeof D!="object"&&typeof D!="function"&&D!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,D,X,"setState")},E.prototype.forceUpdate=function(D){this.updater.enqueueForceUpdate(this,D,"forceUpdate")};function N(){}N.prototype=E.prototype;function k(D,X,re){this.props=D,this.context=X,this.refs=O,this.updater=re||j}var T=k.prototype=new N;T.constructor=k,S(T,E.prototype),T.isPureReactComponent=!0;var C=Array.isArray;function M(){}var R={H:null,A:null,T:null,S:null},V=Object.prototype.hasOwnProperty;function H(D,X,re){var le=re.ref;return{$$typeof:e,type:D,key:X,ref:le!==void 0?le:null,props:re}}function Z(D,X){return H(D.type,X,D.props)}function G(D){return typeof D=="object"&&D!==null&&D.$$typeof===e}function L(D){var X={"=":"=0",":":"=2"};return"$"+D.replace(/[=:]/g,function(re){return X[re]})}var ne=/\/+/g;function oe(D,X){return typeof D=="object"&&D!==null&&D.key!=null?L(""+D.key):X.toString(36)}function he(D){switch(D.status){case"fulfilled":return D.value;case"rejected":throw D.reason;default:switch(typeof D.status=="string"?D.then(M,M):(D.status="pending",D.then(function(X){D.status==="pending"&&(D.status="fulfilled",D.value=X)},function(X){D.status==="pending"&&(D.status="rejected",D.reason=X)})),D.status){case"fulfilled":return D.value;case"rejected":throw D.reason}}throw D}function I(D,X,re,le,pe){var xe=typeof D;(xe==="undefined"||xe==="boolean")&&(D=null);var ge=!1;if(D===null)ge=!0;else switch(xe){case"bigint":case"string":case"number":ge=!0;break;case"object":switch(D.$$typeof){case e:case t:ge=!0;break;case m:return ge=D._init,I(ge(D._payload),X,re,le,pe)}}if(ge)return pe=pe(D),ge=le===""?"."+oe(D,0):le,C(pe)?(re="",ge!=null&&(re=ge.replace(ne,"$&/")+"/"),I(pe,X,re,"",function(we){return we})):pe!=null&&(G(pe)&&(pe=Z(pe,re+(pe.key==null||D&&D.key===pe.key?"":(""+pe.key).replace(ne,"$&/")+"/")+ge)),X.push(pe)),1;ge=0;var ft=le===""?".":le+":";if(C(D))for(var W=0;W>>1,be=I[ue];if(0>>1;uel(re,ie))lel(pe,re)?(I[ue]=pe,I[le]=ie,ue=le):(I[ue]=re,I[X]=ie,ue=X);else if(lel(pe,ie))I[ue]=pe,I[le]=ie,ue=le;else break e}}return J}function l(I,J){var ie=I.sortIndex-J.sortIndex;return ie!==0?ie:I.id-J.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var s=Date,f=s.now();e.unstable_now=function(){return s.now()-f}}var d=[],h=[],m=1,p=null,x=3,w=!1,j=!1,S=!1,O=!1,E=typeof setTimeout=="function"?setTimeout:null,N=typeof clearTimeout=="function"?clearTimeout:null,k=typeof setImmediate<"u"?setImmediate:null;function T(I){for(var J=n(h);J!==null;){if(J.callback===null)r(h);else if(J.startTime<=I)r(h),J.sortIndex=J.expirationTime,t(d,J);else break;J=n(h)}}function C(I){if(S=!1,T(I),!j)if(n(d)!==null)j=!0,M||(M=!0,L());else{var J=n(h);J!==null&&he(C,J.startTime-I)}}var M=!1,R=-1,V=5,H=-1;function Z(){return O?!0:!(e.unstable_now()-HI&&Z());){var ue=p.callback;if(typeof ue=="function"){p.callback=null,x=p.priorityLevel;var be=ue(p.expirationTime<=I);if(I=e.unstable_now(),typeof be=="function"){p.callback=be,T(I),J=!0;break t}p===n(d)&&r(d),T(I)}else r(d);p=n(d)}if(p!==null)J=!0;else{var D=n(h);D!==null&&he(C,D.startTime-I),J=!1}}break e}finally{p=null,x=ie,w=!1}J=void 0}}finally{J?L():M=!1}}}var L;if(typeof k=="function")L=function(){k(G)};else if(typeof MessageChannel<"u"){var ne=new MessageChannel,oe=ne.port2;ne.port1.onmessage=G,L=function(){oe.postMessage(null)}}else L=function(){E(G,0)};function he(I,J){R=E(function(){I(e.unstable_now())},J)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(I){I.callback=null},e.unstable_forceFrameRate=function(I){0>I||125ue?(I.sortIndex=ie,t(h,I),n(d)===null&&I===n(h)&&(S?(N(R),R=-1):S=!0,he(C,ie-ue))):(I.sortIndex=be,t(d,I),j||w||(j=!0,M||(M=!0,L()))),I},e.unstable_shouldYield=Z,e.unstable_wrapCallback=function(I){var J=x;return function(){var ie=x;x=J;try{return I.apply(this,arguments)}finally{x=ie}}}})(rv)),rv}var mS;function hD(){return mS||(mS=1,nv.exports=dD()),nv.exports}var av={exports:{}},Zt={};var vS;function mD(){if(vS)return Zt;vS=1;var e=$l();function t(d){var h="https://react.dev/errors/"+d;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),av.exports=mD(),av.exports}var yS;function vD(){if(yS)return eu;yS=1;var e=hD(),t=$l(),n=aE();function r(a){var i="https://react.dev/errors/"+a;if(1be||(a.current=ue[be],ue[be]=null,be--)}function re(a,i){be++,ue[be]=a.current,a.current=i}var le=D(null),pe=D(null),xe=D(null),ge=D(null);function ft(a,i){switch(re(xe,i),re(pe,a),re(le,null),i.nodeType){case 9:case 11:a=(a=i.documentElement)&&(a=a.namespaceURI)?Mw(a):0;break;default:if(a=i.tagName,i=i.namespaceURI)i=Mw(i),a=Pw(i,a);else switch(a){case"svg":a=1;break;case"math":a=2;break;default:a=0}}X(le),re(le,a)}function W(){X(le),X(pe),X(xe)}function we(a){a.memoizedState!==null&&re(ge,a);var i=le.current,u=Pw(i,a.type);i!==u&&(re(pe,a),re(le,u))}function _e(a){pe.current===a&&(X(le),X(pe)),ge.current===a&&(X(ge),Fo._currentValue=ie)}var ae,kt;function te(a){if(ae===void 0)try{throw Error()}catch(u){var i=u.stack.trim().match(/\n( *(at )?)/);ae=i&&i[1]||"",kt=-1)":-1v||P[c]!==q[v]){var F=` +`+P[c].replace(" at new "," at ");return a.displayName&&F.includes("")&&(F=F.replace("",a.displayName)),F}while(1<=c&&0<=v);break}}}finally{Se=!1,Error.prepareStackTrace=u}return(u=a?a.displayName||a.name:"")?te(u):""}function Ze(a,i){switch(a.tag){case 26:case 27:case 5:return te(a.type);case 16:return te("Lazy");case 13:return a.child!==i&&i!==null?te("Suspense Fallback"):te("Suspense");case 19:return te("SuspenseList");case 0:case 15:return ke(a.type,!1);case 11:return ke(a.type.render,!1);case 1:return ke(a.type,!0);case 31:return te("Activity");default:return""}}function Nt(a){try{var i="",u=null;do i+=Ze(a,u),u=a,a=a.return;while(a);return i}catch(c){return` +Error generating stack: `+c.message+` +`+c.stack}}var Xa=Object.prototype.hasOwnProperty,Fa=e.unstable_scheduleCallback,io=e.unstable_cancelCallback,ls=e.unstable_shouldYield,IT=e.unstable_requestPaint,bn=e.unstable_now,UT=e.unstable_getCurrentPriorityLevel,cb=e.unstable_ImmediatePriority,fb=e.unstable_UserBlockingPriority,os=e.unstable_NormalPriority,qT=e.unstable_LowPriority,db=e.unstable_IdlePriority,$T=e.log,HT=e.unstable_setDisableYieldValue,lo=null,xn=null;function ua(a){if(typeof $T=="function"&&HT(a),xn&&typeof xn.setStrictMode=="function")try{xn.setStrictMode(lo,a)}catch{}}var wn=Math.clz32?Math.clz32:YT,KT=Math.log,VT=Math.LN2;function YT(a){return a>>>=0,a===0?32:31-(KT(a)/VT|0)|0}var us=256,ss=262144,cs=4194304;function Za(a){var i=a&42;if(i!==0)return i;switch(a&-a){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:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return a&261888;case 262144:case 524288:case 1048576:case 2097152:return a&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return a&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return a}}function fs(a,i,u){var c=a.pendingLanes;if(c===0)return 0;var v=0,g=a.suspendedLanes,A=a.pingedLanes;a=a.warmLanes;var _=c&134217727;return _!==0?(c=_&~g,c!==0?v=Za(c):(A&=_,A!==0?v=Za(A):u||(u=_&~a,u!==0&&(v=Za(u))))):(_=c&~g,_!==0?v=Za(_):A!==0?v=Za(A):u||(u=c&~a,u!==0&&(v=Za(u)))),v===0?0:i!==0&&i!==v&&(i&g)===0&&(g=v&-v,u=i&-i,g>=u||g===32&&(u&4194048)!==0)?i:v}function oo(a,i){return(a.pendingLanes&~(a.suspendedLanes&~a.pingedLanes)&i)===0}function GT(a,i){switch(a){case 1:case 2:case 4:case 8:case 64:return i+250;case 16:case 32: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 i+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function hb(){var a=cs;return cs<<=1,(cs&62914560)===0&&(cs=4194304),a}function qd(a){for(var i=[],u=0;31>u;u++)i.push(a);return i}function uo(a,i){a.pendingLanes|=i,i!==268435456&&(a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0)}function XT(a,i,u,c,v,g){var A=a.pendingLanes;a.pendingLanes=u,a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0,a.expiredLanes&=u,a.entangledLanes&=u,a.errorRecoveryDisabledLanes&=u,a.shellSuspendCounter=0;var _=a.entanglements,P=a.expirationTimes,q=a.hiddenUpdates;for(u=A&~u;0"u")return null;try{return a.activeElement||a.body}catch{return a.body}}var eM=/[\n"\\]/g;function zn(a){return a.replace(eM,function(i){return"\\"+i.charCodeAt(0).toString(16)+" "})}function Gd(a,i,u,c,v,g,A,_){a.name="",A!=null&&typeof A!="function"&&typeof A!="symbol"&&typeof A!="boolean"?a.type=A:a.removeAttribute("type"),i!=null?A==="number"?(i===0&&a.value===""||a.value!=i)&&(a.value=""+Dn(i)):a.value!==""+Dn(i)&&(a.value=""+Dn(i)):A!=="submit"&&A!=="reset"||a.removeAttribute("value"),i!=null?Xd(a,A,Dn(i)):u!=null?Xd(a,A,Dn(u)):c!=null&&a.removeAttribute("value"),v==null&&g!=null&&(a.defaultChecked=!!g),v!=null&&(a.checked=v&&typeof v!="function"&&typeof v!="symbol"),_!=null&&typeof _!="function"&&typeof _!="symbol"&&typeof _!="boolean"?a.name=""+Dn(_):a.removeAttribute("name")}function Eb(a,i,u,c,v,g,A,_){if(g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"&&(a.type=g),i!=null||u!=null){if(!(g!=="submit"&&g!=="reset"||i!=null)){Yd(a);return}u=u!=null?""+Dn(u):"",i=i!=null?""+Dn(i):u,_||i===a.value||(a.value=i),a.defaultValue=i}c=c??v,c=typeof c!="function"&&typeof c!="symbol"&&!!c,a.checked=_?a.checked:!!c,a.defaultChecked=!!c,A!=null&&typeof A!="function"&&typeof A!="symbol"&&typeof A!="boolean"&&(a.name=A),Yd(a)}function Xd(a,i,u){i==="number"&&ms(a.ownerDocument)===a||a.defaultValue===""+u||(a.defaultValue=""+u)}function Ui(a,i,u,c){if(a=a.options,i){i={};for(var v=0;v"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Jd=!1;if(Sr)try{var ho={};Object.defineProperty(ho,"passive",{get:function(){Jd=!0}}),window.addEventListener("test",ho,ho),window.removeEventListener("test",ho,ho)}catch{Jd=!1}var ca=null,eh=null,ps=null;function Pb(){if(ps)return ps;var a,i=eh,u=i.length,c,v="value"in ca?ca.value:ca.textContent,g=v.length;for(a=0;a=po),Ib=" ",Ub=!1;function qb(a,i){switch(a){case"keyup":return kM.indexOf(i.keyCode)!==-1;case"keydown":return i.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function $b(a){return a=a.detail,typeof a=="object"&&"data"in a?a.data:null}var Ki=!1;function CM(a,i){switch(a){case"compositionend":return $b(i);case"keypress":return i.which!==32?null:(Ub=!0,Ib);case"textInput":return a=i.data,a===Ib&&Ub?null:a;default:return null}}function TM(a,i){if(Ki)return a==="compositionend"||!ih&&qb(a,i)?(a=Pb(),ps=eh=ca=null,Ki=!1,a):null;switch(a){case"paste":return null;case"keypress":if(!(i.ctrlKey||i.altKey||i.metaKey)||i.ctrlKey&&i.altKey){if(i.char&&1=i)return{node:u,offset:i-a};a=c}e:{for(;u;){if(u.nextSibling){u=u.nextSibling;break e}u=u.parentNode}u=void 0}u=Zb(u)}}function Qb(a,i){return a&&i?a===i?!0:a&&a.nodeType===3?!1:i&&i.nodeType===3?Qb(a,i.parentNode):"contains"in a?a.contains(i):a.compareDocumentPosition?!!(a.compareDocumentPosition(i)&16):!1:!1}function Jb(a){a=a!=null&&a.ownerDocument!=null&&a.ownerDocument.defaultView!=null?a.ownerDocument.defaultView:window;for(var i=ms(a.document);i instanceof a.HTMLIFrameElement;){try{var u=typeof i.contentWindow.location.href=="string"}catch{u=!1}if(u)a=i.contentWindow;else break;i=ms(a.document)}return i}function uh(a){var i=a&&a.nodeName&&a.nodeName.toLowerCase();return i&&(i==="input"&&(a.type==="text"||a.type==="search"||a.type==="tel"||a.type==="url"||a.type==="password")||i==="textarea"||a.contentEditable==="true")}var IM=Sr&&"documentMode"in document&&11>=document.documentMode,Vi=null,sh=null,xo=null,ch=!1;function ex(a,i,u){var c=u.window===u?u.document:u.nodeType===9?u:u.ownerDocument;ch||Vi==null||Vi!==ms(c)||(c=Vi,"selectionStart"in c&&uh(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset}),xo&&bo(xo,c)||(xo=c,c=sc(sh,"onSelect"),0>=A,v-=A,fr=1<<32-wn(i)+v|u<Ae?(Me=me,me=null):Me=me.sibling;var Re=K(B,me,U[Ae],Q);if(Re===null){me===null&&(me=Me);break}a&&me&&Re.alternate===null&&i(B,me),z=g(Re,z,Ae),ze===null?ve=Re:ze.sibling=Re,ze=Re,me=Me}if(Ae===U.length)return u(B,me),Pe&&Or(B,Ae),ve;if(me===null){for(;AeAe?(Me=me,me=null):Me=me.sibling;var Ma=K(B,me,Re.value,Q);if(Ma===null){me===null&&(me=Me);break}a&&me&&Ma.alternate===null&&i(B,me),z=g(Ma,z,Ae),ze===null?ve=Ma:ze.sibling=Ma,ze=Ma,me=Me}if(Re.done)return u(B,me),Pe&&Or(B,Ae),ve;if(me===null){for(;!Re.done;Ae++,Re=U.next())Re=ee(B,Re.value,Q),Re!==null&&(z=g(Re,z,Ae),ze===null?ve=Re:ze.sibling=Re,ze=Re);return Pe&&Or(B,Ae),ve}for(me=c(me);!Re.done;Ae++,Re=U.next())Re=Y(me,B,Ae,Re.value,Q),Re!==null&&(a&&Re.alternate!==null&&me.delete(Re.key===null?Ae:Re.key),z=g(Re,z,Ae),ze===null?ve=Re:ze.sibling=Re,ze=Re);return a&&me.forEach(function(iD){return i(B,iD)}),Pe&&Or(B,Ae),ve}function Ve(B,z,U,Q){if(typeof U=="object"&&U!==null&&U.type===S&&U.key===null&&(U=U.props.children),typeof U=="object"&&U!==null){switch(U.$$typeof){case w:e:{for(var ve=U.key;z!==null;){if(z.key===ve){if(ve=U.type,ve===S){if(z.tag===7){u(B,z.sibling),Q=v(z,U.props.children),Q.return=B,B=Q;break e}}else if(z.elementType===ve||typeof ve=="object"&&ve!==null&&ve.$$typeof===V&&oi(ve)===z.type){u(B,z.sibling),Q=v(z,U.props),Eo(Q,U),Q.return=B,B=Q;break e}u(B,z);break}else i(B,z);z=z.sibling}U.type===S?(Q=ni(U.props.children,B.mode,Q,U.key),Q.return=B,B=Q):(Q=Es(U.type,U.key,U.props,null,B.mode,Q),Eo(Q,U),Q.return=B,B=Q)}return A(B);case j:e:{for(ve=U.key;z!==null;){if(z.key===ve)if(z.tag===4&&z.stateNode.containerInfo===U.containerInfo&&z.stateNode.implementation===U.implementation){u(B,z.sibling),Q=v(z,U.children||[]),Q.return=B,B=Q;break e}else{u(B,z);break}else i(B,z);z=z.sibling}Q=yh(U,B.mode,Q),Q.return=B,B=Q}return A(B);case V:return U=oi(U),Ve(B,z,U,Q)}if(he(U))return de(B,z,U,Q);if(L(U)){if(ve=L(U),typeof ve!="function")throw Error(r(150));return U=ve.call(U),ye(B,z,U,Q)}if(typeof U.then=="function")return Ve(B,z,Ps(U),Q);if(U.$$typeof===k)return Ve(B,z,Ns(B,U),Q);Ds(B,U)}return typeof U=="string"&&U!==""||typeof U=="number"||typeof U=="bigint"?(U=""+U,z!==null&&z.tag===6?(u(B,z.sibling),Q=v(z,U),Q.return=B,B=Q):(u(B,z),Q=ph(U,B.mode,Q),Q.return=B,B=Q),A(B)):u(B,z)}return function(B,z,U,Q){try{Ao=0;var ve=Ve(B,z,U,Q);return nl=null,ve}catch(me){if(me===tl||me===Ts)throw me;var ze=jn(29,me,null,B.mode);return ze.lanes=Q,ze.return=B,ze}finally{}}}var si=jx(!0),Ox=jx(!1),va=!1;function Nh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ch(a,i){a=a.updateQueue,i.updateQueue===a&&(i.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,callbacks:null})}function pa(a){return{lane:a,tag:0,payload:null,callback:null,next:null}}function ya(a,i,u){var c=a.updateQueue;if(c===null)return null;if(c=c.shared,(Ie&2)!==0){var v=c.pending;return v===null?i.next=i:(i.next=v.next,v.next=i),c.pending=i,i=As(a),ox(a,null,u),i}return Os(a,c,i,u),As(a)}function _o(a,i,u){if(i=i.updateQueue,i!==null&&(i=i.shared,(u&4194048)!==0)){var c=i.lanes;c&=a.pendingLanes,u|=c,i.lanes=u,vb(a,u)}}function Th(a,i){var u=a.updateQueue,c=a.alternate;if(c!==null&&(c=c.updateQueue,u===c)){var v=null,g=null;if(u=u.firstBaseUpdate,u!==null){do{var A={lane:u.lane,tag:u.tag,payload:u.payload,callback:null,next:null};g===null?v=g=A:g=g.next=A,u=u.next}while(u!==null);g===null?v=g=i:g=g.next=i}else v=g=i;u={baseState:c.baseState,firstBaseUpdate:v,lastBaseUpdate:g,shared:c.shared,callbacks:c.callbacks},a.updateQueue=u;return}a=u.lastBaseUpdate,a===null?u.firstBaseUpdate=i:a.next=i,u.lastBaseUpdate=i}var Mh=!1;function ko(){if(Mh){var a=el;if(a!==null)throw a}}function No(a,i,u,c){Mh=!1;var v=a.updateQueue;va=!1;var g=v.firstBaseUpdate,A=v.lastBaseUpdate,_=v.shared.pending;if(_!==null){v.shared.pending=null;var P=_,q=P.next;P.next=null,A===null?g=q:A.next=q,A=P;var F=a.alternate;F!==null&&(F=F.updateQueue,_=F.lastBaseUpdate,_!==A&&(_===null?F.firstBaseUpdate=q:_.next=q,F.lastBaseUpdate=P))}if(g!==null){var ee=v.baseState;A=0,F=q=P=null,_=g;do{var K=_.lane&-536870913,Y=K!==_.lane;if(Y?(Te&K)===K:(c&K)===K){K!==0&&K===Ji&&(Mh=!0),F!==null&&(F=F.next={lane:0,tag:_.tag,payload:_.payload,callback:null,next:null});e:{var de=a,ye=_;K=i;var Ve=u;switch(ye.tag){case 1:if(de=ye.payload,typeof de=="function"){ee=de.call(Ve,ee,K);break e}ee=de;break e;case 3:de.flags=de.flags&-65537|128;case 0:if(de=ye.payload,K=typeof de=="function"?de.call(Ve,ee,K):de,K==null)break e;ee=p({},ee,K);break e;case 2:va=!0}}K=_.callback,K!==null&&(a.flags|=64,Y&&(a.flags|=8192),Y=v.callbacks,Y===null?v.callbacks=[K]:Y.push(K))}else Y={lane:K,tag:_.tag,payload:_.payload,callback:_.callback,next:null},F===null?(q=F=Y,P=ee):F=F.next=Y,A|=K;if(_=_.next,_===null){if(_=v.shared.pending,_===null)break;Y=_,_=Y.next,Y.next=null,v.lastBaseUpdate=Y,v.shared.pending=null}}while(!0);F===null&&(P=ee),v.baseState=P,v.firstBaseUpdate=q,v.lastBaseUpdate=F,g===null&&(v.shared.lanes=0),Sa|=A,a.lanes=A,a.memoizedState=ee}}function Ax(a,i){if(typeof a!="function")throw Error(r(191,a));a.call(i)}function Ex(a,i){var u=a.callbacks;if(u!==null)for(a.callbacks=null,a=0;ag?g:8;var A=I.T,_={};I.T=_,Wh(a,!1,i,u);try{var P=v(),q=I.S;if(q!==null&&q(_,P),P!==null&&typeof P=="object"&&typeof P.then=="function"){var F=XM(P,c);Mo(a,i,F,kn(a))}else Mo(a,i,c,kn(a))}catch(ee){Mo(a,i,{then:function(){},status:"rejected",reason:ee},kn())}finally{J.p=g,A!==null&&_.types!==null&&(A.types=_.types),I.T=A}}function eP(){}function Fh(a,i,u,c){if(a.tag!==5)throw Error(r(476));var v=a1(a).queue;r1(a,v,i,ie,u===null?eP:function(){return i1(a),u(c)})}function a1(a){var i=a.memoizedState;if(i!==null)return i;i={memoizedState:ie,baseState:ie,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:kr,lastRenderedState:ie},next:null};var u={};return i.next={memoizedState:u,baseState:u,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:kr,lastRenderedState:u},next:null},a.memoizedState=i,a=a.alternate,a!==null&&(a.memoizedState=i),i}function i1(a){var i=a1(a);i.next===null&&(i=a.alternate.memoizedState),Mo(a,i.next.queue,{},kn())}function Zh(){return Vt(Fo)}function l1(){return pt().memoizedState}function o1(){return pt().memoizedState}function tP(a){for(var i=a.return;i!==null;){switch(i.tag){case 24:case 3:var u=kn();a=pa(u);var c=ya(i,a,u);c!==null&&(hn(c,i,u),_o(c,i,u)),i={cache:Ah()},a.payload=i;return}i=i.return}}function nP(a,i,u){var c=kn();u={lane:c,revertLane:0,gesture:null,action:u,hasEagerState:!1,eagerState:null,next:null},Ks(a)?s1(i,u):(u=mh(a,i,u,c),u!==null&&(hn(u,a,c),c1(u,i,c)))}function u1(a,i,u){var c=kn();Mo(a,i,u,c)}function Mo(a,i,u,c){var v={lane:c,revertLane:0,gesture:null,action:u,hasEagerState:!1,eagerState:null,next:null};if(Ks(a))s1(i,v);else{var g=a.alternate;if(a.lanes===0&&(g===null||g.lanes===0)&&(g=i.lastRenderedReducer,g!==null))try{var A=i.lastRenderedState,_=g(A,u);if(v.hasEagerState=!0,v.eagerState=_,Sn(_,A))return Os(a,i,v,0),Ge===null&&js(),!1}catch{}finally{}if(u=mh(a,i,v,c),u!==null)return hn(u,a,c),c1(u,i,c),!0}return!1}function Wh(a,i,u,c){if(c={lane:2,revertLane:Nm(),gesture:null,action:c,hasEagerState:!1,eagerState:null,next:null},Ks(a)){if(i)throw Error(r(479))}else i=mh(a,u,c,2),i!==null&&hn(i,a,2)}function Ks(a){var i=a.alternate;return a===Oe||i!==null&&i===Oe}function s1(a,i){al=Ls=!0;var u=a.pending;u===null?i.next=i:(i.next=u.next,u.next=i),a.pending=i}function c1(a,i,u){if((u&4194048)!==0){var c=i.lanes;c&=a.pendingLanes,u|=c,i.lanes=u,vb(a,u)}}var Po={readContext:Vt,use:Us,useCallback:dt,useContext:dt,useEffect:dt,useImperativeHandle:dt,useLayoutEffect:dt,useInsertionEffect:dt,useMemo:dt,useReducer:dt,useRef:dt,useState:dt,useDebugValue:dt,useDeferredValue:dt,useTransition:dt,useSyncExternalStore:dt,useId:dt,useHostTransitionStatus:dt,useFormState:dt,useActionState:dt,useOptimistic:dt,useMemoCache:dt,useCacheRefresh:dt};Po.useEffectEvent=dt;var f1={readContext:Vt,use:Us,useCallback:function(a,i){return tn().memoizedState=[a,i===void 0?null:i],a},useContext:Vt,useEffect:Xx,useImperativeHandle:function(a,i,u){u=u!=null?u.concat([a]):null,$s(4194308,4,Qx.bind(null,i,a),u)},useLayoutEffect:function(a,i){return $s(4194308,4,a,i)},useInsertionEffect:function(a,i){$s(4,2,a,i)},useMemo:function(a,i){var u=tn();i=i===void 0?null:i;var c=a();if(ci){ua(!0);try{a()}finally{ua(!1)}}return u.memoizedState=[c,i],c},useReducer:function(a,i,u){var c=tn();if(u!==void 0){var v=u(i);if(ci){ua(!0);try{u(i)}finally{ua(!1)}}}else v=i;return c.memoizedState=c.baseState=v,a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:v},c.queue=a,a=a.dispatch=nP.bind(null,Oe,a),[c.memoizedState,a]},useRef:function(a){var i=tn();return a={current:a},i.memoizedState=a},useState:function(a){a=Kh(a);var i=a.queue,u=u1.bind(null,Oe,i);return i.dispatch=u,[a.memoizedState,u]},useDebugValue:Gh,useDeferredValue:function(a,i){var u=tn();return Xh(u,a,i)},useTransition:function(){var a=Kh(!1);return a=r1.bind(null,Oe,a.queue,!0,!1),tn().memoizedState=a,[!1,a]},useSyncExternalStore:function(a,i,u){var c=Oe,v=tn();if(Pe){if(u===void 0)throw Error(r(407));u=u()}else{if(u=i(),Ge===null)throw Error(r(349));(Te&127)!==0||Mx(c,i,u)}v.memoizedState=u;var g={value:u,getSnapshot:i};return v.queue=g,Xx(Dx.bind(null,c,g,a),[a]),c.flags|=2048,ll(9,{destroy:void 0},Px.bind(null,c,g,u,i),null),u},useId:function(){var a=tn(),i=Ge.identifierPrefix;if(Pe){var u=dr,c=fr;u=(c&~(1<<32-wn(c)-1)).toString(32)+u,i="_"+i+"R_"+u,u=Bs++,0<\/script>",g=g.removeChild(g.firstChild);break;case"select":g=typeof c.is=="string"?A.createElement("select",{is:c.is}):A.createElement("select"),c.multiple?g.multiple=!0:c.size&&(g.size=c.size);break;default:g=typeof c.is=="string"?A.createElement(v,{is:c.is}):A.createElement(v)}}g[Ht]=i,g[on]=c;e:for(A=i.child;A!==null;){if(A.tag===5||A.tag===6)g.appendChild(A.stateNode);else if(A.tag!==4&&A.tag!==27&&A.child!==null){A.child.return=A,A=A.child;continue}if(A===i)break e;for(;A.sibling===null;){if(A.return===null||A.return===i)break e;A=A.return}A.sibling.return=A.return,A=A.sibling}i.stateNode=g;e:switch(Gt(g,v,c),v){case"button":case"input":case"select":case"textarea":c=!!c.autoFocus;break e;case"img":c=!0;break e;default:c=!1}c&&Cr(i)}}return et(i),fm(i,i.type,a===null?null:a.memoizedProps,i.pendingProps,u),null;case 6:if(a&&i.stateNode!=null)a.memoizedProps!==c&&Cr(i);else{if(typeof c!="string"&&i.stateNode===null)throw Error(r(166));if(a=xe.current,Wi(i)){if(a=i.stateNode,u=i.memoizedProps,c=null,v=Kt,v!==null)switch(v.tag){case 27:case 5:c=v.memoizedProps}a[Ht]=i,a=!!(a.nodeValue===u||c!==null&&c.suppressHydrationWarning===!0||Cw(a.nodeValue,u)),a||ha(i,!0)}else a=cc(a).createTextNode(c),a[Ht]=i,i.stateNode=a}return et(i),null;case 31:if(u=i.memoizedState,a===null||a.memoizedState!==null){if(c=Wi(i),u!==null){if(a===null){if(!c)throw Error(r(318));if(a=i.memoizedState,a=a!==null?a.dehydrated:null,!a)throw Error(r(557));a[Ht]=i}else ri(),(i.flags&128)===0&&(i.memoizedState=null),i.flags|=4;et(i),a=!1}else u=wh(),a!==null&&a.memoizedState!==null&&(a.memoizedState.hydrationErrors=u),a=!0;if(!a)return i.flags&256?(An(i),i):(An(i),null);if((i.flags&128)!==0)throw Error(r(558))}return et(i),null;case 13:if(c=i.memoizedState,a===null||a.memoizedState!==null&&a.memoizedState.dehydrated!==null){if(v=Wi(i),c!==null&&c.dehydrated!==null){if(a===null){if(!v)throw Error(r(318));if(v=i.memoizedState,v=v!==null?v.dehydrated:null,!v)throw Error(r(317));v[Ht]=i}else ri(),(i.flags&128)===0&&(i.memoizedState=null),i.flags|=4;et(i),v=!1}else v=wh(),a!==null&&a.memoizedState!==null&&(a.memoizedState.hydrationErrors=v),v=!0;if(!v)return i.flags&256?(An(i),i):(An(i),null)}return An(i),(i.flags&128)!==0?(i.lanes=u,i):(u=c!==null,a=a!==null&&a.memoizedState!==null,u&&(c=i.child,v=null,c.alternate!==null&&c.alternate.memoizedState!==null&&c.alternate.memoizedState.cachePool!==null&&(v=c.alternate.memoizedState.cachePool.pool),g=null,c.memoizedState!==null&&c.memoizedState.cachePool!==null&&(g=c.memoizedState.cachePool.pool),g!==v&&(c.flags|=2048)),u!==a&&u&&(i.child.flags|=8192),Fs(i,i.updateQueue),et(i),null);case 4:return W(),a===null&&Pm(i.stateNode.containerInfo),et(i),null;case 10:return Er(i.type),et(i),null;case 19:if(X(vt),c=i.memoizedState,c===null)return et(i),null;if(v=(i.flags&128)!==0,g=c.rendering,g===null)if(v)zo(c,!1);else{if(ht!==0||a!==null&&(a.flags&128)!==0)for(a=i.child;a!==null;){if(g=Rs(a),g!==null){for(i.flags|=128,zo(c,!1),a=g.updateQueue,i.updateQueue=a,Fs(i,a),i.subtreeFlags=0,a=u,u=i.child;u!==null;)ux(u,a),u=u.sibling;return re(vt,vt.current&1|2),Pe&&Or(i,c.treeForkCount),i.child}a=a.sibling}c.tail!==null&&bn()>ec&&(i.flags|=128,v=!0,zo(c,!1),i.lanes=4194304)}else{if(!v)if(a=Rs(g),a!==null){if(i.flags|=128,v=!0,a=a.updateQueue,i.updateQueue=a,Fs(i,a),zo(c,!0),c.tail===null&&c.tailMode==="hidden"&&!g.alternate&&!Pe)return et(i),null}else 2*bn()-c.renderingStartTime>ec&&u!==536870912&&(i.flags|=128,v=!0,zo(c,!1),i.lanes=4194304);c.isBackwards?(g.sibling=i.child,i.child=g):(a=c.last,a!==null?a.sibling=g:i.child=g,c.last=g)}return c.tail!==null?(a=c.tail,c.rendering=a,c.tail=a.sibling,c.renderingStartTime=bn(),a.sibling=null,u=vt.current,re(vt,v?u&1|2:u&1),Pe&&Or(i,c.treeForkCount),a):(et(i),null);case 22:case 23:return An(i),Dh(),c=i.memoizedState!==null,a!==null?a.memoizedState!==null!==c&&(i.flags|=8192):c&&(i.flags|=8192),c?(u&536870912)!==0&&(i.flags&128)===0&&(et(i),i.subtreeFlags&6&&(i.flags|=8192)):et(i),u=i.updateQueue,u!==null&&Fs(i,u.retryQueue),u=null,a!==null&&a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(u=a.memoizedState.cachePool.pool),c=null,i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(c=i.memoizedState.cachePool.pool),c!==u&&(i.flags|=2048),a!==null&&X(li),null;case 24:return u=null,a!==null&&(u=a.memoizedState.cache),i.memoizedState.cache!==u&&(i.flags|=2048),Er(bt),et(i),null;case 25:return null;case 30:return null}throw Error(r(156,i.tag))}function oP(a,i){switch(bh(i),i.tag){case 1:return a=i.flags,a&65536?(i.flags=a&-65537|128,i):null;case 3:return Er(bt),W(),a=i.flags,(a&65536)!==0&&(a&128)===0?(i.flags=a&-65537|128,i):null;case 26:case 27:case 5:return _e(i),null;case 31:if(i.memoizedState!==null){if(An(i),i.alternate===null)throw Error(r(340));ri()}return a=i.flags,a&65536?(i.flags=a&-65537|128,i):null;case 13:if(An(i),a=i.memoizedState,a!==null&&a.dehydrated!==null){if(i.alternate===null)throw Error(r(340));ri()}return a=i.flags,a&65536?(i.flags=a&-65537|128,i):null;case 19:return X(vt),null;case 4:return W(),null;case 10:return Er(i.type),null;case 22:case 23:return An(i),Dh(),a!==null&&X(li),a=i.flags,a&65536?(i.flags=a&-65537|128,i):null;case 24:return Er(bt),null;case 25:return null;default:return null}}function z1(a,i){switch(bh(i),i.tag){case 3:Er(bt),W();break;case 26:case 27:case 5:_e(i);break;case 4:W();break;case 31:i.memoizedState!==null&&An(i);break;case 13:An(i);break;case 19:X(vt);break;case 10:Er(i.type);break;case 22:case 23:An(i),Dh(),a!==null&&X(li);break;case 24:Er(bt)}}function Ro(a,i){try{var u=i.updateQueue,c=u!==null?u.lastEffect:null;if(c!==null){var v=c.next;u=v;do{if((u.tag&a)===a){c=void 0;var g=u.create,A=u.inst;c=g(),A.destroy=c}u=u.next}while(u!==v)}}catch(_){qe(i,i.return,_)}}function xa(a,i,u){try{var c=i.updateQueue,v=c!==null?c.lastEffect:null;if(v!==null){var g=v.next;c=g;do{if((c.tag&a)===a){var A=c.inst,_=A.destroy;if(_!==void 0){A.destroy=void 0,v=i;var P=u,q=_;try{q()}catch(F){qe(v,P,F)}}}c=c.next}while(c!==g)}}catch(F){qe(i,i.return,F)}}function R1(a){var i=a.updateQueue;if(i!==null){var u=a.stateNode;try{Ex(i,u)}catch(c){qe(a,a.return,c)}}}function L1(a,i,u){u.props=fi(a.type,a.memoizedProps),u.state=a.memoizedState;try{u.componentWillUnmount()}catch(c){qe(a,i,c)}}function Lo(a,i){try{var u=a.ref;if(u!==null){switch(a.tag){case 26:case 27:case 5:var c=a.stateNode;break;case 30:c=a.stateNode;break;default:c=a.stateNode}typeof u=="function"?a.refCleanup=u(c):u.current=c}}catch(v){qe(a,i,v)}}function hr(a,i){var u=a.ref,c=a.refCleanup;if(u!==null)if(typeof c=="function")try{c()}catch(v){qe(a,i,v)}finally{a.refCleanup=null,a=a.alternate,a!=null&&(a.refCleanup=null)}else if(typeof u=="function")try{u(null)}catch(v){qe(a,i,v)}else u.current=null}function B1(a){var i=a.type,u=a.memoizedProps,c=a.stateNode;try{e:switch(i){case"button":case"input":case"select":case"textarea":u.autoFocus&&c.focus();break e;case"img":u.src?c.src=u.src:u.srcSet&&(c.srcset=u.srcSet)}}catch(v){qe(a,a.return,v)}}function dm(a,i,u){try{var c=a.stateNode;NP(c,a.type,u,i),c[on]=i}catch(v){qe(a,a.return,v)}}function I1(a){return a.tag===5||a.tag===3||a.tag===26||a.tag===27&&_a(a.type)||a.tag===4}function hm(a){e:for(;;){for(;a.sibling===null;){if(a.return===null||I1(a.return))return null;a=a.return}for(a.sibling.return=a.return,a=a.sibling;a.tag!==5&&a.tag!==6&&a.tag!==18;){if(a.tag===27&&_a(a.type)||a.flags&2||a.child===null||a.tag===4)continue e;a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}function mm(a,i,u){var c=a.tag;if(c===5||c===6)a=a.stateNode,i?(u.nodeType===9?u.body:u.nodeName==="HTML"?u.ownerDocument.body:u).insertBefore(a,i):(i=u.nodeType===9?u.body:u.nodeName==="HTML"?u.ownerDocument.body:u,i.appendChild(a),u=u._reactRootContainer,u!=null||i.onclick!==null||(i.onclick=wr));else if(c!==4&&(c===27&&_a(a.type)&&(u=a.stateNode,i=null),a=a.child,a!==null))for(mm(a,i,u),a=a.sibling;a!==null;)mm(a,i,u),a=a.sibling}function Zs(a,i,u){var c=a.tag;if(c===5||c===6)a=a.stateNode,i?u.insertBefore(a,i):u.appendChild(a);else if(c!==4&&(c===27&&_a(a.type)&&(u=a.stateNode),a=a.child,a!==null))for(Zs(a,i,u),a=a.sibling;a!==null;)Zs(a,i,u),a=a.sibling}function U1(a){var i=a.stateNode,u=a.memoizedProps;try{for(var c=a.type,v=i.attributes;v.length;)i.removeAttributeNode(v[0]);Gt(i,c,u),i[Ht]=a,i[on]=u}catch(g){qe(a,a.return,g)}}var Tr=!1,St=!1,vm=!1,q1=typeof WeakSet=="function"?WeakSet:Set,Lt=null;function uP(a,i){if(a=a.containerInfo,Rm=yc,a=Jb(a),uh(a)){if("selectionStart"in a)var u={start:a.selectionStart,end:a.selectionEnd};else e:{u=(u=a.ownerDocument)&&u.defaultView||window;var c=u.getSelection&&u.getSelection();if(c&&c.rangeCount!==0){u=c.anchorNode;var v=c.anchorOffset,g=c.focusNode;c=c.focusOffset;try{u.nodeType,g.nodeType}catch{u=null;break e}var A=0,_=-1,P=-1,q=0,F=0,ee=a,K=null;t:for(;;){for(var Y;ee!==u||v!==0&&ee.nodeType!==3||(_=A+v),ee!==g||c!==0&&ee.nodeType!==3||(P=A+c),ee.nodeType===3&&(A+=ee.nodeValue.length),(Y=ee.firstChild)!==null;)K=ee,ee=Y;for(;;){if(ee===a)break t;if(K===u&&++q===v&&(_=A),K===g&&++F===c&&(P=A),(Y=ee.nextSibling)!==null)break;ee=K,K=ee.parentNode}ee=Y}u=_===-1||P===-1?null:{start:_,end:P}}else u=null}u=u||{start:0,end:0}}else u=null;for(Lm={focusedElem:a,selectionRange:u},yc=!1,Lt=i;Lt!==null;)if(i=Lt,a=i.child,(i.subtreeFlags&1028)!==0&&a!==null)a.return=i,Lt=a;else for(;Lt!==null;){switch(i=Lt,g=i.alternate,a=i.flags,i.tag){case 0:if((a&4)!==0&&(a=i.updateQueue,a=a!==null?a.events:null,a!==null))for(u=0;u title"))),Gt(g,c,u),g[Ht]=a,Rt(g),c=g;break e;case"link":var A=Gw("link","href",v).get(c+(u.href||""));if(A){for(var _=0;_Ve&&(A=Ve,Ve=ye,ye=A);var B=Wb(_,ye),z=Wb(_,Ve);if(B&&z&&(Y.rangeCount!==1||Y.anchorNode!==B.node||Y.anchorOffset!==B.offset||Y.focusNode!==z.node||Y.focusOffset!==z.offset)){var U=ee.createRange();U.setStart(B.node,B.offset),Y.removeAllRanges(),ye>Ve?(Y.addRange(U),Y.extend(z.node,z.offset)):(U.setEnd(z.node,z.offset),Y.addRange(U))}}}}for(ee=[],Y=_;Y=Y.parentNode;)Y.nodeType===1&&ee.push({element:Y,left:Y.scrollLeft,top:Y.scrollTop});for(typeof _.focus=="function"&&_.focus(),_=0;_u?32:u,I.T=null,u=Sm,Sm=null;var g=Oa,A=Rr;if(Ct=0,fl=Oa=null,Rr=0,(Ie&6)!==0)throw Error(r(331));var _=Ie;if(Ie|=4,Q1(g.current),F1(g,g.current,A,u),Ie=_,Ho(0,!1),xn&&typeof xn.onPostCommitFiberRoot=="function")try{xn.onPostCommitFiberRoot(lo,g)}catch{}return!0}finally{J.p=v,I.T=c,pw(a,i)}}function gw(a,i,u){i=Ln(u,i),i=tm(a.stateNode,i,2),a=ya(a,i,2),a!==null&&(uo(a,2),mr(a))}function qe(a,i,u){if(a.tag===3)gw(a,a,u);else for(;i!==null;){if(i.tag===3){gw(i,a,u);break}else if(i.tag===1){var c=i.stateNode;if(typeof i.type.getDerivedStateFromError=="function"||typeof c.componentDidCatch=="function"&&(ja===null||!ja.has(c))){a=Ln(u,a),u=b1(2),c=ya(i,u,2),c!==null&&(x1(u,c,i,a),uo(c,2),mr(c));break}}i=i.return}}function Em(a,i,u){var c=a.pingCache;if(c===null){c=a.pingCache=new fP;var v=new Set;c.set(i,v)}else v=c.get(i),v===void 0&&(v=new Set,c.set(i,v));v.has(u)||(gm=!0,v.add(u),a=pP.bind(null,a,i,u),i.then(a,a))}function pP(a,i,u){var c=a.pingCache;c!==null&&c.delete(i),a.pingedLanes|=a.suspendedLanes&u,a.warmLanes&=~u,Ge===a&&(Te&u)===u&&(ht===4||ht===3&&(Te&62914560)===Te&&300>bn()-Js?(Ie&2)===0&&dl(a,0):bm|=u,cl===Te&&(cl=0)),mr(a)}function bw(a,i){i===0&&(i=hb()),a=ti(a,i),a!==null&&(uo(a,i),mr(a))}function yP(a){var i=a.memoizedState,u=0;i!==null&&(u=i.retryLane),bw(a,u)}function gP(a,i){var u=0;switch(a.tag){case 31:case 13:var c=a.stateNode,v=a.memoizedState;v!==null&&(u=v.retryLane);break;case 19:c=a.stateNode;break;case 22:c=a.stateNode._retryCache;break;default:throw Error(r(314))}c!==null&&c.delete(i),bw(a,u)}function bP(a,i){return Fa(a,i)}var lc=null,ml=null,_m=!1,oc=!1,km=!1,Ea=0;function mr(a){a!==ml&&a.next===null&&(ml===null?lc=ml=a:ml=ml.next=a),oc=!0,_m||(_m=!0,wP())}function Ho(a,i){if(!km&&oc){km=!0;do for(var u=!1,c=lc;c!==null;){if(a!==0){var v=c.pendingLanes;if(v===0)var g=0;else{var A=c.suspendedLanes,_=c.pingedLanes;g=(1<<31-wn(42|a)+1)-1,g&=v&~(A&~_),g=g&201326741?g&201326741|1:g?g|2:0}g!==0&&(u=!0,jw(c,g))}else g=Te,g=fs(c,c===Ge?g:0,c.cancelPendingCommit!==null||c.timeoutHandle!==-1),(g&3)===0||oo(c,g)||(u=!0,jw(c,g));c=c.next}while(u);km=!1}}function xP(){xw()}function xw(){oc=_m=!1;var a=0;Ea!==0&&TP()&&(a=Ea);for(var i=bn(),u=null,c=lc;c!==null;){var v=c.next,g=ww(c,i);g===0?(c.next=null,u===null?lc=v:u.next=v,v===null&&(ml=u)):(u=c,(a!==0||(g&3)!==0)&&(oc=!0)),c=v}Ct!==0&&Ct!==5||Ho(a),Ea!==0&&(Ea=0)}function ww(a,i){for(var u=a.suspendedLanes,c=a.pingedLanes,v=a.expirationTimes,g=a.pendingLanes&-62914561;0_)break;var F=P.transferSize,ee=P.initiatorType;F&&Tw(ee)&&(P=P.responseEnd,A+=F*(P<_?1:(_-q)/(P-q)))}if(--c,i+=8*(g+A)/(v.duration/1e3),a++,10"u"?null:document;function Hw(a,i,u){var c=vl;if(c&&typeof i=="string"&&i){var v=zn(i);v='link[rel="'+a+'"][href="'+v+'"]',typeof u=="string"&&(v+='[crossorigin="'+u+'"]'),$w.has(v)||($w.add(v),a={rel:a,crossOrigin:u,href:i},c.querySelector(v)===null&&(i=c.createElement("link"),Gt(i,"link",a),Rt(i),c.head.appendChild(i)))}}function UP(a){Lr.D(a),Hw("dns-prefetch",a,null)}function qP(a,i){Lr.C(a,i),Hw("preconnect",a,i)}function $P(a,i,u){Lr.L(a,i,u);var c=vl;if(c&&a&&i){var v='link[rel="preload"][as="'+zn(i)+'"]';i==="image"&&u&&u.imageSrcSet?(v+='[imagesrcset="'+zn(u.imageSrcSet)+'"]',typeof u.imageSizes=="string"&&(v+='[imagesizes="'+zn(u.imageSizes)+'"]')):v+='[href="'+zn(a)+'"]';var g=v;switch(i){case"style":g=pl(a);break;case"script":g=yl(a)}Hn.has(g)||(a=p({rel:"preload",href:i==="image"&&u&&u.imageSrcSet?void 0:a,as:i},u),Hn.set(g,a),c.querySelector(v)!==null||i==="style"&&c.querySelector(Go(g))||i==="script"&&c.querySelector(Xo(g))||(i=c.createElement("link"),Gt(i,"link",a),Rt(i),c.head.appendChild(i)))}}function HP(a,i){Lr.m(a,i);var u=vl;if(u&&a){var c=i&&typeof i.as=="string"?i.as:"script",v='link[rel="modulepreload"][as="'+zn(c)+'"][href="'+zn(a)+'"]',g=v;switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":g=yl(a)}if(!Hn.has(g)&&(a=p({rel:"modulepreload",href:a},i),Hn.set(g,a),u.querySelector(v)===null)){switch(c){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(u.querySelector(Xo(g)))return}c=u.createElement("link"),Gt(c,"link",a),Rt(c),u.head.appendChild(c)}}}function KP(a,i,u){Lr.S(a,i,u);var c=vl;if(c&&a){var v=Bi(c).hoistableStyles,g=pl(a);i=i||"default";var A=v.get(g);if(!A){var _={loading:0,preload:null};if(A=c.querySelector(Go(g)))_.loading=5;else{a=p({rel:"stylesheet",href:a,"data-precedence":i},u),(u=Hn.get(g))&&Km(a,u);var P=A=c.createElement("link");Rt(P),Gt(P,"link",a),P._p=new Promise(function(q,F){P.onload=q,P.onerror=F}),P.addEventListener("load",function(){_.loading|=1}),P.addEventListener("error",function(){_.loading|=2}),_.loading|=4,dc(A,i,c)}A={type:"stylesheet",instance:A,count:1,state:_},v.set(g,A)}}}function VP(a,i){Lr.X(a,i);var u=vl;if(u&&a){var c=Bi(u).hoistableScripts,v=yl(a),g=c.get(v);g||(g=u.querySelector(Xo(v)),g||(a=p({src:a,async:!0},i),(i=Hn.get(v))&&Vm(a,i),g=u.createElement("script"),Rt(g),Gt(g,"link",a),u.head.appendChild(g)),g={type:"script",instance:g,count:1,state:null},c.set(v,g))}}function YP(a,i){Lr.M(a,i);var u=vl;if(u&&a){var c=Bi(u).hoistableScripts,v=yl(a),g=c.get(v);g||(g=u.querySelector(Xo(v)),g||(a=p({src:a,async:!0,type:"module"},i),(i=Hn.get(v))&&Vm(a,i),g=u.createElement("script"),Rt(g),Gt(g,"link",a),u.head.appendChild(g)),g={type:"script",instance:g,count:1,state:null},c.set(v,g))}}function Kw(a,i,u,c){var v=(v=xe.current)?fc(v):null;if(!v)throw Error(r(446));switch(a){case"meta":case"title":return null;case"style":return typeof u.precedence=="string"&&typeof u.href=="string"?(i=pl(u.href),u=Bi(v).hoistableStyles,c=u.get(i),c||(c={type:"style",instance:null,count:0,state:null},u.set(i,c)),c):{type:"void",instance:null,count:0,state:null};case"link":if(u.rel==="stylesheet"&&typeof u.href=="string"&&typeof u.precedence=="string"){a=pl(u.href);var g=Bi(v).hoistableStyles,A=g.get(a);if(A||(v=v.ownerDocument||v,A={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},g.set(a,A),(g=v.querySelector(Go(a)))&&!g._p&&(A.instance=g,A.state.loading=5),Hn.has(a)||(u={rel:"preload",as:"style",href:u.href,crossOrigin:u.crossOrigin,integrity:u.integrity,media:u.media,hrefLang:u.hrefLang,referrerPolicy:u.referrerPolicy},Hn.set(a,u),g||GP(v,a,u,A.state))),i&&c===null)throw Error(r(528,""));return A}if(i&&c!==null)throw Error(r(529,""));return null;case"script":return i=u.async,u=u.src,typeof u=="string"&&i&&typeof i!="function"&&typeof i!="symbol"?(i=yl(u),u=Bi(v).hoistableScripts,c=u.get(i),c||(c={type:"script",instance:null,count:0,state:null},u.set(i,c)),c):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,a))}}function pl(a){return'href="'+zn(a)+'"'}function Go(a){return'link[rel="stylesheet"]['+a+"]"}function Vw(a){return p({},a,{"data-precedence":a.precedence,precedence:null})}function GP(a,i,u,c){a.querySelector('link[rel="preload"][as="style"]['+i+"]")?c.loading=1:(i=a.createElement("link"),c.preload=i,i.addEventListener("load",function(){return c.loading|=1}),i.addEventListener("error",function(){return c.loading|=2}),Gt(i,"link",u),Rt(i),a.head.appendChild(i))}function yl(a){return'[src="'+zn(a)+'"]'}function Xo(a){return"script[async]"+a}function Yw(a,i,u){if(i.count++,i.instance===null)switch(i.type){case"style":var c=a.querySelector('style[data-href~="'+zn(u.href)+'"]');if(c)return i.instance=c,Rt(c),c;var v=p({},u,{"data-href":u.href,"data-precedence":u.precedence,href:null,precedence:null});return c=(a.ownerDocument||a).createElement("style"),Rt(c),Gt(c,"style",v),dc(c,u.precedence,a),i.instance=c;case"stylesheet":v=pl(u.href);var g=a.querySelector(Go(v));if(g)return i.state.loading|=4,i.instance=g,Rt(g),g;c=Vw(u),(v=Hn.get(v))&&Km(c,v),g=(a.ownerDocument||a).createElement("link"),Rt(g);var A=g;return A._p=new Promise(function(_,P){A.onload=_,A.onerror=P}),Gt(g,"link",c),i.state.loading|=4,dc(g,u.precedence,a),i.instance=g;case"script":return g=yl(u.src),(v=a.querySelector(Xo(g)))?(i.instance=v,Rt(v),v):(c=u,(v=Hn.get(g))&&(c=p({},u),Vm(c,v)),a=a.ownerDocument||a,v=a.createElement("script"),Rt(v),Gt(v,"link",c),a.head.appendChild(v),i.instance=v);case"void":return null;default:throw Error(r(443,i.type))}else i.type==="stylesheet"&&(i.state.loading&4)===0&&(c=i.instance,i.state.loading|=4,dc(c,u.precedence,a));return i.instance}function dc(a,i,u){for(var c=u.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),v=c.length?c[c.length-1]:null,g=v,A=0;A title"):null)}function XP(a,i,u){if(u===1||i.itemProp!=null)return!1;switch(a){case"meta":case"title":return!0;case"style":if(typeof i.precedence!="string"||typeof i.href!="string"||i.href==="")break;return!0;case"link":if(typeof i.rel!="string"||typeof i.href!="string"||i.href===""||i.onLoad||i.onError)break;switch(i.rel){case"stylesheet":return a=i.disabled,typeof i.precedence=="string"&&a==null;default:return!0}case"script":if(i.async&&typeof i.async!="function"&&typeof i.async!="symbol"&&!i.onLoad&&!i.onError&&i.src&&typeof i.src=="string")return!0}return!1}function Fw(a){return!(a.type==="stylesheet"&&(a.state.loading&3)===0)}function FP(a,i,u,c){if(u.type==="stylesheet"&&(typeof c.media!="string"||matchMedia(c.media).matches!==!1)&&(u.state.loading&4)===0){if(u.instance===null){var v=pl(c.href),g=i.querySelector(Go(v));if(g){i=g._p,i!==null&&typeof i=="object"&&typeof i.then=="function"&&(a.count++,a=mc.bind(a),i.then(a,a)),u.state.loading|=4,u.instance=g,Rt(g);return}g=i.ownerDocument||i,c=Vw(c),(v=Hn.get(v))&&Km(c,v),g=g.createElement("link"),Rt(g);var A=g;A._p=new Promise(function(_,P){A.onload=_,A.onerror=P}),Gt(g,"link",c),u.instance=g}a.stylesheets===null&&(a.stylesheets=new Map),a.stylesheets.set(u,i),(i=u.state.preload)&&(u.state.loading&3)===0&&(a.count++,u=mc.bind(a),i.addEventListener("load",u),i.addEventListener("error",u))}}var Ym=0;function ZP(a,i){return a.stylesheets&&a.count===0&&pc(a,a.stylesheets),0Ym?50:800)+i);return a.unsuspend=u,function(){a.unsuspend=null,clearTimeout(c),clearTimeout(v)}}:null}function mc(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)pc(this,this.stylesheets);else if(this.unsuspend){var a=this.unsuspend;this.unsuspend=null,a()}}}var vc=null;function pc(a,i){a.stylesheets=null,a.unsuspend!==null&&(a.count++,vc=new Map,i.forEach(WP,a),vc=null,mc.call(a))}function WP(a,i){if(!(i.state.loading&4)){var u=vc.get(a);if(u)var c=u.get(null);else{u=new Map,vc.set(a,u);for(var v=a.querySelectorAll("link[data-precedence],style[data-precedence]"),g=0;g"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),tv.exports=vD(),tv.exports}var yD=pD();var bS="popstate";function gD(e={}){function t(r,l){let{pathname:o,search:s,hash:f}=r.location;return qp("",{pathname:o,search:s,hash:f},l.state&&l.state.usr||null,l.state&&l.state.key||"default")}function n(r,l){return typeof l=="string"?l:hu(l)}return xD(t,n,null,e)}function ot(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function Fn(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function bD(){return Math.random().toString(36).substring(2,10)}function xS(e,t){return{usr:e.state,key:e.key,idx:t}}function qp(e,t,n=null,r){return{pathname:typeof e=="string"?e:e.pathname,search:"",hash:"",...typeof t=="string"?Hl(t):t,state:n,key:t&&t.key||r||bD()}}function hu({pathname:e="/",search:t="",hash:n=""}){return t&&t!=="?"&&(e+=t.charAt(0)==="?"?t:"?"+t),n&&n!=="#"&&(e+=n.charAt(0)==="#"?n:"#"+n),e}function Hl(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function xD(e,t,n,r={}){let{window:l=document.defaultView,v5Compat:o=!1}=r,s=l.history,f="POP",d=null,h=m();h==null&&(h=0,s.replaceState({...s.state,idx:h},""));function m(){return(s.state||{idx:null}).idx}function p(){f="POP";let O=m(),E=O==null?null:O-h;h=O,d&&d({action:f,location:S.location,delta:E})}function x(O,E){f="PUSH";let N=qp(S.location,O,E);h=m()+1;let k=xS(N,h),T=S.createHref(N);try{s.pushState(k,"",T)}catch(C){if(C instanceof DOMException&&C.name==="DataCloneError")throw C;l.location.assign(T)}o&&d&&d({action:f,location:S.location,delta:1})}function w(O,E){f="REPLACE";let N=qp(S.location,O,E);h=m();let k=xS(N,h),T=S.createHref(N);s.replaceState(k,"",T),o&&d&&d({action:f,location:S.location,delta:0})}function j(O){return wD(O)}let S={get action(){return f},get location(){return e(l,s)},listen(O){if(d)throw new Error("A history only accepts one active listener");return l.addEventListener(bS,p),d=O,()=>{l.removeEventListener(bS,p),d=null}},createHref(O){return t(l,O)},createURL:j,encodeLocation(O){let E=j(O);return{pathname:E.pathname,search:E.search,hash:E.hash}},push:x,replace:w,go(O){return s.go(O)}};return S}function wD(e,t=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),ot(n,"No window.location.(origin|href) available to create URL");let r=typeof e=="string"?e:hu(e);return r=r.replace(/ $/,"%20"),!t&&r.startsWith("//")&&(r=n+r),new URL(r,n)}function iE(e,t,n="/"){return SD(e,t,n,!1)}function SD(e,t,n,r){let l=typeof t=="string"?Hl(t):t,o=Yr(l.pathname||"/",n);if(o==null)return null;let s=lE(e);jD(s);let f=null;for(let d=0;f==null&&d{let m={relativePath:h===void 0?s.path||"":h,caseSensitive:s.caseSensitive===!0,childrenIndex:f,route:s};if(m.relativePath.startsWith("/")){if(!m.relativePath.startsWith(r)&&d)return;ot(m.relativePath.startsWith(r),`Absolute route path "${m.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),m.relativePath=m.relativePath.slice(r.length)}let p=Hr([r,m.relativePath]),x=n.concat(m);s.children&&s.children.length>0&&(ot(s.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${p}".`),lE(s.children,t,x,p,d)),!(s.path==null&&!s.index)&&t.push({path:p,score:CD(p,s.index),routesMeta:x})};return e.forEach((s,f)=>{if(s.path===""||!s.path?.includes("?"))o(s,f);else for(let d of oE(s.path))o(s,f,!0,d)}),t}function oE(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,l=n.endsWith("?"),o=n.replace(/\?$/,"");if(r.length===0)return l?[o,""]:[o];let s=oE(r.join("/")),f=[];return f.push(...s.map(d=>d===""?o:[o,d].join("/"))),l&&f.push(...s),f.map(d=>e.startsWith("/")&&d===""?"/":d)}function jD(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:TD(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}var OD=/^:[\w-]+$/,AD=3,ED=2,_D=1,kD=10,ND=-2,wS=e=>e==="*";function CD(e,t){let n=e.split("/"),r=n.length;return n.some(wS)&&(r+=ND),t&&(r+=ED),n.filter(l=>!wS(l)).reduce((l,o)=>l+(OD.test(o)?AD:o===""?_D:kD),r)}function TD(e,t){return e.length===t.length&&e.slice(0,-1).every((r,l)=>r===t[l])?e[e.length-1]-t[t.length-1]:0}function MD(e,t,n=!1){let{routesMeta:r}=e,l={},o="/",s=[];for(let f=0;f{if(m==="*"){let j=f[x]||"";s=o.slice(0,o.length-j.length).replace(/(.)\/+$/,"$1")}const w=f[x];return p&&!w?h[m]=void 0:h[m]=(w||"").replace(/%2F/g,"/"),h},{}),pathname:o,pathnameBase:s,pattern:e}}function PD(e,t=!1,n=!0){Fn(e==="*"||!e.endsWith("*")||e.endsWith("/*"),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,"/*")}".`);let r=[],l="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(s,f,d)=>(r.push({paramName:f,isOptional:d!=null}),d?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return e.endsWith("*")?(r.push({paramName:"*"}),l+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?l+="\\/*$":e!==""&&e!=="/"&&(l+="(?:(?=\\/|$))"),[new RegExp(l,t?void 0:"i"),r]}function DD(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return Fn(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function Yr(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}var zD=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,RD=e=>zD.test(e);function LD(e,t="/"){let{pathname:n,search:r="",hash:l=""}=typeof e=="string"?Hl(e):e,o;if(n)if(RD(n))o=n;else{if(n.includes("//")){let s=n;n=n.replace(/\/\/+/g,"/"),Fn(!1,`Pathnames cannot have embedded double slashes - normalizing ${s} -> ${n}`)}n.startsWith("/")?o=SS(n.substring(1),"/"):o=SS(n,t)}else o=t;return{pathname:o,search:UD(r),hash:qD(l)}}function SS(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(l=>{l===".."?n.length>1&&n.pop():l!=="."&&n.push(l)}),n.length>1?n.join("/"):"/"}function iv(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function BD(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function G0(e){let t=BD(e);return t.map((n,r)=>r===t.length-1?n.pathname:n.pathnameBase)}function X0(e,t,n,r=!1){let l;typeof e=="string"?l=Hl(e):(l={...e},ot(!l.pathname||!l.pathname.includes("?"),iv("?","pathname","search",l)),ot(!l.pathname||!l.pathname.includes("#"),iv("#","pathname","hash",l)),ot(!l.search||!l.search.includes("#"),iv("#","search","hash",l)));let o=e===""||l.pathname==="",s=o?"/":l.pathname,f;if(s==null)f=n;else{let p=t.length-1;if(!r&&s.startsWith("..")){let x=s.split("/");for(;x[0]==="..";)x.shift(),p-=1;l.pathname=x.join("/")}f=p>=0?t[p]:"/"}let d=LD(l,f),h=s&&s!=="/"&&s.endsWith("/"),m=(o||s===".")&&n.endsWith("/");return!d.pathname.endsWith("/")&&(h||m)&&(d.pathname+="/"),d}var Hr=e=>e.join("/").replace(/\/\/+/g,"/"),ID=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),UD=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,qD=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function $D(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var uE=["POST","PUT","PATCH","DELETE"];new Set(uE);var HD=["GET",...uE];new Set(HD);var Kl=b.createContext(null);Kl.displayName="DataRouter";var Kf=b.createContext(null);Kf.displayName="DataRouterState";b.createContext(!1);var sE=b.createContext({isTransitioning:!1});sE.displayName="ViewTransition";var KD=b.createContext(new Map);KD.displayName="Fetchers";var VD=b.createContext(null);VD.displayName="Await";var ur=b.createContext(null);ur.displayName="Navigation";var Pu=b.createContext(null);Pu.displayName="Location";var sr=b.createContext({outlet:null,matches:[],isDataRoute:!1});sr.displayName="Route";var F0=b.createContext(null);F0.displayName="RouteError";function YD(e,{relative:t}={}){ot(Vl(),"useHref() may be used only in the context of a component.");let{basename:n,navigator:r}=b.useContext(ur),{hash:l,pathname:o,search:s}=Du(e,{relative:t}),f=o;return n!=="/"&&(f=o==="/"?n:Hr([n,o])),r.createHref({pathname:f,search:s,hash:l})}function Vl(){return b.useContext(Pu)!=null}function Ka(){return ot(Vl(),"useLocation() may be used only in the context of a component."),b.useContext(Pu).location}var cE="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function fE(e){b.useContext(ur).static||b.useLayoutEffect(e)}function Z0(){let{isDataRoute:e}=b.useContext(sr);return e?o3():GD()}function GD(){ot(Vl(),"useNavigate() may be used only in the context of a component.");let e=b.useContext(Kl),{basename:t,navigator:n}=b.useContext(ur),{matches:r}=b.useContext(sr),{pathname:l}=Ka(),o=JSON.stringify(G0(r)),s=b.useRef(!1);return fE(()=>{s.current=!0}),b.useCallback((d,h={})=>{if(Fn(s.current,cE),!s.current)return;if(typeof d=="number"){n.go(d);return}let m=X0(d,JSON.parse(o),l,h.relative==="path");e==null&&t!=="/"&&(m.pathname=m.pathname==="/"?t:Hr([t,m.pathname])),(h.replace?n.replace:n.push)(m,h.state,h)},[t,n,o,l,e])}var XD=b.createContext(null);function FD(e){let t=b.useContext(sr).outlet;return b.useMemo(()=>t&&b.createElement(XD.Provider,{value:e},t),[t,e])}function Du(e,{relative:t}={}){let{matches:n}=b.useContext(sr),{pathname:r}=Ka(),l=JSON.stringify(G0(n));return b.useMemo(()=>X0(e,JSON.parse(l),r,t==="path"),[e,l,r,t])}function ZD(e,t){return dE(e,t)}function dE(e,t,n,r,l){ot(Vl(),"useRoutes() may be used only in the context of a component.");let{navigator:o}=b.useContext(ur),{matches:s}=b.useContext(sr),f=s[s.length-1],d=f?f.params:{},h=f?f.pathname:"/",m=f?f.pathnameBase:"/",p=f&&f.route;{let N=p&&p.path||"";hE(h,!p||N.endsWith("*")||N.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${h}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. + +Please change the parent to .`)}let x=Ka(),w;if(t){let N=typeof t=="string"?Hl(t):t;ot(m==="/"||N.pathname?.startsWith(m),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${m}" but pathname "${N.pathname}" was given in the \`location\` prop.`),w=N}else w=x;let j=w.pathname||"/",S=j;if(m!=="/"){let N=m.replace(/^\//,"").split("/");S="/"+j.replace(/^\//,"").split("/").slice(N.length).join("/")}let O=iE(e,{pathname:S});Fn(p||O!=null,`No routes matched location "${w.pathname}${w.search}${w.hash}" `),Fn(O==null||O[O.length-1].route.element!==void 0||O[O.length-1].route.Component!==void 0||O[O.length-1].route.lazy!==void 0,`Matched leaf route at location "${w.pathname}${w.search}${w.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let E=t3(O&&O.map(N=>Object.assign({},N,{params:Object.assign({},d,N.params),pathname:Hr([m,o.encodeLocation?o.encodeLocation(N.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:N.pathname]),pathnameBase:N.pathnameBase==="/"?m:Hr([m,o.encodeLocation?o.encodeLocation(N.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:N.pathnameBase])})),s,n,r,l);return t&&E?b.createElement(Pu.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...w},navigationType:"POP"}},E):E}function WD(){let e=l3(),t=$D(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r="rgba(200,200,200, 0.5)",l={padding:"0.5rem",backgroundColor:r},o={padding:"2px 4px",backgroundColor:r},s=null;return console.error("Error handled by React Router default ErrorBoundary:",e),s=b.createElement(b.Fragment,null,b.createElement("p",null,"💿 Hey developer 👋"),b.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",b.createElement("code",{style:o},"ErrorBoundary")," or"," ",b.createElement("code",{style:o},"errorElement")," prop on your route.")),b.createElement(b.Fragment,null,b.createElement("h2",null,"Unexpected Application Error!"),b.createElement("h3",{style:{fontStyle:"italic"}},t),n?b.createElement("pre",{style:l},n):null,s)}var QD=b.createElement(WD,null),JD=class extends b.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error("React Router caught the following error during render",e)}render(){return this.state.error!==void 0?b.createElement(sr.Provider,{value:this.props.routeContext},b.createElement(F0.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function e3({routeContext:e,match:t,children:n}){let r=b.useContext(Kl);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),b.createElement(sr.Provider,{value:e},n)}function t3(e,t=[],n=null,r=null,l=null){if(e==null){if(!n)return null;if(n.errors)e=n.matches;else if(t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let o=e,s=n?.errors;if(s!=null){let m=o.findIndex(p=>p.route.id&&s?.[p.route.id]!==void 0);ot(m>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(s).join(",")}`),o=o.slice(0,Math.min(o.length,m+1))}let f=!1,d=-1;if(n)for(let m=0;m=0?o=o.slice(0,d+1):o=[o[0]];break}}}let h=n&&r?(m,p)=>{r(m,{location:n.location,params:n.matches?.[0]?.params??{},errorInfo:p})}:void 0;return o.reduceRight((m,p,x)=>{let w,j=!1,S=null,O=null;n&&(w=s&&p.route.id?s[p.route.id]:void 0,S=p.route.errorElement||QD,f&&(d<0&&x===0?(hE("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),j=!0,O=null):d===x&&(j=!0,O=p.route.hydrateFallbackElement||null)));let E=t.concat(o.slice(0,x+1)),N=()=>{let k;return w?k=S:j?k=O:p.route.Component?k=b.createElement(p.route.Component,null):p.route.element?k=p.route.element:k=m,b.createElement(e3,{match:p,routeContext:{outlet:m,matches:E,isDataRoute:n!=null},children:k})};return n&&(p.route.ErrorBoundary||p.route.errorElement||x===0)?b.createElement(JD,{location:n.location,revalidation:n.revalidation,component:S,error:w,children:N(),routeContext:{outlet:null,matches:E,isDataRoute:!0},onError:h}):N()},null)}function W0(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function n3(e){let t=b.useContext(Kl);return ot(t,W0(e)),t}function r3(e){let t=b.useContext(Kf);return ot(t,W0(e)),t}function a3(e){let t=b.useContext(sr);return ot(t,W0(e)),t}function Q0(e){let t=a3(e),n=t.matches[t.matches.length-1];return ot(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function i3(){return Q0("useRouteId")}function l3(){let e=b.useContext(F0),t=r3("useRouteError"),n=Q0("useRouteError");return e!==void 0?e:t.errors?.[n]}function o3(){let{router:e}=n3("useNavigate"),t=Q0("useNavigate"),n=b.useRef(!1);return fE(()=>{n.current=!0}),b.useCallback(async(l,o={})=>{Fn(n.current,cE),n.current&&(typeof l=="number"?e.navigate(l):await e.navigate(l,{fromRouteId:t,...o}))},[e,t])}var jS={};function hE(e,t,n){!t&&!jS[e]&&(jS[e]=!0,Fn(!1,n))}b.memo(u3);function u3({routes:e,future:t,state:n,unstable_onError:r}){return dE(e,void 0,n,r,t)}function $p({to:e,replace:t,state:n,relative:r}){ot(Vl()," may be used only in the context of a component.");let{static:l}=b.useContext(ur);Fn(!l," must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");let{matches:o}=b.useContext(sr),{pathname:s}=Ka(),f=Z0(),d=X0(e,G0(o),s,r==="path"),h=JSON.stringify(d);return b.useEffect(()=>{f(JSON.parse(h),{replace:t,state:n,relative:r})},[f,h,r,t,n]),null}function s3(e){return FD(e.context)}function Da(e){ot(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function c3({basename:e="/",children:t=null,location:n,navigationType:r="POP",navigator:l,static:o=!1}){ot(!Vl(),"You cannot render a inside another . You should never have more than one in your app.");let s=e.replace(/^\/*/,"/"),f=b.useMemo(()=>({basename:s,navigator:l,static:o,future:{}}),[s,l,o]);typeof n=="string"&&(n=Hl(n));let{pathname:d="/",search:h="",hash:m="",state:p=null,key:x="default"}=n,w=b.useMemo(()=>{let j=Yr(d,s);return j==null?null:{location:{pathname:j,search:h,hash:m,state:p,key:x},navigationType:r}},[s,d,h,m,p,x,r]);return Fn(w!=null,` is not able to match the URL "${d}${h}${m}" because it does not start with the basename, so the won't render anything.`),w==null?null:b.createElement(ur.Provider,{value:f},b.createElement(Pu.Provider,{children:t,value:w}))}function f3({children:e,location:t}){return ZD(Hp(e),t)}function Hp(e,t=[]){let n=[];return b.Children.forEach(e,(r,l)=>{if(!b.isValidElement(r))return;let o=[...t,l];if(r.type===b.Fragment){n.push.apply(n,Hp(r.props.children,o));return}ot(r.type===Da,`[${typeof r.type=="string"?r.type:r.type.name}] is not a component. All component children of must be a or `),ot(!r.props.index||!r.props.children,"An index route cannot have child routes.");let s={id:r.props.id||o.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,middleware:r.props.middleware,loader:r.props.loader,action:r.props.action,hydrateFallbackElement:r.props.hydrateFallbackElement,HydrateFallback:r.props.HydrateFallback,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.hasErrorBoundary===!0||r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(s.children=Hp(r.props.children,o)),n.push(s)}),n}var $c="get",Hc="application/x-www-form-urlencoded";function Vf(e){return e!=null&&typeof e.tagName=="string"}function d3(e){return Vf(e)&&e.tagName.toLowerCase()==="button"}function h3(e){return Vf(e)&&e.tagName.toLowerCase()==="form"}function m3(e){return Vf(e)&&e.tagName.toLowerCase()==="input"}function v3(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function p3(e,t){return e.button===0&&(!t||t==="_self")&&!v3(e)}var Oc=null;function y3(){if(Oc===null)try{new FormData(document.createElement("form"),0),Oc=!1}catch{Oc=!0}return Oc}var g3=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function lv(e){return e!=null&&!g3.has(e)?(Fn(!1,`"${e}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${Hc}"`),null):e}function b3(e,t){let n,r,l,o,s;if(h3(e)){let f=e.getAttribute("action");r=f?Yr(f,t):null,n=e.getAttribute("method")||$c,l=lv(e.getAttribute("enctype"))||Hc,o=new FormData(e)}else if(d3(e)||m3(e)&&(e.type==="submit"||e.type==="image")){let f=e.form;if(f==null)throw new Error('Cannot submit a + + {/* Mobile Dropdown Menu */} + {isMobileMenuOpen && ( +
+ {menuItems.map((item) => ( + + ))} +
+ +
+ )} + + + {/* Desktop Sidebar (Collapsible) */} + + + {/* Main Content Area */} +
+ {/* Desktop Header */} +
+

+ {menuItems.find((i) => i.id === activeTab)?.icon} + {activeTab} +

+
+ Last login: {new Date().toLocaleDateString()} +
+
+ +
+
+ {renderContent()} +
+
+
+ + ); +}; + +export default AdminDashboard; diff --git a/src/pages/Login.tsx b/src/pages/Login.tsx new file mode 100644 index 0000000..2995cb8 --- /dev/null +++ b/src/pages/Login.tsx @@ -0,0 +1,101 @@ +import React, { useState } from "react"; +import { useNavigate } from "react-router-dom"; +import { useAuth } from "../context/AuthContext"; +import { Lock } from "lucide-react"; // Ensure lucide-react is installed + +const Login = () => { + const { login } = useAuth(); + const navigate = useNavigate(); + + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + const [error, setError] = useState(""); + + const handleLogin = (e: React.FormEvent) => { + e.preventDefault(); + const success = login(email, password); + + if (success) { + import("../config/credentials").then(({ USERS }) => { + const user = USERS.find((u) => u.email === email); + if (user?.role === "admin") navigate("/admin"); + else navigate("/pos"); + }); + } else { + setError("Invalid Email or Password"); + } + }; + + return ( +
+ {/* Main Card */} +
+
+
+
+ +
+
+ +

+ Welcome Back +

+

+ Sign in to access your dashboard +

+ + +
+ + setEmail(e.target.value)} + /> +
+ +
+ + setPassword(e.target.value)} + /> +
+ + {error && ( +
+ {error} +
+ )} + + + +
+ +
+

+ Protected System • Authorized Personnel Only +

+
+
+
+ ); +}; + +export default Login; diff --git a/src/pages/POSDashboard.tsx b/src/pages/POSDashboard.tsx new file mode 100644 index 0000000..af92d8e --- /dev/null +++ b/src/pages/POSDashboard.tsx @@ -0,0 +1,884 @@ +import React, { useState, useEffect, useMemo, useCallback } from "react"; +import { useAuth } from "../context/AuthContext"; +import { + getProducts, + updateProductStock, + type Product, +} from "../services/ims/product"; +import { createSale, type Sale } from "../services/poss/sales"; +import { createTicket } from "../services/crm/support"; // Import ticket service +import { + Search, + ShoppingCart, + Plus, + Minus, + Trash2, + CreditCard, + Banknote, + QrCode, + Smartphone, + Loader, + CheckCircle, + ChevronUp, + ChevronDown, + AlertTriangle, + X, + Printer, // New icons +} from "lucide-react"; + +interface CartItem extends Product { + cartQty: number; +} + +const POSDashboard = () => { + const { logout, user } = useAuth(); + + // Data State + const [products, setProducts] = useState([]); + const [loading, setLoading] = useState(true); + const [taxRate, setTaxRate] = useState(12); // Store as percentage (e.g., 12 for 12%) + + // UI State + const [searchTerm, setSearchTerm] = useState(""); + const [selectedCategory, setSelectedCategory] = useState("All"); + const [isCartCollapsed, setIsCartCollapsed] = useState(true); // For mobile + const [processing, setProcessing] = useState(false); + const [success, setSuccess] = useState(false); + + // Support Modal State + const [showSupportModal, setShowSupportModal] = useState(false); + const [ticketData, setTicketData] = useState({ + subject: "", + description: "", + severity: "Medium", + }); + const [ticketSending, setTicketSending] = useState(false); + + // Receipt Modal State + const [showReceipt, setShowReceipt] = useState(false); + const [lastSale, setLastSale] = useState(null); + + // Transaction State + const [cart, setCart] = useState([]); + const [discountType, setDiscountType] = useState<"None" | "Senior" | "PWD">( + "None" + ); + const [paymentMethod, setPaymentMethod] = useState("Cash"); + const [amountTendered, setAmountTendered] = useState(""); + const [customerName, setCustomerName] = useState(""); + + // Load Data + const loadData = useCallback(async () => { + try { + const data = await getProducts(); + setProducts(data); + } catch (err) { + console.error("Failed to load products"); + } finally { + setLoading(false); + } + }, []); + + useEffect(() => { + loadData(); + }, [loadData]); + + // --- Calculations --- + const totals = useMemo(() => { + // 1. Gross Total (Price displayed on product) + const grossTotal = cart.reduce( + (sum, item) => sum + item.price * item.cartQty, + 0 + ); + + // 2. Extract VAT using Dynamic Rate (taxRate / 100) + // Formula: Price = Net + Tax. Here we calculate Tax = Price * (taxRate/100) + const currentTaxRate = taxRate / 100; + const vatAmountRaw = grossTotal * currentTaxRate; + const vatableSales = grossTotal - vatAmountRaw; // This is the Base Price + + let finalTax = 0; + let discountAmount = 0; + let grandTotal = 0; + + if (discountType === "None") { + // Regular: Customer pays Gross (Base + Tax) + finalTax = vatAmountRaw; + grandTotal = grossTotal; + } else { + // Senior/PWD: VAT Exempt + 20% Discount on Base Price + finalTax = 0; // Exempt + discountAmount = vatableSales * 0.2; + grandTotal = vatableSales - discountAmount; + } + + return { + grossTotal, + vatableSales, + vatAmount: finalTax, + discountAmount, + grandTotal, + }; + }, [cart, discountType, taxRate]); + + // --- Digital Payment Auto-Fill --- + useEffect(() => { + const isDigital = ["GCash", "Card", "QRPh"].includes(paymentMethod); + if (isDigital) { + // Automatically set tendered to exact total for digital payments + setAmountTendered(totals.grandTotal.toFixed(2)); + } else { + // Clear for cash to allow manual input + setAmountTendered(""); + } + }, [paymentMethod, totals.grandTotal]); + + const changeDue = (Number(amountTendered) || 0) - totals.grandTotal; + const isPaymentDigital = ["GCash", "Card", "QRPh"].includes(paymentMethod); + + // --- Actions --- + const addToCart = (product: Product) => { + // Check Stock Availability + const currentInCart = cart.find((p) => p.id === product.id)?.cartQty || 0; + if (currentInCart + 1 > product.quantity) { + return alert(`Insufficient stock! Only ${product.quantity} available.`); + } + + setCart((prev) => { + const existing = prev.find((p) => p.id === product.id); + if (existing) { + return prev.map((p) => + p.id === product.id ? { ...p, cartQty: p.cartQty + 1 } : p + ); + } + return [...prev, { ...product, cartQty: 1 }]; + }); + }; + + const updateQty = (id: string, delta: number) => { + setCart((prev) => + prev + .map((item) => { + if (item.id === id) { + const newQty = item.cartQty + delta; + // Check stock limit when increasing + if (delta > 0 && newQty > item.quantity) { + alert(`Cannot add more. Only ${item.quantity} in stock.`); + return item; + } + return { ...item, cartQty: Math.max(0, newQty) }; + } + return item; + }) + .filter((item) => item.cartQty > 0) + ); + }; + + const clearCart = () => { + setCart([]); + setAmountTendered(""); + setDiscountType("None"); + setCustomerName(""); + setSuccess(false); + setPaymentMethod("Cash"); + }; + + const handleCheckout = async () => { + if (cart.length === 0) return alert("Cart is empty"); + // Allow equal payment for digital, strictly greater or equal for cash + if ((Number(amountTendered) || 0) < totals.grandTotal - 0.01) + return alert("Insufficient payment"); // -0.01 for floating point tolerance + + setProcessing(true); + + try { + // 1. Create Sale Record + const saleData: Sale = { + customer_name: customerName || null, + user_name: user?.name || "Unknown Cashier", + amount_tendered: Number(amountTendered), + total_amount: totals.grandTotal, + tax_amount: totals.vatAmount, + discount_amount: totals.discountAmount, + change_due: changeDue, + refund_reason: null, + refunded_at: null, + payment_type: paymentMethod, + sale_date: new Date().toISOString(), + status: "completed", + discount_type: discountType, + items: cart.map((item) => ({ + product_name: item.name, + quantity: item.cartQty, + price: item.price, + total: item.price * item.cartQty, + })), + }; + + await createSale(saleData); + + // 2. Update Inventory (Deduct Qty, Add Sold) + await Promise.all( + cart.map((item) => { + const remainingStock = item.quantity - item.cartQty; + const newSold = item.sold + item.cartQty; + return updateProductStock(item.id, remainingStock, newSold); + }) + ); + + // 3. Success Feedback & Receipt Trigger + setSuccess(true); + setLastSale(saleData); + + // Delay clear slightly to show success checkmark, then show receipt + setTimeout(async () => { + setSuccess(false); + setShowReceipt(true); // Open Receipt Modal + clearCart(); + await loadData(); + }, 1500); + } catch (error) { + alert("Transaction failed. Please try again."); + console.error(error); + } finally { + setProcessing(false); + } + }; + + const handlePrintReceipt = () => { + window.print(); + }; + + const handleCreateTicket = async (e: React.FormEvent) => { + e.preventDefault(); + setTicketSending(true); + try { + await createTicket({ + task: "POS Issue", + subject: ticketData.subject, + description: ticketData.description, + requester_email: user?.email || "cashier@pos.com", + issue_category: "Software", + severity: ticketData.severity, + }); + alert("Ticket created successfully!"); + setShowSupportModal(false); + setTicketData({ subject: "", description: "", severity: "Medium" }); + } catch (err) { + alert("Failed to submit ticket."); + } finally { + setTicketSending(false); + } + }; + + // --- Filtering --- + const filteredProducts = products.filter((p) => { + const matchName = p.name.toLowerCase().includes(searchTerm.toLowerCase()); + const matchCat = + selectedCategory === "All" || p.category === selectedCategory; + return matchName && matchCat; + }); + + const categories = [ + "All", + ...Array.from(new Set(products.map((p) => p.category))).filter(Boolean), + ]; + + return ( +
+ {/* Print Styles */} + + + {/* LEFT: Product Panel */} +
+ {/* Header */} +
+
+

+ POS Terminal +

+

+ Cashier: {user?.name} +

+
+
+ {/* Support not in scope */} + {/* */} + +
+
+ + {/* Controls */} +
+
+ + setSearchTerm(e.target.value)} + className="w-full pl-10 p-3 rounded-lg border dark:bg-slate-700 dark:border-slate-600 dark:text-white" + /> +
+
+ {categories.map((cat) => ( + + ))} +
+
+ + {/* Product Grid */} +
+ {loading ? ( +

+ Loading products... +

+ ) : ( + filteredProducts.map((product) => { + const isLowStock = product.quantity <= product.minQuantity; + const isOutOfStock = product.quantity === 0; + return ( +
!isOutOfStock && addToCart(product)} + className={` + bg-white dark:bg-slate-800 p-4 rounded-xl shadow-sm border transition flex flex-col justify-between h-40 relative group + ${ + isOutOfStock + ? "opacity-50 cursor-not-allowed border-slate-200 dark:border-slate-700" + : "hover:shadow-md cursor-pointer active:scale-95 border-transparent dark:border-slate-700" + } + ${ + isLowStock && !isOutOfStock + ? "border-orange-300 dark:border-orange-500/50 ring-1 ring-orange-100 dark:ring-orange-900/20" + : "" + } + `} + > +
+ {isOutOfStock && ( + + OUT OF STOCK + + )} + {isLowStock && !isOutOfStock && ( + + LOW + + )} +
+
+

+ {product.name} +

+

+ {product.category} +

+
+
+
+ + In Stock + + + {product.quantity}{" "} + + (Min: {product.minQuantity}) + + +
+
+ + ₱{product.price} + +
+ +
+
+
+
+ ); + }) + )} +
+
+ + {/* RIGHT: Cart Panel (Collapsible on Mobile) */} +
+ {/* Mobile Handle */} +
setIsCartCollapsed(!isCartCollapsed)} + className="md:hidden h-20 bg-slate-900 text-white flex items-center justify-between px-6 cursor-pointer shrink-0" + > +
+
+ + + {cart.length} + +
+
+ Total: ₱{totals.grandTotal.toFixed(2)} +
+
+ {isCartCollapsed ? : } +
+ + {/* Cart Header (Desktop) */} +
+

+ Current Order +

+ + {cart.length} Items + +
+ + {/* Cart Items List */} +
+ {cart.length === 0 ? ( +
+ +

No items selected

+
+ ) : ( + cart.map((item) => ( +
+
+

+ {item.name} +

+

+ ₱{item.price} x {item.cartQty} +

+
+
+
+ + + {item.cartQty} + + +
+ +
+
+ )) + )} +
+ + {/* Checkout Section */} +
+
+ setCustomerName(e.target.value)} + /> + + + + + + {/* Dynamic Tax Input */} +
+ + setTaxRate(Number(e.target.value))} + /> +
+
+ +
+ + + + +
+ +
+
+ Gross Total + ₱{totals.grossTotal.toFixed(2)} +
+
+ Vatable Sales (Base) + ₱{totals.vatableSales.toFixed(2)} +
+ {discountType === "None" ? ( +
+ VAT ({taxRate}%) + ₱{totals.vatAmount.toFixed(2)} +
+ ) : ( +
+ VAT Exempt + 20% Discount + -₱{totals.discountAmount.toFixed(2)} +
+ )} +
+ Total Due + ₱{totals.grandTotal.toFixed(2)} +
+
+
+ + ₱ + + + !isPaymentDigital && setAmountTendered(e.target.value) + } + readOnly={isPaymentDigital} + /> +
+ {Number(amountTendered) > 0 && ( +
+ Change Due: + + ₱{changeDue.toFixed(2)} + +
+ )} +
+ + +
+
+
+ + {/* Support Ticket Modal */} + {showSupportModal && ( +
+
+
+

+ Report an Issue +

+ +
+
+
+ + + setTicketData({ ...ticketData, subject: e.target.value }) + } + placeholder="e.g., Scanner not working" + /> +
+
+ + +
+
+ +