@local-civics/mgmt-ui 0.1.231 → 0.1.233

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.js CHANGED
@@ -60,7 +60,7 @@ function styleInject(css, ref) {
60
60
  }
61
61
  }
62
62
 
63
- 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\")}*,: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: }.pointer-events-none{pointer-events:none}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.\\!relative{position:relative!important}.left-3{left:.75rem}.top-1\\/2{top:50%}.left-3\\.5{left:.875rem}.bottom-\\[-20px\\]{bottom:-20px}.left-1\\/2{left:50%}.m-3{margin:.75rem}.mt-0\\.5{margin-top:.125rem}.mt-0{margin-top:0}.mt-6{margin-top:1.5rem}.mt-2{margin-top:.5rem}.mt-1{margin-top:.25rem}.mt-1\\.5{margin-top:.375rem}.-ml-2{margin-left:-.5rem}.mt-4{margin-top:1rem}.mt-3{margin-top:.75rem}.mb-8{margin-bottom:2rem}.ml-\\[29px\\]{margin-left:29px}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-full{height:100%}.h-9{height:2.25rem}.h-8{height:2rem}.h-7{height:1.75rem}.h-12{height:3rem}.h-\\[300px\\]{height:300px}.h-screen{height:100vh}.h-14{height:3.5rem}.h-16{height:4rem}.h-28{height:7rem}.h-\\[30px\\]{height:30px}.h-\\[400px\\]{height:400px}.max-h-\\[70vh\\]{max-height:70vh}.w-10{width:2.5rem}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-fit{width:-moz-fit-content;width:fit-content}.w-36{width:9rem}.w-28{width:7rem}.w-4{width:1rem}.w-9{width:2.25rem}.w-\\[296px\\]{width:296px}.w-40{width:10rem}.w-24{width:6rem}.w-56{width:14rem}.w-8{width:2rem}.w-7{width:1.75rem}.w-64{width:16rem}.w-12{width:3rem}.w-16{width:4rem}.w-\\[440px\\]{width:440px}.w-20{width:5rem}.w-\\[250px\\]{width:250px}.w-screen{width:100vw}.w-\\[500px\\]{width:500px}.w-14{width:3.5rem}.w-\\[230px\\]{width:230px}.w-\\[30px\\]{width:30px}.min-w-0{min-width:0}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.max-w-\\[460px\\]{max-width:460px}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-y-1\\/2{--tw-translate-y:-50%}.-translate-x-1\\/2,.-translate-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))}.-translate-x-1\\/2{--tw-translate-x:-50%}.rotate-180{--tw-rotate:180deg}.rotate-180,.rotate-90{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))}.rotate-90{--tw-rotate:90deg}.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-pointer{cursor:pointer}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-\\[2\\.2fr_1\\.2fr_1fr_1\\.2fr_1fr_0\\.6fr\\]{grid-template-columns:2.2fr 1.2fr 1fr 1.2fr 1fr .6fr}.grid-cols-\\[1\\.5fr_2fr_1fr_0\\.6fr\\]{grid-template-columns:1.5fr 2fr 1fr .6fr}.grid-cols-\\[1\\.5fr_2fr_0\\.8fr\\]{grid-template-columns:1.5fr 2fr .8fr}.grid-cols-\\[1fr_3fr\\]{grid-template-columns:1fr 3fr}.grid-cols-\\[1fr_1fr_2fr_0\\.8fr\\]{grid-template-columns:1fr 1fr 2fr .8fr}.grid-cols-\\[2fr_1fr\\]{grid-template-columns:2fr 1fr}.grid-cols-\\[2\\.2fr_1\\.2fr_1fr_1fr_0\\.6fr\\]{grid-template-columns:2.2fr 1.2fr 1fr 1fr .6fr}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-\\[18px\\]{gap:18px}.gap-5{gap:1.25rem}.gap-4{gap:1rem}.gap-1{gap:.25rem}.gap-3{gap:.75rem}.gap-2{gap:.5rem}.gap-1\\.5{gap:.375rem}.gap-2\\.5{gap:.625rem}.gap-3\\.5{gap:.875rem}.gap-0\\.5{gap:.125rem}.gap-0{gap:0}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-10{-moz-column-gap:2.5rem;column-gap:2.5rem}.gap-y-4{row-gap:1rem}.space-y-1\\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.375rem*var(--tw-space-y-reverse));margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.-space-y-\\[3px\\]>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(-3px*var(--tw-space-y-reverse));margin-top:calc(-3px*(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-none{overscroll-behavior:none}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded-2xl{border-radius:1rem}.rounded-\\[10px\\]{border-radius:10px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:1.5rem}.rounded-\\[8px\\]{border-radius:8px}.border{border-width:1px}.border-2{border-width:2px}.border-l-4{border-left-width:4px}.border-t{border-top-width:1px}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-l{border-left-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.border-slate-100{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.border-sky-blue-400\\/40{border-color:rgba(59,208,242,.4)}.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-transparent{border-color:transparent}.border-l-sky-blue-400{--tw-border-opacity:1;border-left-color:rgb(59 208 242/var(--tw-border-opacity))}.border-l-mint-400{--tw-border-opacity:1;border-left-color:rgb(30 226 175/var(--tw-border-opacity))}.border-l-gold-400{--tw-border-opacity:1;border-left-color:rgb(255 212 77/var(--tw-border-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-sky-blue-400\\/20{background-color:rgba(59,208,242,.2)}.bg-mint-100{--tw-bg-opacity:1;background-color:rgb(208 251 240/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-gold-100{--tw-bg-opacity:1;background-color:rgb(255 248 214/var(--tw-bg-opacity))}.bg-mint-400\\/20{background-color:rgba(30,226,175,.2)}.bg-transparent{background-color:transparent}.bg-dark-blue-400{--tw-bg-opacity:1;background-color:rgb(35 42 58/var(--tw-bg-opacity))}.bg-white\\/90{background-color:hsla(0,0%,100%,.9)}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-slate-50\\/60{background-color:rgba(248,250,252,.6)}.bg-sky-blue-400\\/15{background-color:rgba(59,208,242,.15)}.bg-gold-400\\/15{background-color:rgba(255,212,77,.15)}.bg-mint-400\\/15{background-color:rgba(30,226,175,.15)}.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-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.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-dark-blue-600{--tw-gradient-from:#0a0f2e;--tw-gradient-to:rgba(10,15,46,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-sky-blue-400\\/15{--tw-gradient-from:rgba(59,208,242,.15);--tw-gradient-to:rgba(59,208,242,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.via-dark-blue-400{--tw-gradient-to:rgba(35,42,58,0);--tw-gradient-stops:var(--tw-gradient-from),#232a3a,var(--tw-gradient-to)}.to-dark-blue-400{--tw-gradient-to:#232a3a}.to-\\[\\#f5c300\\]{--tw-gradient-to:#f5c300}.to-sky-blue-400{--tw-gradient-to:#3bd0f2}.to-mint-400\\/15{--tw-gradient-to:rgba(30,226,175,.15)}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-4{padding:1rem}.p-8{padding:2rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-3{padding:.75rem}.p-2\\.5{padding:.625rem}.p-2{padding:.5rem}.px-\\[22px\\]{padding-left:22px;padding-right:22px}.py-\\[18px\\]{padding-bottom:18px;padding-top:18px}.px-4{padding-left:1rem;padding-right:1rem}.py-8{padding-bottom:2rem;padding-top:2rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.px-2\\.5{padding-left:.625rem;padding-right:.625rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3\\.5{padding-left:.875rem;padding-right:.875rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-2\\.5{padding-bottom:.625rem;padding-top:.625rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-3\\.5{padding-bottom:.875rem;padding-top:.875rem}.py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}.py-0{padding-bottom:0;padding-top:0}.py-4{padding-bottom:1rem;padding-top:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.pl-9{padding-left:2.25rem}.pr-4{padding-right:1rem}.pl-10{padding-left:2.5rem}.pb-2{padding-bottom:.5rem}.pr-1{padding-right:.25rem}.pl-4{padding-left:1rem}.pt-0\\.5{padding-top:.125rem}.pt-0{padding-top:0}.pb-12{padding-bottom:3rem}.pl-2\\.5{padding-left:.625rem}.pl-2{padding-left:.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-proxima{font-family:ProximaNova}.text-\\[15\\.5px\\]{font-size:15.5px}.text-xs{font-size:.75rem;line-height:1rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-\\[10px\\]{font-size:10px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-\\[10\\.5px\\]{font-size:10.5px}.text-\\[11px\\]{font-size:11px}.text-\\[28px\\]{font-size:28px}.text-\\[12\\.5px\\]{font-size:12.5px}.text-base{font-size:1rem;line-height:1.5rem}.text-\\[11\\.5px\\]{font-size:11.5px}.text-3xl{font-size:1.875rem;line-height:2.25rem}.font-extrabold{font-weight:800}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-black{font-weight:900}.uppercase{text-transform:uppercase}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-dark-blue-400{--tw-text-opacity:1;color:rgb(35 42 58/var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.text-sky-blue-400{--tw-text-opacity:1;color:rgb(59 208 242/var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.text-mint-400{--tw-text-opacity:1;color:rgb(30 226 175/var(--tw-text-opacity))}.text-white\\/70{color:hsla(0,0%,100%,.7)}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.text-gold-400{--tw-text-opacity:1;color:rgb(255 212 77/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.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-\\[0_3px_12px_rgba\\(255\\2c 212\\2c 77\\2c 0\\.35\\)\\],.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_3px_12px_rgba\\(255\\2c 212\\2c 77\\2c 0\\.35\\)\\]{--tw-shadow:0 3px 12px rgba(255,212,77,.35);--tw-shadow-colored:0 3px 12px var(--tw-shadow-color)}.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)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.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-transform{transition-duration:.15s;transition-property:transform;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)}.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)}.line-clamp-2{-webkit-box-orient:vertical;-webkit-line-clamp:2;display:-webkit-box;overflow:hidden}*,:after,:before{border-style:solid;border-width:0}button{background-color:transparent;background-image:none;color:inherit;cursor:pointer;font:inherit;margin:0;padding:0;text-transform:none}.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))}.first\\:ml-0:first-child{margin-left:0}.hover\\:scale-\\[1\\.02\\]:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;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))}.hover\\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.hover\\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.hover\\:text-slate-600:hover{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.hover\\:text-red-500:hover{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.hover\\:text-sky-blue-400:hover{--tw-text-opacity:1;color:rgb(59 208 242/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\\:underline:hover{text-decoration-line:underline}.hover\\:shadow-md:hover{--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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\\:border-sky-blue-400:focus{--tw-border-opacity:1;border-color:rgb(59 208 242/var(--tw-border-opacity))}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.disabled\\:opacity-50:disabled{opacity:.5}@media (min-width:640px){.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:768px){.md\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}";
63
+ 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\")}*,: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: }.pointer-events-none{pointer-events:none}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.\\!relative{position:relative!important}.left-3{left:.75rem}.top-1\\/2{top:50%}.left-3\\.5{left:.875rem}.bottom-\\[-20px\\]{bottom:-20px}.left-1\\/2{left:50%}.m-3{margin:.75rem}.mt-0\\.5{margin-top:.125rem}.mt-0{margin-top:0}.mt-6{margin-top:1.5rem}.mt-2{margin-top:.5rem}.mt-1{margin-top:.25rem}.mt-1\\.5{margin-top:.375rem}.-ml-2{margin-left:-.5rem}.mt-4{margin-top:1rem}.mt-3{margin-top:.75rem}.mb-8{margin-bottom:2rem}.mb-1{margin-bottom:.25rem}.ml-\\[29px\\]{margin-left:29px}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-full{height:100%}.h-9{height:2.25rem}.h-8{height:2rem}.h-7{height:1.75rem}.h-12{height:3rem}.h-\\[300px\\]{height:300px}.h-screen{height:100vh}.h-14{height:3.5rem}.h-16{height:4rem}.h-28{height:7rem}.h-\\[30px\\]{height:30px}.h-\\[400px\\]{height:400px}.max-h-\\[70vh\\]{max-height:70vh}.w-10{width:2.5rem}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-fit{width:-moz-fit-content;width:fit-content}.w-36{width:9rem}.w-28{width:7rem}.w-4{width:1rem}.w-9{width:2.25rem}.w-\\[296px\\]{width:296px}.w-40{width:10rem}.w-24{width:6rem}.w-56{width:14rem}.w-8{width:2rem}.w-7{width:1.75rem}.w-64{width:16rem}.w-12{width:3rem}.w-16{width:4rem}.w-\\[440px\\]{width:440px}.w-20{width:5rem}.w-\\[250px\\]{width:250px}.w-screen{width:100vw}.w-\\[500px\\]{width:500px}.w-14{width:3.5rem}.w-\\[230px\\]{width:230px}.w-\\[30px\\]{width:30px}.min-w-0{min-width:0}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.max-w-\\[460px\\]{max-width:460px}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-y-1\\/2{--tw-translate-y:-50%}.-translate-x-1\\/2,.-translate-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))}.-translate-x-1\\/2{--tw-translate-x:-50%}.rotate-180{--tw-rotate:180deg}.rotate-180,.rotate-90{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))}.rotate-90{--tw-rotate:90deg}.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-pointer{cursor:pointer}.resize-none{resize:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-\\[2\\.2fr_1\\.2fr_1fr_1\\.2fr_1fr_0\\.6fr\\]{grid-template-columns:2.2fr 1.2fr 1fr 1.2fr 1fr .6fr}.grid-cols-\\[1\\.5fr_2fr_1fr_0\\.6fr\\]{grid-template-columns:1.5fr 2fr 1fr .6fr}.grid-cols-\\[1\\.3fr_1\\.3fr_2fr_1fr_1fr\\]{grid-template-columns:1.3fr 1.3fr 2fr 1fr 1fr}.grid-cols-\\[1\\.5fr_2fr_0\\.8fr\\]{grid-template-columns:1.5fr 2fr .8fr}.grid-cols-\\[1fr_3fr\\]{grid-template-columns:1fr 3fr}.grid-cols-\\[1fr_1fr_2fr_0\\.8fr\\]{grid-template-columns:1fr 1fr 2fr .8fr}.grid-cols-\\[2fr_1fr\\]{grid-template-columns:2fr 1fr}.grid-cols-\\[2\\.2fr_1\\.2fr_1fr_1fr_0\\.6fr\\]{grid-template-columns:2.2fr 1.2fr 1fr 1fr .6fr}.grid-cols-\\[2\\.2fr_1fr\\]{grid-template-columns:2.2fr 1fr}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-\\[18px\\]{gap:18px}.gap-5{gap:1.25rem}.gap-4{gap:1rem}.gap-1{gap:.25rem}.gap-3{gap:.75rem}.gap-2{gap:.5rem}.gap-1\\.5{gap:.375rem}.gap-2\\.5{gap:.625rem}.gap-3\\.5{gap:.875rem}.gap-0\\.5{gap:.125rem}.gap-0{gap:0}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-10{-moz-column-gap:2.5rem;column-gap:2.5rem}.gap-y-4{row-gap:1rem}.space-y-1\\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.375rem*var(--tw-space-y-reverse));margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.-space-y-\\[3px\\]>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(-3px*var(--tw-space-y-reverse));margin-top:calc(-3px*(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-none{overscroll-behavior:none}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded-2xl{border-radius:1rem}.rounded-\\[10px\\]{border-radius:10px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:1.5rem}.rounded-\\[8px\\]{border-radius:8px}.border{border-width:1px}.border-2{border-width:2px}.border-l-4{border-left-width:4px}.border-t{border-top-width:1px}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-l{border-left-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.border-slate-100{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.border-sky-blue-400\\/40{border-color:rgba(59,208,242,.4)}.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-transparent{border-color:transparent}.border-l-sky-blue-400{--tw-border-opacity:1;border-left-color:rgb(59 208 242/var(--tw-border-opacity))}.border-l-mint-400{--tw-border-opacity:1;border-left-color:rgb(30 226 175/var(--tw-border-opacity))}.border-l-gold-400{--tw-border-opacity:1;border-left-color:rgb(255 212 77/var(--tw-border-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-sky-blue-400\\/20{background-color:rgba(59,208,242,.2)}.bg-mint-100{--tw-bg-opacity:1;background-color:rgb(208 251 240/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-gold-100{--tw-bg-opacity:1;background-color:rgb(255 248 214/var(--tw-bg-opacity))}.bg-mint-400\\/20{background-color:rgba(30,226,175,.2)}.bg-transparent{background-color:transparent}.bg-dark-blue-400{--tw-bg-opacity:1;background-color:rgb(35 42 58/var(--tw-bg-opacity))}.bg-slate-50\\/60{background-color:rgba(248,250,252,.6)}.bg-gold-400\\/15{background-color:rgba(255,212,77,.15)}.bg-white\\/90{background-color:hsla(0,0%,100%,.9)}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-sky-blue-400\\/15{background-color:rgba(59,208,242,.15)}.bg-mint-400\\/15{background-color:rgba(30,226,175,.15)}.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-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.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-dark-blue-600{--tw-gradient-from:#0a0f2e;--tw-gradient-to:rgba(10,15,46,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-sky-blue-400\\/15{--tw-gradient-from:rgba(59,208,242,.15);--tw-gradient-to:rgba(59,208,242,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.via-dark-blue-400{--tw-gradient-to:rgba(35,42,58,0);--tw-gradient-stops:var(--tw-gradient-from),#232a3a,var(--tw-gradient-to)}.to-dark-blue-400{--tw-gradient-to:#232a3a}.to-\\[\\#f5c300\\]{--tw-gradient-to:#f5c300}.to-sky-blue-400{--tw-gradient-to:#3bd0f2}.to-mint-400\\/15{--tw-gradient-to:rgba(30,226,175,.15)}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-4{padding:1rem}.p-8{padding:2rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-3{padding:.75rem}.p-2\\.5{padding:.625rem}.p-2{padding:.5rem}.px-\\[22px\\]{padding-left:22px;padding-right:22px}.py-\\[18px\\]{padding-bottom:18px;padding-top:18px}.px-4{padding-left:1rem;padding-right:1rem}.py-8{padding-bottom:2rem;padding-top:2rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.px-2\\.5{padding-left:.625rem;padding-right:.625rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3\\.5{padding-left:.875rem;padding-right:.875rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-2\\.5{padding-bottom:.625rem;padding-top:.625rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-3\\.5{padding-bottom:.875rem;padding-top:.875rem}.py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}.py-0{padding-bottom:0;padding-top:0}.py-4{padding-bottom:1rem;padding-top:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.pl-9{padding-left:2.25rem}.pr-4{padding-right:1rem}.pl-10{padding-left:2.5rem}.pb-2{padding-bottom:.5rem}.pr-1{padding-right:.25rem}.pl-4{padding-left:1rem}.pt-0\\.5{padding-top:.125rem}.pt-0{padding-top:0}.pb-12{padding-bottom:3rem}.pl-2\\.5{padding-left:.625rem}.pl-2{padding-left:.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-proxima{font-family:ProximaNova}.text-\\[15\\.5px\\]{font-size:15.5px}.text-xs{font-size:.75rem;line-height:1rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-\\[10px\\]{font-size:10px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-\\[10\\.5px\\]{font-size:10.5px}.text-\\[11px\\]{font-size:11px}.text-\\[28px\\]{font-size:28px}.text-\\[12\\.5px\\]{font-size:12.5px}.text-base{font-size:1rem;line-height:1.5rem}.text-\\[11\\.5px\\]{font-size:11.5px}.text-3xl{font-size:1.875rem;line-height:2.25rem}.font-extrabold{font-weight:800}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-black{font-weight:900}.uppercase{text-transform:uppercase}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-dark-blue-400{--tw-text-opacity:1;color:rgb(35 42 58/var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.text-sky-blue-400{--tw-text-opacity:1;color:rgb(59 208 242/var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.text-mint-400{--tw-text-opacity:1;color:rgb(30 226 175/var(--tw-text-opacity))}.text-white\\/70{color:hsla(0,0%,100%,.7)}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.text-gold-400{--tw-text-opacity:1;color:rgb(255 212 77/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.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-\\[0_3px_12px_rgba\\(255\\2c 212\\2c 77\\2c 0\\.35\\)\\],.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_3px_12px_rgba\\(255\\2c 212\\2c 77\\2c 0\\.35\\)\\]{--tw-shadow:0 3px 12px rgba(255,212,77,.35);--tw-shadow-colored:0 3px 12px var(--tw-shadow-color)}.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)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.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-transform{transition-duration:.15s;transition-property:transform;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)}.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)}.line-clamp-2{-webkit-box-orient:vertical;-webkit-line-clamp:2;display:-webkit-box;overflow:hidden}*,:after,:before{border-style:solid;border-width:0}button{background-color:transparent;background-image:none;color:inherit;cursor:pointer;font:inherit;margin:0;padding:0;text-transform:none}.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))}.first\\:ml-0:first-child{margin-left:0}.hover\\:scale-\\[1\\.02\\]:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;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))}.hover\\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.hover\\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.hover\\:text-slate-600:hover{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.hover\\:text-red-500:hover{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.hover\\:text-sky-blue-400:hover{--tw-text-opacity:1;color:rgb(59 208 242/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\\:underline:hover{text-decoration-line:underline}.hover\\:shadow-md:hover{--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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\\:border-sky-blue-400:focus{--tw-border-opacity:1;border-color:rgb(59 208 242/var(--tw-border-opacity))}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.disabled\\:opacity-50:disabled{opacity:.5}.disabled\\:opacity-40:disabled{opacity:.4}@media (min-width:640px){.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:768px){.md\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}";
64
64
  styleInject(css_248z);
