@local-civics/mgmt-ui 0.1.220 → 0.1.222
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +16 -0
- package/dist/index.js +399 -329
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +401 -331
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4,8 +4,8 @@ var React = require('react');
|
|
|
4
4
|
var icons = require('@tabler/icons');
|
|
5
5
|
var core = require('@mantine/core');
|
|
6
6
|
var reactRouterDom = require('react-router-dom');
|
|
7
|
-
var notifications = require('@mantine/notifications');
|
|
8
7
|
require('external-svg-loader');
|
|
8
|
+
var notifications = require('@mantine/notifications');
|
|
9
9
|
var dropzone = require('@mantine/dropzone');
|
|
10
10
|
var form = require('@mantine/form');
|
|
11
11
|
var papa = require('papaparse');
|
|
@@ -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}.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-1{margin-top:.25rem}.mt-6{margin-top:1.5rem}.mt-2{margin-top:.5rem}.mt-1\\.5{margin-top:.375rem}.-ml-2{margin-left:-.5rem}.mt-4{margin-top:1rem}.mb-8{margin-bottom:2rem}.ml-\\[29px\\]{margin-left:29px}.block{display:block}.inline{display:inline}.flex{display: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-11{height:2.75rem}.h-16{height:4rem}.h-\\[30px\\]{height:30px}.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-40{width:10rem}.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-24{width:6rem}.w-\\[250px\\]{width:250px}.w-screen{width:100vw}.w-11{width:2.75rem}.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}.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-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)))}.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-\\[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-r{border-right-width:1px}.border-l{border-left-width:1px}.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\\/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-sky-blue-400\\/40{border-color:rgba(59,208,242,.4)}.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-sky-blue-400\\/15{background-color:rgba(59,208,242,.15)}.bg-mint-400\\/15{background-color:rgba(30,226,175,.15)}.bg-gold-400\\/15{background-color:rgba(255,212,77,.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}.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-\\[10\\.5px\\]{font-size:10.5px}.text-lg{font-size:1.125rem;line-height:1.75rem}.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{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-\\[0_2px_10px_rgba\\(30\\2c 226\\2c 175\\2c 0\\.15\\)\\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_2px_10px_rgba\\(30\\2c 226\\2c 175\\2c 0\\.15\\)\\]{--tw-shadow:0 2px 10px rgba(30,226,175,.15);--tw-shadow-colored:0 2px 10px var(--tw-shadow-color)}.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)}*,: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\\:text-slate-600:hover{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.hover\\:text-slate-700:hover{--tw-text-opacity:1;color:rgb(51 65 85/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-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}";
|
|
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}.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-1{margin-top:.25rem}.mt-6{margin-top:1.5rem}.mt-2{margin-top:.5rem}.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}.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-11{height:2.75rem}.h-16{height:4rem}.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-40{width:10rem}.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-24{width:6rem}.w-\\[250px\\]{width:250px}.w-screen{width:100vw}.w-11{width:2.75rem}.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-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-6{gap:1.5rem}.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)))}.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-\\[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\\/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-sky-blue-400\\/40{border-color:rgba(59,208,242,.4)}.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}.px-1{padding-left:.25rem;padding-right:.25rem}.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-\\[10\\.5px\\]{font-size:10.5px}.text-lg{font-size:1.125rem;line-height:1.75rem}.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)}*,: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\\:text-slate-600:hover{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.hover\\:text-slate-700:hover{--tw-text-opacity:1;color:rgb(51 65 85/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-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))}}";
|
|
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$
|
|
148
|
-
var __defProps$
|
|
149
|
-
var __getOwnPropDescs$
|
|
150
|
-
var __getOwnPropSymbols$
|
|
151
|
-
var __hasOwnProp$
|
|
152
|
-
var __propIsEnum$
|
|
153
|
-
var __defNormalProp$
|
|
154
|
-
var __spreadValues$
|
|
147
|
+
var __defProp$h = Object.defineProperty;
|
|
148
|
+
var __defProps$e = Object.defineProperties;
|
|
149
|
+
var __getOwnPropDescs$e = Object.getOwnPropertyDescriptors;
|
|
150
|
+
var __getOwnPropSymbols$h = Object.getOwnPropertySymbols;
|
|
151
|
+
var __hasOwnProp$h = Object.prototype.hasOwnProperty;
|
|
152
|
+
var __propIsEnum$h = Object.prototype.propertyIsEnumerable;
|
|
153
|
+
var __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
154
|
+
var __spreadValues$h = (a, b) => {
|
|
155
155
|
for (var prop in b || (b = {}))
|
|
156
|
-
if (__hasOwnProp$
|
|
157
|
-
__defNormalProp$
|
|
158
|
-
if (__getOwnPropSymbols$
|
|
159
|
-
for (var prop of __getOwnPropSymbols$
|
|
160
|
-
if (__propIsEnum$
|
|
161
|
-
__defNormalProp$
|
|
156
|
+
if (__hasOwnProp$h.call(b, prop))
|
|
157
|
+
__defNormalProp$h(a, prop, b[prop]);
|
|
158
|
+
if (__getOwnPropSymbols$h)
|
|
159
|
+
for (var prop of __getOwnPropSymbols$h(b)) {
|
|
160
|
+
if (__propIsEnum$h.call(b, prop))
|
|
161
|
+
__defNormalProp$h(a, prop, b[prop]);
|
|
162
162
|
}
|
|
163
163
|
return a;
|
|
164
164
|
};
|
|
165
|
-
var __spreadProps$
|
|
165
|
+
var __spreadProps$e = (a, b) => __defProps$e(a, __getOwnPropDescs$e(b));
|
|
166
166
|
const data = [
|
|
167
167
|
{ label: "Home", icon: icons.IconHome2, accent: "cyan" },
|
|
168
168
|
{ label: "Dashboard", icon: icons.IconGauge, accent: "mint" },
|
|
@@ -189,12 +189,12 @@ function Navbar(props) {
|
|
|
189
189
|
}
|
|
190
190
|
return /* @__PURE__ */ React__namespace.createElement(
|
|
191
191
|
LinksGroup,
|
|
192
|
-
__spreadProps$
|
|
192
|
+
__spreadProps$e(__spreadValues$h(__spreadValues$h({
|
|
193
193
|
key: item.label,
|
|
194
194
|
active: props.active
|
|
195
195
|
}, item), context), {
|
|
196
196
|
links: (item.links || []).map((link) => {
|
|
197
|
-
return __spreadValues$
|
|
197
|
+
return __spreadValues$h(__spreadValues$h({}, link), props.links[`${item.label}/${link.label}`] || { notifications: 0, href: "" });
|
|
198
198
|
})
|
|
199
199
|
})
|
|
200
200
|
);
|
|
@@ -214,7 +214,7 @@ const UtilLink = (props) => {
|
|
|
214
214
|
);
|
|
215
215
|
};
|
|
216
216
|
|
|
217
|
-
const useStyles$
|
|
217
|
+
const useStyles$8 = core.createStyles((theme) => ({
|
|
218
218
|
inner: {
|
|
219
219
|
paddingTop: theme.spacing.xl,
|
|
220
220
|
paddingBottom: theme.spacing.xl * 4
|
|
@@ -250,7 +250,7 @@ const useStyles$9 = core.createStyles((theme) => ({
|
|
|
250
250
|
}
|
|
251
251
|
}));
|
|
252
252
|
const GettingStarted = (props) => {
|
|
253
|
-
const { classes } = useStyles$
|
|
253
|
+
const { classes } = useStyles$8();
|
|
254
254
|
return /* @__PURE__ */ React__namespace.createElement(
|
|
255
255
|
core.Modal,
|
|
256
256
|
{
|
|
@@ -264,78 +264,6 @@ const GettingStarted = (props) => {
|
|
|
264
264
|
);
|
|
265
265
|
};
|
|
266
266
|
|
|
267
|
-
const useStyles$8 = core.createStyles((theme) => ({
|
|
268
|
-
title: {
|
|
269
|
-
fontSize: 34,
|
|
270
|
-
fontWeight: 900,
|
|
271
|
-
[theme.fn.smallerThan("sm")]: {
|
|
272
|
-
fontSize: 24
|
|
273
|
-
}
|
|
274
|
-
},
|
|
275
|
-
description: {
|
|
276
|
-
maxWidth: 600,
|
|
277
|
-
margin: "auto",
|
|
278
|
-
"&::after": {
|
|
279
|
-
content: '""',
|
|
280
|
-
display: "block",
|
|
281
|
-
backgroundColor: theme.fn.primaryColor(),
|
|
282
|
-
width: 45,
|
|
283
|
-
height: 2,
|
|
284
|
-
marginTop: theme.spacing.sm,
|
|
285
|
-
marginLeft: "auto",
|
|
286
|
-
marginRight: "auto"
|
|
287
|
-
}
|
|
288
|
-
},
|
|
289
|
-
card: {
|
|
290
|
-
transition: "box-shadow 150ms ease, transform 100ms ease",
|
|
291
|
-
"&:hover": {
|
|
292
|
-
boxShadow: `${theme.shadows.md} !important`,
|
|
293
|
-
transform: "scale(1.02)"
|
|
294
|
-
}
|
|
295
|
-
},
|
|
296
|
-
cardTitle: {
|
|
297
|
-
"&::after": {
|
|
298
|
-
content: '""',
|
|
299
|
-
display: "block",
|
|
300
|
-
backgroundColor: theme.fn.primaryColor(),
|
|
301
|
-
width: 45,
|
|
302
|
-
height: 2,
|
|
303
|
-
marginTop: theme.spacing.sm
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
}));
|
|
307
|
-
const SwitchAccount = (props) => {
|
|
308
|
-
const { classes, theme } = useStyles$8();
|
|
309
|
-
const options = props.accounts.map((a) => {
|
|
310
|
-
return /* @__PURE__ */ React__namespace.createElement(core.UnstyledButton, { onClick: () => props.onClick && props.onClick(a.accountId), key: a.accountId, p: theme.spacing.md }, /* @__PURE__ */ React__namespace.createElement(core.Card, { withBorder: true, shadow: "md", radius: "md", className: classes.card, p: "xl" }, a.isAdmin && /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(icons.IconBatteryEco, { size: 50, stroke: 2, color: theme.fn.primaryColor() })), a.isGroupAdmin && !a.isAdmin && /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(icons.IconBooks, { size: 50, stroke: 2, color: theme.fn.primaryColor() })), !a.isAdmin && !a.isGroupAdmin && /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(icons.IconBackpack, { size: 50, stroke: 2, color: theme.fn.primaryColor() })), /* @__PURE__ */ React__namespace.createElement(core.Text, { size: "lg", weight: 500, className: classes.cardTitle, mt: "md" }, a.name), /* @__PURE__ */ React__namespace.createElement(core.Text, { size: "sm", color: "dimmed", mt: "sm" }, a.isAdmin ? "Admin" : a.isGroupAdmin ? "Educator" : "Student")));
|
|
311
|
-
});
|
|
312
|
-
return /* @__PURE__ */ React__namespace.createElement(
|
|
313
|
-
core.Modal,
|
|
314
|
-
{
|
|
315
|
-
centered: true,
|
|
316
|
-
fullScreen: true,
|
|
317
|
-
opened: props.opened,
|
|
318
|
-
onClose: () => props.onClose && props.onClose(),
|
|
319
|
-
size: "sm"
|
|
320
|
-
},
|
|
321
|
-
/* @__PURE__ */ React__namespace.createElement("div", { style: { position: "relative" } }, props.loading && /* @__PURE__ */ React__namespace.createElement(core.Center, { style: { height: 400 } }, /* @__PURE__ */ React__namespace.createElement(core.Loader, null)), !props.loading && /* @__PURE__ */ React__namespace.createElement(core.ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React__namespace.createElement(core.SimpleGrid, { p: 20, cols: 3, spacing: "xl", breakpoints: [{ maxWidth: "md", cols: 1 }] }, options)))
|
|
322
|
-
);
|
|
323
|
-
};
|
|
324
|
-
|
|
325
|
-
const StatsGroup = ({ data, footer }) => {
|
|
326
|
-
const stats = data.map((stat) => {
|
|
327
|
-
const value = (() => {
|
|
328
|
-
if (stat.unit === "%") {
|
|
329
|
-
return Math.round((stat.value + Number.EPSILON) * 100);
|
|
330
|
-
}
|
|
331
|
-
return stat.value;
|
|
332
|
-
})();
|
|
333
|
-
const safeValue = Number.isFinite(value) ? value : 0;
|
|
334
|
-
return /* @__PURE__ */ React__namespace.createElement("div", { key: stat.title }, /* @__PURE__ */ React__namespace.createElement("div", { className: "text-3xl font-black text-white" }, safeValue.toLocaleString(), stat.unit), /* @__PURE__ */ React__namespace.createElement("div", { className: "mt-1.5 text-[11px] font-bold uppercase tracking-wide text-white/70" }, stat.title));
|
|
335
|
-
});
|
|
336
|
-
return /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-wrap gap-x-10 gap-y-4 rounded-2xl bg-gradient-to-br from-dark-blue-600 via-dark-blue-400 to-sky-blue-400 px-8 py-6" }, stats, footer);
|
|
337
|
-
};
|
|
338
|
-
|
|
339
267
|
const SIZE = {
|
|
340
268
|
sm: { box: "h-11 w-11", rounded: "rounded-xl", icon: 20 },
|
|
341
269
|
lg: { box: "h-16 w-16", rounded: "rounded-2xl", icon: 28 }
|
|
@@ -388,6 +316,50 @@ function Emblem(props) {
|
|
|
388
316
|
return /* @__PURE__ */ React__namespace.createElement("div", { className: `flex ${s.box} shrink-0 items-center justify-center ${s.rounded} ${a.bg}` }, /* @__PURE__ */ React__namespace.createElement(Icon, { size: s.icon, stroke: 1.75, className: a.text }));
|
|
389
317
|
}
|
|
390
318
|
|
|
319
|
+
const ROLE = {
|
|
320
|
+
admin: { icon: icons.IconBuilding, accent: "gold", label: "Admin" },
|
|
321
|
+
educator: { icon: icons.IconBooks, accent: "mint", label: "Educator" },
|
|
322
|
+
student: { icon: icons.IconBackpack, accent: "cyan", label: "Student" }
|
|
323
|
+
};
|
|
324
|
+
const PILL = {
|
|
325
|
+
cyan: "bg-sky-blue-400/15 text-dark-blue-400",
|
|
326
|
+
mint: "bg-mint-400/15 text-dark-blue-400",
|
|
327
|
+
gold: "bg-gold-400/15 text-dark-blue-400"
|
|
328
|
+
};
|
|
329
|
+
const roleFor = (a) => a.isAdmin ? ROLE.admin : a.isGroupAdmin ? ROLE.educator : ROLE.student;
|
|
330
|
+
const SwitchAccount = (props) => {
|
|
331
|
+
const options = props.accounts.map((a) => {
|
|
332
|
+
const role = roleFor(a);
|
|
333
|
+
return /* @__PURE__ */ React__namespace.createElement(
|
|
334
|
+
"button",
|
|
335
|
+
{
|
|
336
|
+
type: "button",
|
|
337
|
+
key: a.accountId,
|
|
338
|
+
onClick: () => props.onClick && props.onClick(a.accountId),
|
|
339
|
+
className: "flex flex-col items-center gap-3 rounded-xl border border-slate-200 bg-white p-6 text-center hover:bg-slate-50"
|
|
340
|
+
},
|
|
341
|
+
/* @__PURE__ */ React__namespace.createElement(Emblem, { icon: role.icon, accent: role.accent, size: "lg" }),
|
|
342
|
+
/* @__PURE__ */ React__namespace.createElement("span", { className: "text-base font-extrabold text-dark-blue-400" }, a.name),
|
|
343
|
+
/* @__PURE__ */ React__namespace.createElement("span", { className: `rounded-full px-2.5 py-1 text-[10px] font-bold ${PILL[role.accent]}` }, role.label)
|
|
344
|
+
);
|
|
345
|
+
});
|
|
346
|
+
return /* @__PURE__ */ React__namespace.createElement(core.Modal, { centered: true, fullScreen: true, title: "Change account", opened: props.opened, onClose: () => props.onClose && props.onClose() }, /* @__PURE__ */ React__namespace.createElement("div", { className: "relative" }, props.loading && /* @__PURE__ */ React__namespace.createElement("div", { className: "flex h-[400px] items-center justify-center" }, /* @__PURE__ */ React__namespace.createElement(core.Loader, null)), !props.loading && /* @__PURE__ */ React__namespace.createElement("div", { className: "grid grid-cols-1 gap-4 p-5 sm:grid-cols-2 md:grid-cols-3" }, options)));
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
const StatsGroup = ({ data, footer }) => {
|
|
350
|
+
const stats = data.map((stat) => {
|
|
351
|
+
const value = (() => {
|
|
352
|
+
if (stat.unit === "%") {
|
|
353
|
+
return Math.round((stat.value + Number.EPSILON) * 100);
|
|
354
|
+
}
|
|
355
|
+
return stat.value;
|
|
356
|
+
})();
|
|
357
|
+
const safeValue = Number.isFinite(value) ? value : 0;
|
|
358
|
+
return /* @__PURE__ */ React__namespace.createElement("div", { key: stat.title }, /* @__PURE__ */ React__namespace.createElement("div", { className: "text-3xl font-black text-white" }, safeValue.toLocaleString(), stat.unit), /* @__PURE__ */ React__namespace.createElement("div", { className: "mt-1.5 text-[11px] font-bold uppercase tracking-wide text-white/70" }, stat.title));
|
|
359
|
+
});
|
|
360
|
+
return /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-wrap gap-x-10 gap-y-4 rounded-2xl bg-gradient-to-br from-dark-blue-600 via-dark-blue-400 to-sky-blue-400 px-8 py-6" }, stats, footer);
|
|
361
|
+
};
|
|
362
|
+
|
|
391
363
|
const SplitButton$4 = (props) => {
|
|
392
364
|
return /* @__PURE__ */ React__namespace.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React__namespace.createElement(
|
|
393
365
|
reactRouterDom.Link,
|
|
@@ -519,29 +491,29 @@ function useSortableData(items, config = { key: "", direction: null }) {
|
|
|
519
491
|
return { items: sortedItems, requestSort, sortConfig };
|
|
520
492
|
}
|
|
521
493
|
|
|
522
|
-
var __defProp$
|
|
523
|
-
var __defProps$
|
|
524
|
-
var __getOwnPropDescs$
|
|
525
|
-
var __getOwnPropSymbols$
|
|
526
|
-
var __hasOwnProp$
|
|
527
|
-
var __propIsEnum$
|
|
528
|
-
var __defNormalProp$
|
|
529
|
-
var __spreadValues$
|
|
494
|
+
var __defProp$g = Object.defineProperty;
|
|
495
|
+
var __defProps$d = Object.defineProperties;
|
|
496
|
+
var __getOwnPropDescs$d = Object.getOwnPropertyDescriptors;
|
|
497
|
+
var __getOwnPropSymbols$g = Object.getOwnPropertySymbols;
|
|
498
|
+
var __hasOwnProp$g = Object.prototype.hasOwnProperty;
|
|
499
|
+
var __propIsEnum$g = Object.prototype.propertyIsEnumerable;
|
|
500
|
+
var __defNormalProp$g = (obj, key, value) => key in obj ? __defProp$g(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
501
|
+
var __spreadValues$g = (a, b) => {
|
|
530
502
|
for (var prop in b || (b = {}))
|
|
531
|
-
if (__hasOwnProp$
|
|
532
|
-
__defNormalProp$
|
|
533
|
-
if (__getOwnPropSymbols$
|
|
534
|
-
for (var prop of __getOwnPropSymbols$
|
|
535
|
-
if (__propIsEnum$
|
|
536
|
-
__defNormalProp$
|
|
503
|
+
if (__hasOwnProp$g.call(b, prop))
|
|
504
|
+
__defNormalProp$g(a, prop, b[prop]);
|
|
505
|
+
if (__getOwnPropSymbols$g)
|
|
506
|
+
for (var prop of __getOwnPropSymbols$g(b)) {
|
|
507
|
+
if (__propIsEnum$g.call(b, prop))
|
|
508
|
+
__defNormalProp$g(a, prop, b[prop]);
|
|
537
509
|
}
|
|
538
510
|
return a;
|
|
539
511
|
};
|
|
540
|
-
var __spreadProps$
|
|
512
|
+
var __spreadProps$d = (a, b) => __defProps$d(a, __getOwnPropDescs$d(b));
|
|
541
513
|
function Table$k(props) {
|
|
542
514
|
const [expanded, setExpanded] = React__namespace.useState({});
|
|
543
515
|
const preparedItems = React__namespace.useMemo(() => {
|
|
544
|
-
return props.items.map((item) => __spreadProps$
|
|
516
|
+
return props.items.map((item) => __spreadProps$d(__spreadValues$g({}, item), {
|
|
545
517
|
status: item.isComplete ? 1 : 0
|
|
546
518
|
}));
|
|
547
519
|
}, [props.items]);
|
|
@@ -565,7 +537,7 @@ function Table$k(props) {
|
|
|
565
537
|
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
538
|
"div",
|
|
567
539
|
{
|
|
568
|
-
onClick: () => setExpanded(__spreadProps$
|
|
540
|
+
onClick: () => setExpanded(__spreadProps$d(__spreadValues$g({}, expanded), { [row.userId]: !isOpen })),
|
|
569
541
|
className: "flex cursor-pointer items-center gap-4 p-4"
|
|
570
542
|
},
|
|
571
543
|
/* @__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))),
|
|
@@ -620,6 +592,10 @@ const Badge = (props) => {
|
|
|
620
592
|
{
|
|
621
593
|
title: props.trial ? "LESSONS SUBMITTED" : "BADGE COMPLETION",
|
|
622
594
|
value: props.trial ? props.lessonsCompleted || 0 : numberOfBadges
|
|
595
|
+
},
|
|
596
|
+
{
|
|
597
|
+
title: "POINT VALUE",
|
|
598
|
+
value: props.weight || 0
|
|
623
599
|
}
|
|
624
600
|
] }), !props.trial && /* @__PURE__ */ React__namespace.createElement("div", { className: "relative w-full max-w-xs" }, /* @__PURE__ */ React__namespace.createElement(icons.IconCategory2, { size: 16, stroke: 2, className: "pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-slate-400" }), /* @__PURE__ */ React__namespace.createElement(
|
|
625
601
|
"select",
|
|
@@ -749,28 +725,28 @@ function relativeTimeFromElapsed(elapsed) {
|
|
|
749
725
|
return "";
|
|
750
726
|
}
|
|
751
727
|
|
|
752
|
-
var __defProp$
|
|
753
|
-
var __defProps$
|
|
754
|
-
var __getOwnPropDescs$
|
|
755
|
-
var __getOwnPropSymbols$
|
|
756
|
-
var __hasOwnProp$
|
|
757
|
-
var __propIsEnum$
|
|
758
|
-
var __defNormalProp$
|
|
759
|
-
var __spreadValues$
|
|
728
|
+
var __defProp$f = Object.defineProperty;
|
|
729
|
+
var __defProps$c = Object.defineProperties;
|
|
730
|
+
var __getOwnPropDescs$c = Object.getOwnPropertyDescriptors;
|
|
731
|
+
var __getOwnPropSymbols$f = Object.getOwnPropertySymbols;
|
|
732
|
+
var __hasOwnProp$f = Object.prototype.hasOwnProperty;
|
|
733
|
+
var __propIsEnum$f = Object.prototype.propertyIsEnumerable;
|
|
734
|
+
var __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
735
|
+
var __spreadValues$f = (a, b) => {
|
|
760
736
|
for (var prop in b || (b = {}))
|
|
761
|
-
if (__hasOwnProp$
|
|
762
|
-
__defNormalProp$
|
|
763
|
-
if (__getOwnPropSymbols$
|
|
764
|
-
for (var prop of __getOwnPropSymbols$
|
|
765
|
-
if (__propIsEnum$
|
|
766
|
-
__defNormalProp$
|
|
737
|
+
if (__hasOwnProp$f.call(b, prop))
|
|
738
|
+
__defNormalProp$f(a, prop, b[prop]);
|
|
739
|
+
if (__getOwnPropSymbols$f)
|
|
740
|
+
for (var prop of __getOwnPropSymbols$f(b)) {
|
|
741
|
+
if (__propIsEnum$f.call(b, prop))
|
|
742
|
+
__defNormalProp$f(a, prop, b[prop]);
|
|
767
743
|
}
|
|
768
744
|
return a;
|
|
769
745
|
};
|
|
770
|
-
var __spreadProps$
|
|
746
|
+
var __spreadProps$c = (a, b) => __defProps$c(a, __getOwnPropDescs$c(b));
|
|
771
747
|
function Table$g(props) {
|
|
772
748
|
const preparedItems = React__namespace.useMemo(() => {
|
|
773
|
-
return props.items.map((item) => __spreadProps$
|
|
749
|
+
return props.items.map((item) => __spreadProps$c(__spreadValues$f({}, item), {
|
|
774
750
|
updatedAtDate: new Date(item.updatedAt)
|
|
775
751
|
}));
|
|
776
752
|
}, [props.items]);
|
|
@@ -973,25 +949,25 @@ const Dashboard = (props) => {
|
|
|
973
949
|
)));
|
|
974
950
|
};
|
|
975
951
|
|
|
976
|
-
var __defProp$
|
|
977
|
-
var __defProps$
|
|
978
|
-
var __getOwnPropDescs$
|
|
979
|
-
var __getOwnPropSymbols$
|
|
980
|
-
var __hasOwnProp$
|
|
981
|
-
var __propIsEnum$
|
|
982
|
-
var __defNormalProp$
|
|
983
|
-
var __spreadValues$
|
|
952
|
+
var __defProp$e = Object.defineProperty;
|
|
953
|
+
var __defProps$b = Object.defineProperties;
|
|
954
|
+
var __getOwnPropDescs$b = Object.getOwnPropertyDescriptors;
|
|
955
|
+
var __getOwnPropSymbols$e = Object.getOwnPropertySymbols;
|
|
956
|
+
var __hasOwnProp$e = Object.prototype.hasOwnProperty;
|
|
957
|
+
var __propIsEnum$e = Object.prototype.propertyIsEnumerable;
|
|
958
|
+
var __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
959
|
+
var __spreadValues$e = (a, b) => {
|
|
984
960
|
for (var prop in b || (b = {}))
|
|
985
|
-
if (__hasOwnProp$
|
|
986
|
-
__defNormalProp$
|
|
987
|
-
if (__getOwnPropSymbols$
|
|
988
|
-
for (var prop of __getOwnPropSymbols$
|
|
989
|
-
if (__propIsEnum$
|
|
990
|
-
__defNormalProp$
|
|
961
|
+
if (__hasOwnProp$e.call(b, prop))
|
|
962
|
+
__defNormalProp$e(a, prop, b[prop]);
|
|
963
|
+
if (__getOwnPropSymbols$e)
|
|
964
|
+
for (var prop of __getOwnPropSymbols$e(b)) {
|
|
965
|
+
if (__propIsEnum$e.call(b, prop))
|
|
966
|
+
__defNormalProp$e(a, prop, b[prop]);
|
|
991
967
|
}
|
|
992
968
|
return a;
|
|
993
969
|
};
|
|
994
|
-
var __spreadProps$
|
|
970
|
+
var __spreadProps$b = (a, b) => __defProps$b(a, __getOwnPropDescs$b(b));
|
|
995
971
|
const openDeleteModal$2 = (student, onDelete) => modals.openConfirmModal({
|
|
996
972
|
title: `Remove "${student.givenName && student.familyName ? `${student.givenName} ${student.familyName}` : student.email}" from this class?`,
|
|
997
973
|
centered: true,
|
|
@@ -1002,7 +978,7 @@ const openDeleteModal$2 = (student, onDelete) => modals.openConfirmModal({
|
|
|
1002
978
|
});
|
|
1003
979
|
function Table$c(props) {
|
|
1004
980
|
const preparedItems = React__namespace.useMemo(() => {
|
|
1005
|
-
return props.items.map((item) => __spreadProps$
|
|
981
|
+
return props.items.map((item) => __spreadProps$b(__spreadValues$e({}, item), {
|
|
1006
982
|
fullName: item.givenName && item.familyName ? `${item.givenName} ${item.familyName}`.toLowerCase() : item.email.toLowerCase()
|
|
1007
983
|
}));
|
|
1008
984
|
}, [props.items]);
|
|
@@ -1053,25 +1029,25 @@ function Table$c(props) {
|
|
|
1053
1029
|
}));
|
|
1054
1030
|
}
|
|
1055
1031
|
|
|
1056
|
-
var __defProp$
|
|
1057
|
-
var __defProps$
|
|
1058
|
-
var __getOwnPropDescs$
|
|
1059
|
-
var __getOwnPropSymbols$
|
|
1060
|
-
var __hasOwnProp$
|
|
1061
|
-
var __propIsEnum$
|
|
1062
|
-
var __defNormalProp$
|
|
1063
|
-
var __spreadValues$
|
|
1032
|
+
var __defProp$d = Object.defineProperty;
|
|
1033
|
+
var __defProps$a = Object.defineProperties;
|
|
1034
|
+
var __getOwnPropDescs$a = Object.getOwnPropertyDescriptors;
|
|
1035
|
+
var __getOwnPropSymbols$d = Object.getOwnPropertySymbols;
|
|
1036
|
+
var __hasOwnProp$d = Object.prototype.hasOwnProperty;
|
|
1037
|
+
var __propIsEnum$d = Object.prototype.propertyIsEnumerable;
|
|
1038
|
+
var __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
1039
|
+
var __spreadValues$d = (a, b) => {
|
|
1064
1040
|
for (var prop in b || (b = {}))
|
|
1065
|
-
if (__hasOwnProp$
|
|
1066
|
-
__defNormalProp$
|
|
1067
|
-
if (__getOwnPropSymbols$
|
|
1068
|
-
for (var prop of __getOwnPropSymbols$
|
|
1069
|
-
if (__propIsEnum$
|
|
1070
|
-
__defNormalProp$
|
|
1041
|
+
if (__hasOwnProp$d.call(b, prop))
|
|
1042
|
+
__defNormalProp$d(a, prop, b[prop]);
|
|
1043
|
+
if (__getOwnPropSymbols$d)
|
|
1044
|
+
for (var prop of __getOwnPropSymbols$d(b)) {
|
|
1045
|
+
if (__propIsEnum$d.call(b, prop))
|
|
1046
|
+
__defNormalProp$d(a, prop, b[prop]);
|
|
1071
1047
|
}
|
|
1072
1048
|
return a;
|
|
1073
1049
|
};
|
|
1074
|
-
var __spreadProps$
|
|
1050
|
+
var __spreadProps$a = (a, b) => __defProps$a(a, __getOwnPropDescs$a(b));
|
|
1075
1051
|
const Class = (props) => {
|
|
1076
1052
|
const [opened, setOpened] = React.useState(false);
|
|
1077
1053
|
return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(
|
|
@@ -1083,7 +1059,7 @@ const Class = (props) => {
|
|
|
1083
1059
|
padding: "xl",
|
|
1084
1060
|
size: "xl"
|
|
1085
1061
|
},
|
|
1086
|
-
/* @__PURE__ */ React__namespace.createElement(DropzoneButton$1, __spreadProps$
|
|
1062
|
+
/* @__PURE__ */ React__namespace.createElement(DropzoneButton$1, __spreadProps$a(__spreadValues$d({}, props), { close: () => setOpened(false) }))
|
|
1087
1063
|
), /* @__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
1064
|
"button",
|
|
1089
1065
|
{
|
|
@@ -1209,20 +1185,20 @@ const DropzoneButton$1 = (props) => {
|
|
|
1209
1185
|
props.onCreateMembers && props.onCreateMembers([values]);
|
|
1210
1186
|
}) }, /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React__namespace.createElement(
|
|
1211
1187
|
core.TextInput,
|
|
1212
|
-
__spreadValues$
|
|
1188
|
+
__spreadValues$d({
|
|
1213
1189
|
withAsterisk: true,
|
|
1214
1190
|
label: "Email",
|
|
1215
1191
|
placeholder: "Email"
|
|
1216
1192
|
}, form$1.getInputProps("email"))
|
|
1217
1193
|
), /* @__PURE__ */ React__namespace.createElement(core.Group, { grow: true }, /* @__PURE__ */ React__namespace.createElement(
|
|
1218
1194
|
core.TextInput,
|
|
1219
|
-
__spreadValues$
|
|
1195
|
+
__spreadValues$d({
|
|
1220
1196
|
label: "Given name",
|
|
1221
1197
|
placeholder: "Given name"
|
|
1222
1198
|
}, form$1.getInputProps("givenName"))
|
|
1223
1199
|
), /* @__PURE__ */ React__namespace.createElement(
|
|
1224
1200
|
core.TextInput,
|
|
1225
|
-
__spreadValues$
|
|
1201
|
+
__spreadValues$d({
|
|
1226
1202
|
label: "Family name",
|
|
1227
1203
|
placeholder: "Family name"
|
|
1228
1204
|
}, form$1.getInputProps("familyName"))
|
|
@@ -1279,19 +1255,19 @@ function Table$b(props) {
|
|
|
1279
1255
|
)));
|
|
1280
1256
|
}
|
|
1281
1257
|
|
|
1282
|
-
var __defProp$
|
|
1283
|
-
var __getOwnPropSymbols$
|
|
1284
|
-
var __hasOwnProp$
|
|
1285
|
-
var __propIsEnum$
|
|
1286
|
-
var __defNormalProp$
|
|
1287
|
-
var __spreadValues$
|
|
1258
|
+
var __defProp$c = Object.defineProperty;
|
|
1259
|
+
var __getOwnPropSymbols$c = Object.getOwnPropertySymbols;
|
|
1260
|
+
var __hasOwnProp$c = Object.prototype.hasOwnProperty;
|
|
1261
|
+
var __propIsEnum$c = Object.prototype.propertyIsEnumerable;
|
|
1262
|
+
var __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
1263
|
+
var __spreadValues$c = (a, b) => {
|
|
1288
1264
|
for (var prop in b || (b = {}))
|
|
1289
|
-
if (__hasOwnProp$
|
|
1290
|
-
__defNormalProp$
|
|
1291
|
-
if (__getOwnPropSymbols$
|
|
1292
|
-
for (var prop of __getOwnPropSymbols$
|
|
1293
|
-
if (__propIsEnum$
|
|
1294
|
-
__defNormalProp$
|
|
1265
|
+
if (__hasOwnProp$c.call(b, prop))
|
|
1266
|
+
__defNormalProp$c(a, prop, b[prop]);
|
|
1267
|
+
if (__getOwnPropSymbols$c)
|
|
1268
|
+
for (var prop of __getOwnPropSymbols$c(b)) {
|
|
1269
|
+
if (__propIsEnum$c.call(b, prop))
|
|
1270
|
+
__defNormalProp$c(a, prop, b[prop]);
|
|
1295
1271
|
}
|
|
1296
1272
|
return a;
|
|
1297
1273
|
};
|
|
@@ -1325,14 +1301,14 @@ const Classes = (props) => {
|
|
|
1325
1301
|
props.onCreateClass && props.onCreateClass(values);
|
|
1326
1302
|
}) }, /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React__namespace.createElement(
|
|
1327
1303
|
core.TextInput,
|
|
1328
|
-
__spreadValues$
|
|
1304
|
+
__spreadValues$c({
|
|
1329
1305
|
withAsterisk: true,
|
|
1330
1306
|
label: "Name",
|
|
1331
1307
|
placeholder: "Class name"
|
|
1332
1308
|
}, form$1.getInputProps("name"))
|
|
1333
1309
|
), /* @__PURE__ */ React__namespace.createElement(
|
|
1334
1310
|
core.TextInput,
|
|
1335
|
-
__spreadValues$
|
|
1311
|
+
__spreadValues$c({
|
|
1336
1312
|
label: "Description",
|
|
1337
1313
|
placeholder: "A class for my first period English students"
|
|
1338
1314
|
}, form$1.getInputProps("description"))
|
|
@@ -1636,29 +1612,29 @@ function Stack$3(props) {
|
|
|
1636
1612
|
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."))));
|
|
1637
1613
|
}
|
|
1638
1614
|
|
|
1639
|
-
var __defProp$
|
|
1640
|
-
var __defProps$
|
|
1641
|
-
var __getOwnPropDescs$
|
|
1642
|
-
var __getOwnPropSymbols$
|
|
1643
|
-
var __hasOwnProp$
|
|
1644
|
-
var __propIsEnum$
|
|
1645
|
-
var __defNormalProp$
|
|
1646
|
-
var __spreadValues$
|
|
1647
|
-
for (var prop in b || (b = {}))
|
|
1648
|
-
if (__hasOwnProp$
|
|
1649
|
-
__defNormalProp$
|
|
1650
|
-
if (__getOwnPropSymbols$
|
|
1651
|
-
for (var prop of __getOwnPropSymbols$
|
|
1652
|
-
if (__propIsEnum$
|
|
1653
|
-
__defNormalProp$
|
|
1615
|
+
var __defProp$b = Object.defineProperty;
|
|
1616
|
+
var __defProps$9 = Object.defineProperties;
|
|
1617
|
+
var __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors;
|
|
1618
|
+
var __getOwnPropSymbols$b = Object.getOwnPropertySymbols;
|
|
1619
|
+
var __hasOwnProp$b = Object.prototype.hasOwnProperty;
|
|
1620
|
+
var __propIsEnum$b = Object.prototype.propertyIsEnumerable;
|
|
1621
|
+
var __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
1622
|
+
var __spreadValues$b = (a, b) => {
|
|
1623
|
+
for (var prop in b || (b = {}))
|
|
1624
|
+
if (__hasOwnProp$b.call(b, prop))
|
|
1625
|
+
__defNormalProp$b(a, prop, b[prop]);
|
|
1626
|
+
if (__getOwnPropSymbols$b)
|
|
1627
|
+
for (var prop of __getOwnPropSymbols$b(b)) {
|
|
1628
|
+
if (__propIsEnum$b.call(b, prop))
|
|
1629
|
+
__defNormalProp$b(a, prop, b[prop]);
|
|
1654
1630
|
}
|
|
1655
1631
|
return a;
|
|
1656
1632
|
};
|
|
1657
|
-
var __spreadProps$
|
|
1633
|
+
var __spreadProps$9 = (a, b) => __defProps$9(a, __getOwnPropDescs$9(b));
|
|
1658
1634
|
function Table$6(props) {
|
|
1659
1635
|
const [expanded, setExpanded] = React__namespace.useState({});
|
|
1660
1636
|
const preparedItems = React__namespace.useMemo(() => {
|
|
1661
|
-
return props.items.map((item) => __spreadProps$
|
|
1637
|
+
return props.items.map((item) => __spreadProps$9(__spreadValues$b({}, item), {
|
|
1662
1638
|
status: item.isComplete ? 2 : item.isStarted ? 1 : 0
|
|
1663
1639
|
}));
|
|
1664
1640
|
}, [props.items]);
|
|
@@ -1682,7 +1658,7 @@ function Table$6(props) {
|
|
|
1682
1658
|
return /* @__PURE__ */ React__namespace.createElement("div", { key: row.userId, className: "rounded-xl border border-slate-200 bg-white shadow-sm" }, /* @__PURE__ */ React__namespace.createElement(
|
|
1683
1659
|
"div",
|
|
1684
1660
|
{
|
|
1685
|
-
onClick: () => setExpanded(__spreadProps$
|
|
1661
|
+
onClick: () => setExpanded(__spreadProps$9(__spreadValues$b({}, expanded), { [row.userId]: !isOpen })),
|
|
1686
1662
|
className: "flex cursor-pointer items-center gap-4 p-4"
|
|
1687
1663
|
},
|
|
1688
1664
|
/* @__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))),
|
|
@@ -1983,25 +1959,25 @@ function Table$4(props) {
|
|
|
1983
1959
|
}));
|
|
1984
1960
|
}
|
|
1985
1961
|
|
|
1986
|
-
var __defProp$
|
|
1987
|
-
var __defProps$
|
|
1988
|
-
var __getOwnPropDescs$
|
|
1989
|
-
var __getOwnPropSymbols$
|
|
1990
|
-
var __hasOwnProp$
|
|
1991
|
-
var __propIsEnum$
|
|
1992
|
-
var __defNormalProp$
|
|
1993
|
-
var __spreadValues$
|
|
1962
|
+
var __defProp$a = Object.defineProperty;
|
|
1963
|
+
var __defProps$8 = Object.defineProperties;
|
|
1964
|
+
var __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;
|
|
1965
|
+
var __getOwnPropSymbols$a = Object.getOwnPropertySymbols;
|
|
1966
|
+
var __hasOwnProp$a = Object.prototype.hasOwnProperty;
|
|
1967
|
+
var __propIsEnum$a = Object.prototype.propertyIsEnumerable;
|
|
1968
|
+
var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
1969
|
+
var __spreadValues$a = (a, b) => {
|
|
1994
1970
|
for (var prop in b || (b = {}))
|
|
1995
|
-
if (__hasOwnProp$
|
|
1996
|
-
__defNormalProp$
|
|
1997
|
-
if (__getOwnPropSymbols$
|
|
1998
|
-
for (var prop of __getOwnPropSymbols$
|
|
1999
|
-
if (__propIsEnum$
|
|
2000
|
-
__defNormalProp$
|
|
1971
|
+
if (__hasOwnProp$a.call(b, prop))
|
|
1972
|
+
__defNormalProp$a(a, prop, b[prop]);
|
|
1973
|
+
if (__getOwnPropSymbols$a)
|
|
1974
|
+
for (var prop of __getOwnPropSymbols$a(b)) {
|
|
1975
|
+
if (__propIsEnum$a.call(b, prop))
|
|
1976
|
+
__defNormalProp$a(a, prop, b[prop]);
|
|
2001
1977
|
}
|
|
2002
1978
|
return a;
|
|
2003
1979
|
};
|
|
2004
|
-
var __spreadProps$
|
|
1980
|
+
var __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));
|
|
2005
1981
|
const People = (props) => {
|
|
2006
1982
|
const form$1 = form.useForm({
|
|
2007
1983
|
initialValues: {
|
|
@@ -2033,27 +2009,27 @@ const People = (props) => {
|
|
|
2033
2009
|
padding: "xl",
|
|
2034
2010
|
size: "xl"
|
|
2035
2011
|
},
|
|
2036
|
-
/* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ React__namespace.createElement(DropzoneButton, __spreadProps$
|
|
2012
|
+
/* @__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(() => {
|
|
2037
2013
|
const values = form$1.values;
|
|
2038
2014
|
form$1.reset();
|
|
2039
2015
|
setOpened(false);
|
|
2040
2016
|
props.onCreateUsers && props.onCreateUsers([values]);
|
|
2041
2017
|
}) }, /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React__namespace.createElement(
|
|
2042
2018
|
core.TextInput,
|
|
2043
|
-
__spreadValues$
|
|
2019
|
+
__spreadValues$a({
|
|
2044
2020
|
withAsterisk: true,
|
|
2045
2021
|
label: "Email",
|
|
2046
2022
|
placeholder: "Email"
|
|
2047
2023
|
}, form$1.getInputProps("email"))
|
|
2048
2024
|
), /* @__PURE__ */ React__namespace.createElement(core.Group, { grow: true }, /* @__PURE__ */ React__namespace.createElement(
|
|
2049
2025
|
core.TextInput,
|
|
2050
|
-
__spreadValues$
|
|
2026
|
+
__spreadValues$a({
|
|
2051
2027
|
label: "Given name",
|
|
2052
2028
|
placeholder: "Given name"
|
|
2053
2029
|
}, form$1.getInputProps("givenName"))
|
|
2054
2030
|
), /* @__PURE__ */ React__namespace.createElement(
|
|
2055
2031
|
core.TextInput,
|
|
2056
|
-
__spreadValues$
|
|
2032
|
+
__spreadValues$a({
|
|
2057
2033
|
label: "Family name",
|
|
2058
2034
|
placeholder: "Family name"
|
|
2059
2035
|
}, form$1.getInputProps("familyName"))
|
|
@@ -2239,24 +2215,24 @@ const StartAnonymousLesson = (props) => {
|
|
|
2239
2215
|
))))));
|
|
2240
2216
|
};
|
|
2241
2217
|
|
|
2242
|
-
var __defProp$
|
|
2243
|
-
var __getOwnPropSymbols$
|
|
2244
|
-
var __hasOwnProp$
|
|
2245
|
-
var __propIsEnum$
|
|
2246
|
-
var __defNormalProp$
|
|
2247
|
-
var __spreadValues$
|
|
2218
|
+
var __defProp$9 = Object.defineProperty;
|
|
2219
|
+
var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;
|
|
2220
|
+
var __hasOwnProp$9 = Object.prototype.hasOwnProperty;
|
|
2221
|
+
var __propIsEnum$9 = Object.prototype.propertyIsEnumerable;
|
|
2222
|
+
var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2223
|
+
var __spreadValues$9 = (a, b) => {
|
|
2248
2224
|
for (var prop in b || (b = {}))
|
|
2249
|
-
if (__hasOwnProp$
|
|
2250
|
-
__defNormalProp$
|
|
2251
|
-
if (__getOwnPropSymbols$
|
|
2252
|
-
for (var prop of __getOwnPropSymbols$
|
|
2253
|
-
if (__propIsEnum$
|
|
2254
|
-
__defNormalProp$
|
|
2225
|
+
if (__hasOwnProp$9.call(b, prop))
|
|
2226
|
+
__defNormalProp$9(a, prop, b[prop]);
|
|
2227
|
+
if (__getOwnPropSymbols$9)
|
|
2228
|
+
for (var prop of __getOwnPropSymbols$9(b)) {
|
|
2229
|
+
if (__propIsEnum$9.call(b, prop))
|
|
2230
|
+
__defNormalProp$9(a, prop, b[prop]);
|
|
2255
2231
|
}
|
|
2256
2232
|
return a;
|
|
2257
2233
|
};
|
|
2258
2234
|
const BadgeGrid = (props) => {
|
|
2259
|
-
const badges = props.badges.map((b) => /* @__PURE__ */ React__namespace.createElement(TaskCard, __spreadValues$
|
|
2235
|
+
const badges = props.badges.map((b) => /* @__PURE__ */ React__namespace.createElement(TaskCard, __spreadValues$9({ key: b.title }, b)));
|
|
2260
2236
|
return /* @__PURE__ */ React__namespace.createElement(core.SimpleGrid, { cols: 4, breakpoints: [{ maxWidth: "sm", cols: 1 }, { maxWidth: "md", cols: 3 }] }, badges);
|
|
2261
2237
|
};
|
|
2262
2238
|
function TaskCard(props) {
|
|
@@ -2290,30 +2266,30 @@ const UserInfo = (props) => {
|
|
|
2290
2266
|
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));
|
|
2291
2267
|
};
|
|
2292
2268
|
|
|
2293
|
-
var __defProp$
|
|
2294
|
-
var __getOwnPropSymbols$
|
|
2295
|
-
var __hasOwnProp$
|
|
2296
|
-
var __propIsEnum$
|
|
2297
|
-
var __defNormalProp$
|
|
2298
|
-
var __spreadValues$
|
|
2269
|
+
var __defProp$8 = Object.defineProperty;
|
|
2270
|
+
var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;
|
|
2271
|
+
var __hasOwnProp$8 = Object.prototype.hasOwnProperty;
|
|
2272
|
+
var __propIsEnum$8 = Object.prototype.propertyIsEnumerable;
|
|
2273
|
+
var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2274
|
+
var __spreadValues$8 = (a, b) => {
|
|
2299
2275
|
for (var prop in b || (b = {}))
|
|
2300
|
-
if (__hasOwnProp$
|
|
2301
|
-
__defNormalProp$
|
|
2302
|
-
if (__getOwnPropSymbols$
|
|
2303
|
-
for (var prop of __getOwnPropSymbols$
|
|
2304
|
-
if (__propIsEnum$
|
|
2305
|
-
__defNormalProp$
|
|
2276
|
+
if (__hasOwnProp$8.call(b, prop))
|
|
2277
|
+
__defNormalProp$8(a, prop, b[prop]);
|
|
2278
|
+
if (__getOwnPropSymbols$8)
|
|
2279
|
+
for (var prop of __getOwnPropSymbols$8(b)) {
|
|
2280
|
+
if (__propIsEnum$8.call(b, prop))
|
|
2281
|
+
__defNormalProp$8(a, prop, b[prop]);
|
|
2306
2282
|
}
|
|
2307
2283
|
return a;
|
|
2308
2284
|
};
|
|
2309
2285
|
var __objRest$1 = (source, exclude) => {
|
|
2310
2286
|
var target = {};
|
|
2311
2287
|
for (var prop in source)
|
|
2312
|
-
if (__hasOwnProp$
|
|
2288
|
+
if (__hasOwnProp$8.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
2313
2289
|
target[prop] = source[prop];
|
|
2314
|
-
if (source != null && __getOwnPropSymbols$
|
|
2315
|
-
for (var prop of __getOwnPropSymbols$
|
|
2316
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum$
|
|
2290
|
+
if (source != null && __getOwnPropSymbols$8)
|
|
2291
|
+
for (var prop of __getOwnPropSymbols$8(source)) {
|
|
2292
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum$8.call(source, prop))
|
|
2317
2293
|
target[prop] = source[prop];
|
|
2318
2294
|
}
|
|
2319
2295
|
return target;
|
|
@@ -2380,9 +2356,9 @@ const TenantBanner = (_a) => {
|
|
|
2380
2356
|
};
|
|
2381
2357
|
return /* @__PURE__ */ React__namespace.createElement(
|
|
2382
2358
|
core.Card,
|
|
2383
|
-
__spreadValues$
|
|
2359
|
+
__spreadValues$8({
|
|
2384
2360
|
radius: "md",
|
|
2385
|
-
style: __spreadValues$
|
|
2361
|
+
style: __spreadValues$8({ backgroundImage: `url(${image})` }, style),
|
|
2386
2362
|
className: cx(classes.card, className)
|
|
2387
2363
|
}, others),
|
|
2388
2364
|
/* @__PURE__ */ React__namespace.createElement(
|
|
@@ -2458,33 +2434,33 @@ const TrialHome = (props) => {
|
|
|
2458
2434
|
)), /* @__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 })));
|
|
2459
2435
|
};
|
|
2460
2436
|
|
|
2461
|
-
var __defProp$
|
|
2462
|
-
var __defProps$
|
|
2463
|
-
var __getOwnPropDescs$
|
|
2464
|
-
var __getOwnPropSymbols$
|
|
2465
|
-
var __hasOwnProp$
|
|
2466
|
-
var __propIsEnum$
|
|
2467
|
-
var __defNormalProp$
|
|
2468
|
-
var __spreadValues$
|
|
2437
|
+
var __defProp$7 = Object.defineProperty;
|
|
2438
|
+
var __defProps$7 = Object.defineProperties;
|
|
2439
|
+
var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;
|
|
2440
|
+
var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;
|
|
2441
|
+
var __hasOwnProp$7 = Object.prototype.hasOwnProperty;
|
|
2442
|
+
var __propIsEnum$7 = Object.prototype.propertyIsEnumerable;
|
|
2443
|
+
var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2444
|
+
var __spreadValues$7 = (a, b) => {
|
|
2469
2445
|
for (var prop in b || (b = {}))
|
|
2470
|
-
if (__hasOwnProp$
|
|
2471
|
-
__defNormalProp$
|
|
2472
|
-
if (__getOwnPropSymbols$
|
|
2473
|
-
for (var prop of __getOwnPropSymbols$
|
|
2474
|
-
if (__propIsEnum$
|
|
2475
|
-
__defNormalProp$
|
|
2446
|
+
if (__hasOwnProp$7.call(b, prop))
|
|
2447
|
+
__defNormalProp$7(a, prop, b[prop]);
|
|
2448
|
+
if (__getOwnPropSymbols$7)
|
|
2449
|
+
for (var prop of __getOwnPropSymbols$7(b)) {
|
|
2450
|
+
if (__propIsEnum$7.call(b, prop))
|
|
2451
|
+
__defNormalProp$7(a, prop, b[prop]);
|
|
2476
2452
|
}
|
|
2477
2453
|
return a;
|
|
2478
2454
|
};
|
|
2479
|
-
var __spreadProps$
|
|
2455
|
+
var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
|
|
2480
2456
|
var __objRest = (source, exclude) => {
|
|
2481
2457
|
var target = {};
|
|
2482
2458
|
for (var prop in source)
|
|
2483
|
-
if (__hasOwnProp$
|
|
2459
|
+
if (__hasOwnProp$7.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
2484
2460
|
target[prop] = source[prop];
|
|
2485
|
-
if (source != null && __getOwnPropSymbols$
|
|
2486
|
-
for (var prop of __getOwnPropSymbols$
|
|
2487
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum$
|
|
2461
|
+
if (source != null && __getOwnPropSymbols$7)
|
|
2462
|
+
for (var prop of __getOwnPropSymbols$7(source)) {
|
|
2463
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum$7.call(source, prop))
|
|
2488
2464
|
target[prop] = source[prop];
|
|
2489
2465
|
}
|
|
2490
2466
|
return target;
|
|
@@ -2534,7 +2510,7 @@ function ImageCheckbox(_a) {
|
|
|
2534
2510
|
const { classes, cx } = useStyles$2({ checked: value });
|
|
2535
2511
|
return /* @__PURE__ */ React__namespace.createElement(
|
|
2536
2512
|
core.UnstyledButton,
|
|
2537
|
-
__spreadProps$
|
|
2513
|
+
__spreadProps$7(__spreadValues$7({}, others), {
|
|
2538
2514
|
onClick: () => handleChange(!value),
|
|
2539
2515
|
className: cx(classes.button, className)
|
|
2540
2516
|
}),
|
|
@@ -2555,7 +2531,7 @@ function ImageCheckbox(_a) {
|
|
|
2555
2531
|
function SelectGrid(props) {
|
|
2556
2532
|
const items = props.items.map((item) => /* @__PURE__ */ React__namespace.createElement(
|
|
2557
2533
|
ImageCheckbox,
|
|
2558
|
-
__spreadProps$
|
|
2534
|
+
__spreadProps$7(__spreadValues$7({}, item), {
|
|
2559
2535
|
key: item.title,
|
|
2560
2536
|
onChange: (checked) => props.onChange(item.title, checked)
|
|
2561
2537
|
})
|
|
@@ -2573,25 +2549,25 @@ function SelectGrid(props) {
|
|
|
2573
2549
|
);
|
|
2574
2550
|
}
|
|
2575
2551
|
|
|
2576
|
-
var __defProp$
|
|
2577
|
-
var __defProps$
|
|
2578
|
-
var __getOwnPropDescs$
|
|
2579
|
-
var __getOwnPropSymbols$
|
|
2580
|
-
var __hasOwnProp$
|
|
2581
|
-
var __propIsEnum$
|
|
2582
|
-
var __defNormalProp$
|
|
2583
|
-
var __spreadValues$
|
|
2552
|
+
var __defProp$6 = Object.defineProperty;
|
|
2553
|
+
var __defProps$6 = Object.defineProperties;
|
|
2554
|
+
var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;
|
|
2555
|
+
var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;
|
|
2556
|
+
var __hasOwnProp$6 = Object.prototype.hasOwnProperty;
|
|
2557
|
+
var __propIsEnum$6 = Object.prototype.propertyIsEnumerable;
|
|
2558
|
+
var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2559
|
+
var __spreadValues$6 = (a, b) => {
|
|
2584
2560
|
for (var prop in b || (b = {}))
|
|
2585
|
-
if (__hasOwnProp$
|
|
2586
|
-
__defNormalProp$
|
|
2587
|
-
if (__getOwnPropSymbols$
|
|
2588
|
-
for (var prop of __getOwnPropSymbols$
|
|
2589
|
-
if (__propIsEnum$
|
|
2590
|
-
__defNormalProp$
|
|
2561
|
+
if (__hasOwnProp$6.call(b, prop))
|
|
2562
|
+
__defNormalProp$6(a, prop, b[prop]);
|
|
2563
|
+
if (__getOwnPropSymbols$6)
|
|
2564
|
+
for (var prop of __getOwnPropSymbols$6(b)) {
|
|
2565
|
+
if (__propIsEnum$6.call(b, prop))
|
|
2566
|
+
__defNormalProp$6(a, prop, b[prop]);
|
|
2591
2567
|
}
|
|
2592
2568
|
return a;
|
|
2593
2569
|
};
|
|
2594
|
-
var __spreadProps$
|
|
2570
|
+
var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
|
|
2595
2571
|
const useStyles$1 = core.createStyles((theme) => ({
|
|
2596
2572
|
wrapper: {
|
|
2597
2573
|
minHeight: "100%",
|
|
@@ -2701,7 +2677,7 @@ const TrialRegistration = (props) => {
|
|
|
2701
2677
|
label: "School/Organization Name",
|
|
2702
2678
|
placeholder: "What's the name of your school?",
|
|
2703
2679
|
data: props.organizations.map((o) => {
|
|
2704
|
-
return __spreadProps$
|
|
2680
|
+
return __spreadProps$6(__spreadValues$6({}, o), { value: o.displayName });
|
|
2705
2681
|
}),
|
|
2706
2682
|
onItemSubmit: (item) => setOrganization({ organizationId: item.organizationId, displayName: item.displayName }),
|
|
2707
2683
|
onChange: (next) => {
|
|
@@ -2713,7 +2689,7 @@ const TrialRegistration = (props) => {
|
|
|
2713
2689
|
SelectGrid,
|
|
2714
2690
|
{
|
|
2715
2691
|
items: OPTIONS,
|
|
2716
|
-
onChange: (e, checked) => setInterests(__spreadProps$
|
|
2692
|
+
onChange: (e, checked) => setInterests(__spreadProps$6(__spreadValues$6({}, interests), { [e]: checked }))
|
|
2717
2693
|
}
|
|
2718
2694
|
), /* @__PURE__ */ React__namespace.createElement(core.Group, { position: "right", mt: "md" }, /* @__PURE__ */ React__namespace.createElement(
|
|
2719
2695
|
core.Button,
|
|
@@ -2751,25 +2727,25 @@ const AdminProvider = (props) => {
|
|
|
2751
2727
|
);
|
|
2752
2728
|
};
|
|
2753
2729
|
|
|
2754
|
-
var __defProp$
|
|
2755
|
-
var __defProps$
|
|
2756
|
-
var __getOwnPropDescs$
|
|
2757
|
-
var __getOwnPropSymbols$
|
|
2758
|
-
var __hasOwnProp$
|
|
2759
|
-
var __propIsEnum$
|
|
2760
|
-
var __defNormalProp$
|
|
2761
|
-
var __spreadValues$
|
|
2730
|
+
var __defProp$5 = Object.defineProperty;
|
|
2731
|
+
var __defProps$5 = Object.defineProperties;
|
|
2732
|
+
var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;
|
|
2733
|
+
var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
|
|
2734
|
+
var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
|
|
2735
|
+
var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
|
|
2736
|
+
var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2737
|
+
var __spreadValues$5 = (a, b) => {
|
|
2762
2738
|
for (var prop in b || (b = {}))
|
|
2763
|
-
if (__hasOwnProp$
|
|
2764
|
-
__defNormalProp$
|
|
2765
|
-
if (__getOwnPropSymbols$
|
|
2766
|
-
for (var prop of __getOwnPropSymbols$
|
|
2767
|
-
if (__propIsEnum$
|
|
2768
|
-
__defNormalProp$
|
|
2739
|
+
if (__hasOwnProp$5.call(b, prop))
|
|
2740
|
+
__defNormalProp$5(a, prop, b[prop]);
|
|
2741
|
+
if (__getOwnPropSymbols$5)
|
|
2742
|
+
for (var prop of __getOwnPropSymbols$5(b)) {
|
|
2743
|
+
if (__propIsEnum$5.call(b, prop))
|
|
2744
|
+
__defNormalProp$5(a, prop, b[prop]);
|
|
2769
2745
|
}
|
|
2770
2746
|
return a;
|
|
2771
2747
|
};
|
|
2772
|
-
var __spreadProps$
|
|
2748
|
+
var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
|
|
2773
2749
|
const useStyles = core.createStyles((theme, props) => ({
|
|
2774
2750
|
footer: {
|
|
2775
2751
|
paddingTop: theme.spacing.md,
|
|
@@ -2865,7 +2841,7 @@ const App = (props) => {
|
|
|
2865
2841
|
padding: "xs",
|
|
2866
2842
|
navbar: props.navbar && /* @__PURE__ */ React__namespace.createElement(
|
|
2867
2843
|
Navbar,
|
|
2868
|
-
__spreadProps$
|
|
2844
|
+
__spreadProps$5(__spreadValues$5({}, props.navbar.props), {
|
|
2869
2845
|
onSwitchAccounts: account.accounts && account.accounts.length > 1 ? () => account.setChangeModalOpen(true) : void 0
|
|
2870
2846
|
})
|
|
2871
2847
|
),
|
|
@@ -3016,30 +2992,30 @@ function Stack$1(props) {
|
|
|
3016
2992
|
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"))));
|
|
3017
2993
|
}
|
|
3018
2994
|
|
|
3019
|
-
var __defProp$
|
|
3020
|
-
var __defProps$
|
|
3021
|
-
var __getOwnPropDescs$
|
|
3022
|
-
var __getOwnPropSymbols$
|
|
3023
|
-
var __hasOwnProp$
|
|
3024
|
-
var __propIsEnum$
|
|
3025
|
-
var __defNormalProp$
|
|
3026
|
-
var __spreadValues$
|
|
2995
|
+
var __defProp$4 = Object.defineProperty;
|
|
2996
|
+
var __defProps$4 = Object.defineProperties;
|
|
2997
|
+
var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
|
|
2998
|
+
var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
|
|
2999
|
+
var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
|
|
3000
|
+
var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
|
|
3001
|
+
var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3002
|
+
var __spreadValues$4 = (a, b) => {
|
|
3027
3003
|
for (var prop in b || (b = {}))
|
|
3028
|
-
if (__hasOwnProp$
|
|
3029
|
-
__defNormalProp$
|
|
3030
|
-
if (__getOwnPropSymbols$
|
|
3031
|
-
for (var prop of __getOwnPropSymbols$
|
|
3032
|
-
if (__propIsEnum$
|
|
3033
|
-
__defNormalProp$
|
|
3004
|
+
if (__hasOwnProp$4.call(b, prop))
|
|
3005
|
+
__defNormalProp$4(a, prop, b[prop]);
|
|
3006
|
+
if (__getOwnPropSymbols$4)
|
|
3007
|
+
for (var prop of __getOwnPropSymbols$4(b)) {
|
|
3008
|
+
if (__propIsEnum$4.call(b, prop))
|
|
3009
|
+
__defNormalProp$4(a, prop, b[prop]);
|
|
3034
3010
|
}
|
|
3035
3011
|
return a;
|
|
3036
3012
|
};
|
|
3037
|
-
var __spreadProps$
|
|
3013
|
+
var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
|
|
3038
3014
|
function Table$2(props) {
|
|
3039
3015
|
const [expanded, setExpanded] = React__namespace.useState({});
|
|
3040
3016
|
const categories = props.categories || [];
|
|
3041
3017
|
const preparedItems = React__namespace.useMemo(() => {
|
|
3042
|
-
return (props.items || []).map((item) => __spreadValues$
|
|
3018
|
+
return (props.items || []).map((item) => __spreadValues$4(__spreadValues$4({}, item), item.categoryPoints));
|
|
3043
3019
|
}, [props.items]);
|
|
3044
3020
|
const { items: sortedItems, requestSort, sortConfig } = useSortableData(preparedItems);
|
|
3045
3021
|
if (props.loading && props.items.length === 0) {
|
|
@@ -3061,7 +3037,7 @@ function Table$2(props) {
|
|
|
3061
3037
|
return /* @__PURE__ */ React__namespace.createElement("div", { key: row.userId, className: "rounded-xl border border-slate-200 bg-white shadow-sm" }, /* @__PURE__ */ React__namespace.createElement(
|
|
3062
3038
|
"div",
|
|
3063
3039
|
{
|
|
3064
|
-
onClick: () => setExpanded(__spreadProps$
|
|
3040
|
+
onClick: () => setExpanded(__spreadProps$4(__spreadValues$4({}, expanded), { [row.userId]: !isOpen })),
|
|
3065
3041
|
className: "flex cursor-pointer items-center gap-4 p-4"
|
|
3066
3042
|
},
|
|
3067
3043
|
/* @__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))),
|
|
@@ -3076,8 +3052,8 @@ function Table$2(props) {
|
|
|
3076
3052
|
}
|
|
3077
3053
|
|
|
3078
3054
|
function Table$1(props) {
|
|
3079
|
-
const { items:
|
|
3080
|
-
if (props.
|
|
3055
|
+
const { items: sortedBadges, requestSort, sortConfig } = useSortableData(props.badges);
|
|
3056
|
+
if (props.badges.length === 0) {
|
|
3081
3057
|
return /* @__PURE__ */ React__namespace.createElement(
|
|
3082
3058
|
PlaceholderBanner,
|
|
3083
3059
|
{
|
|
@@ -3089,30 +3065,116 @@ function Table$1(props) {
|
|
|
3089
3065
|
);
|
|
3090
3066
|
}
|
|
3091
3067
|
const indicator = (key) => sortConfig.key !== key ? "" : sortConfig.direction === "desc" ? " \u25BE" : " \u25B4";
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
)));
|
|
3068
|
+
const groupedIds = new Set(props.categories.map((c) => c.categoryId));
|
|
3069
|
+
const forCategory = (categoryId) => sortedBadges.filter((b) => {
|
|
3070
|
+
var _a;
|
|
3071
|
+
return (_a = b.categories) == null ? void 0 : _a.includes(categoryId);
|
|
3072
|
+
});
|
|
3073
|
+
const other = sortedBadges.filter((b) => {
|
|
3074
|
+
var _a;
|
|
3075
|
+
return !((_a = b.categories) == null ? void 0 : _a.some((id) => groupedIds.has(id)));
|
|
3076
|
+
});
|
|
3077
|
+
return /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "flex gap-4 px-4 text-[10.5px] font-extrabold uppercase tracking-wide text-slate-400" }, /* @__PURE__ */ React__namespace.createElement("button", { onClick: () => requestSort("badgeName"), className: "flex-1 text-left hover:text-slate-600" }, "Badge Name", indicator("badgeName")), /* @__PURE__ */ React__namespace.createElement("button", { onClick: () => requestSort("weight"), className: "w-24 shrink-0 text-right hover:text-slate-600" }, "Point Value", indicator("weight")), /* @__PURE__ */ React__namespace.createElement("button", { onClick: () => requestSort("percentageCompletion"), className: "w-36 shrink-0 text-right hover:text-slate-600" }, "Badge Completion", indicator("percentageCompletion"))), props.categories.map((category) => /* @__PURE__ */ React__namespace.createElement(CategorySection, { key: category.categoryId, name: category.name, badges: forCategory(category.categoryId) })), other.length > 0 && /* @__PURE__ */ React__namespace.createElement(CategorySection, { name: "Other badges", badges: other }));
|
|
3102
3078
|
}
|
|
3079
|
+
const CategorySection = (props) => /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-col gap-2" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "px-1 text-sm font-extrabold tracking-tight text-dark-blue-400" }, props.name), props.badges.length === 0 && /* @__PURE__ */ React__namespace.createElement("div", { className: "rounded-xl border border-dashed border-slate-200 px-4 py-3 text-xs text-slate-400" }, "No badges yet."), props.badges.map((row) => /* @__PURE__ */ React__namespace.createElement(
|
|
3080
|
+
reactRouterDom.Link,
|
|
3081
|
+
{
|
|
3082
|
+
key: row.badgeId,
|
|
3083
|
+
to: row.href,
|
|
3084
|
+
className: "flex items-center gap-4 rounded-xl border border-slate-200 bg-white p-4 no-underline shadow-sm hover:bg-slate-50"
|
|
3085
|
+
},
|
|
3086
|
+
/* @__PURE__ */ React__namespace.createElement("div", { className: "min-w-0 flex-1 text-sm font-bold text-dark-blue-400" }, row.badgeName),
|
|
3087
|
+
/* @__PURE__ */ React__namespace.createElement("div", { className: "w-24 shrink-0 text-right text-xs font-black text-mint-400" }, row.weight, " pts"),
|
|
3088
|
+
/* @__PURE__ */ React__namespace.createElement("div", { className: "w-36 shrink-0 text-right text-xs text-slate-500" }, Math.round((row.percentageCompletion + Number.EPSILON) * 100), "%")
|
|
3089
|
+
)));
|
|
3090
|
+
|
|
3091
|
+
var __defProp$3 = Object.defineProperty;
|
|
3092
|
+
var __defProps$3 = Object.defineProperties;
|
|
3093
|
+
var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
|
|
3094
|
+
var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
|
|
3095
|
+
var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
|
|
3096
|
+
var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
|
|
3097
|
+
var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3098
|
+
var __spreadValues$3 = (a, b) => {
|
|
3099
|
+
for (var prop in b || (b = {}))
|
|
3100
|
+
if (__hasOwnProp$3.call(b, prop))
|
|
3101
|
+
__defNormalProp$3(a, prop, b[prop]);
|
|
3102
|
+
if (__getOwnPropSymbols$3)
|
|
3103
|
+
for (var prop of __getOwnPropSymbols$3(b)) {
|
|
3104
|
+
if (__propIsEnum$3.call(b, prop))
|
|
3105
|
+
__defNormalProp$3(a, prop, b[prop]);
|
|
3106
|
+
}
|
|
3107
|
+
return a;
|
|
3108
|
+
};
|
|
3109
|
+
var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
|
|
3110
|
+
function buildCategoryTree(categories) {
|
|
3111
|
+
const byId = /* @__PURE__ */ new Map();
|
|
3112
|
+
categories.forEach((c) => byId.set(c.categoryId, c));
|
|
3113
|
+
const childrenByParent = /* @__PURE__ */ new Map();
|
|
3114
|
+
categories.forEach((c) => {
|
|
3115
|
+
const parentId = c.parentCategoryId;
|
|
3116
|
+
const hasValidParent = !!parentId && parentId !== c.categoryId && byId.has(parentId);
|
|
3117
|
+
if (!hasValidParent)
|
|
3118
|
+
return;
|
|
3119
|
+
const siblings = childrenByParent.get(parentId) || [];
|
|
3120
|
+
siblings.push(c);
|
|
3121
|
+
childrenByParent.set(parentId, siblings);
|
|
3122
|
+
});
|
|
3123
|
+
const attached = /* @__PURE__ */ new Set();
|
|
3124
|
+
const attach = (category, ancestry) => {
|
|
3125
|
+
attached.add(category.categoryId);
|
|
3126
|
+
const childAncestry = new Set(ancestry).add(category.categoryId);
|
|
3127
|
+
const children = (childrenByParent.get(category.categoryId) || []).filter((child) => !childAncestry.has(child.categoryId)).map((child) => attach(child, childAncestry));
|
|
3128
|
+
return __spreadProps$3(__spreadValues$3({}, category), { children });
|
|
3129
|
+
};
|
|
3130
|
+
const roots = categories.filter((c) => {
|
|
3131
|
+
const parentId = c.parentCategoryId;
|
|
3132
|
+
return !parentId || parentId === c.categoryId || !byId.has(parentId);
|
|
3133
|
+
});
|
|
3134
|
+
const tree = roots.map((root) => attach(root, /* @__PURE__ */ new Set()));
|
|
3135
|
+
categories.forEach((c) => {
|
|
3136
|
+
if (!attached.has(c.categoryId))
|
|
3137
|
+
tree.push(attach(c, /* @__PURE__ */ new Set()));
|
|
3138
|
+
});
|
|
3139
|
+
return tree;
|
|
3140
|
+
}
|
|
3141
|
+
|
|
3142
|
+
function CategoriesModal(props) {
|
|
3143
|
+
const tree = React__namespace.useMemo(() => buildCategoryTree(props.categories || []), [props.categories]);
|
|
3144
|
+
return /* @__PURE__ */ React__namespace.createElement(core.Modal, { opened: props.opened, onClose: props.onClose, title: "Category structure", size: "lg", centered: true }, /* @__PURE__ */ React__namespace.createElement("div", { className: "flex max-h-[70vh] flex-col gap-2 overflow-y-auto pr-1" }, tree.length === 0 && /* @__PURE__ */ React__namespace.createElement("p", { className: "text-sm text-slate-400" }, "No categories to display."), tree.map((node) => /* @__PURE__ */ React__namespace.createElement(CategoryNode, { key: node.categoryId, node, criteria: props.criteria, depth: 0 }))));
|
|
3145
|
+
}
|
|
3146
|
+
const CategoryNode = (props) => {
|
|
3147
|
+
var _a;
|
|
3148
|
+
const hasChildren = props.node.children.length > 0;
|
|
3149
|
+
const required = props.criteria[props.node.categoryId];
|
|
3150
|
+
return /* @__PURE__ */ React__namespace.createElement("div", { className: hasChildren ? "rounded-lg border border-slate-100 bg-slate-50/60 p-3" : "rounded-lg px-3 py-2 hover:bg-slate-50" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-wrap items-center justify-between gap-2" }, /* @__PURE__ */ React__namespace.createElement("span", { className: props.depth === 0 ? "text-sm font-extrabold text-dark-blue-400" : "text-xs font-bold text-dark-blue-400" }, props.node.name), /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-wrap items-center gap-1.5" }, required !== void 0 && /* @__PURE__ */ React__namespace.createElement("span", { className: "rounded-full bg-sky-blue-400/15 px-2 py-0.5 text-[10px] font-bold text-dark-blue-400" }, "min. ", required, " pts"), !!props.node.maxPoints && /* @__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" }, "cap ", props.node.maxPoints, " pts"))), !!((_a = props.node.description) == null ? void 0 : _a.trim()) && /* @__PURE__ */ React__namespace.createElement("p", { className: "mt-0.5 text-xs text-slate-500" }, props.node.description), hasChildren && /* @__PURE__ */ React__namespace.createElement("div", { className: "mt-3 flex flex-col gap-2 border-l-2 border-slate-200 pl-4" }, props.node.children.map((child) => /* @__PURE__ */ React__namespace.createElement(CategoryNode, { key: child.categoryId, node: child, criteria: props.criteria, depth: props.depth + 1 }))));
|
|
3151
|
+
};
|
|
3103
3152
|
|
|
3104
3153
|
const TABS$1 = [
|
|
3105
3154
|
{ label: "By Badge", value: "badges" },
|
|
3106
3155
|
{ label: "By student", value: "students" }
|
|
3107
3156
|
];
|
|
3108
3157
|
const Pathway = (props) => {
|
|
3109
|
-
var _a;
|
|
3158
|
+
var _a, _b, _c;
|
|
3110
3159
|
const [tab, setTab] = React.useState("badges");
|
|
3160
|
+
const [categoriesOpen, setCategoriesOpen] = React.useState(false);
|
|
3111
3161
|
const numberOfStudents = props.students.length;
|
|
3112
3162
|
const numberOfBadgesEarned = numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length : 0;
|
|
3113
3163
|
const criteria = props.criteria || {};
|
|
3114
3164
|
const criteriaCategories = (props.categories || []).filter((c) => criteria[c.categoryId] !== void 0);
|
|
3115
|
-
|
|
3165
|
+
const rootCategoryIds = new Set(
|
|
3166
|
+
(props.allCategories || []).filter((c) => !c.parentCategoryId).map((c) => c.categoryId)
|
|
3167
|
+
);
|
|
3168
|
+
const badgeGroupCategories = criteriaCategories.filter((c) => !rootCategoryIds.has(c.categoryId));
|
|
3169
|
+
return /* @__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: "flex items-start gap-4" }, /* @__PURE__ */ React__namespace.createElement(Emblem, { imageURL: props.imageURL, alt: props.title, size: "lg", icon: icons.IconRoute, accent: "cyan" }), /* @__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.title || "Pathway"), !!((_a = props.displayTags) == null ? void 0 : _a.length) && /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-wrap gap-1.5" }, props.displayTags.map((tag) => /* @__PURE__ */ React__namespace.createElement("span", { key: tag, className: "rounded-full bg-slate-100 px-2.5 py-1 text-[10px] font-bold text-slate-500" }, tag))), /* @__PURE__ */ React__namespace.createElement("p", { className: "max-w-xl text-sm text-slate-500" }, props.description || "No description"), (criteriaCategories.length > 0 || !!((_b = props.allCategories) == null ? void 0 : _b.length)) && /* @__PURE__ */ React__namespace.createElement("div", { className: "flex flex-wrap items-center gap-1.5 pt-0.5" }, criteriaCategories.length > 0 && /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement("span", { className: "text-[10.5px] font-extrabold uppercase tracking-wide text-slate-400" }, "Criteria"), criteriaCategories.map((c) => /* @__PURE__ */ React__namespace.createElement("span", { key: c.categoryId, className: "rounded-full bg-sky-blue-400/15 px-2.5 py-1 text-[10px] font-bold text-dark-blue-400" }, c.name, ": ", criteria[c.categoryId], "+", c.maxPoints ? ` of ${c.maxPoints}` : "", " pts"))), !!((_c = props.allCategories) == null ? void 0 : _c.length) && /* @__PURE__ */ React__namespace.createElement(
|
|
3170
|
+
"button",
|
|
3171
|
+
{
|
|
3172
|
+
onClick: () => setCategoriesOpen(true),
|
|
3173
|
+
className: "flex items-center gap-1.5 rounded-full border border-slate-200 bg-white px-2.5 py-1 text-[10px] font-bold text-dark-blue-400 hover:bg-slate-50"
|
|
3174
|
+
},
|
|
3175
|
+
/* @__PURE__ */ React__namespace.createElement(icons.IconCategory2, { size: 12, stroke: 2 }),
|
|
3176
|
+
" Categories"
|
|
3177
|
+
)))), !props.trial && /* @__PURE__ */ React__namespace.createElement(
|
|
3116
3178
|
SplitButton$1,
|
|
3117
3179
|
{
|
|
3118
3180
|
href: props.href,
|
|
@@ -3141,7 +3203,15 @@ const Pathway = (props) => {
|
|
|
3141
3203
|
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"}`
|
|
3142
3204
|
},
|
|
3143
3205
|
t.label
|
|
3144
|
-
))), (!!props.trial || tab === "badges") && /* @__PURE__ */ React__namespace.createElement(Table$1, { loading: props.loading,
|
|
3206
|
+
))), (!!props.trial || tab === "badges") && /* @__PURE__ */ React__namespace.createElement(Table$1, { loading: props.loading, badges: props.badges, categories: badgeGroupCategories }), !props.trial && tab === "students" && /* @__PURE__ */ React__namespace.createElement(Table$2, { loading: props.loading, items: props.students, categories: props.categories })), /* @__PURE__ */ React__namespace.createElement(
|
|
3207
|
+
CategoriesModal,
|
|
3208
|
+
{
|
|
3209
|
+
opened: categoriesOpen,
|
|
3210
|
+
onClose: () => setCategoriesOpen(false),
|
|
3211
|
+
categories: props.allCategories || [],
|
|
3212
|
+
criteria
|
|
3213
|
+
}
|
|
3214
|
+
));
|
|
3145
3215
|
};
|
|
3146
3216
|
|
|
3147
3217
|
const SplitButton = (props) => {
|