@local-civics/mgmt-ui 0.1.242 → 0.1.244
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 +30 -111
- package/dist/index.js +178 -425
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +180 -426
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useState, useMemo } from 'react';
|
|
3
|
-
import { IconChevronRight, IconVideo, IconSwitchHorizontal, IconLogout, IconHome2,
|
|
3
|
+
import { IconChevronRight, IconVideo, IconSwitchHorizontal, IconLogout, IconHome2, IconCategory2, IconRoute, IconAlbum, IconLambda, IconClipboard, IconMessageCircle, IconClipboardCheck, IconBuilding, IconBooks, IconBackpack, IconArrowLeft, IconClipboardCopy, IconTableExport, IconCaretDown, IconCaretUp, IconChevronDown, IconSearch, IconCheck, IconTrash, IconPlus, IconLink, IconDownload, IconCloudUpload, IconInfoCircle, IconPlaylistAdd, IconPointer, IconX, IconScribble, IconSchool, IconPodium, IconBriefcase, IconPresentation, IconNews, IconTools, IconBrandInstagram, IconBrandLinkedin, IconBrandFacebook, IconChevronLeft, IconRefresh } from '@tabler/icons';
|
|
4
4
|
import { Avatar, createStyles, Modal, Center, Loader, Container, Group, Button, Title, Text, Image, Drawer, Divider, TextInput, Tooltip, ActionIcon, SimpleGrid, Badge as Badge$1, Card, UnstyledButton, Overlay, Stack as Stack$5, ThemeIcon, Checkbox, Autocomplete, createEmotionCache, MantineProvider, AppShell } from '@mantine/core';
|
|
5
5
|
import { Link } from 'react-router-dom';
|
|
6
6
|
import 'external-svg-loader';
|
|
@@ -40,7 +40,7 @@ function styleInject(css, ref) {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
var css_248z = "@font-face{font-family:ProximaNova;src:url(https://cdn.localcivics.io/fonts/ProximaNova.otf) format(\"opentype\")}@font-face{font-family:ProximaNova;font-weight:700;src:url(https://cdn.localcivics.io/fonts/ProximaNovaBold.otf) format(\"opentype\")}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.pointer-events-none{pointer-events:none}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.\\!relative{position:relative!important}.left-3{left:.75rem}.top-1\\/2{top:50%}.left-3\\.5{left:.875rem}.bottom-\\[-20px\\]{bottom:-20px}.left-1\\/2{left:50%}.m-3{margin:.75rem}.mt-0\\.5{margin-top:.125rem}.mt-0{margin-top:0}.mt-6{margin-top:1.5rem}.mt-2{margin-top:.5rem}.mt-1{margin-top:.25rem}.mb-2{margin-bottom:.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}.mb-1{margin-bottom:.25rem}.ml-\\[29px\\]{margin-left:29px}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-full{height:100%}.h-9{height:2.25rem}.h-8{height:2rem}.h-7{height:1.75rem}.h-5{height:1.25rem}.h-12{height:3rem}.h-\\[300px\\]{height:300px}.h-screen{height:100vh}.h-14{height:3.5rem}.h-16{height:4rem}.h-28{height:7rem}.h-\\[30px\\]{height:30px}.h-\\[400px\\]{height:400px}.max-h-\\[70vh\\]{max-height:70vh}.w-10{width:2.5rem}.w-full{width:100%}.w-fit{width:-moz-fit-content;width:fit-content}.w-36{width:9rem}.w-28{width:7rem}.w-4{width:1rem}.w-9{width:2.25rem}.w-\\[296px\\]{width:296px}.w-40{width:10rem}.w-24{width:6rem}.w-56{width:14rem}.w-8{width:2rem}.w-7{width:1.75rem}.w-64{width:16rem}.w-5{width:1.25rem}.w-16{width:4rem}.w-12{width:3rem}.w-\\[440px\\]{width:440px}.w-20{width:5rem}.w-\\[250px\\]{width:250px}.w-screen{width:100vw}.w-\\[500px\\]{width:500px}.w-14{width:3.5rem}.w-\\[230px\\]{width:230px}.w-\\[30px\\]{width:30px}.w-max{width:-moz-max-content;width:max-content}.min-w-0{min-width:0}.max-w-xs{max-width:20rem}.max-w-xl{max-width:36rem}.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))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-\\[2\\.2fr_1\\.2fr_1fr_1\\.2fr_1fr_0\\.6fr\\]{grid-template-columns:2.2fr 1.2fr 1fr 1.2fr 1fr .6fr}.grid-cols-\\[1\\.5fr_2fr_1fr_0\\.6fr\\]{grid-template-columns:1.5fr 2fr 1fr .6fr}.grid-cols-\\[1\\.3fr_1\\.3fr_2fr_1fr_1fr\\]{grid-template-columns:1.3fr 1.3fr 2fr 1fr 1fr}.grid-cols-\\[1\\.5fr_2fr_0\\.8fr\\]{grid-template-columns:1.5fr 2fr .8fr}.grid-cols-\\[1fr_3fr\\]{grid-template-columns:1fr 3fr}.grid-cols-\\[1fr_1fr_2fr_0\\.8fr\\]{grid-template-columns:1fr 1fr 2fr .8fr}.grid-cols-\\[2fr_1fr\\]{grid-template-columns:2fr 1fr}.grid-cols-\\[2\\.2fr_1\\.2fr_1fr_1fr_0\\.6fr\\]{grid-template-columns:2.2fr 1.2fr 1fr 1fr .6fr}.grid-cols-\\[2\\.2fr_1fr\\]{grid-template-columns:2.2fr 1fr}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-\\[18px\\]{gap:18px}.gap-5{gap:1.25rem}.gap-3{gap:.75rem}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.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>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-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-\\[3px\\]>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(-3px*var(--tw-space-y-reverse));margin-top:calc(-3px*(1 - var(--tw-space-y-reverse)))}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-none{overscroll-behavior:none}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded-2xl{border-radius:1rem}.rounded-\\[10px\\]{border-radius:10px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:1.5rem}.rounded-\\[8px\\]{border-radius:8px}.border{border-width:1px}.border-2{border-width:2px}.border-l-4{border-left-width:4px}.border-t{border-top-width:1px}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-l{border-left-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.border-slate-100{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.border-sky-blue-400\\/40{border-color:rgba(59,208,242,.4)}.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-l-sky-blue-400{--tw-border-opacity:1;border-left-color:rgb(59 208 242/var(--tw-border-opacity))}.border-l-mint-400{--tw-border-opacity:1;border-left-color:rgb(30 226 175/var(--tw-border-opacity))}.border-l-gold-400{--tw-border-opacity:1;border-left-color:rgb(255 212 77/var(--tw-border-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-sky-blue-400\\/20{background-color:rgba(59,208,242,.2)}.bg-mint-100{--tw-bg-opacity:1;background-color:rgb(208 251 240/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-gold-100{--tw-bg-opacity:1;background-color:rgb(255 248 214/var(--tw-bg-opacity))}.bg-mint-400\\/20{background-color:rgba(30,226,175,.2)}.bg-transparent{background-color:transparent}.bg-dark-blue-400{--tw-bg-opacity:1;background-color:rgb(35 42 58/var(--tw-bg-opacity))}.bg-slate-50\\/60{background-color:rgba(248,250,252,.6)}.bg-gold-400\\/15{background-color:rgba(255,212,77,.15)}.bg-sky-blue-400\\/10{background-color:rgba(59,208,242,.1)}.bg-white\\/90{background-color:hsla(0,0%,100%,.9)}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-sky-blue-400\\/15{background-color:rgba(59,208,242,.15)}.bg-mint-400\\/15{background-color:rgba(30,226,175,.15)}.bg-sky-blue-400\\/25{background-color:rgba(59,208,242,.25)}.bg-mint-400\\/25{background-color:rgba(30,226,175,.25)}.bg-gold-400\\/25{background-color:rgba(255,212,77,.25)}.bg-gold-400{--tw-bg-opacity:1;background-color:rgb(255 212 77/var(--tw-bg-opacity))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-sky-blue-400{--tw-gradient-from:#3bd0f2;--tw-gradient-to:rgba(59,208,242,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-mint-400{--tw-gradient-from:#1ee2af;--tw-gradient-to:rgba(30,226,175,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-gold-400{--tw-gradient-from:#ffd44d;--tw-gradient-to:rgba(255,212,77,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-dark-blue-600{--tw-gradient-from:#0a0f2e;--tw-gradient-to:rgba(10,15,46,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-sky-blue-400\\/15{--tw-gradient-from:rgba(59,208,242,.15);--tw-gradient-to:rgba(59,208,242,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.via-dark-blue-400{--tw-gradient-to:rgba(35,42,58,0);--tw-gradient-stops:var(--tw-gradient-from),#232a3a,var(--tw-gradient-to)}.to-dark-blue-400{--tw-gradient-to:#232a3a}.to-\\[\\#f5c300\\]{--tw-gradient-to:#f5c300}.to-sky-blue-400{--tw-gradient-to:#3bd0f2}.to-mint-400\\/15{--tw-gradient-to:rgba(30,226,175,.15)}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-4{padding:1rem}.p-8{padding:2rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-3{padding:.75rem}.p-2\\.5{padding:.625rem}.p-2{padding:.5rem}.px-\\[22px\\]{padding-left:22px;padding-right:22px}.py-\\[18px\\]{padding-bottom:18px;padding-top:18px}.px-4{padding-left:1rem;padding-right:1rem}.py-8{padding-bottom:2rem;padding-top:2rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.px-2\\.5{padding-left:.625rem;padding-right:.625rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3\\.5{padding-left:.875rem;padding-right:.875rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-2\\.5{padding-bottom:.625rem;padding-top:.625rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-3\\.5{padding-bottom:.875rem;padding-top:.875rem}.py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}.py-0{padding-bottom:0;padding-top:0}.py-4{padding-bottom:1rem;padding-top:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.pl-9{padding-left:2.25rem}.pr-4{padding-right:1rem}.pl-10{padding-left:2.5rem}.pb-2{padding-bottom:.5rem}.pr-1{padding-right:.25rem}.pl-4{padding-left:1rem}.pt-0\\.5{padding-top:.125rem}.pt-0{padding-top:0}.pb-12{padding-bottom:3rem}.pl-2\\.5{padding-left:.625rem}.pl-2{padding-left:.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-proxima{font-family:ProximaNova}.text-\\[15\\.5px\\]{font-size:15.5px}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-\\[10px\\]{font-size:10px}.text-2xl{font-size:1.5rem;line-height:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-\\[10\\.5px\\]{font-size:10.5px}.text-\\[11px\\]{font-size:11px}.text-base{font-size:1rem;line-height:1.5rem}.text-\\[28px\\]{font-size:28px}.text-\\[12\\.5px\\]{font-size:12.5px}.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-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-sky-blue-400{--tw-text-opacity:1;color:rgb(59 208 242/var(--tw-text-opacity))}.text-white\\/70{color:hsla(0,0%,100%,.7)}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.text-gold-400{--tw-text-opacity:1;color:rgb(255 212 77/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-\\[0_3px_12px_rgba\\(255\\2c 212\\2c 77\\2c 0\\.35\\)\\],.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_3px_12px_rgba\\(255\\2c 212\\2c 77\\2c 0\\.35\\)\\]{--tw-shadow:0 3px 12px rgba(255,212,77,.35);--tw-shadow-colored:0 3px 12px var(--tw-shadow-color)}.shadow-\\[0_2px_10px_rgba\\(30\\2c 226\\2c 175\\2c 0\\.15\\)\\]{--tw-shadow:0 2px 10px rgba(30,226,175,.15);--tw-shadow-colored:0 2px 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.line-clamp-2{-webkit-box-orient:vertical;-webkit-line-clamp:2;display:-webkit-box;overflow:hidden}*,:after,:before{border-style:solid;border-width:0}button{background-color:transparent;background-image:none;color:inherit;cursor:pointer;font:inherit;margin:0;padding:0;text-transform:none}.placeholder\\:text-slate-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.placeholder\\:text-slate-400::placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.first\\:ml-0:first-child{margin-left:0}.hover\\:scale-\\[1\\.02\\]:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.hover\\:bg-slate-200:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.hover\\:bg-sky-blue-400\\/20:hover{background-color:rgba(59,208,242,.2)}.hover\\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.hover\\:text-slate-600:hover{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.hover\\:text-red-500:hover{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.hover\\:text-sky-blue-400:hover{--tw-text-opacity:1;color:rgb(59 208 242/var(--tw-text-opacity))}.hover\\:text-dark-blue-400:hover{--tw-text-opacity:1;color:rgb(35 42 58/var(--tw-text-opacity))}.hover\\:text-slate-700:hover{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.hover\\:text-slate-500:hover{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\\:border-sky-blue-400:focus{--tw-border-opacity:1;border-color:rgb(59 208 242/var(--tw-border-opacity))}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.disabled\\:opacity-50:disabled{opacity:.5}.disabled\\:opacity-40:disabled{opacity:.4}@media (min-width:640px){.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:768px){.md\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}";
|
|
43
|
+
var css_248z = "@font-face{font-family:ProximaNova;src:url(https://cdn.localcivics.io/fonts/ProximaNova.otf) format(\"opentype\")}@font-face{font-family:ProximaNova;font-weight:700;src:url(https://cdn.localcivics.io/fonts/ProximaNovaBold.otf) format(\"opentype\")}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.pointer-events-none{pointer-events:none}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.\\!relative{position:relative!important}.left-3{left:.75rem}.top-1\\/2{top:50%}.left-3\\.5{left:.875rem}.bottom-\\[-20px\\]{bottom:-20px}.left-1\\/2{left:50%}.m-3{margin:.75rem}.mt-0\\.5{margin-top:.125rem}.mt-0{margin-top:0}.mt-6{margin-top:1.5rem}.mt-2{margin-top:.5rem}.mt-1{margin-top:.25rem}.mb-2{margin-bottom:.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}.mb-1{margin-bottom:.25rem}.ml-\\[29px\\]{margin-left:29px}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-full{height:100%}.h-9{height:2.25rem}.h-8{height:2rem}.h-7{height:1.75rem}.h-5{height:1.25rem}.h-12{height:3rem}.h-\\[300px\\]{height:300px}.h-screen{height:100vh}.h-14{height:3.5rem}.h-16{height:4rem}.h-28{height:7rem}.h-\\[30px\\]{height:30px}.h-\\[400px\\]{height:400px}.max-h-\\[70vh\\]{max-height:70vh}.w-10{width:2.5rem}.w-full{width:100%}.w-fit{width:-moz-fit-content;width:fit-content}.w-36{width:9rem}.w-28{width:7rem}.w-4{width:1rem}.w-9{width:2.25rem}.w-\\[296px\\]{width:296px}.w-40{width:10rem}.w-24{width:6rem}.w-56{width:14rem}.w-8{width:2rem}.w-7{width:1.75rem}.w-64{width:16rem}.w-5{width:1.25rem}.w-16{width:4rem}.w-12{width:3rem}.w-\\[440px\\]{width:440px}.w-20{width:5rem}.w-\\[250px\\]{width:250px}.w-screen{width:100vw}.w-\\[500px\\]{width:500px}.w-14{width:3.5rem}.w-\\[230px\\]{width:230px}.w-\\[30px\\]{width:30px}.w-max{width:-moz-max-content;width:max-content}.min-w-0{min-width:0}.max-w-xs{max-width:20rem}.max-w-xl{max-width:36rem}.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))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-\\[2\\.2fr_1\\.2fr_1fr_1\\.2fr_1fr_0\\.6fr\\]{grid-template-columns:2.2fr 1.2fr 1fr 1.2fr 1fr .6fr}.grid-cols-\\[1\\.5fr_2fr_1fr_0\\.6fr\\]{grid-template-columns:1.5fr 2fr 1fr .6fr}.grid-cols-\\[1\\.3fr_1\\.3fr_2fr_1fr_1fr\\]{grid-template-columns:1.3fr 1.3fr 2fr 1fr 1fr}.grid-cols-\\[2\\.2fr_1\\.2fr_1fr_1fr_0\\.6fr\\]{grid-template-columns:2.2fr 1.2fr 1fr 1fr .6fr}.grid-cols-\\[2\\.2fr_1fr\\]{grid-template-columns:2.2fr 1fr}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-\\[18px\\]{gap:18px}.gap-5{gap:1.25rem}.gap-3{gap:.75rem}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.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>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-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-\\[3px\\]>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(-3px*var(--tw-space-y-reverse));margin-top:calc(-3px*(1 - var(--tw-space-y-reverse)))}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-none{overscroll-behavior:none}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded-2xl{border-radius:1rem}.rounded-\\[10px\\]{border-radius:10px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:1.5rem}.rounded-\\[8px\\]{border-radius:8px}.border{border-width:1px}.border-2{border-width:2px}.border-l-4{border-left-width:4px}.border-t{border-top-width:1px}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-l{border-left-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.border-slate-100{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.border-sky-blue-400\\/40{border-color:rgba(59,208,242,.4)}.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-l-sky-blue-400{--tw-border-opacity:1;border-left-color:rgb(59 208 242/var(--tw-border-opacity))}.border-l-mint-400{--tw-border-opacity:1;border-left-color:rgb(30 226 175/var(--tw-border-opacity))}.border-l-gold-400{--tw-border-opacity:1;border-left-color:rgb(255 212 77/var(--tw-border-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-sky-blue-400\\/20{background-color:rgba(59,208,242,.2)}.bg-mint-100{--tw-bg-opacity:1;background-color:rgb(208 251 240/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-gold-100{--tw-bg-opacity:1;background-color:rgb(255 248 214/var(--tw-bg-opacity))}.bg-mint-400\\/20{background-color:rgba(30,226,175,.2)}.bg-transparent{background-color:transparent}.bg-dark-blue-400{--tw-bg-opacity:1;background-color:rgb(35 42 58/var(--tw-bg-opacity))}.bg-slate-50\\/60{background-color:rgba(248,250,252,.6)}.bg-gold-400\\/15{background-color:rgba(255,212,77,.15)}.bg-sky-blue-400\\/10{background-color:rgba(59,208,242,.1)}.bg-white\\/90{background-color:hsla(0,0%,100%,.9)}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-sky-blue-400\\/15{background-color:rgba(59,208,242,.15)}.bg-mint-400\\/15{background-color:rgba(30,226,175,.15)}.bg-sky-blue-400\\/25{background-color:rgba(59,208,242,.25)}.bg-mint-400\\/25{background-color:rgba(30,226,175,.25)}.bg-gold-400\\/25{background-color:rgba(255,212,77,.25)}.bg-gold-400{--tw-bg-opacity:1;background-color:rgb(255 212 77/var(--tw-bg-opacity))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-sky-blue-400{--tw-gradient-from:#3bd0f2;--tw-gradient-to:rgba(59,208,242,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-mint-400{--tw-gradient-from:#1ee2af;--tw-gradient-to:rgba(30,226,175,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-gold-400{--tw-gradient-from:#ffd44d;--tw-gradient-to:rgba(255,212,77,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-dark-blue-600{--tw-gradient-from:#0a0f2e;--tw-gradient-to:rgba(10,15,46,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-sky-blue-400\\/15{--tw-gradient-from:rgba(59,208,242,.15);--tw-gradient-to:rgba(59,208,242,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.via-dark-blue-400{--tw-gradient-to:rgba(35,42,58,0);--tw-gradient-stops:var(--tw-gradient-from),#232a3a,var(--tw-gradient-to)}.to-dark-blue-400{--tw-gradient-to:#232a3a}.to-\\[\\#f5c300\\]{--tw-gradient-to:#f5c300}.to-sky-blue-400{--tw-gradient-to:#3bd0f2}.to-mint-400\\/15{--tw-gradient-to:rgba(30,226,175,.15)}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-4{padding:1rem}.p-8{padding:2rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-3{padding:.75rem}.p-2\\.5{padding:.625rem}.p-2{padding:.5rem}.px-\\[22px\\]{padding-left:22px;padding-right:22px}.py-\\[18px\\]{padding-bottom:18px;padding-top:18px}.px-4{padding-left:1rem;padding-right:1rem}.py-8{padding-bottom:2rem;padding-top:2rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.px-2\\.5{padding-left:.625rem;padding-right:.625rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3\\.5{padding-left:.875rem;padding-right:.875rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-2\\.5{padding-bottom:.625rem;padding-top:.625rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-3\\.5{padding-bottom:.875rem;padding-top:.875rem}.py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}.py-0{padding-bottom:0;padding-top:0}.py-4{padding-bottom:1rem;padding-top:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.pl-9{padding-left:2.25rem}.pr-4{padding-right:1rem}.pl-10{padding-left:2.5rem}.pb-2{padding-bottom:.5rem}.pr-1{padding-right:.25rem}.pl-4{padding-left:1rem}.pt-0\\.5{padding-top:.125rem}.pt-0{padding-top:0}.pb-12{padding-bottom:3rem}.pl-2\\.5{padding-left:.625rem}.pl-2{padding-left:.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-proxima{font-family:ProximaNova}.text-\\[15\\.5px\\]{font-size:15.5px}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-\\[10px\\]{font-size:10px}.text-2xl{font-size:1.5rem;line-height:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-\\[10\\.5px\\]{font-size:10.5px}.text-\\[11px\\]{font-size:11px}.text-base{font-size:1rem;line-height:1.5rem}.text-\\[28px\\]{font-size:28px}.text-\\[12\\.5px\\]{font-size:12.5px}.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-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-sky-blue-400{--tw-text-opacity:1;color:rgb(59 208 242/var(--tw-text-opacity))}.text-white\\/70{color:hsla(0,0%,100%,.7)}.text-gold-400{--tw-text-opacity:1;color:rgb(255 212 77/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-\\[0_3px_12px_rgba\\(255\\2c 212\\2c 77\\2c 0\\.35\\)\\],.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\\[0_3px_12px_rgba\\(255\\2c 212\\2c 77\\2c 0\\.35\\)\\]{--tw-shadow:0 3px 12px rgba(255,212,77,.35);--tw-shadow-colored:0 3px 12px var(--tw-shadow-color)}.shadow-\\[0_2px_10px_rgba\\(30\\2c 226\\2c 175\\2c 0\\.15\\)\\]{--tw-shadow:0 2px 10px rgba(30,226,175,.15);--tw-shadow-colored:0 2px 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.line-clamp-2{-webkit-box-orient:vertical;-webkit-line-clamp:2;display:-webkit-box;overflow:hidden}*,:after,:before{border-style:solid;border-width:0}button{background-color:transparent;background-image:none;color:inherit;cursor:pointer;font:inherit;margin:0;padding:0;text-transform:none}.placeholder\\:text-slate-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.placeholder\\:text-slate-400::placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.first\\:ml-0:first-child{margin-left:0}.hover\\:scale-\\[1\\.02\\]:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.hover\\:bg-slate-200:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.hover\\:bg-sky-blue-400\\/20:hover{background-color:rgba(59,208,242,.2)}.hover\\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.hover\\:text-slate-600:hover{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.hover\\:text-red-500:hover{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.hover\\:text-sky-blue-400:hover{--tw-text-opacity:1;color:rgb(59 208 242/var(--tw-text-opacity))}.hover\\:text-dark-blue-400:hover{--tw-text-opacity:1;color:rgb(35 42 58/var(--tw-text-opacity))}.hover\\:text-slate-700:hover{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.hover\\:text-slate-500:hover{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\\:border-sky-blue-400:focus{--tw-border-opacity:1;border-color:rgb(59 208 242/var(--tw-border-opacity))}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.disabled\\:opacity-50:disabled{opacity:.5}.disabled\\:opacity-40:disabled{opacity:.4}@media (min-width:640px){.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:768px){.md\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}";
|
|
44
44
|
styleInject(css_248z);
|
|
45
45
|
|
|
46
46
|
function UserButton({ image, name, email }) {
|
|
@@ -124,28 +124,27 @@ function LinksGroup({ icon: Icon, href, label, accent = "cyan", initiallyOpened,
|
|
|
124
124
|
), hasLinks && opened && /* @__PURE__ */ React.createElement("div", { className: "ml-[29px] mt-0.5 flex flex-col gap-0.5 border-l border-slate-100 pl-2.5" }, items));
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
var __defProp$
|
|
128
|
-
var __defProps$
|
|
129
|
-
var __getOwnPropDescs$
|
|
130
|
-
var __getOwnPropSymbols$
|
|
131
|
-
var __hasOwnProp$
|
|
132
|
-
var __propIsEnum$
|
|
133
|
-
var __defNormalProp$
|
|
134
|
-
var __spreadValues$
|
|
127
|
+
var __defProp$i = Object.defineProperty;
|
|
128
|
+
var __defProps$f = Object.defineProperties;
|
|
129
|
+
var __getOwnPropDescs$f = Object.getOwnPropertyDescriptors;
|
|
130
|
+
var __getOwnPropSymbols$i = Object.getOwnPropertySymbols;
|
|
131
|
+
var __hasOwnProp$i = Object.prototype.hasOwnProperty;
|
|
132
|
+
var __propIsEnum$i = Object.prototype.propertyIsEnumerable;
|
|
133
|
+
var __defNormalProp$i = (obj, key, value) => key in obj ? __defProp$i(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
134
|
+
var __spreadValues$i = (a, b) => {
|
|
135
135
|
for (var prop in b || (b = {}))
|
|
136
|
-
if (__hasOwnProp$
|
|
137
|
-
__defNormalProp$
|
|
138
|
-
if (__getOwnPropSymbols$
|
|
139
|
-
for (var prop of __getOwnPropSymbols$
|
|
140
|
-
if (__propIsEnum$
|
|
141
|
-
__defNormalProp$
|
|
136
|
+
if (__hasOwnProp$i.call(b, prop))
|
|
137
|
+
__defNormalProp$i(a, prop, b[prop]);
|
|
138
|
+
if (__getOwnPropSymbols$i)
|
|
139
|
+
for (var prop of __getOwnPropSymbols$i(b)) {
|
|
140
|
+
if (__propIsEnum$i.call(b, prop))
|
|
141
|
+
__defNormalProp$i(a, prop, b[prop]);
|
|
142
142
|
}
|
|
143
143
|
return a;
|
|
144
144
|
};
|
|
145
|
-
var __spreadProps$
|
|
145
|
+
var __spreadProps$f = (a, b) => __defProps$f(a, __getOwnPropDescs$f(b));
|
|
146
146
|
const data = [
|
|
147
147
|
{ label: "Home", icon: IconHome2, accent: "cyan" },
|
|
148
|
-
{ label: "Dashboard", icon: IconGauge, accent: "mint" },
|
|
149
148
|
{ label: "Classes", icon: IconCategory2, accent: "gold" },
|
|
150
149
|
{ label: "Pathways", icon: IconRoute, accent: "cyan" },
|
|
151
150
|
{ label: "Badges", icon: IconAlbum, accent: "mint" },
|
|
@@ -171,12 +170,12 @@ function Navbar(props) {
|
|
|
171
170
|
}
|
|
172
171
|
return /* @__PURE__ */ React.createElement(
|
|
173
172
|
LinksGroup,
|
|
174
|
-
__spreadProps$
|
|
173
|
+
__spreadProps$f(__spreadValues$i(__spreadValues$i({
|
|
175
174
|
key: item.label,
|
|
176
175
|
active: props.active
|
|
177
176
|
}, item), context), {
|
|
178
177
|
links: (item.links || []).map((link) => {
|
|
179
|
-
return __spreadValues$
|
|
178
|
+
return __spreadValues$i(__spreadValues$i({}, link), props.links[`${item.label}/${link.label}`] || { notifications: 0, href: "" });
|
|
180
179
|
})
|
|
181
180
|
})
|
|
182
181
|
);
|
|
@@ -508,29 +507,29 @@ function useSortableData(items, config = { key: "", direction: null }) {
|
|
|
508
507
|
return { items: sortedItems, requestSort, sortConfig };
|
|
509
508
|
}
|
|
510
509
|
|
|
511
|
-
var __defProp$
|
|
512
|
-
var __defProps$
|
|
513
|
-
var __getOwnPropDescs$
|
|
514
|
-
var __getOwnPropSymbols$
|
|
515
|
-
var __hasOwnProp$
|
|
516
|
-
var __propIsEnum$
|
|
517
|
-
var __defNormalProp$
|
|
518
|
-
var __spreadValues$
|
|
510
|
+
var __defProp$h = Object.defineProperty;
|
|
511
|
+
var __defProps$e = Object.defineProperties;
|
|
512
|
+
var __getOwnPropDescs$e = Object.getOwnPropertyDescriptors;
|
|
513
|
+
var __getOwnPropSymbols$h = Object.getOwnPropertySymbols;
|
|
514
|
+
var __hasOwnProp$h = Object.prototype.hasOwnProperty;
|
|
515
|
+
var __propIsEnum$h = Object.prototype.propertyIsEnumerable;
|
|
516
|
+
var __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
517
|
+
var __spreadValues$h = (a, b) => {
|
|
519
518
|
for (var prop in b || (b = {}))
|
|
520
|
-
if (__hasOwnProp$
|
|
521
|
-
__defNormalProp$
|
|
522
|
-
if (__getOwnPropSymbols$
|
|
523
|
-
for (var prop of __getOwnPropSymbols$
|
|
524
|
-
if (__propIsEnum$
|
|
525
|
-
__defNormalProp$
|
|
519
|
+
if (__hasOwnProp$h.call(b, prop))
|
|
520
|
+
__defNormalProp$h(a, prop, b[prop]);
|
|
521
|
+
if (__getOwnPropSymbols$h)
|
|
522
|
+
for (var prop of __getOwnPropSymbols$h(b)) {
|
|
523
|
+
if (__propIsEnum$h.call(b, prop))
|
|
524
|
+
__defNormalProp$h(a, prop, b[prop]);
|
|
526
525
|
}
|
|
527
526
|
return a;
|
|
528
527
|
};
|
|
529
|
-
var __spreadProps$
|
|
530
|
-
function Table$
|
|
528
|
+
var __spreadProps$e = (a, b) => __defProps$e(a, __getOwnPropDescs$e(b));
|
|
529
|
+
function Table$e(props) {
|
|
531
530
|
const [expanded, setExpanded] = React.useState({});
|
|
532
531
|
const preparedItems = React.useMemo(() => {
|
|
533
|
-
return props.items.map((item) => __spreadProps$
|
|
532
|
+
return props.items.map((item) => __spreadProps$e(__spreadValues$h({}, item), {
|
|
534
533
|
status: item.isComplete ? 1 : 0
|
|
535
534
|
}));
|
|
536
535
|
}, [props.items]);
|
|
@@ -553,7 +552,7 @@ function Table$k(props) {
|
|
|
553
552
|
return /* @__PURE__ */ React.createElement("div", { key: row.userId, className: "rounded-xl border border-slate-200 bg-white shadow-sm" }, /* @__PURE__ */ React.createElement(
|
|
554
553
|
"div",
|
|
555
554
|
{
|
|
556
|
-
onClick: () => setExpanded(__spreadProps$
|
|
555
|
+
onClick: () => setExpanded(__spreadProps$e(__spreadValues$h({}, expanded), { [row.userId]: !isOpen })),
|
|
557
556
|
className: "flex cursor-pointer items-center gap-4 p-4"
|
|
558
557
|
},
|
|
559
558
|
/* @__PURE__ */ React.createElement("div", { className: "flex min-w-0 flex-1 items-center gap-3" }, row.avatar ? /* @__PURE__ */ React.createElement("img", { src: row.avatar, className: "h-9 w-9 shrink-0 rounded-full object-cover", alt: "" }) : /* @__PURE__ */ React.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.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React.createElement("div", { className: "truncate text-sm font-bold text-dark-blue-400" }, row.name), /* @__PURE__ */ React.createElement("div", { className: "truncate text-xs text-slate-400" }, row.email))),
|
|
@@ -563,7 +562,7 @@ function Table$k(props) {
|
|
|
563
562
|
}));
|
|
564
563
|
}
|
|
565
564
|
|
|
566
|
-
function Table$
|
|
565
|
+
function Table$d(props) {
|
|
567
566
|
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
568
567
|
if (props.items.length === 0) {
|
|
569
568
|
return /* @__PURE__ */ React.createElement(
|
|
@@ -588,7 +587,7 @@ function Table$j(props) {
|
|
|
588
587
|
)));
|
|
589
588
|
}
|
|
590
589
|
|
|
591
|
-
const TABS$
|
|
590
|
+
const TABS$4 = [
|
|
592
591
|
{ label: "By lesson", value: "lessons" },
|
|
593
592
|
{ label: "By student", value: "students" }
|
|
594
593
|
];
|
|
@@ -635,7 +634,7 @@ const Badge = (props) => {
|
|
|
635
634
|
},
|
|
636
635
|
/* @__PURE__ */ React.createElement("option", { value: "" }, "All classes"),
|
|
637
636
|
props.classes.map((c) => /* @__PURE__ */ React.createElement("option", { key: c.classId, value: c.classId }, c.name))
|
|
638
|
-
)), /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-3" }, !props.trial && /* @__PURE__ */ React.createElement("div", { className: "flex w-fit gap-1 rounded-xl border border-slate-200 bg-white p-1" }, TABS$
|
|
637
|
+
)), /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-3" }, !props.trial && /* @__PURE__ */ React.createElement("div", { className: "flex w-fit gap-1 rounded-xl border border-slate-200 bg-white p-1" }, TABS$4.map((t) => /* @__PURE__ */ React.createElement(
|
|
639
638
|
"button",
|
|
640
639
|
{
|
|
641
640
|
key: t.value,
|
|
@@ -643,10 +642,10 @@ const Badge = (props) => {
|
|
|
643
642
|
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"}`
|
|
644
643
|
},
|
|
645
644
|
t.label
|
|
646
|
-
))), (!!props.trial || tab === "lessons") && /* @__PURE__ */ React.createElement(Table$
|
|
645
|
+
))), (!!props.trial || tab === "lessons") && /* @__PURE__ */ React.createElement(Table$d, { loading: props.loading, items: props.lessons }), !props.trial && tab === "students" && /* @__PURE__ */ React.createElement(Table$e, { loading: props.loading, items: props.students, linkState: props.linkState })));
|
|
647
646
|
};
|
|
648
647
|
|
|
649
|
-
function Table$
|
|
648
|
+
function Table$c(props) {
|
|
650
649
|
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
651
650
|
if (props.loading) {
|
|
652
651
|
return /* @__PURE__ */ React.createElement("div", { className: "text-sm text-slate-400" }, "Loading\u2026");
|
|
@@ -697,283 +696,7 @@ const Badges = (props) => {
|
|
|
697
696
|
onChange: (e) => props.onAutocompleteChange(e.target.value),
|
|
698
697
|
className: "flex-1 border-none bg-transparent text-sm text-dark-blue-400 outline-none placeholder:text-slate-400"
|
|
699
698
|
}
|
|
700
|
-
)), /* @__PURE__ */ React.createElement(Table$
|
|
701
|
-
};
|
|
702
|
-
|
|
703
|
-
function Table$h(props) {
|
|
704
|
-
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
705
|
-
if (props.items.length === 0) {
|
|
706
|
-
return /* @__PURE__ */ React.createElement(
|
|
707
|
-
PlaceholderBanner,
|
|
708
|
-
{
|
|
709
|
-
title: "No students to display",
|
|
710
|
-
description: "You don't have any students yet, add them and revisit.",
|
|
711
|
-
loading: props.loading,
|
|
712
|
-
icon: "groups"
|
|
713
|
-
}
|
|
714
|
-
);
|
|
715
|
-
}
|
|
716
|
-
return /* @__PURE__ */ React.createElement("div", { className: "overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm" }, /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-[2fr_1fr] items-center gap-3 border-b border-slate-100 px-5 py-3" }, /* @__PURE__ */ React.createElement(SortableHeader, { label: "Student Name", sortKey: "studentName", sortConfig, onSort: requestSort }), /* @__PURE__ */ React.createElement(SortableHeader, { label: "Class Name", sortKey: "className", sortConfig, onSort: requestSort })), sortedItems.map((row, i) => /* @__PURE__ */ React.createElement(
|
|
717
|
-
"div",
|
|
718
|
-
{
|
|
719
|
-
key: row.studentId,
|
|
720
|
-
className: `grid grid-cols-[2fr_1fr] items-center gap-3 px-5 py-3.5 ${i < sortedItems.length - 1 ? "border-b border-slate-100" : ""}`
|
|
721
|
-
},
|
|
722
|
-
/* @__PURE__ */ React.createElement(
|
|
723
|
-
"button",
|
|
724
|
-
{
|
|
725
|
-
type: "button",
|
|
726
|
-
onClick: () => props.onViewProfile(row),
|
|
727
|
-
className: "truncate text-left text-xs font-bold text-dark-blue-400 hover:text-sky-blue-400"
|
|
728
|
-
},
|
|
729
|
-
row.studentName
|
|
730
|
-
),
|
|
731
|
-
/* @__PURE__ */ React.createElement("div", { className: "truncate text-xs text-slate-500" }, row.className)
|
|
732
|
-
)));
|
|
733
|
-
}
|
|
734
|
-
|
|
735
|
-
const units = [
|
|
736
|
-
{ unit: "year", ms: 31536e6 },
|
|
737
|
-
{ unit: "month", ms: 2628e6 },
|
|
738
|
-
{ unit: "day", ms: 864e5 },
|
|
739
|
-
{ unit: "hour", ms: 36e5 },
|
|
740
|
-
{ unit: "minute", ms: 6e4 },
|
|
741
|
-
{ unit: "second", ms: 1e3 }
|
|
742
|
-
];
|
|
743
|
-
const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });
|
|
744
|
-
function relativeTimeFromDates(relative, pivot = new Date()) {
|
|
745
|
-
if (!relative)
|
|
746
|
-
return "";
|
|
747
|
-
const elapsed = relative.getTime() - pivot.getTime();
|
|
748
|
-
return relativeTimeFromElapsed(elapsed);
|
|
749
|
-
}
|
|
750
|
-
function relativeTimeFromElapsed(elapsed) {
|
|
751
|
-
for (const { unit, ms } of units) {
|
|
752
|
-
if (Math.abs(elapsed) >= ms || unit === "second") {
|
|
753
|
-
return rtf.format(Math.round(elapsed / ms), unit);
|
|
754
|
-
}
|
|
755
|
-
}
|
|
756
|
-
return "";
|
|
757
|
-
}
|
|
758
|
-
|
|
759
|
-
var __defProp$h = Object.defineProperty;
|
|
760
|
-
var __defProps$e = Object.defineProperties;
|
|
761
|
-
var __getOwnPropDescs$e = Object.getOwnPropertyDescriptors;
|
|
762
|
-
var __getOwnPropSymbols$h = Object.getOwnPropertySymbols;
|
|
763
|
-
var __hasOwnProp$h = Object.prototype.hasOwnProperty;
|
|
764
|
-
var __propIsEnum$h = Object.prototype.propertyIsEnumerable;
|
|
765
|
-
var __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
766
|
-
var __spreadValues$h = (a, b) => {
|
|
767
|
-
for (var prop in b || (b = {}))
|
|
768
|
-
if (__hasOwnProp$h.call(b, prop))
|
|
769
|
-
__defNormalProp$h(a, prop, b[prop]);
|
|
770
|
-
if (__getOwnPropSymbols$h)
|
|
771
|
-
for (var prop of __getOwnPropSymbols$h(b)) {
|
|
772
|
-
if (__propIsEnum$h.call(b, prop))
|
|
773
|
-
__defNormalProp$h(a, prop, b[prop]);
|
|
774
|
-
}
|
|
775
|
-
return a;
|
|
776
|
-
};
|
|
777
|
-
var __spreadProps$e = (a, b) => __defProps$e(a, __getOwnPropDescs$e(b));
|
|
778
|
-
function Table$g(props) {
|
|
779
|
-
const preparedItems = React.useMemo(() => {
|
|
780
|
-
return props.items.map((item) => __spreadProps$e(__spreadValues$h({}, item), {
|
|
781
|
-
updatedAtDate: new Date(item.updatedAt)
|
|
782
|
-
}));
|
|
783
|
-
}, [props.items]);
|
|
784
|
-
const { items: sortedItems, requestSort, sortConfig } = useSortableData(preparedItems);
|
|
785
|
-
if (props.items.length === 0) {
|
|
786
|
-
return /* @__PURE__ */ React.createElement(
|
|
787
|
-
PlaceholderBanner,
|
|
788
|
-
{
|
|
789
|
-
title: "No reflections to display",
|
|
790
|
-
description: "There has not been any lesson progress just yet.",
|
|
791
|
-
loading: props.loading,
|
|
792
|
-
icon: "lessons"
|
|
793
|
-
}
|
|
794
|
-
);
|
|
795
|
-
}
|
|
796
|
-
return /* @__PURE__ */ React.createElement("div", { className: "overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm" }, /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-[1fr_1fr_2fr_0.8fr] items-center gap-3 border-b border-slate-100 px-5 py-3" }, /* @__PURE__ */ React.createElement(SortableHeader, { label: "Student Name", sortKey: "studentName", sortConfig, onSort: requestSort }), /* @__PURE__ */ React.createElement(SortableHeader, { label: "Lesson Name", sortKey: "lessonName", sortConfig, onSort: requestSort }), /* @__PURE__ */ React.createElement("div", { className: "text-[10.5px] font-extrabold uppercase tracking-wide text-slate-400" }, "Reflection"), /* @__PURE__ */ React.createElement(SortableHeader, { label: "Updated At", sortKey: "updatedAtDate", sortConfig, onSort: requestSort })), sortedItems.map((row, i) => /* @__PURE__ */ React.createElement(
|
|
797
|
-
"div",
|
|
798
|
-
{
|
|
799
|
-
key: row.studentName + row.lessonName,
|
|
800
|
-
className: `grid grid-cols-[1fr_1fr_2fr_0.8fr] items-center gap-3 px-5 py-3.5 ${i < sortedItems.length - 1 ? "border-b border-slate-100" : ""}`
|
|
801
|
-
},
|
|
802
|
-
/* @__PURE__ */ React.createElement("div", { className: "truncate text-xs font-bold text-dark-blue-400" }, row.studentName),
|
|
803
|
-
/* @__PURE__ */ React.createElement("div", { className: "truncate text-xs text-slate-500" }, row.lessonName),
|
|
804
|
-
/* @__PURE__ */ React.createElement("div", { className: "text-xs text-slate-500" }, row.reflection),
|
|
805
|
-
/* @__PURE__ */ React.createElement("div", { className: "text-xs text-slate-500" }, relativeTimeFromDates(row.updatedAtDate))
|
|
806
|
-
)));
|
|
807
|
-
}
|
|
808
|
-
|
|
809
|
-
function Table$f(props) {
|
|
810
|
-
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
811
|
-
if (props.items.length === 0) {
|
|
812
|
-
return /* @__PURE__ */ React.createElement(
|
|
813
|
-
PlaceholderBanner,
|
|
814
|
-
{
|
|
815
|
-
title: "No impact statements to display",
|
|
816
|
-
description: "There are no students with impact statements yet.",
|
|
817
|
-
loading: props.loading,
|
|
818
|
-
icon: "kindergarten"
|
|
819
|
-
}
|
|
820
|
-
);
|
|
821
|
-
}
|
|
822
|
-
return /* @__PURE__ */ React.createElement("div", { className: "overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm" }, /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-[1fr_3fr] items-center gap-3 border-b border-slate-100 px-5 py-3" }, /* @__PURE__ */ React.createElement(SortableHeader, { label: "Student Name", sortKey: "studentName", sortConfig, onSort: requestSort }), /* @__PURE__ */ React.createElement("div", { className: "text-[10.5px] font-extrabold uppercase tracking-wide text-slate-400" }, "Impact Statement")), sortedItems.map((row, i) => /* @__PURE__ */ React.createElement(
|
|
823
|
-
"div",
|
|
824
|
-
{
|
|
825
|
-
key: row.studentName,
|
|
826
|
-
className: `grid grid-cols-[1fr_3fr] items-center gap-3 px-5 py-3.5 ${i < sortedItems.length - 1 ? "border-b border-slate-100" : ""}`
|
|
827
|
-
},
|
|
828
|
-
/* @__PURE__ */ React.createElement("div", { className: "truncate text-xs font-bold text-dark-blue-400" }, row.studentName),
|
|
829
|
-
/* @__PURE__ */ React.createElement("div", { className: "text-xs text-slate-500" }, row.impactStatement)
|
|
830
|
-
)));
|
|
831
|
-
}
|
|
832
|
-
|
|
833
|
-
function Table$e(props) {
|
|
834
|
-
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
835
|
-
if (props.items.length === 0) {
|
|
836
|
-
return /* @__PURE__ */ React.createElement(
|
|
837
|
-
PlaceholderBanner,
|
|
838
|
-
{
|
|
839
|
-
title: "No badges to display",
|
|
840
|
-
description: "We don't have any badges to show you just yet.",
|
|
841
|
-
loading: props.loading,
|
|
842
|
-
icon: "badges"
|
|
843
|
-
}
|
|
844
|
-
);
|
|
845
|
-
}
|
|
846
|
-
return /* @__PURE__ */ React.createElement("div", { className: "overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm" }, /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-[1.5fr_2fr_0.8fr] items-center gap-3 border-b border-slate-100 px-5 py-3" }, /* @__PURE__ */ React.createElement(SortableHeader, { label: "Badge Name", sortKey: "name", sortConfig, onSort: requestSort }), /* @__PURE__ */ React.createElement("div", { className: "text-[10.5px] font-extrabold uppercase tracking-wide text-slate-400" }, "Description"), /* @__PURE__ */ React.createElement(SortableHeader, { label: "Completion", sortKey: "percentageCompletion", sortConfig, onSort: requestSort, align: "center" })), sortedItems.map((row, i) => /* @__PURE__ */ React.createElement(
|
|
847
|
-
"div",
|
|
848
|
-
{
|
|
849
|
-
key: row.badgeId,
|
|
850
|
-
className: `grid grid-cols-[1.5fr_2fr_0.8fr] items-center gap-3 px-5 py-3.5 ${i < sortedItems.length - 1 ? "border-b border-slate-100" : ""}`
|
|
851
|
-
},
|
|
852
|
-
/* @__PURE__ */ React.createElement(
|
|
853
|
-
"button",
|
|
854
|
-
{
|
|
855
|
-
type: "button",
|
|
856
|
-
onClick: () => props.onClick && props.onClick(row),
|
|
857
|
-
className: "truncate text-left text-xs font-bold text-dark-blue-400 hover:text-sky-blue-400"
|
|
858
|
-
},
|
|
859
|
-
row.name
|
|
860
|
-
),
|
|
861
|
-
/* @__PURE__ */ React.createElement("div", { className: "truncate text-xs text-slate-500" }, row.description),
|
|
862
|
-
/* @__PURE__ */ React.createElement("div", { className: "text-center text-xs font-bold text-dark-blue-400" }, Math.round((row.percentageCompletion + Number.EPSILON) * 100), "%")
|
|
863
|
-
)));
|
|
864
|
-
}
|
|
865
|
-
|
|
866
|
-
function Table$d(props) {
|
|
867
|
-
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
868
|
-
if (props.items.length === 0) {
|
|
869
|
-
return /* @__PURE__ */ React.createElement(
|
|
870
|
-
PlaceholderBanner,
|
|
871
|
-
{
|
|
872
|
-
title: "No lessons to display",
|
|
873
|
-
description: "We don't have any lessons to show you just yet.",
|
|
874
|
-
loading: props.loading,
|
|
875
|
-
icon: "lessons"
|
|
876
|
-
}
|
|
877
|
-
);
|
|
878
|
-
}
|
|
879
|
-
return /* @__PURE__ */ React.createElement("div", { className: "overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm" }, /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-[1.5fr_2fr_0.8fr] items-center gap-3 border-b border-slate-100 px-5 py-3" }, /* @__PURE__ */ React.createElement(SortableHeader, { label: "Lesson Name", sortKey: "name", sortConfig, onSort: requestSort }), /* @__PURE__ */ React.createElement("div", { className: "text-[10.5px] font-extrabold uppercase tracking-wide text-slate-400" }, "Description"), /* @__PURE__ */ React.createElement(SortableHeader, { label: "Completion", sortKey: "percentageCompletion", sortConfig, onSort: requestSort, align: "center" })), sortedItems.map((row, i) => /* @__PURE__ */ React.createElement(
|
|
880
|
-
"div",
|
|
881
|
-
{
|
|
882
|
-
key: row.lessonId,
|
|
883
|
-
className: `grid grid-cols-[1.5fr_2fr_0.8fr] items-center gap-3 px-5 py-3.5 ${i < sortedItems.length - 1 ? "border-b border-slate-100" : ""}`
|
|
884
|
-
},
|
|
885
|
-
/* @__PURE__ */ React.createElement(
|
|
886
|
-
"button",
|
|
887
|
-
{
|
|
888
|
-
type: "button",
|
|
889
|
-
onClick: () => props.onClick && props.onClick(row),
|
|
890
|
-
className: "truncate text-left text-xs font-bold text-dark-blue-400 hover:text-sky-blue-400"
|
|
891
|
-
},
|
|
892
|
-
row.name
|
|
893
|
-
),
|
|
894
|
-
/* @__PURE__ */ React.createElement("div", { className: "truncate text-xs text-slate-500" }, row.description),
|
|
895
|
-
/* @__PURE__ */ React.createElement("div", { className: "text-center text-xs font-bold text-dark-blue-400" }, Math.round((row.percentageCompletion + Number.EPSILON) * 100), "%")
|
|
896
|
-
)));
|
|
897
|
-
}
|
|
898
|
-
|
|
899
|
-
const TABS$4 = [
|
|
900
|
-
{ label: "My students", value: "students" },
|
|
901
|
-
{ label: "Impact statements", value: "impact" },
|
|
902
|
-
{ label: "Reflections", value: "reflections" },
|
|
903
|
-
{ label: "Badges", value: "badges" },
|
|
904
|
-
{ label: "Lessons", value: "lessons" }
|
|
905
|
-
];
|
|
906
|
-
const Dashboard = (props) => {
|
|
907
|
-
const [tab, setTab] = useState("students");
|
|
908
|
-
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-5 px-4 py-8" }, /* @__PURE__ */ React.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React.createElement("h1", { className: "text-2xl font-extrabold tracking-tight text-dark-blue-400" }, "Dashboard"), /* @__PURE__ */ React.createElement("p", { className: "max-w-xl text-sm text-slate-500" }, "Track your students' pathway progress")), /* @__PURE__ */ React.createElement(StatsGroup, { data: [
|
|
909
|
-
{
|
|
910
|
-
title: "# OF STUDENTS",
|
|
911
|
-
value: props.students.length
|
|
912
|
-
},
|
|
913
|
-
{
|
|
914
|
-
title: "ACCOUNT CREATION",
|
|
915
|
-
value: props.percentageOfAccountsCreated,
|
|
916
|
-
unit: "%"
|
|
917
|
-
},
|
|
918
|
-
{
|
|
919
|
-
title: "BADGES EARNED",
|
|
920
|
-
value: props.numberOfBadgesEarned
|
|
921
|
-
},
|
|
922
|
-
{
|
|
923
|
-
title: "LESSONS COMPLETED",
|
|
924
|
-
value: props.numberOfLessonsCompleted
|
|
925
|
-
}
|
|
926
|
-
] }), /* @__PURE__ */ React.createElement("div", { className: "relative w-full max-w-xs" }, /* @__PURE__ */ React.createElement(IconCategory2, { size: 16, stroke: 2, className: "pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-slate-400" }), /* @__PURE__ */ React.createElement(
|
|
927
|
-
"select",
|
|
928
|
-
{
|
|
929
|
-
value: props.classId,
|
|
930
|
-
onChange: (e) => props.onClassChange(e.target.value),
|
|
931
|
-
className: "w-full appearance-none rounded-lg border border-slate-200 bg-white py-2 pl-9 pr-4 text-sm text-dark-blue-400 focus:border-sky-blue-400 focus:outline-none"
|
|
932
|
-
},
|
|
933
|
-
/* @__PURE__ */ React.createElement("option", { value: "" }, "All classes"),
|
|
934
|
-
props.classes.map((c) => /* @__PURE__ */ React.createElement("option", { key: c.classId, value: c.classId }, c.name))
|
|
935
|
-
)), /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React.createElement("div", { className: "flex w-fit flex-wrap gap-1 rounded-xl border border-slate-200 bg-white p-1" }, TABS$4.map((t) => /* @__PURE__ */ React.createElement(
|
|
936
|
-
"button",
|
|
937
|
-
{
|
|
938
|
-
key: t.value,
|
|
939
|
-
onClick: () => setTab(t.value),
|
|
940
|
-
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"}`
|
|
941
|
-
},
|
|
942
|
-
t.label
|
|
943
|
-
))), tab === "impact" && /* @__PURE__ */ React.createElement(
|
|
944
|
-
Table$f,
|
|
945
|
-
{
|
|
946
|
-
loading: props.loading,
|
|
947
|
-
items: props.impacts
|
|
948
|
-
}
|
|
949
|
-
), tab === "reflections" && /* @__PURE__ */ React.createElement(
|
|
950
|
-
Table$g,
|
|
951
|
-
{
|
|
952
|
-
loading: props.loading,
|
|
953
|
-
items: props.reflections
|
|
954
|
-
}
|
|
955
|
-
), tab === "badges" && /* @__PURE__ */ React.createElement(
|
|
956
|
-
Table$e,
|
|
957
|
-
{
|
|
958
|
-
loading: props.loading,
|
|
959
|
-
items: props.badges,
|
|
960
|
-
onClick: props.onBadgeClick
|
|
961
|
-
}
|
|
962
|
-
), tab === "lessons" && /* @__PURE__ */ React.createElement(
|
|
963
|
-
Table$d,
|
|
964
|
-
{
|
|
965
|
-
loading: props.loading,
|
|
966
|
-
items: props.lessons,
|
|
967
|
-
onClick: props.onLessonClick
|
|
968
|
-
}
|
|
969
|
-
), tab === "students" && /* @__PURE__ */ React.createElement(
|
|
970
|
-
Table$h,
|
|
971
|
-
{
|
|
972
|
-
loading: props.loading,
|
|
973
|
-
items: props.students,
|
|
974
|
-
onViewProfile: props.onViewStudentProfile
|
|
975
|
-
}
|
|
976
|
-
)));
|
|
699
|
+
)), /* @__PURE__ */ React.createElement(Table$c, { loading: props.loading, items: props.badges }));
|
|
977
700
|
};
|
|
978
701
|
|
|
979
702
|
var __defProp$g = Object.defineProperty;
|
|
@@ -1003,7 +726,7 @@ const openDeleteModal$2 = (student, onDelete) => openConfirmModal({
|
|
|
1003
726
|
confirmProps: { color: "red" },
|
|
1004
727
|
onConfirm: () => onDelete(student)
|
|
1005
728
|
});
|
|
1006
|
-
function Table$
|
|
729
|
+
function Table$b(props) {
|
|
1007
730
|
const preparedItems = React.useMemo(() => {
|
|
1008
731
|
return props.items.map((item) => __spreadProps$d(__spreadValues$g({}, item), {
|
|
1009
732
|
fullName: item.givenName && item.familyName ? `${item.givenName} ${item.familyName}`.toLowerCase() : item.email.toLowerCase()
|
|
@@ -1140,7 +863,7 @@ const Class = (props) => {
|
|
|
1140
863
|
value: props.numberOfLessonsCompleted
|
|
1141
864
|
}
|
|
1142
865
|
] }), /* @__PURE__ */ React.createElement(
|
|
1143
|
-
Table$
|
|
866
|
+
Table$b,
|
|
1144
867
|
{
|
|
1145
868
|
loading: props.loading,
|
|
1146
869
|
items: props.members,
|
|
@@ -1262,7 +985,7 @@ const openDeleteModal$1 = (group, onDeleteClass) => openConfirmModal({
|
|
|
1262
985
|
confirmProps: { color: "red" },
|
|
1263
986
|
onConfirm: () => onDeleteClass(group)
|
|
1264
987
|
});
|
|
1265
|
-
function Table$
|
|
988
|
+
function Table$a(props) {
|
|
1266
989
|
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
1267
990
|
if (props.items.length === 0) {
|
|
1268
991
|
return /* @__PURE__ */ React.createElement(
|
|
@@ -1384,7 +1107,7 @@ const Classes = (props) => {
|
|
|
1384
1107
|
className: "w-full rounded-xl border border-slate-200 bg-white py-2.5 pl-10 pr-4 text-sm text-dark-blue-400 placeholder:text-slate-400 focus:border-sky-blue-400 focus:outline-none"
|
|
1385
1108
|
}
|
|
1386
1109
|
)), /* @__PURE__ */ React.createElement(
|
|
1387
|
-
Table$
|
|
1110
|
+
Table$a,
|
|
1388
1111
|
{
|
|
1389
1112
|
loading: props.loading,
|
|
1390
1113
|
items: props.classes,
|
|
@@ -1393,7 +1116,8 @@ const Classes = (props) => {
|
|
|
1393
1116
|
)));
|
|
1394
1117
|
};
|
|
1395
1118
|
|
|
1396
|
-
function Table$
|
|
1119
|
+
function Table$9(props) {
|
|
1120
|
+
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
1397
1121
|
if (props.items.length === 0) {
|
|
1398
1122
|
return /* @__PURE__ */ React.createElement(
|
|
1399
1123
|
PlaceholderBanner,
|
|
@@ -1405,18 +1129,18 @@ function Table$a(props) {
|
|
|
1405
1129
|
}
|
|
1406
1130
|
);
|
|
1407
1131
|
}
|
|
1408
|
-
return /* @__PURE__ */ React.createElement("div", { className: "overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm" },
|
|
1132
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-4 px-4" }, /* @__PURE__ */ React.createElement(SortableHeader, { label: "Badge Name", sortKey: "badgeName", sortConfig, onSort: requestSort, className: "flex-1" }), /* @__PURE__ */ React.createElement(SortableHeader, { label: "Status", sortKey: "isComplete", sortConfig, onSort: requestSort, align: "center", className: "w-28 shrink-0" })), /* @__PURE__ */ React.createElement("div", { className: "overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm" }, sortedItems.map((row, i) => /* @__PURE__ */ React.createElement(
|
|
1409
1133
|
"div",
|
|
1410
1134
|
{
|
|
1411
1135
|
key: row.badgeId || row.badgeName,
|
|
1412
|
-
className: `flex items-center justify-between gap-4 px-5 py-4 ${i <
|
|
1136
|
+
className: `flex items-center justify-between gap-4 px-5 py-4 ${i < sortedItems.length - 1 ? "border-b border-slate-100" : ""}`
|
|
1413
1137
|
},
|
|
1414
|
-
/* @__PURE__ */ React.createElement("div", { className: "text-sm font-bold text-dark-blue-400" }, row.badgeName),
|
|
1415
|
-
/* @__PURE__ */ React.createElement("span", { className: `shrink-0 rounded-full px-2.5 py-1 text-[10px] font-bold uppercase tracking-wide ${row.isComplete ? "bg-mint-100 text-dark-blue-400" : "bg-slate-100 text-slate-500"}` }, row.isComplete ? "Complete" : "Incomplete")
|
|
1416
|
-
)));
|
|
1138
|
+
/* @__PURE__ */ React.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React.createElement("div", { className: "text-sm font-bold text-dark-blue-400" }, row.badgeName), row.pathwayName && /* @__PURE__ */ React.createElement("div", { className: "mt-1 text-xs text-slate-500" }, row.pathwayName, " pathway")),
|
|
1139
|
+
/* @__PURE__ */ React.createElement("span", { className: `w-28 shrink-0 rounded-full px-2.5 py-1 text-center text-[10px] font-bold uppercase tracking-wide ${row.isComplete ? "bg-mint-100 text-dark-blue-400" : "bg-slate-100 text-slate-500"}` }, row.isComplete ? "Complete" : "Incomplete")
|
|
1140
|
+
))));
|
|
1417
1141
|
}
|
|
1418
1142
|
|
|
1419
|
-
function Table$
|
|
1143
|
+
function Table$8(props) {
|
|
1420
1144
|
if (props.items.length === 0) {
|
|
1421
1145
|
return /* @__PURE__ */ React.createElement(
|
|
1422
1146
|
PlaceholderBanner,
|
|
@@ -1433,24 +1157,28 @@ function Table$9(props) {
|
|
|
1433
1157
|
props.items.forEach((row) => {
|
|
1434
1158
|
let group = groupByLessonId[row.lessonId];
|
|
1435
1159
|
if (!group) {
|
|
1436
|
-
group = { lessonId: row.lessonId, lessonName: row.lessonName, badgeName: row.badgeName, href: row.href, items: [] };
|
|
1160
|
+
group = { lessonId: row.lessonId, lessonName: row.lessonName, badgeName: row.badgeName, pathwayName: row.pathwayName, href: row.href, items: [] };
|
|
1437
1161
|
groupByLessonId[row.lessonId] = group;
|
|
1438
1162
|
groups.push(group);
|
|
1439
1163
|
}
|
|
1440
1164
|
group.items.push(row);
|
|
1441
1165
|
});
|
|
1442
|
-
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-3" }, groups.map((group) =>
|
|
1443
|
-
|
|
1444
|
-
{
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1166
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-3" }, groups.map((group) => {
|
|
1167
|
+
const subtitleParts = [group.badgeName, group.pathwayName ? `${group.pathwayName} pathway` : void 0].filter(Boolean);
|
|
1168
|
+
return /* @__PURE__ */ React.createElement("div", { key: group.lessonId, className: "overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm" }, /* @__PURE__ */ React.createElement("div", { className: "border-b border-slate-100 px-5 py-4" }, /* @__PURE__ */ React.createElement(Link, { to: group.href, className: "text-sm font-bold text-dark-blue-400 no-underline hover:underline" }, group.lessonName), subtitleParts.length > 0 && /* @__PURE__ */ React.createElement("div", { className: "mt-1 text-xs text-slate-500" }, subtitleParts.join(" \xB7 "))), group.items.map((row, i) => /* @__PURE__ */ React.createElement(
|
|
1169
|
+
"div",
|
|
1170
|
+
{
|
|
1171
|
+
key: row.questionName,
|
|
1172
|
+
className: `px-5 py-4 ${i < group.items.length - 1 ? "border-b border-slate-100" : ""}`
|
|
1173
|
+
},
|
|
1174
|
+
/* @__PURE__ */ React.createElement("div", { className: "text-xs font-semibold text-slate-500" }, row.questionName),
|
|
1175
|
+
/* @__PURE__ */ React.createElement("div", { className: "mt-1 text-xs text-slate-600" }, row.answer.join(", "))
|
|
1176
|
+
)));
|
|
1177
|
+
}));
|
|
1451
1178
|
}
|
|
1452
1179
|
|
|
1453
|
-
function Table$
|
|
1180
|
+
function Table$7(props) {
|
|
1181
|
+
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
1454
1182
|
if (props.items.length === 0) {
|
|
1455
1183
|
return /* @__PURE__ */ React.createElement(
|
|
1456
1184
|
PlaceholderBanner,
|
|
@@ -1462,15 +1190,18 @@ function Table$8(props) {
|
|
|
1462
1190
|
}
|
|
1463
1191
|
);
|
|
1464
1192
|
}
|
|
1465
|
-
return /* @__PURE__ */ React.createElement("div", { className: "overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm" },
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1193
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-4 px-4" }, /* @__PURE__ */ React.createElement(SortableHeader, { label: "Lesson Name", sortKey: "lessonName", sortConfig, onSort: requestSort, className: "flex-1" }), /* @__PURE__ */ React.createElement(SortableHeader, { label: "Rating", sortKey: "rating", sortConfig, onSort: requestSort, align: "center", className: "w-16 shrink-0" })), /* @__PURE__ */ React.createElement("div", { className: "overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm" }, sortedItems.map((row, i) => {
|
|
1194
|
+
const subtitleParts = [row.badgeName, row.pathwayName ? `${row.pathwayName} pathway` : void 0].filter(Boolean);
|
|
1195
|
+
return /* @__PURE__ */ React.createElement(
|
|
1196
|
+
"div",
|
|
1197
|
+
{
|
|
1198
|
+
key: row.lessonId || row.lessonName,
|
|
1199
|
+
className: `flex items-start justify-between gap-4 px-5 py-4 ${i < sortedItems.length - 1 ? "border-b border-slate-100" : ""}`
|
|
1200
|
+
},
|
|
1201
|
+
/* @__PURE__ */ React.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React.createElement(Link, { to: row.href, className: "text-sm font-bold text-dark-blue-400 no-underline hover:underline" }, row.lessonName), subtitleParts.length > 0 && /* @__PURE__ */ React.createElement("div", { className: "mt-1 text-xs text-slate-500" }, subtitleParts.join(" \xB7 ")), /* @__PURE__ */ React.createElement("div", { className: "mt-1.5 text-xs text-slate-600" }, row.reflection)),
|
|
1202
|
+
/* @__PURE__ */ React.createElement("div", { className: "shrink-0 rounded-full bg-gold-100 px-2.5 py-1 text-[10px] font-bold text-dark-blue-400" }, row.rating.toLocaleString())
|
|
1203
|
+
);
|
|
1204
|
+
})));
|
|
1474
1205
|
}
|
|
1475
1206
|
|
|
1476
1207
|
const TABS$3 = [
|
|
@@ -1478,10 +1209,32 @@ const TABS$3 = [
|
|
|
1478
1209
|
{ label: "My answers", value: "answers" },
|
|
1479
1210
|
{ label: "My reflections", value: "reflections" }
|
|
1480
1211
|
];
|
|
1212
|
+
const OTHER_FILTER$1 = "__other__";
|
|
1481
1213
|
const Student = (props) => {
|
|
1214
|
+
var _a;
|
|
1482
1215
|
const [tab, setTab] = useState("badges");
|
|
1216
|
+
const [pathwayFilter, setPathwayFilter] = useState("");
|
|
1483
1217
|
const numberOfBadgesCompleted = props.badges.length > 0 ? props.badges.filter((b) => b.isComplete).length : 0;
|
|
1484
1218
|
const numberOfLessonsCompleted = props.lessons.filter((l) => l.isComplete).length;
|
|
1219
|
+
const activeItems = tab === "badges" ? props.badges : tab === "answers" ? props.answers : props.reflections;
|
|
1220
|
+
const pathways = useMemo(() => {
|
|
1221
|
+
const seen = {};
|
|
1222
|
+
activeItems.forEach((item) => {
|
|
1223
|
+
if (item.pathwayId && item.pathwayName && !(item.pathwayId in seen)) {
|
|
1224
|
+
seen[item.pathwayId] = item.pathwayName;
|
|
1225
|
+
}
|
|
1226
|
+
});
|
|
1227
|
+
return Object.keys(seen).map((pathwayId) => ({ pathwayId, title: seen[pathwayId] }));
|
|
1228
|
+
}, [activeItems]);
|
|
1229
|
+
const hasOther = activeItems.some((item) => !item.pathwayId);
|
|
1230
|
+
const filterByPathway = (items) => {
|
|
1231
|
+
if (!pathwayFilter)
|
|
1232
|
+
return items;
|
|
1233
|
+
if (pathwayFilter === OTHER_FILTER$1)
|
|
1234
|
+
return items.filter((item) => !item.pathwayId);
|
|
1235
|
+
return items.filter((item) => item.pathwayId === pathwayFilter);
|
|
1236
|
+
};
|
|
1237
|
+
const activePathwayName = pathwayFilter && pathwayFilter !== OTHER_FILTER$1 ? (_a = pathways.find((p) => p.pathwayId === pathwayFilter)) == null ? void 0 : _a.title : void 0;
|
|
1485
1238
|
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-5 px-4 py-8" }, /* @__PURE__ */ React.createElement(
|
|
1486
1239
|
PageHeader,
|
|
1487
1240
|
{
|
|
@@ -1512,7 +1265,25 @@ const Student = (props) => {
|
|
|
1512
1265
|
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"}`
|
|
1513
1266
|
},
|
|
1514
1267
|
t.label
|
|
1515
|
-
))),
|
|
1268
|
+
))), pathways.length > 0 && /* @__PURE__ */ React.createElement("div", { className: "flex flex-wrap items-center gap-3" }, /* @__PURE__ */ React.createElement(PathwayFilterPills, { pathways, selected: pathwayFilter, onChange: setPathwayFilter }), hasOther && /* @__PURE__ */ React.createElement(
|
|
1269
|
+
"button",
|
|
1270
|
+
{
|
|
1271
|
+
type: "button",
|
|
1272
|
+
onClick: () => setPathwayFilter(OTHER_FILTER$1),
|
|
1273
|
+
className: `rounded-full border px-3.5 py-1.5 text-xs font-bold ${pathwayFilter === OTHER_FILTER$1 ? "border-sky-blue-400/40 bg-sky-blue-400/20 text-dark-blue-400" : "border-slate-200 bg-white text-slate-500 hover:bg-slate-50"}`
|
|
1274
|
+
},
|
|
1275
|
+
"Other"
|
|
1276
|
+
), activePathwayName && props.onViewPathway && /* @__PURE__ */ React.createElement(
|
|
1277
|
+
"button",
|
|
1278
|
+
{
|
|
1279
|
+
type: "button",
|
|
1280
|
+
onClick: () => props.onViewPathway(pathwayFilter),
|
|
1281
|
+
className: "text-xs font-bold text-dark-blue-400 hover:underline"
|
|
1282
|
+
},
|
|
1283
|
+
"View ",
|
|
1284
|
+
activePathwayName,
|
|
1285
|
+
" Transcript \u2192"
|
|
1286
|
+
)), tab === "badges" && /* @__PURE__ */ React.createElement(Table$9, { loading: props.loading, items: filterByPathway(props.badges) }), tab === "answers" && /* @__PURE__ */ React.createElement(Table$8, { loading: props.loading, items: filterByPathway(props.answers) }), tab === "reflections" && /* @__PURE__ */ React.createElement(Table$7, { loading: props.loading, items: filterByPathway(props.reflections) }));
|
|
1516
1287
|
};
|
|
1517
1288
|
|
|
1518
1289
|
const ACCENT_BORDER = {
|
|
@@ -1567,15 +1338,6 @@ const Home = (props) => {
|
|
|
1567
1338
|
},
|
|
1568
1339
|
"Copy"
|
|
1569
1340
|
)))), /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React.createElement(
|
|
1570
|
-
CardGradient,
|
|
1571
|
-
{
|
|
1572
|
-
title: "Dashboard",
|
|
1573
|
-
description: "Track your students\u2019 pathway progress",
|
|
1574
|
-
accent: "mint",
|
|
1575
|
-
icon: /* @__PURE__ */ React.createElement(IconGauge, { size: 18, stroke: 1.75 }),
|
|
1576
|
-
onClick: props.onDashboardClick
|
|
1577
|
-
}
|
|
1578
|
-
), /* @__PURE__ */ React.createElement(
|
|
1579
1341
|
CardGradient,
|
|
1580
1342
|
{
|
|
1581
1343
|
title: "Classes",
|
|
@@ -1611,25 +1373,27 @@ const Home = (props) => {
|
|
|
1611
1373
|
icon: /* @__PURE__ */ React.createElement(IconClipboard, { size: 18, stroke: 1.75 }),
|
|
1612
1374
|
onClick: props.onFileLockerClick
|
|
1613
1375
|
}
|
|
1376
|
+
), /* @__PURE__ */ React.createElement(
|
|
1377
|
+
CardGradient,
|
|
1378
|
+
{
|
|
1379
|
+
title: "Comments",
|
|
1380
|
+
description: "Leave and resolve comments on student submissions",
|
|
1381
|
+
accent: "mint",
|
|
1382
|
+
icon: /* @__PURE__ */ React.createElement(IconMessageCircle, { size: 18, stroke: 1.75 }),
|
|
1383
|
+
onClick: props.onCommentsClick
|
|
1384
|
+
}
|
|
1385
|
+
), /* @__PURE__ */ React.createElement(
|
|
1386
|
+
CardGradient,
|
|
1387
|
+
{
|
|
1388
|
+
title: "Validation",
|
|
1389
|
+
description: "Credit badges in bulk once students have met the requirements",
|
|
1390
|
+
accent: "gold",
|
|
1391
|
+
icon: /* @__PURE__ */ React.createElement(IconClipboardCheck, { size: 18, stroke: 1.75 }),
|
|
1392
|
+
onClick: props.onValidationClick
|
|
1393
|
+
}
|
|
1614
1394
|
)));
|
|
1615
1395
|
};
|
|
1616
1396
|
|
|
1617
|
-
function Table$7(props) {
|
|
1618
|
-
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
1619
|
-
if (props.items.length === 0) {
|
|
1620
|
-
return /* @__PURE__ */ React.createElement(
|
|
1621
|
-
PlaceholderBanner,
|
|
1622
|
-
{
|
|
1623
|
-
title: "No reflections to display",
|
|
1624
|
-
description: "There has not been any lesson progress just yet.",
|
|
1625
|
-
loading: props.loading,
|
|
1626
|
-
icon: "lessons"
|
|
1627
|
-
}
|
|
1628
|
-
);
|
|
1629
|
-
}
|
|
1630
|
-
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React.createElement("div", { className: "flex gap-4 px-4 text-[10.5px] font-extrabold uppercase tracking-wide text-slate-400" }, /* @__PURE__ */ React.createElement(SortableHeader, { label: "Student Name", sortKey: "studentName", sortConfig, onSort: requestSort, className: "w-40 shrink-0" }), /* @__PURE__ */ React.createElement("div", { className: "flex-1" }, "Reflection"), /* @__PURE__ */ React.createElement(SortableHeader, { label: "Rating", sortKey: "rating", sortConfig, onSort: requestSort, align: "right", className: "w-20 shrink-0" })), sortedItems.map((row, i) => /* @__PURE__ */ React.createElement("div", { key: `${row.studentName}-${i}`, className: "rounded-xl border border-slate-200 bg-white p-4 shadow-sm" }, /* @__PURE__ */ React.createElement("div", { className: "flex items-start gap-4" }, /* @__PURE__ */ React.createElement("div", { className: "w-40 shrink-0 text-sm font-bold text-dark-blue-400" }, row.studentName), /* @__PURE__ */ React.createElement("div", { className: "flex-1 text-sm text-slate-600" }, row.reflection), /* @__PURE__ */ React.createElement("div", { className: "w-20 shrink-0 text-right text-sm text-slate-500" }, row.rating)))));
|
|
1631
|
-
}
|
|
1632
|
-
|
|
1633
1397
|
const SplitButton$3 = (props) => {
|
|
1634
1398
|
return /* @__PURE__ */ React.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React.createElement(
|
|
1635
1399
|
Link,
|
|
@@ -1660,10 +1424,9 @@ const SplitButton$3 = (props) => {
|
|
|
1660
1424
|
};
|
|
1661
1425
|
|
|
1662
1426
|
function Stack$3(props) {
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
}
|
|
1666
|
-
return /* @__PURE__ */ React.createElement(Link, { to: props.href, state: props.state, className: "flex flex-col gap-4 no-underline" }, props.items.map((row) => /* @__PURE__ */ React.createElement("div", { key: row.questionName }, /* @__PURE__ */ React.createElement("div", { className: "text-sm font-bold text-dark-blue-400" }, row.questionName), /* @__PURE__ */ React.createElement("div", { className: "mt-1 text-sm text-slate-600" }, row.answer.join(", ") || "No answer."))), /* @__PURE__ */ React.createElement("div", { className: "text-xs font-bold text-dark-blue-400 hover:underline" }, "View full response \u2192"));
|
|
1427
|
+
const hasAnswers = props.items.length > 0;
|
|
1428
|
+
const hasReflection = !!props.reflection;
|
|
1429
|
+
return /* @__PURE__ */ React.createElement(Link, { to: props.href, state: props.state, className: "flex flex-col gap-4 no-underline" }, hasAnswers ? props.items.map((row) => /* @__PURE__ */ React.createElement("div", { key: row.questionName }, /* @__PURE__ */ React.createElement("div", { className: "text-sm font-bold text-dark-blue-400" }, row.questionName), /* @__PURE__ */ React.createElement("div", { className: "mt-1 text-sm text-slate-600" }, row.answer.join(", ") || "No answer."))) : !hasReflection ? /* @__PURE__ */ React.createElement("div", { className: "text-sm font-bold text-dark-blue-400" }, "No question responses recorded yet.") : null, hasReflection && /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { className: "flex items-center justify-between gap-3" }, /* @__PURE__ */ React.createElement("div", { className: "text-sm font-bold text-dark-blue-400" }, "Reflection"), !!props.rating && /* @__PURE__ */ React.createElement("div", { className: "shrink-0 rounded-full bg-gold-100 px-2.5 py-1 text-[10px] font-bold text-dark-blue-400" }, props.rating)), /* @__PURE__ */ React.createElement("div", { className: "mt-1 text-sm text-slate-600" }, props.reflection)), /* @__PURE__ */ React.createElement("div", { className: "text-xs font-bold text-dark-blue-400 hover:underline" }, "View full response \u2192"));
|
|
1667
1430
|
}
|
|
1668
1431
|
|
|
1669
1432
|
var __defProp$d = Object.defineProperty;
|
|
@@ -1717,7 +1480,7 @@ function Table$6(props) {
|
|
|
1717
1480
|
/* @__PURE__ */ React.createElement("div", { className: "flex min-w-0 flex-1 items-center gap-3" }, row.avatar ? /* @__PURE__ */ React.createElement("img", { src: row.avatar, className: "h-9 w-9 shrink-0 rounded-full object-cover", alt: "" }) : /* @__PURE__ */ React.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.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React.createElement("div", { className: "truncate text-sm font-bold text-dark-blue-400" }, row.name), /* @__PURE__ */ React.createElement("div", { className: "truncate text-xs text-slate-400" }, row.email))),
|
|
1718
1481
|
/* @__PURE__ */ React.createElement("div", { className: "w-28 shrink-0 text-center" }, row.isComplete && /* @__PURE__ */ React.createElement("span", { className: "rounded-full bg-mint-100 px-2.5 py-1 text-[10px] font-bold text-dark-blue-400" }, "Complete"), !row.isComplete && !row.isStarted && /* @__PURE__ */ React.createElement("span", { className: "rounded-full bg-slate-100 px-2.5 py-1 text-[10px] font-bold text-slate-500" }, "Not started"), !row.isComplete && !!row.isStarted && /* @__PURE__ */ React.createElement("span", { className: "rounded-full bg-gold-100 px-2.5 py-1 text-[10px] font-bold text-dark-blue-400" }, "In progress")),
|
|
1719
1482
|
/* @__PURE__ */ React.createElement(IconChevronDown, { size: 15, stroke: 2.3, className: `shrink-0 text-slate-400 transition-transform ${isOpen ? "rotate-180" : ""}` })
|
|
1720
|
-
), isOpen && /* @__PURE__ */ React.createElement("div", { className: "border-t border-slate-100 px-4 py-3" }, /* @__PURE__ */ React.createElement(Stack$3, { href: row.href, items: row.answers, state: props.linkState })));
|
|
1483
|
+
), isOpen && /* @__PURE__ */ React.createElement("div", { className: "border-t border-slate-100 px-4 py-3" }, /* @__PURE__ */ React.createElement(Stack$3, { href: row.href, items: row.answers, reflection: row.reflection, rating: row.rating, state: props.linkState })));
|
|
1721
1484
|
}));
|
|
1722
1485
|
}
|
|
1723
1486
|
|
|
@@ -1738,52 +1501,47 @@ function Stack$2(props) {
|
|
|
1738
1501
|
],
|
|
1739
1502
|
[]
|
|
1740
1503
|
);
|
|
1741
|
-
|
|
1504
|
+
const chartItems = props.items.filter((row) => row.chart);
|
|
1505
|
+
if (chartItems.length === 0) {
|
|
1742
1506
|
return /* @__PURE__ */ React.createElement(
|
|
1743
1507
|
PlaceholderBanner,
|
|
1744
1508
|
{
|
|
1745
|
-
title: "No questions
|
|
1746
|
-
description: "
|
|
1509
|
+
title: "No multiple-choice questions",
|
|
1510
|
+
description: "This lesson doesn't have any multiple-choice questions to chart.",
|
|
1747
1511
|
loading: props.loading,
|
|
1748
1512
|
icon: "lessons"
|
|
1749
1513
|
}
|
|
1750
1514
|
);
|
|
1751
1515
|
}
|
|
1752
|
-
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-3" },
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
{
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
secondaryAxes
|
|
1779
|
-
}
|
|
1516
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-3" }, chartItems.map((row) => {
|
|
1517
|
+
const labelMap = {};
|
|
1518
|
+
const choices = row.choices || [];
|
|
1519
|
+
choices.forEach((c) => {
|
|
1520
|
+
labelMap[c] = 0;
|
|
1521
|
+
});
|
|
1522
|
+
row.answers.forEach((a) => a.forEach((r) => {
|
|
1523
|
+
if (r in labelMap) {
|
|
1524
|
+
labelMap[r] = labelMap[r] ? labelMap[r] + 1 : 1;
|
|
1525
|
+
}
|
|
1526
|
+
}));
|
|
1527
|
+
return /* @__PURE__ */ React.createElement("div", { key: row.question, className: "rounded-xl border border-slate-200 bg-white p-6 shadow-sm" }, /* @__PURE__ */ React.createElement("div", { className: "text-base font-extrabold text-dark-blue-400" }, row.question), /* @__PURE__ */ React.createElement("div", { className: "mt-1 text-xs text-slate-500" }, row.answers.length, " answers"), /* @__PURE__ */ React.createElement("div", { className: "relative mt-4 h-[300px] w-full bg-white" }, /* @__PURE__ */ React.createElement(
|
|
1528
|
+
Chart,
|
|
1529
|
+
{
|
|
1530
|
+
options: {
|
|
1531
|
+
data: [{
|
|
1532
|
+
label: "",
|
|
1533
|
+
data: choices.map((k) => {
|
|
1534
|
+
return {
|
|
1535
|
+
primary: truncateWithEllipses(k, 50),
|
|
1536
|
+
secondary: labelMap[k]
|
|
1537
|
+
};
|
|
1538
|
+
})
|
|
1539
|
+
}],
|
|
1540
|
+
primaryAxis,
|
|
1541
|
+
secondaryAxes
|
|
1780
1542
|
}
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
return /* @__PURE__ */ React.createElement("div", { key: row.question, className: "rounded-xl border border-slate-200 bg-white p-6 shadow-sm" }, /* @__PURE__ */ React.createElement("div", { className: "text-base font-extrabold text-dark-blue-400" }, row.question), /* @__PURE__ */ React.createElement("div", { className: "mt-1 text-xs text-slate-500" }, row.answers.length, " answers"), /* @__PURE__ */ React.createElement("div", { className: "mt-4 flex flex-col gap-2" }, row.answers.map((a) => {
|
|
1784
|
-
const answerText = a.join("\n");
|
|
1785
|
-
return /* @__PURE__ */ React.createElement("div", { key: answerText, className: "rounded-lg bg-slate-50 p-3 text-sm text-slate-700" }, answerText);
|
|
1786
|
-
})));
|
|
1543
|
+
}
|
|
1544
|
+
)));
|
|
1787
1545
|
}));
|
|
1788
1546
|
}
|
|
1789
1547
|
const truncateWithEllipses = (text, max) => text.substr(0, max - 1) + (text.length > max ? "…" : "");
|
|
@@ -1796,13 +1554,9 @@ const Lesson = (props) => {
|
|
|
1796
1554
|
const contributors = props.contributors || [];
|
|
1797
1555
|
const visibleContributors = contributors.slice(0, 5);
|
|
1798
1556
|
const remainingContributors = contributors.slice(5).length;
|
|
1799
|
-
const tabs =
|
|
1557
|
+
const tabs = [
|
|
1800
1558
|
{ label: "By question", value: "question" },
|
|
1801
1559
|
{ label: "By student", value: "students" }
|
|
1802
|
-
] : [
|
|
1803
|
-
{ label: "By question", value: "question" },
|
|
1804
|
-
{ label: "By student", value: "students" },
|
|
1805
|
-
{ label: "By reflection", value: "reflections" }
|
|
1806
1560
|
];
|
|
1807
1561
|
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-5 px-4 py-8" }, /* @__PURE__ */ React.createElement(
|
|
1808
1562
|
PageHeader,
|
|
@@ -1850,7 +1604,7 @@ const Lesson = (props) => {
|
|
|
1850
1604
|
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"}`
|
|
1851
1605
|
},
|
|
1852
1606
|
t.label
|
|
1853
|
-
))), tab === "question" && /* @__PURE__ */ React.createElement(Stack$2, { loading: props.loading, items: props.questions }), tab === "
|
|
1607
|
+
))), tab === "question" && /* @__PURE__ */ React.createElement(Stack$2, { loading: props.loading, items: props.questions }), tab === "students" && /* @__PURE__ */ React.createElement(Table$6, { loading: props.loading, items: props.students, linkState: props.linkState })));
|
|
1854
1608
|
};
|
|
1855
1609
|
|
|
1856
1610
|
function Table$5(props) {
|
|
@@ -4406,5 +4160,5 @@ const ValidationCenter = (props) => {
|
|
|
4406
4160
|
)));
|
|
4407
4161
|
};
|
|
4408
4162
|
|
|
4409
|
-
export { AdminProvider, App, Badge, Badges, Class, Classes, CommentCenter,
|
|
4163
|
+
export { AdminProvider, App, Badge, Badges, Class, Classes, CommentCenter, FileLocker, GettingStarted, Home, Lesson, Lessons, Navbar, Organization, Pathway, Pathways, People, StartAnonymousLesson, Student, SwitchAccount, TrialHome, TrialRegistration, ValidationCenter };
|
|
4410
4164
|
//# sourceMappingURL=index.mjs.map
|