@local-civics/hub-ui 0.1.209 → 0.1.211

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import React__default, { useCallback } from 'react';
3
3
  import 'external-svg-loader';
4
- import { IconBrandInstagram, IconBrandLinkedin, IconBrandFacebook, IconSettings, IconLogout, IconUser, IconRoute, IconAlbum, IconClipboard, IconFileText, IconBriefcase } from '@tabler/icons';
4
+ import { IconLayoutGrid, IconList, IconBrandInstagram, IconBrandLinkedin, IconBrandFacebook, IconRoute, IconAlbum, IconSwitchHorizontal, IconLogout, IconUser, IconClipboard, IconFileText, IconBriefcase, IconMessageCircle, IconBell } from '@tabler/icons';
5
5
  import LinkifyIt from 'linkify-it';
6
6
  import reactStringReplace from 'react-string-replace';
7
7
  import { Link } from 'react-router-dom';
@@ -33,7 +33,7 @@ function styleInject(css, ref) {
33
33
  }
34
34
  }
35
35
 
36
- var css_248z = "@font-face{font-family:ProximaNova;src:url(https://cdn.localcivics.io/fonts/ProximaNova.otf) format(\"opentype\")}@font-face{font-family:ProximaNova;font-weight:700;src:url(https://cdn.localcivics.io/fonts/ProximaNovaBold.otf) format(\"opentype\")}\n\n/*! tailwindcss v3.2.4 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:\"\"}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-y-0{bottom:0;top:0}.top-0{top:0}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.bottom-1\\/4{bottom:25%}.top-11{top:2.75rem}.top-4{top:1rem}.top-2{top:.5rem}.right-2{right:.5rem}.bottom-5{bottom:1.25rem}.right-5{right:1.25rem}.bottom-20{bottom:5rem}.right-14{right:3.5rem}.z-10{z-index:10}.z-30{z-index:30}.-z-30{z-index:-30}.-z-10{z-index:-10}.z-40{z-index:40}.col-span-2{grid-column:span 2/span 2}.col-span-1{grid-column:span 1/span 1}.col-span-3{grid-column:span 3/span 3}.m-auto{margin:auto}.m-3{margin:.75rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-auto{margin-bottom:auto;margin-top:auto}.my-5{margin-bottom:1.25rem;margin-top:1.25rem}.-ml-1{margin-left:-.25rem}.mt-2{margin-top:.5rem}.-mb-\\[3rem\\]{margin-bottom:-3rem}.mt-5{margin-top:1.25rem}.-mt-4{margin-top:-1rem}.mt-4{margin-top:1rem}.ml-3{margin-left:.75rem}.ml-2{margin-left:.5rem}.-mt-1\\.5{margin-top:-.375rem}.-mt-1{margin-top:-.25rem}.ml-1{margin-left:.25rem}.mt-1{margin-top:.25rem}.mb-2{margin-bottom:.5rem}.mb-5{margin-bottom:1.25rem}.-mt-6{margin-top:-1.5rem}.ml-auto{margin-left:auto}.mt-auto{margin-top:auto}.mb-3{margin-bottom:.75rem}.-mb-7{margin-bottom:-1.75rem}.-ml-2{margin-left:-.5rem}.mb-4{margin-bottom:1rem}.ml-5{margin-left:1.25rem}.mr-1{margin-right:.25rem}.mt-3{margin-top:.75rem}.mt-0\\.5{margin-top:.125rem}.mt-0{margin-top:0}.mb-1{margin-bottom:.25rem}.box-border{box-sizing:border-box}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.\\!contents{display:contents!important}.hidden{display:none}.h-1{height:.25rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-screen{height:100vh}.h-24{height:6rem}.h-9{height:2.25rem}.h-full{height:100%}.h-8{height:2rem}.h-16{height:4rem}.h-\\[30px\\]{height:30px}.h-\\[5px\\]{height:5px}.h-60{height:15rem}.h-\\[22rem\\]{height:22rem}.h-28{height:7rem}.h-\\[16rem\\]{height:16rem}.h-14{height:3.5rem}.h-\\[18rem\\]{height:18rem}.h-3\\.5{height:.875rem}.h-\\[12rem\\]{height:12rem}.h-\\[6rem\\]{height:6rem}.h-96{height:24rem}.h-max{height:-moz-max-content;height:max-content}.h-2{height:.5rem}.h-12{height:3rem}.h-20{height:5rem}.h-10{height:2.5rem}.max-h-\\[24rem\\]{max-height:24rem}.max-h-\\[12rem\\]{max-height:12rem}.max-h-\\[20rem\\]{max-height:20rem}.max-h-\\[30rem\\]{max-height:30rem}.max-h-\\[18rem\\]{max-height:18rem}.max-h-96{max-height:24rem}.max-h-\\[25rem\\]{max-height:25rem}.max-h-\\[14rem\\]{max-height:14rem}.min-h-16{min-height:4rem}.min-h-96{min-height:24rem}.min-h-\\[20rem\\]{min-height:20rem}.min-h-5{min-height:1.25rem}.min-h-48{min-height:12rem}.w-full{width:100%}.w-1{width:.25rem}.w-12{width:3rem}.w-3{width:.75rem}.w-4{width:1rem}.w-20{width:5rem}.w-5{width:1.25rem}.w-28{width:7rem}.w-6{width:1.5rem}.w-36{width:9rem}.w-7{width:1.75rem}.w-screen{width:100vw}.w-60{width:15rem}.w-9{width:2.25rem}.w-8{width:2rem}.w-\\[230px\\]{width:230px}.w-24{width:6rem}.w-\\[30px\\]{width:30px}.w-\\[5px\\]{width:5px}.w-11{width:2.75rem}.w-48{width:12rem}.w-\\[17\\.7rem\\]{width:17.7rem}.w-\\[16\\.7rem\\]{width:16.7rem}.w-max{width:-moz-max-content;width:max-content}.w-14{width:3.5rem}.w-\\[14rem\\]{width:14rem}.w-16{width:4rem}.w-3\\.5{width:.875rem}.w-96{width:24rem}.w-\\[18rem\\]{width:18rem}.w-44{width:11rem}.w-40{width:10rem}.w-10{width:2.5rem}.min-w-0{min-width:0}.min-w-6{min-width:1.5rem}.min-w-64{min-width:16rem}.min-w-3{min-width:.75rem}.min-w-\\[35rem\\]{min-width:35rem}.max-w-\\[64rem\\]{max-width:64rem}.max-w-xs{max-width:20rem}.max-w-\\[62\\.5rem\\]{max-width:62.5rem}.max-w-\\[12rem\\]{max-width:12rem}.max-w-full{max-width:100%}.max-w-\\[16rem\\]{max-width:16rem}.max-w-\\[18rem\\]{max-width:18rem}.max-w-\\[20rem\\]{max-width:20rem}.max-w-\\[40rem\\]{max-width:40rem}.max-w-\\[7rem\\]{max-width:7rem}.max-w-\\[22rem\\]{max-width:22rem}.max-w-lg{max-width:32rem}.max-w-\\[25rem\\]{max-width:25rem}.max-w-md{max-width:28rem}.max-w-\\[50rem\\]{max-width:50rem}.max-w-3xl{max-width:48rem}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.-translate-y-3\\.5{--tw-translate-y:-0.875rem}.-translate-y-3,.-translate-y-3\\.5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-3{--tw-translate-y:-0.75rem}.scale-\\[0\\.9\\]{--tw-scale-x:0.9;--tw-scale-y:0.9}.scale-\\[0\\.50\\],.scale-\\[0\\.9\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\\[0\\.50\\]{--tw-scale-x:0.50;--tw-scale-y:0.50}.scale-\\[0\\.75\\]{--tw-scale-x:0.75;--tw-scale-y:0.75}.scale-\\[0\\.75\\],.scale-\\[1\\.25\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\\[1\\.25\\]{--tw-scale-x:1.25;--tw-scale-y:1.25}.scale-\\[1\\.50\\]{--tw-scale-x:1.50;--tw-scale-y:1.50}.scale-\\[1\\.50\\],.scale-\\[1\\.75\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\\[1\\.75\\]{--tw-scale-x:1.75;--tw-scale-y:1.75}.scale-\\[2\\.00\\]{--tw-scale-x:2.00;--tw-scale-y:2.00}.scale-\\[2\\.00\\],.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.auto-cols-max{grid-auto-columns:max-content}.grid-flow-col{grid-auto-flow:column}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-center{align-content:center}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-center{justify-items:center}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-1{gap:.25rem}.gap-0\\.5{gap:.125rem}.gap-0{gap:0}.gap-2\\.5{gap:.625rem}.gap-8{gap:2rem}.gap-7{gap:1.75rem}.gap-3{gap:.75rem}.gap-5{gap:1.25rem}.gap-10{gap:2.5rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-y-2{row-gap:.5rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-y-6{row-gap:1.5rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-4{row-gap:1rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-5{row-gap:1.25rem}.gap-y-12{row-gap:3rem}.gap-y-8{row-gap:2rem}.gap-y-3{row-gap:.75rem}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.5rem*var(--tw-space-x-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.75rem*var(--tw-space-x-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2rem*var(--tw-space-y-reverse));margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2.5rem*var(--tw-space-y-reverse));margin-top:calc(2.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-12>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(3rem*var(--tw-space-y-reverse));margin-top:calc(3rem*(1 - var(--tw-space-y-reverse)))}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-scroll{overflow-y:scroll}.overscroll-contain{overscroll-behavior:contain}.overscroll-none{overscroll-behavior:none}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.rounded{border-radius:.25rem}.rounded-sm{border-radius:.125rem}.rounded-md{border-radius:.375rem}.rounded-full{border-radius:9999px}.rounded-xl{border-radius:.75rem}.rounded-\\[10px\\]{border-radius:10px}.rounded-lg{border-radius:.5rem}.rounded-b-md{border-bottom-left-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-b{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-x{border-left-width:1px;border-right-width:1px}.border-t{border-top-width:1px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-b-2{border-bottom-width:2px}.border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}.border-violet-300{--tw-border-opacity:1;border-color:rgb(196 181 253/var(--tw-border-opacity))}.border-orange-300{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}.border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity))}.border-emerald-300{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}.border-sky-300{--tw-border-opacity:1;border-color:rgb(125 211 252/var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.border-slate-500{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}.border-slate-600{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.border-sky-400{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}.border-sky-600{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.border-green-600{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity))}.border-primary-600{--tw-border-opacity:1;border-color:rgb(58 209 242/var(--tw-border-opacity))}.border-primary-400{--tw-border-opacity:1;border-color:rgb(97 218 245/var(--tw-border-opacity))}.border-secondary-600{--tw-border-opacity:1;border-color:rgb(34 42 57/var(--tw-border-opacity))}.border-secondary-400{--tw-border-opacity:1;border-color:rgb(78 85 97/var(--tw-border-opacity))}.border-rose-600{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.border-rose-400{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity))}.border-emerald-600{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.border-emerald-400{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}.border-sky-400\\/95{border-color:rgba(56,189,248,.95)}.border-slate-100{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.border-blue-600{--tw-border-opacity:1;border-color:rgb(1 95 159/var(--tw-border-opacity))}.border-blue-400{--tw-border-opacity:1;border-color:rgb(1 112 187/var(--tw-border-opacity))}.border-dark-blue-600{--tw-border-opacity:1;border-color:rgb(10 15 46/var(--tw-border-opacity))}.border-dark-blue-400{--tw-border-opacity:1;border-color:rgb(35 42 58/var(--tw-border-opacity))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-sky-blue-400\\/30{border-color:rgba(59,208,242,.3)}.border-mint-400\\/30{border-color:rgba(30,226,175,.3)}.border-gold-400\\/30{border-color:rgba(255,212,77,.3)}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.border-zinc-100{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}.border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.border-rose-300{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity))}.border-b-sky-400{--tw-border-opacity:1;border-bottom-color:rgb(56 189 248/var(--tw-border-opacity))}.bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.bg-red-300{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.bg-violet-200{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}.bg-violet-300{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}.bg-orange-200{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}.bg-orange-300{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}.bg-amber-200{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.bg-amber-300{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}.bg-emerald-200{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}.bg-emerald-300{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}.bg-sky-200{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}.bg-sky-300{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-slate-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.bg-sky-400{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}.bg-sky-600{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.bg-green-400{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgb(58 209 242/var(--tw-bg-opacity))}.bg-primary-400{--tw-bg-opacity:1;background-color:rgb(97 218 245/var(--tw-bg-opacity))}.bg-secondary-600{--tw-bg-opacity:1;background-color:rgb(34 42 57/var(--tw-bg-opacity))}.bg-secondary-400{--tw-bg-opacity:1;background-color:rgb(78 85 97/var(--tw-bg-opacity))}.bg-rose-600{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.bg-rose-400{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}.bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.bg-emerald-400{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity))}.bg-sky-400\\/95{background-color:rgba(56,189,248,.95)}.bg-slate-50\\/95{background-color:rgba(248,250,252,.95)}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(1 95 159/var(--tw-bg-opacity))}.bg-blue-400{--tw-bg-opacity:1;background-color:rgb(1 112 187/var(--tw-bg-opacity))}.bg-dark-blue-600{--tw-bg-opacity:1;background-color:rgb(10 15 46/var(--tw-bg-opacity))}.bg-dark-blue-400{--tw-bg-opacity:1;background-color:rgb(35 42 58/var(--tw-bg-opacity))}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-gray-500\\/75{background-color:hsla(220,9%,46%,.75)}.bg-gray-300\\/75{background-color:rgba(209,213,219,.75)}.bg-sky-blue-200{--tw-bg-opacity:1;background-color:rgb(163 228 243/var(--tw-bg-opacity))}.bg-sky-blue-400{--tw-bg-opacity:1;background-color:rgb(59 208 242/var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-sky-blue-400\\/25{background-color:rgba(59,208,242,.25)}.bg-mint-400\\/25{background-color:rgba(30,226,175,.25)}.bg-mint-400{--tw-bg-opacity:1;background-color:rgb(30 226 175/var(--tw-bg-opacity))}.bg-gold-400\\/25{background-color:rgba(255,212,77,.25)}.bg-gold-400{--tw-bg-opacity:1;background-color:rgb(255 212 77/var(--tw-bg-opacity))}.bg-sky-100{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.bg-gray-800\\/75{background-color:rgba(31,41,55,.75)}.bg-cyan-400{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity))}.bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.bg-gray-200\\/75{background-color:rgba(229,231,235,.75)}.bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.bg-zinc-50\\/30{background-color:hsla(0,0%,98%,.3)}.fill-red-300{fill:#fca5a5}.fill-violet-300{fill:#c4b5fd}.fill-orange-300{fill:#fdba74}.fill-amber-300{fill:#fcd34d}.fill-emerald-300{fill:#6ee7b7}.fill-sky-300{fill:#7dd3fc}.fill-gray-300{fill:#d1d5db}.fill-white{fill:#fff}.fill-gray-600{fill:#4b5563}.fill-current{fill:currentColor}.fill-slate-600{fill:#475569}.stroke-red-300{stroke:#fca5a5}.stroke-violet-300{stroke:#c4b5fd}.stroke-orange-300{stroke:#fdba74}.stroke-amber-300{stroke:#fcd34d}.stroke-emerald-300{stroke:#6ee7b7}.stroke-sky-300{stroke:#7dd3fc}.stroke-gray-300{stroke:#d1d5db}.stroke-gray-600{stroke:#4b5563}.stroke-current{stroke:currentColor}.stroke-slate-600{stroke:#475569}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-2{padding:.5rem}.p-1{padding:.25rem}.p-8{padding:2rem}.p-5{padding:1.25rem}.p-4{padding:1rem}.p-2\\.5{padding:.625rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-0{padding-bottom:0;padding-top:0}.py-1{padding-bottom:.25rem;padding-top:.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.px-8{padding-left:2rem;padding-right:2rem}.py-2\\.5{padding-bottom:.625rem;padding-top:.625rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.py-8{padding-bottom:2rem;padding-top:2rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.px-12{padding-left:3rem;padding-right:3rem}.py-4{padding-bottom:1rem;padding-top:1rem}.px-3\\.5{padding-left:.875rem;padding-right:.875rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.px-16{padding-left:4rem;padding-right:4rem}.pt-2{padding-top:.5rem}.pt-6{padding-top:1.5rem}.pr-7{padding-right:1.75rem}.pt-16{padding-top:4rem}.pl-2{padding-left:.5rem}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.pt-5{padding-top:1.25rem}.pb-5{padding-bottom:1.25rem}.pt-1{padding-top:.25rem}.pb-12{padding-bottom:3rem}.pt-3{padding-top:.75rem}.pb-24{padding-bottom:6rem}.pt-4{padding-top:1rem}.pb-3{padding-bottom:.75rem}.pb-8{padding-bottom:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-start{text-align:start}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.font-proxima{font-family:ProximaNova}.text-sm{font-size:.875rem;line-height:1.25rem}.text-\\[0\\.5rem\\]{font-size:.5rem}.text-xs{font-size:.75rem;line-height:1rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-\\[3rem\\]{font-size:3rem}.text-\\[2rem\\]{font-size:2rem}.text-\\[10px\\]{font-size:10px}.text-\\[11\\.5px\\]{font-size:11.5px}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-base{font-size:1rem;line-height:1.5rem}.text-\\[9px\\]{font-size:9px}.text-\\[11px\\]{font-size:11px}.font-semibold{font-weight:600}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-black{font-weight:900}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-6{line-height:1.5rem}.leading-none{line-height:1}.leading-tight{line-height:1.25}.leading-relaxed{line-height:1.625}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.tracking-tight{letter-spacing:-.025em}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.text-violet-300{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}.text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity))}.text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}.text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}.text-sky-300{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}.text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgb(58 209 242/var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgb(97 218 245/var(--tw-text-opacity))}.text-secondary-600{--tw-text-opacity:1;color:rgb(34 42 57/var(--tw-text-opacity))}.text-secondary-400{--tw-text-opacity:1;color:rgb(78 85 97/var(--tw-text-opacity))}.text-rose-600{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.text-rose-400{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgb(1 95 159/var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity:1;color:rgb(1 112 187/var(--tw-text-opacity))}.text-dark-blue-600{--tw-text-opacity:1;color:rgb(10 15 46/var(--tw-text-opacity))}.text-dark-blue-400{--tw-text-opacity:1;color:rgb(35 42 58/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-sky-blue-400{--tw-text-opacity:1;color:rgb(59 208 242/var(--tw-text-opacity))}.text-mint-400{--tw-text-opacity:1;color:rgb(30 226 175/var(--tw-text-opacity))}.text-gold-400{--tw-text-opacity:1;color:rgb(255 212 77/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-sky-200{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}.text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.text-sky-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-cyan-100{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.text-zinc-600{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.text-rose-300{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}.text-zinc-800{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}.text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.text-emerald-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.placeholder-slate-400::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}.placeholder-slate-400::placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-2xl,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-gray-400{--tw-shadow-color:#9ca3af;--tw-shadow:var(--tw-shadow-colored)}.drop-shadow-\\[inherit\\]{--tw-drop-shadow:drop-shadow(inherit)}.drop-shadow-\\[inherit\\],.drop-shadow-md{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-md{--tw-drop-shadow:drop-shadow(0 4px 3px rgba(0,0,0,.07)) drop-shadow(0 2px 2px rgba(0,0,0,.06))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-500{transition-duration:.5s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.file\\:mr-4::file-selector-button{margin-right:1rem}.file\\:rounded-full::file-selector-button{border-radius:9999px}.file\\:border-0::file-selector-button{border-width:0}.file\\:bg-violet-50::file-selector-button{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity))}.file\\:py-2::file-selector-button{padding-bottom:.5rem;padding-top:.5rem}.file\\:px-4::file-selector-button{padding-left:1rem;padding-right:1rem}.file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\\:font-semibold::file-selector-button{font-weight:600}.file\\:text-violet-700::file-selector-button{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}.placeholder\\:text-slate-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.placeholder\\:text-slate-400::placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.after\\:absolute:after{content:var(--tw-content);position:absolute}.after\\:top-0\\.5:after{content:var(--tw-content);top:.125rem}.after\\:left-\\[2px\\]:after{content:var(--tw-content);left:2px}.after\\:top-0:after{content:var(--tw-content);top:0}.after\\:h-5:after{content:var(--tw-content);height:1.25rem}.after\\:w-5:after{content:var(--tw-content);width:1.25rem}.after\\:rounded-full:after{border-radius:9999px;content:var(--tw-content)}.after\\:border:after{border-width:1px;content:var(--tw-content)}.after\\:border-gray-300:after{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity));content:var(--tw-content)}.after\\:bg-white:after{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));content:var(--tw-content)}.after\\:transition-all:after{content:var(--tw-content);transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.after\\:content-\\[\\'\\'\\]:after{--tw-content:\"\";content:var(--tw-content)}.invalid\\:border-pink-500:invalid{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}.invalid\\:text-pink-600:invalid{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}.hover\\:border-b-2:hover{border-bottom-width:2px}.hover\\:border-red-400:hover{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}.hover\\:border-violet-400:hover{--tw-border-opacity:1;border-color:rgb(167 139 250/var(--tw-border-opacity))}.hover\\:border-orange-400:hover{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity))}.hover\\:border-amber-400:hover{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}.hover\\:border-emerald-400:hover{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}.hover\\:border-sky-400:hover{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}.hover\\:border-gray-200:hover{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.hover\\:border-slate-600:hover{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.hover\\:border-sky-600:hover{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.hover\\:border-green-600:hover{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.hover\\:border-primary-600:hover{--tw-border-opacity:1;border-color:rgb(58 209 242/var(--tw-border-opacity))}.hover\\:border-secondary-600:hover{--tw-border-opacity:1;border-color:rgb(34 42 57/var(--tw-border-opacity))}.hover\\:border-rose-600:hover{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.hover\\:border-emerald-600:hover{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.hover\\:border-sky-300\\/95:hover{border-color:rgba(125,211,252,.95)}.hover\\:border-blue-600:hover{--tw-border-opacity:1;border-color:rgb(1 95 159/var(--tw-border-opacity))}.hover\\:border-dark-blue-600:hover{--tw-border-opacity:1;border-color:rgb(10 15 46/var(--tw-border-opacity))}.hover\\:border-sky-100:hover{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}.hover\\:border-b-sky-400:hover{--tw-border-opacity:1;border-bottom-color:rgb(56 189 248/var(--tw-border-opacity))}.hover\\:bg-red-200:hover{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.hover\\:bg-red-300:hover{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.hover\\:bg-violet-200:hover{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}.hover\\:bg-violet-300:hover{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}.hover\\:bg-orange-200:hover{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}.hover\\:bg-orange-300:hover{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}.hover\\:bg-amber-200:hover{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.hover\\:bg-amber-300:hover{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}.hover\\:bg-emerald-200:hover{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}.hover\\:bg-emerald-300:hover{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}.hover\\:bg-sky-200:hover{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}.hover\\:bg-sky-300:hover{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.hover\\:bg-slate-600:hover{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.hover\\:bg-sky-600:hover{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.hover\\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.hover\\:bg-primary-600:hover{--tw-bg-opacity:1;background-color:rgb(58 209 242/var(--tw-bg-opacity))}.hover\\:bg-secondary-600:hover{--tw-bg-opacity:1;background-color:rgb(34 42 57/var(--tw-bg-opacity))}.hover\\:bg-rose-600:hover{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.hover\\:bg-emerald-600:hover{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.hover\\:bg-sky-400\\/95:hover{background-color:rgba(56,189,248,.95)}.hover\\:bg-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(1 95 159/var(--tw-bg-opacity))}.hover\\:bg-dark-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(10 15 46/var(--tw-bg-opacity))}.hover\\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.hover\\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.hover\\:bg-sky-50:hover{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.hover\\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\\:bg-sky-400:hover{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}.hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.hover\\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.hover\\:stroke-red-400:hover{stroke:#f87171}.hover\\:stroke-violet-400:hover{stroke:#a78bfa}.hover\\:stroke-orange-400:hover{stroke:#fb923c}.hover\\:stroke-amber-400:hover{stroke:#fbbf24}.hover\\:stroke-emerald-400:hover{stroke:#34d399}.hover\\:stroke-sky-400:hover{stroke:#38bdf8}.hover\\:stroke-gray-400:hover{stroke:#9ca3af}.hover\\:font-semibold:hover{font-weight:600}.hover\\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.hover\\:text-violet-400:hover{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}.hover\\:text-orange-400:hover{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}.hover\\:text-amber-400:hover{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.hover\\:text-emerald-400:hover{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}.hover\\:text-sky-400:hover{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}.hover\\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.hover\\:text-slate-600:hover{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.hover\\:text-sky-600:hover{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.hover\\:text-green-600:hover{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.hover\\:text-primary-600:hover{--tw-text-opacity:1;color:rgb(58 209 242/var(--tw-text-opacity))}.hover\\:text-secondary-600:hover{--tw-text-opacity:1;color:rgb(34 42 57/var(--tw-text-opacity))}.hover\\:text-rose-600:hover{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.hover\\:text-emerald-600:hover{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.hover\\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(1 95 159/var(--tw-text-opacity))}.hover\\:text-dark-blue-600:hover{--tw-text-opacity:1;color:rgb(10 15 46/var(--tw-text-opacity))}.hover\\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.hover\\:text-slate-400:hover{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.hover\\:text-slate-700:hover{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.hover\\:text-slate-500:hover{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.hover\\:text-sky-500:hover{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.hover\\:text-cyan-400:hover{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}.hover\\:text-rose-400:hover{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.hover\\:text-green-500:hover{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.hover\\:text-zinc-500:hover{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:file\\:bg-violet-100::file-selector-button:hover{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.hover\\:placeholder\\:text-slate-600:hover::-moz-placeholder{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.hover\\:placeholder\\:text-slate-600:hover::placeholder{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.focus\\:border-slate-600:focus{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.focus\\:border-sky-600:focus{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.focus\\:border-green-600:focus{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.focus\\:border-primary-600:focus{--tw-border-opacity:1;border-color:rgb(58 209 242/var(--tw-border-opacity))}.focus\\:border-secondary-600:focus{--tw-border-opacity:1;border-color:rgb(34 42 57/var(--tw-border-opacity))}.focus\\:border-rose-600:focus{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.focus\\:border-emerald-600:focus{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.focus\\:border-sky-300\\/95:focus{border-color:rgba(125,211,252,.95)}.focus\\:border-blue-600:focus{--tw-border-opacity:1;border-color:rgb(1 95 159/var(--tw-border-opacity))}.focus\\:border-dark-blue-600:focus{--tw-border-opacity:1;border-color:rgb(10 15 46/var(--tw-border-opacity))}.focus\\:border-sky-500:focus{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.focus\\:border-sky-100:focus{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}.focus\\:bg-slate-600:focus{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.focus\\:bg-sky-600:focus{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.focus\\:bg-green-600:focus{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.focus\\:bg-primary-600:focus{--tw-bg-opacity:1;background-color:rgb(58 209 242/var(--tw-bg-opacity))}.focus\\:bg-secondary-600:focus{--tw-bg-opacity:1;background-color:rgb(34 42 57/var(--tw-bg-opacity))}.focus\\:bg-rose-600:focus{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.focus\\:bg-emerald-600:focus{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.focus\\:bg-blue-600:focus{--tw-bg-opacity:1;background-color:rgb(1 95 159/var(--tw-bg-opacity))}.focus\\:bg-dark-blue-600:focus{--tw-bg-opacity:1;background-color:rgb(10 15 46/var(--tw-bg-opacity))}.focus\\:bg-gray-50:focus{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.focus\\:text-slate-600:focus{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.focus\\:text-sky-600:focus{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.focus\\:text-green-600:focus{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.focus\\:text-primary-600:focus{--tw-text-opacity:1;color:rgb(58 209 242/var(--tw-text-opacity))}.focus\\:text-secondary-600:focus{--tw-text-opacity:1;color:rgb(34 42 57/var(--tw-text-opacity))}.focus\\:text-rose-600:focus{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.focus\\:text-emerald-600:focus{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.focus\\:text-blue-600:focus{--tw-text-opacity:1;color:rgb(1 95 159/var(--tw-text-opacity))}.focus\\:text-dark-blue-600:focus{--tw-text-opacity:1;color:rgb(10 15 46/var(--tw-text-opacity))}.focus\\:text-white:focus{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:ring-sky-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity))}.focus\\:ring-sky-100:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(224 242 254/var(--tw-ring-opacity))}.focus\\:invalid\\:border-pink-500:invalid:focus{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}.focus\\:invalid\\:ring-pink-500:invalid:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(236 72 153/var(--tw-ring-opacity))}.active\\:border-slate-600:active{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.active\\:border-sky-600:active{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.active\\:border-green-600:active{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.active\\:border-primary-600:active{--tw-border-opacity:1;border-color:rgb(58 209 242/var(--tw-border-opacity))}.active\\:border-secondary-600:active{--tw-border-opacity:1;border-color:rgb(34 42 57/var(--tw-border-opacity))}.active\\:border-rose-600:active{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.active\\:border-emerald-600:active{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.active\\:border-sky-300\\/95:active{border-color:rgba(125,211,252,.95)}.active\\:border-blue-600:active{--tw-border-opacity:1;border-color:rgb(1 95 159/var(--tw-border-opacity))}.active\\:border-dark-blue-600:active{--tw-border-opacity:1;border-color:rgb(10 15 46/var(--tw-border-opacity))}.active\\:bg-slate-600:active{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.active\\:bg-sky-600:active{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.active\\:bg-green-600:active{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.active\\:bg-primary-600:active{--tw-bg-opacity:1;background-color:rgb(58 209 242/var(--tw-bg-opacity))}.active\\:bg-secondary-600:active{--tw-bg-opacity:1;background-color:rgb(34 42 57/var(--tw-bg-opacity))}.active\\:bg-rose-600:active{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.active\\:bg-emerald-600:active{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.active\\:bg-blue-600:active{--tw-bg-opacity:1;background-color:rgb(1 95 159/var(--tw-bg-opacity))}.active\\:bg-dark-blue-600:active{--tw-bg-opacity:1;background-color:rgb(10 15 46/var(--tw-bg-opacity))}.active\\:bg-gray-50:active{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.active\\:bg-white:active{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.active\\:text-slate-600:active{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.active\\:text-sky-600:active{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.active\\:text-green-600:active{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.active\\:text-primary-600:active{--tw-text-opacity:1;color:rgb(58 209 242/var(--tw-text-opacity))}.active\\:text-secondary-600:active{--tw-text-opacity:1;color:rgb(34 42 57/var(--tw-text-opacity))}.active\\:text-rose-600:active{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.active\\:text-emerald-600:active{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.active\\:text-blue-600:active{--tw-text-opacity:1;color:rgb(1 95 159/var(--tw-text-opacity))}.active\\:text-dark-blue-600:active{--tw-text-opacity:1;color:rgb(10 15 46/var(--tw-text-opacity))}.active\\:text-white:active{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.disabled\\:border-slate-200:disabled{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.disabled\\:bg-slate-50:disabled{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.disabled\\:text-slate-500:disabled{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.disabled\\:text-gray-600:disabled{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.disabled\\:shadow-none:disabled{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.peer:checked~.peer-checked\\:bg-blue-600{--tw-bg-opacity:1;background-color:rgb(1 95 159/var(--tw-bg-opacity))}.peer:checked~.peer-checked\\:after\\:translate-x-full:after{--tw-translate-x:100%;content:var(--tw-content);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:checked~.peer-checked\\:after\\:border-white:after{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity));content:var(--tw-content)}.peer:focus~.peer-focus\\:ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.peer:focus~.peer-focus\\:ring-blue-300{--tw-ring-opacity:1;--tw-ring-color:rgb(147 197 253/var(--tw-ring-opacity))}@media (prefers-color-scheme:dark){.dark\\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.dark\\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.peer:focus~.dark\\:peer-focus\\:ring-blue-800{--tw-ring-opacity:1;--tw-ring-color:rgb(30 64 175/var(--tw-ring-opacity))}}@media (min-width:640px){.sm\\:flex{display:flex}.sm\\:place-content-between{place-content:space-between}}@media (min-width:768px){.md\\:invisible{visibility:hidden}.md\\:mr-6{margin-right:1.5rem}.md\\:flex{display:flex}.md\\:grid{display:grid}.md\\:hidden{display:none}.md\\:h-6{height:1.5rem}.md\\:h-\\[24rem\\]{height:24rem}.md\\:w-6{width:1.5rem}.md\\:w-\\[28rem\\]{width:28rem}.md\\:w-\\[40rem\\]{width:40rem}.md\\:w-\\[30rem\\]{width:30rem}.md\\:w-\\[20rem\\]{width:20rem}.md\\:w-\\[24rem\\]{width:24rem}.md\\:w-\\[16rem\\]{width:16rem}.md\\:w-\\[32rem\\]{width:32rem}.md\\:w-max{width:-moz-max-content;width:max-content}.md\\:w-\\[50rem\\]{width:50rem}.md\\:min-w-\\[30rem\\]{min-width:30rem}.md\\:max-w-\\[22rem\\]{max-width:22rem}.md\\:max-w-\\[30rem\\]{max-width:30rem}.md\\:max-w-\\[40rem\\]{max-width:40rem}.md\\:scale-\\[1\\.2\\]{--tw-scale-x:1.2;--tw-scale-y:1.2;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.md\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:flex-row{flex-direction:row}.md\\:flex-col{flex-direction:column}.md\\:items-start{align-items:flex-start}.md\\:items-center{align-items:center}.md\\:justify-between{justify-content:space-between}.md\\:border-b{border-bottom-width:1px}.md\\:p-1\\.5{padding:.375rem}.md\\:p-1{padding:.25rem}.md\\:px-2{padding-left:.5rem;padding-right:.5rem}.md\\:text-sm{font-size:.875rem;line-height:1.25rem}.md\\:shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}}@media (min-width:1024px){.lg\\:sticky{position:sticky}.lg\\:top-0{top:0}.lg\\:top-2{top:.5rem}.lg\\:right-3{right:.75rem}.lg\\:col-span-2{grid-column:span 2/span 2}.lg\\:mt-0{margin-top:0}.lg\\:inline-block{display:inline-block}.lg\\:flex{display:flex}.lg\\:h-screen{height:100vh}.lg\\:h-\\[22rem\\]{height:22rem}.lg\\:h-32{height:8rem}.lg\\:h-4{height:1rem}.lg\\:h-\\[18rem\\]{height:18rem}.lg\\:h-\\[5\\.5rem\\]{height:5.5rem}.lg\\:min-h-24{min-height:6rem}.lg\\:w-\\[230px\\]{width:230px}.lg\\:w-32{width:8rem}.lg\\:w-4{width:1rem}.lg\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\\:gap-2{gap:.5rem}.lg\\:gap-1{gap:.25rem}.lg\\:gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.lg\\:gap-y-3{row-gap:.75rem}.lg\\:self-start{align-self:flex-start}.lg\\:overflow-y-auto{overflow-y:auto}.lg\\:px-0{padding-left:0;padding-right:0}.lg\\:px-36{padding-left:9rem;padding-right:9rem}.lg\\:py-3{padding-bottom:.75rem;padding-top:.75rem}.lg\\:px-5{padding-left:1.25rem;padding-right:1.25rem}.lg\\:px-56{padding-left:14rem;padding-right:14rem}.lg\\:text-sm{font-size:.875rem;line-height:1.25rem}.lg\\:text-4xl{font-size:2.25rem;line-height:2.5rem}}";
36
+ var css_248z = "@font-face{font-family:ProximaNova;src:url(https://cdn.localcivics.io/fonts/ProximaNova.otf) format(\"opentype\")}@font-face{font-family:ProximaNova;font-weight:700;src:url(https://cdn.localcivics.io/fonts/ProximaNovaBold.otf) format(\"opentype\")}\n\n/*! tailwindcss v3.2.4 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:\"\"}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-y-0{bottom:0;top:0}.top-0{top:0}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.bottom-1\\/4{bottom:25%}.top-11{top:2.75rem}.top-4{top:1rem}.top-2{top:.5rem}.right-2{right:.5rem}.bottom-5{bottom:1.25rem}.right-5{right:1.25rem}.bottom-20{bottom:5rem}.right-14{right:3.5rem}.-right-0\\.5{right:-.125rem}.-top-0\\.5{top:-.125rem}.-right-0{right:0}.-top-0{top:0}.z-10{z-index:10}.z-30{z-index:30}.-z-30{z-index:-30}.-z-10{z-index:-10}.z-40{z-index:40}.col-span-2{grid-column:span 2/span 2}.col-span-1{grid-column:span 1/span 1}.col-span-3{grid-column:span 3/span 3}.m-auto{margin:auto}.m-3{margin:.75rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-auto{margin-bottom:auto;margin-top:auto}.my-5{margin-bottom:1.25rem;margin-top:1.25rem}.-ml-1{margin-left:-.25rem}.mt-2{margin-top:.5rem}.-mb-\\[3rem\\]{margin-bottom:-3rem}.mt-5{margin-top:1.25rem}.-mt-4{margin-top:-1rem}.mt-4{margin-top:1rem}.ml-3{margin-left:.75rem}.ml-2{margin-left:.5rem}.-mt-1\\.5{margin-top:-.375rem}.-mt-1{margin-top:-.25rem}.ml-1{margin-left:.25rem}.mt-1{margin-top:.25rem}.mb-2{margin-bottom:.5rem}.mb-5{margin-bottom:1.25rem}.-mt-6{margin-top:-1.5rem}.ml-auto{margin-left:auto}.ml-1\\.5{margin-left:.375rem}.mt-2\\.5{margin-top:.625rem}.mt-1\\.5{margin-top:.375rem}.mt-0\\.5{margin-top:.125rem}.mt-0{margin-top:0}.mt-auto{margin-top:auto}.mb-3{margin-bottom:.75rem}.mb-1\\.5{margin-bottom:.375rem}.mb-1{margin-bottom:.25rem}.-mb-7{margin-bottom:-1.75rem}.-ml-2{margin-left:-.5rem}.mb-4{margin-bottom:1rem}.ml-5{margin-left:1.25rem}.mr-1{margin-right:.25rem}.mt-3{margin-top:.75rem}.box-border{box-sizing:border-box}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.\\!contents{display:contents!important}.hidden{display:none}.h-1{height:.25rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-screen{height:100vh}.h-24{height:6rem}.h-9{height:2.25rem}.h-full{height:100%}.h-8{height:2rem}.h-16{height:4rem}.h-60{height:15rem}.h-\\[22rem\\]{height:22rem}.h-28{height:7rem}.h-\\[16rem\\]{height:16rem}.h-14{height:3.5rem}.h-\\[18rem\\]{height:18rem}.h-3\\.5{height:.875rem}.h-\\[12rem\\]{height:12rem}.h-\\[6rem\\]{height:6rem}.h-96{height:24rem}.h-max{height:-moz-max-content;height:max-content}.h-2{height:.5rem}.h-\\[18px\\]{height:18px}.h-12{height:3rem}.h-20{height:5rem}.h-10{height:2.5rem}.h-1\\.5{height:.375rem}.h-2\\.5{height:.625rem}.h-\\[30px\\]{height:30px}.h-\\[5px\\]{height:5px}.max-h-\\[24rem\\]{max-height:24rem}.max-h-\\[12rem\\]{max-height:12rem}.max-h-\\[20rem\\]{max-height:20rem}.max-h-\\[30rem\\]{max-height:30rem}.max-h-\\[18rem\\]{max-height:18rem}.max-h-96{max-height:24rem}.max-h-\\[25rem\\]{max-height:25rem}.max-h-\\[14rem\\]{max-height:14rem}.min-h-16{min-height:4rem}.min-h-96{min-height:24rem}.min-h-\\[20rem\\]{min-height:20rem}.min-h-5{min-height:1.25rem}.min-h-48{min-height:12rem}.w-full{width:100%}.w-1{width:.25rem}.w-12{width:3rem}.w-3{width:.75rem}.w-4{width:1rem}.w-20{width:5rem}.w-5{width:1.25rem}.w-28{width:7rem}.w-6{width:1.5rem}.w-36{width:9rem}.w-7{width:1.75rem}.w-screen{width:100vw}.w-60{width:15rem}.w-9{width:2.25rem}.w-8{width:2rem}.w-11{width:2.75rem}.w-48{width:12rem}.w-\\[17\\.7rem\\]{width:17.7rem}.w-\\[16\\.7rem\\]{width:16.7rem}.w-max{width:-moz-max-content;width:max-content}.w-14{width:3.5rem}.w-\\[14rem\\]{width:14rem}.w-16{width:4rem}.w-3\\.5{width:.875rem}.w-96{width:24rem}.w-\\[18rem\\]{width:18rem}.w-44{width:11rem}.w-\\[18px\\]{width:18px}.w-24{width:6rem}.w-40{width:10rem}.w-10{width:2.5rem}.w-\\[230px\\]{width:230px}.w-2\\.5{width:.625rem}.w-2{width:.5rem}.w-\\[30px\\]{width:30px}.w-\\[5px\\]{width:5px}.min-w-6{min-width:1.5rem}.min-w-64{min-width:16rem}.min-w-3{min-width:.75rem}.min-w-0{min-width:0}.min-w-\\[35rem\\]{min-width:35rem}.max-w-\\[64rem\\]{max-width:64rem}.max-w-xs{max-width:20rem}.max-w-\\[62\\.5rem\\]{max-width:62.5rem}.max-w-\\[12rem\\]{max-width:12rem}.max-w-full{max-width:100%}.max-w-\\[16rem\\]{max-width:16rem}.max-w-\\[18rem\\]{max-width:18rem}.max-w-\\[20rem\\]{max-width:20rem}.max-w-\\[40rem\\]{max-width:40rem}.max-w-\\[7rem\\]{max-width:7rem}.max-w-2xl{max-width:42rem}.max-w-\\[22rem\\]{max-width:22rem}.max-w-lg{max-width:32rem}.max-w-\\[25rem\\]{max-width:25rem}.max-w-md{max-width:28rem}.max-w-\\[50rem\\]{max-width:50rem}.max-w-3xl{max-width:48rem}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.-translate-y-3\\.5{--tw-translate-y:-0.875rem}.-translate-y-3,.-translate-y-3\\.5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-3{--tw-translate-y:-0.75rem}.scale-\\[0\\.9\\]{--tw-scale-x:0.9;--tw-scale-y:0.9}.scale-\\[0\\.50\\],.scale-\\[0\\.9\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\\[0\\.50\\]{--tw-scale-x:0.50;--tw-scale-y:0.50}.scale-\\[0\\.75\\]{--tw-scale-x:0.75;--tw-scale-y:0.75}.scale-\\[0\\.75\\],.scale-\\[1\\.25\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\\[1\\.25\\]{--tw-scale-x:1.25;--tw-scale-y:1.25}.scale-\\[1\\.50\\]{--tw-scale-x:1.50;--tw-scale-y:1.50}.scale-\\[1\\.50\\],.scale-\\[1\\.75\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\\[1\\.75\\]{--tw-scale-x:1.75;--tw-scale-y:1.75}.scale-\\[2\\.00\\]{--tw-scale-x:2.00;--tw-scale-y:2.00}.scale-\\[2\\.00\\],.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.auto-cols-max{grid-auto-columns:max-content}.grid-flow-col{grid-auto-flow:column}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-center{align-content:center}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-center{justify-items:center}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-1{gap:.25rem}.gap-8{gap:2rem}.gap-7{gap:1.75rem}.gap-3{gap:.75rem}.gap-5{gap:1.25rem}.gap-3\\.5{gap:.875rem}.gap-2\\.5{gap:.625rem}.gap-1\\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-0\\.5{gap:.125rem}.gap-0{gap:0}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-y-2{row-gap:.5rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-y-6{row-gap:1.5rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-4{row-gap:1rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-5{row-gap:1.25rem}.gap-y-12{row-gap:3rem}.gap-y-8{row-gap:2rem}.gap-y-3{row-gap:.75rem}.gap-y-1{row-gap:.25rem}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.5rem*var(--tw-space-x-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.75rem*var(--tw-space-x-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2rem*var(--tw-space-y-reverse));margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2.5rem*var(--tw-space-y-reverse));margin-top:calc(2.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-12>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(3rem*var(--tw-space-y-reverse));margin-top:calc(3rem*(1 - var(--tw-space-y-reverse)))}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-scroll{overflow-y:scroll}.overscroll-contain{overscroll-behavior:contain}.overscroll-none{overscroll-behavior:none}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.rounded{border-radius:.25rem}.rounded-sm{border-radius:.125rem}.rounded-md{border-radius:.375rem}.rounded-full{border-radius:9999px}.rounded-2xl{border-radius:1rem}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-\\[10px\\]{border-radius:10px}.rounded-b-md{border-bottom-left-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-b{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-x{border-left-width:1px;border-right-width:1px}.border-t{border-top-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-r{border-right-width:1px}.border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}.border-violet-300{--tw-border-opacity:1;border-color:rgb(196 181 253/var(--tw-border-opacity))}.border-orange-300{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}.border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity))}.border-emerald-300{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}.border-sky-300{--tw-border-opacity:1;border-color:rgb(125 211 252/var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.border-slate-500{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}.border-slate-600{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.border-sky-400{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}.border-sky-600{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.border-green-600{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity))}.border-primary-600{--tw-border-opacity:1;border-color:rgb(58 209 242/var(--tw-border-opacity))}.border-primary-400{--tw-border-opacity:1;border-color:rgb(97 218 245/var(--tw-border-opacity))}.border-secondary-600{--tw-border-opacity:1;border-color:rgb(34 42 57/var(--tw-border-opacity))}.border-secondary-400{--tw-border-opacity:1;border-color:rgb(78 85 97/var(--tw-border-opacity))}.border-rose-600{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.border-rose-400{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity))}.border-emerald-600{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.border-emerald-400{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}.border-sky-400\\/95{border-color:rgba(56,189,248,.95)}.border-slate-100{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.border-blue-600{--tw-border-opacity:1;border-color:rgb(1 95 159/var(--tw-border-opacity))}.border-blue-400{--tw-border-opacity:1;border-color:rgb(1 112 187/var(--tw-border-opacity))}.border-dark-blue-600{--tw-border-opacity:1;border-color:rgb(10 15 46/var(--tw-border-opacity))}.border-dark-blue-400{--tw-border-opacity:1;border-color:rgb(35 42 58/var(--tw-border-opacity))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.border-zinc-100{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity))}.border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.border-sky-blue-400\\/30{border-color:rgba(59,208,242,.3)}.border-mint-400\\/30{border-color:rgba(30,226,175,.3)}.border-gold-400\\/30{border-color:rgba(255,212,77,.3)}.border-mint-400{--tw-border-opacity:1;border-color:rgb(30 226 175/var(--tw-border-opacity))}.border-gold-400\\/20{border-color:rgba(255,212,77,.2)}.border-sky-blue-400\\/20{border-color:rgba(59,208,242,.2)}.border-mint-400\\/20{border-color:rgba(30,226,175,.2)}.border-rose-300{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-b-sky-400{--tw-border-opacity:1;border-bottom-color:rgb(56 189 248/var(--tw-border-opacity))}.bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.bg-red-300{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.bg-violet-200{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}.bg-violet-300{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}.bg-orange-200{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}.bg-orange-300{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}.bg-amber-200{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.bg-amber-300{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}.bg-emerald-200{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}.bg-emerald-300{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}.bg-sky-200{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}.bg-sky-300{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-slate-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.bg-sky-400{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}.bg-sky-600{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.bg-green-400{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgb(58 209 242/var(--tw-bg-opacity))}.bg-primary-400{--tw-bg-opacity:1;background-color:rgb(97 218 245/var(--tw-bg-opacity))}.bg-secondary-600{--tw-bg-opacity:1;background-color:rgb(34 42 57/var(--tw-bg-opacity))}.bg-secondary-400{--tw-bg-opacity:1;background-color:rgb(78 85 97/var(--tw-bg-opacity))}.bg-rose-600{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.bg-rose-400{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}.bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.bg-emerald-400{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity))}.bg-sky-400\\/95{background-color:rgba(56,189,248,.95)}.bg-slate-50\\/95{background-color:rgba(248,250,252,.95)}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(1 95 159/var(--tw-bg-opacity))}.bg-blue-400{--tw-bg-opacity:1;background-color:rgb(1 112 187/var(--tw-bg-opacity))}.bg-dark-blue-600{--tw-bg-opacity:1;background-color:rgb(10 15 46/var(--tw-bg-opacity))}.bg-dark-blue-400{--tw-bg-opacity:1;background-color:rgb(35 42 58/var(--tw-bg-opacity))}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-gray-500\\/75{background-color:hsla(220,9%,46%,.75)}.bg-gray-300\\/75{background-color:rgba(209,213,219,.75)}.bg-sky-blue-200{--tw-bg-opacity:1;background-color:rgb(163 228 243/var(--tw-bg-opacity))}.bg-sky-blue-400{--tw-bg-opacity:1;background-color:rgb(59 208 242/var(--tw-bg-opacity))}.bg-mint-400\\/20{background-color:rgba(30,226,175,.2)}.bg-mint-400{--tw-bg-opacity:1;background-color:rgb(30 226 175/var(--tw-bg-opacity))}.bg-gold-400\\/20{background-color:rgba(255,212,77,.2)}.bg-gold-400{--tw-bg-opacity:1;background-color:rgb(255 212 77/var(--tw-bg-opacity))}.bg-sky-100{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.bg-gray-800\\/75{background-color:rgba(31,41,55,.75)}.bg-cyan-400{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity))}.bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}.bg-sky-blue-400\\/10{background-color:rgba(59,208,242,.1)}.bg-gray-200\\/75{background-color:rgba(229,231,235,.75)}.bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.bg-zinc-50\\/30{background-color:hsla(0,0%,98%,.3)}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-sky-blue-400\\/25{background-color:rgba(59,208,242,.25)}.bg-mint-400\\/25{background-color:rgba(30,226,175,.25)}.bg-gold-400\\/25{background-color:rgba(255,212,77,.25)}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-\\[linear-gradient\\(150deg\\2c \\#EEF9FF_0\\%\\2c \\#F0FEFA_40\\%\\2c \\#FFFBEA_100\\%\\)\\]{background-image:linear-gradient(150deg,#eef9ff,#f0fefa 40%,#fffbea)}.from-sky-blue-400{--tw-gradient-from:#3bd0f2;--tw-gradient-to:rgba(59,208,242,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-mint-400{--tw-gradient-from:#1ee2af;--tw-gradient-to:rgba(30,226,175,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-gold-400{--tw-gradient-from:#ffd44d;--tw-gradient-to:rgba(255,212,77,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-slate-200{--tw-gradient-from:#e2e8f0;--tw-gradient-to:rgba(226,232,240,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.via-mint-400{--tw-gradient-to:rgba(30,226,175,0);--tw-gradient-stops:var(--tw-gradient-from),#1ee2af,var(--tw-gradient-to)}.to-mint-400{--tw-gradient-to:#1ee2af}.to-gold-400{--tw-gradient-to:#ffd44d}.to-sky-blue-400{--tw-gradient-to:#3bd0f2}.to-slate-200{--tw-gradient-to:#e2e8f0}.fill-red-300{fill:#fca5a5}.fill-violet-300{fill:#c4b5fd}.fill-orange-300{fill:#fdba74}.fill-amber-300{fill:#fcd34d}.fill-emerald-300{fill:#6ee7b7}.fill-sky-300{fill:#7dd3fc}.fill-gray-300{fill:#d1d5db}.fill-white{fill:#fff}.fill-gray-600{fill:#4b5563}.fill-current{fill:currentColor}.fill-slate-600{fill:#475569}.stroke-red-300{stroke:#fca5a5}.stroke-violet-300{stroke:#c4b5fd}.stroke-orange-300{stroke:#fdba74}.stroke-amber-300{stroke:#fcd34d}.stroke-emerald-300{stroke:#6ee7b7}.stroke-sky-300{stroke:#7dd3fc}.stroke-gray-300{stroke:#d1d5db}.stroke-gray-600{stroke:#4b5563}.stroke-current{stroke:currentColor}.stroke-slate-600{stroke:#475569}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-2{padding:.5rem}.p-1{padding:.25rem}.p-8{padding:2rem}.p-5{padding:1.25rem}.p-4{padding:1rem}.p-3{padding:.75rem}.p-6{padding:1.5rem}.p-2\\.5{padding:.625rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-0{padding-bottom:0;padding-top:0}.py-1{padding-bottom:.25rem;padding-top:.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.px-8{padding-left:2rem;padding-right:2rem}.py-2\\.5{padding-bottom:.625rem;padding-top:.625rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.py-8{padding-bottom:2rem;padding-top:2rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.px-12{padding-left:3rem;padding-right:3rem}.py-4{padding-bottom:1rem;padding-top:1rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-3\\.5{padding-bottom:.875rem;padding-top:.875rem}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.px-3\\.5{padding-left:.875rem;padding-right:.875rem}.px-16{padding-left:4rem;padding-right:4rem}.pt-2{padding-top:.5rem}.pt-6{padding-top:1.5rem}.pr-7{padding-right:1.75rem}.pt-16{padding-top:4rem}.pl-2{padding-left:.5rem}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.pt-5{padding-top:1.25rem}.pb-5{padding-bottom:1.25rem}.pt-1{padding-top:.25rem}.pt-3\\.5{padding-top:.875rem}.pt-3{padding-top:.75rem}.pb-12{padding-bottom:3rem}.pt-4{padding-top:1rem}.pb-24{padding-bottom:6rem}.pb-3{padding-bottom:.75rem}.pb-8{padding-bottom:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-start{text-align:start}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.font-proxima{font-family:ProximaNova}.text-sm{font-size:.875rem;line-height:1.25rem}.text-\\[0\\.5rem\\]{font-size:.5rem}.text-xs{font-size:.75rem;line-height:1rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-\\[3rem\\]{font-size:3rem}.text-\\[2rem\\]{font-size:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-\\[10\\.5px\\]{font-size:10.5px}.text-\\[10px\\]{font-size:10px}.text-base{font-size:1rem;line-height:1.5rem}.text-\\[9px\\]{font-size:9px}.text-\\[11px\\]{font-size:11px}.text-\\[11\\.5px\\]{font-size:11.5px}.font-semibold{font-weight:600}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-extrabold{font-weight:800}.font-black{font-weight:900}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-6{line-height:1.5rem}.leading-none{line-height:1}.leading-tight{line-height:1.25}.leading-relaxed{line-height:1.625}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.text-violet-300{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}.text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity))}.text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}.text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}.text-sky-300{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}.text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgb(58 209 242/var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgb(97 218 245/var(--tw-text-opacity))}.text-secondary-600{--tw-text-opacity:1;color:rgb(34 42 57/var(--tw-text-opacity))}.text-secondary-400{--tw-text-opacity:1;color:rgb(78 85 97/var(--tw-text-opacity))}.text-rose-600{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.text-rose-400{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgb(1 95 159/var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity:1;color:rgb(1 112 187/var(--tw-text-opacity))}.text-dark-blue-600{--tw-text-opacity:1;color:rgb(10 15 46/var(--tw-text-opacity))}.text-dark-blue-400{--tw-text-opacity:1;color:rgb(35 42 58/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-sky-200{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}.text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.text-sky-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-cyan-100{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.text-zinc-600{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.text-sky-blue-400{--tw-text-opacity:1;color:rgb(59 208 242/var(--tw-text-opacity))}.text-mint-400{--tw-text-opacity:1;color:rgb(30 226 175/var(--tw-text-opacity))}.text-gold-400{--tw-text-opacity:1;color:rgb(255 212 77/var(--tw-text-opacity))}.text-rose-300{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}.text-zinc-800{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}.text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.text-emerald-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.placeholder-slate-400::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}.placeholder-slate-400::placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-40{opacity:.4}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-2xl,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_4px_20px_rgba\\(59\\2c 208\\2c 242\\2c 0\\.10\\)\\]{--tw-shadow:0 4px 20px rgba(59,208,242,.1);--tw-shadow-colored:0 4px 20px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_4px_20px_rgba\\(30\\2c 226\\2c 175\\2c 0\\.10\\)\\]{--tw-shadow:0 4px 20px rgba(30,226,175,.1);--tw-shadow-colored:0 4px 20px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_4px_20px_rgba\\(255\\2c 212\\2c 77\\2c 0\\.10\\)\\]{--tw-shadow:0 4px 20px rgba(255,212,77,.1);--tw-shadow-colored:0 4px 20px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_4px_20px_rgba\\(255\\2c 212\\2c 77\\2c 0\\.12\\)\\]{--tw-shadow:0 4px 20px rgba(255,212,77,.12);--tw-shadow-colored:0 4px 20px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_4px_24px_rgba\\(59\\2c 208\\2c 242\\2c 0\\.10\\)\\]{--tw-shadow:0 4px 24px rgba(59,208,242,.1);--tw-shadow-colored:0 4px 24px var(--tw-shadow-color)}.shadow-\\[0_4px_24px_rgba\\(59\\2c 208\\2c 242\\2c 0\\.10\\)\\],.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-\\[0_0_8px_rgba\\(30\\2c 226\\2c 175\\2c 0\\.6\\)\\]{--tw-shadow:0 0 8px rgba(30,226,175,.6);--tw-shadow-colored:0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_2px_12px_rgba\\(59\\2c 208\\2c 242\\2c 0\\.12\\)\\]{--tw-shadow:0 2px 12px rgba(59,208,242,.12);--tw-shadow-colored:0 2px 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_2px_12px_rgba\\(30\\2c 226\\2c 175\\2c 0\\.12\\)\\]{--tw-shadow:0 2px 12px rgba(30,226,175,.12);--tw-shadow-colored:0 2px 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_2px_12px_rgba\\(255\\2c 212\\2c 77\\2c 0\\.12\\)\\]{--tw-shadow:0 2px 12px rgba(255,212,77,.12);--tw-shadow-colored:0 2px 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_2px_10px_rgba\\(30\\2c 226\\2c 175\\2c 0\\.15\\)\\]{--tw-shadow:0 2px 10px rgba(30,226,175,.15);--tw-shadow-colored:0 2px 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_0_8px_rgba\\(59\\2c 208\\2c 242\\2c 0\\.5\\)\\]{--tw-shadow:0 0 8px rgba(59,208,242,.5);--tw-shadow-colored:0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_0_8px_rgba\\(30\\2c 226\\2c 175\\2c 0\\.5\\)\\]{--tw-shadow:0 0 8px rgba(30,226,175,.5);--tw-shadow-colored:0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_0_8px_rgba\\(255\\2c 212\\2c 77\\2c 0\\.5\\)\\]{--tw-shadow:0 0 8px rgba(255,212,77,.5);--tw-shadow-colored:0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_2px_10px_rgba\\(59\\2c 208\\2c 242\\2c 0\\.08\\)\\]{--tw-shadow:0 2px 10px rgba(59,208,242,.08);--tw-shadow-colored:0 2px 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-gray-400{--tw-shadow-color:#9ca3af;--tw-shadow:var(--tw-shadow-colored)}.drop-shadow-\\[inherit\\]{--tw-drop-shadow:drop-shadow(inherit)}.drop-shadow-\\[inherit\\],.drop-shadow-md{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-md{--tw-drop-shadow:drop-shadow(0 4px 3px rgba(0,0,0,.07)) drop-shadow(0 2px 2px rgba(0,0,0,.06))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-500{transition-duration:.5s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.file\\:mr-4::file-selector-button{margin-right:1rem}.file\\:rounded-full::file-selector-button{border-radius:9999px}.file\\:border-0::file-selector-button{border-width:0}.file\\:bg-violet-50::file-selector-button{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity))}.file\\:py-2::file-selector-button{padding-bottom:.5rem;padding-top:.5rem}.file\\:px-4::file-selector-button{padding-left:1rem;padding-right:1rem}.file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\\:font-semibold::file-selector-button{font-weight:600}.file\\:text-violet-700::file-selector-button{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}.placeholder\\:text-slate-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.placeholder\\:text-slate-400::placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.after\\:absolute:after{content:var(--tw-content);position:absolute}.after\\:top-0\\.5:after{content:var(--tw-content);top:.125rem}.after\\:left-\\[2px\\]:after{content:var(--tw-content);left:2px}.after\\:top-0:after{content:var(--tw-content);top:0}.after\\:h-5:after{content:var(--tw-content);height:1.25rem}.after\\:w-5:after{content:var(--tw-content);width:1.25rem}.after\\:rounded-full:after{border-radius:9999px;content:var(--tw-content)}.after\\:border:after{border-width:1px;content:var(--tw-content)}.after\\:border-gray-300:after{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity));content:var(--tw-content)}.after\\:bg-white:after{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));content:var(--tw-content)}.after\\:transition-all:after{content:var(--tw-content);transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.after\\:content-\\[\\'\\'\\]:after{--tw-content:\"\";content:var(--tw-content)}.last\\:border-b-0:last-child{border-bottom-width:0}.invalid\\:border-pink-500:invalid{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}.invalid\\:text-pink-600:invalid{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity))}.hover\\:border-b-2:hover{border-bottom-width:2px}.hover\\:border-red-400:hover{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity))}.hover\\:border-violet-400:hover{--tw-border-opacity:1;border-color:rgb(167 139 250/var(--tw-border-opacity))}.hover\\:border-orange-400:hover{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity))}.hover\\:border-amber-400:hover{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity))}.hover\\:border-emerald-400:hover{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity))}.hover\\:border-sky-400:hover{--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}.hover\\:border-gray-200:hover{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.hover\\:border-slate-600:hover{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.hover\\:border-sky-600:hover{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.hover\\:border-green-600:hover{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.hover\\:border-primary-600:hover{--tw-border-opacity:1;border-color:rgb(58 209 242/var(--tw-border-opacity))}.hover\\:border-secondary-600:hover{--tw-border-opacity:1;border-color:rgb(34 42 57/var(--tw-border-opacity))}.hover\\:border-rose-600:hover{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.hover\\:border-emerald-600:hover{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.hover\\:border-sky-300\\/95:hover{border-color:rgba(125,211,252,.95)}.hover\\:border-blue-600:hover{--tw-border-opacity:1;border-color:rgb(1 95 159/var(--tw-border-opacity))}.hover\\:border-dark-blue-600:hover{--tw-border-opacity:1;border-color:rgb(10 15 46/var(--tw-border-opacity))}.hover\\:border-sky-100:hover{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}.hover\\:border-b-sky-400:hover{--tw-border-opacity:1;border-bottom-color:rgb(56 189 248/var(--tw-border-opacity))}.hover\\:bg-red-200:hover{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.hover\\:bg-red-300:hover{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity))}.hover\\:bg-violet-200:hover{--tw-bg-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity))}.hover\\:bg-violet-300:hover{--tw-bg-opacity:1;background-color:rgb(196 181 253/var(--tw-bg-opacity))}.hover\\:bg-orange-200:hover{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity))}.hover\\:bg-orange-300:hover{--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity))}.hover\\:bg-amber-200:hover{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.hover\\:bg-amber-300:hover{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity))}.hover\\:bg-emerald-200:hover{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity))}.hover\\:bg-emerald-300:hover{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}.hover\\:bg-sky-200:hover{--tw-bg-opacity:1;background-color:rgb(186 230 253/var(--tw-bg-opacity))}.hover\\:bg-sky-300:hover{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity))}.hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.hover\\:bg-slate-600:hover{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.hover\\:bg-sky-600:hover{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.hover\\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.hover\\:bg-primary-600:hover{--tw-bg-opacity:1;background-color:rgb(58 209 242/var(--tw-bg-opacity))}.hover\\:bg-secondary-600:hover{--tw-bg-opacity:1;background-color:rgb(34 42 57/var(--tw-bg-opacity))}.hover\\:bg-rose-600:hover{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.hover\\:bg-emerald-600:hover{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.hover\\:bg-sky-400\\/95:hover{background-color:rgba(56,189,248,.95)}.hover\\:bg-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(1 95 159/var(--tw-bg-opacity))}.hover\\:bg-dark-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(10 15 46/var(--tw-bg-opacity))}.hover\\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.hover\\:bg-sky-50:hover{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.hover\\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\\:bg-sky-400:hover{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity))}.hover\\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.hover\\:bg-dark-blue-400\\/90:hover{background-color:rgba(35,42,58,.9)}.hover\\:bg-gold-400\\/90:hover{background-color:rgba(255,212,77,.9)}.hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.hover\\:bg-slate-200:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.hover\\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.hover\\:stroke-red-400:hover{stroke:#f87171}.hover\\:stroke-violet-400:hover{stroke:#a78bfa}.hover\\:stroke-orange-400:hover{stroke:#fb923c}.hover\\:stroke-amber-400:hover{stroke:#fbbf24}.hover\\:stroke-emerald-400:hover{stroke:#34d399}.hover\\:stroke-sky-400:hover{stroke:#38bdf8}.hover\\:stroke-gray-400:hover{stroke:#9ca3af}.hover\\:font-semibold:hover{font-weight:600}.hover\\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.hover\\:text-violet-400:hover{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}.hover\\:text-orange-400:hover{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}.hover\\:text-amber-400:hover{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.hover\\:text-emerald-400:hover{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}.hover\\:text-sky-400:hover{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}.hover\\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.hover\\:text-slate-600:hover{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.hover\\:text-sky-600:hover{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.hover\\:text-green-600:hover{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.hover\\:text-primary-600:hover{--tw-text-opacity:1;color:rgb(58 209 242/var(--tw-text-opacity))}.hover\\:text-secondary-600:hover{--tw-text-opacity:1;color:rgb(34 42 57/var(--tw-text-opacity))}.hover\\:text-rose-600:hover{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.hover\\:text-emerald-600:hover{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.hover\\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(1 95 159/var(--tw-text-opacity))}.hover\\:text-dark-blue-600:hover{--tw-text-opacity:1;color:rgb(10 15 46/var(--tw-text-opacity))}.hover\\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.hover\\:text-slate-400:hover{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.hover\\:text-slate-700:hover{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.hover\\:text-slate-500:hover{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.hover\\:text-sky-500:hover{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.hover\\:text-cyan-400:hover{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}.hover\\:text-rose-400:hover{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.hover\\:text-green-500:hover{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.hover\\:text-zinc-500:hover{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:file\\:bg-violet-100::file-selector-button:hover{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.hover\\:placeholder\\:text-slate-600:hover::-moz-placeholder{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.hover\\:placeholder\\:text-slate-600:hover::placeholder{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.focus\\:border-slate-600:focus{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.focus\\:border-sky-600:focus{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.focus\\:border-green-600:focus{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.focus\\:border-primary-600:focus{--tw-border-opacity:1;border-color:rgb(58 209 242/var(--tw-border-opacity))}.focus\\:border-secondary-600:focus{--tw-border-opacity:1;border-color:rgb(34 42 57/var(--tw-border-opacity))}.focus\\:border-rose-600:focus{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.focus\\:border-emerald-600:focus{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.focus\\:border-sky-300\\/95:focus{border-color:rgba(125,211,252,.95)}.focus\\:border-blue-600:focus{--tw-border-opacity:1;border-color:rgb(1 95 159/var(--tw-border-opacity))}.focus\\:border-dark-blue-600:focus{--tw-border-opacity:1;border-color:rgb(10 15 46/var(--tw-border-opacity))}.focus\\:border-sky-500:focus{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.focus\\:border-sky-100:focus{--tw-border-opacity:1;border-color:rgb(224 242 254/var(--tw-border-opacity))}.focus\\:bg-slate-600:focus{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.focus\\:bg-sky-600:focus{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.focus\\:bg-green-600:focus{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.focus\\:bg-primary-600:focus{--tw-bg-opacity:1;background-color:rgb(58 209 242/var(--tw-bg-opacity))}.focus\\:bg-secondary-600:focus{--tw-bg-opacity:1;background-color:rgb(34 42 57/var(--tw-bg-opacity))}.focus\\:bg-rose-600:focus{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.focus\\:bg-emerald-600:focus{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.focus\\:bg-blue-600:focus{--tw-bg-opacity:1;background-color:rgb(1 95 159/var(--tw-bg-opacity))}.focus\\:bg-dark-blue-600:focus{--tw-bg-opacity:1;background-color:rgb(10 15 46/var(--tw-bg-opacity))}.focus\\:bg-gray-50:focus{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.focus\\:text-slate-600:focus{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.focus\\:text-sky-600:focus{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.focus\\:text-green-600:focus{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.focus\\:text-primary-600:focus{--tw-text-opacity:1;color:rgb(58 209 242/var(--tw-text-opacity))}.focus\\:text-secondary-600:focus{--tw-text-opacity:1;color:rgb(34 42 57/var(--tw-text-opacity))}.focus\\:text-rose-600:focus{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.focus\\:text-emerald-600:focus{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.focus\\:text-blue-600:focus{--tw-text-opacity:1;color:rgb(1 95 159/var(--tw-text-opacity))}.focus\\:text-dark-blue-600:focus{--tw-text-opacity:1;color:rgb(10 15 46/var(--tw-text-opacity))}.focus\\:text-white:focus{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:ring-sky-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity))}.focus\\:ring-sky-100:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(224 242 254/var(--tw-ring-opacity))}.focus\\:invalid\\:border-pink-500:invalid:focus{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}.focus\\:invalid\\:ring-pink-500:invalid:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(236 72 153/var(--tw-ring-opacity))}.active\\:border-slate-600:active{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.active\\:border-sky-600:active{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.active\\:border-green-600:active{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity))}.active\\:border-primary-600:active{--tw-border-opacity:1;border-color:rgb(58 209 242/var(--tw-border-opacity))}.active\\:border-secondary-600:active{--tw-border-opacity:1;border-color:rgb(34 42 57/var(--tw-border-opacity))}.active\\:border-rose-600:active{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.active\\:border-emerald-600:active{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.active\\:border-sky-300\\/95:active{border-color:rgba(125,211,252,.95)}.active\\:border-blue-600:active{--tw-border-opacity:1;border-color:rgb(1 95 159/var(--tw-border-opacity))}.active\\:border-dark-blue-600:active{--tw-border-opacity:1;border-color:rgb(10 15 46/var(--tw-border-opacity))}.active\\:bg-slate-600:active{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.active\\:bg-sky-600:active{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.active\\:bg-green-600:active{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.active\\:bg-primary-600:active{--tw-bg-opacity:1;background-color:rgb(58 209 242/var(--tw-bg-opacity))}.active\\:bg-secondary-600:active{--tw-bg-opacity:1;background-color:rgb(34 42 57/var(--tw-bg-opacity))}.active\\:bg-rose-600:active{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity))}.active\\:bg-emerald-600:active{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.active\\:bg-blue-600:active{--tw-bg-opacity:1;background-color:rgb(1 95 159/var(--tw-bg-opacity))}.active\\:bg-dark-blue-600:active{--tw-bg-opacity:1;background-color:rgb(10 15 46/var(--tw-bg-opacity))}.active\\:bg-gray-50:active{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.active\\:bg-white:active{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.active\\:text-slate-600:active{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.active\\:text-sky-600:active{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.active\\:text-green-600:active{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.active\\:text-primary-600:active{--tw-text-opacity:1;color:rgb(58 209 242/var(--tw-text-opacity))}.active\\:text-secondary-600:active{--tw-text-opacity:1;color:rgb(34 42 57/var(--tw-text-opacity))}.active\\:text-rose-600:active{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.active\\:text-emerald-600:active{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.active\\:text-blue-600:active{--tw-text-opacity:1;color:rgb(1 95 159/var(--tw-text-opacity))}.active\\:text-dark-blue-600:active{--tw-text-opacity:1;color:rgb(10 15 46/var(--tw-text-opacity))}.active\\:text-white:active{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:border-slate-200:disabled{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.disabled\\:bg-slate-50:disabled{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.disabled\\:text-slate-500:disabled{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.disabled\\:text-gray-600:disabled{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.disabled\\:opacity-40:disabled{opacity:.4}.disabled\\:shadow-none:disabled{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.peer:checked~.peer-checked\\:bg-blue-600{--tw-bg-opacity:1;background-color:rgb(1 95 159/var(--tw-bg-opacity))}.peer:checked~.peer-checked\\:after\\:translate-x-full:after{--tw-translate-x:100%;content:var(--tw-content);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:checked~.peer-checked\\:after\\:border-white:after{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity));content:var(--tw-content)}.peer:focus~.peer-focus\\:ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.peer:focus~.peer-focus\\:ring-blue-300{--tw-ring-opacity:1;--tw-ring-color:rgb(147 197 253/var(--tw-ring-opacity))}@media (prefers-color-scheme:dark){.dark\\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.dark\\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.peer:focus~.dark\\:peer-focus\\:ring-blue-800{--tw-ring-opacity:1;--tw-ring-color:rgb(30 64 175/var(--tw-ring-opacity))}}@media (min-width:640px){.sm\\:flex{display:flex}.sm\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\\:place-content-between{place-content:space-between}}@media (min-width:768px){.md\\:invisible{visibility:hidden}.md\\:mr-6{margin-right:1.5rem}.md\\:flex{display:flex}.md\\:grid{display:grid}.md\\:hidden{display:none}.md\\:h-6{height:1.5rem}.md\\:h-\\[24rem\\]{height:24rem}.md\\:w-6{width:1.5rem}.md\\:w-\\[28rem\\]{width:28rem}.md\\:w-\\[40rem\\]{width:40rem}.md\\:w-\\[30rem\\]{width:30rem}.md\\:w-\\[20rem\\]{width:20rem}.md\\:w-\\[24rem\\]{width:24rem}.md\\:w-\\[16rem\\]{width:16rem}.md\\:w-\\[32rem\\]{width:32rem}.md\\:w-max{width:-moz-max-content;width:max-content}.md\\:w-\\[50rem\\]{width:50rem}.md\\:min-w-\\[30rem\\]{min-width:30rem}.md\\:max-w-\\[22rem\\]{max-width:22rem}.md\\:max-w-\\[30rem\\]{max-width:30rem}.md\\:max-w-\\[40rem\\]{max-width:40rem}.md\\:scale-\\[1\\.2\\]{--tw-scale-x:1.2;--tw-scale-y:1.2;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.md\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:flex-row{flex-direction:row}.md\\:flex-col{flex-direction:column}.md\\:items-start{align-items:flex-start}.md\\:items-center{align-items:center}.md\\:justify-between{justify-content:space-between}.md\\:border-b{border-bottom-width:1px}.md\\:p-1\\.5{padding:.375rem}.md\\:p-1{padding:.25rem}.md\\:px-2{padding-left:.5rem;padding-right:.5rem}.md\\:text-sm{font-size:.875rem;line-height:1.25rem}.md\\:shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}}@media (min-width:1024px){.lg\\:sticky{position:sticky}.lg\\:top-0{top:0}.lg\\:top-2{top:.5rem}.lg\\:right-3{right:.75rem}.lg\\:col-span-2{grid-column:span 2/span 2}.lg\\:mt-0{margin-top:0}.lg\\:inline-block{display:inline-block}.lg\\:flex{display:flex}.lg\\:h-screen{height:100vh}.lg\\:h-\\[22rem\\]{height:22rem}.lg\\:h-32{height:8rem}.lg\\:h-4{height:1rem}.lg\\:h-\\[18rem\\]{height:18rem}.lg\\:h-\\[5\\.5rem\\]{height:5.5rem}.lg\\:min-h-24{min-height:6rem}.lg\\:w-\\[230px\\]{width:230px}.lg\\:w-32{width:8rem}.lg\\:w-4{width:1rem}.lg\\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\\:gap-2{gap:.5rem}.lg\\:gap-1{gap:.25rem}.lg\\:gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.lg\\:gap-y-3{row-gap:.75rem}.lg\\:self-start{align-self:flex-start}.lg\\:overflow-y-auto{overflow-y:auto}.lg\\:px-0{padding-left:0;padding-right:0}.lg\\:px-36{padding-left:9rem;padding-right:9rem}.lg\\:py-3{padding-bottom:.75rem;padding-top:.75rem}.lg\\:px-5{padding-left:1.25rem;padding-right:1.25rem}.lg\\:px-56{padding-left:14rem;padding-right:14rem}.lg\\:text-sm{font-size:.875rem;line-height:1.25rem}.lg\\:text-4xl{font-size:2.25rem;line-height:2.5rem}}";
37
37
  styleInject(css_248z);