65
65
 
66
66
  function UserButton({ image, name, email }) {
@@ -144,25 +144,25 @@ function LinksGroup({ icon: Icon, href, label, accent = "cyan", initiallyOpened,
144
144
  ), hasLinks && opened && /* @__PURE__ */ React__namespace.createElement("div", { className: "ml-[29px] mt-0.5 flex flex-col gap-0.5 border-l border-slate-100 pl-2.5" }, items));
145
145
  }
146
146
 
147
- var __defProp$i = Object.defineProperty;
148
- var __defProps$f = Object.defineProperties;
149
- var __getOwnPropDescs$f = Object.getOwnPropertyDescriptors;
150
- var __getOwnPropSymbols$i = Object.getOwnPropertySymbols;
151
- var __hasOwnProp$i = Object.prototype.hasOwnProperty;
152
- var __propIsEnum$i = Object.prototype.propertyIsEnumerable;
153
- var __defNormalProp$i = (obj, key, value) => key in obj ? __defProp$i(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
154
- var __spreadValues$i = (a, b) => {
147
+ var __defProp$j = Object.defineProperty;
148
+ var __defProps$g = Object.defineProperties;
149
+ var __getOwnPropDescs$g = Object.getOwnPropertyDescriptors;
150
+ var __getOwnPropSymbols$j = Object.getOwnPropertySymbols;
151
+ var __hasOwnProp$j = Object.prototype.hasOwnProperty;
152
+ var __propIsEnum$j = Object.prototype.propertyIsEnumerable;
153
+ var __defNormalProp$j = (obj, key, value) => key in obj ? __defProp$j(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
154
+ var __spreadValues$j = (a, b) => {
155
155
  for (var prop in b || (b = {}))
156
- if (__hasOwnProp$i.call(b, prop))
157
- __defNormalProp$i(a, prop, b[prop]);
158
- if (__getOwnPropSymbols$i)
159
- for (var prop of __getOwnPropSymbols$i(b)) {
160
- if (__propIsEnum$i.call(b, prop))
161
- __defNormalProp$i(a, prop, b[prop]);
156
+ if (__hasOwnProp$j.call(b, prop))
157
+ __defNormalProp$j(a, prop, b[prop]);
158
+ if (__getOwnPropSymbols$j)
159
+ for (var prop of __getOwnPropSymbols$j(b)) {
160
+ if (__propIsEnum$j.call(b, prop))
161
+ __defNormalProp$j(a, prop, b[prop]);
162
162
  }
163
163
  return a;
164
164
  };
165
- var __spreadProps$f = (a, b) => __defProps$f(a, __getOwnPropDescs$f(b));
165
+ var __spreadProps$g = (a, b) => __defProps$g(a, __getOwnPropDescs$g(b));
166
166
  const data = [
167
167
  { label: "Home", icon: icons.IconHome2, accent: "cyan" },
168
168
  { label: "Dashboard", icon: icons.IconGauge, accent: "mint" },
@@ -171,6 +171,8 @@ const data = [
171
171
  { label: "Badges", icon: icons.IconAlbum, accent: "mint" },
172
172
  { label: "Lessons", icon: icons.IconLambda, accent: "gold" },
173
173
  { label: "File Locker", icon: icons.IconClipboard, accent: "cyan" },
174
+ { label: "Comments", icon: icons.IconMessageCircle, accent: "mint" },
175
+ { label: "Validation", icon: icons.IconClipboardCheck, accent: "gold" },
174
176
  { label: "Organization", icon: icons.IconBuilding, accent: "gold", links: [{ label: "Overview" }, { label: "People" }] }
175
177
  ];
176
178
  const TRIAL_PAGES = [
@@ -189,12 +191,12 @@ function Navbar(props) {
189
191
  }
190
192
  return /* @__PURE__ */ React__namespace.createElement(
191
193
  LinksGroup,
192
- __spreadProps$f(__spreadValues$i(__spreadValues$i({
194
+ __spreadProps$g(__spreadValues$j(__spreadValues$j({
193
195
  key: item.label,
194
196
  active: props.active
195
197
  }, item), context), {
196
198
  links: (item.links || []).map((link) => {
197
- return __spreadValues$i(__spreadValues$i({}, link), props.links[`${item.label}/${link.label}`] || { notifications: 0, href: "" });
199
+ return __spreadValues$j(__spreadValues$j({}, link), props.links[`${item.label}/${link.label}`] || { notifications: 0, href: "" });
198
200
  })
199
201
  })
200
202
  );
@@ -520,29 +522,29 @@ function useSortableData(items, config = { key: "", direction: null }) {
520
522
  return { items: sortedItems, requestSort, sortConfig };
521
523
  }
522
524
 
523
- var __defProp$h = Object.defineProperty;
524
- var __defProps$e = Object.defineProperties;
525
- var __getOwnPropDescs$e = Object.getOwnPropertyDescriptors;
526
- var __getOwnPropSymbols$h = Object.getOwnPropertySymbols;
527
- var __hasOwnProp$h = Object.prototype.hasOwnProperty;
528
- var __propIsEnum$h = Object.prototype.propertyIsEnumerable;
529
- var __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
530
- var __spreadValues$h = (a, b) => {
525
+ var __defProp$i = Object.defineProperty;
526
+ var __defProps$f = Object.defineProperties;
527
+ var __getOwnPropDescs$f = Object.getOwnPropertyDescriptors;
528
+ var __getOwnPropSymbols$i = Object.getOwnPropertySymbols;
529
+ var __hasOwnProp$i = Object.prototype.hasOwnProperty;
530
+ var __propIsEnum$i = Object.prototype.propertyIsEnumerable;
531
+ var __defNormalProp$i = (obj, key, value) => key in obj ? __defProp$i(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
532
+ var __spreadValues$i = (a, b) => {
531
533
  for (var prop in b || (b = {}))
532
- if (__hasOwnProp$h.call(b, prop))
533
- __defNormalProp$h(a, prop, b[prop]);
534
- if (__getOwnPropSymbols$h)
535
- for (var prop of __getOwnPropSymbols$h(b)) {
536
- if (__propIsEnum$h.call(b, prop))
537
- __defNormalProp$h(a, prop, b[prop]);
534
+ if (__hasOwnProp$i.call(b, prop))
535
+ __defNormalProp$i(a, prop, b[prop]);
536
+ if (__getOwnPropSymbols$i)
537
+ for (var prop of __getOwnPropSymbols$i(b)) {
538
+ if (__propIsEnum$i.call(b, prop))
539
+ __defNormalProp$i(a, prop, b[prop]);
538
540
  }
539
541
  return a;
540
542
  };
541
- var __spreadProps$e = (a, b) => __defProps$e(a, __getOwnPropDescs$e(b));
543
+ var __spreadProps$f = (a, b) => __defProps$f(a, __getOwnPropDescs$f(b));
542
544
  function Table$k(props) {
543
545
  const [expanded, setExpanded] = React__namespace.useState({});
544
546
  const preparedItems = React__namespace.useMemo(() => {
545
- return props.items.map((item) => __spreadProps$e(__spreadValues$h({}, item), {
547
+ return props.items.map((item) => __spreadProps$f(__spreadValues$i({}, item), {
546
548
  status: item.isComplete ? 1 : 0
547
549
  }));
548
550
  }, [props.items]);
@@ -565,7 +567,7 @@ function Table$k(props) {
565
567
  return /* @__PURE__ */ React__namespace.createElement("div", { key: row.userId, className: "rounded-xl border border-slate-200 bg-white shadow-sm" }, /* @__PURE__ */ React__namespace.createElement(
566
568
  "div",
567
569
  {
568
- onClick: () => setExpanded(__spreadProps$e(__spreadValues$h({}, expanded), { [row.userId]: !isOpen })),
570
+ onClick: () => setExpanded(__spreadProps$f(__spreadValues$i({}, expanded), { [row.userId]: !isOpen })),
569
571
  className: "flex cursor-pointer items-center gap-4 p-4"
570
572
  },
571
573
  /* @__PURE__ */ React__namespace.createElement("div", { className: "flex min-w-0 flex-1 items-center gap-3" }, row.avatar ? /* @__PURE__ */ React__namespace.createElement("img", { src: row.avatar, className: "h-9 w-9 shrink-0 rounded-full object-cover", alt: "" }) : /* @__PURE__ */ React__namespace.createElement("div", { className: "flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-mint-400/20 text-xs font-bold text-dark-blue-400" }, initials), /* @__PURE__ */ React__namespace.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "truncate text-sm font-bold text-dark-blue-400" }, row.name), /* @__PURE__ */ React__namespace.createElement("div", { className: "truncate text-xs text-slate-400" }, row.email))),
@@ -600,7 +602,7 @@ function Table$j(props) {
600
602
  )));
601
603
  }
602
604
 
603
- const TABS$4 = [
605
+ const TABS$5 = [
604
606
  { label: "By lesson", value: "lessons" },
605
607
  { label: "By student", value: "students" }
606
608
  ];
@@ -633,7 +635,7 @@ const Badge = (props) => {
633
635
  },
634
636
  /* @__PURE__ */ React__namespace.createElement("option", { value: "" }, "All classes"),
635
637
  props.classes.map((c) => /* @__PURE__ */ React__namespace.createElement("option", { key: c.classId, value: c.classId }, c.name))
636
- )), /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-3" }, !props.trial && /* @__PURE__ */ React__namespace.createElement("div", { className: "flex w-fit gap-1 rounded-xl border border-slate-200 bg-white p-1" }, TABS$4.map((t) => /* @__PURE__ */ React__namespace.createElement(
638
+ )), /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-3" }, !props.trial && /* @__PURE__ */ React__namespace.createElement("div", { className: "flex w-fit gap-1 rounded-xl border border-slate-200 bg-white p-1" }, TABS$5.map((t) => /* @__PURE__ */ React__namespace.createElement(
637
639
  "button",
638
640
  {
639
641
  key: t.value,
@@ -754,28 +756,28 @@ function relativeTimeFromElapsed(elapsed) {
754
756
  return "";
755
757
  }
756
758
 
757
- var __defProp$g = Object.defineProperty;
758
- var __defProps$d = Object.defineProperties;
759
- var __getOwnPropDescs$d = Object.getOwnPropertyDescriptors;
760
- var __getOwnPropSymbols$g = Object.getOwnPropertySymbols;
761
- var __hasOwnProp$g = Object.prototype.hasOwnProperty;
762
- var __propIsEnum$g = Object.prototype.propertyIsEnumerable;
763
- var __defNormalProp$g = (obj, key, value) => key in obj ? __defProp$g(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
764
- var __spreadValues$g = (a, b) => {
759
+ var __defProp$h = Object.defineProperty;
760
+ var __defProps$e = Object.defineProperties;
761
+ var __getOwnPropDescs$e = Object.getOwnPropertyDescriptors;
762
+ var __getOwnPropSymbols$h = Object.getOwnPropertySymbols;
763
+ var __hasOwnProp$h = Object.prototype.hasOwnProperty;
764
+ var __propIsEnum$h = Object.prototype.propertyIsEnumerable;
765
+ var __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
766
+ var __spreadValues$h = (a, b) => {
765
767
  for (var prop in b || (b = {}))
766
- if (__hasOwnProp$g.call(b, prop))
767
- __defNormalProp$g(a, prop, b[prop]);
768
- if (__getOwnPropSymbols$g)
769
- for (var prop of __getOwnPropSymbols$g(b)) {
770
- if (__propIsEnum$g.call(b, prop))
771
- __defNormalProp$g(a, prop, b[prop]);
768
+ if (__hasOwnProp$h.call(b, prop))
769
+ __defNormalProp$h(a, prop, b[prop]);
770
+ if (__getOwnPropSymbols$h)
771
+ for (var prop of __getOwnPropSymbols$h(b)) {
772
+ if (__propIsEnum$h.call(b, prop))
773
+ __defNormalProp$h(a, prop, b[prop]);
772
774
  }
773
775
  return a;
774
776
  };
775
- var __spreadProps$d = (a, b) => __defProps$d(a, __getOwnPropDescs$d(b));
777
+ var __spreadProps$e = (a, b) => __defProps$e(a, __getOwnPropDescs$e(b));
776
778
  function Table$g(props) {
777
779
  const preparedItems = React__namespace.useMemo(() => {
778
- return props.items.map((item) => __spreadProps$d(__spreadValues$g({}, item), {
780
+ return props.items.map((item) => __spreadProps$e(__spreadValues$h({}, item), {
779
781
  updatedAtDate: new Date(item.updatedAt)
780
782
  }));
781
783
  }, [props.items]);
@@ -894,7 +896,7 @@ function Table$d(props) {
894
896
  )));
895
897
  }
896
898
 
897
- const TABS$3 = [
899
+ const TABS$4 = [
898
900
  { label: "My students", value: "students" },
899
901
  { label: "Impact statements", value: "impact" },
900
902
  { label: "Reflections", value: "reflections" },
@@ -930,7 +932,7 @@ const Dashboard = (props) => {
930
932
  },
931
933
  /* @__PURE__ */ React__namespace.createElement("option", { value: "" }, "All classes"),
932
934
  props.classes.map((c) => /* @__PURE__ */ React__namespace.createElement("option", { key: c.classId, value: c.classId }, c.name))
933
- )), /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "flex w-fit flex-wrap gap-1 rounded-xl border border-slate-200 bg-white p-1" }, TABS$3.map((t) => /* @__PURE__ */ React__namespace.createElement(
935
+ )), /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "flex w-fit flex-wrap gap-1 rounded-xl border border-slate-200 bg-white p-1" }, TABS$4.map((t) => /* @__PURE__ */ React__namespace.createElement(
934
936
  "button",
935
937
  {
936
938
  key: t.value,
@@ -974,25 +976,25 @@ const Dashboard = (props) => {
974
976
  )));
975
977
  };
976
978
 
977
- var __defProp$f = Object.defineProperty;
978
- var __defProps$c = Object.defineProperties;
979
- var __getOwnPropDescs$c = Object.getOwnPropertyDescriptors;
980
- var __getOwnPropSymbols$f = Object.getOwnPropertySymbols;
981
- var __hasOwnProp$f = Object.prototype.hasOwnProperty;
982
- var __propIsEnum$f = Object.prototype.propertyIsEnumerable;
983
- var __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
984
- var __spreadValues$f = (a, b) => {
979
+ var __defProp$g = Object.defineProperty;
980
+ var __defProps$d = Object.defineProperties;
981
+ var __getOwnPropDescs$d = Object.getOwnPropertyDescriptors;
982
+ var __getOwnPropSymbols$g = Object.getOwnPropertySymbols;
983
+ var __hasOwnProp$g = Object.prototype.hasOwnProperty;
984
+ var __propIsEnum$g = Object.prototype.propertyIsEnumerable;
985
+ var __defNormalProp$g = (obj, key, value) => key in obj ? __defProp$g(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
986
+ var __spreadValues$g = (a, b) => {
985
987
  for (var prop in b || (b = {}))
986
- if (__hasOwnProp$f.call(b, prop))
987
- __defNormalProp$f(a, prop, b[prop]);
988
- if (__getOwnPropSymbols$f)
989
- for (var prop of __getOwnPropSymbols$f(b)) {
990
- if (__propIsEnum$f.call(b, prop))
991
- __defNormalProp$f(a, prop, b[prop]);
988
+ if (__hasOwnProp$g.call(b, prop))
989
+ __defNormalProp$g(a, prop, b[prop]);
990
+ if (__getOwnPropSymbols$g)
991
+ for (var prop of __getOwnPropSymbols$g(b)) {
992
+ if (__propIsEnum$g.call(b, prop))
993
+ __defNormalProp$g(a, prop, b[prop]);
992
994
  }
993
995
  return a;
994
996
  };
995
- var __spreadProps$c = (a, b) => __defProps$c(a, __getOwnPropDescs$c(b));
997
+ var __spreadProps$d = (a, b) => __defProps$d(a, __getOwnPropDescs$d(b));
996
998
  const openDeleteModal$2 = (student, onDelete) => modals.openConfirmModal({
997
999
  title: `Remove "${student.givenName && student.familyName ? `${student.givenName} ${student.familyName}` : student.email}" from this class?`,
998
1000
  centered: true,
@@ -1003,7 +1005,7 @@ const openDeleteModal$2 = (student, onDelete) => modals.openConfirmModal({
1003
1005
  });
1004
1006
  function Table$c(props) {
1005
1007
  const preparedItems = React__namespace.useMemo(() => {
1006
- return props.items.map((item) => __spreadProps$c(__spreadValues$f({}, item), {
1008
+ return props.items.map((item) => __spreadProps$d(__spreadValues$g({}, item), {
1007
1009
  fullName: item.givenName && item.familyName ? `${item.givenName} ${item.familyName}`.toLowerCase() : item.email.toLowerCase()
1008
1010
  }));
1009
1011
  }, [props.items]);
@@ -1053,25 +1055,25 @@ function Table$c(props) {
1053
1055
  }));
1054
1056
  }
1055
1057
 
1056
- var __defProp$e = Object.defineProperty;
1057
- var __defProps$b = Object.defineProperties;
1058
- var __getOwnPropDescs$b = Object.getOwnPropertyDescriptors;
1059
- var __getOwnPropSymbols$e = Object.getOwnPropertySymbols;
1060
- var __hasOwnProp$e = Object.prototype.hasOwnProperty;
1061
- var __propIsEnum$e = Object.prototype.propertyIsEnumerable;
1062
- var __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1063
- var __spreadValues$e = (a, b) => {
1058
+ var __defProp$f = Object.defineProperty;
1059
+ var __defProps$c = Object.defineProperties;
1060
+ var __getOwnPropDescs$c = Object.getOwnPropertyDescriptors;
1061
+ var __getOwnPropSymbols$f = Object.getOwnPropertySymbols;
1062
+ var __hasOwnProp$f = Object.prototype.hasOwnProperty;
1063
+ var __propIsEnum$f = Object.prototype.propertyIsEnumerable;
1064
+ var __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1065
+ var __spreadValues$f = (a, b) => {
1064
1066
  for (var prop in b || (b = {}))
1065
- if (__hasOwnProp$e.call(b, prop))
1066
- __defNormalProp$e(a, prop, b[prop]);
1067
- if (__getOwnPropSymbols$e)
1068
- for (var prop of __getOwnPropSymbols$e(b)) {
1069
- if (__propIsEnum$e.call(b, prop))
1070
- __defNormalProp$e(a, prop, b[prop]);
1067
+ if (__hasOwnProp$f.call(b, prop))
1068
+ __defNormalProp$f(a, prop, b[prop]);
1069
+ if (__getOwnPropSymbols$f)
1070
+ for (var prop of __getOwnPropSymbols$f(b)) {
1071
+ if (__propIsEnum$f.call(b, prop))
1072
+ __defNormalProp$f(a, prop, b[prop]);
1071
1073
  }
1072
1074
  return a;
1073
1075
  };
1074
- var __spreadProps$b = (a, b) => __defProps$b(a, __getOwnPropDescs$b(b));
1076
+ var __spreadProps$c = (a, b) => __defProps$c(a, __getOwnPropDescs$c(b));
1075
1077
  const Class = (props) => {
1076
1078
  const [opened, setOpened] = React.useState(false);
1077
1079
  return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(
@@ -1083,7 +1085,7 @@ const Class = (props) => {
1083
1085
  padding: "xl",
1084
1086
  size: "xl"
1085
1087
  },
1086
- /* @__PURE__ */ React__namespace.createElement(DropzoneButton$1, __spreadProps$b(__spreadValues$e({}, props), { close: () => setOpened(false) }))
1088
+ /* @__PURE__ */ React__namespace.createElement(DropzoneButton$1, __spreadProps$c(__spreadValues$f({}, props), { close: () => setOpened(false) }))
1087
1089
  ), /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-5 px-4 py-8" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-wrap items-start justify-between gap-4" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React__namespace.createElement("div", { onClick: props.onBackClick, className: "flex w-max cursor-pointer items-center gap-1 text-xs font-bold text-sky-blue-400" }, /* @__PURE__ */ React__namespace.createElement(icons.IconArrowLeft, { size: 13, stroke: 2.5 }), "Back"), /* @__PURE__ */ React__namespace.createElement("h1", { className: "text-2xl font-extrabold tracking-tight text-dark-blue-400" }, props.displayName || "Class"), /* @__PURE__ */ React__namespace.createElement("p", { className: "text-sm text-slate-500" }, props.description || "No description")), !props.loading && /* @__PURE__ */ React__namespace.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React__namespace.createElement(
1088
1090
  "button",
1089
1091
  {
@@ -1217,20 +1219,20 @@ const DropzoneButton$1 = (props) => {
1217
1219
  props.onCreateMembers && props.onCreateMembers([values]);
1218
1220
  }) }, /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React__namespace.createElement(
1219
1221
  core.TextInput,
1220
- __spreadValues$e({
1222
+ __spreadValues$f({
1221
1223
  withAsterisk: true,
1222
1224
  label: "Email",
1223
1225
  placeholder: "Email"
1224
1226
  }, form$1.getInputProps("email"))
1225
1227
  ), /* @__PURE__ */ React__namespace.createElement(core.Group, { grow: true }, /* @__PURE__ */ React__namespace.createElement(
1226
1228
  core.TextInput,
1227
- __spreadValues$e({
1229
+ __spreadValues$f({
1228
1230
  label: "Given name",
1229
1231
  placeholder: "Given name"
1230
1232
  }, form$1.getInputProps("givenName"))
1231
1233
  ), /* @__PURE__ */ React__namespace.createElement(
1232
1234
  core.TextInput,
1233
- __spreadValues$e({
1235
+ __spreadValues$f({
1234
1236
  label: "Family name",
1235
1237
  placeholder: "Family name"
1236
1238
  }, form$1.getInputProps("familyName"))
@@ -1286,19 +1288,19 @@ function Table$b(props) {
1286
1288
  )));
1287
1289
  }
1288
1290
 
1289
- var __defProp$d = Object.defineProperty;
1290
- var __getOwnPropSymbols$d = Object.getOwnPropertySymbols;
1291
- var __hasOwnProp$d = Object.prototype.hasOwnProperty;
1292
- var __propIsEnum$d = Object.prototype.propertyIsEnumerable;
1293
- var __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1294
- var __spreadValues$d = (a, b) => {
1291
+ var __defProp$e = Object.defineProperty;
1292
+ var __getOwnPropSymbols$e = Object.getOwnPropertySymbols;
1293
+ var __hasOwnProp$e = Object.prototype.hasOwnProperty;
1294
+ var __propIsEnum$e = Object.prototype.propertyIsEnumerable;
1295
+ var __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1296
+ var __spreadValues$e = (a, b) => {
1295
1297
  for (var prop in b || (b = {}))
1296
- if (__hasOwnProp$d.call(b, prop))
1297
- __defNormalProp$d(a, prop, b[prop]);
1298
- if (__getOwnPropSymbols$d)
1299
- for (var prop of __getOwnPropSymbols$d(b)) {
1300
- if (__propIsEnum$d.call(b, prop))
1301
- __defNormalProp$d(a, prop, b[prop]);
1298
+ if (__hasOwnProp$e.call(b, prop))
1299
+ __defNormalProp$e(a, prop, b[prop]);
1300
+ if (__getOwnPropSymbols$e)
1301
+ for (var prop of __getOwnPropSymbols$e(b)) {
1302
+ if (__propIsEnum$e.call(b, prop))
1303
+ __defNormalProp$e(a, prop, b[prop]);
1302
1304
  }
1303
1305
  return a;
1304
1306
  };
@@ -1332,14 +1334,14 @@ const Classes = (props) => {
1332
1334
  props.onCreateClass && props.onCreateClass(values);
1333
1335
  }) }, /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React__namespace.createElement(
1334
1336
  core.TextInput,
1335
- __spreadValues$d({
1337
+ __spreadValues$e({
1336
1338
  withAsterisk: true,
1337
1339
  label: "Name",
1338
1340
  placeholder: "Class name"
1339
1341
  }, form$1.getInputProps("name"))
1340
1342
  ), /* @__PURE__ */ React__namespace.createElement(
1341
1343
  core.TextInput,
1342
- __spreadValues$d({
1344
+ __spreadValues$e({
1343
1345
  label: "Description",
1344
1346
  placeholder: "A class for my first period English students"
1345
1347
  }, form$1.getInputProps("description"))
@@ -1463,7 +1465,7 @@ function Table$8(props) {
1463
1465
  )));
1464
1466
  }
1465
1467
 
1466
- const TABS$2 = [
1468
+ const TABS$3 = [
1467
1469
  { label: "My badges", value: "badges" },
1468
1470
  { label: "My answers", value: "answers" },
1469
1471
  { label: "My reflections", value: "reflections" }
@@ -1485,7 +1487,7 @@ const Student = (props) => {
1485
1487
  title: "BADGE COMPLETION",
1486
1488
  value: numberOfBadgesCompleted
1487
1489
  }
1488
- ] }), /* @__PURE__ */ React__namespace.createElement("div", { className: "flex w-fit gap-1 rounded-xl border border-slate-200 bg-white p-1" }, TABS$2.map((t) => /* @__PURE__ */ React__namespace.createElement(
1490
+ ] }), /* @__PURE__ */ React__namespace.createElement("div", { className: "flex w-fit gap-1 rounded-xl border border-slate-200 bg-white p-1" }, TABS$3.map((t) => /* @__PURE__ */ React__namespace.createElement(
1489
1491
  "button",
1490
1492
  {
1491
1493
  key: t.value,
@@ -1647,29 +1649,29 @@ function Stack$3(props) {
1647
1649
  return /* @__PURE__ */ React__namespace.createElement(reactRouterDom.Link, { to: props.href, className: "flex flex-col gap-4 no-underline" }, props.items.map((row) => /* @__PURE__ */ React__namespace.createElement("div", { key: row.questionName }, /* @__PURE__ */ React__namespace.createElement("div", { className: "text-sm font-bold text-dark-blue-400" }, row.questionName), /* @__PURE__ */ React__namespace.createElement("div", { className: "mt-1 text-sm text-slate-600" }, row.answer.join(", ") || "No answer."))));
1648
1650
  }
1649
1651
 
1650
- var __defProp$c = Object.defineProperty;
1651
- var __defProps$a = Object.defineProperties;
1652
- var __getOwnPropDescs$a = Object.getOwnPropertyDescriptors;
1653
- var __getOwnPropSymbols$c = Object.getOwnPropertySymbols;
1654
- var __hasOwnProp$c = Object.prototype.hasOwnProperty;
1655
- var __propIsEnum$c = Object.prototype.propertyIsEnumerable;
1656
- var __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1657
- var __spreadValues$c = (a, b) => {
1652
+ var __defProp$d = Object.defineProperty;
1653
+ var __defProps$b = Object.defineProperties;
1654
+ var __getOwnPropDescs$b = Object.getOwnPropertyDescriptors;
1655
+ var __getOwnPropSymbols$d = Object.getOwnPropertySymbols;
1656
+ var __hasOwnProp$d = Object.prototype.hasOwnProperty;
1657
+ var __propIsEnum$d = Object.prototype.propertyIsEnumerable;
1658
+ var __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1659
+ var __spreadValues$d = (a, b) => {
1658
1660
  for (var prop in b || (b = {}))
1659
- if (__hasOwnProp$c.call(b, prop))
1660
- __defNormalProp$c(a, prop, b[prop]);
1661
- if (__getOwnPropSymbols$c)
1662
- for (var prop of __getOwnPropSymbols$c(b)) {
1663
- if (__propIsEnum$c.call(b, prop))
1664
- __defNormalProp$c(a, prop, b[prop]);
1661
+ if (__hasOwnProp$d.call(b, prop))
1662
+ __defNormalProp$d(a, prop, b[prop]);
1663
+ if (__getOwnPropSymbols$d)
1664
+ for (var prop of __getOwnPropSymbols$d(b)) {
1665
+ if (__propIsEnum$d.call(b, prop))
1666
+ __defNormalProp$d(a, prop, b[prop]);
1665
1667
  }
1666
1668
  return a;
1667
1669
  };
1668
- var __spreadProps$a = (a, b) => __defProps$a(a, __getOwnPropDescs$a(b));
1670
+ var __spreadProps$b = (a, b) => __defProps$b(a, __getOwnPropDescs$b(b));
1669
1671
  function Table$6(props) {
1670
1672
  const [expanded, setExpanded] = React__namespace.useState({});
1671
1673
  const preparedItems = React__namespace.useMemo(() => {
1672
- return props.items.map((item) => __spreadProps$a(__spreadValues$c({}, item), {
1674
+ return props.items.map((item) => __spreadProps$b(__spreadValues$d({}, item), {
1673
1675
  status: item.isComplete ? 2 : item.isStarted ? 1 : 0
1674
1676
  }));
1675
1677
  }, [props.items]);
@@ -1692,7 +1694,7 @@ function Table$6(props) {
1692
1694
  return /* @__PURE__ */ React__namespace.createElement("div", { key: row.userId, className: "rounded-xl border border-slate-200 bg-white shadow-sm" }, /* @__PURE__ */ React__namespace.createElement(
1693
1695
  "div",
1694
1696
  {
1695
- onClick: () => setExpanded(__spreadProps$a(__spreadValues$c({}, expanded), { [row.userId]: !isOpen })),
1697
+ onClick: () => setExpanded(__spreadProps$b(__spreadValues$d({}, expanded), { [row.userId]: !isOpen })),
1696
1698
  className: "flex cursor-pointer items-center gap-4 p-4"
1697
1699
  },
1698
1700
  /* @__PURE__ */ React__namespace.createElement("div", { className: "flex min-w-0 flex-1 items-center gap-3" }, row.avatar ? /* @__PURE__ */ React__namespace.createElement("img", { src: row.avatar, className: "h-9 w-9 shrink-0 rounded-full object-cover", alt: "" }) : /* @__PURE__ */ React__namespace.createElement("div", { className: "flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-mint-400/20 text-xs font-bold text-dark-blue-400" }, initials), /* @__PURE__ */ React__namespace.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "truncate text-sm font-bold text-dark-blue-400" }, row.name), /* @__PURE__ */ React__namespace.createElement("div", { className: "truncate text-xs text-slate-400" }, row.email))),
@@ -1932,25 +1934,25 @@ const SplitButton$2 = (props) => {
1932
1934
  ));
1933
1935
  };
1934
1936
 
1935
- var __defProp$b = Object.defineProperty;
1936
- var __defProps$9 = Object.defineProperties;
1937
- var __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors;
1938
- var __getOwnPropSymbols$b = Object.getOwnPropertySymbols;
1939
- var __hasOwnProp$b = Object.prototype.hasOwnProperty;
1940
- var __propIsEnum$b = Object.prototype.propertyIsEnumerable;
1941
- var __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1942
- var __spreadValues$b = (a, b) => {
1937
+ var __defProp$c = Object.defineProperty;
1938
+ var __defProps$a = Object.defineProperties;
1939
+ var __getOwnPropDescs$a = Object.getOwnPropertyDescriptors;
1940
+ var __getOwnPropSymbols$c = Object.getOwnPropertySymbols;
1941
+ var __hasOwnProp$c = Object.prototype.hasOwnProperty;
1942
+ var __propIsEnum$c = Object.prototype.propertyIsEnumerable;
1943
+ var __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1944
+ var __spreadValues$c = (a, b) => {
1943
1945
  for (var prop in b || (b = {}))
1944
- if (__hasOwnProp$b.call(b, prop))
1945
- __defNormalProp$b(a, prop, b[prop]);
1946
- if (__getOwnPropSymbols$b)
1947
- for (var prop of __getOwnPropSymbols$b(b)) {
1948
- if (__propIsEnum$b.call(b, prop))
1949
- __defNormalProp$b(a, prop, b[prop]);
1946
+ if (__hasOwnProp$c.call(b, prop))
1947
+ __defNormalProp$c(a, prop, b[prop]);
1948
+ if (__getOwnPropSymbols$c)
1949
+ for (var prop of __getOwnPropSymbols$c(b)) {
1950
+ if (__propIsEnum$c.call(b, prop))
1951
+ __defNormalProp$c(a, prop, b[prop]);
1950
1952
  }
1951
1953
  return a;
1952
1954
  };
1953
- var __spreadProps$9 = (a, b) => __defProps$9(a, __getOwnPropDescs$9(b));
1955
+ var __spreadProps$a = (a, b) => __defProps$a(a, __getOwnPropDescs$a(b));
1954
1956
  const openDeleteModal = (person, onDelete) => modals.openConfirmModal({
1955
1957
  title: `Remove "${person.givenName && person.familyName ? `${person.givenName} ${person.familyName}` : person.email}" from your organization?`,
1956
1958
  centered: true,
@@ -1961,7 +1963,7 @@ const openDeleteModal = (person, onDelete) => modals.openConfirmModal({
1961
1963
  });
1962
1964
  function Table$4(props) {
1963
1965
  const preparedItems = React__namespace.useMemo(() => {
1964
- return props.items.map((item) => __spreadProps$9(__spreadValues$b({}, item), {
1966
+ return props.items.map((item) => __spreadProps$a(__spreadValues$c({}, item), {
1965
1967
  fullName: item.givenName && item.familyName ? `${item.givenName} ${item.familyName}`.toLowerCase() : item.email.toLowerCase(),
1966
1968
  roleRank: item.isAdmin ? 2 : item.isGroupAdmin ? 1 : 0
1967
1969
  }));
@@ -2020,25 +2022,25 @@ function Table$4(props) {
2020
2022
  }));
2021
2023
  }
2022
2024
 
2023
- var __defProp$a = Object.defineProperty;
2024
- var __defProps$8 = Object.defineProperties;
2025
- var __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;
2026
- var __getOwnPropSymbols$a = Object.getOwnPropertySymbols;
2027
- var __hasOwnProp$a = Object.prototype.hasOwnProperty;
2028
- var __propIsEnum$a = Object.prototype.propertyIsEnumerable;
2029
- var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2030
- var __spreadValues$a = (a, b) => {
2025
+ var __defProp$b = Object.defineProperty;
2026
+ var __defProps$9 = Object.defineProperties;
2027
+ var __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors;
2028
+ var __getOwnPropSymbols$b = Object.getOwnPropertySymbols;
2029
+ var __hasOwnProp$b = Object.prototype.hasOwnProperty;
2030
+ var __propIsEnum$b = Object.prototype.propertyIsEnumerable;
2031
+ var __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2032
+ var __spreadValues$b = (a, b) => {
2031
2033
  for (var prop in b || (b = {}))
2032
- if (__hasOwnProp$a.call(b, prop))
2033
- __defNormalProp$a(a, prop, b[prop]);
2034
- if (__getOwnPropSymbols$a)
2035
- for (var prop of __getOwnPropSymbols$a(b)) {
2036
- if (__propIsEnum$a.call(b, prop))
2037
- __defNormalProp$a(a, prop, b[prop]);
2038
- }
2039
- return a;
2040
- };
2041
- var __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));
2034
+ if (__hasOwnProp$b.call(b, prop))
2035
+ __defNormalProp$b(a, prop, b[prop]);
2036
+ if (__getOwnPropSymbols$b)
2037
+ for (var prop of __getOwnPropSymbols$b(b)) {
2038
+ if (__propIsEnum$b.call(b, prop))
2039
+ __defNormalProp$b(a, prop, b[prop]);
2040
+ }
2041
+ return a;
2042
+ };
2043
+ var __spreadProps$9 = (a, b) => __defProps$9(a, __getOwnPropDescs$9(b));
2042
2044
  const People = (props) => {
2043
2045
  const form$1 = form.useForm({
2044
2046
  initialValues: {
@@ -2070,27 +2072,27 @@ const People = (props) => {
2070
2072
  padding: "xl",
2071
2073
  size: "xl"
2072
2074
  },
2073
- /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ React__namespace.createElement(DropzoneButton, __spreadProps$8(__spreadValues$a({}, props), { close: () => setOpened(false) })), /* @__PURE__ */ React__namespace.createElement(core.Divider, { label: "or", labelPosition: "center", my: "md", variant: "dashed" }), /* @__PURE__ */ React__namespace.createElement("form", { onSubmit: form$1.onSubmit(() => {
2075
+ /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ React__namespace.createElement(DropzoneButton, __spreadProps$9(__spreadValues$b({}, props), { close: () => setOpened(false) })), /* @__PURE__ */ React__namespace.createElement(core.Divider, { label: "or", labelPosition: "center", my: "md", variant: "dashed" }), /* @__PURE__ */ React__namespace.createElement("form", { onSubmit: form$1.onSubmit(() => {
2074
2076
  const values = form$1.values;
2075
2077
  form$1.reset();
2076
2078
  setOpened(false);
2077
2079
  props.onCreateUsers && props.onCreateUsers([values]);
2078
2080
  }) }, /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React__namespace.createElement(
2079
2081
  core.TextInput,
2080
- __spreadValues$a({
2082
+ __spreadValues$b({
2081
2083
  withAsterisk: true,
2082
2084
  label: "Email",
2083
2085
  placeholder: "Email"
2084
2086
  }, form$1.getInputProps("email"))
2085
2087
  ), /* @__PURE__ */ React__namespace.createElement(core.Group, { grow: true }, /* @__PURE__ */ React__namespace.createElement(
2086
2088
  core.TextInput,
2087
- __spreadValues$a({
2089
+ __spreadValues$b({
2088
2090
  label: "Given name",
2089
2091
  placeholder: "Given name"
2090
2092
  }, form$1.getInputProps("givenName"))
2091
2093
  ), /* @__PURE__ */ React__namespace.createElement(
2092
2094
  core.TextInput,
2093
- __spreadValues$a({
2095
+ __spreadValues$b({
2094
2096
  label: "Family name",
2095
2097
  placeholder: "Family name"
2096
2098
  }, form$1.getInputProps("familyName"))
@@ -2284,24 +2286,24 @@ const StartAnonymousLesson = (props) => {
2284
2286
  ))))));
2285
2287
  };
2286
2288
 
2287
- var __defProp$9 = Object.defineProperty;
2288
- var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;
2289
- var __hasOwnProp$9 = Object.prototype.hasOwnProperty;
2290
- var __propIsEnum$9 = Object.prototype.propertyIsEnumerable;
2291
- var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2292
- var __spreadValues$9 = (a, b) => {
2289
+ var __defProp$a = Object.defineProperty;
2290
+ var __getOwnPropSymbols$a = Object.getOwnPropertySymbols;
2291
+ var __hasOwnProp$a = Object.prototype.hasOwnProperty;
2292
+ var __propIsEnum$a = Object.prototype.propertyIsEnumerable;
2293
+ var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2294
+ var __spreadValues$a = (a, b) => {
2293
2295
  for (var prop in b || (b = {}))
2294
- if (__hasOwnProp$9.call(b, prop))
2295
- __defNormalProp$9(a, prop, b[prop]);
2296
- if (__getOwnPropSymbols$9)
2297
- for (var prop of __getOwnPropSymbols$9(b)) {
2298
- if (__propIsEnum$9.call(b, prop))
2299
- __defNormalProp$9(a, prop, b[prop]);
2296
+ if (__hasOwnProp$a.call(b, prop))
2297
+ __defNormalProp$a(a, prop, b[prop]);
2298
+ if (__getOwnPropSymbols$a)
2299
+ for (var prop of __getOwnPropSymbols$a(b)) {
2300
+ if (__propIsEnum$a.call(b, prop))
2301
+ __defNormalProp$a(a, prop, b[prop]);
2300
2302
  }
2301
2303
  return a;
2302
2304
  };
2303
2305
  const BadgeGrid = (props) => {
2304
- const badges = props.badges.map((b) => /* @__PURE__ */ React__namespace.createElement(TaskCard, __spreadValues$9({ key: b.title }, b)));
2306
+ const badges = props.badges.map((b) => /* @__PURE__ */ React__namespace.createElement(TaskCard, __spreadValues$a({ key: b.title }, b)));
2305
2307
  return /* @__PURE__ */ React__namespace.createElement(core.SimpleGrid, { cols: 4, breakpoints: [{ maxWidth: "sm", cols: 1 }, { maxWidth: "md", cols: 3 }] }, badges);
2306
2308
  };
2307
2309
  function TaskCard(props) {
@@ -2335,30 +2337,30 @@ const UserInfo = (props) => {
2335
2337
  return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(core.Title, { className: classes.title }, props.name), /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dimmed", className: classes.description, mt: "xs" }, props.impactStatement));
2336
2338
  };
2337
2339
 
2338
- var __defProp$8 = Object.defineProperty;
2339
- var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;
2340
- var __hasOwnProp$8 = Object.prototype.hasOwnProperty;
2341
- var __propIsEnum$8 = Object.prototype.propertyIsEnumerable;
2342
- var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2343
- var __spreadValues$8 = (a, b) => {
2340
+ var __defProp$9 = Object.defineProperty;
2341
+ var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;
2342
+ var __hasOwnProp$9 = Object.prototype.hasOwnProperty;
2343
+ var __propIsEnum$9 = Object.prototype.propertyIsEnumerable;
2344
+ var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2345
+ var __spreadValues$9 = (a, b) => {
2344
2346
  for (var prop in b || (b = {}))
2345
- if (__hasOwnProp$8.call(b, prop))
2346
- __defNormalProp$8(a, prop, b[prop]);
2347
- if (__getOwnPropSymbols$8)
2348
- for (var prop of __getOwnPropSymbols$8(b)) {
2349
- if (__propIsEnum$8.call(b, prop))
2350
- __defNormalProp$8(a, prop, b[prop]);
2347
+ if (__hasOwnProp$9.call(b, prop))
2348
+ __defNormalProp$9(a, prop, b[prop]);
2349
+ if (__getOwnPropSymbols$9)
2350
+ for (var prop of __getOwnPropSymbols$9(b)) {
2351
+ if (__propIsEnum$9.call(b, prop))
2352
+ __defNormalProp$9(a, prop, b[prop]);
2351
2353
  }
2352
2354
  return a;
2353
2355
  };
2354
2356
  var __objRest$1 = (source, exclude) => {
2355
2357
  var target = {};
2356
2358
  for (var prop in source)
2357
- if (__hasOwnProp$8.call(source, prop) && exclude.indexOf(prop) < 0)
2359
+ if (__hasOwnProp$9.call(source, prop) && exclude.indexOf(prop) < 0)
2358
2360
  target[prop] = source[prop];
2359
- if (source != null && __getOwnPropSymbols$8)
2360
- for (var prop of __getOwnPropSymbols$8(source)) {
2361
- if (exclude.indexOf(prop) < 0 && __propIsEnum$8.call(source, prop))
2361
+ if (source != null && __getOwnPropSymbols$9)
2362
+ for (var prop of __getOwnPropSymbols$9(source)) {
2363
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$9.call(source, prop))
2362
2364
  target[prop] = source[prop];
2363
2365
  }
2364
2366
  return target;
@@ -2430,9 +2432,9 @@ const TenantBanner = (_a) => {
2430
2432
  };
2431
2433
  return /* @__PURE__ */ React__namespace.createElement(
2432
2434
  core.Card,
2433
- __spreadValues$8({
2435
+ __spreadValues$9({
2434
2436
  radius: "md",
2435
- style: __spreadValues$8({ backgroundImage: `url(${image})` }, style),
2437
+ style: __spreadValues$9({ backgroundImage: `url(${image})` }, style),
2436
2438
  className: cx(classes.card, className)
2437
2439
  }, others),
2438
2440
  /* @__PURE__ */ React__namespace.createElement(
@@ -2508,33 +2510,33 @@ const TrialHome = (props) => {
2508
2510
  )), /* @__PURE__ */ React__namespace.createElement(core.Title, { maw: 500, mb: 20, mt: 20, className: classes.title }, "Based on the tags you selected, check out these lessons to get started with your students!"), /* @__PURE__ */ React__namespace.createElement(BadgeGrid, { onAssign: props.onAssign, badges: props.badges })));
2509
2511
  };
2510
2512
 
2511
- var __defProp$7 = Object.defineProperty;
2512
- var __defProps$7 = Object.defineProperties;
2513
- var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;
2514
- var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;
2515
- var __hasOwnProp$7 = Object.prototype.hasOwnProperty;
2516
- var __propIsEnum$7 = Object.prototype.propertyIsEnumerable;
2517
- var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2518
- var __spreadValues$7 = (a, b) => {
2513
+ var __defProp$8 = Object.defineProperty;
2514
+ var __defProps$8 = Object.defineProperties;
2515
+ var __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;
2516
+ var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;
2517
+ var __hasOwnProp$8 = Object.prototype.hasOwnProperty;
2518
+ var __propIsEnum$8 = Object.prototype.propertyIsEnumerable;
2519
+ var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2520
+ var __spreadValues$8 = (a, b) => {
2519
2521
  for (var prop in b || (b = {}))
2520
- if (__hasOwnProp$7.call(b, prop))
2521
- __defNormalProp$7(a, prop, b[prop]);
2522
- if (__getOwnPropSymbols$7)
2523
- for (var prop of __getOwnPropSymbols$7(b)) {
2524
- if (__propIsEnum$7.call(b, prop))
2525
- __defNormalProp$7(a, prop, b[prop]);
2522
+ if (__hasOwnProp$8.call(b, prop))
2523
+ __defNormalProp$8(a, prop, b[prop]);
2524
+ if (__getOwnPropSymbols$8)
2525
+ for (var prop of __getOwnPropSymbols$8(b)) {
2526
+ if (__propIsEnum$8.call(b, prop))
2527
+ __defNormalProp$8(a, prop, b[prop]);
2526
2528
  }
2527
2529
  return a;
2528
2530
  };
2529
- var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
2531
+ var __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));
2530
2532
  var __objRest = (source, exclude) => {
2531
2533
  var target = {};
2532
2534
  for (var prop in source)
2533
- if (__hasOwnProp$7.call(source, prop) && exclude.indexOf(prop) < 0)
2535
+ if (__hasOwnProp$8.call(source, prop) && exclude.indexOf(prop) < 0)
2534
2536
  target[prop] = source[prop];
2535
- if (source != null && __getOwnPropSymbols$7)
2536
- for (var prop of __getOwnPropSymbols$7(source)) {
2537
- if (exclude.indexOf(prop) < 0 && __propIsEnum$7.call(source, prop))
2537
+ if (source != null && __getOwnPropSymbols$8)
2538
+ for (var prop of __getOwnPropSymbols$8(source)) {
2539
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$8.call(source, prop))
2538
2540
  target[prop] = source[prop];
2539
2541
  }
2540
2542
  return target;
@@ -2584,7 +2586,7 @@ function ImageCheckbox(_a) {
2584
2586
  const { classes, cx } = useStyles$2({ checked: value });
2585
2587
  return /* @__PURE__ */ React__namespace.createElement(
2586
2588
  core.UnstyledButton,
2587
- __spreadProps$7(__spreadValues$7({}, others), {
2589
+ __spreadProps$8(__spreadValues$8({}, others), {
2588
2590
  onClick: () => handleChange(!value),
2589
2591
  className: cx(classes.button, className)
2590
2592
  }),
@@ -2605,7 +2607,7 @@ function ImageCheckbox(_a) {
2605
2607
  function SelectGrid(props) {
2606
2608
  const items = props.items.map((item) => /* @__PURE__ */ React__namespace.createElement(
2607
2609
  ImageCheckbox,
2608
- __spreadProps$7(__spreadValues$7({}, item), {
2610
+ __spreadProps$8(__spreadValues$8({}, item), {
2609
2611
  key: item.title,
2610
2612
  onChange: (checked) => props.onChange(item.title, checked)
2611
2613
  })
@@ -2623,25 +2625,25 @@ function SelectGrid(props) {
2623
2625
  );
2624
2626
  }
2625
2627
 
2626
- var __defProp$6 = Object.defineProperty;
2627
- var __defProps$6 = Object.defineProperties;
2628
- var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;
2629
- var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;
2630
- var __hasOwnProp$6 = Object.prototype.hasOwnProperty;
2631
- var __propIsEnum$6 = Object.prototype.propertyIsEnumerable;
2632
- var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2633
- var __spreadValues$6 = (a, b) => {
2628
+ var __defProp$7 = Object.defineProperty;
2629
+ var __defProps$7 = Object.defineProperties;
2630
+ var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;
2631
+ var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;
2632
+ var __hasOwnProp$7 = Object.prototype.hasOwnProperty;
2633
+ var __propIsEnum$7 = Object.prototype.propertyIsEnumerable;
2634
+ var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2635
+ var __spreadValues$7 = (a, b) => {
2634
2636
  for (var prop in b || (b = {}))
2635
- if (__hasOwnProp$6.call(b, prop))
2636
- __defNormalProp$6(a, prop, b[prop]);
2637
- if (__getOwnPropSymbols$6)
2638
- for (var prop of __getOwnPropSymbols$6(b)) {
2639
- if (__propIsEnum$6.call(b, prop))
2640
- __defNormalProp$6(a, prop, b[prop]);
2637
+ if (__hasOwnProp$7.call(b, prop))
2638
+ __defNormalProp$7(a, prop, b[prop]);
2639
+ if (__getOwnPropSymbols$7)
2640
+ for (var prop of __getOwnPropSymbols$7(b)) {
2641
+ if (__propIsEnum$7.call(b, prop))
2642
+ __defNormalProp$7(a, prop, b[prop]);
2641
2643
  }
2642
2644
  return a;
2643
2645
  };
2644
- var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
2646
+ var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
2645
2647
  const useStyles$1 = core.createStyles((theme) => ({
2646
2648
  wrapper: {
2647
2649
  minHeight: "100%",
@@ -2751,7 +2753,7 @@ const TrialRegistration = (props) => {
2751
2753
  label: "School/Organization Name",
2752
2754
  placeholder: "What's the name of your school?",
2753
2755
  data: props.organizations.map((o) => {
2754
- return __spreadProps$6(__spreadValues$6({}, o), { value: o.displayName });
2756
+ return __spreadProps$7(__spreadValues$7({}, o), { value: o.displayName });
2755
2757
  }),
2756
2758
  onItemSubmit: (item) => setOrganization({ organizationId: item.organizationId, displayName: item.displayName }),
2757
2759
  onChange: (next) => {
@@ -2763,7 +2765,7 @@ const TrialRegistration = (props) => {
2763
2765
  SelectGrid,
2764
2766
  {
2765
2767
  items: OPTIONS,
2766
- onChange: (e, checked) => setInterests(__spreadProps$6(__spreadValues$6({}, interests), { [e]: checked }))
2768
+ onChange: (e, checked) => setInterests(__spreadProps$7(__spreadValues$7({}, interests), { [e]: checked }))
2767
2769
  }
2768
2770
  ), /* @__PURE__ */ React__namespace.createElement(core.Group, { position: "right", mt: "md" }, /* @__PURE__ */ React__namespace.createElement(
2769
2771
  core.Button,
@@ -2801,25 +2803,25 @@ const AdminProvider = (props) => {
2801
2803
  );
2802
2804
  };
2803
2805
 
2804
- var __defProp$5 = Object.defineProperty;
2805
- var __defProps$5 = Object.defineProperties;
2806
- var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;
2807
- var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
2808
- var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
2809
- var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
2810
- var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2811
- var __spreadValues$5 = (a, b) => {
2806
+ var __defProp$6 = Object.defineProperty;
2807
+ var __defProps$6 = Object.defineProperties;
2808
+ var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;
2809
+ var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;
2810
+ var __hasOwnProp$6 = Object.prototype.hasOwnProperty;
2811
+ var __propIsEnum$6 = Object.prototype.propertyIsEnumerable;
2812
+ var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2813
+ var __spreadValues$6 = (a, b) => {
2812
2814
  for (var prop in b || (b = {}))
2813
- if (__hasOwnProp$5.call(b, prop))
2814
- __defNormalProp$5(a, prop, b[prop]);
2815
- if (__getOwnPropSymbols$5)
2816
- for (var prop of __getOwnPropSymbols$5(b)) {
2817
- if (__propIsEnum$5.call(b, prop))
2818
- __defNormalProp$5(a, prop, b[prop]);
2815
+ if (__hasOwnProp$6.call(b, prop))
2816
+ __defNormalProp$6(a, prop, b[prop]);
2817
+ if (__getOwnPropSymbols$6)
2818
+ for (var prop of __getOwnPropSymbols$6(b)) {
2819
+ if (__propIsEnum$6.call(b, prop))
2820
+ __defNormalProp$6(a, prop, b[prop]);
2819
2821
  }
2820
2822
  return a;
2821
2823
  };
2822
- var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
2824
+ var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
2823
2825
  const useStyles = core.createStyles((theme, props) => ({
2824
2826
  footer: {
2825
2827
  paddingTop: theme.spacing.md,
@@ -2915,7 +2917,7 @@ const App = (props) => {
2915
2917
  padding: "xs",
2916
2918
  navbar: props.navbar && /* @__PURE__ */ React__namespace.createElement(
2917
2919
  Navbar,
2918
- __spreadProps$5(__spreadValues$5({}, props.navbar.props), {
2920
+ __spreadProps$6(__spreadValues$6({}, props.navbar.props), {
2919
2921
  onSwitchAccounts: account.accounts && account.accounts.length > 1 ? () => account.setChangeModalOpen(true) : void 0
2920
2922
  })
2921
2923
  ),
@@ -3066,30 +3068,30 @@ function Stack$1(props) {
3066
3068
  return /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-2" }, props.items.map((row) => /* @__PURE__ */ React__namespace.createElement("div", { key: row.badgeName, className: "flex items-center justify-between gap-4 py-1.5" }, /* @__PURE__ */ React__namespace.createElement(reactRouterDom.Link, { to: row.href, className: "text-sm font-bold text-dark-blue-400 no-underline hover:underline" }, row.badgeName), row.completion >= 1 && /* @__PURE__ */ React__namespace.createElement("span", { className: "shrink-0 rounded-full bg-mint-100 px-2.5 py-1 text-[10px] font-bold text-dark-blue-400" }, "Complete"), row.completion === 0 && !row.isStarted && /* @__PURE__ */ React__namespace.createElement("span", { className: "shrink-0 rounded-full bg-slate-100 px-2.5 py-1 text-[10px] font-bold text-slate-500" }, "Not started"), row.completion > 0 && row.completion < 1 && /* @__PURE__ */ React__namespace.createElement("span", { className: "shrink-0 rounded-full bg-gold-100 px-2.5 py-1 text-[10px] font-bold text-dark-blue-400" }, Math.round((row.completion + Number.EPSILON) * 100), "% Complete"))));
3067
3069
  }
3068
3070
 
3069
- var __defProp$4 = Object.defineProperty;
3070
- var __defProps$4 = Object.defineProperties;
3071
- var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
3072
- var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
3073
- var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
3074
- var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
3075
- var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3076
- var __spreadValues$4 = (a, b) => {
3071
+ var __defProp$5 = Object.defineProperty;
3072
+ var __defProps$5 = Object.defineProperties;
3073
+ var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;
3074
+ var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
3075
+ var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
3076
+ var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
3077
+ var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3078
+ var __spreadValues$5 = (a, b) => {
3077
3079
  for (var prop in b || (b = {}))
3078
- if (__hasOwnProp$4.call(b, prop))
3079
- __defNormalProp$4(a, prop, b[prop]);
3080
- if (__getOwnPropSymbols$4)
3081
- for (var prop of __getOwnPropSymbols$4(b)) {
3082
- if (__propIsEnum$4.call(b, prop))
3083
- __defNormalProp$4(a, prop, b[prop]);
3080
+ if (__hasOwnProp$5.call(b, prop))
3081
+ __defNormalProp$5(a, prop, b[prop]);
3082
+ if (__getOwnPropSymbols$5)
3083
+ for (var prop of __getOwnPropSymbols$5(b)) {
3084
+ if (__propIsEnum$5.call(b, prop))
3085
+ __defNormalProp$5(a, prop, b[prop]);
3084
3086
  }
3085
3087
  return a;
3086
3088
  };
3087
- var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
3089
+ var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
3088
3090
  function Table$2(props) {
3089
3091
  const [expanded, setExpanded] = React__namespace.useState({});
3090
3092
  const categories = props.categories || [];
3091
3093
  const preparedItems = React__namespace.useMemo(() => {
3092
- return (props.items || []).map((item) => __spreadValues$4(__spreadValues$4({}, item), item.categoryPoints));
3094
+ return (props.items || []).map((item) => __spreadValues$5(__spreadValues$5({}, item), item.categoryPoints));
3093
3095
  }, [props.items]);
3094
3096
  const { items: sortedItems, requestSort, sortConfig } = useSortableData(preparedItems);
3095
3097
  if (props.loading && props.items.length === 0) {
@@ -3110,7 +3112,7 @@ function Table$2(props) {
3110
3112
  return /* @__PURE__ */ React__namespace.createElement("div", { key: row.userId, className: "rounded-xl border border-slate-200 bg-white shadow-sm" }, /* @__PURE__ */ React__namespace.createElement(
3111
3113
  "div",
3112
3114
  {
3113
- onClick: () => setExpanded(__spreadProps$4(__spreadValues$4({}, expanded), { [row.userId]: !isOpen })),
3115
+ onClick: () => setExpanded(__spreadProps$5(__spreadValues$5({}, expanded), { [row.userId]: !isOpen })),
3114
3116
  className: "flex cursor-pointer items-center gap-4 p-4"
3115
3117
  },
3116
3118
  /* @__PURE__ */ React__namespace.createElement("div", { className: "flex min-w-0 flex-1 items-center gap-3" }, row.avatar ? /* @__PURE__ */ React__namespace.createElement("img", { src: row.avatar, className: "h-9 w-9 shrink-0 rounded-full object-cover", alt: "" }) : /* @__PURE__ */ React__namespace.createElement("div", { className: "flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-mint-400/20 text-xs font-bold text-dark-blue-400" }, initials), /* @__PURE__ */ React__namespace.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "truncate text-sm font-bold text-dark-blue-400" }, row.name), /* @__PURE__ */ React__namespace.createElement("div", { className: "truncate text-xs text-slate-400" }, row.email))),
@@ -3184,25 +3186,25 @@ const CategoryPill = (props) => /* @__PURE__ */ React__namespace.createElement(
3184
3186
  props.label
3185
3187
  );
3186
3188
 
3187
- var __defProp$3 = Object.defineProperty;
3188
- var __defProps$3 = Object.defineProperties;
3189
- var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
3190
- var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
3191
- var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
3192
- var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
3193
- var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3194
- var __spreadValues$3 = (a, b) => {
3189
+ var __defProp$4 = Object.defineProperty;
3190
+ var __defProps$4 = Object.defineProperties;
3191
+ var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
3192
+ var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
3193
+ var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
3194
+ var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
3195
+ var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3196
+ var __spreadValues$4 = (a, b) => {
3195
3197
  for (var prop in b || (b = {}))
3196
- if (__hasOwnProp$3.call(b, prop))
3197
- __defNormalProp$3(a, prop, b[prop]);
3198
- if (__getOwnPropSymbols$3)
3199
- for (var prop of __getOwnPropSymbols$3(b)) {
3200
- if (__propIsEnum$3.call(b, prop))
3201
- __defNormalProp$3(a, prop, b[prop]);
3198
+ if (__hasOwnProp$4.call(b, prop))
3199
+ __defNormalProp$4(a, prop, b[prop]);
3200
+ if (__getOwnPropSymbols$4)
3201
+ for (var prop of __getOwnPropSymbols$4(b)) {
3202
+ if (__propIsEnum$4.call(b, prop))
3203
+ __defNormalProp$4(a, prop, b[prop]);
3202
3204
  }
3203
3205
  return a;
3204
3206
  };
3205
- var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
3207
+ var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
3206
3208
  function buildCategoryTree(categories) {
3207
3209
  const byId = /* @__PURE__ */ new Map();
3208
3210
  categories.forEach((c) => byId.set(c.categoryId, c));
@@ -3221,7 +3223,7 @@ function buildCategoryTree(categories) {
3221
3223
  attached.add(category.categoryId);
3222
3224
  const childAncestry = new Set(ancestry).add(category.categoryId);
3223
3225
  const children = (childrenByParent.get(category.categoryId) || []).filter((child) => !childAncestry.has(child.categoryId)).map((child) => attach(child, childAncestry));
3224
- return __spreadProps$3(__spreadValues$3({}, category), { children });
3226
+ return __spreadProps$4(__spreadValues$4({}, category), { children });
3225
3227
  };
3226
3228
  const roots = categories.filter((c) => {
3227
3229
  const parentId = c.parentCategoryId;
@@ -3271,7 +3273,7 @@ const CategoryNode = (props) => {
3271
3273
  );
3272
3274
  };
3273
3275
 
3274
- const TABS$1 = [
3276
+ const TABS$2 = [
3275
3277
  { label: "By Badge", value: "badges" },
3276
3278
  { label: "By student", value: "students" }
3277
3279
  ];
@@ -3318,7 +3320,7 @@ const Pathway = (props) => {
3318
3320
  },
3319
3321
  /* @__PURE__ */ React__namespace.createElement("option", { value: "" }, "All classes"),
3320
3322
  props.classes.map((c) => /* @__PURE__ */ React__namespace.createElement("option", { key: c.classId, value: c.classId }, c.name))
3321
- )), /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-3" }, !props.trial && /* @__PURE__ */ React__namespace.createElement("div", { className: "flex w-fit gap-1 rounded-xl border border-slate-200 bg-white p-1" }, TABS$1.map((t) => /* @__PURE__ */ React__namespace.createElement(
3323
+ )), /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-3" }, !props.trial && /* @__PURE__ */ React__namespace.createElement("div", { className: "flex w-fit gap-1 rounded-xl border border-slate-200 bg-white p-1" }, TABS$2.map((t) => /* @__PURE__ */ React__namespace.createElement(
3322
3324
  "button",
3323
3325
  {
3324
3326
  key: t.value,
@@ -3384,37 +3386,39 @@ function Stack(props) {
3384
3386
  }));
3385
3387
  }
3386
3388
 
3387
- var __defProp$2 = Object.defineProperty;
3388
- var __defProps$2 = Object.defineProperties;
3389
- var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
3390
- var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
3391
- var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
3392
- var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
3393
- var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3394
- var __spreadValues$2 = (a, b) => {
3389
+ var __defProp$3 = Object.defineProperty;
3390
+ var __defProps$3 = Object.defineProperties;
3391
+ var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
3392
+ var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
3393
+ var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
3394
+ var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
3395
+ var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3396
+ var __spreadValues$3 = (a, b) => {
3395
3397
  for (var prop in b || (b = {}))
3396
- if (__hasOwnProp$2.call(b, prop))
3397
- __defNormalProp$2(a, prop, b[prop]);
3398
- if (__getOwnPropSymbols$2)
3399
- for (var prop of __getOwnPropSymbols$2(b)) {
3400
- if (__propIsEnum$2.call(b, prop))
3401
- __defNormalProp$2(a, prop, b[prop]);
3398
+ if (__hasOwnProp$3.call(b, prop))
3399
+ __defNormalProp$3(a, prop, b[prop]);
3400
+ if (__getOwnPropSymbols$3)
3401
+ for (var prop of __getOwnPropSymbols$3(b)) {
3402
+ if (__propIsEnum$3.call(b, prop))
3403
+ __defNormalProp$3(a, prop, b[prop]);
3402
3404
  }
3403
3405
  return a;
3404
3406
  };
3405
- var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
3406
- const initials$1 = (name) => name.split(" ").map((w) => w[0]).filter(Boolean).slice(0, 2).join("").toUpperCase();
3407
+ var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
3408
+ const initials$2 = (name) => name.split(" ").map((w) => w[0]).filter(Boolean).slice(0, 2).join("").toUpperCase();
3407
3409
  function Table(props) {
3408
3410
  const [expanded, setExpanded] = React__namespace.useState({});
3409
3411
  const preparedItems = React__namespace.useMemo(() => {
3410
3412
  return props.items.map((item) => {
3411
3413
  var _a;
3412
- return __spreadProps$2(__spreadValues$2({}, item), {
3414
+ return __spreadProps$3(__spreadValues$3({}, item), {
3413
3415
  submissionCount: ((_a = item.submissions) == null ? void 0 : _a.length) || 0
3414
3416
  });
3415
3417
  });
3416
3418
  }, [props.items]);
3417
3419
  const { items: sortedItems, requestSort, sortConfig } = useSortableData(preparedItems);
3420
+ const showActions = !!props.onReview || !!props.onComment;
3421
+ const actionsWidthClass = props.onReview && props.onComment ? "w-64" : "w-36";
3418
3422
  if (props.items.length === 0) {
3419
3423
  return /* @__PURE__ */ React__namespace.createElement(
3420
3424
  PlaceholderBanner,
@@ -3426,17 +3430,17 @@ function Table(props) {
3426
3430
  }
3427
3431
  );
3428
3432
  }
3429
- return /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "flex items-center gap-4 px-4" }, /* @__PURE__ */ React__namespace.createElement(SortableHeader, { label: "Student Name", sortKey: "name", sortConfig, onSort: requestSort, className: "flex-1" }), /* @__PURE__ */ React__namespace.createElement(SortableHeader, { label: "Files", sortKey: "submissionCount", sortConfig, onSort: requestSort, className: "w-16 shrink-0" }), props.onReview && /* @__PURE__ */ React__namespace.createElement("div", { className: "w-36 shrink-0" }), /* @__PURE__ */ React__namespace.createElement("div", { className: "w-4 shrink-0" })), sortedItems.map((row) => {
3433
+ return /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "flex items-center gap-4 px-4" }, /* @__PURE__ */ React__namespace.createElement(SortableHeader, { label: "Student Name", sortKey: "name", sortConfig, onSort: requestSort, className: "flex-1" }), /* @__PURE__ */ React__namespace.createElement(SortableHeader, { label: "Files", sortKey: "submissionCount", sortConfig, onSort: requestSort, className: "w-16 shrink-0" }), showActions && /* @__PURE__ */ React__namespace.createElement("div", { className: `${actionsWidthClass} shrink-0` }), /* @__PURE__ */ React__namespace.createElement("div", { className: "w-4 shrink-0" })), sortedItems.map((row) => {
3430
3434
  const isOpen = !!expanded[row.userId];
3431
3435
  return /* @__PURE__ */ React__namespace.createElement("div", { key: row.userId, className: "rounded-xl border border-slate-200 bg-white shadow-sm" }, /* @__PURE__ */ React__namespace.createElement(
3432
3436
  "div",
3433
3437
  {
3434
- onClick: () => setExpanded(__spreadProps$2(__spreadValues$2({}, expanded), { [row.userId]: !isOpen })),
3438
+ onClick: () => setExpanded(__spreadProps$3(__spreadValues$3({}, expanded), { [row.userId]: !isOpen })),
3435
3439
  className: "flex cursor-pointer items-center gap-4 p-4"
3436
3440
  },
3437
- /* @__PURE__ */ React__namespace.createElement("div", { className: "flex min-w-0 flex-1 items-center gap-3" }, row.avatar ? /* @__PURE__ */ React__namespace.createElement("img", { src: row.avatar, className: "h-9 w-9 shrink-0 rounded-full object-cover", alt: "" }) : /* @__PURE__ */ React__namespace.createElement("div", { className: "flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-gradient-to-br from-mint-400 to-dark-blue-400 text-xs font-bold text-white" }, initials$1(row.name)), /* @__PURE__ */ React__namespace.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "truncate text-sm font-bold text-dark-blue-400" }, row.name), /* @__PURE__ */ React__namespace.createElement("div", { className: "truncate text-xs text-slate-400" }, row.email))),
3441
+ /* @__PURE__ */ React__namespace.createElement("div", { className: "flex min-w-0 flex-1 items-center gap-3" }, row.avatar ? /* @__PURE__ */ React__namespace.createElement("img", { src: row.avatar, className: "h-9 w-9 shrink-0 rounded-full object-cover", alt: "" }) : /* @__PURE__ */ React__namespace.createElement("div", { className: "flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-gradient-to-br from-mint-400 to-dark-blue-400 text-xs font-bold text-white" }, initials$2(row.name)), /* @__PURE__ */ React__namespace.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "truncate text-sm font-bold text-dark-blue-400" }, row.name), /* @__PURE__ */ React__namespace.createElement("div", { className: "truncate text-xs text-slate-400" }, row.email))),
3438
3442
  /* @__PURE__ */ React__namespace.createElement("div", { className: "w-16 shrink-0 text-sm font-bold text-dark-blue-400" }, row.submissions.length),
3439
- props.onReview && /* @__PURE__ */ React__namespace.createElement("div", { className: "w-36 shrink-0" }, /* @__PURE__ */ React__namespace.createElement(
3443
+ showActions && /* @__PURE__ */ React__namespace.createElement("div", { className: `flex ${actionsWidthClass} shrink-0 gap-2` }, props.onReview && /* @__PURE__ */ React__namespace.createElement(
3440
3444
  "button",
3441
3445
  {
3442
3446
  onClick: (e) => {
@@ -3446,6 +3450,16 @@ function Table(props) {
3446
3450
  className: "rounded-lg bg-gradient-to-r from-gold-400 to-[#f5c300] px-3 py-1.5 text-[11px] font-extrabold text-dark-blue-400"
3447
3451
  },
3448
3452
  "Review Submission"
3453
+ ), props.onComment && /* @__PURE__ */ React__namespace.createElement(
3454
+ "button",
3455
+ {
3456
+ onClick: (e) => {
3457
+ e.stopPropagation();
3458
+ props.onComment(row);
3459
+ },
3460
+ className: "rounded-lg border border-slate-200 bg-white px-3 py-1.5 text-[11px] font-extrabold text-dark-blue-400 hover:bg-slate-50"
3461
+ },
3462
+ "Comment"
3449
3463
  )),
3450
3464
  /* @__PURE__ */ React__namespace.createElement(icons.IconChevronRight, { size: 16, stroke: 2, className: `w-4 shrink-0 text-slate-300 transition-transform ${isOpen ? "rotate-90" : ""}` })
3451
3465
  ), isOpen && /* @__PURE__ */ React__namespace.createElement("div", { className: "border-t border-slate-100 px-4 py-3" }, /* @__PURE__ */ React__namespace.createElement(
@@ -3463,10 +3477,10 @@ function Table(props) {
3463
3477
  }));
3464
3478
  }
3465
3479
 
3466
- const initials = (name) => name.split(" ").map((w) => w[0]).filter(Boolean).slice(0, 2).join("").toUpperCase();
3480
+ const initials$1 = (name) => name.split(" ").map((w) => w[0]).filter(Boolean).slice(0, 2).join("").toUpperCase();
3467
3481
  function SubmissionDetail(props) {
3468
3482
  const { student } = props;
3469
- return /* @__PURE__ */ React__namespace.createElement("div", { className: "flex w-full flex-col gap-4 px-4 py-8" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "flex items-center gap-2 text-xs text-slate-400" }, /* @__PURE__ */ React__namespace.createElement("button", { onClick: props.onBack, className: "font-bold text-sky-blue-400 hover:underline" }, "File Locker"), /* @__PURE__ */ React__namespace.createElement("span", null, "/"), /* @__PURE__ */ React__namespace.createElement("span", { className: "font-bold text-dark-blue-400" }, student.name)), /* @__PURE__ */ React__namespace.createElement("div", { className: "flex items-center gap-4 rounded-2xl border border-slate-200 bg-white p-5 shadow-sm" }, student.avatar ? /* @__PURE__ */ React__namespace.createElement("img", { src: student.avatar, className: "h-12 w-12 shrink-0 rounded-full object-cover", alt: "" }) : /* @__PURE__ */ React__namespace.createElement("div", { className: "flex h-12 w-12 shrink-0 items-center justify-center rounded-full bg-gradient-to-br from-mint-400 to-dark-blue-400 text-sm font-bold text-white" }, initials(student.name)), /* @__PURE__ */ React__namespace.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "text-lg font-extrabold text-dark-blue-400" }, student.name), /* @__PURE__ */ React__namespace.createElement("div", { className: "mt-0.5 text-xs text-slate-400" }, student.email, props.context ? ` \xB7 ${props.context}` : "")), /* @__PURE__ */ React__namespace.createElement("div", { className: "shrink-0 rounded-full bg-slate-100 px-3 py-1 text-xs font-bold text-slate-500" }, student.submissions.length, " file", student.submissions.length === 1 ? "" : "s")), /* @__PURE__ */ React__namespace.createElement("div", { className: "rounded-2xl border border-slate-200 bg-white p-5 shadow-sm" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "text-sm font-extrabold text-dark-blue-400" }, "Files"), /* @__PURE__ */ React__namespace.createElement("div", { className: "mt-2" }, /* @__PURE__ */ React__namespace.createElement(
3483
+ return /* @__PURE__ */ React__namespace.createElement("div", { className: "flex w-full flex-col gap-4 px-4 py-8" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "flex items-center gap-2 text-xs text-slate-400" }, /* @__PURE__ */ React__namespace.createElement("button", { onClick: props.onBack, className: "font-bold text-sky-blue-400 hover:underline" }, "File Locker"), /* @__PURE__ */ React__namespace.createElement("span", null, "/"), /* @__PURE__ */ React__namespace.createElement("span", { className: "font-bold text-dark-blue-400" }, student.name)), /* @__PURE__ */ React__namespace.createElement("div", { className: "flex items-center gap-4 rounded-2xl border border-slate-200 bg-white p-5 shadow-sm" }, student.avatar ? /* @__PURE__ */ React__namespace.createElement("img", { src: student.avatar, className: "h-12 w-12 shrink-0 rounded-full object-cover", alt: "" }) : /* @__PURE__ */ React__namespace.createElement("div", { className: "flex h-12 w-12 shrink-0 items-center justify-center rounded-full bg-gradient-to-br from-mint-400 to-dark-blue-400 text-sm font-bold text-white" }, initials$1(student.name)), /* @__PURE__ */ React__namespace.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "text-lg font-extrabold text-dark-blue-400" }, student.name), /* @__PURE__ */ React__namespace.createElement("div", { className: "mt-0.5 text-xs text-slate-400" }, student.email, props.context ? ` \xB7 ${props.context}` : "")), /* @__PURE__ */ React__namespace.createElement("div", { className: "shrink-0 rounded-full bg-slate-100 px-3 py-1 text-xs font-bold text-slate-500" }, student.submissions.length, " file", student.submissions.length === 1 ? "" : "s")), /* @__PURE__ */ React__namespace.createElement("div", { className: "rounded-2xl border border-slate-200 bg-white p-5 shadow-sm" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "text-sm font-extrabold text-dark-blue-400" }, "Files"), /* @__PURE__ */ React__namespace.createElement("div", { className: "mt-2" }, /* @__PURE__ */ React__namespace.createElement(
3470
3484
  Stack,
3471
3485
  {
3472
3486
  items: student.submissions,
@@ -3493,33 +3507,33 @@ function SubmissionDetail(props) {
3493
3507
  )));
3494
3508
  }
3495
3509
 
3496
- var __defProp$1 = Object.defineProperty;
3497
- var __defProps$1 = Object.defineProperties;
3498
- var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
3499
- var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
3500
- var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
3501
- var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
3502
- var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3503
- var __spreadValues$1 = (a, b) => {
3510
+ var __defProp$2 = Object.defineProperty;
3511
+ var __defProps$2 = Object.defineProperties;
3512
+ var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
3513
+ var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
3514
+ var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
3515
+ var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
3516
+ var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3517
+ var __spreadValues$2 = (a, b) => {
3504
3518
  for (var prop in b || (b = {}))
3505
- if (__hasOwnProp$1.call(b, prop))
3506
- __defNormalProp$1(a, prop, b[prop]);
3507
- if (__getOwnPropSymbols$1)
3508
- for (var prop of __getOwnPropSymbols$1(b)) {
3509
- if (__propIsEnum$1.call(b, prop))
3510
- __defNormalProp$1(a, prop, b[prop]);
3519
+ if (__hasOwnProp$2.call(b, prop))
3520
+ __defNormalProp$2(a, prop, b[prop]);
3521
+ if (__getOwnPropSymbols$2)
3522
+ for (var prop of __getOwnPropSymbols$2(b)) {
3523
+ if (__propIsEnum$2.call(b, prop))
3524
+ __defNormalProp$2(a, prop, b[prop]);
3511
3525
  }
3512
3526
  return a;
3513
3527
  };
3514
- var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
3528
+ var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
3515
3529
  const useFilteredStudents = (students) => {
3516
3530
  return React__namespace.useMemo(() => {
3517
- const byBadge = (badgeId) => students.map((s) => __spreadProps$1(__spreadValues$1({}, s), {
3531
+ const byBadge = (badgeId) => students.map((s) => __spreadProps$2(__spreadValues$2({}, s), {
3518
3532
  submissions: (s.submissions || []).filter(
3519
3533
  (sub) => sub.badgeId === badgeId
3520
3534
  )
3521
3535
  })).filter((s) => s.submissions.length);
3522
- const byLesson = (lessonName) => students.map((s) => __spreadProps$1(__spreadValues$1({}, s), {
3536
+ const byLesson = (lessonName) => students.map((s) => __spreadProps$2(__spreadValues$2({}, s), {
3523
3537
  submissions: (s.submissions || []).filter(
3524
3538
  (sub) => sub.lessonName === lessonName
3525
3539
  )
@@ -3530,7 +3544,7 @@ const useFilteredStudents = (students) => {
3530
3544
  (c) => c.startsWith(pathwayId)
3531
3545
  )
3532
3546
  ).map((b) => b.badgeId);
3533
- return students.map((s) => __spreadProps$1(__spreadValues$1({}, s), {
3547
+ return students.map((s) => __spreadProps$2(__spreadValues$2({}, s), {
3534
3548
  submissions: (s.submissions || []).filter(
3535
3549
  (sub) => validBadgeIds.includes(sub.badgeId)
3536
3550
  )
@@ -3540,26 +3554,108 @@ const useFilteredStudents = (students) => {
3540
3554
  }, [students]);
3541
3555
  };
3542
3556
 
3543
- var __defProp = Object.defineProperty;
3544
- var __defProps = Object.defineProperties;
3545
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
3546
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3547
- var __hasOwnProp = Object.prototype.hasOwnProperty;
3548
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
3549
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3550
- var __spreadValues = (a, b) => {
3557
+ const TARGETS = [
3558
+ { value: "none", label: "General" },
3559
+ { value: "badge", label: "Badge" },
3560
+ { value: "lesson", label: "Lesson" }
3561
+ ];
3562
+ const inputClass = "w-full rounded-xl border border-slate-200 bg-white px-3.5 py-2.5 text-sm text-dark-blue-400 focus:border-sky-blue-400 focus:outline-none";
3563
+ function LeaveCommentModal(props) {
3564
+ const [userId, setUserId] = React__namespace.useState("");
3565
+ const [target, setTarget] = React__namespace.useState("none");
3566
+ const [badgeId, setBadgeId] = React__namespace.useState("");
3567
+ const [lessonId, setLessonId] = React__namespace.useState("");
3568
+ const [commentText, setCommentText] = React__namespace.useState("");
3569
+ const [requireValidation, setRequireValidation] = React__namespace.useState(false);
3570
+ React__namespace.useEffect(() => {
3571
+ if (!props.opened)
3572
+ return;
3573
+ setUserId(props.initialUserId || "");
3574
+ setBadgeId(props.initialBadgeId || "");
3575
+ setLessonId(props.initialLessonId || "");
3576
+ setTarget(props.initialBadgeId ? "badge" : props.initialLessonId ? "lesson" : "none");
3577
+ setCommentText("");
3578
+ setRequireValidation(false);
3579
+ }, [props.opened, props.initialUserId, props.initialBadgeId, props.initialLessonId]);
3580
+ const canSubmit = !!userId && !!commentText.trim() && (target !== "badge" || !!badgeId) && (target !== "lesson" || !!lessonId);
3581
+ const onSubmit = (e) => {
3582
+ e.preventDefault();
3583
+ if (!canSubmit)
3584
+ return;
3585
+ props.onSubmit({
3586
+ userId,
3587
+ commentText: commentText.trim(),
3588
+ requireValidation: target === "badge" && requireValidation,
3589
+ badgeId: target === "badge" ? badgeId : void 0,
3590
+ lessonId: target === "lesson" ? lessonId : void 0
3591
+ });
3592
+ };
3593
+ return /* @__PURE__ */ React__namespace.createElement(
3594
+ core.Modal,
3595
+ {
3596
+ opened: props.opened,
3597
+ onClose: props.onClose,
3598
+ title: /* @__PURE__ */ React__namespace.createElement("span", { className: "text-base font-extrabold text-dark-blue-400" }, "Leave a Comment"),
3599
+ size: "md",
3600
+ centered: true
3601
+ },
3602
+ /* @__PURE__ */ React__namespace.createElement("form", { onSubmit, className: "flex flex-col gap-3.5" }, !props.hideStudentPicker && /* @__PURE__ */ React__namespace.createElement("div", null, /* @__PURE__ */ React__namespace.createElement("label", { className: "mb-1 block text-xs font-bold text-slate-500" }, "Student"), /* @__PURE__ */ React__namespace.createElement("select", { value: userId, onChange: (e) => setUserId(e.target.value), className: inputClass }, /* @__PURE__ */ React__namespace.createElement("option", { value: "" }, "Select a student"), props.students.map((s) => /* @__PURE__ */ React__namespace.createElement("option", { key: s.userId, value: s.userId }, s.email ? `${s.name} (${s.email})` : s.name)))), /* @__PURE__ */ React__namespace.createElement("div", null, /* @__PURE__ */ React__namespace.createElement("label", { className: "mb-1 block text-xs font-bold text-slate-500" }, "Leave this comment on"), /* @__PURE__ */ React__namespace.createElement("div", { className: "flex w-fit gap-1 rounded-xl border border-slate-200 bg-white p-1" }, TARGETS.map((t) => /* @__PURE__ */ React__namespace.createElement(
3603
+ "button",
3604
+ {
3605
+ key: t.value,
3606
+ type: "button",
3607
+ onClick: () => setTarget(t.value),
3608
+ className: `rounded-lg px-4 py-2 text-xs font-bold ${target === t.value ? "bg-sky-blue-400/20 text-dark-blue-400" : "text-slate-400 hover:text-slate-600"}`
3609
+ },
3610
+ t.label
3611
+ )))), target === "badge" && /* @__PURE__ */ React__namespace.createElement("div", null, /* @__PURE__ */ React__namespace.createElement("label", { className: "mb-1 block text-xs font-bold text-slate-500" }, "Badge"), /* @__PURE__ */ React__namespace.createElement("select", { value: badgeId, onChange: (e) => setBadgeId(e.target.value), className: inputClass }, /* @__PURE__ */ React__namespace.createElement("option", { value: "" }, "Select a badge"), props.badges.map((b) => /* @__PURE__ */ React__namespace.createElement("option", { key: b.badgeId, value: b.badgeId }, b.displayName)))), target === "lesson" && /* @__PURE__ */ React__namespace.createElement("div", null, /* @__PURE__ */ React__namespace.createElement("label", { className: "mb-1 block text-xs font-bold text-slate-500" }, "Lesson"), /* @__PURE__ */ React__namespace.createElement("select", { value: lessonId, onChange: (e) => setLessonId(e.target.value), className: inputClass }, /* @__PURE__ */ React__namespace.createElement("option", { value: "" }, "Select a lesson"), props.lessons.map((l) => /* @__PURE__ */ React__namespace.createElement("option", { key: l.lessonId, value: l.lessonId }, l.displayName)))), /* @__PURE__ */ React__namespace.createElement("div", null, /* @__PURE__ */ React__namespace.createElement("label", { className: "mb-1 block text-xs font-bold text-slate-500" }, "Comment"), /* @__PURE__ */ React__namespace.createElement(
3612
+ "textarea",
3613
+ {
3614
+ value: commentText,
3615
+ onChange: (e) => setCommentText(e.target.value),
3616
+ placeholder: "Leave a comment...",
3617
+ rows: 4,
3618
+ className: `${inputClass} resize-none`
3619
+ }
3620
+ )), target === "badge" && !!badgeId && /* @__PURE__ */ React__namespace.createElement(
3621
+ core.Checkbox,
3622
+ {
3623
+ checked: requireValidation,
3624
+ onChange: (e) => setRequireValidation(e.currentTarget.checked),
3625
+ label: "Requires validation - unsubmits this badge until the comment is resolved"
3626
+ }
3627
+ ), /* @__PURE__ */ React__namespace.createElement(
3628
+ "button",
3629
+ {
3630
+ type: "submit",
3631
+ disabled: !canSubmit,
3632
+ className: "mt-1 rounded-lg bg-dark-blue-400 px-4 py-2.5 text-xs font-bold text-white disabled:opacity-40"
3633
+ },
3634
+ "Leave Comment"
3635
+ ))
3636
+ );
3637
+ }
3638
+
3639
+ var __defProp$1 = Object.defineProperty;
3640
+ var __defProps$1 = Object.defineProperties;
3641
+ var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
3642
+ var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
3643
+ var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
3644
+ var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
3645
+ var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3646
+ var __spreadValues$1 = (a, b) => {
3551
3647
  for (var prop in b || (b = {}))
3552
- if (__hasOwnProp.call(b, prop))
3553
- __defNormalProp(a, prop, b[prop]);
3554
- if (__getOwnPropSymbols)
3555
- for (var prop of __getOwnPropSymbols(b)) {
3556
- if (__propIsEnum.call(b, prop))
3557
- __defNormalProp(a, prop, b[prop]);
3648
+ if (__hasOwnProp$1.call(b, prop))
3649
+ __defNormalProp$1(a, prop, b[prop]);
3650
+ if (__getOwnPropSymbols$1)
3651
+ for (var prop of __getOwnPropSymbols$1(b)) {
3652
+ if (__propIsEnum$1.call(b, prop))
3653
+ __defNormalProp$1(a, prop, b[prop]);
3558
3654
  }
3559
3655
  return a;
3560
3656
  };
3561
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
3562
- const TABS = [
3657
+ var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
3658
+ const TABS$1 = [
3563
3659
  { value: "students", label: "By student" },
3564
3660
  { value: "pathways", label: "By pathway" },
3565
3661
  { value: "badges", label: "By badge" },
@@ -3625,6 +3721,7 @@ const PathwayGroups = (props) => {
3625
3721
  items: filtered,
3626
3722
  hidePathway: true,
3627
3723
  onReview: (item) => props.onReview(item, filtered, p.title),
3724
+ onComment: props.onComment,
3628
3725
  onBadgeClick: props.onBadgeClick,
3629
3726
  onLessonClick: props.onLessonClick
3630
3727
  }
@@ -3662,6 +3759,7 @@ const BadgeGroups = (props) => {
3662
3759
  hideBadge: true,
3663
3760
  hidePathway: true,
3664
3761
  onReview: (item) => props.onReview(item, filtered, b.displayName),
3762
+ onComment: props.onComment,
3665
3763
  onLessonClick: props.onLessonClick
3666
3764
  }
3667
3765
  )
@@ -3693,11 +3791,12 @@ const LessonGroups = (props) => {
3693
3791
  count: countFiles(filtered),
3694
3792
  onTitleClick: props.onLessonClick ? () => props.onLessonClick(l.lessonId) : void 0
3695
3793
  },
3696
- /* @__PURE__ */ React__namespace.createElement(Table, { loading: props.loading, items: filtered, hideBadge: true, hideLesson: true, hidePathway: true, onReview: (item) => props.onReview(item, filtered, l.lessonName) })
3794
+ /* @__PURE__ */ React__namespace.createElement(Table, { loading: props.loading, items: filtered, hideBadge: true, hideLesson: true, hidePathway: true, onReview: (item) => props.onReview(item, filtered, l.lessonName), onComment: props.onComment })
3697
3795
  );
3698
3796
  }));
3699
3797
  };
3700
3798
  const FileLocker = (props) => {
3799
+ var _a;
3701
3800
  const [tab, setTab] = React__namespace.useState("students");
3702
3801
  const [reviewing, setReviewing] = React__namespace.useState(null);
3703
3802
  const [search, setSearch] = React__namespace.useState("");
@@ -3756,8 +3855,8 @@ const FileLocker = (props) => {
3756
3855
  return map;
3757
3856
  }, [props.badges]);
3758
3857
  const enrichedStudents = React__namespace.useMemo(() => {
3759
- return props.students.map((s) => __spreadProps(__spreadValues({}, s), {
3760
- submissions: (s.submissions || []).map((sub) => __spreadProps(__spreadValues({}, sub), {
3858
+ return props.students.map((s) => __spreadProps$1(__spreadValues$1({}, s), {
3859
+ submissions: (s.submissions || []).map((sub) => __spreadProps$1(__spreadValues$1({}, sub), {
3761
3860
  pathwayName: pathwayNameForBadge[sub.badgeId] || "",
3762
3861
  pathwayId: pathwayIdForBadge[sub.badgeId]
3763
3862
  }))
@@ -3774,7 +3873,18 @@ const FileLocker = (props) => {
3774
3873
  () => searchLower ? enrichedStudents.filter((s) => matchesSearch(s, searchLower)) : enrichedStudents,
3775
3874
  [enrichedStudents, searchLower]
3776
3875
  );
3876
+ const [commenting, setCommenting] = React__namespace.useState(null);
3777
3877
  const onReview = (item, list, context) => setReviewing({ student: item, list, context });
3878
+ const onCommentClick = (item) => {
3879
+ var _a2;
3880
+ const sub = (_a2 = item.submissions) == null ? void 0 : _a2[0];
3881
+ setCommenting({ userId: item.userId, badgeId: sub == null ? void 0 : sub.badgeId, lessonId: sub == null ? void 0 : sub.lessonId });
3882
+ };
3883
+ const onCommentSubmit = (comment) => {
3884
+ var _a2;
3885
+ (_a2 = props.onComment) == null ? void 0 : _a2.call(props, comment);
3886
+ setCommenting(null);
3887
+ };
3778
3888
  const onNav = (dir) => {
3779
3889
  if (!reviewing)
3780
3890
  return;
@@ -3782,7 +3892,7 @@ const FileLocker = (props) => {
3782
3892
  if (idx === -1)
3783
3893
  return;
3784
3894
  const next = reviewing.list[(idx + dir + reviewing.list.length) % reviewing.list.length];
3785
- setReviewing(__spreadProps(__spreadValues({}, reviewing), { student: next }));
3895
+ setReviewing(__spreadProps$1(__spreadValues$1({}, reviewing), { student: next }));
3786
3896
  };
3787
3897
  if (reviewing) {
3788
3898
  return /* @__PURE__ */ React__namespace.createElement(
@@ -3813,7 +3923,7 @@ const FileLocker = (props) => {
3813
3923
  },
3814
3924
  /* @__PURE__ */ React__namespace.createElement("option", { value: "" }, "Select a class"),
3815
3925
  props.classes.map((g) => /* @__PURE__ */ React__namespace.createElement("option", { key: g.classId, value: g.classId }, g.name))
3816
- ), !props.trial && /* @__PURE__ */ React__namespace.createElement("div", { className: "flex w-fit gap-1 rounded-xl border border-slate-200 bg-white p-1" }, TABS.map((t) => /* @__PURE__ */ React__namespace.createElement(
3926
+ ), !props.trial && /* @__PURE__ */ React__namespace.createElement("div", { className: "flex w-fit gap-1 rounded-xl border border-slate-200 bg-white p-1" }, TABS$1.map((t) => /* @__PURE__ */ React__namespace.createElement(
3817
3927
  "button",
3818
3928
  {
3819
3929
  key: t.value,
@@ -3836,6 +3946,7 @@ const FileLocker = (props) => {
3836
3946
  loading: props.loading,
3837
3947
  items: searchedStudents,
3838
3948
  onReview: (item) => onReview(item, searchedStudents),
3949
+ onComment: onCommentClick,
3839
3950
  onBadgeClick: props.onBadgeClick,
3840
3951
  onLessonClick: props.onLessonClick,
3841
3952
  onPathwayClick: props.onPathwayClick
@@ -3849,6 +3960,7 @@ const FileLocker = (props) => {
3849
3960
  pathways: props.pathways || [],
3850
3961
  badges: props.badges || [],
3851
3962
  onReview,
3963
+ onComment: onCommentClick,
3852
3964
  onBadgeClick: props.onBadgeClick,
3853
3965
  onLessonClick: props.onLessonClick,
3854
3966
  onPathwayClick: props.onPathwayClick
@@ -3862,6 +3974,7 @@ const FileLocker = (props) => {
3862
3974
  badges: props.badges || [],
3863
3975
  pathwayNameForBadge,
3864
3976
  onReview,
3977
+ onComment: onCommentClick,
3865
3978
  onBadgeClick: props.onBadgeClick,
3866
3979
  onLessonClick: props.onLessonClick,
3867
3980
  onPathwayClick: props.onPathwayClick
@@ -3876,13 +3989,224 @@ const FileLocker = (props) => {
3876
3989
  badgeForLesson,
3877
3990
  pathwayNameForBadge,
3878
3991
  onReview,
3992
+ onComment: onCommentClick,
3879
3993
  onBadgeClick: props.onBadgeClick,
3880
3994
  onLessonClick: props.onLessonClick,
3881
3995
  onPathwayClick: props.onPathwayClick
3882
3996
  }
3997
+ ), /* @__PURE__ */ React__namespace.createElement(
3998
+ LeaveCommentModal,
3999
+ {
4000
+ opened: !!commenting,
4001
+ onClose: () => setCommenting(null),
4002
+ onSubmit: onCommentSubmit,
4003
+ hideStudentPicker: true,
4004
+ students: [],
4005
+ badges: ((_a = props.badges) == null ? void 0 : _a.map((b) => ({ badgeId: b.badgeId, displayName: b.displayName }))) || [],
4006
+ lessons: props.lessons.map((l) => ({ lessonId: l.lessonId, displayName: l.lessonName })),
4007
+ initialUserId: commenting == null ? void 0 : commenting.userId,
4008
+ initialBadgeId: commenting == null ? void 0 : commenting.badgeId,
4009
+ initialLessonId: commenting == null ? void 0 : commenting.lessonId
4010
+ }
3883
4011
  ));
3884
4012
  };
3885
4013
 
4014
+ const TABS = [
4015
+ { value: "students", label: "By student" },
4016
+ { value: "badges", label: "By badge" },
4017
+ { value: "lessons", label: "By lesson" }
4018
+ ];
4019
+ const groupBy = (items, keyOf, titleOf) => {
4020
+ const order = [];
4021
+ const map = /* @__PURE__ */ new Map();
4022
+ items.forEach((item) => {
4023
+ const key = keyOf(item);
4024
+ if (!key)
4025
+ return;
4026
+ if (!map.has(key)) {
4027
+ map.set(key, { key, title: titleOf(item), items: [] });
4028
+ order.push(key);
4029
+ }
4030
+ map.get(key).items.push(item);
4031
+ });
4032
+ return order.map((key) => map.get(key));
4033
+ };
4034
+ const CommentCenter = (props) => {
4035
+ const [tab, setTab] = React__namespace.useState("students");
4036
+ const [leavingComment, setLeavingComment] = React__namespace.useState(false);
4037
+ const groups = React__namespace.useMemo(() => {
4038
+ if (tab === "students")
4039
+ return groupBy(props.comments, (i) => i.recipientId, (i) => i.recipientName);
4040
+ if (tab === "badges")
4041
+ return groupBy(props.comments, (i) => i.badgeId, (i) => i.badgeName || "Badge");
4042
+ return groupBy(props.comments, (i) => i.lessonId, (i) => i.lessonName || "Lesson");
4043
+ }, [props.comments, tab]);
4044
+ return /* @__PURE__ */ React__namespace.createElement("div", { className: "flex w-full flex-col gap-5 px-4 py-8" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ React__namespace.createElement("div", null, /* @__PURE__ */ React__namespace.createElement("h1", { className: "text-2xl font-extrabold tracking-tight text-dark-blue-400" }, "Comment Center"), /* @__PURE__ */ React__namespace.createElement("p", { className: "mt-1 text-sm text-slate-500" }, "Every comment left across your organization.")), /* @__PURE__ */ React__namespace.createElement(
4045
+ "button",
4046
+ {
4047
+ onClick: () => setLeavingComment(true),
4048
+ className: "rounded-lg bg-dark-blue-400 px-4 py-2.5 text-xs font-bold text-white"
4049
+ },
4050
+ "Leave a Comment"
4051
+ )), /* @__PURE__ */ React__namespace.createElement(
4052
+ "select",
4053
+ {
4054
+ value: props.classId,
4055
+ onChange: (e) => props.onClassChange(e.target.value),
4056
+ className: "w-64 rounded-xl border border-slate-200 bg-white px-3.5 py-2.5 text-sm text-dark-blue-400 focus:border-sky-blue-400 focus:outline-none"
4057
+ },
4058
+ /* @__PURE__ */ React__namespace.createElement("option", { value: "" }, "Select a class"),
4059
+ props.classes.map((c) => /* @__PURE__ */ React__namespace.createElement("option", { key: c.classId, value: c.classId }, c.name))
4060
+ ), /* @__PURE__ */ React__namespace.createElement("div", { className: "flex w-fit gap-1 rounded-xl border border-slate-200 bg-white p-1" }, TABS.map((t) => /* @__PURE__ */ React__namespace.createElement(
4061
+ "button",
4062
+ {
4063
+ key: t.value,
4064
+ onClick: () => setTab(t.value),
4065
+ className: `rounded-lg px-4 py-2 text-xs font-bold ${tab === t.value ? "bg-sky-blue-400/20 text-dark-blue-400" : "text-slate-400 hover:text-slate-600"}`
4066
+ },
4067
+ t.label
4068
+ ))), props.comments.length === 0 ? /* @__PURE__ */ React__namespace.createElement(
4069
+ PlaceholderBanner,
4070
+ {
4071
+ title: "No comments to display",
4072
+ description: "Nothing has been left for this organization yet.",
4073
+ loading: props.loading,
4074
+ icon: "thinking"
4075
+ }
4076
+ ) : /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "grid grid-cols-[1.3fr_1.3fr_2fr_1fr_1fr] items-center gap-3 px-5 text-[10.5px] font-extrabold uppercase tracking-wide text-slate-400" }, /* @__PURE__ */ React__namespace.createElement("div", null, tab === "students" ? "Badge / Lesson" : "Student"), /* @__PURE__ */ React__namespace.createElement("div", null, "Left By"), /* @__PURE__ */ React__namespace.createElement("div", null, "Comment"), /* @__PURE__ */ React__namespace.createElement("div", { className: "text-center" }, "Flag"), /* @__PURE__ */ React__namespace.createElement("div", { className: "text-center" }, "Status")), groups.map((group) => /* @__PURE__ */ React__namespace.createElement("div", { key: group.key, className: "overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "border-b border-slate-100 bg-slate-50/60 px-5 py-2.5 text-xs font-extrabold text-dark-blue-400" }, group.title), group.items.map((item, i) => /* @__PURE__ */ React__namespace.createElement(
4077
+ "div",
4078
+ {
4079
+ key: item.commentId,
4080
+ className: `grid grid-cols-[1.3fr_1.3fr_2fr_1fr_1fr] items-center gap-3 px-5 py-3.5 ${i < group.items.length - 1 ? "border-b border-slate-100" : ""}`
4081
+ },
4082
+ /* @__PURE__ */ React__namespace.createElement("div", { className: "truncate text-xs font-bold text-dark-blue-400" }, tab === "students" ? item.badgeName || item.lessonName || "General" : item.recipientName),
4083
+ /* @__PURE__ */ React__namespace.createElement("div", { className: "truncate text-[11px] text-slate-500" }, item.authorName || "\u2014"),
4084
+ /* @__PURE__ */ React__namespace.createElement("div", { className: "text-xs text-slate-600" }, item.commentText),
4085
+ /* @__PURE__ */ React__namespace.createElement("div", { className: "flex justify-center" }, item.requireValidation && /* @__PURE__ */ React__namespace.createElement("span", { className: "rounded-full bg-gold-400/15 px-2 py-0.5 text-[10px] font-bold text-dark-blue-400" }, "Requires validation")),
4086
+ /* @__PURE__ */ React__namespace.createElement("div", { className: "flex justify-center" }, !item.requireValidation ? /* @__PURE__ */ React__namespace.createElement("span", { className: "text-[11px] text-slate-400" }, "\u2014") : item.resolvedAt ? /* @__PURE__ */ React__namespace.createElement(icons.IconCheck, { size: 16, stroke: 3, className: "text-mint-400" }) : /* @__PURE__ */ React__namespace.createElement(
4087
+ "button",
4088
+ {
4089
+ onClick: () => props.onResolve(item.commentId),
4090
+ className: "rounded-lg bg-gradient-to-r from-gold-400 to-[#f5c300] px-3 py-1.5 text-[11px] font-extrabold text-dark-blue-400"
4091
+ },
4092
+ "Resolve"
4093
+ ))
4094
+ ))))), /* @__PURE__ */ React__namespace.createElement(
4095
+ LeaveCommentModal,
4096
+ {
4097
+ opened: leavingComment,
4098
+ onClose: () => setLeavingComment(false),
4099
+ onSubmit: (comment) => {
4100
+ props.onLeaveComment(comment);
4101
+ setLeavingComment(false);
4102
+ },
4103
+ students: props.students,
4104
+ badges: props.badges,
4105
+ lessons: props.lessons
4106
+ }
4107
+ ));
4108
+ };
4109
+
4110
+ var __defProp = Object.defineProperty;
4111
+ var __defProps = Object.defineProperties;
4112
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4113
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
4114
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4115
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
4116
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4117
+ var __spreadValues = (a, b) => {
4118
+ for (var prop in b || (b = {}))
4119
+ if (__hasOwnProp.call(b, prop))
4120
+ __defNormalProp(a, prop, b[prop]);
4121
+ if (__getOwnPropSymbols)
4122
+ for (var prop of __getOwnPropSymbols(b)) {
4123
+ if (__propIsEnum.call(b, prop))
4124
+ __defNormalProp(a, prop, b[prop]);
4125
+ }
4126
+ return a;
4127
+ };
4128
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
4129
+ const initials = (name) => name.split(" ").map((w) => w[0]).filter(Boolean).slice(0, 2).join("").toUpperCase();
4130
+ const ValidationCenter = (props) => {
4131
+ const [selected, setSelected] = React__namespace.useState({});
4132
+ React__namespace.useEffect(() => {
4133
+ setSelected({});
4134
+ }, [props.classId, props.badgeId]);
4135
+ const toggle = (userId, checked) => setSelected((prev) => __spreadProps(__spreadValues({}, prev), { [userId]: checked }));
4136
+ const selectedIds = Object.keys(selected).filter((userId) => selected[userId]);
4137
+ const eligible = props.students.filter((s) => !s.hasCredit);
4138
+ const onSelectAll = (checked) => {
4139
+ const next = {};
4140
+ if (checked)
4141
+ eligible.forEach((s) => {
4142
+ next[s.userId] = true;
4143
+ });
4144
+ setSelected(next);
4145
+ };
4146
+ return /* @__PURE__ */ React__namespace.createElement("div", { className: "flex w-full flex-col gap-5 px-4 py-8" }, /* @__PURE__ */ React__namespace.createElement("div", null, /* @__PURE__ */ React__namespace.createElement("h1", { className: "text-2xl font-extrabold tracking-tight text-dark-blue-400" }, "Validation Center"), /* @__PURE__ */ React__namespace.createElement("p", { className: "mt-1 text-sm text-slate-500" }, "Directly credit students for a badge")), /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-wrap gap-3" }, /* @__PURE__ */ React__namespace.createElement(
4147
+ "select",
4148
+ {
4149
+ value: props.classId,
4150
+ onChange: (e) => props.onClassChange(e.target.value),
4151
+ className: "w-64 rounded-xl border border-slate-200 bg-white px-3.5 py-2.5 text-sm text-dark-blue-400 focus:border-sky-blue-400 focus:outline-none"
4152
+ },
4153
+ /* @__PURE__ */ React__namespace.createElement("option", { value: "" }, "Select a class"),
4154
+ props.classes.map((c) => /* @__PURE__ */ React__namespace.createElement("option", { key: c.classId, value: c.classId }, c.name))
4155
+ ), /* @__PURE__ */ React__namespace.createElement(
4156
+ "select",
4157
+ {
4158
+ value: props.badgeId,
4159
+ onChange: (e) => props.onBadgeChange(e.target.value),
4160
+ className: "w-64 rounded-xl border border-slate-200 bg-white px-3.5 py-2.5 text-sm text-dark-blue-400 focus:border-sky-blue-400 focus:outline-none"
4161
+ },
4162
+ /* @__PURE__ */ React__namespace.createElement("option", { value: "" }, "Select a badge"),
4163
+ props.badges.map((b) => /* @__PURE__ */ React__namespace.createElement("option", { key: b.badgeId, value: b.badgeId }, b.displayName))
4164
+ )), !props.badgeId ? /* @__PURE__ */ React__namespace.createElement(
4165
+ PlaceholderBanner,
4166
+ {
4167
+ title: "Select a badge",
4168
+ description: "Choose a badge above to see which students already have credit and give it to the rest.",
4169
+ loading: props.loading,
4170
+ icon: "badges"
4171
+ }
4172
+ ) : props.students.length === 0 ? /* @__PURE__ */ React__namespace.createElement(
4173
+ PlaceholderBanner,
4174
+ {
4175
+ title: "No students to display",
4176
+ description: "There are no students in this class yet.",
4177
+ loading: props.loading,
4178
+ icon: "groups"
4179
+ }
4180
+ ) : /* @__PURE__ */ React__namespace.createElement("div", { className: "overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "grid grid-cols-[2.2fr_1fr] items-center gap-3 border-b border-slate-100 px-5 py-3" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "text-[10.5px] font-extrabold uppercase tracking-wide text-slate-400" }, "Student"), /* @__PURE__ */ React__namespace.createElement("div", { className: "flex items-center justify-center gap-2 text-[10.5px] font-extrabold uppercase tracking-wide text-slate-400" }, /* @__PURE__ */ React__namespace.createElement(
4181
+ core.Checkbox,
4182
+ {
4183
+ checked: eligible.length > 0 && selectedIds.length === eligible.length,
4184
+ indeterminate: selectedIds.length > 0 && selectedIds.length < eligible.length,
4185
+ onChange: (e) => onSelectAll(e.currentTarget.checked),
4186
+ disabled: eligible.length === 0
4187
+ }
4188
+ ), "Give Credit")), props.students.map((row, i) => /* @__PURE__ */ React__namespace.createElement(
4189
+ "div",
4190
+ {
4191
+ key: row.userId,
4192
+ className: `grid grid-cols-[2.2fr_1fr] items-center gap-3 px-5 py-3.5 ${i < props.students.length - 1 ? "border-b border-slate-100" : ""}`
4193
+ },
4194
+ /* @__PURE__ */ React__namespace.createElement("div", { className: "flex min-w-0 items-center gap-2.5" }, row.avatar ? /* @__PURE__ */ React__namespace.createElement("img", { className: "h-8 w-8 shrink-0 rounded-full object-cover", src: row.avatar, alt: "" }) : /* @__PURE__ */ React__namespace.createElement("div", { className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-mint-400/20 text-[10px] font-bold text-dark-blue-400" }, initials(row.name)), /* @__PURE__ */ React__namespace.createElement("div", { className: "truncate text-xs font-bold text-dark-blue-400" }, row.name)),
4195
+ /* @__PURE__ */ React__namespace.createElement("div", { className: "flex justify-center" }, row.hasCredit ? /* @__PURE__ */ React__namespace.createElement(icons.IconCheck, { size: 18, stroke: 3, className: "text-mint-400" }) : /* @__PURE__ */ React__namespace.createElement(core.Checkbox, { checked: !!selected[row.userId], onChange: (e) => toggle(row.userId, e.currentTarget.checked) }))
4196
+ ))), props.badgeId && props.students.length > 0 && /* @__PURE__ */ React__namespace.createElement("div", { className: "flex justify-end" }, /* @__PURE__ */ React__namespace.createElement(
4197
+ "button",
4198
+ {
4199
+ onClick: () => props.onSubmit(selectedIds),
4200
+ disabled: selectedIds.length === 0,
4201
+ className: "rounded-lg bg-dark-blue-400 px-5 py-2.5 text-xs font-bold text-white disabled:opacity-40"
4202
+ },
4203
+ "Validate ",
4204
+ selectedIds.length > 0 ? `${selectedIds.length} ` : "",
4205
+ "Student",
4206
+ selectedIds.length === 1 ? "" : "s"
4207
+ )));
4208
+ };
4209
+
3886
4210
  Object.defineProperty(exports, 'hideNotification', {
3887
4211
  enumerable: true,
3888
4212
  get: function () { return notifications.hideNotification; }
@@ -3901,6 +4225,7 @@ exports.Badge = Badge;
3901
4225
  exports.Badges = Badges;
3902
4226
  exports.Class = Class;
3903
4227
  exports.Classes = Classes;
4228
+ exports.CommentCenter = CommentCenter;
3904
4229
  exports.Dashboard = Dashboard;
3905
4230
  exports.FileLocker = FileLocker;
3906
4231
  exports.GettingStarted = GettingStarted;
@@ -3917,4 +4242,5 @@ exports.Student = Student;
3917
4242
  exports.SwitchAccount = SwitchAccount;
3918
4243
  exports.TrialHome = TrialHome;
3919
4244
  exports.TrialRegistration = TrialRegistration;
4245
+ exports.ValidationCenter = ValidationCenter;
3920
4246
  //# sourceMappingURL=index.js.map