@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.d.ts +302 -60
- package/dist/index.js +1159 -545
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1147 -545
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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,
|
|
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$
|
|
938
|
-
var __getOwnPropSymbols$
|
|
939
|
-
var __hasOwnProp$
|
|
940
|
-
var __propIsEnum$
|
|
941
|
-
var __defNormalProp$
|
|
942
|
-
var __spreadValues$
|
|
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$
|
|
945
|
-
__defNormalProp$
|
|
946
|
-
if (__getOwnPropSymbols$
|
|
947
|
-
for (var prop of __getOwnPropSymbols$
|
|
948
|
-
if (__propIsEnum$
|
|
949
|
-
__defNormalProp$
|
|
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$
|
|
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$
|
|
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$
|
|
1557
|
-
var __defProps$
|
|
1558
|
-
var __getOwnPropDescs$
|
|
1559
|
-
var __getOwnPropSymbols$
|
|
1560
|
-
var __hasOwnProp$
|
|
1561
|
-
var __propIsEnum$
|
|
1562
|
-
var __defNormalProp$
|
|
1563
|
-
var __spreadValues$
|
|
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$
|
|
1566
|
-
__defNormalProp$
|
|
1567
|
-
if (__getOwnPropSymbols$
|
|
1568
|
-
for (var prop of __getOwnPropSymbols$
|
|
1569
|
-
if (__propIsEnum$
|
|
1570
|
-
__defNormalProp$
|
|
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$
|
|
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$
|
|
1587
|
-
const tags = Object.entries(__spreadProps$
|
|
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$
|
|
1591
|
-
const tags = Object.entries(__spreadProps$
|
|
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$
|
|
1638
|
-
var __defProps$
|
|
1639
|
-
var __getOwnPropDescs$
|
|
1640
|
-
var __getOwnPropSymbols$
|
|
1641
|
-
var __hasOwnProp$
|
|
1642
|
-
var __propIsEnum$
|
|
1643
|
-
var __defNormalProp$
|
|
1644
|
-
var __spreadValues$
|
|
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$
|
|
1647
|
-
__defNormalProp$
|
|
1648
|
-
if (__getOwnPropSymbols$
|
|
1649
|
-
for (var prop of __getOwnPropSymbols$
|
|
1650
|
-
if (__propIsEnum$
|
|
1651
|
-
__defNormalProp$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1738
|
-
var __defProps$
|
|
1739
|
-
var __getOwnPropDescs$
|
|
1740
|
-
var __getOwnPropSymbols$
|
|
1741
|
-
var __hasOwnProp$
|
|
1742
|
-
var __propIsEnum$
|
|
1743
|
-
var __defNormalProp$
|
|
1744
|
-
var __spreadValues$
|
|
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$
|
|
1747
|
-
__defNormalProp$
|
|
1748
|
-
if (__getOwnPropSymbols$
|
|
1749
|
-
for (var prop of __getOwnPropSymbols$
|
|
1750
|
-
if (__propIsEnum$
|
|
1751
|
-
__defNormalProp$
|
|
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$
|
|
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$
|
|
1764
|
-
const setRating = (rating) => setReaction(__spreadProps$
|
|
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$
|
|
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$
|
|
3198
|
-
var __defProps$
|
|
3199
|
-
var __getOwnPropDescs$
|
|
3200
|
-
var __getOwnPropSymbols$
|
|
3201
|
-
var __hasOwnProp$
|
|
3202
|
-
var __propIsEnum$
|
|
3203
|
-
var __defNormalProp$
|
|
3204
|
-
var __spreadValues$
|
|
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$
|
|
3207
|
-
__defNormalProp$
|
|
3208
|
-
if (__getOwnPropSymbols$
|
|
3209
|
-
for (var prop of __getOwnPropSymbols$
|
|
3210
|
-
if (__propIsEnum$
|
|
3211
|
-
__defNormalProp$
|
|
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$
|
|
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$
|
|
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$
|
|
3269
|
-
var __defProps$
|
|
3270
|
-
var __getOwnPropDescs$
|
|
3271
|
-
var __getOwnPropSymbols$
|
|
3272
|
-
var __hasOwnProp$
|
|
3273
|
-
var __propIsEnum$
|
|
3274
|
-
var __defNormalProp$
|
|
3275
|
-
var __spreadValues$
|
|
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$
|
|
3278
|
-
__defNormalProp$
|
|
3279
|
-
if (__getOwnPropSymbols$
|
|
3280
|
-
for (var prop of __getOwnPropSymbols$
|
|
3281
|
-
if (__propIsEnum$
|
|
3282
|
-
__defNormalProp$
|
|
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$
|
|
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$
|
|
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$
|
|
3349
|
-
var __defProps$
|
|
3350
|
-
var __getOwnPropDescs$
|
|
3351
|
-
var __getOwnPropSymbols$
|
|
3352
|
-
var __hasOwnProp$
|
|
3353
|
-
var __propIsEnum$
|
|
3354
|
-
var __defNormalProp$
|
|
3355
|
-
var __spreadValues$
|
|
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$
|
|
3358
|
-
__defNormalProp$
|
|
3359
|
-
if (__getOwnPropSymbols$
|
|
3360
|
-
for (var prop of __getOwnPropSymbols$
|
|
3361
|
-
if (__propIsEnum$
|
|
3362
|
-
__defNormalProp$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|
|
3575
|
-
|
|
3576
|
-
|
|
3577
|
-
|
|
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
|
|
3580
|
-
const
|
|
3581
|
-
|
|
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
|
-
|
|
3586
|
-
|
|
3587
|
-
|
|
3588
|
-
|
|
3589
|
-
|
|
3590
|
-
|
|
3591
|
-
|
|
3592
|
-
|
|
3593
|
-
|
|
3594
|
-
|
|
3595
|
-
|
|
3596
|
-
|
|
3597
|
-
|
|
3598
|
-
|
|
3599
|
-
|
|
3600
|
-
|
|
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
|
|
3613
|
-
|
|
3614
|
-
|
|
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
|
|
3617
|
-
const
|
|
3618
|
-
const
|
|
3619
|
-
const
|
|
3620
|
-
|
|
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
|
|
3623
|
-
|
|
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$
|
|
3783
|
-
var __defProps$
|
|
3784
|
-
var __getOwnPropDescs$
|
|
3785
|
-
var __getOwnPropSymbols$
|
|
3786
|
-
var __hasOwnProp$
|
|
3787
|
-
var __propIsEnum$
|
|
3788
|
-
var __defNormalProp$
|
|
3789
|
-
var __spreadValues$
|
|
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$
|
|
3792
|
-
__defNormalProp$
|
|
3793
|
-
if (__getOwnPropSymbols$
|
|
3794
|
-
for (var prop of __getOwnPropSymbols$
|
|
3795
|
-
if (__propIsEnum$
|
|
3796
|
-
__defNormalProp$
|
|
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$
|
|
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$
|
|
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$
|
|
4078
|
+
return /* @__PURE__ */ React__default.createElement(Embed, __spreadValues$f({}, props));
|
|
3833
4079
|
case props.format === "image":
|
|
3834
|
-
return /* @__PURE__ */ React__default.createElement(Image, __spreadValues$
|
|
4080
|
+
return /* @__PURE__ */ React__default.createElement(Image, __spreadValues$f({}, props));
|
|
3835
4081
|
case props.questionType === "radio":
|
|
3836
|
-
return /* @__PURE__ */ React__default.createElement(RadioQuestion, __spreadValues$
|
|
4082
|
+
return /* @__PURE__ */ React__default.createElement(RadioQuestion, __spreadValues$f({}, props));
|
|
3837
4083
|
case props.questionType === "checkbox":
|
|
3838
|
-
return /* @__PURE__ */ React__default.createElement(CheckboxQuestion, __spreadValues$
|
|
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$
|
|
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$
|
|
4088
|
+
return /* @__PURE__ */ React__default.createElement(FileUploadQuestion, __spreadValues$f({}, props));
|
|
3843
4089
|
case props.questionType === "text":
|
|
3844
|
-
return /* @__PURE__ */ React__default.createElement(TextQuestion, __spreadValues$
|
|
4090
|
+
return /* @__PURE__ */ React__default.createElement(TextQuestion, __spreadValues$f({}, props));
|
|
3845
4091
|
case props.questionType === "date":
|
|
3846
|
-
return /* @__PURE__ */ React__default.createElement(DateQuestion, __spreadValues$
|
|
4092
|
+
return /* @__PURE__ */ React__default.createElement(DateQuestion, __spreadValues$f({}, props));
|
|
3847
4093
|
case props.questionType === "time":
|
|
3848
|
-
return /* @__PURE__ */ React__default.createElement(TimeQuestion, __spreadValues$
|
|
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$
|
|
4206
|
-
var __defProps$
|
|
4207
|
-
var __getOwnPropDescs$
|
|
4208
|
-
var __getOwnPropSymbols$
|
|
4209
|
-
var __hasOwnProp$
|
|
4210
|
-
var __propIsEnum$
|
|
4211
|
-
var __defNormalProp$
|
|
4212
|
-
var __spreadValues$
|
|
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$
|
|
4215
|
-
__defNormalProp$
|
|
4216
|
-
if (__getOwnPropSymbols$
|
|
4217
|
-
for (var prop of __getOwnPropSymbols$
|
|
4218
|
-
if (__propIsEnum$
|
|
4219
|
-
__defNormalProp$
|
|
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$
|
|
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$
|
|
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$
|
|
4414
|
-
var __getOwnPropSymbols$
|
|
4415
|
-
var __hasOwnProp$
|
|
4416
|
-
var __propIsEnum$
|
|
4417
|
-
var __defNormalProp$
|
|
4418
|
-
var __spreadValues$
|
|
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$
|
|
4421
|
-
__defNormalProp$
|
|
4422
|
-
if (__getOwnPropSymbols$
|
|
4423
|
-
for (var prop of __getOwnPropSymbols$
|
|
4424
|
-
if (__propIsEnum$
|
|
4425
|
-
__defNormalProp$
|
|
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$
|
|
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$
|
|
4510
|
-
var __defProps$
|
|
4511
|
-
var __getOwnPropDescs$
|
|
4512
|
-
var __getOwnPropSymbols$
|
|
4513
|
-
var __hasOwnProp$
|
|
4514
|
-
var __propIsEnum$
|
|
4515
|
-
var __defNormalProp$
|
|
4516
|
-
var __spreadValues$
|
|
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$
|
|
4519
|
-
__defNormalProp$
|
|
4520
|
-
if (__getOwnPropSymbols$
|
|
4521
|
-
for (var prop of __getOwnPropSymbols$
|
|
4522
|
-
if (__propIsEnum$
|
|
4523
|
-
__defNormalProp$
|
|
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$
|
|
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$
|
|
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$
|
|
4643
|
-
var __defProps$
|
|
4644
|
-
var __getOwnPropDescs$
|
|
4645
|
-
var __getOwnPropSymbols$
|
|
4646
|
-
var __hasOwnProp$
|
|
4647
|
-
var __propIsEnum$
|
|
4648
|
-
var __defNormalProp$
|
|
4649
|
-
var __spreadValues$
|
|
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$
|
|
4652
|
-
__defNormalProp$
|
|
4653
|
-
if (__getOwnPropSymbols$
|
|
4654
|
-
for (var prop of __getOwnPropSymbols$
|
|
4655
|
-
if (__propIsEnum$
|
|
4656
|
-
__defNormalProp$
|
|
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$
|
|
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$
|
|
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$
|
|
4799
|
-
var __defProps$
|
|
4800
|
-
var __getOwnPropDescs$
|
|
4801
|
-
var __getOwnPropSymbols$
|
|
4802
|
-
var __hasOwnProp$
|
|
4803
|
-
var __propIsEnum$
|
|
4804
|
-
var __defNormalProp$
|
|
4805
|
-
var __spreadValues$
|
|
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$
|
|
4808
|
-
__defNormalProp$
|
|
4809
|
-
if (__getOwnPropSymbols$
|
|
4810
|
-
for (var prop of __getOwnPropSymbols$
|
|
4811
|
-
if (__propIsEnum$
|
|
4812
|
-
__defNormalProp$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
5149
|
-
var __getOwnPropSymbols$
|
|
5150
|
-
var __hasOwnProp$
|
|
5151
|
-
var __propIsEnum$
|
|
5152
|
-
var __defNormalProp$
|
|
5153
|
-
var __spreadValues$
|
|
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$
|
|
5156
|
-
__defNormalProp$
|
|
5157
|
-
if (__getOwnPropSymbols$
|
|
5158
|
-
for (var prop of __getOwnPropSymbols$
|
|
5159
|
-
if (__propIsEnum$
|
|
5160
|
-
__defNormalProp$
|
|
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$
|
|
5414
|
+
return /* @__PURE__ */ React__default.createElement(DropDownInput, __spreadValues$9({}, props));
|
|
5169
5415
|
default:
|
|
5170
|
-
return /* @__PURE__ */ React__default.createElement(Input, __spreadValues$
|
|
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$
|
|
5279
|
-
var __defProps$
|
|
5280
|
-
var __getOwnPropDescs$
|
|
5281
|
-
var __getOwnPropSymbols$
|
|
5282
|
-
var __hasOwnProp$
|
|
5283
|
-
var __propIsEnum$
|
|
5284
|
-
var __defNormalProp$
|
|
5285
|
-
var __spreadValues$
|
|
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$
|
|
5288
|
-
__defNormalProp$
|
|
5289
|
-
if (__getOwnPropSymbols$
|
|
5290
|
-
for (var prop of __getOwnPropSymbols$
|
|
5291
|
-
if (__propIsEnum$
|
|
5292
|
-
__defNormalProp$
|
|
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$
|
|
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$
|
|
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$
|
|
5423
|
-
var __defProps$
|
|
5424
|
-
var __getOwnPropDescs$
|
|
5425
|
-
var __getOwnPropSymbols$
|
|
5426
|
-
var __hasOwnProp$
|
|
5427
|
-
var __propIsEnum$
|
|
5428
|
-
var __defNormalProp$
|
|
5429
|
-
var __spreadValues$
|
|
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$
|
|
5432
|
-
__defNormalProp$
|
|
5433
|
-
if (__getOwnPropSymbols$
|
|
5434
|
-
for (var prop of __getOwnPropSymbols$
|
|
5435
|
-
if (__propIsEnum$
|
|
5436
|
-
__defNormalProp$
|
|
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$
|
|
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$
|
|
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" },
|
|
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$
|
|
5827
|
-
var __defProps$
|
|
5828
|
-
var __getOwnPropDescs$
|
|
5829
|
-
var __getOwnPropSymbols$
|
|
5830
|
-
var __hasOwnProp$
|
|
5831
|
-
var __propIsEnum$
|
|
5832
|
-
var __defNormalProp$
|
|
5833
|
-
var __spreadValues$
|
|
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$
|
|
5836
|
-
__defNormalProp$
|
|
5837
|
-
if (__getOwnPropSymbols$
|
|
5838
|
-
for (var prop of __getOwnPropSymbols$
|
|
5839
|
-
if (__propIsEnum$
|
|
5840
|
-
__defNormalProp$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
6043
|
+
)))) : /* @__PURE__ */ React.createElement(PathwayTranscript, __spreadValues$6({}, sharedProps))));
|
|
5909
6044
|
};
|
|
5910
6045
|
|
|
5911
|
-
var __defProp$
|
|
5912
|
-
var __getOwnPropSymbols$
|
|
5913
|
-
var __hasOwnProp$
|
|
5914
|
-
var __propIsEnum$
|
|
5915
|
-
var __defNormalProp$
|
|
5916
|
-
var __spreadValues$
|
|
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$
|
|
5919
|
-
__defNormalProp$
|
|
5920
|
-
if (__getOwnPropSymbols$
|
|
5921
|
-
for (var prop of __getOwnPropSymbols$
|
|
5922
|
-
if (__propIsEnum$
|
|
5923
|
-
__defNormalProp$
|
|
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$
|
|
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$
|
|
5973
|
-
var __defProps
|
|
5974
|
-
var __getOwnPropDescs
|
|
5975
|
-
var __getOwnPropSymbols$
|
|
5976
|
-
var __hasOwnProp$
|
|
5977
|
-
var __propIsEnum$
|
|
5978
|
-
var __defNormalProp$
|
|
5979
|
-
var __spreadValues$
|
|
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$
|
|
5982
|
-
__defNormalProp$
|
|
5983
|
-
if (__getOwnPropSymbols$
|
|
5984
|
-
for (var prop of __getOwnPropSymbols$
|
|
5985
|
-
if (__propIsEnum$
|
|
5986
|
-
__defNormalProp$
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
6048
|
-
|
|
6049
|
-
|
|
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
|
-
|
|
6052
|
-
|
|
6053
|
-
|
|
6054
|
-
|
|
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.
|
|
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
|
-
|
|
6060
|
-
|
|
6061
|
-
|
|
6062
|
-
|
|
6063
|
-
|
|
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
|
-
|
|
6066
|
-
|
|
6067
|
-
|
|
6068
|
-
|
|
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
|
-
}, [
|
|
6072
|
-
|
|
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
|
-
|
|
6094
|
-
|
|
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
|
-
|
|
6097
|
-
|
|
6098
|
-
|
|
6099
|
-
|
|
6100
|
-
|
|
6101
|
-
|
|
6102
|
-
|
|
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,
|
|
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
|