38
38
 
39
39
  const builder = (base = "", precondition) => {
@@ -934,19 +934,19 @@ const sprite = {
934
934
  }
935
935
  };
936
936
 
937
- var __defProp$k = Object.defineProperty;
938
- var __getOwnPropSymbols$k = Object.getOwnPropertySymbols;
939
- var __hasOwnProp$k = Object.prototype.hasOwnProperty;
940
- var __propIsEnum$k = Object.prototype.propertyIsEnumerable;
941
- var __defNormalProp$k = (obj, key, value) => key in obj ? __defProp$k(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
942
- var __spreadValues$k = (a, b) => {
937
+ var __defProp$n = Object.defineProperty;
938
+ var __getOwnPropSymbols$n = Object.getOwnPropertySymbols;
939
+ var __hasOwnProp$n = Object.prototype.hasOwnProperty;
940
+ var __propIsEnum$n = Object.prototype.propertyIsEnumerable;
941
+ var __defNormalProp$n = (obj, key, value) => key in obj ? __defProp$n(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
942
+ var __spreadValues$n = (a, b) => {
943
943
  for (var prop in b || (b = {}))
944
- if (__hasOwnProp$k.call(b, prop))
945
- __defNormalProp$k(a, prop, b[prop]);
946
- if (__getOwnPropSymbols$k)
947
- for (var prop of __getOwnPropSymbols$k(b)) {
948
- if (__propIsEnum$k.call(b, prop))
949
- __defNormalProp$k(a, prop, b[prop]);
944
+ if (__hasOwnProp$n.call(b, prop))
945
+ __defNormalProp$n(a, prop, b[prop]);
946
+ if (__getOwnPropSymbols$n)
947
+ for (var prop of __getOwnPropSymbols$n(b)) {
948
+ if (__propIsEnum$n.call(b, prop))
949
+ __defNormalProp$n(a, prop, b[prop]);
950
950
  }
951
951
  return a;
952
952
  };
@@ -965,9 +965,9 @@ const Icon$1 = (props) => {
965
965
  },
966
966
  /* @__PURE__ */ React__default.createElement("title", null, props.name),
967
967
  contents.map((v, k) => {
968
- return v.d && /* @__PURE__ */ React__default.createElement("path", __spreadValues$k({ key: k }, v));
968
+ return v.d && /* @__PURE__ */ React__default.createElement("path", __spreadValues$n({ key: k }, v));
969
969
  }),
970
- contents.map((v, k) => v.r && /* @__PURE__ */ React__default.createElement("circle", __spreadValues$k({ key: k }, v)))
970
+ contents.map((v, k) => v.r && /* @__PURE__ */ React__default.createElement("circle", __spreadValues$n({ key: k }, v)))
971
971
  );
972
972
  };
973
973
 
@@ -1553,25 +1553,25 @@ const ActivityItem = (props) => {
1553
1553
  return /* @__PURE__ */ React.createElement("div", { onClick: props.onClick, className: "grow cursor-pointer relative rounded-md min-w-64 h-[22rem] overflow-hidden" }, /* @__PURE__ */ React.createElement("img", { className: "h-full w-full object-cover", alt: props.headline, src: props.imageURL }), /* @__PURE__ */ React.createElement("div", { className: "absolute bottom-0 w-full" }, /* @__PURE__ */ React.createElement("div", { className: "p-5 bg-gray-800/75 w-full" }, /* @__PURE__ */ React.createElement("div", { className: "text-sm font-bold text-white w-full" }, props.headline), /* @__PURE__ */ React.createElement("div", { className: "mt-2 flex items-center gap-x-2 w-full" }, /* @__PURE__ */ React.createElement("div", { className: "flex-shrink-0 w-6 h-6 text-white fill-white" }, /* @__PURE__ */ React.createElement(Icon$1, { name: props.pathway || "globe" })), props.pathway && /* @__PURE__ */ React.createElement("span", { className: "grow" }, /* @__PURE__ */ React.createElement("div", { className: "text-sm font-medium capitalize text-white w-full" }, props.pathway)), props.xp && /* @__PURE__ */ React.createElement("div", { className: "text-slate-600 shadow-md whitespace-nowrap font-bold rounded-md text-sm px-5 py-2 bg-cyan-400" }, props.xp, " pts")))));
1554
1554
  };
1555
1555
 
1556
- var __defProp$j = Object.defineProperty;
1557
- var __defProps$f = Object.defineProperties;
1558
- var __getOwnPropDescs$f = Object.getOwnPropertyDescriptors;
1559
- var __getOwnPropSymbols$j = Object.getOwnPropertySymbols;
1560
- var __hasOwnProp$j = Object.prototype.hasOwnProperty;
1561
- var __propIsEnum$j = Object.prototype.propertyIsEnumerable;
1562
- var __defNormalProp$j = (obj, key, value) => key in obj ? __defProp$j(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1563
- var __spreadValues$j = (a, b) => {
1556
+ var __defProp$m = Object.defineProperty;
1557
+ var __defProps$e = Object.defineProperties;
1558
+ var __getOwnPropDescs$e = Object.getOwnPropertyDescriptors;
1559
+ var __getOwnPropSymbols$m = Object.getOwnPropertySymbols;
1560
+ var __hasOwnProp$m = Object.prototype.hasOwnProperty;
1561
+ var __propIsEnum$m = Object.prototype.propertyIsEnumerable;
1562
+ var __defNormalProp$m = (obj, key, value) => key in obj ? __defProp$m(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1563
+ var __spreadValues$m = (a, b) => {
1564
1564
  for (var prop in b || (b = {}))
1565
- if (__hasOwnProp$j.call(b, prop))
1566
- __defNormalProp$j(a, prop, b[prop]);
1567
- if (__getOwnPropSymbols$j)
1568
- for (var prop of __getOwnPropSymbols$j(b)) {
1569
- if (__propIsEnum$j.call(b, prop))
1570
- __defNormalProp$j(a, prop, b[prop]);
1565
+ if (__hasOwnProp$m.call(b, prop))
1566
+ __defNormalProp$m(a, prop, b[prop]);
1567
+ if (__getOwnPropSymbols$m)
1568
+ for (var prop of __getOwnPropSymbols$m(b)) {
1569
+ if (__propIsEnum$m.call(b, prop))
1570
+ __defNormalProp$m(a, prop, b[prop]);
1571
1571
  }
1572
1572
  return a;
1573
1573
  };
1574
- var __spreadProps$f = (a, b) => __defProps$f(a, __getOwnPropDescs$f(b));
1574
+ var __spreadProps$e = (a, b) => __defProps$e(a, __getOwnPropDescs$e(b));
1575
1575
  const TagFilter = (props) => {
1576
1576
  const timeTags = ["15 min", "30 min", "45 min", "60 min"];
1577
1577
  const skillTags = ["Civic", "College", "Academic", "Personal"];
@@ -1583,12 +1583,12 @@ const TagFilter = (props) => {
1583
1583
  const [active, setActive] = React__default.useState(init);
1584
1584
  const onTagClick = (tag) => {
1585
1585
  if (active[tag]) {
1586
- setActive(__spreadProps$f(__spreadValues$j({}, active), { [tag]: false }));
1587
- const tags = Object.entries(__spreadProps$f(__spreadValues$j({}, active), { [tag]: false })).filter(([, active2]) => active2).map(([tag2]) => tag2);
1586
+ setActive(__spreadProps$e(__spreadValues$m({}, active), { [tag]: false }));
1587
+ const tags = Object.entries(__spreadProps$e(__spreadValues$m({}, active), { [tag]: false })).filter(([, active2]) => active2).map(([tag2]) => tag2);
1588
1588
  props.onChange && props.onChange(tags);
1589
1589
  } else {
1590
- setActive(__spreadProps$f(__spreadValues$j({}, active), { [tag]: true }));
1591
- const tags = Object.entries(__spreadProps$f(__spreadValues$j({}, active), { [tag]: true })).filter(([, active2]) => active2).map(([tag2]) => tag2);
1590
+ setActive(__spreadProps$e(__spreadValues$m({}, active), { [tag]: true }));
1591
+ const tags = Object.entries(__spreadProps$e(__spreadValues$m({}, active), { [tag]: true })).filter(([, active2]) => active2).map(([tag2]) => tag2);
1592
1592
  props.onChange && props.onChange(tags);
1593
1593
  }
1594
1594
  };
@@ -1634,25 +1634,25 @@ const debounce = (func, delay) => {
1634
1634
  };
1635
1635
  };
1636
1636
 
1637
- var __defProp$i = Object.defineProperty;
1638
- var __defProps$e = Object.defineProperties;
1639
- var __getOwnPropDescs$e = Object.getOwnPropertyDescriptors;
1640
- var __getOwnPropSymbols$i = Object.getOwnPropertySymbols;
1641
- var __hasOwnProp$i = Object.prototype.hasOwnProperty;
1642
- var __propIsEnum$i = Object.prototype.propertyIsEnumerable;
1643
- var __defNormalProp$i = (obj, key, value) => key in obj ? __defProp$i(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1644
- var __spreadValues$i = (a, b) => {
1637
+ var __defProp$l = Object.defineProperty;
1638
+ var __defProps$d = Object.defineProperties;
1639
+ var __getOwnPropDescs$d = Object.getOwnPropertyDescriptors;
1640
+ var __getOwnPropSymbols$l = Object.getOwnPropertySymbols;
1641
+ var __hasOwnProp$l = Object.prototype.hasOwnProperty;
1642
+ var __propIsEnum$l = Object.prototype.propertyIsEnumerable;
1643
+ var __defNormalProp$l = (obj, key, value) => key in obj ? __defProp$l(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1644
+ var __spreadValues$l = (a, b) => {
1645
1645
  for (var prop in b || (b = {}))
1646
- if (__hasOwnProp$i.call(b, prop))
1647
- __defNormalProp$i(a, prop, b[prop]);
1648
- if (__getOwnPropSymbols$i)
1649
- for (var prop of __getOwnPropSymbols$i(b)) {
1650
- if (__propIsEnum$i.call(b, prop))
1651
- __defNormalProp$i(a, prop, b[prop]);
1646
+ if (__hasOwnProp$l.call(b, prop))
1647
+ __defNormalProp$l(a, prop, b[prop]);
1648
+ if (__getOwnPropSymbols$l)
1649
+ for (var prop of __getOwnPropSymbols$l(b)) {
1650
+ if (__propIsEnum$l.call(b, prop))
1651
+ __defNormalProp$l(a, prop, b[prop]);
1652
1652
  }
1653
1653
  return a;
1654
1654
  };
1655
- var __spreadProps$e = (a, b) => __defProps$e(a, __getOwnPropDescs$e(b));
1655
+ var __spreadProps$d = (a, b) => __defProps$d(a, __getOwnPropDescs$d(b));
1656
1656
  const ActivityList = (props) => {
1657
1657
  var _a;
1658
1658
  const primary = !props.top ? null : props.top.length > 0 ? props == null ? void 0 : props.top[0] : null;
@@ -1670,14 +1670,14 @@ const ActivityList = (props) => {
1670
1670
  isLoading: props.isLoading,
1671
1671
  primary: !props.search && primary && /* @__PURE__ */ React__default.createElement(
1672
1672
  ActivityItem,
1673
- __spreadProps$e(__spreadValues$i({}, primary), {
1673
+ __spreadProps$d(__spreadValues$l({}, primary), {
1674
1674
  onClick: () => props.onActivityClick && props.onActivityClick(primary.activityId)
1675
1675
  })
1676
1676
  ),
1677
1677
  top: !props.search && top && top.length > 0 && /* @__PURE__ */ React__default.createElement("article", { className: "grid grid-cols-1 md:flex gap-2 overflow-auto" }, top.map((activity) => {
1678
1678
  return /* @__PURE__ */ React__default.createElement(
1679
1679
  ActivityItem,
1680
- __spreadProps$e(__spreadValues$i({
1680
+ __spreadProps$d(__spreadValues$l({
1681
1681
  key: `${activity.activityId}`
1682
1682
  }, activity), {
1683
1683
  onClick: () => props.onActivityClick && props.onActivityClick(activity.activityId)
@@ -1687,7 +1687,7 @@ const ActivityList = (props) => {
1687
1687
  soonest: !props.search && upcoming && upcoming.length > 0 && /* @__PURE__ */ React__default.createElement("article", { className: "grid grid-cols-1 md:flex gap-2 overflow-auto" }, upcoming.map((activity) => {
1688
1688
  return /* @__PURE__ */ React__default.createElement(
1689
1689
  ActivityItem,
1690
- __spreadProps$e(__spreadValues$i({
1690
+ __spreadProps$d(__spreadValues$l({
1691
1691
  key: `${activity.activityId}`
1692
1692
  }, activity), {
1693
1693
  onClick: () => props.onActivityClick && props.onActivityClick(activity.activityId)
@@ -1697,7 +1697,7 @@ const ActivityList = (props) => {
1697
1697
  milestones: !props.search && props.milestones && props.milestones.length > 0 && /* @__PURE__ */ React__default.createElement("article", { className: "grid grid-cols-1 md:flex gap-2 overflow-auto" }, props.milestones.map((activity) => {
1698
1698
  return /* @__PURE__ */ React__default.createElement(
1699
1699
  ActivityItem,
1700
- __spreadProps$e(__spreadValues$i({
1700
+ __spreadProps$d(__spreadValues$l({
1701
1701
  key: `${activity.activityId}`
1702
1702
  }, activity), {
1703
1703
  onClick: () => props.onActivityClick && props.onActivityClick(activity.activityId)
@@ -1708,7 +1708,7 @@ const ActivityList = (props) => {
1708
1708
  filtered: !!props.search && props.activities && props.activities.length > 0 && /* @__PURE__ */ React__default.createElement("article", { className: "grid grid-cols-1 md:flex gap-2 overflow-auto" }, props.activities.map((activity) => {
1709
1709
  return /* @__PURE__ */ React__default.createElement(
1710
1710
  ActivityItem,
1711
- __spreadProps$e(__spreadValues$i({
1711
+ __spreadProps$d(__spreadValues$l({
1712
1712
  key: `${activity.activityId}`
1713
1713
  }, activity), {
1714
1714
  onClick: () => props.onActivityClick && props.onActivityClick(activity.activityId)
@@ -1734,25 +1734,25 @@ const Search$1 = ({ send, value }) => {
1734
1734
  )));
1735
1735
  };
1736
1736
 
1737
- var __defProp$h = Object.defineProperty;
1738
- var __defProps$d = Object.defineProperties;
1739
- var __getOwnPropDescs$d = Object.getOwnPropertyDescriptors;
1740
- var __getOwnPropSymbols$h = Object.getOwnPropertySymbols;
1741
- var __hasOwnProp$h = Object.prototype.hasOwnProperty;
1742
- var __propIsEnum$h = Object.prototype.propertyIsEnumerable;
1743
- var __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1744
- var __spreadValues$h = (a, b) => {
1737
+ var __defProp$k = Object.defineProperty;
1738
+ var __defProps$c = Object.defineProperties;
1739
+ var __getOwnPropDescs$c = Object.getOwnPropertyDescriptors;
1740
+ var __getOwnPropSymbols$k = Object.getOwnPropertySymbols;
1741
+ var __hasOwnProp$k = Object.prototype.hasOwnProperty;
1742
+ var __propIsEnum$k = Object.prototype.propertyIsEnumerable;
1743
+ var __defNormalProp$k = (obj, key, value) => key in obj ? __defProp$k(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1744
+ var __spreadValues$k = (a, b) => {
1745
1745
  for (var prop in b || (b = {}))
1746
- if (__hasOwnProp$h.call(b, prop))
1747
- __defNormalProp$h(a, prop, b[prop]);
1748
- if (__getOwnPropSymbols$h)
1749
- for (var prop of __getOwnPropSymbols$h(b)) {
1750
- if (__propIsEnum$h.call(b, prop))
1751
- __defNormalProp$h(a, prop, b[prop]);
1746
+ if (__hasOwnProp$k.call(b, prop))
1747
+ __defNormalProp$k(a, prop, b[prop]);
1748
+ if (__getOwnPropSymbols$k)
1749
+ for (var prop of __getOwnPropSymbols$k(b)) {
1750
+ if (__propIsEnum$k.call(b, prop))
1751
+ __defNormalProp$k(a, prop, b[prop]);
1752
1752
  }
1753
1753
  return a;
1754
1754
  };
1755
- var __spreadProps$d = (a, b) => __defProps$d(a, __getOwnPropDescs$d(b));
1755
+ var __spreadProps$c = (a, b) => __defProps$c(a, __getOwnPropDescs$c(b));
1756
1756
  const ActivityReflection = (props) => {
1757
1757
  const className = builder("w-full md:w-[40rem]").if(!!props.headline, "min-h-[20rem]").build();
1758
1758
  const [reaction, setReaction] = React__default.useState({
@@ -1760,8 +1760,8 @@ const ActivityReflection = (props) => {
1760
1760
  reflection: props.reflection
1761
1761
  });
1762
1762
  const hasChanges = props.hasChanges || props.canReflect && (props.rating !== reaction.rating || props.reflection !== reaction.reflection);
1763
- const setFeedback = (feedback) => setReaction(__spreadProps$d(__spreadValues$h({}, reaction), { reflection: feedback }));
1764
- const setRating = (rating) => setReaction(__spreadProps$d(__spreadValues$h({}, reaction), { rating }));
1763
+ const setFeedback = (feedback) => setReaction(__spreadProps$c(__spreadValues$k({}, reaction), { reflection: feedback }));
1764
+ const setRating = (rating) => setReaction(__spreadProps$c(__spreadValues$k({}, reaction), { rating }));
1765
1765
  React__default.useEffect(() => {
1766
1766
  setReaction({
1767
1767
  rating: props.rating,
@@ -1788,7 +1788,7 @@ const ActivityReflection = (props) => {
1788
1788
  defaultValue: props.reflection,
1789
1789
  className: "resize-none text-slate-500 focus:text-slate-600 h-24 mt-1 block w-full px-3 py-2 bg-white border border-slate-300 rounded-md text-sm shadow-sm placeholder-slate-400\n focus:outline-none focus:border-sky-500 focus:ring-1 focus:ring-sky-500\n disabled:bg-slate-50 disabled:text-slate-500 disabled:border-slate-200 disabled:shadow-none\n invalid:border-pink-500 invalid:text-pink-600\n focus:invalid:border-pink-500 focus:invalid:ring-pink-500"
1790
1790
  }
1791
- ), props.canReflect && /* @__PURE__ */ React__default.createElement(Rating$1, __spreadProps$d(__spreadValues$h(__spreadValues$h({}, props), reaction), { setRating })))))));
1791
+ ), props.canReflect && /* @__PURE__ */ React__default.createElement(Rating$1, __spreadProps$c(__spreadValues$k(__spreadValues$k({}, props), reaction), { setRating })))))));
1792
1792
  };
1793
1793
  const Rating$1 = (props) => {
1794
1794
  const maxPoints = 5;
@@ -3001,6 +3001,10 @@ const Progress = (props) => {
3001
3001
  switch (props.color) {
3002
3002
  case "sky-blue":
3003
3003
  return ["bg-sky-blue-200", "bg-sky-blue-400"];
3004
+ case "mint":
3005
+ return ["bg-mint-400/20", "bg-mint-400"];
3006
+ case "gold":
3007
+ return ["bg-gold-400/20", "bg-gold-400"];
3004
3008
  default:
3005
3009
  return ["bg-gray-200", "bg-green-400"];
3006
3010
  }
@@ -3194,25 +3198,25 @@ const Overlay = (props) => {
3194
3198
  return /* @__PURE__ */ React.createElement("div", { className: "flex fixed overscroll-none w-screen h-screen top-0 left-0 bg-gray-300/75 z-30" }, props.children);
3195
3199
  };
3196
3200
 
3197
- var __defProp$g = Object.defineProperty;
3198
- var __defProps$c = Object.defineProperties;
3199
- var __getOwnPropDescs$c = Object.getOwnPropertyDescriptors;
3200
- var __getOwnPropSymbols$g = Object.getOwnPropertySymbols;
3201
- var __hasOwnProp$g = Object.prototype.hasOwnProperty;
3202
- var __propIsEnum$g = Object.prototype.propertyIsEnumerable;
3203
- var __defNormalProp$g = (obj, key, value) => key in obj ? __defProp$g(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3204
- var __spreadValues$g = (a, b) => {
3201
+ var __defProp$j = Object.defineProperty;
3202
+ var __defProps$b = Object.defineProperties;
3203
+ var __getOwnPropDescs$b = Object.getOwnPropertyDescriptors;
3204
+ var __getOwnPropSymbols$j = Object.getOwnPropertySymbols;
3205
+ var __hasOwnProp$j = Object.prototype.hasOwnProperty;
3206
+ var __propIsEnum$j = Object.prototype.propertyIsEnumerable;
3207
+ var __defNormalProp$j = (obj, key, value) => key in obj ? __defProp$j(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3208
+ var __spreadValues$j = (a, b) => {
3205
3209
  for (var prop in b || (b = {}))
3206
- if (__hasOwnProp$g.call(b, prop))
3207
- __defNormalProp$g(a, prop, b[prop]);
3208
- if (__getOwnPropSymbols$g)
3209
- for (var prop of __getOwnPropSymbols$g(b)) {
3210
- if (__propIsEnum$g.call(b, prop))
3211
- __defNormalProp$g(a, prop, b[prop]);
3210
+ if (__hasOwnProp$j.call(b, prop))
3211
+ __defNormalProp$j(a, prop, b[prop]);
3212
+ if (__getOwnPropSymbols$j)
3213
+ for (var prop of __getOwnPropSymbols$j(b)) {
3214
+ if (__propIsEnum$j.call(b, prop))
3215
+ __defNormalProp$j(a, prop, b[prop]);
3212
3216
  }
3213
3217
  return a;
3214
3218
  };
3215
- var __spreadProps$c = (a, b) => __defProps$c(a, __getOwnPropDescs$c(b));
3219
+ var __spreadProps$b = (a, b) => __defProps$b(a, __getOwnPropDescs$b(b));
3216
3220
  const Badge = (props) => {
3217
3221
  var _a, _b;
3218
3222
  const [open, setOpen] = React.useState(props.open || false);
@@ -3230,7 +3234,7 @@ const Badge = (props) => {
3230
3234
  props.onClose();
3231
3235
  }
3232
3236
  };
3233
- return /* @__PURE__ */ React.createElement(React.Fragment, null, !open && /* @__PURE__ */ React.createElement(BadgeButton, __spreadProps$c(__spreadValues$g({}, props), { progress, target, onClick: onOpen })), open && !!props.preview && /* @__PURE__ */ React.createElement(BadgeCard, __spreadProps$c(__spreadValues$g({}, props), { onClose })), open && !props.preview && /* @__PURE__ */ React.createElement(Overlay, null, /* @__PURE__ */ React.createElement(BadgeCard, __spreadProps$c(__spreadValues$g({}, props), { onClose }))));
3237
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, !open && /* @__PURE__ */ React.createElement(BadgeButton, __spreadProps$b(__spreadValues$j({}, props), { progress, target, onClick: onOpen })), open && !!props.preview && /* @__PURE__ */ React.createElement(BadgeCard, __spreadProps$b(__spreadValues$j({}, props), { onClose })), open && !props.preview && /* @__PURE__ */ React.createElement(Overlay, null, /* @__PURE__ */ React.createElement(BadgeCard, __spreadProps$b(__spreadValues$j({}, props), { onClose }))));
3234
3238
  };
3235
3239
 
3236
3240
  const BadgeActivity = (props) => {
@@ -3265,25 +3269,25 @@ const BadgeActivity = (props) => {
3265
3269
  })))));
3266
3270
  };
3267
3271
 
3268
- var __defProp$f = Object.defineProperty;
3269
- var __defProps$b = Object.defineProperties;
3270
- var __getOwnPropDescs$b = Object.getOwnPropertyDescriptors;
3271
- var __getOwnPropSymbols$f = Object.getOwnPropertySymbols;
3272
- var __hasOwnProp$f = Object.prototype.hasOwnProperty;
3273
- var __propIsEnum$f = Object.prototype.propertyIsEnumerable;
3274
- var __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3275
- var __spreadValues$f = (a, b) => {
3272
+ var __defProp$i = Object.defineProperty;
3273
+ var __defProps$a = Object.defineProperties;
3274
+ var __getOwnPropDescs$a = Object.getOwnPropertyDescriptors;
3275
+ var __getOwnPropSymbols$i = Object.getOwnPropertySymbols;
3276
+ var __hasOwnProp$i = Object.prototype.hasOwnProperty;
3277
+ var __propIsEnum$i = Object.prototype.propertyIsEnumerable;
3278
+ var __defNormalProp$i = (obj, key, value) => key in obj ? __defProp$i(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3279
+ var __spreadValues$i = (a, b) => {
3276
3280
  for (var prop in b || (b = {}))
3277
- if (__hasOwnProp$f.call(b, prop))
3278
- __defNormalProp$f(a, prop, b[prop]);
3279
- if (__getOwnPropSymbols$f)
3280
- for (var prop of __getOwnPropSymbols$f(b)) {
3281
- if (__propIsEnum$f.call(b, prop))
3282
- __defNormalProp$f(a, prop, b[prop]);
3281
+ if (__hasOwnProp$i.call(b, prop))
3282
+ __defNormalProp$i(a, prop, b[prop]);
3283
+ if (__getOwnPropSymbols$i)
3284
+ for (var prop of __getOwnPropSymbols$i(b)) {
3285
+ if (__propIsEnum$i.call(b, prop))
3286
+ __defNormalProp$i(a, prop, b[prop]);
3283
3287
  }
3284
3288
  return a;
3285
3289
  };
3286
- var __spreadProps$b = (a, b) => __defProps$b(a, __getOwnPropDescs$b(b));
3290
+ var __spreadProps$a = (a, b) => __defProps$a(a, __getOwnPropDescs$a(b));
3287
3291
  const BadgeActivityMenu = (props) => {
3288
3292
  const criteria = props.criteria || [];
3289
3293
  return /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-1 gap-y-4 w-full text-zinc-600" }, /* @__PURE__ */ React.createElement("div", { className: "py-8 px-10 grid grid-cols-1 gap-y-5 rounded-b-md border-b border-x border-zinc-100" }, /* @__PURE__ */ React.createElement(
@@ -3300,7 +3304,7 @@ const BadgeActivityMenu = (props) => {
3300
3304
  return /* @__PURE__ */ React.createElement("div", { key: id, className: "grid grid-cols-1 gap-y-8" }, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("p", { className: "text-lg font-semibold" }, c.displayName), /* @__PURE__ */ React.createElement("p", { className: "text-sm" }, "Chose one activity to complete.")), /* @__PURE__ */ React.createElement("div", { className: "grid grid-flow-col auto-cols-max gap-4 px-1 pt-1 pb-2 w-full overflow-x-auto" }, options.map((o, i2) => {
3301
3305
  const id2 = o.activityId || i2;
3302
3306
  const date = o.startTime ? new Date(o.startTime) : null;
3303
- return /* @__PURE__ */ React.createElement("div", { key: id2, className: "grid grid-cols-1 gap-y-2" }, date && /* @__PURE__ */ React.createElement("p", null, Intl.DateTimeFormat("en-US", { month: "long" }).format(date), " ", ordNumber$1(date.getDate())), !date && /* @__PURE__ */ React.createElement("p", { className: "invisible" }, "Online"), /* @__PURE__ */ React.createElement(BadgeActivity, __spreadProps$b(__spreadValues$f({}, o), { criteriaName: c.displayName })));
3307
+ return /* @__PURE__ */ React.createElement("div", { key: id2, className: "grid grid-cols-1 gap-y-2" }, date && /* @__PURE__ */ React.createElement("p", null, Intl.DateTimeFormat("en-US", { month: "long" }).format(date), " ", ordNumber$1(date.getDate())), !date && /* @__PURE__ */ React.createElement("p", { className: "invisible" }, "Online"), /* @__PURE__ */ React.createElement(BadgeActivity, __spreadProps$a(__spreadValues$i({}, o), { criteriaName: c.displayName })));
3304
3308
  })));
3305
3309
  })));
3306
3310
  };
@@ -3345,25 +3349,25 @@ const Widget = (props) => {
3345
3349
  return /* @__PURE__ */ React__default.createElement("article", { className }, !props.headless && /* @__PURE__ */ React__default.createElement("div", { className: "p-2 bg-gray-200" }), /* @__PURE__ */ React__default.createElement(Loader, { isLoading: props.isLoading }, /* @__PURE__ */ React__default.createElement("div", { className: "relative w-full" }, props.children)));
3346
3350
  };
3347
3351
 
3348
- var __defProp$e = Object.defineProperty;
3349
- var __defProps$a = Object.defineProperties;
3350
- var __getOwnPropDescs$a = Object.getOwnPropertyDescriptors;
3351
- var __getOwnPropSymbols$e = Object.getOwnPropertySymbols;
3352
- var __hasOwnProp$e = Object.prototype.hasOwnProperty;
3353
- var __propIsEnum$e = Object.prototype.propertyIsEnumerable;
3354
- var __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3355
- var __spreadValues$e = (a, b) => {
3352
+ var __defProp$h = Object.defineProperty;
3353
+ var __defProps$9 = Object.defineProperties;
3354
+ var __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors;
3355
+ var __getOwnPropSymbols$h = Object.getOwnPropertySymbols;
3356
+ var __hasOwnProp$h = Object.prototype.hasOwnProperty;
3357
+ var __propIsEnum$h = Object.prototype.propertyIsEnumerable;
3358
+ var __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3359
+ var __spreadValues$h = (a, b) => {
3356
3360
  for (var prop in b || (b = {}))
3357
- if (__hasOwnProp$e.call(b, prop))
3358
- __defNormalProp$e(a, prop, b[prop]);
3359
- if (__getOwnPropSymbols$e)
3360
- for (var prop of __getOwnPropSymbols$e(b)) {
3361
- if (__propIsEnum$e.call(b, prop))
3362
- __defNormalProp$e(a, prop, b[prop]);
3361
+ if (__hasOwnProp$h.call(b, prop))
3362
+ __defNormalProp$h(a, prop, b[prop]);
3363
+ if (__getOwnPropSymbols$h)
3364
+ for (var prop of __getOwnPropSymbols$h(b)) {
3365
+ if (__propIsEnum$h.call(b, prop))
3366
+ __defNormalProp$h(a, prop, b[prop]);
3363
3367
  }
3364
3368
  return a;
3365
3369
  };
3366
- var __spreadProps$a = (a, b) => __defProps$a(a, __getOwnPropDescs$a(b));
3370
+ var __spreadProps$9 = (a, b) => __defProps$9(a, __getOwnPropDescs$9(b));
3367
3371
  const DEFAULT_FILTERS = [
3368
3372
  { label: "In Progress" },
3369
3373
  { label: "Completed" },
@@ -3423,7 +3427,7 @@ const BadgeSection = (props) => {
3423
3427
  if (!(opt.label in filters)) {
3424
3428
  return;
3425
3429
  }
3426
- const next = __spreadValues$e({}, filters);
3430
+ const next = __spreadValues$h({}, filters);
3427
3431
  next[opt.label].isActive = !next[opt.label].isActive;
3428
3432
  setFilters(next);
3429
3433
  },
@@ -3449,15 +3453,15 @@ const BadgeSection = (props) => {
3449
3453
  },
3450
3454
  "Grid View?"
3451
3455
  )))), /* @__PURE__ */ React.createElement("div", null, !!props.readonly && /* @__PURE__ */ React.createElement("div", { className: layoutClassName }, preview.map((b, i) => {
3452
- return /* @__PURE__ */ React.createElement(Badge, __spreadProps$a(__spreadValues$e({ key: i }, b), { compact: list, readonly: props.readonly }));
3456
+ return /* @__PURE__ */ React.createElement(Badge, __spreadProps$9(__spreadValues$h({ key: i }, b), { compact: list, readonly: props.readonly }));
3453
3457
  })), !props.readonly && /* @__PURE__ */ React.createElement("div", { className: "text-zinc-600 grid grid-cols-1 gap-y-4" }, (isWithoutFilters || "In Progress" in filters && filters["In Progress"].isActive) && progress.length > 0 && /* @__PURE__ */ React.createElement("div", null, showSectionHeaders && /* @__PURE__ */ React.createElement("p", { className: "mb-3 text-md underline font-bold" }, "In Progress"), /* @__PURE__ */ React.createElement("div", { className: layoutClassName }, progress.map((b, i) => {
3454
- return /* @__PURE__ */ React.createElement(Badge, __spreadProps$a(__spreadValues$e({ key: i }, b), { compact: list }));
3458
+ return /* @__PURE__ */ React.createElement(Badge, __spreadProps$9(__spreadValues$h({ key: i }, b), { compact: list }));
3455
3459
  }))), (isWithoutFilters || "Completed" in filters && filters["Completed"].isActive) && collected.length > 0 && /* @__PURE__ */ React.createElement("div", null, showSectionHeaders && /* @__PURE__ */ React.createElement("p", { className: "mb-3 text-md underline font-bold" }, "Completed"), /* @__PURE__ */ React.createElement("div", { className: layoutClassName }, collected.map((b, i) => {
3456
- return /* @__PURE__ */ React.createElement(Badge, __spreadProps$a(__spreadValues$e({ key: i }, b), { compact: list }));
3460
+ return /* @__PURE__ */ React.createElement(Badge, __spreadProps$9(__spreadValues$h({ key: i }, b), { compact: list }));
3457
3461
  }))), (isWithoutFilters || "Available" in filters && filters["Available"].isActive) && available.length > 0 && /* @__PURE__ */ React.createElement("div", null, showSectionHeaders && /* @__PURE__ */ React.createElement("p", { className: "mb-3 text-md underline font-bold" }, "Available"), /* @__PURE__ */ React.createElement("div", { className: layoutClassName }, available.map((b, i) => {
3458
- return /* @__PURE__ */ React.createElement(Badge, __spreadProps$a(__spreadValues$e({ key: i }, b), { compact: list }));
3462
+ return /* @__PURE__ */ React.createElement(Badge, __spreadProps$9(__spreadValues$h({ key: i }, b), { compact: list }));
3459
3463
  }))), (isWithoutFilters || "Locked" in filters && filters["Locked"].isActive) && locked.length > 0 && /* @__PURE__ */ React.createElement("div", null, showSectionHeaders && /* @__PURE__ */ React.createElement("p", { className: "mb-3 text-md underline font-bold" }, "Locked"), /* @__PURE__ */ React.createElement("div", { className: layoutClassName }, locked.map((b, i) => {
3460
- return /* @__PURE__ */ React.createElement(Badge, __spreadProps$a(__spreadValues$e({ key: i }, b), { compact: list }));
3464
+ return /* @__PURE__ */ React.createElement(Badge, __spreadProps$9(__spreadValues$h({ key: i }, b), { compact: list }));
3461
3465
  }))))))))));
3462
3466
  };
3463
3467
  const getLayout$1 = (list) => {
@@ -3571,56 +3575,298 @@ const Board = (props) => {
3571
3575
  return /* @__PURE__ */ React__default.createElement("div", { className: "w-full" }, /* @__PURE__ */ React__default.createElement("div", { className }, /* @__PURE__ */ React__default.createElement("div", { className: layoutClassName }, props.tabs)), /* @__PURE__ */ React__default.createElement("div", null, /* @__PURE__ */ React__default.createElement(Loader, { isLoading: props.isLoading }, !hasWorkflow && /* @__PURE__ */ React__default.createElement("div", { className: "grid justify-items-center content-center" }, /* @__PURE__ */ React__default.createElement("p", { className: "text-sm text-center align-middle leading-6 font-semibold text-slate-300" }, "No content to display.")), hasWorkflow && props.workflow)));
3572
3576
  };
3573
3577
 
3574
- const DateSelection = (props) => {
3575
- const today = new Date();
3576
- const [month, setMonth] = React__default.useState(calend(props.date || today));
3577
- return /* @__PURE__ */ React__default.createElement(Widget, { isLoading: props.isLoading }, /* @__PURE__ */ React__default.createElement(WidgetHeader, { divide: true }, /* @__PURE__ */ React__default.createElement(WidgetTitle, { icon: "calendar" }, "Calendar")), /* @__PURE__ */ React__default.createElement(WidgetBody, null, /* @__PURE__ */ React__default.createElement(MonthSelection, { month, setMonth }), /* @__PURE__ */ React__default.createElement(DaySelection, { date: props.date, month, setDate: props.setDate })));
3578
+ const ACCENT_CLASSNAMES$2 = {
3579
+ cyan: "bg-sky-blue-400/15 border border-sky-blue-400/30",
3580
+ mint: "bg-mint-400/15 border border-mint-400/30",
3581
+ gold: "bg-gold-400/15 border border-gold-400/30",
3582
+ slate: "bg-slate-100 border border-slate-200"
3578
3583
  };
3579
- const MonthSelection = (props) => {
3580
- const month = props.month;
3581
- const previousMonth = () => props.setMonth(new Date(month.getFullYear(), month.getMonth() - 1, 1));
3582
- const nextMonth = () => props.setMonth(new Date(month.getFullYear(), month.getMonth() + 1, 1));
3583
- return /* @__PURE__ */ React__default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React__default.createElement("div", { className: "grow" }, /* @__PURE__ */ React__default.createElement("span", { className: "font-semibold text-md text-slate-300" }, formatDate$1(month, { month: "long" })), /* @__PURE__ */ React__default.createElement("span", { className: "text-md ml-1 text-slate-300" }, formatDate$1(month, { year: "numeric" }))), /* @__PURE__ */ React__default.createElement("div", { onClick: previousMonth, className: "cursor-pointer w-3 h-3 min-w-3 text-slate-300 hover:text-slate-500" }, /* @__PURE__ */ React__default.createElement(Icon$1, { name: "leftArrow" })), /* @__PURE__ */ React__default.createElement("div", { onClick: nextMonth, className: "cursor-pointer ml-2 w-3 h-3 min-w-3 text-slate-300 hover:text-slate-500" }, /* @__PURE__ */ React__default.createElement(Icon$1, { name: "rightArrow" })));
3584
+ const Pill = (props) => {
3585
+ const accentClassName = ACCENT_CLASSNAMES$2[props.accent || "slate"];
3586
+ return /* @__PURE__ */ React.createElement("span", { className: `inline-flex items-center rounded-full px-3 py-1 text-xs font-bold text-dark-blue-400 ${accentClassName}` }, props.label);
3584
3587
  };
3585
- const DaySelection = (props) => {
3586
- const today = new Date();
3587
- const Days = [];
3588
- const [start, end] = weeks(props.month, 6);
3589
- for (let cur = start; cur <= end; cur = nextDate$1(cur)) {
3590
- const isToday = isSameDate(today, cur);
3591
- const isActive = isSameDate(props.date, cur);
3592
- const isCurrentMonth = cur.getMonth() === props.month.getMonth();
3593
- const onClick = () => props.setDate(isActive ? null : cur);
3594
- Days.push(
3595
- /* @__PURE__ */ React__default.createElement(
3596
- DaySelectionOption,
3597
- {
3598
- key: cur.toString(),
3599
- today: isToday,
3600
- active: isActive,
3601
- currentMonth: isCurrentMonth,
3602
- onClick
3603
- },
3604
- cur.getDate()
3605
- )
3606
- );
3607
- }
3608
- return /* @__PURE__ */ React__default.createElement("div", { className: "mt-4 grid grid-cols-7 gap-1 text-sm justify-items-center" }, WEEKDAYS.map((date) => {
3609
- return /* @__PURE__ */ React__default.createElement("span", { key: date, className: "w-8 text-center text-slate-400" }, date);
3610
- }), Days);
3588
+
3589
+ var __defProp$g = Object.defineProperty;
3590
+ var __getOwnPropSymbols$g = Object.getOwnPropertySymbols;
3591
+ var __hasOwnProp$g = Object.prototype.hasOwnProperty;
3592
+ var __propIsEnum$g = Object.prototype.propertyIsEnumerable;
3593
+ var __defNormalProp$g = (obj, key, value) => key in obj ? __defProp$g(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3594
+ var __spreadValues$g = (a, b) => {
3595
+ for (var prop in b || (b = {}))
3596
+ if (__hasOwnProp$g.call(b, prop))
3597
+ __defNormalProp$g(a, prop, b[prop]);
3598
+ if (__getOwnPropSymbols$g)
3599
+ for (var prop of __getOwnPropSymbols$g(b)) {
3600
+ if (__propIsEnum$g.call(b, prop))
3601
+ __defNormalProp$g(a, prop, b[prop]);
3602
+ }
3603
+ return a;
3611
3604
  };
3612
- const DaySelectionOption = (props) => {
3613
- const className = builder("w-8 h-8 text-center cursor-pointer p-2").append("hover:text-white hover:font-semibold hover:bg-sky-400").if(props.active, "text-white font-semibold bg-sky-400").if(!props.active && props.today, "font-semibold bg-slate-100 rounded-full").if(!props.active && !props.today && props.currentMonth, "text-slate-500 font-semibold").if(!props.active && !props.today && !props.currentMonth, "text-slate-400").build();
3614
- return /* @__PURE__ */ React__default.createElement("span", { onClick: props.onClick, className }, props.children);
3605
+ const FILTERS$1 = ["In Progress", "Completed", "Available", "Locked"];
3606
+ const STATUS_CLASSNAMES$2 = {
3607
+ "In Progress": {
3608
+ border: "border-sky-blue-400/30",
3609
+ shadow: "shadow-[0_4px_20px_rgba(59,208,242,0.10)]",
3610
+ strip: "from-sky-blue-400 to-mint-400",
3611
+ pillAccent: "cyan",
3612
+ pillLabel: "Active"
3613
+ },
3614
+ Completed: {
3615
+ border: "border-mint-400/30",
3616
+ shadow: "shadow-[0_4px_20px_rgba(30,226,175,0.10)]",
3617
+ strip: "from-mint-400 to-gold-400",
3618
+ pillAccent: "mint",
3619
+ pillLabel: "Done"
3620
+ },
3621
+ Available: {
3622
+ border: "border-gold-400/30",
3623
+ shadow: "shadow-[0_4px_20px_rgba(255,212,77,0.10)]",
3624
+ strip: "from-gold-400 to-sky-blue-400",
3625
+ pillAccent: "gold",
3626
+ pillLabel: "Open"
3627
+ },
3628
+ Locked: {
3629
+ border: "border-slate-200",
3630
+ shadow: "shadow-sm",
3631
+ strip: "from-slate-200 to-slate-200",
3632
+ pillAccent: "slate",
3633
+ pillLabel: "Locked"
3634
+ }
3615
3635
  };
3616
- const WEEKDAYS = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
3617
- const weeks = (date, weeks2) => {
3618
- const start = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay());
3619
- const end = new Date(start.getFullYear(), start.getMonth(), start.getDate() + weeks2 * 7 - 1);
3620
- return [start, end];
3636
+ const BadgesList = (props) => {
3637
+ const groups = groupBadges$1(props.badges);
3638
+ const [active, setActive] = React.useState("In Progress");
3639
+ const [list, setList] = React.useState(props.list);
3640
+ React.useEffect(() => {
3641
+ setList(props.list);
3642
+ }, [props.list]);
3643
+ React.useEffect(() => {
3644
+ if (list !== void 0 && props.list !== list && props.onToggleLayout) {
3645
+ props.onToggleLayout(list);
3646
+ }
3647
+ }, [list]);
3648
+ const visible = groups[active];
3649
+ return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-3.5" }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center justify-between gap-3" }, /* @__PURE__ */ React.createElement("div", { className: "text-xs font-semibold text-slate-400" }, props.badges.length, " badge", props.badges.length === 1 ? "" : "s"), /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2.5" }, /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-4 gap-1 rounded-xl border border-slate-200 bg-white p-1" }, FILTERS$1.map((label) => /* @__PURE__ */ React.createElement(Tab, { key: label, title: label, secondary: true, active: active === label, onClick: () => setActive(label) }))), /* @__PURE__ */ React.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ React.createElement(
3650
+ "button",
3651
+ {
3652
+ type: "button",
3653
+ onClick: () => setList(false),
3654
+ className: `flex h-7 w-7 items-center justify-center rounded-md ${!list ? "bg-slate-100 text-dark-blue-400" : "text-slate-300 hover:text-slate-400"}`
3655
+ },
3656
+ /* @__PURE__ */ React.createElement(IconLayoutGrid, { size: 14, stroke: 1.75 })
3657
+ ), /* @__PURE__ */ React.createElement(
3658
+ "button",
3659
+ {
3660
+ type: "button",
3661
+ onClick: () => setList(true),
3662
+ className: `flex h-7 w-7 items-center justify-center rounded-md ${list ? "bg-slate-100 text-dark-blue-400" : "text-slate-300 hover:text-slate-400"}`
3663
+ },
3664
+ /* @__PURE__ */ React.createElement(IconList, { size: 14, stroke: 1.75 })
3665
+ )))), visible.length === 0 && /* @__PURE__ */ React.createElement("p", { className: "text-sm text-slate-400" }, "No badges to display."), visible.length > 0 && (list ? /* @__PURE__ */ React.createElement("div", { className: "overflow-hidden rounded-2xl border border-slate-200 bg-white" }, visible.map((badge, i) => /* @__PURE__ */ React.createElement(BadgeListRow, __spreadValues$g({ key: badge.badgeId || i }, badge)))) : /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-2 gap-3.5 sm:grid-cols-3 lg:grid-cols-5" }, visible.map((badge, i) => /* @__PURE__ */ React.createElement(BadgeListCard, __spreadValues$g({ key: badge.badgeId || i }, badge))))));
3666
+ };
3667
+ const groupBadges$1 = (badges) => {
3668
+ const groups = {
3669
+ "In Progress": [],
3670
+ Completed: [],
3671
+ Available: [],
3672
+ Locked: []
3673
+ };
3674
+ badges.forEach((b) => {
3675
+ if (b.finishedAt) {
3676
+ groups.Completed.push(b);
3677
+ } else if (b.isLocked) {
3678
+ groups.Locked.push(b);
3679
+ } else if (b.startedAt) {
3680
+ groups["In Progress"].push(b);
3681
+ } else {
3682
+ groups.Available.push(b);
3683
+ }
3684
+ });
3685
+ return groups;
3621
3686
  };
3622
- const calend = (date) => {
3623
- return new Date(date.getFullYear(), date.getMonth(), 1);
3687
+ const pillStatus = (props) => {
3688
+ const hasProgress = !!props.startedAt || !!props.finishedAt || !!props.progress && props.progress > 0;
3689
+ return props.isLocked ? "Locked" : props.finishedAt ? "Completed" : hasProgress ? "In Progress" : "Available";
3690
+ };
3691
+ const BadgeListCard = (props) => {
3692
+ const { border, shadow, strip, pillAccent, pillLabel } = STATUS_CLASSNAMES$2[pillStatus(props)];
3693
+ const isDisabled = props.isLocked || !props.onOpen;
3694
+ return /* @__PURE__ */ React.createElement(
3695
+ "div",
3696
+ {
3697
+ onClick: () => !isDisabled && props.onOpen && props.onOpen(),
3698
+ className: `overflow-hidden rounded-2xl border bg-white ${border} ${shadow} ${isDisabled ? "" : "cursor-pointer hover:bg-slate-50"}`
3699
+ },
3700
+ /* @__PURE__ */ React.createElement("div", { className: `h-1 bg-gradient-to-r ${strip}` }),
3701
+ /* @__PURE__ */ React.createElement("div", { className: "flex flex-col items-center gap-2 p-4 text-center" }, /* @__PURE__ */ React.createElement("div", { className: props.isLocked ? "opacity-40" : "" }, /* @__PURE__ */ React.createElement(
3702
+ BadgeEmblem,
3703
+ {
3704
+ icon: props.icon,
3705
+ iconURL: props.iconURL,
3706
+ imageURL: props.imageURL,
3707
+ alt: props.displayName,
3708
+ level: props.level,
3709
+ size: "sm"
3710
+ }
3711
+ )), /* @__PURE__ */ React.createElement("div", { className: "w-full truncate text-xs font-bold text-dark-blue-400" }, props.displayName), /* @__PURE__ */ React.createElement(Pill, { label: pillLabel, accent: pillAccent }))
3712
+ );
3713
+ };
3714
+ const BadgeListRow = (props) => {
3715
+ const { pillAccent, pillLabel } = STATUS_CLASSNAMES$2[pillStatus(props)];
3716
+ const isDisabled = props.isLocked || !props.onOpen;
3717
+ return /* @__PURE__ */ React.createElement(
3718
+ "div",
3719
+ {
3720
+ onClick: () => !isDisabled && props.onOpen && props.onOpen(),
3721
+ className: `flex items-center gap-3 border-b border-slate-100 px-3.5 py-2.5 last:border-b-0 ${isDisabled ? "" : "cursor-pointer hover:bg-slate-50"}`
3722
+ },
3723
+ /* @__PURE__ */ React.createElement("div", { className: `shrink-0 ${props.isLocked ? "opacity-40" : ""}` }, /* @__PURE__ */ React.createElement(
3724
+ BadgeEmblem,
3725
+ {
3726
+ icon: props.icon,
3727
+ iconURL: props.iconURL,
3728
+ imageURL: props.imageURL,
3729
+ alt: props.displayName,
3730
+ level: props.level,
3731
+ size: "xxs"
3732
+ }
3733
+ )),
3734
+ /* @__PURE__ */ React.createElement("div", { className: "min-w-0 flex-1 truncate text-xs font-semibold text-dark-blue-400" }, props.displayName),
3735
+ /* @__PURE__ */ React.createElement(Pill, { label: pillLabel, accent: pillAccent })
3736
+ );
3737
+ };
3738
+
3739
+ const STATUS_CLASSNAMES$1 = {
3740
+ "In Progress": {
3741
+ border: "border-sky-blue-400/30",
3742
+ shadow: "shadow-[0_4px_20px_rgba(59,208,242,0.10)]",
3743
+ pillAccent: "cyan"
3744
+ },
3745
+ Completed: {
3746
+ border: "border-mint-400/30",
3747
+ shadow: "shadow-[0_4px_20px_rgba(30,226,175,0.10)]",
3748
+ pillAccent: "mint"
3749
+ },
3750
+ Available: {
3751
+ border: "border-gold-400/30",
3752
+ shadow: "shadow-[0_4px_20px_rgba(255,212,77,0.10)]",
3753
+ pillAccent: "gold"
3754
+ }
3755
+ };
3756
+ const BadgeDetail = (props) => {
3757
+ const criteria = props.criteria || [];
3758
+ const choices = {};
3759
+ const criteriaNames = criteria.map((c) => c.displayName).filter(Boolean);
3760
+ let xp = 0;
3761
+ let completed = 0;
3762
+ let anyStarted = false;
3763
+ (props.choices || []).forEach((c, i) => {
3764
+ var _a;
3765
+ const id = (_a = c.criterionId) != null ? _a : i;
3766
+ choices[id] = c;
3767
+ xp += c.xp || 0;
3768
+ if (c.completedAt)
3769
+ completed += 1;
3770
+ if (c.startedAt)
3771
+ anyStarted = true;
3772
+ });
3773
+ const status = props.finishedAt ? "Completed" : anyStarted || xp > 0 ? "In Progress" : "Available";
3774
+ const { border, shadow, pillAccent } = STATUS_CLASSNAMES$1[status];
3775
+ const showSubmit = !props.finishedAt && criteria.length > 0;
3776
+ return /* @__PURE__ */ React.createElement("div", { className: "flex max-w-2xl flex-col gap-3.5" }, props.onBack && /* @__PURE__ */ React.createElement("div", { onClick: props.onBack, className: "w-max cursor-pointer text-xs font-bold text-sky-blue-400" }, "\u2190 Back to My Badges"), /* @__PURE__ */ React.createElement("div", { className: `overflow-hidden rounded-2xl border bg-white ${border} ${shadow}` }, /* @__PURE__ */ React.createElement("div", { className: "flex gap-4 p-5" }, /* @__PURE__ */ React.createElement("div", { className: "shrink-0" }, /* @__PURE__ */ React.createElement(
3777
+ BadgeEmblem,
3778
+ {
3779
+ icon: props.icon,
3780
+ iconURL: props.iconURL,
3781
+ imageURL: props.imageURL,
3782
+ alt: props.displayName,
3783
+ level: props.level,
3784
+ size: "sm"
3785
+ }
3786
+ )), /* @__PURE__ */ React.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React.createElement("div", { className: "text-lg font-extrabold text-dark-blue-400" }, props.displayName), /* @__PURE__ */ React.createElement("div", { className: "mt-2 text-xs text-slate-500" }, /* @__PURE__ */ React.createElement("span", { className: "font-semibold" }, "Level ", (props.level || 0) + 1, "."), !!xp && /* @__PURE__ */ React.createElement("span", { className: "ml-1.5 font-bold text-mint-400" }, xp, " XP")), !!props.summary && /* @__PURE__ */ React.createElement("div", { className: "mt-2 text-xs text-slate-500" }, props.summary), /* @__PURE__ */ React.createElement("div", { className: "mt-2.5" }, /* @__PURE__ */ React.createElement(Pill, { label: status, accent: pillAccent }))))), criteriaNames.length > 0 && /* @__PURE__ */ React.createElement("div", { className: `rounded-2xl border bg-white p-5 ${border} ${shadow}` }, /* @__PURE__ */ React.createElement("div", { className: "text-sm font-bold text-dark-blue-400" }, "Badge Criteria"), /* @__PURE__ */ React.createElement("div", { className: "mt-1.5 text-xs text-slate-500" }, "Complete 1 of each: ", criteriaNames.join(", ")), /* @__PURE__ */ React.createElement("div", { className: "mt-4 flex flex-col" }, criteria.map((c, i) => {
3787
+ var _a;
3788
+ const id = (_a = c.criterionId) != null ? _a : i;
3789
+ const choice = choices[id];
3790
+ if (!choice) {
3791
+ return null;
3792
+ }
3793
+ const buttonText = choice.completedAt ? "Review" : choice.startedAt ? "Continue" : "Start";
3794
+ return /* @__PURE__ */ React.createElement("div", { key: id, className: "flex items-center gap-3.5 border-b border-slate-100 py-3.5 last:border-b-0" }, /* @__PURE__ */ React.createElement(
3795
+ "div",
3796
+ {
3797
+ className: `h-[18px] w-[18px] shrink-0 rounded-full border-2 ${choice.completedAt ? "border-mint-400 bg-mint-400" : "border-slate-300 bg-transparent"}`
3798
+ }
3799
+ ), /* @__PURE__ */ React.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React.createElement("div", { className: "text-xs font-bold text-dark-blue-400" }, choice.activityName), /* @__PURE__ */ React.createElement("div", { className: "mt-0.5 text-[10.5px] text-slate-400" }, c.displayName, !!choice.xp && /* @__PURE__ */ React.createElement("span", { className: "ml-1.5 font-bold text-mint-400" }, choice.xp, " points"))), /* @__PURE__ */ React.createElement(
3800
+ "button",
3801
+ {
3802
+ type: "button",
3803
+ onClick: choice.onClick,
3804
+ className: `shrink-0 rounded-lg px-4 py-1.5 text-xs font-bold ${choice.completedAt ? "border border-slate-200 bg-white text-slate-600 hover:bg-slate-50" : "bg-dark-blue-400 text-white hover:bg-dark-blue-400/90"}`
3805
+ },
3806
+ buttonText
3807
+ ));
3808
+ })), showSubmit && /* @__PURE__ */ React.createElement("div", { className: "mt-4 flex justify-end border-t border-slate-100 pt-3.5" }, /* @__PURE__ */ React.createElement(
3809
+ "button",
3810
+ {
3811
+ type: "button",
3812
+ disabled: !props.canSubmit && completed < criteria.length,
3813
+ onClick: props.onSubmit,
3814
+ className: "rounded-lg bg-gold-400 px-5 py-2 text-xs font-bold text-dark-blue-400 hover:bg-gold-400/90 disabled:cursor-not-allowed disabled:opacity-40"
3815
+ },
3816
+ "Submit"
3817
+ ))));
3818
+ };
3819
+
3820
+ const DateSelection = (props) => {
3821
+ const today = new Date();
3822
+ const [month, setMonth] = React__default.useState(calend(props.date || today));
3823
+ return /* @__PURE__ */ React__default.createElement(Widget, { isLoading: props.isLoading }, /* @__PURE__ */ React__default.createElement(WidgetHeader, { divide: true }, /* @__PURE__ */ React__default.createElement(WidgetTitle, { icon: "calendar" }, "Calendar")), /* @__PURE__ */ React__default.createElement(WidgetBody, null, /* @__PURE__ */ React__default.createElement(MonthSelection, { month, setMonth }), /* @__PURE__ */ React__default.createElement(DaySelection, { date: props.date, month, setDate: props.setDate })));
3824
+ };
3825
+ const MonthSelection = (props) => {
3826
+ const month = props.month;
3827
+ const previousMonth = () => props.setMonth(new Date(month.getFullYear(), month.getMonth() - 1, 1));
3828
+ const nextMonth = () => props.setMonth(new Date(month.getFullYear(), month.getMonth() + 1, 1));
3829
+ return /* @__PURE__ */ React__default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React__default.createElement("div", { className: "grow" }, /* @__PURE__ */ React__default.createElement("span", { className: "font-semibold text-md text-slate-300" }, formatDate$1(month, { month: "long" })), /* @__PURE__ */ React__default.createElement("span", { className: "text-md ml-1 text-slate-300" }, formatDate$1(month, { year: "numeric" }))), /* @__PURE__ */ React__default.createElement("div", { onClick: previousMonth, className: "cursor-pointer w-3 h-3 min-w-3 text-slate-300 hover:text-slate-500" }, /* @__PURE__ */ React__default.createElement(Icon$1, { name: "leftArrow" })), /* @__PURE__ */ React__default.createElement("div", { onClick: nextMonth, className: "cursor-pointer ml-2 w-3 h-3 min-w-3 text-slate-300 hover:text-slate-500" }, /* @__PURE__ */ React__default.createElement(Icon$1, { name: "rightArrow" })));
3830
+ };
3831
+ const DaySelection = (props) => {
3832
+ const today = new Date();
3833
+ const Days = [];
3834
+ const [start, end] = weeks(props.month, 6);
3835
+ for (let cur = start; cur <= end; cur = nextDate$1(cur)) {
3836
+ const isToday = isSameDate(today, cur);
3837
+ const isActive = isSameDate(props.date, cur);
3838
+ const isCurrentMonth = cur.getMonth() === props.month.getMonth();
3839
+ const onClick = () => props.setDate(isActive ? null : cur);
3840
+ Days.push(
3841
+ /* @__PURE__ */ React__default.createElement(
3842
+ DaySelectionOption,
3843
+ {
3844
+ key: cur.toString(),
3845
+ today: isToday,
3846
+ active: isActive,
3847
+ currentMonth: isCurrentMonth,
3848
+ onClick
3849
+ },
3850
+ cur.getDate()
3851
+ )
3852
+ );
3853
+ }
3854
+ return /* @__PURE__ */ React__default.createElement("div", { className: "mt-4 grid grid-cols-7 gap-1 text-sm justify-items-center" }, WEEKDAYS.map((date) => {
3855
+ return /* @__PURE__ */ React__default.createElement("span", { key: date, className: "w-8 text-center text-slate-400" }, date);
3856
+ }), Days);
3857
+ };
3858
+ const DaySelectionOption = (props) => {
3859
+ const className = builder("w-8 h-8 text-center cursor-pointer p-2").append("hover:text-white hover:font-semibold hover:bg-sky-400").if(props.active, "text-white font-semibold bg-sky-400").if(!props.active && props.today, "font-semibold bg-slate-100 rounded-full").if(!props.active && !props.today && props.currentMonth, "text-slate-500 font-semibold").if(!props.active && !props.today && !props.currentMonth, "text-slate-400").build();
3860
+ return /* @__PURE__ */ React__default.createElement("span", { onClick: props.onClick, className }, props.children);
3861
+ };
3862
+ const WEEKDAYS = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
3863
+ const weeks = (date, weeks2) => {
3864
+ const start = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay());
3865
+ const end = new Date(start.getFullYear(), start.getMonth(), start.getDate() + weeks2 * 7 - 1);
3866
+ return [start, end];
3867
+ };
3868
+ const calend = (date) => {
3869
+ return new Date(date.getFullYear(), date.getMonth(), 1);
3624
3870
  };
3625
3871
  const isSameDate = (left, right) => {
3626
3872
  return left === right || !!(left && right) && left.getFullYear() === right.getFullYear() && left.getMonth() === right.getMonth() && left.getDate() === right.getDate();
@@ -3779,25 +4025,25 @@ const linkify = (text) => {
3779
4025
  return replacedText;
3780
4026
  };
3781
4027
 
3782
- var __defProp$d = Object.defineProperty;
3783
- var __defProps$9 = Object.defineProperties;
3784
- var __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors;
3785
- var __getOwnPropSymbols$d = Object.getOwnPropertySymbols;
3786
- var __hasOwnProp$d = Object.prototype.hasOwnProperty;
3787
- var __propIsEnum$d = Object.prototype.propertyIsEnumerable;
3788
- var __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3789
- var __spreadValues$d = (a, b) => {
4028
+ var __defProp$f = Object.defineProperty;
4029
+ var __defProps$8 = Object.defineProperties;
4030
+ var __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;
4031
+ var __getOwnPropSymbols$f = Object.getOwnPropertySymbols;
4032
+ var __hasOwnProp$f = Object.prototype.hasOwnProperty;
4033
+ var __propIsEnum$f = Object.prototype.propertyIsEnumerable;
4034
+ var __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4035
+ var __spreadValues$f = (a, b) => {
3790
4036
  for (var prop in b || (b = {}))
3791
- if (__hasOwnProp$d.call(b, prop))
3792
- __defNormalProp$d(a, prop, b[prop]);
3793
- if (__getOwnPropSymbols$d)
3794
- for (var prop of __getOwnPropSymbols$d(b)) {
3795
- if (__propIsEnum$d.call(b, prop))
3796
- __defNormalProp$d(a, prop, b[prop]);
4037
+ if (__hasOwnProp$f.call(b, prop))
4038
+ __defNormalProp$f(a, prop, b[prop]);
4039
+ if (__getOwnPropSymbols$f)
4040
+ for (var prop of __getOwnPropSymbols$f(b)) {
4041
+ if (__propIsEnum$f.call(b, prop))
4042
+ __defNormalProp$f(a, prop, b[prop]);
3797
4043
  }
3798
4044
  return a;
3799
4045
  };
3800
- var __spreadProps$9 = (a, b) => __defProps$9(a, __getOwnPropDescs$9(b));
4046
+ var __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));
3801
4047
  const FormItem = (props) => {
3802
4048
  const responses = props.responses || [];
3803
4049
  const notEmpty = responses.length > 0 && responses[0].trim() !== "";
@@ -3824,28 +4070,28 @@ const FormItem = (props) => {
3824
4070
  }
3825
4071
  }, [isTextError]);
3826
4072
  const marginBottom = props.format === "text" ? "-mb-7" : "";
3827
- return /* @__PURE__ */ React__default.createElement("div", { className: `bg-white rounded-md p-5 shadow-sm grid grid-cols-1 gap-y-8 ${itemContainerError} ${marginBottom}` }, props.displayName && /* @__PURE__ */ React__default.createElement("div", { className: "flex gap-x-1" }, /* @__PURE__ */ React__default.createElement("div", { className: "flex items-start gap-x-4" }, props.format === "question" && /* @__PURE__ */ React__default.createElement("div", { className: `${checkIconColor} w-5 h-5 mt-1` }, /* @__PURE__ */ React__default.createElement(Icon$1, { name: "positive" })), /* @__PURE__ */ React__default.createElement("div", { className: "grow max-w-lg" }, props.displayName && /* @__PURE__ */ React__default.createElement("p", { className: "flex-auto text-lg text-slate-600 font-semibold whitespace-pre-line" }, linkify(props.displayName)), props.description && /* @__PURE__ */ React__default.createElement("p", { className: "text-sm text-slate-400 whitespace-pre-line" }, linkify(props.description)))), props.required && /* @__PURE__ */ React__default.createElement("p", { className: "text-sm text-rose-600" }, "*")), !props.children && props.format !== "text" && /* @__PURE__ */ React__default.createElement("div", { className: `${contentMaxWidth} ml-1` }, /* @__PURE__ */ React__default.createElement(Switch, __spreadProps$9(__spreadValues$d({}, props), { onTextBlur })), showError && /* @__PURE__ */ React__default.createElement("div", { className: "text-rose-300 flex items-center gap-x-2 mt-4" }, /* @__PURE__ */ React__default.createElement("div", { className: "w-4 h-4" }, /* @__PURE__ */ React__default.createElement(Icon$1, { name: "negative" })), /* @__PURE__ */ React__default.createElement("span", { className: "grow text-sm" }, "Must be a minimum of ", minimum, " characters."))), props.children);
4073
+ return /* @__PURE__ */ React__default.createElement("div", { className: `bg-white rounded-md p-5 shadow-sm grid grid-cols-1 gap-y-8 ${itemContainerError} ${marginBottom}` }, props.displayName && /* @__PURE__ */ React__default.createElement("div", { className: "flex gap-x-1" }, /* @__PURE__ */ React__default.createElement("div", { className: "flex items-start gap-x-4" }, props.format === "question" && /* @__PURE__ */ React__default.createElement("div", { className: `${checkIconColor} w-5 h-5 mt-1` }, /* @__PURE__ */ React__default.createElement(Icon$1, { name: "positive" })), /* @__PURE__ */ React__default.createElement("div", { className: "grow max-w-lg" }, props.displayName && /* @__PURE__ */ React__default.createElement("p", { className: "flex-auto text-lg text-slate-600 font-semibold whitespace-pre-line" }, linkify(props.displayName)), props.description && /* @__PURE__ */ React__default.createElement("p", { className: "text-sm text-slate-400 whitespace-pre-line" }, linkify(props.description)))), props.required && /* @__PURE__ */ React__default.createElement("p", { className: "text-sm text-rose-600" }, "*")), !props.children && props.format !== "text" && /* @__PURE__ */ React__default.createElement("div", { className: `${contentMaxWidth} ml-1` }, /* @__PURE__ */ React__default.createElement(Switch, __spreadProps$8(__spreadValues$f({}, props), { onTextBlur })), showError && /* @__PURE__ */ React__default.createElement("div", { className: "text-rose-300 flex items-center gap-x-2 mt-4" }, /* @__PURE__ */ React__default.createElement("div", { className: "w-4 h-4" }, /* @__PURE__ */ React__default.createElement(Icon$1, { name: "negative" })), /* @__PURE__ */ React__default.createElement("span", { className: "grow text-sm" }, "Must be a minimum of ", minimum, " characters."))), props.children);
3828
4074
  };
3829
4075
  const Switch = (props) => {
3830
4076
  switch (true) {
3831
4077
  case props.format === "embed":
3832
- return /* @__PURE__ */ React__default.createElement(Embed, __spreadValues$d({}, props));
4078
+ return /* @__PURE__ */ React__default.createElement(Embed, __spreadValues$f({}, props));
3833
4079
  case props.format === "image":
3834
- return /* @__PURE__ */ React__default.createElement(Image, __spreadValues$d({}, props));
4080
+ return /* @__PURE__ */ React__default.createElement(Image, __spreadValues$f({}, props));
3835
4081
  case props.questionType === "radio":
3836
- return /* @__PURE__ */ React__default.createElement(RadioQuestion, __spreadValues$d({}, props));
4082
+ return /* @__PURE__ */ React__default.createElement(RadioQuestion, __spreadValues$f({}, props));
3837
4083
  case props.questionType === "checkbox":
3838
- return /* @__PURE__ */ React__default.createElement(CheckboxQuestion, __spreadValues$d({}, props));
4084
+ return /* @__PURE__ */ React__default.createElement(CheckboxQuestion, __spreadValues$f({}, props));
3839
4085
  case props.questionType === "drop down":
3840
- return /* @__PURE__ */ React__default.createElement(DropDownQuestion, __spreadValues$d({}, props));
4086
+ return /* @__PURE__ */ React__default.createElement(DropDownQuestion, __spreadValues$f({}, props));
3841
4087
  case props.questionType === "file upload":
3842
- return /* @__PURE__ */ React__default.createElement(FileUploadQuestion, __spreadValues$d({}, props));
4088
+ return /* @__PURE__ */ React__default.createElement(FileUploadQuestion, __spreadValues$f({}, props));
3843
4089
  case props.questionType === "text":
3844
- return /* @__PURE__ */ React__default.createElement(TextQuestion, __spreadValues$d({}, props));
4090
+ return /* @__PURE__ */ React__default.createElement(TextQuestion, __spreadValues$f({}, props));
3845
4091
  case props.questionType === "date":
3846
- return /* @__PURE__ */ React__default.createElement(DateQuestion, __spreadValues$d({}, props));
4092
+ return /* @__PURE__ */ React__default.createElement(DateQuestion, __spreadValues$f({}, props));
3847
4093
  case props.questionType === "time":
3848
- return /* @__PURE__ */ React__default.createElement(TimeQuestion, __spreadValues$d({}, props));
4094
+ return /* @__PURE__ */ React__default.createElement(TimeQuestion, __spreadValues$f({}, props));
3849
4095
  default:
3850
4096
  return null;
3851
4097
  }
@@ -4202,25 +4448,25 @@ const FormSubmitDialog$1 = (props) => {
4202
4448
  ))));
4203
4449
  };
4204
4450
 
4205
- var __defProp$c = Object.defineProperty;
4206
- var __defProps$8 = Object.defineProperties;
4207
- var __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;
4208
- var __getOwnPropSymbols$c = Object.getOwnPropertySymbols;
4209
- var __hasOwnProp$c = Object.prototype.hasOwnProperty;
4210
- var __propIsEnum$c = Object.prototype.propertyIsEnumerable;
4211
- var __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4212
- var __spreadValues$c = (a, b) => {
4451
+ var __defProp$e = Object.defineProperty;
4452
+ var __defProps$7 = Object.defineProperties;
4453
+ var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;
4454
+ var __getOwnPropSymbols$e = Object.getOwnPropertySymbols;
4455
+ var __hasOwnProp$e = Object.prototype.hasOwnProperty;
4456
+ var __propIsEnum$e = Object.prototype.propertyIsEnumerable;
4457
+ var __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4458
+ var __spreadValues$e = (a, b) => {
4213
4459
  for (var prop in b || (b = {}))
4214
- if (__hasOwnProp$c.call(b, prop))
4215
- __defNormalProp$c(a, prop, b[prop]);
4216
- if (__getOwnPropSymbols$c)
4217
- for (var prop of __getOwnPropSymbols$c(b)) {
4218
- if (__propIsEnum$c.call(b, prop))
4219
- __defNormalProp$c(a, prop, b[prop]);
4460
+ if (__hasOwnProp$e.call(b, prop))
4461
+ __defNormalProp$e(a, prop, b[prop]);
4462
+ if (__getOwnPropSymbols$e)
4463
+ for (var prop of __getOwnPropSymbols$e(b)) {
4464
+ if (__propIsEnum$e.call(b, prop))
4465
+ __defNormalProp$e(a, prop, b[prop]);
4220
4466
  }
4221
4467
  return a;
4222
4468
  };
4223
- var __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));
4469
+ var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
4224
4470
  const AUTOSAVE_TIMEOUT = 30 * 1e3;
4225
4471
  const MIN_REFLECTION_LENGTH = 0;
4226
4472
  const autoSave = (run, func, callback) => {
@@ -4331,7 +4577,7 @@ const LearningForm = (props) => {
4331
4577
  /* @__PURE__ */ React__default.createElement("div", { className: "w-3 h-3 min-w-3" }, /* @__PURE__ */ React__default.createElement(Icon$1, { name: "leftArrow" })),
4332
4578
  /* @__PURE__ */ React__default.createElement("span", { className: "text-md" }, "Back")
4333
4579
  ), !!props.displayName && /* @__PURE__ */ React__default.createElement("h2", { className: "h-max font-semibold text-2xl" }, props.displayName), !!props.description && /* @__PURE__ */ React__default.createElement("p", { className: "h-max max-h-[14rem] overflow-y-auto whitespace-pre-line" }, props.description), !!props.eta && /* @__PURE__ */ React__default.createElement("p", { className: "text-sm h-max font-semibold" }, "Estimated Completion Time: ", props.eta)), /* @__PURE__ */ React__default.createElement("img", { className: "grow h-full max-h-[30rem] w-full object-cover", alt: props.displayName, src: props.imageURL })), /* @__PURE__ */ React__default.createElement("form", { className: "w-full max-w-[64rem] m-auto grid grid-cols-1 gap-y-12", onSubmit }, items.map((item) => {
4334
- return /* @__PURE__ */ React__default.createElement(FormItem, __spreadProps$8(__spreadValues$c({ key: item.itemId }, item), { minText: 0, disabled: !!props.preview }));
4580
+ return /* @__PURE__ */ React__default.createElement(FormItem, __spreadProps$7(__spreadValues$e({ key: item.itemId }, item), { minText: 0, disabled: !!props.preview }));
4335
4581
  }), /* @__PURE__ */ React__default.createElement(
4336
4582
  FormItem,
4337
4583
  {
@@ -4410,19 +4656,19 @@ const Rating = (props) => {
4410
4656
  )));
4411
4657
  };
4412
4658
 
4413
- var __defProp$b = Object.defineProperty;
4414
- var __getOwnPropSymbols$b = Object.getOwnPropertySymbols;
4415
- var __hasOwnProp$b = Object.prototype.hasOwnProperty;
4416
- var __propIsEnum$b = Object.prototype.propertyIsEnumerable;
4417
- var __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4418
- var __spreadValues$b = (a, b) => {
4659
+ var __defProp$d = Object.defineProperty;
4660
+ var __getOwnPropSymbols$d = Object.getOwnPropertySymbols;
4661
+ var __hasOwnProp$d = Object.prototype.hasOwnProperty;
4662
+ var __propIsEnum$d = Object.prototype.propertyIsEnumerable;
4663
+ var __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4664
+ var __spreadValues$d = (a, b) => {
4419
4665
  for (var prop in b || (b = {}))
4420
- if (__hasOwnProp$b.call(b, prop))
4421
- __defNormalProp$b(a, prop, b[prop]);
4422
- if (__getOwnPropSymbols$b)
4423
- for (var prop of __getOwnPropSymbols$b(b)) {
4424
- if (__propIsEnum$b.call(b, prop))
4425
- __defNormalProp$b(a, prop, b[prop]);
4666
+ if (__hasOwnProp$d.call(b, prop))
4667
+ __defNormalProp$d(a, prop, b[prop]);
4668
+ if (__getOwnPropSymbols$d)
4669
+ for (var prop of __getOwnPropSymbols$d(b)) {
4670
+ if (__propIsEnum$d.call(b, prop))
4671
+ __defNormalProp$d(a, prop, b[prop]);
4426
4672
  }
4427
4673
  return a;
4428
4674
  };
@@ -4431,7 +4677,7 @@ const NavLink = (props) => {
4431
4677
  const config = defaultConfig();
4432
4678
  withMenu(config, props.menu);
4433
4679
  withName(config, props.name);
4434
- return /* @__PURE__ */ React__default.createElement(Button, __spreadValues$b({ disabled: props.disabled, active: props.active, onClick }, config));
4680
+ return /* @__PURE__ */ React__default.createElement(Button, __spreadValues$d({ disabled: props.disabled, active: props.active, onClick }, config));
4435
4681
  };
4436
4682
  const defaultConfig = () => {
4437
4683
  return {};
@@ -4506,25 +4752,25 @@ const withName = (config, name) => {
4506
4752
  }
4507
4753
  };
4508
4754
 
4509
- var __defProp$a = Object.defineProperty;
4510
- var __defProps$7 = Object.defineProperties;
4511
- var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;
4512
- var __getOwnPropSymbols$a = Object.getOwnPropertySymbols;
4513
- var __hasOwnProp$a = Object.prototype.hasOwnProperty;
4514
- var __propIsEnum$a = Object.prototype.propertyIsEnumerable;
4515
- var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4516
- var __spreadValues$a = (a, b) => {
4755
+ var __defProp$c = Object.defineProperty;
4756
+ var __defProps$6 = Object.defineProperties;
4757
+ var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;
4758
+ var __getOwnPropSymbols$c = Object.getOwnPropertySymbols;
4759
+ var __hasOwnProp$c = Object.prototype.hasOwnProperty;
4760
+ var __propIsEnum$c = Object.prototype.propertyIsEnumerable;
4761
+ var __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4762
+ var __spreadValues$c = (a, b) => {
4517
4763
  for (var prop in b || (b = {}))
4518
- if (__hasOwnProp$a.call(b, prop))
4519
- __defNormalProp$a(a, prop, b[prop]);
4520
- if (__getOwnPropSymbols$a)
4521
- for (var prop of __getOwnPropSymbols$a(b)) {
4522
- if (__propIsEnum$a.call(b, prop))
4523
- __defNormalProp$a(a, prop, b[prop]);
4764
+ if (__hasOwnProp$c.call(b, prop))
4765
+ __defNormalProp$c(a, prop, b[prop]);
4766
+ if (__getOwnPropSymbols$c)
4767
+ for (var prop of __getOwnPropSymbols$c(b)) {
4768
+ if (__propIsEnum$c.call(b, prop))
4769
+ __defNormalProp$c(a, prop, b[prop]);
4524
4770
  }
4525
4771
  return a;
4526
4772
  };
4527
- var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
4773
+ var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
4528
4774
  const NavBar = (props) => {
4529
4775
  const className = builder("flex items-center justify-between flex-wrap sticky top-0 z-30 w-full h-16 border-b").append("bg-white px-4 py text-center").append("md:border-t-none md:border-b md:border-monochrome-50 lg:px-36 md:shadow-sm").build();
4530
4776
  const [secondary, setSecondary] = React__default.useState(false);
@@ -4542,7 +4788,7 @@ const NavBar = (props) => {
4542
4788
  return null;
4543
4789
  })), /* @__PURE__ */ React__default.createElement("div", { className: "inline-block md:hidden" }, /* @__PURE__ */ React__default.createElement(NavLink, { onClick: () => setSecondary(!secondary), name: menuIcon })), /* @__PURE__ */ React__default.createElement("div", { className: secondaryClassName }, React__default.Children.map(props.children, (Link) => {
4544
4790
  if (Link && Link.props.name !== "home") {
4545
- return /* @__PURE__ */ React__default.createElement("div", { className: "relative" }, /* @__PURE__ */ React__default.createElement(NavLink, __spreadProps$7(__spreadValues$a({}, Link.props), { menu: true })));
4791
+ return /* @__PURE__ */ React__default.createElement("div", { className: "relative" }, /* @__PURE__ */ React__default.createElement(NavLink, __spreadProps$6(__spreadValues$c({}, Link.props), { menu: true })));
4546
4792
  }
4547
4793
  return null;
4548
4794
  }))));
@@ -4639,28 +4885,28 @@ const LegalAgreement = (props) => {
4639
4885
  )));
4640
4886
  };
4641
4887
 
4642
- var __defProp$9 = Object.defineProperty;
4643
- var __defProps$6 = Object.defineProperties;
4644
- var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;
4645
- var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;
4646
- var __hasOwnProp$9 = Object.prototype.hasOwnProperty;
4647
- var __propIsEnum$9 = Object.prototype.propertyIsEnumerable;
4648
- var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4649
- var __spreadValues$9 = (a, b) => {
4888
+ var __defProp$b = Object.defineProperty;
4889
+ var __defProps$5 = Object.defineProperties;
4890
+ var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;
4891
+ var __getOwnPropSymbols$b = Object.getOwnPropertySymbols;
4892
+ var __hasOwnProp$b = Object.prototype.hasOwnProperty;
4893
+ var __propIsEnum$b = Object.prototype.propertyIsEnumerable;
4894
+ var __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4895
+ var __spreadValues$b = (a, b) => {
4650
4896
  for (var prop in b || (b = {}))
4651
- if (__hasOwnProp$9.call(b, prop))
4652
- __defNormalProp$9(a, prop, b[prop]);
4653
- if (__getOwnPropSymbols$9)
4654
- for (var prop of __getOwnPropSymbols$9(b)) {
4655
- if (__propIsEnum$9.call(b, prop))
4656
- __defNormalProp$9(a, prop, b[prop]);
4897
+ if (__hasOwnProp$b.call(b, prop))
4898
+ __defNormalProp$b(a, prop, b[prop]);
4899
+ if (__getOwnPropSymbols$b)
4900
+ for (var prop of __getOwnPropSymbols$b(b)) {
4901
+ if (__propIsEnum$b.call(b, prop))
4902
+ __defNormalProp$b(a, prop, b[prop]);
4657
4903
  }
4658
4904
  return a;
4659
4905
  };
4660
- var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
4906
+ var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
4661
4907
  const CommunitySearch = (props) => {
4662
4908
  const [accessCode, setAccessCode] = React__default.useState("");
4663
- return /* @__PURE__ */ React__default.createElement("div", { className: "w-full md:w-[30rem] bg-white grid grid-cols-1 gap-4 rounded-md border border-slate-200 px-8 py-5 shadow-sm" }, /* @__PURE__ */ React__default.createElement("div", { className: "text-slate-600" }, /* @__PURE__ */ React__default.createElement("p", { className: "font-bold text-2xl" }, "Which is your community?"), /* @__PURE__ */ React__default.createElement("p", { className: "text-sm" }, "Pick your community.")), /* @__PURE__ */ React__default.createElement(Search, __spreadProps$6(__spreadValues$9({}, props), { autofocus: !accessCode, placeholder: props.name })), !!props.name && /* @__PURE__ */ React__default.createElement("div", { className: "text-slate-600 grid-cols-1 gap-2" }, /* @__PURE__ */ React__default.createElement("div", null, /* @__PURE__ */ React__default.createElement("span", { className: "text-sm" }, "Enter the access code for"), /* @__PURE__ */ React__default.createElement("span", { className: "ml-1 font-semibold text-sm" }, props.name), /* @__PURE__ */ React__default.createElement("span", { className: "text-sm" }, ".")), /* @__PURE__ */ React__default.createElement("div", { className: "mt-2 content-center grid grid-cols-3 gap-x-2" }, /* @__PURE__ */ React__default.createElement(
4909
+ return /* @__PURE__ */ React__default.createElement("div", { className: "w-full md:w-[30rem] bg-white grid grid-cols-1 gap-4 rounded-md border border-slate-200 px-8 py-5 shadow-sm" }, /* @__PURE__ */ React__default.createElement("div", { className: "text-slate-600" }, /* @__PURE__ */ React__default.createElement("p", { className: "font-bold text-2xl" }, "Which is your community?"), /* @__PURE__ */ React__default.createElement("p", { className: "text-sm" }, "Pick your community.")), /* @__PURE__ */ React__default.createElement(Search, __spreadProps$5(__spreadValues$b({}, props), { autofocus: !accessCode, placeholder: props.name })), !!props.name && /* @__PURE__ */ React__default.createElement("div", { className: "text-slate-600 grid-cols-1 gap-2" }, /* @__PURE__ */ React__default.createElement("div", null, /* @__PURE__ */ React__default.createElement("span", { className: "text-sm" }, "Enter the access code for"), /* @__PURE__ */ React__default.createElement("span", { className: "ml-1 font-semibold text-sm" }, props.name), /* @__PURE__ */ React__default.createElement("span", { className: "text-sm" }, ".")), /* @__PURE__ */ React__default.createElement("div", { className: "mt-2 content-center grid grid-cols-3 gap-x-2" }, /* @__PURE__ */ React__default.createElement(
4664
4910
  "input",
4665
4911
  {
4666
4912
  disabled: props.disabled,
@@ -4795,27 +5041,27 @@ const Welcome = (props) => {
4795
5041
  )));
4796
5042
  };
4797
5043
 
4798
- var __defProp$8 = Object.defineProperty;
4799
- var __defProps$5 = Object.defineProperties;
4800
- var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;
4801
- var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;
4802
- var __hasOwnProp$8 = Object.prototype.hasOwnProperty;
4803
- var __propIsEnum$8 = Object.prototype.propertyIsEnumerable;
4804
- var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4805
- var __spreadValues$8 = (a, b) => {
5044
+ var __defProp$a = Object.defineProperty;
5045
+ var __defProps$4 = Object.defineProperties;
5046
+ var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
5047
+ var __getOwnPropSymbols$a = Object.getOwnPropertySymbols;
5048
+ var __hasOwnProp$a = Object.prototype.hasOwnProperty;
5049
+ var __propIsEnum$a = Object.prototype.propertyIsEnumerable;
5050
+ var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5051
+ var __spreadValues$a = (a, b) => {
4806
5052
  for (var prop in b || (b = {}))
4807
- if (__hasOwnProp$8.call(b, prop))
4808
- __defNormalProp$8(a, prop, b[prop]);
4809
- if (__getOwnPropSymbols$8)
4810
- for (var prop of __getOwnPropSymbols$8(b)) {
4811
- if (__propIsEnum$8.call(b, prop))
4812
- __defNormalProp$8(a, prop, b[prop]);
5053
+ if (__hasOwnProp$a.call(b, prop))
5054
+ __defNormalProp$a(a, prop, b[prop]);
5055
+ if (__getOwnPropSymbols$a)
5056
+ for (var prop of __getOwnPropSymbols$a(b)) {
5057
+ if (__propIsEnum$a.call(b, prop))
5058
+ __defNormalProp$a(a, prop, b[prop]);
4813
5059
  }
4814
5060
  return a;
4815
5061
  };
4816
- var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
5062
+ var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
4817
5063
  const Onboarding = (props) => {
4818
- return /* @__PURE__ */ React__default.createElement(Modal, { stage: true, isLoading: props.isLoading, inline: true, plain: true, visible: true }, /* @__PURE__ */ React__default.createElement(Delegate, __spreadValues$8({}, props)));
5064
+ return /* @__PURE__ */ React__default.createElement(Modal, { stage: true, isLoading: props.isLoading, inline: true, plain: true, visible: true }, /* @__PURE__ */ React__default.createElement(Delegate, __spreadValues$a({}, props)));
4819
5065
  };
4820
5066
  const Delegate = (props) => {
4821
5067
  const [agreed, setAgreed] = React__default.useState(!!props.hasOrganization || props.search !== null);
@@ -4829,7 +5075,7 @@ const Delegate = (props) => {
4829
5075
  if (!props.hasOrganization) {
4830
5076
  return /* @__PURE__ */ React__default.createElement(
4831
5077
  CommunitySearch,
4832
- __spreadProps$5(__spreadValues$8({}, organization), {
5078
+ __spreadProps$4(__spreadValues$a({}, organization), {
4833
5079
  open: organizationOpen,
4834
5080
  value: props.search,
4835
5081
  results: props.organizations && props.organizations.map((organization2) => {
@@ -5145,19 +5391,19 @@ const ProfileWidget = (props) => {
5145
5391
  ), props.online && /* @__PURE__ */ React__default.createElement("span", { className: "absolute h-3.5 w-3.5 lg:w-4 lg:h-4 top-0 right-0 lg:top-2 lg:right-3 rounded-full bg-green-500 border-4 border-white" })), /* @__PURE__ */ React__default.createElement("div", { className: "grid grid-cols-1 content-center align-middle" }, /* @__PURE__ */ React__default.createElement("div", { className: "grid lg:gap-1" }, /* @__PURE__ */ React__default.createElement("div", { className: "grid grid-cols-1" }, props.tenantName && /* @__PURE__ */ React__default.createElement("span", { className: "text-slate-300 text-sm" }, "@", props.tenantName), /* @__PURE__ */ React__default.createElement("h4", { className: "inline-block font-semibold capitalize text-2xl lg:text-4xl text-slate-600" }, props.givenName, " ", props.familyName)), props.createdAt && /* @__PURE__ */ React__default.createElement("p", { className: "text-sm text-slate-300" }, "Member since ", new Date(props.createdAt).getFullYear())))))));
5146
5392
  };
5147
5393
 
5148
- var __defProp$7 = Object.defineProperty;
5149
- var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;
5150
- var __hasOwnProp$7 = Object.prototype.hasOwnProperty;
5151
- var __propIsEnum$7 = Object.prototype.propertyIsEnumerable;
5152
- var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5153
- var __spreadValues$7 = (a, b) => {
5394
+ var __defProp$9 = Object.defineProperty;
5395
+ var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;
5396
+ var __hasOwnProp$9 = Object.prototype.hasOwnProperty;
5397
+ var __propIsEnum$9 = Object.prototype.propertyIsEnumerable;
5398
+ var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5399
+ var __spreadValues$9 = (a, b) => {
5154
5400
  for (var prop in b || (b = {}))
5155
- if (__hasOwnProp$7.call(b, prop))
5156
- __defNormalProp$7(a, prop, b[prop]);
5157
- if (__getOwnPropSymbols$7)
5158
- for (var prop of __getOwnPropSymbols$7(b)) {
5159
- if (__propIsEnum$7.call(b, prop))
5160
- __defNormalProp$7(a, prop, b[prop]);
5401
+ if (__hasOwnProp$9.call(b, prop))
5402
+ __defNormalProp$9(a, prop, b[prop]);
5403
+ if (__getOwnPropSymbols$9)
5404
+ for (var prop of __getOwnPropSymbols$9(b)) {
5405
+ if (__propIsEnum$9.call(b, prop))
5406
+ __defNormalProp$9(a, prop, b[prop]);
5161
5407
  }
5162
5408
  return a;
5163
5409
  };
@@ -5165,9 +5411,9 @@ const FormInput = (props) => {
5165
5411
  return /* @__PURE__ */ React__default.createElement("div", { className: "grid grid-cols-1 gap-y-2" }, props.headline && /* @__PURE__ */ React__default.createElement("div", { className: "flex gap-x-1" }, /* @__PURE__ */ React__default.createElement("div", { className: "flex items-start gap-x-4" }, /* @__PURE__ */ React__default.createElement("div", { className: "grow" }, props.headline && /* @__PURE__ */ React__default.createElement("p", { className: "text-sm text-slate-600 font-semibold" }, props.headline), props.summary && /* @__PURE__ */ React__default.createElement("p", { className: "text-xs text-slate-500" }, props.summary))), !props.readonly && props.required && /* @__PURE__ */ React__default.createElement("p", { className: "text-sm text-rose-600" }, "*")), /* @__PURE__ */ React__default.createElement("div", null, (() => {
5166
5412
  switch (props.type) {
5167
5413
  case "dropdown":
5168
- return /* @__PURE__ */ React__default.createElement(DropDownInput, __spreadValues$7({}, props));
5414
+ return /* @__PURE__ */ React__default.createElement(DropDownInput, __spreadValues$9({}, props));
5169
5415
  default:
5170
- return /* @__PURE__ */ React__default.createElement(Input, __spreadValues$7({}, props));
5416
+ return /* @__PURE__ */ React__default.createElement(Input, __spreadValues$9({}, props));
5171
5417
  }
5172
5418
  })()));
5173
5419
  };
@@ -5275,32 +5521,32 @@ const FormSubmitDialog = (props) => {
5275
5521
  ))));
5276
5522
  };
5277
5523
 
5278
- var __defProp$6 = Object.defineProperty;
5279
- var __defProps$4 = Object.defineProperties;
5280
- var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
5281
- var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;
5282
- var __hasOwnProp$6 = Object.prototype.hasOwnProperty;
5283
- var __propIsEnum$6 = Object.prototype.propertyIsEnumerable;
5284
- var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5285
- var __spreadValues$6 = (a, b) => {
5524
+ var __defProp$8 = Object.defineProperty;
5525
+ var __defProps$3 = Object.defineProperties;
5526
+ var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
5527
+ var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;
5528
+ var __hasOwnProp$8 = Object.prototype.hasOwnProperty;
5529
+ var __propIsEnum$8 = Object.prototype.propertyIsEnumerable;
5530
+ var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5531
+ var __spreadValues$8 = (a, b) => {
5286
5532
  for (var prop in b || (b = {}))
5287
- if (__hasOwnProp$6.call(b, prop))
5288
- __defNormalProp$6(a, prop, b[prop]);
5289
- if (__getOwnPropSymbols$6)
5290
- for (var prop of __getOwnPropSymbols$6(b)) {
5291
- if (__propIsEnum$6.call(b, prop))
5292
- __defNormalProp$6(a, prop, b[prop]);
5533
+ if (__hasOwnProp$8.call(b, prop))
5534
+ __defNormalProp$8(a, prop, b[prop]);
5535
+ if (__getOwnPropSymbols$8)
5536
+ for (var prop of __getOwnPropSymbols$8(b)) {
5537
+ if (__propIsEnum$8.call(b, prop))
5538
+ __defNormalProp$8(a, prop, b[prop]);
5293
5539
  }
5294
5540
  return a;
5295
5541
  };
5296
- var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
5542
+ var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
5297
5543
  const Form = (props) => {
5298
5544
  const [showExitDialogue, setShowExitDialogue] = React__default.useState(!!props.showExitDialogue);
5299
5545
  const [showSubmitDialogue, setShowSubmitDialogue] = React__default.useState(!!props.showSubmitDialogue);
5300
5546
  const [responses, setResponses] = React__default.useState({});
5301
5547
  const [inReview, setInReview] = React__default.useState(!!props.inReview);
5302
5548
  const setResponse = (key, value) => {
5303
- setResponses(__spreadProps$4(__spreadValues$6({}, responses), { [key]: value }));
5549
+ setResponses(__spreadProps$3(__spreadValues$8({}, responses), { [key]: value }));
5304
5550
  };
5305
5551
  const onSubmit = (e) => {
5306
5552
  e.preventDefault();
@@ -5419,25 +5665,25 @@ const Form = (props) => {
5419
5665
  )))))))), showExitDialogue && /* @__PURE__ */ React__default.createElement("div", { className: "fixed top-0 left-0 px-4 md:px-2 w-screen h-screen py-5 transition ease-in-out duration-400 bg-gray-200/75 z-40" }, /* @__PURE__ */ React__default.createElement("div", { className: "flex md:w-max h-screen gap-x-2 justify-items-center content-center m-auto" }, /* @__PURE__ */ React__default.createElement(FormExitDialog, { onYes: props.onClose, onNo: () => setShowExitDialogue(false) }))), showSubmitDialogue && /* @__PURE__ */ React__default.createElement("div", { className: "fixed top-0 left-0 px-4 md:px-2 w-screen h-screen py-5 transition ease-in-out duration-400 bg-gray-200/75 z-40" }, /* @__PURE__ */ React__default.createElement("div", { className: "flex md:w-max h-screen gap-x-2 justify-items-center content-center m-auto" }, /* @__PURE__ */ React__default.createElement(FormSubmitDialog, { onGoBack: () => setShowSubmitDialogue(false), onContinue: props.onClose }))));
5420
5666
  };
5421
5667
 
5422
- var __defProp$5 = Object.defineProperty;
5423
- var __defProps$3 = Object.defineProperties;
5424
- var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
5425
- var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
5426
- var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
5427
- var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
5428
- var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5429
- var __spreadValues$5 = (a, b) => {
5668
+ var __defProp$7 = Object.defineProperty;
5669
+ var __defProps$2 = Object.defineProperties;
5670
+ var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
5671
+ var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;
5672
+ var __hasOwnProp$7 = Object.prototype.hasOwnProperty;
5673
+ var __propIsEnum$7 = Object.prototype.propertyIsEnumerable;
5674
+ var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5675
+ var __spreadValues$7 = (a, b) => {
5430
5676
  for (var prop in b || (b = {}))
5431
- if (__hasOwnProp$5.call(b, prop))
5432
- __defNormalProp$5(a, prop, b[prop]);
5433
- if (__getOwnPropSymbols$5)
5434
- for (var prop of __getOwnPropSymbols$5(b)) {
5435
- if (__propIsEnum$5.call(b, prop))
5436
- __defNormalProp$5(a, prop, b[prop]);
5677
+ if (__hasOwnProp$7.call(b, prop))
5678
+ __defNormalProp$7(a, prop, b[prop]);
5679
+ if (__getOwnPropSymbols$7)
5680
+ for (var prop of __getOwnPropSymbols$7(b)) {
5681
+ if (__propIsEnum$7.call(b, prop))
5682
+ __defNormalProp$7(a, prop, b[prop]);
5437
5683
  }
5438
5684
  return a;
5439
5685
  };
5440
- var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
5686
+ var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
5441
5687
  const LogServiceButton = (props) => {
5442
5688
  const [isOpen, setIsOpen] = React__default.useState(!!props.isOpen);
5443
5689
  const text = props.text || "Log Service";
@@ -5468,140 +5714,7 @@ const LogServiceButton = (props) => {
5468
5714
  size: "full:md",
5469
5715
  onClick: onOpen
5470
5716
  }
5471
- ), isOpen && /* @__PURE__ */ React__default.createElement(Form, __spreadProps$3(__spreadValues$5({ onSubmit: props.onSubmit }, props.form), { onClose })));
5472
- };
5473
-
5474
- var __defProp$4 = Object.defineProperty;
5475
- var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
5476
- var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
5477
- var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
5478
- var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5479
- var __spreadValues$4 = (a, b) => {
5480
- for (var prop in b || (b = {}))
5481
- if (__hasOwnProp$4.call(b, prop))
5482
- __defNormalProp$4(a, prop, b[prop]);
5483
- if (__getOwnPropSymbols$4)
5484
- for (var prop of __getOwnPropSymbols$4(b)) {
5485
- if (__propIsEnum$4.call(b, prop))
5486
- __defNormalProp$4(a, prop, b[prop]);
5487
- }
5488
- return a;
5489
- };
5490
- const TABS = [
5491
- { name: "profile", label: "My Profile", icon: IconUser, accent: "cyan" },
5492
- { name: "pathways", label: "Pathways", icon: IconRoute, accent: "mint" },
5493
- { name: "badges", label: "Badges", icon: IconAlbum, accent: "gold" },
5494
- { name: "file-locker", label: "File Locker", icon: IconClipboard, accent: "cyan" },
5495
- { name: "transcript", label: "Transcript", icon: IconFileText, accent: "mint" },
5496
- { name: "portfolio", label: "Portfolio", icon: IconBriefcase, accent: "gold" }
5497
- ];
5498
- const Sidebar = (props) => {
5499
- return /* @__PURE__ */ React__default.createElement("nav", { className: "flex h-full w-[230px] shrink-0 flex-col border-r border-slate-200 bg-white" }, /* @__PURE__ */ React__default.createElement("div", { className: "border-b border-slate-100 p-4" }, /* @__PURE__ */ React__default.createElement("div", { className: "w-24" }, /* @__PURE__ */ React__default.createElement(Logo, null))), props.identity && /* @__PURE__ */ React__default.createElement(SidebarIdentityChip, __spreadValues$4({}, props.identity)), /* @__PURE__ */ React__default.createElement("div", { className: "flex flex-1 flex-col gap-0.5 overflow-y-auto p-2.5" }, TABS.map((tab) => {
5500
- const link = props.links[tab.name];
5501
- return /* @__PURE__ */ React__default.createElement(
5502
- SidebarLink,
5503
- {
5504
- key: tab.name,
5505
- label: tab.label,
5506
- icon: tab.icon,
5507
- accent: tab.accent,
5508
- href: link == null ? void 0 : link.href,
5509
- active: props.active === tab.name,
5510
- disabled: props.disabled || !link
5511
- }
5512
- );
5513
- })), (props.settingsHref || props.onLogout) && /* @__PURE__ */ React__default.createElement("div", { className: "flex flex-col gap-0.5 border-t border-slate-100 p-2.5" }, props.settingsHref && /* @__PURE__ */ React__default.createElement(SidebarUtilLink, { label: "Settings", icon: IconSettings, href: props.settingsHref }), props.onLogout && /* @__PURE__ */ React__default.createElement(SidebarUtilLink, { label: "Logout", icon: IconLogout, onClick: props.onLogout })));
5514
- };
5515
- const SidebarIdentityChip = (props) => /* @__PURE__ */ React__default.createElement("div", { className: "m-3 flex items-center gap-2.5 rounded-xl bg-slate-50 p-2.5" }, /* @__PURE__ */ React__default.createElement(
5516
- "img",
5517
- {
5518
- className: "h-8 w-8 shrink-0 rounded-full object-cover",
5519
- src: props.avatarURL || "https://cdn.localcivics.io/hub/avatar.jpg",
5520
- alt: "avatar"
5521
- }
5522
- ), /* @__PURE__ */ React__default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React__default.createElement("div", { className: "truncate text-xs font-bold text-dark-blue-400" }, props.name), props.subtitle && /* @__PURE__ */ React__default.createElement("div", { className: "truncate text-[10px] text-slate-400" }, props.subtitle)));
5523
- const SidebarLink = (props) => {
5524
- const config = defaultLinkConfig();
5525
- withAccent(config, props.accent, props.active);
5526
- withDisabled(config, props.disabled);
5527
- const Icon = props.icon;
5528
- const content = /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("div", { className: classname(config.chip) }, /* @__PURE__ */ React__default.createElement(Icon, { size: 14, stroke: props.active ? 2.2 : 1.75, className: config.icon.color })), /* @__PURE__ */ React__default.createElement("span", { className: classname(config.label) }, props.label), /* @__PURE__ */ React__default.createElement("span", { className: classname(config.dot) }));
5529
- if (props.disabled || !props.href) {
5530
- return /* @__PURE__ */ React__default.createElement("div", { className: classname(config.row) }, content);
5531
- }
5532
- return /* @__PURE__ */ React__default.createElement(Link, { to: props.href, className: classname(config.row) }, content);
5533
- };
5534
- const SidebarUtilLink = (props) => {
5535
- const className = "flex cursor-pointer items-center gap-2.5 rounded-[10px] px-3.5 py-2 text-slate-400 hover:bg-slate-50 hover:text-slate-500";
5536
- const Icon = props.icon;
5537
- const content = /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(Icon, { size: 13 }), /* @__PURE__ */ React__default.createElement("span", { className: "text-[11.5px]" }, props.label));
5538
- if (props.href) {
5539
- return /* @__PURE__ */ React__default.createElement(Link, { to: props.href, className }, content);
5540
- }
5541
- return /* @__PURE__ */ React__default.createElement("div", { onClick: props.onClick, className }, content);
5542
- };
5543
- const defaultLinkConfig = () => ({
5544
- row: {
5545
- base: "flex items-center gap-2.5 rounded-[10px] px-3.5 py-2.5 transition-colors",
5546
- cursor: "cursor-pointer hover:bg-slate-50",
5547
- bg: "bg-transparent",
5548
- border: "border border-transparent"
5549
- },
5550
- chip: {
5551
- base: "flex h-[30px] w-[30px] shrink-0 items-center justify-center rounded-lg",
5552
- bg: "bg-slate-50"
5553
- },
5554
- icon: {
5555
- color: "text-slate-400"
5556
- },
5557
- label: {
5558
- base: "flex-1 text-xs",
5559
- weight: "font-medium",
5560
- color: "text-slate-500"
5561
- },
5562
- dot: {
5563
- base: "h-[5px] w-[5px] shrink-0 rounded-full",
5564
- bg: "bg-transparent"
5565
- }
5566
- });
5567
- const withAccent = (config, accent, active) => {
5568
- if (!active) {
5569
- return;
5570
- }
5571
- config.row.cursor = "cursor-default";
5572
- config.label.weight = "font-bold";
5573
- config.label.color = "text-dark-blue-400";
5574
- switch (accent) {
5575
- case "cyan":
5576
- config.row.bg = "bg-sky-blue-400/15";
5577
- config.row.border = "border border-sky-blue-400/30";
5578
- config.chip.bg = "bg-sky-blue-400/25";
5579
- config.icon.color = "text-sky-blue-400";
5580
- config.dot.bg = "bg-sky-blue-400";
5581
- break;
5582
- case "mint":
5583
- config.row.bg = "bg-mint-400/15";
5584
- config.row.border = "border border-mint-400/30";
5585
- config.chip.bg = "bg-mint-400/25";
5586
- config.icon.color = "text-mint-400";
5587
- config.dot.bg = "bg-mint-400";
5588
- break;
5589
- case "gold":
5590
- config.row.bg = "bg-gold-400/15";
5591
- config.row.border = "border border-gold-400/30";
5592
- config.chip.bg = "bg-gold-400/25";
5593
- config.icon.color = "text-gold-400";
5594
- config.dot.bg = "bg-gold-400";
5595
- break;
5596
- }
5597
- };
5598
- const withDisabled = (config, disabled) => {
5599
- if (!disabled) {
5600
- return;
5601
- }
5602
- config.row.cursor = "cursor-default";
5603
- config.icon.color = "text-slate-300";
5604
- config.label.color = "text-slate-300";
5717
+ ), isOpen && /* @__PURE__ */ React__default.createElement(Form, __spreadProps$2(__spreadValues$7({ onSubmit: props.onSubmit }, props.form), { onClose })));
5605
5718
  };
5606
5719
 
5607
5720
  const Stopwatch = (props) => {
@@ -5785,6 +5898,28 @@ const PathwayOverview = (props) => {
5785
5898
  const PathwayTranscript = (props) => {
5786
5899
  var _a;
5787
5900
  const [layout, setLayout] = React.useState("list");
5901
+ const today = React.useMemo(
5902
+ () => new Date().toLocaleDateString("en-US", { year: "numeric", month: "long", day: "numeric" }),
5903
+ []
5904
+ );
5905
+ const mappedTargets = React.useMemo(() => {
5906
+ var _a2;
5907
+ const t = {};
5908
+ Object.entries((_a2 = props.rawCriteria) != null ? _a2 : {}).forEach(([id, val]) => {
5909
+ var _a3;
5910
+ t[((_a3 = props.categoryNames) == null ? void 0 : _a3[id]) || id] = val;
5911
+ });
5912
+ return t;
5913
+ }, [props.rawCriteria, props.categoryNames]);
5914
+ const mappedPoints = React.useMemo(() => {
5915
+ var _a2;
5916
+ const p = {};
5917
+ Object.entries((_a2 = props.points) != null ? _a2 : {}).forEach(([id, val]) => {
5918
+ var _a3;
5919
+ p[((_a3 = props.categoryNames) == null ? void 0 : _a3[id]) || id] = val;
5920
+ });
5921
+ return p;
5922
+ }, [props.points, props.categoryNames]);
5788
5923
  const badges = props.badges || [];
5789
5924
  const completedBadges = badges.filter((b) => !!b.completedAt);
5790
5925
  const inProgressBadges = badges.filter((b) => !b.completedAt && !!b.startedAt);
@@ -5820,28 +5955,28 @@ const PathwayTranscript = (props) => {
5820
5955
  return /* @__PURE__ */ React.createElement("div", { key: l2Id, className: "space-y-4" }, /* @__PURE__ */ React.createElement("h3", { className: "font-bold text-base text-zinc-800 flex items-center gap-x-2" }, /* @__PURE__ */ React.createElement("div", { className: "h-4 w-1 bg-blue-600 rounded-full" }), ((_a2 = props.categoryNames) == null ? void 0 : _a2[l2Id]) || l2Id), /* @__PURE__ */ React.createElement("div", { className: layout === "grid" ? "grid grid-cols-3 gap-4" : "space-y-3" }, groupBadges.map((b) => /* @__PURE__ */ React.createElement("div", { key: b.badgeId, className: `p-4 bg-white rounded-xl border border-zinc-200 shadow-sm ${layout === "grid" ? "flex flex-col" : "flex items-center justify-between"}` }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-x-3" }, /* @__PURE__ */ React.createElement(BadgeEmblem, { size: "sm", iconURL: b.iconURL }), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("p", { className: "text-xs font-bold text-zinc-800" }, b.displayName), statusLabel && /* @__PURE__ */ React.createElement("p", { className: "text-[9px] text-amber-500 font-black uppercase mt-0.5" }, statusLabel))), /* @__PURE__ */ React.createElement("span", { className: "font-black text-blue-600 text-xs" }, b.weight, " pts")))));
5821
5956
  }));
5822
5957
  };
5823
- return /* @__PURE__ */ React.createElement("div", { className: "p-6 space-y-10 border-t border-zinc-100 bg-zinc-50/30 animate-in fade-in duration-500" }, /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-3 gap-4 bg-white p-5 rounded-xl border border-zinc-100 shadow-sm text-sm" }, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("p", { className: "text-zinc-400 uppercase text-[9px] font-black mb-1" }, "Student"), /* @__PURE__ */ React.createElement("p", { className: "font-bold text-zinc-800" }, safeRender(props.studentName) || "Guest User"), /* @__PURE__ */ React.createElement("p", { className: "text-zinc-500 text-[11px] mt-0.5" }, safeRender(props.studentEmail))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("p", { className: "text-zinc-400 uppercase text-[9px] font-black mb-1" }, "Organization"), /* @__PURE__ */ React.createElement("p", { className: "font-bold text-zinc-800" }, safeRender(props.schoolName) || "Not Provided"), /* @__PURE__ */ React.createElement("p", { className: "text-zinc-500 text-[11px] mt-0.5" }, props.gradeLevel ? `Grade ${safeRender(props.gradeLevel)}` : "")), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("p", { className: "text-zinc-400 uppercase text-[9px] font-black mb-1" }, "Status"), /* @__PURE__ */ React.createElement("p", { className: "text-blue-500 font-bold text-[10px] uppercase" }, "Verified Record"), /* @__PURE__ */ React.createElement("p", { className: "text-zinc-400 text-[10px] mt-0.5" }, props.today || new Date().toLocaleDateString()))), /* @__PURE__ */ React.createElement("section", { className: "space-y-6" }, /* @__PURE__ */ React.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React.createElement("h1", { className: "text-2xl font-black text-zinc-900 tracking-tight" }, props.title || "Untitled Pathway"), /* @__PURE__ */ React.createElement("p", { className: "text-sm text-zinc-500 max-w-3xl leading-relaxed" }, props.description || "No description provided for this pathway.")), /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-3 gap-4" }, /* @__PURE__ */ React.createElement("div", { className: "bg-white border border-zinc-200 p-4 rounded-xl shadow-sm flex flex-col items-center justify-center text-center" }, /* @__PURE__ */ React.createElement("span", { className: "text-2xl font-black text-blue-600" }, totalPointsEarned.toLocaleString()), /* @__PURE__ */ React.createElement("span", { className: "text-[10px] font-bold text-zinc-400 uppercase tracking-widest mt-1" }, "Total Pts")), /* @__PURE__ */ React.createElement("div", { className: "bg-white border border-zinc-200 p-4 rounded-xl shadow-sm flex flex-col items-center justify-center text-center" }, /* @__PURE__ */ React.createElement("span", { className: "text-2xl font-black text-blue-600" }, badgesEarnedCount), /* @__PURE__ */ React.createElement("span", { className: "text-[10px] font-bold text-zinc-400 uppercase tracking-widest mt-1" }, "Badges Earned")), /* @__PURE__ */ React.createElement("div", { className: "bg-white border border-zinc-200 p-4 rounded-xl shadow-sm flex flex-col items-center justify-center text-center" }, /* @__PURE__ */ React.createElement("span", { className: `text-2xl font-black ${sealEarned ? "text-emerald-500" : "text-zinc-300"}` }, sealEarned ? "Yes" : "No"), /* @__PURE__ */ React.createElement("span", { className: "text-[10px] font-bold text-zinc-400 uppercase tracking-widest mt-1" }, "Seal Earned")))), /* @__PURE__ */ React.createElement("section", null, /* @__PURE__ */ React.createElement("p", { className: "text-[10px] font-black uppercase text-zinc-400 tracking-widest mb-3" }, "Criteria & Progress"), /* @__PURE__ */ React.createElement("div", { className: "p-5 border border-zinc-100 rounded-xl bg-white shadow-sm" }, /* @__PURE__ */ React.createElement(PathwayProgressBarChart, { targets: props.mappedTargets, points: props.mappedPoints, height: "md" }))), /* @__PURE__ */ React.createElement("section", { className: "space-y-12" }, /* @__PURE__ */ React.createElement("div", { className: "flex justify-between items-center border-b border-zinc-200 pb-3" }, /* @__PURE__ */ React.createElement("p", { className: "text-[10px] font-black uppercase text-zinc-400 tracking-widest" }, "Activity History"), /* @__PURE__ */ React.createElement("div", { className: "flex bg-white border border-zinc-200 p-1 rounded-md text-[10px] font-bold uppercase" }, /* @__PURE__ */ React.createElement("button", { onClick: () => setLayout("list"), className: `px-3 py-1.5 rounded ${layout === "list" ? "bg-zinc-100 text-blue-600" : "text-zinc-400"}` }, "List View"), /* @__PURE__ */ React.createElement("button", { onClick: () => setLayout("grid"), className: `px-3 py-1.5 rounded ${layout === "grid" ? "bg-zinc-100 text-blue-600" : "text-zinc-400"}` }, "Grid View"))), renderBadgePool(completedBadges, "Completed Activity"), renderBadgePool(inProgressBadges, "In Progress", "Started")));
5958
+ return /* @__PURE__ */ React.createElement("div", { className: "p-6 space-y-10 border-t border-zinc-100 bg-zinc-50/30 animate-in fade-in duration-500" }, /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-3 gap-4 bg-white p-5 rounded-xl border border-zinc-100 shadow-sm text-sm" }, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("p", { className: "text-zinc-400 uppercase text-[9px] font-black mb-1" }, "Student"), /* @__PURE__ */ React.createElement("p", { className: "font-bold text-zinc-800" }, safeRender(props.studentName) || "Guest User"), /* @__PURE__ */ React.createElement("p", { className: "text-zinc-500 text-[11px] mt-0.5" }, safeRender(props.studentEmail))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("p", { className: "text-zinc-400 uppercase text-[9px] font-black mb-1" }, "Organization"), /* @__PURE__ */ React.createElement("p", { className: "font-bold text-zinc-800" }, safeRender(props.schoolName) || "Not Provided"), /* @__PURE__ */ React.createElement("p", { className: "text-zinc-500 text-[11px] mt-0.5" }, props.gradeLevel ? `Grade ${safeRender(props.gradeLevel)}` : "")), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("p", { className: "text-zinc-400 uppercase text-[9px] font-black mb-1" }, "Status"), /* @__PURE__ */ React.createElement("p", { className: "text-blue-500 font-bold text-[10px] uppercase" }, "Verified Record"), /* @__PURE__ */ React.createElement("p", { className: "text-zinc-400 text-[10px] mt-0.5" }, today))), /* @__PURE__ */ React.createElement("section", { className: "space-y-6" }, /* @__PURE__ */ React.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React.createElement("h1", { className: "text-2xl font-black text-zinc-900 tracking-tight" }, props.title || "Untitled Pathway"), /* @__PURE__ */ React.createElement("p", { className: "text-sm text-zinc-500 max-w-3xl leading-relaxed" }, props.description || "No description provided for this pathway.")), /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-3 gap-4" }, /* @__PURE__ */ React.createElement("div", { className: "bg-white border border-zinc-200 p-4 rounded-xl shadow-sm flex flex-col items-center justify-center text-center" }, /* @__PURE__ */ React.createElement("span", { className: "text-2xl font-black text-blue-600" }, totalPointsEarned.toLocaleString()), /* @__PURE__ */ React.createElement("span", { className: "text-[10px] font-bold text-zinc-400 uppercase tracking-widest mt-1" }, "Total Pts")), /* @__PURE__ */ React.createElement("div", { className: "bg-white border border-zinc-200 p-4 rounded-xl shadow-sm flex flex-col items-center justify-center text-center" }, /* @__PURE__ */ React.createElement("span", { className: "text-2xl font-black text-blue-600" }, badgesEarnedCount), /* @__PURE__ */ React.createElement("span", { className: "text-[10px] font-bold text-zinc-400 uppercase tracking-widest mt-1" }, "Badges Earned")), /* @__PURE__ */ React.createElement("div", { className: "bg-white border border-zinc-200 p-4 rounded-xl shadow-sm flex flex-col items-center justify-center text-center" }, /* @__PURE__ */ React.createElement("span", { className: `text-2xl font-black ${sealEarned ? "text-emerald-500" : "text-zinc-300"}` }, sealEarned ? "Yes" : "No"), /* @__PURE__ */ React.createElement("span", { className: "text-[10px] font-bold text-zinc-400 uppercase tracking-widest mt-1" }, "Seal Earned")))), /* @__PURE__ */ React.createElement("section", null, /* @__PURE__ */ React.createElement("p", { className: "text-[10px] font-black uppercase text-zinc-400 tracking-widest mb-3" }, "Criteria & Progress"), /* @__PURE__ */ React.createElement("div", { className: "p-5 border border-zinc-100 rounded-xl bg-white shadow-sm" }, /* @__PURE__ */ React.createElement(PathwayProgressBarChart, { targets: mappedTargets, points: mappedPoints, height: "md" }))), /* @__PURE__ */ React.createElement("section", { className: "space-y-12" }, /* @__PURE__ */ React.createElement("div", { className: "flex justify-between items-center border-b border-zinc-200 pb-3" }, /* @__PURE__ */ React.createElement("p", { className: "text-[10px] font-black uppercase text-zinc-400 tracking-widest" }, "Activity History"), /* @__PURE__ */ React.createElement("div", { className: "flex bg-white border border-zinc-200 p-1 rounded-md text-[10px] font-bold uppercase" }, /* @__PURE__ */ React.createElement("button", { onClick: () => setLayout("list"), className: `px-3 py-1.5 rounded ${layout === "list" ? "bg-zinc-100 text-blue-600" : "text-zinc-400"}` }, "List View"), /* @__PURE__ */ React.createElement("button", { onClick: () => setLayout("grid"), className: `px-3 py-1.5 rounded ${layout === "grid" ? "bg-zinc-100 text-blue-600" : "text-zinc-400"}` }, "Grid View"))), renderBadgePool(completedBadges, "Completed Activity"), renderBadgePool(inProgressBadges, "In Progress", "Started")));
5824
5959
  };
5825
5960
 
5826
- var __defProp$3 = Object.defineProperty;
5827
- var __defProps$2 = Object.defineProperties;
5828
- var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
5829
- var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
5830
- var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
5831
- var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
5832
- var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5833
- var __spreadValues$3 = (a, b) => {
5961
+ var __defProp$6 = Object.defineProperty;
5962
+ var __defProps$1 = Object.defineProperties;
5963
+ var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
5964
+ var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;
5965
+ var __hasOwnProp$6 = Object.prototype.hasOwnProperty;
5966
+ var __propIsEnum$6 = Object.prototype.propertyIsEnumerable;
5967
+ var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5968
+ var __spreadValues$6 = (a, b) => {
5834
5969
  for (var prop in b || (b = {}))
5835
- if (__hasOwnProp$3.call(b, prop))
5836
- __defNormalProp$3(a, prop, b[prop]);
5837
- if (__getOwnPropSymbols$3)
5838
- for (var prop of __getOwnPropSymbols$3(b)) {
5839
- if (__propIsEnum$3.call(b, prop))
5840
- __defNormalProp$3(a, prop, b[prop]);
5970
+ if (__hasOwnProp$6.call(b, prop))
5971
+ __defNormalProp$6(a, prop, b[prop]);
5972
+ if (__getOwnPropSymbols$6)
5973
+ for (var prop of __getOwnPropSymbols$6(b)) {
5974
+ if (__propIsEnum$6.call(b, prop))
5975
+ __defNormalProp$6(a, prop, b[prop]);
5841
5976
  }
5842
5977
  return a;
5843
5978
  };
5844
- var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
5979
+ var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
5845
5980
  const PathwayCard = (props) => {
5846
5981
  const [view, setView] = React.useState("overview");
5847
5982
  const today = React.useMemo(() => new Date().toLocaleDateString("en-US", {
@@ -5867,7 +6002,7 @@ const PathwayCard = (props) => {
5867
6002
  });
5868
6003
  return p;
5869
6004
  }, [props.points, props.categoryNames]);
5870
- const sharedProps = __spreadProps$2(__spreadValues$3({}, props), {
6005
+ const sharedProps = __spreadProps$1(__spreadValues$6({}, props), {
5871
6006
  mappedTargets,
5872
6007
  mappedPoints,
5873
6008
  today,
@@ -5893,7 +6028,7 @@ const PathwayCard = (props) => {
5893
6028
  border: "rounded",
5894
6029
  onClick: () => setView(view === "overview" ? "transcript" : "overview")
5895
6030
  }
5896
- ))), view === "overview" ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(PathwayOverview, __spreadValues$3({}, sharedProps)), /* @__PURE__ */ React.createElement("div", { className: "pt-5 px-5 flex border-t border-zinc-100" }, /* @__PURE__ */ React.createElement("div", { className: "w-full max-w-[7rem] ml-auto" }, /* @__PURE__ */ React.createElement(
6031
+ ))), view === "overview" ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(PathwayOverview, __spreadValues$6({}, sharedProps)), /* @__PURE__ */ React.createElement("div", { className: "pt-5 px-5 flex border-t border-zinc-100" }, /* @__PURE__ */ React.createElement("div", { className: "w-full max-w-[7rem] ml-auto" }, /* @__PURE__ */ React.createElement(
5897
6032
  Button,
5898
6033
  {
5899
6034
  disabled: true,
@@ -5905,27 +6040,27 @@ const PathwayCard = (props) => {
5905
6040
  theme: "dark",
5906
6041
  text: "Submit"
5907
6042
  }
5908
- )))) : /* @__PURE__ */ React.createElement(PathwayTranscript, __spreadValues$3({}, sharedProps))));
6043
+ )))) : /* @__PURE__ */ React.createElement(PathwayTranscript, __spreadValues$6({}, sharedProps))));
5909
6044
  };
5910
6045
 
5911
- var __defProp$2 = Object.defineProperty;
5912
- var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
5913
- var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
5914
- var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
5915
- var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5916
- var __spreadValues$2 = (a, b) => {
6046
+ var __defProp$5 = Object.defineProperty;
6047
+ var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
6048
+ var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
6049
+ var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
6050
+ var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6051
+ var __spreadValues$5 = (a, b) => {
5917
6052
  for (var prop in b || (b = {}))
5918
- if (__hasOwnProp$2.call(b, prop))
5919
- __defNormalProp$2(a, prop, b[prop]);
5920
- if (__getOwnPropSymbols$2)
5921
- for (var prop of __getOwnPropSymbols$2(b)) {
5922
- if (__propIsEnum$2.call(b, prop))
5923
- __defNormalProp$2(a, prop, b[prop]);
6053
+ if (__hasOwnProp$5.call(b, prop))
6054
+ __defNormalProp$5(a, prop, b[prop]);
6055
+ if (__getOwnPropSymbols$5)
6056
+ for (var prop of __getOwnPropSymbols$5(b)) {
6057
+ if (__propIsEnum$5.call(b, prop))
6058
+ __defNormalProp$5(a, prop, b[prop]);
5924
6059
  }
5925
6060
  return a;
5926
6061
  };
5927
6062
  const Pathway = (props) => {
5928
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(PathwayCard, __spreadValues$2({}, props)));
6063
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(PathwayCard, __spreadValues$5({}, props)));
5929
6064
  };
5930
6065
 
5931
6066
  const PathwayButton = (props) => {
@@ -5969,25 +6104,25 @@ const PathwayButton = (props) => {
5969
6104
  )), !!props.title && /* @__PURE__ */ React.createElement("div", { className: "text-sm m-auto flex gap-x-2" }, /* @__PURE__ */ React.createElement("span", { className: "font-semibold text-zinc-600" }, props.title)));
5970
6105
  };
5971
6106
 
5972
- var __defProp$1 = Object.defineProperty;
5973
- var __defProps$1 = Object.defineProperties;
5974
- var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
5975
- var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
5976
- var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
5977
- var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
5978
- var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5979
- var __spreadValues$1 = (a, b) => {
6107
+ var __defProp$4 = Object.defineProperty;
6108
+ var __defProps = Object.defineProperties;
6109
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6110
+ var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
6111
+ var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
6112
+ var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
6113
+ var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6114
+ var __spreadValues$4 = (a, b) => {
5980
6115
  for (var prop in b || (b = {}))
5981
- if (__hasOwnProp$1.call(b, prop))
5982
- __defNormalProp$1(a, prop, b[prop]);
5983
- if (__getOwnPropSymbols$1)
5984
- for (var prop of __getOwnPropSymbols$1(b)) {
5985
- if (__propIsEnum$1.call(b, prop))
5986
- __defNormalProp$1(a, prop, b[prop]);
6116
+ if (__hasOwnProp$4.call(b, prop))
6117
+ __defNormalProp$4(a, prop, b[prop]);
6118
+ if (__getOwnPropSymbols$4)
6119
+ for (var prop of __getOwnPropSymbols$4(b)) {
6120
+ if (__propIsEnum$4.call(b, prop))
6121
+ __defNormalProp$4(a, prop, b[prop]);
5987
6122
  }
5988
6123
  return a;
5989
6124
  };
5990
- var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
6125
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
5991
6126
  const PathwaySection = (props) => {
5992
6127
  const progress = [];
5993
6128
  const locked = [];
@@ -6026,15 +6161,15 @@ const PathwaySection = (props) => {
6026
6161
  },
6027
6162
  "Grid View?"
6028
6163
  )))), /* @__PURE__ */ React.createElement("div", null, !!props.readonly && /* @__PURE__ */ React.createElement("div", { className: layoutClassName }, preview.map((p, i) => {
6029
- return /* @__PURE__ */ React.createElement(PathwayButton, __spreadProps$1(__spreadValues$1({ key: i }, p), { compact: list }));
6164
+ return /* @__PURE__ */ React.createElement(PathwayButton, __spreadProps(__spreadValues$4({ key: i }, p), { compact: list }));
6030
6165
  })), !props.readonly && /* @__PURE__ */ React.createElement("div", { className: "text-zinc-600 grid grid-cols-1 gap-y-4" }, progress.length > 0 && /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("p", { className: "mb-3 text-md underline font-bold" }, "In Progress"), /* @__PURE__ */ React.createElement("div", { className: layoutClassName }, progress.map((p, i) => {
6031
- return /* @__PURE__ */ React.createElement(PathwayButton, __spreadProps$1(__spreadValues$1({ key: i }, p), { compact: list }));
6166
+ return /* @__PURE__ */ React.createElement(PathwayButton, __spreadProps(__spreadValues$4({ key: i }, p), { compact: list }));
6032
6167
  }))), collected.length > 0 && /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("p", { className: "mb-3 text-md underline font-bold" }, "Completed"), /* @__PURE__ */ React.createElement("div", { className: layoutClassName }, collected.map((p, i) => {
6033
- return /* @__PURE__ */ React.createElement(PathwayButton, __spreadProps$1(__spreadValues$1({ key: i }, p), { compact: list }));
6168
+ return /* @__PURE__ */ React.createElement(PathwayButton, __spreadProps(__spreadValues$4({ key: i }, p), { compact: list }));
6034
6169
  }))), available.length > 0 && /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("p", { className: "mb-3 text-md underline font-bold" }, "Available"), /* @__PURE__ */ React.createElement("div", { className: layoutClassName }, available.map((p, i) => {
6035
- return /* @__PURE__ */ React.createElement(PathwayButton, __spreadProps$1(__spreadValues$1({ key: i }, p), { compact: list }));
6170
+ return /* @__PURE__ */ React.createElement(PathwayButton, __spreadProps(__spreadValues$4({ key: i }, p), { compact: list }));
6036
6171
  }))), locked.length > 0 && /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("p", { className: "mb-3 text-md underline font-bold" }, "Locked"), /* @__PURE__ */ React.createElement("div", { className: layoutClassName }, locked.map((p, i) => {
6037
- return /* @__PURE__ */ React.createElement(PathwayButton, __spreadProps$1(__spreadValues$1({ key: i }, p), { compact: list }));
6172
+ return /* @__PURE__ */ React.createElement(PathwayButton, __spreadProps(__spreadValues$4({ key: i }, p), { compact: list }));
6038
6173
  }))))))))));
6039
6174
  };
6040
6175
  const getLayout = (list) => {
@@ -6044,37 +6179,360 @@ const getLayout = (list) => {
6044
6179
  return "flex flex-wrap gap-3";
6045
6180
  };
6046
6181
 
6047
- const AuthLayout = (props) => {
6048
- return /* @__PURE__ */ React__default.createElement("main", { className: "relative h-screen w-full bg-white font-proxima" }, /* @__PURE__ */ React__default.createElement(Loader, { isLoading: props.isLoading }, props.topNav !== false && /* @__PURE__ */ React__default.createElement(NavBar, null, /* @__PURE__ */ React__default.createElement(NavLink, { disabled: !props.onHome || props.disabled, name: "home", onClick: props.onHome }), props.onProfile && /* @__PURE__ */ React__default.createElement(
6049
- NavLink,
6182
+ var __defProp$3 = Object.defineProperty;
6183
+ var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
6184
+ var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
6185
+ var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
6186
+ var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6187
+ var __spreadValues$3 = (a, b) => {
6188
+ for (var prop in b || (b = {}))
6189
+ if (__hasOwnProp$3.call(b, prop))
6190
+ __defNormalProp$3(a, prop, b[prop]);
6191
+ if (__getOwnPropSymbols$3)
6192
+ for (var prop of __getOwnPropSymbols$3(b)) {
6193
+ if (__propIsEnum$3.call(b, prop))
6194
+ __defNormalProp$3(a, prop, b[prop]);
6195
+ }
6196
+ return a;
6197
+ };
6198
+ const ACCENT_ORDER$1 = ["cyan", "mint", "gold"];
6199
+ const ACCENT_CLASSNAMES$1 = {
6200
+ cyan: {
6201
+ border: "border-sky-blue-400/30",
6202
+ shadow: "shadow-[0_4px_20px_rgba(59,208,242,0.10)]",
6203
+ strip: "from-sky-blue-400 to-mint-400",
6204
+ progress: "sky-blue"
6205
+ },
6206
+ mint: {
6207
+ border: "border-mint-400/30",
6208
+ shadow: "shadow-[0_4px_20px_rgba(30,226,175,0.10)]",
6209
+ strip: "from-mint-400 to-gold-400",
6210
+ progress: "mint"
6211
+ },
6212
+ gold: {
6213
+ border: "border-gold-400/30",
6214
+ shadow: "shadow-[0_4px_20px_rgba(255,212,77,0.10)]",
6215
+ strip: "from-gold-400 to-sky-blue-400",
6216
+ progress: "gold"
6217
+ }
6218
+ };
6219
+ const PathwaysList = (props) => {
6220
+ return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-3.5" }, /* @__PURE__ */ React.createElement("div", { className: "text-xs font-semibold text-slate-400" }, props.pathways.length, " pathway", props.pathways.length === 1 ? "" : "s"), props.pathways.length === 0 && /* @__PURE__ */ React.createElement("p", { className: "text-sm text-slate-400" }, "No pathways to display."), props.pathways.length > 0 && /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-1 gap-3.5 sm:grid-cols-2" }, props.pathways.map((pathway, i) => /* @__PURE__ */ React.createElement(PathwayListCard, __spreadValues$3({ key: pathway.pathwayId || i, accent: ACCENT_ORDER$1[i % ACCENT_ORDER$1.length] }, pathway)))));
6221
+ };
6222
+ const PathwayListCard = (props) => {
6223
+ var _a;
6224
+ const { border, shadow, strip, progress } = ACCENT_CLASSNAMES$1[props.accent];
6225
+ const badgeCount = ((_a = props.badges) == null ? void 0 : _a.length) || 0;
6226
+ const target = props.target || badgeCount || 1;
6227
+ const value = props.progress || 0;
6228
+ return /* @__PURE__ */ React.createElement(
6229
+ "div",
6050
6230
  {
6051
- disabled: props.disabled,
6052
- name: "profile",
6053
- onClick: props.onProfile,
6054
- active: props.page === "profile"
6231
+ onClick: props.onClick,
6232
+ className: `overflow-hidden rounded-2xl border bg-white ${border} ${shadow} ${props.onClick ? "cursor-pointer hover:bg-slate-50" : ""}`
6233
+ },
6234
+ /* @__PURE__ */ React.createElement("div", { className: `h-1 bg-gradient-to-r ${strip}` }),
6235
+ /* @__PURE__ */ React.createElement("div", { className: "flex gap-4 p-4" }, /* @__PURE__ */ React.createElement("div", { className: "shrink-0" }, /* @__PURE__ */ React.createElement(BadgeEmblem, { iconURL: props.imageURL, alt: props.title, size: "xs" })), /* @__PURE__ */ React.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React.createElement("div", { className: "text-sm font-bold text-dark-blue-400" }, props.title), props.description && /* @__PURE__ */ React.createElement("div", { className: "mt-1.5 text-xs text-slate-500" }, props.description), /* @__PURE__ */ React.createElement("div", { className: "mt-3 flex items-center gap-2.5" }, /* @__PURE__ */ React.createElement("div", { className: "h-1.5 flex-1" }, /* @__PURE__ */ React.createElement(Progress, { rounded: true, color: progress, start: value, end: target })), /* @__PURE__ */ React.createElement("div", { className: "whitespace-nowrap text-[10.5px] font-semibold text-slate-400" }, value, "/", target, " badges"))))
6236
+ );
6237
+ };
6238
+
6239
+ const STATUS_CLASSNAMES = {
6240
+ "In Progress": {
6241
+ border: "border-sky-blue-400/30",
6242
+ shadow: "shadow-[0_4px_20px_rgba(59,208,242,0.10)]",
6243
+ pillAccent: "cyan"
6244
+ },
6245
+ Completed: {
6246
+ border: "border-mint-400/30",
6247
+ shadow: "shadow-[0_4px_20px_rgba(30,226,175,0.10)]",
6248
+ pillAccent: "mint"
6249
+ },
6250
+ Available: {
6251
+ border: "border-gold-400/30",
6252
+ shadow: "shadow-[0_4px_20px_rgba(255,212,77,0.10)]",
6253
+ pillAccent: "gold"
6254
+ }
6255
+ };
6256
+ const ACCENT_ORDER = ["cyan", "mint", "gold"];
6257
+ const PROGRESS_COLOR = {
6258
+ cyan: "sky-blue",
6259
+ mint: "mint",
6260
+ gold: "gold"
6261
+ };
6262
+ const PathwayDetail = (props) => {
6263
+ const badges = props.badges || [];
6264
+ const completedCount = badges.filter((b) => b.completedAt).length;
6265
+ const target = badges.length;
6266
+ const anyStarted = badges.some((b) => b.startedAt);
6267
+ const status = target > 0 && completedCount === target ? "Completed" : anyStarted || completedCount > 0 ? "In Progress" : "Available";
6268
+ const { border, shadow, pillAccent } = STATUS_CLASSNAMES[status];
6269
+ const categoryIds = Object.keys(props.rawCriteria || {});
6270
+ const [catFilter, setCatFilter] = React.useState(null);
6271
+ const filteredBadges = catFilter ? badges.filter((b) => {
6272
+ var _a;
6273
+ return (_a = b.categories) == null ? void 0 : _a.includes(catFilter);
6274
+ }) : badges;
6275
+ return /* @__PURE__ */ React.createElement("div", { className: "flex max-w-2xl flex-col gap-3.5" }, props.onBack && /* @__PURE__ */ React.createElement("div", { onClick: props.onBack, className: "w-max cursor-pointer text-xs font-bold text-sky-blue-400" }, "\u2190 Back to My Pathways"), /* @__PURE__ */ React.createElement("div", { className: `overflow-hidden rounded-2xl border bg-white ${border} ${shadow}` }, /* @__PURE__ */ React.createElement("div", { className: "flex gap-4 p-5" }, /* @__PURE__ */ React.createElement("div", { className: "shrink-0" }, /* @__PURE__ */ React.createElement(BadgeEmblem, { iconURL: props.imageURL, alt: props.title, size: "sm" })), /* @__PURE__ */ React.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React.createElement("div", { className: "text-lg font-extrabold text-dark-blue-400" }, props.title), !!(props.displayTags && props.displayTags.length) && /* @__PURE__ */ React.createElement("div", { className: "mt-2 flex flex-wrap gap-1.5" }, props.displayTags.map((tag) => /* @__PURE__ */ React.createElement(Pill, { key: tag, label: tag, accent: pillAccent }))), !!props.description && /* @__PURE__ */ React.createElement("div", { className: "mt-2 text-xs text-slate-500" }, props.description), /* @__PURE__ */ React.createElement("div", { className: "mt-2.5" }, /* @__PURE__ */ React.createElement(Pill, { label: status, accent: pillAccent }))))), /* @__PURE__ */ React.createElement("div", { className: `rounded-2xl border bg-white p-5 ${border} ${shadow}` }, /* @__PURE__ */ React.createElement("div", { className: "text-sm font-bold text-dark-blue-400" }, "Pathway Badges & Criteria"), /* @__PURE__ */ React.createElement("div", { className: "mt-1.5 text-xs text-slate-500" }, "This pathway is comprised of ", target, " badge", target === 1 ? "" : "s", ". It includes required and elective programming."), /* @__PURE__ */ React.createElement("div", { className: "text-xs text-slate-500" }, "Progress: ", completedCount, " / ", target, " badges completed."), categoryIds.length > 0 && /* @__PURE__ */ React.createElement("div", { className: "mt-4 flex flex-col gap-3" }, categoryIds.map((id, i) => {
6276
+ var _a, _b, _c;
6277
+ const accent = ACCENT_ORDER[i % ACCENT_ORDER.length];
6278
+ const label = ((_a = props.categoryNames) == null ? void 0 : _a[id]) || id;
6279
+ const max = ((_b = props.rawCriteria) == null ? void 0 : _b[id]) || 0;
6280
+ const value = ((_c = props.points) == null ? void 0 : _c[id]) || 0;
6281
+ return /* @__PURE__ */ React.createElement("div", { key: id }, /* @__PURE__ */ React.createElement("div", { className: "mb-1 flex items-center justify-between text-xs font-semibold text-slate-500" }, /* @__PURE__ */ React.createElement("span", null, label), /* @__PURE__ */ React.createElement("span", null, value, " / ", max)), /* @__PURE__ */ React.createElement("div", { className: "h-1.5" }, /* @__PURE__ */ React.createElement(Progress, { rounded: true, color: PROGRESS_COLOR[accent], start: value, end: max || 1 })));
6282
+ })), categoryIds.length > 0 && /* @__PURE__ */ React.createElement("div", { className: "mt-4 flex flex-wrap gap-2" }, /* @__PURE__ */ React.createElement(
6283
+ "div",
6284
+ {
6285
+ onClick: () => setCatFilter(null),
6286
+ className: `cursor-pointer rounded-full px-3.5 py-1.5 text-xs font-bold ${catFilter === null ? "bg-dark-blue-400 text-white" : "bg-slate-100 text-slate-500 hover:bg-slate-200"}`
6287
+ },
6288
+ "All"
6289
+ ), categoryIds.map((id) => {
6290
+ var _a;
6291
+ return /* @__PURE__ */ React.createElement(
6292
+ "div",
6293
+ {
6294
+ key: id,
6295
+ onClick: () => setCatFilter(id),
6296
+ className: `cursor-pointer rounded-full px-3.5 py-1.5 text-xs font-bold ${catFilter === id ? "bg-dark-blue-400 text-white" : "bg-slate-100 text-slate-500 hover:bg-slate-200"}`
6297
+ },
6298
+ ((_a = props.categoryNames) == null ? void 0 : _a[id]) || id
6299
+ );
6300
+ })), /* @__PURE__ */ React.createElement("div", { className: "mt-4 flex flex-col" }, filteredBadges.map((b, i) => {
6301
+ const buttonText = b.completedAt ? "Review" : b.startedAt ? "Continue" : "Start";
6302
+ return /* @__PURE__ */ React.createElement("div", { key: b.badgeId || i, className: "flex items-center gap-3.5 border-b border-slate-100 py-3.5 last:border-b-0" }, /* @__PURE__ */ React.createElement(
6303
+ "div",
6304
+ {
6305
+ className: `h-[18px] w-[18px] shrink-0 rounded-full border-2 ${b.completedAt ? "border-mint-400 bg-mint-400" : "border-slate-300 bg-transparent"}`
6306
+ }
6307
+ ), /* @__PURE__ */ React.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React.createElement("div", { className: "text-xs font-bold text-dark-blue-400" }, b.displayName), /* @__PURE__ */ React.createElement("div", { className: "mt-0.5 text-[10.5px] font-bold text-mint-400" }, b.weight, " point", b.weight === 1 ? "" : "s")), /* @__PURE__ */ React.createElement(
6308
+ "button",
6309
+ {
6310
+ type: "button",
6311
+ onClick: b.onClick,
6312
+ className: `shrink-0 rounded-lg px-4 py-1.5 text-xs font-bold ${b.completedAt ? "border border-slate-200 bg-white text-slate-600 hover:bg-slate-50" : "bg-dark-blue-400 text-white hover:bg-dark-blue-400/90"}`
6313
+ },
6314
+ buttonText
6315
+ ));
6316
+ }))));
6317
+ };
6318
+
6319
+ const ACCENT_CLASSNAMES = {
6320
+ cyan: {
6321
+ chip: "bg-sky-blue-400/15",
6322
+ icon: "text-sky-blue-400",
6323
+ card: "border-sky-blue-400/20 shadow-[0_2px_12px_rgba(59,208,242,0.12)]"
6324
+ },
6325
+ mint: {
6326
+ chip: "bg-mint-400/15",
6327
+ icon: "text-mint-400",
6328
+ card: "border-mint-400/20 shadow-[0_2px_12px_rgba(30,226,175,0.12)]"
6329
+ },
6330
+ gold: {
6331
+ chip: "bg-gold-400/15",
6332
+ icon: "text-gold-400",
6333
+ card: "border-gold-400/20 shadow-[0_2px_12px_rgba(255,212,77,0.12)]"
6334
+ },
6335
+ slate: { chip: "bg-slate-100", icon: "text-slate-400", card: "border-slate-200 shadow-sm" }
6336
+ };
6337
+ const StatTile = (props) => {
6338
+ const { chip, icon, card } = ACCENT_CLASSNAMES[props.accent || "slate"];
6339
+ return /* @__PURE__ */ React.createElement("div", { className: `flex flex-1 flex-col gap-2.5 rounded-2xl border bg-white p-4 ${card}` }, /* @__PURE__ */ React.createElement("div", { className: `flex h-9 w-9 items-center justify-center rounded-[10px] ${chip}` }, /* @__PURE__ */ React.createElement("div", { className: `h-[18px] w-[18px] ${icon}` }, /* @__PURE__ */ React.createElement(Icon$1, { name: props.icon }))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { className: "text-2xl font-extrabold text-dark-blue-400" }, props.value), /* @__PURE__ */ React.createElement("div", { className: "text-xs text-slate-400" }, props.label)));
6340
+ };
6341
+ const StatTileRow = (props) => /* @__PURE__ */ React.createElement("div", { className: "flex gap-2.5" }, props.children);
6342
+
6343
+ const ProfileHeroCard = (props) => {
6344
+ const hasContent = props.givenName || props.familyName;
6345
+ const xp = props.xp || 0;
6346
+ const nextXP = props.nextXP || 0;
6347
+ const pct = nextXP ? Math.min(100, Math.round(xp / nextXP * 100)) : 0;
6348
+ return /* @__PURE__ */ React.createElement("div", { className: "relative overflow-hidden rounded-2xl border border-sky-blue-400/20 bg-white shadow-[0_4px_24px_rgba(59,208,242,0.10)]" }, /* @__PURE__ */ React.createElement("div", { className: "h-1 bg-gradient-to-r from-sky-blue-400 via-mint-400 to-gold-400" }), /* @__PURE__ */ React.createElement("div", { className: "p-5" }, /* @__PURE__ */ React.createElement(Loader, { isLoading: props.isLoading }, hasContent && /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ React.createElement("div", { className: "flex items-start gap-4" }, /* @__PURE__ */ React.createElement("div", { className: "relative shrink-0" }, /* @__PURE__ */ React.createElement(
6349
+ "img",
6350
+ {
6351
+ src: props.avatarURL || "https://cdn.localcivics.io/hub/avatar.jpg",
6352
+ alt: "avatar",
6353
+ className: "h-16 w-16 rounded-full border-4 border-white object-cover shadow-lg"
6055
6354
  }
6056
- ), props.onSwitchAccount && /* @__PURE__ */ React__default.createElement(NavLink, { name: "switch accounts", onClick: props.onSwitchAccount }), props.onLogout && /* @__PURE__ */ React__default.createElement(NavLink, { name: "Logout", onClick: props.onLogout })), props.children && /* @__PURE__ */ React__default.createElement("section", { className: "absolute top-0 left-0 h-full overflow-auto pt-16 w-full" }, props.children), !props.children && /* @__PURE__ */ React__default.createElement("section", { className: "w-full px-4 py-5 lg:px-36 flex flex-col gap-4" }, props.header && /* @__PURE__ */ React__default.createElement("div", { className: "w-full max-w-[64rem] m-auto min-h-16 lg:min-h-24 lg:flex" }, props.header), /* @__PURE__ */ React__default.createElement("div", { className: "grow w-full min-h-96" }, /* @__PURE__ */ React__default.createElement("div", { className: "w-full max-w-[64rem] m-auto grid grid-cols-1 gap-y-4 lg:flex lg:gap-x-2" }, props.sidebar && /* @__PURE__ */ React__default.createElement("div", { className: "grid grid-cols-1 max-w-full md:flex md:flex-col gap-2 lg:w-[230px] shrink-0 lg:sticky lg:top-0 lg:h-screen lg:self-start lg:overflow-y-auto" }, /* @__PURE__ */ React__default.createElement("div", { className: "flex flex-col gap-4 lg:gap-x-2 lg:gap-y-3" }, props.sidebar)), (props.subheader || props.main) && /* @__PURE__ */ React__default.createElement("div", { className: "grow grid grid-cols-1 max-w-full overflow-x-hidden md:flex md:flex-col gap-4 lg:gap-2" }, props.subheader && /* @__PURE__ */ React__default.createElement("div", { className: "relative grid grid-cols-1 md:flex w-full gap-4 lg:gap-2" }, props.subheader), props.main && /* @__PURE__ */ React__default.createElement("div", { className: "relative grid grid-cols-1 w-full gap-4 lg:gap-2" }, props.main)))), /* @__PURE__ */ React__default.createElement(Footer, null))), props.outlet);
6355
+ ), props.online && /* @__PURE__ */ React.createElement("span", { className: "absolute right-0 top-0 h-3.5 w-3.5 rounded-full border-2 border-white bg-mint-400" })), /* @__PURE__ */ React.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React.createElement("h2", { className: "truncate text-xl font-extrabold capitalize text-dark-blue-400" }, props.givenName, " ", props.familyName), /* @__PURE__ */ React.createElement("div", { className: "mt-0.5 flex flex-wrap items-center gap-x-3 gap-y-1 text-sm text-slate-400" }, props.createdAt && /* @__PURE__ */ React.createElement("span", null, "Member since ", new Date(props.createdAt).getFullYear()), props.communityName && /* @__PURE__ */ React.createElement("span", { className: "flex items-center gap-1" }, /* @__PURE__ */ React.createElement("span", { className: "h-3.5 w-3.5 text-slate-500" }, /* @__PURE__ */ React.createElement(Icon$1, { name: "college & career" })), props.communityName), props.placeName && /* @__PURE__ */ React.createElement("span", { className: "flex items-center gap-1" }, /* @__PURE__ */ React.createElement("span", { className: "h-3.5 w-3.5 text-slate-500" }, /* @__PURE__ */ React.createElement(Icon$1, { name: "pin" })), props.placeName)), /* @__PURE__ */ React.createElement("div", { className: "mt-2 flex gap-2" }, !!props.level && /* @__PURE__ */ React.createElement(Pill, { label: `Level ${props.level}`, accent: "gold" }), !!props.xp && /* @__PURE__ */ React.createElement(Pill, { label: `${compact(props.xp)} XP`, accent: "cyan" }))), props.onEdit && /* @__PURE__ */ React.createElement(
6356
+ Button,
6357
+ {
6358
+ text: "Edit Profile",
6359
+ icon: "edit",
6360
+ color: "slate:sky",
6361
+ border: "rounded-sm",
6362
+ size: "sm",
6363
+ onClick: props.onEdit
6364
+ }
6365
+ )), props.impactStatement && /* @__PURE__ */ React.createElement("p", { className: "text-sm text-slate-500" }, props.impactStatement), /* @__PURE__ */ React.createElement("div", { className: "border-t border-sky-blue-400/15 pt-4" }, /* @__PURE__ */ React.createElement("p", { className: "mb-1.5 text-xs text-slate-400" }, "Impact Score"), /* @__PURE__ */ React.createElement("div", { className: "h-2.5 w-full overflow-hidden rounded-full bg-sky-blue-400/10" }, /* @__PURE__ */ React.createElement(
6366
+ "div",
6367
+ {
6368
+ className: "h-full rounded-full bg-gradient-to-r from-sky-blue-400 to-mint-400 shadow-[0_0_8px_rgba(30,226,175,0.6)]",
6369
+ style: { width: `${pct}%` }
6370
+ }
6371
+ )), /* @__PURE__ */ React.createElement("div", { className: "mt-1.5 flex items-baseline gap-1" }, /* @__PURE__ */ React.createElement("span", { className: "text-xl font-extrabold text-dark-blue-400" }, compact(xp)), /* @__PURE__ */ React.createElement("span", { className: "text-sm font-semibold text-slate-500" }, "XP"), !!nextXP && /* @__PURE__ */ React.createElement("span", { className: "ml-auto text-xs text-slate-400" }, compact(Math.max(nextXP - xp, 0)), " to next level")))))));
6057
6372
  };
6058
6373
 
6059
- const HomeLayout = (props) => {
6060
- const onProfile = () => props.onProfile && props.onProfile();
6061
- React__default.useEffect(() => {
6062
- if (props.isLoading) {
6063
- return;
6374
+ var __defProp$2 = Object.defineProperty;
6375
+ var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
6376
+ var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
6377
+ var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
6378
+ var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6379
+ var __spreadValues$2 = (a, b) => {
6380
+ for (var prop in b || (b = {}))
6381
+ if (__hasOwnProp$2.call(b, prop))
6382
+ __defNormalProp$2(a, prop, b[prop]);
6383
+ if (__getOwnPropSymbols$2)
6384
+ for (var prop of __getOwnPropSymbols$2(b)) {
6385
+ if (__propIsEnum$2.call(b, prop))
6386
+ __defNormalProp$2(a, prop, b[prop]);
6064
6387
  }
6065
- if (props.nickname) {
6066
- if (props.pathname === `/`) {
6067
- onProfile();
6068
- return;
6069
- }
6388
+ return a;
6389
+ };
6390
+ const PathwaysCard = (props) => {
6391
+ const [list, setList] = React.useState(props.list);
6392
+ React.useEffect(() => {
6393
+ setList(props.list);
6394
+ }, [props.list]);
6395
+ React.useEffect(() => {
6396
+ if (list !== void 0 && props.list !== list && props.onToggleLayout) {
6397
+ props.onToggleLayout(list);
6070
6398
  }
6071
- }, [props.isLoading, props.pathname, props.nickname]);
6072
- return /* @__PURE__ */ React__default.createElement("main", { className: "relative h-screen w-full overflow-hidden bg-white font-proxima" }, /* @__PURE__ */ React__default.createElement(NavBar, null, /* @__PURE__ */ React__default.createElement(NavLink, { name: "home", onClick: props.onHome, active: true }), /* @__PURE__ */ React__default.createElement(NavLink, { name: "login", onClick: props.onLogin }), /* @__PURE__ */ React__default.createElement(NavLink, { name: "faq", onClick: props.onFAQ }), /* @__PURE__ */ React__default.createElement(NavLink, { name: "privacy", onClick: props.onPrivacy }), /* @__PURE__ */ React__default.createElement(NavLink, { name: "terms", onClick: props.onTerms })), /* @__PURE__ */ React__default.createElement("section", { className: "absolute top-0 left-0 h-full overflow-hidden pt-16 w-full" }, props.children));
6399
+ }, [list]);
6400
+ const gridClassName = list ? "grid grid-cols-1 gap-2" : "grid grid-cols-1 gap-3 sm:grid-cols-2";
6401
+ return /* @__PURE__ */ React.createElement("div", { className: "flex flex-1 flex-col overflow-hidden rounded-2xl border border-sky-blue-400/20 bg-white shadow-[0_4px_20px_rgba(59,208,242,0.10)]" }, /* @__PURE__ */ React.createElement("div", { className: "h-1 bg-gradient-to-r from-sky-blue-400 via-mint-400 to-gold-400" }), /* @__PURE__ */ React.createElement("div", { className: "flex items-center justify-between gap-3 border-b border-slate-100 px-4 py-3.5" }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2.5" }, /* @__PURE__ */ React.createElement("div", { className: "flex h-9 w-9 items-center justify-center rounded-[10px] bg-mint-400/15" }, /* @__PURE__ */ React.createElement(IconRoute, { size: 18, stroke: 2, className: "text-mint-400" })), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { className: "text-sm font-bold text-dark-blue-400" }, "My Pathways & Seals"), /* @__PURE__ */ React.createElement("div", { className: "text-xs text-slate-400" }, props.pathways.length, " pathways"))), /* @__PURE__ */ React.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ React.createElement(
6402
+ "button",
6403
+ {
6404
+ type: "button",
6405
+ onClick: () => setList(false),
6406
+ className: `flex h-7 w-7 items-center justify-center rounded-md ${!list ? "bg-slate-100 text-dark-blue-400" : "text-slate-300 hover:text-slate-400"}`
6407
+ },
6408
+ /* @__PURE__ */ React.createElement(IconLayoutGrid, { size: 14, stroke: 1.75 })
6409
+ ), /* @__PURE__ */ React.createElement(
6410
+ "button",
6411
+ {
6412
+ type: "button",
6413
+ onClick: () => setList(true),
6414
+ className: `flex h-7 w-7 items-center justify-center rounded-md ${list ? "bg-slate-100 text-dark-blue-400" : "text-slate-300 hover:text-slate-400"}`
6415
+ },
6416
+ /* @__PURE__ */ React.createElement(IconList, { size: 14, stroke: 1.75 })
6417
+ ))), /* @__PURE__ */ React.createElement("div", { className: "relative flex-1 p-4" }, /* @__PURE__ */ React.createElement(Loader, { isLoading: props.isLoading }, props.pathways.length === 0 && /* @__PURE__ */ React.createElement("p", { className: "text-sm text-slate-400" }, "No pathways to display."), props.pathways.length > 0 && /* @__PURE__ */ React.createElement("div", { className: gridClassName }, props.pathways.map((pathway, i) => /* @__PURE__ */ React.createElement(PathwayTile, __spreadValues$2({ key: pathway.pathwayId || i }, pathway)))))));
6418
+ };
6419
+ const PathwayTile = (props) => {
6420
+ var _a;
6421
+ const badgeCount = ((_a = props.badges) == null ? void 0 : _a.length) || 0;
6422
+ const target = props.target || badgeCount || 1;
6423
+ const progress = props.progress || 0;
6424
+ return /* @__PURE__ */ React.createElement(
6425
+ "div",
6426
+ {
6427
+ onClick: props.onClick,
6428
+ className: `flex items-center gap-3 rounded-xl border border-slate-200 p-3 ${props.onClick ? "cursor-pointer hover:bg-slate-50" : ""}`
6429
+ },
6430
+ /* @__PURE__ */ React.createElement("div", { className: "shrink-0" }, /* @__PURE__ */ React.createElement(BadgeEmblem, { iconURL: props.imageURL, alt: props.title, size: "xxs" })),
6431
+ /* @__PURE__ */ React.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React.createElement("div", { className: "truncate text-sm font-semibold text-dark-blue-400" }, props.title), /* @__PURE__ */ React.createElement("div", { className: "text-xs text-slate-400" }, badgeCount, " badges"), /* @__PURE__ */ React.createElement("div", { className: "mt-1.5 h-1.5" }, /* @__PURE__ */ React.createElement(Progress, { rounded: true, color: "sky-blue", start: progress, end: target })))
6432
+ );
6433
+ };
6434
+
6435
+ var __defProp$1 = Object.defineProperty;
6436
+ var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
6437
+ var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
6438
+ var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
6439
+ var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6440
+ var __spreadValues$1 = (a, b) => {
6441
+ for (var prop in b || (b = {}))
6442
+ if (__hasOwnProp$1.call(b, prop))
6443
+ __defNormalProp$1(a, prop, b[prop]);
6444
+ if (__getOwnPropSymbols$1)
6445
+ for (var prop of __getOwnPropSymbols$1(b)) {
6446
+ if (__propIsEnum$1.call(b, prop))
6447
+ __defNormalProp$1(a, prop, b[prop]);
6448
+ }
6449
+ return a;
6450
+ };
6451
+ const FILTERS = ["In Progress", "Completed", "Available", "Locked"];
6452
+ const BadgesCard = (props) => {
6453
+ const groups = groupBadges(props.badges);
6454
+ const [active, setActive] = React.useState("In Progress");
6455
+ const [list, setList] = React.useState(props.list);
6456
+ React.useEffect(() => {
6457
+ setList(props.list);
6458
+ }, [props.list]);
6459
+ React.useEffect(() => {
6460
+ if (list !== void 0 && props.list !== list && props.onToggleLayout) {
6461
+ props.onToggleLayout(list);
6462
+ }
6463
+ }, [list]);
6464
+ const visible = groups[active];
6465
+ const gridClassName = list ? "grid grid-cols-1 gap-2" : "grid grid-cols-2 gap-3 sm:grid-cols-3";
6466
+ return /* @__PURE__ */ React.createElement("div", { className: "flex flex-1 flex-col overflow-hidden rounded-2xl border border-gold-400/20 bg-white shadow-[0_4px_20px_rgba(255,212,77,0.12)]" }, /* @__PURE__ */ React.createElement("div", { className: "h-1 bg-gradient-to-r from-gold-400 to-sky-blue-400" }), /* @__PURE__ */ React.createElement("div", { className: "flex items-center justify-between gap-3 border-b border-slate-100 px-4 py-3.5" }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2.5" }, /* @__PURE__ */ React.createElement("div", { className: "flex h-9 w-9 items-center justify-center rounded-[10px] bg-gold-400/15" }, /* @__PURE__ */ React.createElement(IconAlbum, { size: 18, stroke: 2, className: "text-gold-400" })), /* @__PURE__ */ React.createElement("div", { className: "text-sm font-bold text-dark-blue-400" }, "Badges"), /* @__PURE__ */ React.createElement(Pill, { label: `${groups.Completed.length} / ${props.badges.length}`, accent: "gold" })), /* @__PURE__ */ React.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ React.createElement(
6467
+ "button",
6468
+ {
6469
+ type: "button",
6470
+ onClick: () => setList(false),
6471
+ className: `flex h-7 w-7 items-center justify-center rounded-md ${!list ? "bg-slate-100 text-dark-blue-400" : "text-slate-300 hover:text-slate-400"}`
6472
+ },
6473
+ /* @__PURE__ */ React.createElement(IconLayoutGrid, { size: 14, stroke: 1.75 })
6474
+ ), /* @__PURE__ */ React.createElement(
6475
+ "button",
6476
+ {
6477
+ type: "button",
6478
+ onClick: () => setList(true),
6479
+ className: `flex h-7 w-7 items-center justify-center rounded-md ${list ? "bg-slate-100 text-dark-blue-400" : "text-slate-300 hover:text-slate-400"}`
6480
+ },
6481
+ /* @__PURE__ */ React.createElement(IconList, { size: 14, stroke: 1.75 })
6482
+ ))), /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-4 gap-2 border-b border-slate-100 px-4" }, FILTERS.map((label) => /* @__PURE__ */ React.createElement(Tab, { key: label, title: label, secondary: true, active: active === label, onClick: () => setActive(label) }))), /* @__PURE__ */ React.createElement("div", { className: "relative flex-1 p-4" }, /* @__PURE__ */ React.createElement(Loader, { isLoading: props.isLoading }, visible.length === 0 && /* @__PURE__ */ React.createElement("p", { className: "text-sm text-slate-400" }, "No badges to display."), visible.length > 0 && /* @__PURE__ */ React.createElement("div", { className: gridClassName }, visible.map((badge, i) => /* @__PURE__ */ React.createElement(BadgeTile, __spreadValues$1({ key: badge.badgeId || i }, badge)))))));
6483
+ };
6484
+ const groupBadges = (badges) => {
6485
+ const groups = {
6486
+ "In Progress": [],
6487
+ Completed: [],
6488
+ Available: [],
6489
+ Locked: []
6490
+ };
6491
+ badges.forEach((b) => {
6492
+ if (b.finishedAt) {
6493
+ groups.Completed.push(b);
6494
+ } else if (b.isLocked) {
6495
+ groups.Locked.push(b);
6496
+ } else if (b.startedAt) {
6497
+ groups["In Progress"].push(b);
6498
+ } else {
6499
+ groups.Available.push(b);
6500
+ }
6501
+ });
6502
+ return groups;
6503
+ };
6504
+ const BadgeTile = (props) => {
6505
+ const hasProgress = !!props.startedAt || !!props.finishedAt || !!props.progress && props.progress > 0;
6506
+ const isDisabled = props.isLocked || !props.onOpen;
6507
+ const onClick = () => !isDisabled && props.onOpen && props.onOpen();
6508
+ const status = props.isLocked ? { label: "Locked", accent: "slate" } : props.finishedAt ? { label: "Done", accent: "mint" } : hasProgress ? { label: "Active", accent: "cyan" } : { label: "Open", accent: "gold" };
6509
+ return /* @__PURE__ */ React.createElement(
6510
+ "div",
6511
+ {
6512
+ onClick,
6513
+ className: `flex flex-col items-center gap-2 rounded-xl border border-slate-200 p-3 text-center ${isDisabled ? "" : "cursor-pointer hover:bg-slate-50"}`
6514
+ },
6515
+ /* @__PURE__ */ React.createElement("div", { className: props.isLocked ? "opacity-40" : "" }, /* @__PURE__ */ React.createElement(
6516
+ BadgeEmblem,
6517
+ {
6518
+ icon: props.icon,
6519
+ iconURL: props.iconURL,
6520
+ imageURL: props.imageURL,
6521
+ alt: props.displayName,
6522
+ level: props.level,
6523
+ size: "sm"
6524
+ }
6525
+ )),
6526
+ /* @__PURE__ */ React.createElement("div", { className: "w-full truncate text-xs font-semibold text-dark-blue-400" }, props.displayName),
6527
+ /* @__PURE__ */ React.createElement(Pill, { label: status.label, accent: status.accent })
6528
+ );
6529
+ };
6530
+
6531
+ const DashboardShell = (props) => {
6532
+ return /* @__PURE__ */ React.createElement("div", { className: "flex h-screen w-full overflow-hidden bg-[linear-gradient(150deg,#EEF9FF_0%,#F0FEFA_40%,#FFFBEA_100%)] font-proxima" }, props.sidebar, /* @__PURE__ */ React.createElement("div", { className: "flex flex-1 flex-col overflow-hidden" }, props.topBar, /* @__PURE__ */ React.createElement("div", { className: "flex-1 overflow-y-auto" }, /* @__PURE__ */ React.createElement(Loader, { isLoading: props.isLoading }, /* @__PURE__ */ React.createElement("div", { className: "flex min-h-full flex-col" }, /* @__PURE__ */ React.createElement("div", { className: "flex flex-1 flex-col gap-3.5 p-5" }, props.children), /* @__PURE__ */ React.createElement(Footer, null))))));
6073
6533
  };
6074
6534
 
6075
6535
  var __defProp = Object.defineProperty;
6076
- var __defProps = Object.defineProperties;
6077
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6078
6536
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6079
6537
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6080
6538
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
@@ -6090,26 +6548,170 @@ var __spreadValues = (a, b) => {
6090
6548
  }
6091
6549
  return a;
6092
6550
  };
6093
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
6094
- const SidebarLayout = (props) => {
6551
+ const TABS = [
6552
+ { name: "profile", label: "My Profile", icon: IconUser, accent: "cyan" },
6553
+ { name: "pathways", label: "Pathways", icon: IconRoute, accent: "mint" },
6554
+ { name: "badges", label: "Badges", icon: IconAlbum, accent: "gold" },
6555
+ { name: "file-locker", label: "File Locker", icon: IconClipboard, accent: "cyan" },
6556
+ { name: "transcript", label: "Transcript", icon: IconFileText, accent: "mint" },
6557
+ { name: "portfolio", label: "Portfolio", icon: IconBriefcase, accent: "gold" },
6558
+ { name: "comments", label: "Comments", icon: IconMessageCircle, accent: "cyan" }
6559
+ ];
6560
+ const DashboardSidebar = (props) => {
6561
+ return /* @__PURE__ */ React__default.createElement("nav", { className: "flex h-full w-[230px] shrink-0 flex-col border-r border-slate-200 bg-white" }, /* @__PURE__ */ React__default.createElement("div", { className: "border-b border-slate-100 p-4" }, /* @__PURE__ */ React__default.createElement("div", { className: "w-24" }, /* @__PURE__ */ React__default.createElement(Logo, null))), props.identity && /* @__PURE__ */ React__default.createElement(DashboardIdentityChip, __spreadValues({}, props.identity)), /* @__PURE__ */ React__default.createElement("div", { className: "flex flex-1 flex-col gap-0.5 overflow-y-auto p-2.5" }, TABS.map((tab) => {
6562
+ const link = props.links[tab.name];
6563
+ return /* @__PURE__ */ React__default.createElement(
6564
+ DashboardSidebarLink,
6565
+ {
6566
+ key: tab.name,
6567
+ label: tab.label,
6568
+ icon: tab.icon,
6569
+ accent: tab.accent,
6570
+ href: link == null ? void 0 : link.href,
6571
+ active: props.active === tab.name,
6572
+ disabled: props.disabled || !link
6573
+ }
6574
+ );
6575
+ })), (props.onSwitchAccount || props.onLogout) && /* @__PURE__ */ React__default.createElement("div", { className: "flex flex-col gap-0.5 border-t border-slate-200 p-2.5" }, props.onSwitchAccount && /* @__PURE__ */ React__default.createElement(DashboardSidebarUtilLink, { label: "Change Account", icon: IconSwitchHorizontal, onClick: props.onSwitchAccount }), props.onLogout && /* @__PURE__ */ React__default.createElement(DashboardSidebarUtilLink, { label: "Logout", icon: IconLogout, onClick: props.onLogout })));
6576
+ };
6577
+ const DashboardIdentityChip = (props) => /* @__PURE__ */ React__default.createElement("div", { className: "m-3 flex items-center gap-2.5 rounded-xl border border-mint-400/30 bg-gradient-to-r from-sky-blue-400/15 to-mint-400/15 p-2.5 shadow-[0_2px_10px_rgba(30,226,175,0.15)]" }, /* @__PURE__ */ React__default.createElement("div", { className: "relative shrink-0" }, /* @__PURE__ */ React__default.createElement(
6578
+ "img",
6579
+ {
6580
+ className: "h-8 w-8 rounded-full border-2 border-white object-cover shadow-sm",
6581
+ src: props.avatarURL || "https://cdn.localcivics.io/hub/avatar.jpg",
6582
+ alt: "avatar"
6583
+ }
6584
+ ), props.online && /* @__PURE__ */ React__default.createElement("span", { className: "absolute -right-0.5 -top-0.5 h-2.5 w-2.5 rounded-full border-2 border-white bg-mint-400" })), /* @__PURE__ */ React__default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React__default.createElement("div", { className: "truncate text-xs font-bold text-dark-blue-400" }, props.name), props.subtitle && /* @__PURE__ */ React__default.createElement("div", { className: "truncate text-[10px] text-slate-500" }, props.subtitle)));
6585
+ const DashboardSidebarLink = (props) => {
6586
+ const config = defaultLinkConfig();
6587
+ withAccent(config, props.accent, props.active);
6588
+ withDisabled(config, props.disabled);
6589
+ const Icon = props.icon;
6590
+ const content = /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("div", { className: classname(config.chip) }, /* @__PURE__ */ React__default.createElement(Icon, { size: 14, stroke: props.active ? 2.2 : 1.75, className: config.icon.color })), /* @__PURE__ */ React__default.createElement("span", { className: classname(config.label) }, props.label), /* @__PURE__ */ React__default.createElement("span", { className: classname(config.dot) }));
6591
+ if (props.disabled || !props.href) {
6592
+ return /* @__PURE__ */ React__default.createElement("div", { className: classname(config.row) }, content);
6593
+ }
6594
+ return /* @__PURE__ */ React__default.createElement(Link, { to: props.href, className: classname(config.row) }, content);
6595
+ };
6596
+ const DashboardSidebarUtilLink = (props) => {
6597
+ const Icon = props.icon;
6095
6598
  return /* @__PURE__ */ React__default.createElement(
6096
- AuthLayout,
6097
- __spreadProps(__spreadValues({}, props), {
6098
- topNav: false,
6099
- sidebar: /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
6100
- Sidebar,
6101
- {
6102
- active: props.active,
6103
- links: props.links,
6104
- identity: props.identity,
6105
- settingsHref: props.settingsHref,
6106
- disabled: props.disabled,
6107
- onLogout: props.onLogout
6108
- }
6109
- ), props.sidebarExtra)
6110
- })
6599
+ "div",
6600
+ {
6601
+ onClick: props.onClick,
6602
+ className: "flex cursor-pointer items-center gap-2.5 rounded-[10px] px-3.5 py-2 text-slate-400 hover:bg-slate-50 hover:text-slate-500"
6603
+ },
6604
+ /* @__PURE__ */ React__default.createElement(Icon, { size: 13, stroke: 1.75 }),
6605
+ /* @__PURE__ */ React__default.createElement("span", { className: "text-[11.5px]" }, props.label)
6111
6606
  );
6112
6607
  };
6608
+ const defaultLinkConfig = () => ({
6609
+ row: {
6610
+ base: "flex items-center gap-2.5 rounded-[10px] px-3.5 py-2.5 transition-colors",
6611
+ cursor: "cursor-pointer hover:bg-slate-50",
6612
+ bg: "bg-transparent",
6613
+ border: "border border-transparent"
6614
+ },
6615
+ chip: {
6616
+ base: "flex h-[30px] w-[30px] shrink-0 items-center justify-center rounded-lg",
6617
+ bg: "bg-slate-50",
6618
+ shadow: ""
6619
+ },
6620
+ icon: {
6621
+ color: "text-slate-400"
6622
+ },
6623
+ label: {
6624
+ base: "flex-1 text-xs",
6625
+ weight: "font-medium",
6626
+ color: "text-slate-500"
6627
+ },
6628
+ dot: {
6629
+ base: "h-[5px] w-[5px] shrink-0 rounded-full",
6630
+ bg: "bg-transparent"
6631
+ }
6632
+ });
6633
+ const withAccent = (config, accent, active) => {
6634
+ if (!active) {
6635
+ return;
6636
+ }
6637
+ config.row.cursor = "cursor-default";
6638
+ config.label.weight = "font-bold";
6639
+ config.label.color = "text-dark-blue-400";
6640
+ switch (accent) {
6641
+ case "cyan":
6642
+ config.row.bg = "bg-sky-blue-400/15";
6643
+ config.row.border = "border border-sky-blue-400/30";
6644
+ config.chip.bg = "bg-sky-blue-400/25";
6645
+ config.chip.shadow = "shadow-[0_0_8px_rgba(59,208,242,0.5)]";
6646
+ config.icon.color = "text-sky-blue-400";
6647
+ config.dot.bg = "bg-sky-blue-400";
6648
+ break;
6649
+ case "mint":
6650
+ config.row.bg = "bg-mint-400/15";
6651
+ config.row.border = "border border-mint-400/30";
6652
+ config.chip.bg = "bg-mint-400/25";
6653
+ config.chip.shadow = "shadow-[0_0_8px_rgba(30,226,175,0.5)]";
6654
+ config.icon.color = "text-mint-400";
6655
+ config.dot.bg = "bg-mint-400";
6656
+ break;
6657
+ case "gold":
6658
+ config.row.bg = "bg-gold-400/15";
6659
+ config.row.border = "border border-gold-400/30";
6660
+ config.chip.bg = "bg-gold-400/25";
6661
+ config.chip.shadow = "shadow-[0_0_8px_rgba(255,212,77,0.5)]";
6662
+ config.icon.color = "text-gold-400";
6663
+ config.dot.bg = "bg-gold-400";
6664
+ break;
6665
+ }
6666
+ };
6667
+ const withDisabled = (config, disabled) => {
6668
+ if (!disabled) {
6669
+ return;
6670
+ }
6671
+ config.row.cursor = "cursor-default";
6672
+ config.icon.color = "text-slate-300";
6673
+ config.label.color = "text-slate-300";
6674
+ };
6675
+
6676
+ const DashboardTopBar = (props) => {
6677
+ return /* @__PURE__ */ React.createElement("div", { className: "flex shrink-0 items-center justify-between gap-4 border-b border-sky-blue-400/20 bg-white px-5 py-3.5 shadow-[0_2px_10px_rgba(59,208,242,0.08)]" }, /* @__PURE__ */ React.createElement("div", null, props.eyebrow && /* @__PURE__ */ React.createElement("p", { className: "text-[10px] font-bold uppercase tracking-wide text-slate-400" }, props.eyebrow), /* @__PURE__ */ React.createElement("h1", { className: "text-lg font-extrabold text-dark-blue-400" }, props.title)), /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-3" }, props.onNotifications && /* @__PURE__ */ React.createElement(
6678
+ "button",
6679
+ {
6680
+ type: "button",
6681
+ onClick: props.onNotifications,
6682
+ className: "flex h-9 w-9 items-center justify-center rounded-full border border-sky-blue-400/20 bg-sky-blue-400/10 text-sky-blue-400 hover:bg-sky-blue-400/15"
6683
+ },
6684
+ /* @__PURE__ */ React.createElement(IconBell, { size: 16, stroke: 1.75 })
6685
+ ), props.children));
6686
+ };
6687
+
6688
+ const AuthLayout = (props) => {
6689
+ return /* @__PURE__ */ React__default.createElement("main", { className: "relative h-screen w-full bg-white font-proxima" }, /* @__PURE__ */ React__default.createElement(Loader, { isLoading: props.isLoading }, props.topNav !== false && /* @__PURE__ */ React__default.createElement(NavBar, null, /* @__PURE__ */ React__default.createElement(NavLink, { disabled: !props.onHome || props.disabled, name: "home", onClick: props.onHome }), props.onProfile && /* @__PURE__ */ React__default.createElement(
6690
+ NavLink,
6691
+ {
6692
+ disabled: props.disabled,
6693
+ name: "profile",
6694
+ onClick: props.onProfile,
6695
+ active: props.page === "profile"
6696
+ }
6697
+ ), props.onSwitchAccount && /* @__PURE__ */ React__default.createElement(NavLink, { name: "switch accounts", onClick: props.onSwitchAccount }), props.onLogout && /* @__PURE__ */ React__default.createElement(NavLink, { name: "Logout", onClick: props.onLogout })), props.children && /* @__PURE__ */ React__default.createElement("section", { className: "absolute top-0 left-0 h-full overflow-auto pt-16 w-full" }, props.children), !props.children && /* @__PURE__ */ React__default.createElement("section", { className: "w-full px-4 py-5 lg:px-36 flex flex-col gap-4" }, props.header && /* @__PURE__ */ React__default.createElement("div", { className: "w-full max-w-[64rem] m-auto min-h-16 lg:min-h-24 lg:flex" }, props.header), /* @__PURE__ */ React__default.createElement("div", { className: "grow w-full min-h-96" }, /* @__PURE__ */ React__default.createElement("div", { className: "w-full max-w-[64rem] m-auto grid grid-cols-1 gap-y-4 lg:flex lg:gap-x-2" }, props.sidebar && /* @__PURE__ */ React__default.createElement("div", { className: "grid grid-cols-1 max-w-full md:flex md:flex-col gap-2 lg:w-[230px] shrink-0 lg:sticky lg:top-0 lg:h-screen lg:self-start lg:overflow-y-auto" }, /* @__PURE__ */ React__default.createElement("div", { className: "flex flex-col gap-4 lg:gap-x-2 lg:gap-y-3" }, props.sidebar)), (props.subheader || props.main) && /* @__PURE__ */ React__default.createElement("div", { className: "grow grid grid-cols-1 max-w-full overflow-x-hidden md:flex md:flex-col gap-4 lg:gap-2" }, props.subheader && /* @__PURE__ */ React__default.createElement("div", { className: "relative grid grid-cols-1 md:flex w-full gap-4 lg:gap-2" }, props.subheader), props.main && /* @__PURE__ */ React__default.createElement("div", { className: "relative grid grid-cols-1 w-full gap-4 lg:gap-2" }, props.main)))), /* @__PURE__ */ React__default.createElement(Footer, null))), props.outlet);
6698
+ };
6699
+
6700
+ const HomeLayout = (props) => {
6701
+ const onProfile = () => props.onProfile && props.onProfile();
6702
+ React__default.useEffect(() => {
6703
+ if (props.isLoading) {
6704
+ return;
6705
+ }
6706
+ if (props.nickname) {
6707
+ if (props.pathname === `/`) {
6708
+ onProfile();
6709
+ return;
6710
+ }
6711
+ }
6712
+ }, [props.isLoading, props.pathname, props.nickname]);
6713
+ return /* @__PURE__ */ React__default.createElement("main", { className: "relative h-screen w-full overflow-hidden bg-white font-proxima" }, /* @__PURE__ */ React__default.createElement(NavBar, null, /* @__PURE__ */ React__default.createElement(NavLink, { name: "home", onClick: props.onHome, active: true }), /* @__PURE__ */ React__default.createElement(NavLink, { name: "login", onClick: props.onLogin }), /* @__PURE__ */ React__default.createElement(NavLink, { name: "faq", onClick: props.onFAQ }), /* @__PURE__ */ React__default.createElement(NavLink, { name: "privacy", onClick: props.onPrivacy }), /* @__PURE__ */ React__default.createElement(NavLink, { name: "terms", onClick: props.onTerms })), /* @__PURE__ */ React__default.createElement("section", { className: "absolute top-0 left-0 h-full overflow-hidden pt-16 w-full" }, props.children));
6714
+ };
6113
6715
 
6114
- export { AboutWidget, AchievementWidget, ActivityCard, ActivityItem, ActivityList, ActivityReflection, AuthLayout, Badge, BadgeActivityMenu, BadgeSection, BadgeSuccessDialog, Board, Button, Card, DateSelection, EventItem, EventList, Footer, Home, HomeLayout, Icon$1 as Icon, ImpactWidget, LearningForm, Loader, LogServiceButton, Logo, Modal, NavBar, NavLink, NotFound, Onboarding, Overlay, Pathway, PathwayButton, PathwayFilter, PathwayProgress, PathwaySection, PathwayWidget, ProfileWidget, Progress, Search, SearchButton, SearchResult, SettingsCard, Sidebar, SidebarLayout, Stopwatch, Tab, TagFilter, TaskItem, TaskList, Widget, WidgetBody, WidgetHeader, WidgetHeaderLink, WidgetTitle };
6716
+ export { AboutWidget, AchievementWidget, ActivityCard, ActivityItem, ActivityList, ActivityReflection, AuthLayout, Badge, BadgeActivityMenu, BadgeDetail, BadgeSection, BadgeSuccessDialog, BadgesCard, BadgesList, Board, Button, Card, DashboardShell, DashboardSidebar, DashboardTopBar, DateSelection, EventItem, EventList, Footer, Home, HomeLayout, Icon$1 as Icon, ImpactWidget, LearningForm, Loader, LogServiceButton, Logo, Modal, NavBar, NavLink, NotFound, Onboarding, Overlay, Pathway, PathwayButton, PathwayDetail, PathwayFilter, PathwayProgress, PathwaySection, PathwayTranscript, PathwayWidget, PathwaysCard, PathwaysList, Pill, ProfileHeroCard, ProfileWidget, Progress, Search, SearchButton, SearchResult, SettingsCard, StatTile, StatTileRow, Stopwatch, Tab, TagFilter, TaskItem, TaskList, Widget, WidgetBody, WidgetHeader, WidgetHeaderLink, WidgetTitle };
6115
6717
  //# sourceMappingURL=index.mjs.map