@local-civics/mgmt-ui 0.1.190 → 0.1.192

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { useState, useMemo } from 'react';
3
- import { createStyles, Group, Avatar, Text, Box, Badge as Badge$1, ThemeIcon, Collapse, Navbar as Navbar$1, Center, Image, Code, Burger, ScrollArea, Modal, Loader, Container, Button, Title, UnstyledButton, Card, SimpleGrid, Tabs as Tabs$1, Stack as Stack$4, Grid, ActionIcon, LoadingOverlay, Select, Table as Table$k, Autocomplete, Drawer, Divider, TextInput, Tooltip, Paper, Overlay, Anchor, Menu, Checkbox, createEmotionCache, MantineProvider, AppShell } from '@mantine/core';
4
- import { IconChevronRight, IconChevronLeft, IconVideo, IconSwitchHorizontal, IconLogout, IconHome2, IconGauge, IconCategory2, IconRoute, IconAlbum, IconLambda, IconBuilding, IconBatteryEco, IconBooks, IconBackpack, IconClipboardCopy, IconTableExport, IconArrowLeft, IconPlaylistAdd, IconCheck, IconTrash, IconChevronUp, IconChevronDown, IconSelector, IconDownload, IconX, IconCloudUpload, IconInfoCircle, IconColorSwatch, IconPointer, IconScribble, IconSchool, IconPodium, IconBriefcase, IconPresentation, IconNews, IconTools, IconBrandInstagram, IconBrandLinkedin, IconBrandFacebook } from '@tabler/icons';
3
+ import { createStyles, Group, Avatar, Text, Box, Badge as Badge$1, ThemeIcon, Collapse, Navbar as Navbar$1, Center, Image, Code, Burger, ScrollArea, Modal, Loader, Container, Button, Title, UnstyledButton, Card, SimpleGrid, Tabs as Tabs$1, Stack as Stack$5, Grid, ActionIcon, LoadingOverlay, Select, Table as Table$l, Autocomplete, Drawer, Divider, TextInput, Tooltip, Paper, Overlay, Anchor, Menu, Checkbox, createEmotionCache, MantineProvider, AppShell } from '@mantine/core';
4
+ import { IconChevronRight, IconChevronLeft, IconVideo, IconSwitchHorizontal, IconLogout, IconHome2, IconGauge, IconCategory2, IconRoute, IconAlbum, IconLambda, IconClipboard, IconBuilding, IconBatteryEco, IconBooks, IconBackpack, IconClipboardCopy, IconTableExport, IconArrowLeft, IconPlaylistAdd, IconCheck, IconTrash, IconChevronUp, IconChevronDown, IconSelector, IconDownload, IconX, IconCloudUpload, IconInfoCircle, IconColorSwatch, IconPointer, IconScribble, IconSchool, IconPodium, IconBriefcase, IconPresentation, IconNews, IconTools, IconBrandInstagram, IconBrandLinkedin, IconBrandFacebook } from '@tabler/icons';
5
5
  import { Link } from 'react-router-dom';
6
6
  import { showNotification, NotificationsProvider } from '@mantine/notifications';
7
7
  export { showNotification, updateNotification } from '@mantine/notifications';
@@ -14,35 +14,35 @@ import AvatarInit from 'avatar-initials';
14
14
  import { Chart } from 'react-charts';
15
15
  import { useUncontrolled } from '@mantine/hooks';
16
16
 
17
- var __defProp$c = Object.defineProperty;
18
- var __getOwnPropSymbols$c = Object.getOwnPropertySymbols;
19
- var __hasOwnProp$c = Object.prototype.hasOwnProperty;
20
- var __propIsEnum$c = Object.prototype.propertyIsEnumerable;
21
- var __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
22
- var __spreadValues$c = (a, b) => {
17
+ var __defProp$d = Object.defineProperty;
18
+ var __getOwnPropSymbols$d = Object.getOwnPropertySymbols;
19
+ var __hasOwnProp$d = Object.prototype.hasOwnProperty;
20
+ var __propIsEnum$d = Object.prototype.propertyIsEnumerable;
21
+ var __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
22
+ var __spreadValues$d = (a, b) => {
23
23
  for (var prop in b || (b = {}))
24
- if (__hasOwnProp$c.call(b, prop))
25
- __defNormalProp$c(a, prop, b[prop]);
26
- if (__getOwnPropSymbols$c)
27
- for (var prop of __getOwnPropSymbols$c(b)) {
28
- if (__propIsEnum$c.call(b, prop))
29
- __defNormalProp$c(a, prop, b[prop]);
24
+ if (__hasOwnProp$d.call(b, prop))
25
+ __defNormalProp$d(a, prop, b[prop]);
26
+ if (__getOwnPropSymbols$d)
27
+ for (var prop of __getOwnPropSymbols$d(b)) {
28
+ if (__propIsEnum$d.call(b, prop))
29
+ __defNormalProp$d(a, prop, b[prop]);
30
30
  }
31
31
  return a;
32
32
  };
33
33
  var __objRest$2 = (source, exclude) => {
34
34
  var target = {};
35
35
  for (var prop in source)
36
- if (__hasOwnProp$c.call(source, prop) && exclude.indexOf(prop) < 0)
36
+ if (__hasOwnProp$d.call(source, prop) && exclude.indexOf(prop) < 0)
37
37
  target[prop] = source[prop];
38
- if (source != null && __getOwnPropSymbols$c)
39
- for (var prop of __getOwnPropSymbols$c(source)) {
40
- if (exclude.indexOf(prop) < 0 && __propIsEnum$c.call(source, prop))
38
+ if (source != null && __getOwnPropSymbols$d)
39
+ for (var prop of __getOwnPropSymbols$d(source)) {
40
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$d.call(source, prop))
41
41
  target[prop] = source[prop];
42
42
  }
43
43
  return target;
44
44
  };
45
- const useStyles$w = createStyles((theme) => ({
45
+ const useStyles$y = createStyles((theme) => ({
46
46
  user: {
47
47
  display: "block",
48
48
  width: "100%",
@@ -53,8 +53,8 @@ const useStyles$w = createStyles((theme) => ({
53
53
  }));
54
54
  function UserButton(_a) {
55
55
  var _b = _a, { image, name, email, icon } = _b, others = __objRest$2(_b, ["image", "name", "email", "icon"]);
56
- const { classes } = useStyles$w();
57
- return /* @__PURE__ */ React.createElement(Group, __spreadValues$c({ className: classes.user }, others), /* @__PURE__ */ React.createElement(Avatar, { src: image, radius: "xl" }), /* @__PURE__ */ React.createElement("div", { style: { flex: 1 } }, /* @__PURE__ */ React.createElement(Text, { size: "sm", weight: 500 }, name), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", size: "xs" }, email)));
56
+ const { classes } = useStyles$y();
57
+ return /* @__PURE__ */ React.createElement(Group, __spreadValues$d({ className: classes.user }, others), /* @__PURE__ */ React.createElement(Avatar, { src: image, radius: "xl" }), /* @__PURE__ */ React.createElement("div", { style: { flex: 1 } }, /* @__PURE__ */ React.createElement(Text, { size: "sm", weight: 500 }, name), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", size: "xs" }, email)));
58
58
  }
59
59
 
60
60
  const compact = (num) => {
@@ -64,7 +64,7 @@ const compact = (num) => {
64
64
  }).format(num || 0);
65
65
  };
66
66
 
67
- const useStyles$v = createStyles((theme, _params, getRef) => {
67
+ const useStyles$x = createStyles((theme, _params, getRef) => {
68
68
  const icon = getRef("icon");
69
69
  return {
70
70
  control: {
@@ -117,7 +117,7 @@ const useStyles$v = createStyles((theme, _params, getRef) => {
117
117
  };
118
118
  });
119
119
  function LinksGroup({ icon: Icon, href, label, initiallyOpened, links, active, notifications }) {
120
- const { classes, theme, cx } = useStyles$v();
120
+ const { classes, theme, cx } = useStyles$x();
121
121
  const hasLinks = Array.isArray(links) && links.length > 0;
122
122
  const hasActiveLinks = Array.isArray(links) && links.map((l) => !!active && active === `${label}/${l.label}`).reduce((a, b) => a || b, false);
123
123
  const [opened, setOpened] = useState(initiallyOpened || hasActiveLinks || false);
@@ -162,26 +162,26 @@ function LinksGroup({ icon: Icon, href, label, initiallyOpened, links, active, n
162
162
  ), hasLinks ? /* @__PURE__ */ React.createElement(Collapse, { in: opened }, items) : null);
163
163
  }
164
164
 
165
- var __defProp$b = Object.defineProperty;
166
- var __defProps$8 = Object.defineProperties;
167
- var __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;
168
- var __getOwnPropSymbols$b = Object.getOwnPropertySymbols;
169
- var __hasOwnProp$b = Object.prototype.hasOwnProperty;
170
- var __propIsEnum$b = Object.prototype.propertyIsEnumerable;
171
- var __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
172
- var __spreadValues$b = (a, b) => {
165
+ var __defProp$c = Object.defineProperty;
166
+ var __defProps$9 = Object.defineProperties;
167
+ var __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors;
168
+ var __getOwnPropSymbols$c = Object.getOwnPropertySymbols;
169
+ var __hasOwnProp$c = Object.prototype.hasOwnProperty;
170
+ var __propIsEnum$c = Object.prototype.propertyIsEnumerable;
171
+ var __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
172
+ var __spreadValues$c = (a, b) => {
173
173
  for (var prop in b || (b = {}))
174
- if (__hasOwnProp$b.call(b, prop))
175
- __defNormalProp$b(a, prop, b[prop]);
176
- if (__getOwnPropSymbols$b)
177
- for (var prop of __getOwnPropSymbols$b(b)) {
178
- if (__propIsEnum$b.call(b, prop))
179
- __defNormalProp$b(a, prop, b[prop]);
174
+ if (__hasOwnProp$c.call(b, prop))
175
+ __defNormalProp$c(a, prop, b[prop]);
176
+ if (__getOwnPropSymbols$c)
177
+ for (var prop of __getOwnPropSymbols$c(b)) {
178
+ if (__propIsEnum$c.call(b, prop))
179
+ __defNormalProp$c(a, prop, b[prop]);
180
180
  }
181
181
  return a;
182
182
  };
183
- var __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));
184
- const useStyles$u = createStyles((theme, _params, getRef) => {
183
+ var __spreadProps$9 = (a, b) => __defProps$9(a, __getOwnPropDescs$9(b));
184
+ const useStyles$w = createStyles((theme, _params, getRef) => {
185
185
  const icon = getRef("icon");
186
186
  return {
187
187
  navbar: {
@@ -212,7 +212,7 @@ const useStyles$u = createStyles((theme, _params, getRef) => {
212
212
  color: theme.colorScheme === "dark" ? theme.white : theme.black,
213
213
  borderBottom: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[4] : theme.colors.gray[3]}`
214
214
  },
215
- link: __spreadProps$8(__spreadValues$b({}, theme.fn.focusStyles()), {
215
+ link: __spreadProps$9(__spreadValues$c({}, theme.fn.focusStyles()), {
216
216
  display: "flex",
217
217
  alignItems: "center",
218
218
  textDecoration: "none",
@@ -266,6 +266,7 @@ const data = [
266
266
  { label: "Pathways", icon: IconRoute },
267
267
  { label: "Badges", icon: IconAlbum },
268
268
  { label: "Lessons", icon: IconLambda },
269
+ { label: "File Locker", icon: IconClipboard },
269
270
  {
270
271
  label: "Organization",
271
272
  icon: IconBuilding,
@@ -281,7 +282,7 @@ const TRIAL_PAGES = [
281
282
  "Badges"
282
283
  ];
283
284
  function Navbar(props) {
284
- const { classes, cx } = useStyles$u();
285
+ const { classes, cx } = useStyles$w();
285
286
  const [burgerOpen, setBurgerOpen] = React.useState(false);
286
287
  const toggle = () => setBurgerOpen(!burgerOpen);
287
288
  const links = data.map((item) => {
@@ -294,12 +295,12 @@ function Navbar(props) {
294
295
  }
295
296
  return /* @__PURE__ */ React.createElement(
296
297
  LinksGroup,
297
- __spreadProps$8(__spreadValues$b(__spreadValues$b({
298
+ __spreadProps$9(__spreadValues$c(__spreadValues$c({
298
299
  key: item.label,
299
300
  active: props.active
300
301
  }, item), context), {
301
302
  links: (item.links || []).map((link) => {
302
- return __spreadValues$b(__spreadValues$b({}, link), props.links[`${item.label}/${link.label}`] || { notifications: 0, href: "" });
303
+ return __spreadValues$c(__spreadValues$c({}, link), props.links[`${item.label}/${link.label}`] || { notifications: 0, href: "" });
303
304
  })
304
305
  })
305
306
  );
@@ -324,7 +325,7 @@ function Navbar(props) {
324
325
  } }, /* @__PURE__ */ React.createElement(IconLogout, { className: classes.linkIcon, stroke: 1.5 }), /* @__PURE__ */ React.createElement("span", null, "Logout"))))));
325
326
  }
326
327
 
327
- const useStyles$t = createStyles((theme) => ({
328
+ const useStyles$v = createStyles((theme) => ({
328
329
  inner: {
329
330
  paddingTop: theme.spacing.xl,
330
331
  paddingBottom: theme.spacing.xl * 4
@@ -360,7 +361,7 @@ const useStyles$t = createStyles((theme) => ({
360
361
  }
361
362
  }));
362
363
  const GettingStarted = (props) => {
363
- const { classes } = useStyles$t();
364
+ const { classes } = useStyles$v();
364
365
  return /* @__PURE__ */ React.createElement(
365
366
  Modal,
366
367
  {
@@ -374,7 +375,7 @@ const GettingStarted = (props) => {
374
375
  );
375
376
  };
376
377
 
377
- const useStyles$s = createStyles((theme) => ({
378
+ const useStyles$u = createStyles((theme) => ({
378
379
  title: {
379
380
  fontSize: 34,
380
381
  fontWeight: 900,
@@ -415,7 +416,7 @@ const useStyles$s = createStyles((theme) => ({
415
416
  }
416
417
  }));
417
418
  const SwitchAccount = (props) => {
418
- const { classes, theme } = useStyles$s();
419
+ const { classes, theme } = useStyles$u();
419
420
  const options = props.accounts.map((a) => {
420
421
  return /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: () => props.onClick && props.onClick(a.accountId), key: a.accountId, p: theme.spacing.md }, /* @__PURE__ */ React.createElement(Card, { withBorder: true, shadow: "md", radius: "md", className: classes.card, p: "xl" }, a.isAdmin && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(IconBatteryEco, { size: 50, stroke: 2, color: theme.fn.primaryColor() })), a.isGroupAdmin && !a.isAdmin && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(IconBooks, { size: 50, stroke: 2, color: theme.fn.primaryColor() })), !a.isAdmin && !a.isGroupAdmin && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(IconBackpack, { size: 50, stroke: 2, color: theme.fn.primaryColor() })), /* @__PURE__ */ React.createElement(Text, { size: "lg", weight: 500, className: classes.cardTitle, mt: "md" }, a.name), /* @__PURE__ */ React.createElement(Text, { size: "sm", color: "dimmed", mt: "sm" }, a.isAdmin ? "Admin" : a.isGroupAdmin ? "Educator" : "Student")));
421
422
  });
@@ -432,7 +433,7 @@ const SwitchAccount = (props) => {
432
433
  );
433
434
  };
434
435
 
435
- const useStyles$r = createStyles((theme) => ({
436
+ const useStyles$t = createStyles((theme) => ({
436
437
  root: {
437
438
  display: "flex",
438
439
  backgroundImage: `linear-gradient(-60deg, ${theme.colors[theme.primaryColor][4]} 0%, ${theme.colors[theme.primaryColor][7]} 100%)`,
@@ -476,7 +477,7 @@ const useStyles$r = createStyles((theme) => ({
476
477
  }
477
478
  }));
478
479
  const StatsGroup = ({ data, footer }) => {
479
- const { classes } = useStyles$r();
480
+ const { classes } = useStyles$t();
480
481
  const stats = data.map((stat) => {
481
482
  const value = (() => {
482
483
  if (stat.unit === "%") {
@@ -496,7 +497,7 @@ const Tabs = (props) => {
496
497
  return /* @__PURE__ */ React.createElement(Tabs$1, { value: props.value, onTabChange: props.onChange }, /* @__PURE__ */ React.createElement(Tabs$1.List, null, tabs));
497
498
  };
498
499
 
499
- const useStyles$q = createStyles((theme) => ({
500
+ const useStyles$s = createStyles((theme) => ({
500
501
  button: {
501
502
  borderTopRightRadius: 0,
502
503
  borderBottomRightRadius: 0,
@@ -510,10 +511,10 @@ const useStyles$q = createStyles((theme) => ({
510
511
  borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
511
512
  }
512
513
  }));
513
- const SplitButton$4 = (props) => {
514
- const { classes, theme } = useStyles$q();
514
+ const SplitButton$5 = (props) => {
515
+ const { classes, theme } = useStyles$s();
515
516
  theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
516
- return /* @__PURE__ */ React.createElement(Stack$4, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
517
+ return /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
517
518
  Button,
518
519
  {
519
520
  component: Link,
@@ -539,7 +540,7 @@ const SplitButton$4 = (props) => {
539
540
  ));
540
541
  };
541
542
 
542
- const useStyles$p = createStyles((theme) => ({
543
+ const useStyles$r = createStyles((theme) => ({
543
544
  wrapper: {
544
545
  display: "flex",
545
546
  alignItems: "center",
@@ -590,13 +591,13 @@ const useStyles$p = createStyles((theme) => ({
590
591
  }
591
592
  }));
592
593
  const PlaceholderBanner = (props) => {
593
- const { classes } = useStyles$p();
594
+ const { classes } = useStyles$r();
594
595
  const title = props.title || "Nothing to display";
595
596
  const description = props.description || "We don't have anything to show you here just yet. Add data, check back later, or adjust your search.";
596
597
  return /* @__PURE__ */ React.createElement("div", { className: classes.wrapper }, /* @__PURE__ */ React.createElement("div", { className: classes.body }, /* @__PURE__ */ React.createElement(Title, { className: classes.title }, props.loading ? "Loading..." : title), /* @__PURE__ */ React.createElement(Text, { size: "sm", color: "dimmed" }, props.loading ? "Hold on, we're loading your data." : description)), /* @__PURE__ */ React.createElement(Image, { src: `https://cdn.localcivics.io/illustrations/${props.icon}.svg`, className: classes.image }));
597
598
  };
598
599
 
599
- function Stack$3(props) {
600
+ function Stack$4(props) {
600
601
  if (props.items.length === 0) {
601
602
  return null;
602
603
  }
@@ -644,28 +645,28 @@ function useSortableData(items, config = { key: "", direction: null }) {
644
645
  return { items: sortedItems, requestSort, sortConfig };
645
646
  }
646
647
 
647
- var __defProp$a = Object.defineProperty;
648
- var __defProps$7 = Object.defineProperties;
649
- var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;
650
- var __getOwnPropSymbols$a = Object.getOwnPropertySymbols;
651
- var __hasOwnProp$a = Object.prototype.hasOwnProperty;
652
- var __propIsEnum$a = Object.prototype.propertyIsEnumerable;
653
- var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
654
- var __spreadValues$a = (a, b) => {
648
+ var __defProp$b = Object.defineProperty;
649
+ var __defProps$8 = Object.defineProperties;
650
+ var __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;
651
+ var __getOwnPropSymbols$b = Object.getOwnPropertySymbols;
652
+ var __hasOwnProp$b = Object.prototype.hasOwnProperty;
653
+ var __propIsEnum$b = Object.prototype.propertyIsEnumerable;
654
+ var __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
655
+ var __spreadValues$b = (a, b) => {
655
656
  for (var prop in b || (b = {}))
656
- if (__hasOwnProp$a.call(b, prop))
657
- __defNormalProp$a(a, prop, b[prop]);
658
- if (__getOwnPropSymbols$a)
659
- for (var prop of __getOwnPropSymbols$a(b)) {
660
- if (__propIsEnum$a.call(b, prop))
661
- __defNormalProp$a(a, prop, b[prop]);
657
+ if (__hasOwnProp$b.call(b, prop))
658
+ __defNormalProp$b(a, prop, b[prop]);
659
+ if (__getOwnPropSymbols$b)
660
+ for (var prop of __getOwnPropSymbols$b(b)) {
661
+ if (__propIsEnum$b.call(b, prop))
662
+ __defNormalProp$b(a, prop, b[prop]);
662
663
  }
663
664
  return a;
664
665
  };
665
- var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
666
- function Table$j(props) {
666
+ var __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));
667
+ function Table$k(props) {
667
668
  const preparedItems = React.useMemo(() => {
668
- return props.items.map((item) => __spreadProps$7(__spreadValues$a({}, item), {
669
+ return props.items.map((item) => __spreadProps$8(__spreadValues$b({}, item), {
669
670
  status: item.isComplete ? 1 : 0
670
671
  }));
671
672
  }, [props.items]);
@@ -711,13 +712,13 @@ function Table$j(props) {
711
712
  render: (row) => /* @__PURE__ */ React.createElement(React.Fragment, null, !!row.isComplete && /* @__PURE__ */ React.createElement(Badge$1, { variant: "filled" }, "Complete"), !row.isComplete && /* @__PURE__ */ React.createElement(Badge$1, { color: "red", variant: "filled" }, "Incomplete"))
712
713
  }],
713
714
  rowExpansion: {
714
- content: ({ record }) => /* @__PURE__ */ React.createElement(Stack$3, { items: record.lessons })
715
+ content: ({ record }) => /* @__PURE__ */ React.createElement(Stack$4, { items: record.lessons })
715
716
  }
716
717
  }
717
718
  ));
718
719
  }
719
720
 
720
- function Table$i(props) {
721
+ function Table$j(props) {
721
722
  const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
722
723
  if (props.items.length === 0) {
723
724
  return /* @__PURE__ */ React.createElement(
@@ -762,7 +763,7 @@ function Table$i(props) {
762
763
  ));
763
764
  }
764
765
 
765
- const useStyles$o = createStyles((theme) => ({
766
+ const useStyles$q = createStyles((theme) => ({
766
767
  title: {
767
768
  fontSize: 34,
768
769
  fontWeight: 900,
@@ -775,12 +776,12 @@ const useStyles$o = createStyles((theme) => ({
775
776
  }
776
777
  }));
777
778
  const Badge = (props) => {
778
- const { classes } = useStyles$o();
779
+ const { classes } = useStyles$q();
779
780
  const [tab, setTab] = useState("lessons");
780
781
  const numberOfStudents = props.students.length;
781
782
  const numberOfBadges = numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length : 0;
782
783
  numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length / numberOfStudents : 0;
783
- return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$4, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
784
+ return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
784
785
  Badge$1,
785
786
  {
786
787
  variant: "filled",
@@ -788,14 +789,14 @@ const Badge = (props) => {
788
789
  size: "lg"
789
790
  },
790
791
  "Back"
791
- )), /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement(Stack$4, { spacing: 0 }, /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, props.displayName || "Badge"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description")), !props.trial && /* @__PURE__ */ React.createElement(Stack$4, { ml: "auto" }, /* @__PURE__ */ React.createElement(
792
- SplitButton$4,
792
+ )), /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, props.displayName || "Badge"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description")), !props.trial && /* @__PURE__ */ React.createElement(Stack$5, { ml: "auto" }, /* @__PURE__ */ React.createElement(
793
+ SplitButton$5,
793
794
  {
794
795
  href: props.href,
795
796
  onCopyLinkClick: props.onCopyLinkClick,
796
797
  onExportDataClick: props.onExportDataClick
797
798
  }
798
- ))))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$4, null, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
799
+ ))))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
799
800
  {
800
801
  title: props.trial ? "LESSONS SUBMITTED" : "BADGE COMPLETION",
801
802
  value: props.trial ? props.lessonsCompleted || 0 : numberOfBadges,
@@ -816,7 +817,7 @@ const Badge = (props) => {
816
817
  return { value: g.classId, label: g.name };
817
818
  })
818
819
  }
819
- ), /* @__PURE__ */ React.createElement(Stack$4, { spacing: 0 }, !props.trial && /* @__PURE__ */ React.createElement(
820
+ ), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, !props.trial && /* @__PURE__ */ React.createElement(
820
821
  Tabs,
821
822
  {
822
823
  value: tab,
@@ -827,13 +828,13 @@ const Badge = (props) => {
827
828
  onChange: setTab
828
829
  }
829
830
  ), (!!props.trial || tab === "lessons") && /* @__PURE__ */ React.createElement(
830
- Table$i,
831
+ Table$j,
831
832
  {
832
833
  loading: props.loading,
833
834
  items: props.lessons
834
835
  }
835
836
  ), !props.trial && tab === "students" && /* @__PURE__ */ React.createElement(
836
- Table$j,
837
+ Table$k,
837
838
  {
838
839
  loading: props.loading,
839
840
  items: props.students
@@ -841,7 +842,7 @@ const Badge = (props) => {
841
842
  )))))));
842
843
  };
843
844
 
844
- function Table$h(props) {
845
+ function Table$i(props) {
845
846
  if (props.items.length === 0) {
846
847
  return /* @__PURE__ */ React.createElement(
847
848
  PlaceholderBanner,
@@ -870,10 +871,10 @@ function Table$h(props) {
870
871
  },
871
872
  /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(Text, { size: "sm", weight: 500 }, row.name), /* @__PURE__ */ React.createElement(Text, { size: "xs", color: "dimmed" }, row.description)))
872
873
  ))));
873
- return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$k, { horizontalSpacing: 0, verticalSpacing: 0, sx: { minWidth: 700 } }, /* @__PURE__ */ React.createElement("tbody", null, rows)));
874
+ return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { horizontalSpacing: 0, verticalSpacing: 0, sx: { minWidth: 700 } }, /* @__PURE__ */ React.createElement("tbody", null, rows)));
874
875
  }
875
876
 
876
- const useStyles$n = createStyles((theme) => ({
877
+ const useStyles$p = createStyles((theme) => ({
877
878
  title: {
878
879
  fontSize: 34,
879
880
  fontWeight: 900,
@@ -886,8 +887,8 @@ const useStyles$n = createStyles((theme) => ({
886
887
  }
887
888
  }));
888
889
  const Badges = (props) => {
889
- const { classes } = useStyles$n();
890
- return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$4, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(Badge$1, { variant: "filled", size: "lg" }, "Badges"), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, "Badges and micro-credentials"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, "Key milestones that reflect skill development, micro-credentials, or academic progress"))), /* @__PURE__ */ React.createElement(
890
+ const { classes } = useStyles$p();
891
+ return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(Badge$1, { variant: "filled", size: "lg" }, "Badges"), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, "Badges and micro-credentials"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, "Key milestones that reflect skill development, micro-credentials, or academic progress"))), /* @__PURE__ */ React.createElement(
891
892
  Autocomplete,
892
893
  {
893
894
  placeholder: "Search for a badge that fits your needs",
@@ -895,7 +896,7 @@ const Badges = (props) => {
895
896
  onChange: props.onAutocompleteChange
896
897
  }
897
898
  ), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(
898
- Table$h,
899
+ Table$i,
899
900
  {
900
901
  loading: props.loading,
901
902
  items: props.badges
@@ -903,7 +904,7 @@ const Badges = (props) => {
903
904
  ))));
904
905
  };
905
906
 
906
- function Table$g(props) {
907
+ function Table$h(props) {
907
908
  if (props.items.length === 0) {
908
909
  return /* @__PURE__ */ React.createElement(
909
910
  PlaceholderBanner,
@@ -916,7 +917,7 @@ function Table$g(props) {
916
917
  );
917
918
  }
918
919
  const rows = props.items.map((row) => /* @__PURE__ */ React.createElement("tr", { key: row.studentName }, /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: () => props.onViewProfile(row) }, row.studentName)), /* @__PURE__ */ React.createElement("td", null, row.className)));
919
- return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$k, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Student Name"), /* @__PURE__ */ React.createElement("th", null, "Class Name"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
920
+ return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Student Name"), /* @__PURE__ */ React.createElement("th", null, "Class Name"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
920
921
  }
921
922
 
922
923
  const units = [
@@ -943,7 +944,7 @@ function relativeTimeFromElapsed(elapsed) {
943
944
  return "";
944
945
  }
945
946
 
946
- function Table$f(props) {
947
+ function Table$g(props) {
947
948
  if (props.items.length === 0) {
948
949
  return /* @__PURE__ */ React.createElement(
949
950
  PlaceholderBanner,
@@ -956,10 +957,10 @@ function Table$f(props) {
956
957
  );
957
958
  }
958
959
  const rows = props.items.map((row) => /* @__PURE__ */ React.createElement("tr", { key: row.studentName + row.lessonName }, /* @__PURE__ */ React.createElement("td", null, row.studentName), /* @__PURE__ */ React.createElement("td", null, row.lessonName), /* @__PURE__ */ React.createElement("td", null, row.reflection), /* @__PURE__ */ React.createElement("td", null, relativeTimeFromDates(new Date(row.updatedAt)))));
959
- return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$k, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Student Name"), /* @__PURE__ */ React.createElement("th", null, "Lesson Name"), /* @__PURE__ */ React.createElement("th", null, "Reflection"), /* @__PURE__ */ React.createElement("th", null, "Updated At"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
960
+ return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Student Name"), /* @__PURE__ */ React.createElement("th", null, "Lesson Name"), /* @__PURE__ */ React.createElement("th", null, "Reflection"), /* @__PURE__ */ React.createElement("th", null, "Updated At"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
960
961
  }
961
962
 
962
- function Table$e(props) {
963
+ function Table$f(props) {
963
964
  if (props.items.length === 0) {
964
965
  return /* @__PURE__ */ React.createElement(
965
966
  PlaceholderBanner,
@@ -972,10 +973,10 @@ function Table$e(props) {
972
973
  );
973
974
  }
974
975
  const rows = props.items.map((row) => /* @__PURE__ */ React.createElement("tr", { key: row.studentName }, /* @__PURE__ */ React.createElement("td", null, row.studentName), /* @__PURE__ */ React.createElement("td", null, row.impactStatement)));
975
- return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$k, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Student Name"), /* @__PURE__ */ React.createElement("th", null, "Impact Statement"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
976
+ return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Student Name"), /* @__PURE__ */ React.createElement("th", null, "Impact Statement"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
976
977
  }
977
978
 
978
- function Table$d(props) {
979
+ function Table$e(props) {
979
980
  if (props.items.length === 0) {
980
981
  return /* @__PURE__ */ React.createElement(
981
982
  PlaceholderBanner,
@@ -988,10 +989,10 @@ function Table$d(props) {
988
989
  );
989
990
  }
990
991
  const rows = props.items.map((row) => /* @__PURE__ */ React.createElement("tr", { key: row.badgeId }, /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: () => props.onClick && props.onClick(row) }, row.name)), /* @__PURE__ */ React.createElement("td", null, row.description), /* @__PURE__ */ React.createElement("td", null, Math.round((row.percentageCompletion + Number.EPSILON) * 100), "%")));
991
- return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$k, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Badge Name"), /* @__PURE__ */ React.createElement("th", null, "Description"), /* @__PURE__ */ React.createElement("th", null, "Completion"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
992
+ return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Badge Name"), /* @__PURE__ */ React.createElement("th", null, "Description"), /* @__PURE__ */ React.createElement("th", null, "Completion"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
992
993
  }
993
994
 
994
- function Table$c(props) {
995
+ function Table$d(props) {
995
996
  if (props.items.length === 0) {
996
997
  return /* @__PURE__ */ React.createElement(
997
998
  PlaceholderBanner,
@@ -1004,12 +1005,12 @@ function Table$c(props) {
1004
1005
  );
1005
1006
  }
1006
1007
  const rows = props.items.map((row) => /* @__PURE__ */ React.createElement("tr", { key: row.lessonId }, /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: () => props.onClick && props.onClick(row) }, row.name)), /* @__PURE__ */ React.createElement("td", null, row.description), /* @__PURE__ */ React.createElement("td", null, Math.round((row.percentageCompletion + Number.EPSILON) * 100), "%")));
1007
- return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$k, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Lesson Name"), /* @__PURE__ */ React.createElement("th", null, "Description"), /* @__PURE__ */ React.createElement("th", null, "Completion"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
1008
+ return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Lesson Name"), /* @__PURE__ */ React.createElement("th", null, "Description"), /* @__PURE__ */ React.createElement("th", null, "Completion"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
1008
1009
  }
1009
1010
 
1010
1011
  const Dashboard = (props) => {
1011
1012
  const [tab, setTab] = useState("students");
1012
- return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$4, null, /* @__PURE__ */ React.createElement(Stack$4, { spacing: 0 }, /* @__PURE__ */ React.createElement(Title, { size: "h3" }, "Dashboard"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", size: "sm", mt: "md" }, "Track your students\u2019 pathway progress")), /* @__PURE__ */ React.createElement(Stack$4, null, /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$4, { spacing: "sm" }, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
1013
+ return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(Title, { size: "h3" }, "Dashboard"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", size: "sm", mt: "md" }, "Track your students\u2019 pathway progress")), /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
1013
1014
  {
1014
1015
  title: "# OF STUDENTS",
1015
1016
  value: props.students.length
@@ -1042,7 +1043,7 @@ const Dashboard = (props) => {
1042
1043
  return { value: g.classId, label: g.name };
1043
1044
  })
1044
1045
  }
1045
- ), /* @__PURE__ */ React.createElement(Stack$4, { spacing: 0 }, /* @__PURE__ */ React.createElement(
1046
+ ), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(
1046
1047
  Tabs,
1047
1048
  {
1048
1049
  value: tab,
@@ -1056,33 +1057,33 @@ const Dashboard = (props) => {
1056
1057
  onChange: setTab
1057
1058
  }
1058
1059
  ), tab === "impact" && /* @__PURE__ */ React.createElement(
1059
- Table$e,
1060
+ Table$f,
1060
1061
  {
1061
1062
  loading: props.loading,
1062
1063
  items: props.impacts
1063
1064
  }
1064
1065
  ), tab === "reflections" && /* @__PURE__ */ React.createElement(
1065
- Table$f,
1066
+ Table$g,
1066
1067
  {
1067
1068
  loading: props.loading,
1068
1069
  items: props.reflections
1069
1070
  }
1070
1071
  ), tab === "badges" && /* @__PURE__ */ React.createElement(
1071
- Table$d,
1072
+ Table$e,
1072
1073
  {
1073
1074
  loading: props.loading,
1074
1075
  items: props.badges,
1075
1076
  onClick: props.onBadgeClick
1076
1077
  }
1077
1078
  ), tab === "lessons" && /* @__PURE__ */ React.createElement(
1078
- Table$c,
1079
+ Table$d,
1079
1080
  {
1080
1081
  loading: props.loading,
1081
1082
  items: props.lessons,
1082
1083
  onClick: props.onLessonClick
1083
1084
  }
1084
1085
  ), tab === "students" && /* @__PURE__ */ React.createElement(
1085
- Table$g,
1086
+ Table$h,
1086
1087
  {
1087
1088
  loading: props.loading,
1088
1089
  items: props.students,
@@ -1091,8 +1092,8 @@ const Dashboard = (props) => {
1091
1092
  )))))));
1092
1093
  };
1093
1094
 
1094
- const SplitButton$3 = (props) => {
1095
- return /* @__PURE__ */ React.createElement(Stack$4, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
1095
+ const SplitButton$4 = (props) => {
1096
+ return /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
1096
1097
  Button,
1097
1098
  {
1098
1099
  leftIcon: /* @__PURE__ */ React.createElement(IconPlaylistAdd, { size: 14 }),
@@ -1116,7 +1117,7 @@ const SplitButton$3 = (props) => {
1116
1117
  ));
1117
1118
  };
1118
1119
 
1119
- const useStyles$m = createStyles((theme) => ({
1120
+ const useStyles$o = createStyles((theme) => ({
1120
1121
  th: { padding: "0 !important" },
1121
1122
  control: {
1122
1123
  width: "100%",
@@ -1127,11 +1128,11 @@ const useStyles$m = createStyles((theme) => ({
1127
1128
  }
1128
1129
  }));
1129
1130
  function Th$2({ children, reversed, sorted, onSort }) {
1130
- const { classes } = useStyles$m();
1131
+ const { classes } = useStyles$o();
1131
1132
  const Icon = sorted ? reversed ? IconChevronUp : IconChevronDown : IconSelector;
1132
1133
  return /* @__PURE__ */ React.createElement("th", { className: classes.th }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: onSort, className: classes.control }, /* @__PURE__ */ React.createElement(Group, { position: "apart", noWrap: true, spacing: "xs" }, /* @__PURE__ */ React.createElement(Text, { weight: 500, size: "sm", sx: { whiteSpace: "nowrap" } }, children), /* @__PURE__ */ React.createElement(Center, null, /* @__PURE__ */ React.createElement(Icon, { size: 14, stroke: 1.5 })))));
1133
1134
  }
1134
- function Table$b(props) {
1135
+ function Table$c(props) {
1135
1136
  const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
1136
1137
  if (props.items.length === 0) {
1137
1138
  return /* @__PURE__ */ React.createElement(
@@ -1161,7 +1162,7 @@ function Table$b(props) {
1161
1162
  data: [{ value: "student", label: "Student" }, { value: "educator", label: "Educator" }]
1162
1163
  }
1163
1164
  ))), /* @__PURE__ */ React.createElement("td", null, row.badgesEarned), /* @__PURE__ */ React.createElement("td", null, row.lessonsCompleted), /* @__PURE__ */ React.createElement("td", null, row.hasAccount && /* @__PURE__ */ React.createElement(IconCheck, { color: "green" })), /* @__PURE__ */ React.createElement("td", null, row.lastActivity ? relativeTimeFromDates(row.lastActivity) : ""), /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(Group, { noWrap: true, spacing: 0, position: "right" }, !row.readonly && !!props.onDelete && /* @__PURE__ */ React.createElement(ActionIcon, { color: "red" }, /* @__PURE__ */ React.createElement(IconTrash, { onClick: () => openDeleteModal(row), size: 16, stroke: 1.5 }))))));
1164
- return /* @__PURE__ */ React.createElement(ScrollArea, null, /* @__PURE__ */ React.createElement(Table$k, { verticalSpacing: 20, sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement(
1165
+ return /* @__PURE__ */ React.createElement(ScrollArea, null, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: 20, sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement(
1165
1166
  Th$2,
1166
1167
  {
1167
1168
  sorted: sortConfig.key === "givenName",
@@ -1212,26 +1213,26 @@ function Table$b(props) {
1212
1213
  ), /* @__PURE__ */ React.createElement("th", null), " ")), /* @__PURE__ */ React.createElement("tbody", null, rows)));
1213
1214
  }
1214
1215
 
1215
- var __defProp$9 = Object.defineProperty;
1216
- var __defProps$6 = Object.defineProperties;
1217
- var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;
1218
- var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;
1219
- var __hasOwnProp$9 = Object.prototype.hasOwnProperty;
1220
- var __propIsEnum$9 = Object.prototype.propertyIsEnumerable;
1221
- var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1222
- var __spreadValues$9 = (a, b) => {
1216
+ var __defProp$a = Object.defineProperty;
1217
+ var __defProps$7 = Object.defineProperties;
1218
+ var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;
1219
+ var __getOwnPropSymbols$a = Object.getOwnPropertySymbols;
1220
+ var __hasOwnProp$a = Object.prototype.hasOwnProperty;
1221
+ var __propIsEnum$a = Object.prototype.propertyIsEnumerable;
1222
+ var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1223
+ var __spreadValues$a = (a, b) => {
1223
1224
  for (var prop in b || (b = {}))
1224
- if (__hasOwnProp$9.call(b, prop))
1225
- __defNormalProp$9(a, prop, b[prop]);
1226
- if (__getOwnPropSymbols$9)
1227
- for (var prop of __getOwnPropSymbols$9(b)) {
1228
- if (__propIsEnum$9.call(b, prop))
1229
- __defNormalProp$9(a, prop, b[prop]);
1225
+ if (__hasOwnProp$a.call(b, prop))
1226
+ __defNormalProp$a(a, prop, b[prop]);
1227
+ if (__getOwnPropSymbols$a)
1228
+ for (var prop of __getOwnPropSymbols$a(b)) {
1229
+ if (__propIsEnum$a.call(b, prop))
1230
+ __defNormalProp$a(a, prop, b[prop]);
1230
1231
  }
1231
1232
  return a;
1232
1233
  };
1233
- var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
1234
- const useStyles$l = createStyles((theme) => ({
1234
+ var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
1235
+ const useStyles$n = createStyles((theme) => ({
1235
1236
  title: {
1236
1237
  fontSize: 34,
1237
1238
  fontWeight: 900,
@@ -1264,7 +1265,7 @@ const useStyles$l = createStyles((theme) => ({
1264
1265
  }
1265
1266
  }));
1266
1267
  const Class = (props) => {
1267
- const { classes } = useStyles$l();
1268
+ const { classes } = useStyles$n();
1268
1269
  const form = useForm({
1269
1270
  initialValues: {
1270
1271
  classId: "",
@@ -1296,32 +1297,32 @@ const Class = (props) => {
1296
1297
  padding: "xl",
1297
1298
  size: "xl"
1298
1299
  },
1299
- /* @__PURE__ */ React.createElement(Stack$4, { spacing: "md" }, /* @__PURE__ */ React.createElement(DropzoneButton$1, __spreadProps$6(__spreadValues$9({}, props), { close: () => setOpened(false) })), /* @__PURE__ */ React.createElement(Divider, { label: "or", labelPosition: "center", my: "md", variant: "dashed" }), /* @__PURE__ */ React.createElement("form", { onSubmit: form.onSubmit(() => {
1300
+ /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(DropzoneButton$1, __spreadProps$7(__spreadValues$a({}, props), { close: () => setOpened(false) })), /* @__PURE__ */ React.createElement(Divider, { label: "or", labelPosition: "center", my: "md", variant: "dashed" }), /* @__PURE__ */ React.createElement("form", { onSubmit: form.onSubmit(() => {
1300
1301
  const values = form.values;
1301
1302
  form.reset();
1302
1303
  setOpened(false);
1303
1304
  props.onCreateMembers && props.onCreateMembers([values]);
1304
- }) }, /* @__PURE__ */ React.createElement(Stack$4, null, /* @__PURE__ */ React.createElement(
1305
+ }) }, /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(
1305
1306
  TextInput,
1306
- __spreadValues$9({
1307
+ __spreadValues$a({
1307
1308
  withAsterisk: true,
1308
1309
  label: "Email",
1309
1310
  placeholder: "Email"
1310
1311
  }, form.getInputProps("email"))
1311
1312
  ), /* @__PURE__ */ React.createElement(Group, { grow: true }, /* @__PURE__ */ React.createElement(
1312
1313
  TextInput,
1313
- __spreadValues$9({
1314
+ __spreadValues$a({
1314
1315
  label: "Given name",
1315
1316
  placeholder: "Given name"
1316
1317
  }, form.getInputProps("givenName"))
1317
1318
  ), /* @__PURE__ */ React.createElement(
1318
1319
  TextInput,
1319
- __spreadValues$9({
1320
+ __spreadValues$a({
1320
1321
  label: "Family name",
1321
1322
  placeholder: "Family name"
1322
1323
  }, form.getInputProps("familyName"))
1323
1324
  )), /* @__PURE__ */ React.createElement(Button, { type: "submit", fullWidth: true, mt: "md" }, "Submit"))))
1324
- ), /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$4, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
1325
+ ), /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
1325
1326
  Badge$1,
1326
1327
  {
1327
1328
  variant: "filled",
@@ -1330,13 +1331,13 @@ const Class = (props) => {
1330
1331
  },
1331
1332
  "Back"
1332
1333
  )), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, props.displayName || "Class"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description")), /* @__PURE__ */ React.createElement(Grid.Col, { sm: "content" }, !props.loading && /* @__PURE__ */ React.createElement(
1333
- SplitButton$3,
1334
+ SplitButton$4,
1334
1335
  {
1335
1336
  onAddMembersClick: () => setOpened(true),
1336
1337
  onCopyClassLinkClick: props.onCopyLinkClick,
1337
1338
  onExportDataClick: props.onExportDataClick
1338
1339
  }
1339
- ))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$4, { spacing: "sm" }, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
1340
+ ))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
1340
1341
  {
1341
1342
  title: "# OF STUDENTS",
1342
1343
  value: props.members.filter((a) => !a.isAdmin).length
@@ -1355,7 +1356,7 @@ const Class = (props) => {
1355
1356
  value: props.numberOfLessonsCompleted
1356
1357
  }
1357
1358
  ] }), /* @__PURE__ */ React.createElement(
1358
- Table$b,
1359
+ Table$c,
1359
1360
  {
1360
1361
  loading: props.loading,
1361
1362
  items: props.members,
@@ -1365,7 +1366,7 @@ const Class = (props) => {
1365
1366
  ))))));
1366
1367
  };
1367
1368
  const DropzoneButton$1 = (props) => {
1368
- const { classes, theme } = useStyles$l();
1369
+ const { classes, theme } = useStyles$n();
1369
1370
  const openRef = React.useRef(null);
1370
1371
  const [loading, setLoading] = React.useState(false);
1371
1372
  const onDrop = React.useCallback((acceptedFiles) => {
@@ -1411,7 +1412,7 @@ const DropzoneButton$1 = (props) => {
1411
1412
  } }, "Select file"));
1412
1413
  };
1413
1414
 
1414
- const useStyles$k = createStyles((theme) => ({
1415
+ const useStyles$m = createStyles((theme) => ({
1415
1416
  th: { padding: "0 !important" },
1416
1417
  control: {
1417
1418
  width: "100%",
@@ -1422,11 +1423,11 @@ const useStyles$k = createStyles((theme) => ({
1422
1423
  }
1423
1424
  }));
1424
1425
  function Th$1({ children, reversed, sorted, onSort }) {
1425
- const { classes } = useStyles$k();
1426
+ const { classes } = useStyles$m();
1426
1427
  const Icon = sorted ? reversed ? IconChevronUp : IconChevronDown : IconSelector;
1427
1428
  return /* @__PURE__ */ React.createElement("th", { className: classes.th }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: onSort, className: classes.control }, /* @__PURE__ */ React.createElement(Group, { position: "apart", noWrap: true, spacing: "xs" }, /* @__PURE__ */ React.createElement(Text, { weight: 500, size: "sm", sx: { whiteSpace: "nowrap" } }, children), /* @__PURE__ */ React.createElement(Center, null, /* @__PURE__ */ React.createElement(Icon, { size: 14, stroke: 1.5 })))));
1428
1429
  }
1429
- function Table$a(props) {
1430
+ function Table$b(props) {
1430
1431
  const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
1431
1432
  if (props.items.length === 0) {
1432
1433
  return /* @__PURE__ */ React.createElement(
@@ -1448,7 +1449,7 @@ function Table$a(props) {
1448
1449
  onConfirm: () => props.onDeleteClass(group)
1449
1450
  });
1450
1451
  const rows = sortedItems.map((row) => /* @__PURE__ */ React.createElement("tr", { key: row.classId }, /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(UnstyledButton, { component: Link, to: row.href }, /* @__PURE__ */ React.createElement(Text, { size: 14 }, row.name))), /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(Text, { size: 14 }, row.description)), /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(Text, { size: 14 }, row.numberOfStudents || 0)), /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(Group, { noWrap: true, spacing: 0, position: "right" }, /* @__PURE__ */ React.createElement(ActionIcon, { color: "red" }, /* @__PURE__ */ React.createElement(IconTrash, { onClick: () => openDeleteModal(row), size: 16, stroke: 1.5 }))))));
1451
- return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$k, { verticalSpacing: 20, sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement(
1452
+ return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: 20, sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement(
1452
1453
  Th$1,
1453
1454
  {
1454
1455
  sorted: sortConfig.key === "name",
@@ -1467,23 +1468,23 @@ function Table$a(props) {
1467
1468
  ), /* @__PURE__ */ React.createElement("th", null))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
1468
1469
  }
1469
1470
 
1470
- var __defProp$8 = Object.defineProperty;
1471
- var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;
1472
- var __hasOwnProp$8 = Object.prototype.hasOwnProperty;
1473
- var __propIsEnum$8 = Object.prototype.propertyIsEnumerable;
1474
- var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1475
- var __spreadValues$8 = (a, b) => {
1471
+ var __defProp$9 = Object.defineProperty;
1472
+ var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;
1473
+ var __hasOwnProp$9 = Object.prototype.hasOwnProperty;
1474
+ var __propIsEnum$9 = Object.prototype.propertyIsEnumerable;
1475
+ var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1476
+ var __spreadValues$9 = (a, b) => {
1476
1477
  for (var prop in b || (b = {}))
1477
- if (__hasOwnProp$8.call(b, prop))
1478
- __defNormalProp$8(a, prop, b[prop]);
1479
- if (__getOwnPropSymbols$8)
1480
- for (var prop of __getOwnPropSymbols$8(b)) {
1481
- if (__propIsEnum$8.call(b, prop))
1482
- __defNormalProp$8(a, prop, b[prop]);
1478
+ if (__hasOwnProp$9.call(b, prop))
1479
+ __defNormalProp$9(a, prop, b[prop]);
1480
+ if (__getOwnPropSymbols$9)
1481
+ for (var prop of __getOwnPropSymbols$9(b)) {
1482
+ if (__propIsEnum$9.call(b, prop))
1483
+ __defNormalProp$9(a, prop, b[prop]);
1483
1484
  }
1484
1485
  return a;
1485
1486
  };
1486
- const useStyles$j = createStyles((theme) => ({
1487
+ const useStyles$l = createStyles((theme) => ({
1487
1488
  title: {
1488
1489
  fontSize: 34,
1489
1490
  fontWeight: 900,
@@ -1496,7 +1497,7 @@ const useStyles$j = createStyles((theme) => ({
1496
1497
  }
1497
1498
  }));
1498
1499
  const Classes = (props) => {
1499
- const { classes } = useStyles$j();
1500
+ const { classes } = useStyles$l();
1500
1501
  const form = useForm({
1501
1502
  initialValues: {
1502
1503
  classId: "",
@@ -1524,28 +1525,28 @@ const Classes = (props) => {
1524
1525
  form.reset();
1525
1526
  setOpened(false);
1526
1527
  props.onCreateClass && props.onCreateClass(values);
1527
- }) }, /* @__PURE__ */ React.createElement(Stack$4, null, /* @__PURE__ */ React.createElement(
1528
+ }) }, /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(
1528
1529
  TextInput,
1529
- __spreadValues$8({
1530
+ __spreadValues$9({
1530
1531
  withAsterisk: true,
1531
1532
  label: "Name",
1532
1533
  placeholder: "Class name"
1533
1534
  }, form.getInputProps("name"))
1534
1535
  ), /* @__PURE__ */ React.createElement(
1535
1536
  TextInput,
1536
- __spreadValues$8({
1537
+ __spreadValues$9({
1537
1538
  label: "Description",
1538
1539
  placeholder: "A class for my first period English students"
1539
1540
  }, form.getInputProps("description"))
1540
1541
  )), /* @__PURE__ */ React.createElement(Button, { type: "submit", fullWidth: true, mt: "md" }, "Submit"))
1541
- ), /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$4, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(Badge$1, { variant: "filled", size: "lg" }, "Classes"), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, "Organize people into classes"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, "Create classes, cohorts, or custom subgroups")), /* @__PURE__ */ React.createElement(Grid.Col, { sm: "content" }, !props.loading && /* @__PURE__ */ React.createElement(
1542
+ ), /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(Badge$1, { variant: "filled", size: "lg" }, "Classes"), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, "Organize people into classes"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, "Create classes, cohorts, or custom subgroups")), /* @__PURE__ */ React.createElement(Grid.Col, { sm: "content" }, !props.loading && /* @__PURE__ */ React.createElement(
1542
1543
  Button,
1543
1544
  {
1544
1545
  onClick: () => setOpened(true),
1545
1546
  leftIcon: /* @__PURE__ */ React.createElement(IconPlaylistAdd, { size: 14 })
1546
1547
  },
1547
1548
  "Create class"
1548
- ))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$4, { spacing: "sm" }, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
1549
+ ))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
1549
1550
  {
1550
1551
  title: "# OF CLASSES",
1551
1552
  value: props.classes.length
@@ -1558,7 +1559,7 @@ const Classes = (props) => {
1558
1559
  onChange: props.onAutocompleteChange
1559
1560
  }
1560
1561
  ), /* @__PURE__ */ React.createElement(
1561
- Table$a,
1562
+ Table$b,
1562
1563
  {
1563
1564
  loading: props.loading,
1564
1565
  items: props.classes,
@@ -1567,7 +1568,7 @@ const Classes = (props) => {
1567
1568
  ))))));
1568
1569
  };
1569
1570
 
1570
- const useStyles$i = createStyles((theme) => ({
1571
+ const useStyles$k = createStyles((theme) => ({
1571
1572
  title: {
1572
1573
  fontSize: 34,
1573
1574
  fontWeight: 900,
@@ -1581,11 +1582,11 @@ const useStyles$i = createStyles((theme) => ({
1581
1582
  }
1582
1583
  }));
1583
1584
  const UserInfo = (props) => {
1584
- const { classes } = useStyles$i();
1585
+ const { classes } = useStyles$k();
1585
1586
  return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Title, { className: classes.title }, props.name), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "xs" }, props.impactStatement));
1586
1587
  };
1587
1588
 
1588
- function Table$9(props) {
1589
+ function Table$a(props) {
1589
1590
  if (props.items.length === 0) {
1590
1591
  return /* @__PURE__ */ React.createElement(
1591
1592
  PlaceholderBanner,
@@ -1621,7 +1622,7 @@ function Table$9(props) {
1621
1622
  ));
1622
1623
  }
1623
1624
 
1624
- function Table$8(props) {
1625
+ function Table$9(props) {
1625
1626
  if (props.items.length === 0) {
1626
1627
  return /* @__PURE__ */ React.createElement(
1627
1628
  PlaceholderBanner,
@@ -1634,10 +1635,10 @@ function Table$8(props) {
1634
1635
  );
1635
1636
  }
1636
1637
  const rows = props.items.map((row) => /* @__PURE__ */ React.createElement("tr", { key: row.questionName }, /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(Text, { component: Link, to: row.href }, row.lessonName)), /* @__PURE__ */ React.createElement("td", null, row.questionName), /* @__PURE__ */ React.createElement("td", null, row.answer.join(","))));
1637
- return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$k, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Lesson Name"), /* @__PURE__ */ React.createElement("th", null, "Question"), /* @__PURE__ */ React.createElement("th", null, "Answer"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
1638
+ return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Lesson Name"), /* @__PURE__ */ React.createElement("th", null, "Question"), /* @__PURE__ */ React.createElement("th", null, "Answer"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
1638
1639
  }
1639
1640
 
1640
- function Table$7(props) {
1641
+ function Table$8(props) {
1641
1642
  if (props.items.length === 0) {
1642
1643
  return /* @__PURE__ */ React.createElement(
1643
1644
  PlaceholderBanner,
@@ -1650,14 +1651,14 @@ function Table$7(props) {
1650
1651
  );
1651
1652
  }
1652
1653
  const rows = props.items.map((row) => /* @__PURE__ */ React.createElement("tr", { key: row.lessonName }, /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(Text, { component: Link, to: row.href }, row.lessonName)), /* @__PURE__ */ React.createElement("td", null, row.reflection), /* @__PURE__ */ React.createElement("td", null, row.rating.toLocaleString())));
1653
- return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$k, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Lesson Name"), /* @__PURE__ */ React.createElement("th", null, "Reflection"), /* @__PURE__ */ React.createElement("th", null, "Rating"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
1654
+ return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Lesson Name"), /* @__PURE__ */ React.createElement("th", null, "Reflection"), /* @__PURE__ */ React.createElement("th", null, "Rating"))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
1654
1655
  }
1655
1656
 
1656
1657
  const Student = (props) => {
1657
1658
  const [tab, setTab] = useState("badges");
1658
1659
  const numberOfBadgesCompleted = props.badges.length > 0 ? props.badges.filter((b) => b.isComplete).length : 0;
1659
1660
  const TEMPORARY_numberOfLessonsCompleted = props.lessons.filter((l) => l.isComplete).length;
1660
- return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$4, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, { gutter: "md" }, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
1661
+ return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, { gutter: "md" }, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
1661
1662
  Badge$1,
1662
1663
  {
1663
1664
  variant: "filled",
@@ -1672,7 +1673,7 @@ const Student = (props) => {
1672
1673
  name: props.name,
1673
1674
  impactStatement: props.impactStatement
1674
1675
  }
1675
- ))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$4, { spacing: "lg" }, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
1676
+ ))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, { spacing: "lg" }, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
1676
1677
  {
1677
1678
  title: "PROBLEMS SOLVED",
1678
1679
  value: props.numberOfProblemsSolved
@@ -1687,7 +1688,7 @@ const Student = (props) => {
1687
1688
  value: numberOfBadgesCompleted,
1688
1689
  unit: ""
1689
1690
  }
1690
- ] }), /* @__PURE__ */ React.createElement(Stack$4, { spacing: 0 }, /* @__PURE__ */ React.createElement(
1691
+ ] }), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(
1691
1692
  Tabs,
1692
1693
  {
1693
1694
  value: tab,
@@ -1699,19 +1700,19 @@ const Student = (props) => {
1699
1700
  onChange: setTab
1700
1701
  }
1701
1702
  ), tab === "badges" && /* @__PURE__ */ React.createElement(
1702
- Table$9,
1703
+ Table$a,
1703
1704
  {
1704
1705
  loading: props.loading,
1705
1706
  items: props.badges
1706
1707
  }
1707
1708
  ), tab === "answers" && /* @__PURE__ */ React.createElement(
1708
- Table$8,
1709
+ Table$9,
1709
1710
  {
1710
1711
  loading: props.loading,
1711
1712
  items: props.answers
1712
1713
  }
1713
1714
  ), tab === "reflections" && /* @__PURE__ */ React.createElement(
1714
- Table$7,
1715
+ Table$8,
1715
1716
  {
1716
1717
  loading: props.loading,
1717
1718
  items: props.reflections
@@ -1719,7 +1720,7 @@ const Student = (props) => {
1719
1720
  ))))));
1720
1721
  };
1721
1722
 
1722
- const useStyles$h = createStyles((theme, props) => {
1723
+ const useStyles$j = createStyles((theme, props) => {
1723
1724
  const from = props.from || "blue";
1724
1725
  const to = props.to || "green";
1725
1726
  return {
@@ -1747,7 +1748,7 @@ const useStyles$h = createStyles((theme, props) => {
1747
1748
  };
1748
1749
  });
1749
1750
  function CardGradient(props) {
1750
- const { classes } = useStyles$h(props);
1751
+ const { classes } = useStyles$j(props);
1751
1752
  const from = props.from || "blue";
1752
1753
  const to = props.to || "green";
1753
1754
  const icon = props.icon || /* @__PURE__ */ React.createElement(IconColorSwatch, { size: 28, stroke: 1.5 });
@@ -1763,35 +1764,35 @@ function CardGradient(props) {
1763
1764
  ), /* @__PURE__ */ React.createElement(Text, { size: "xl", weight: 500, mt: "md" }, props.title), /* @__PURE__ */ React.createElement(Text, { size: "sm", mt: "sm", color: "dimmed" }, props.description));
1764
1765
  }
1765
1766
 
1766
- var __defProp$7 = Object.defineProperty;
1767
- var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;
1768
- var __hasOwnProp$7 = Object.prototype.hasOwnProperty;
1769
- var __propIsEnum$7 = Object.prototype.propertyIsEnumerable;
1770
- var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1771
- var __spreadValues$7 = (a, b) => {
1767
+ var __defProp$8 = Object.defineProperty;
1768
+ var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;
1769
+ var __hasOwnProp$8 = Object.prototype.hasOwnProperty;
1770
+ var __propIsEnum$8 = Object.prototype.propertyIsEnumerable;
1771
+ var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1772
+ var __spreadValues$8 = (a, b) => {
1772
1773
  for (var prop in b || (b = {}))
1773
- if (__hasOwnProp$7.call(b, prop))
1774
- __defNormalProp$7(a, prop, b[prop]);
1775
- if (__getOwnPropSymbols$7)
1776
- for (var prop of __getOwnPropSymbols$7(b)) {
1777
- if (__propIsEnum$7.call(b, prop))
1778
- __defNormalProp$7(a, prop, b[prop]);
1774
+ if (__hasOwnProp$8.call(b, prop))
1775
+ __defNormalProp$8(a, prop, b[prop]);
1776
+ if (__getOwnPropSymbols$8)
1777
+ for (var prop of __getOwnPropSymbols$8(b)) {
1778
+ if (__propIsEnum$8.call(b, prop))
1779
+ __defNormalProp$8(a, prop, b[prop]);
1779
1780
  }
1780
1781
  return a;
1781
1782
  };
1782
1783
  var __objRest$1 = (source, exclude) => {
1783
1784
  var target = {};
1784
1785
  for (var prop in source)
1785
- if (__hasOwnProp$7.call(source, prop) && exclude.indexOf(prop) < 0)
1786
+ if (__hasOwnProp$8.call(source, prop) && exclude.indexOf(prop) < 0)
1786
1787
  target[prop] = source[prop];
1787
- if (source != null && __getOwnPropSymbols$7)
1788
- for (var prop of __getOwnPropSymbols$7(source)) {
1789
- if (exclude.indexOf(prop) < 0 && __propIsEnum$7.call(source, prop))
1788
+ if (source != null && __getOwnPropSymbols$8)
1789
+ for (var prop of __getOwnPropSymbols$8(source)) {
1790
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$8.call(source, prop))
1790
1791
  target[prop] = source[prop];
1791
1792
  }
1792
1793
  return target;
1793
1794
  };
1794
- const useStyles$g = createStyles((theme) => ({
1795
+ const useStyles$i = createStyles((theme) => ({
1795
1796
  card: {
1796
1797
  height: 240,
1797
1798
  backgroundSize: "cover",
@@ -1836,7 +1837,7 @@ const TenantBanner = (_a) => {
1836
1837
  "className",
1837
1838
  "code"
1838
1839
  ]);
1839
- const { classes, cx, theme } = useStyles$g();
1840
+ const { classes, cx, theme } = useStyles$i();
1840
1841
  const handleCopy = async () => {
1841
1842
  if (!code)
1842
1843
  return;
@@ -1853,9 +1854,9 @@ const TenantBanner = (_a) => {
1853
1854
  };
1854
1855
  return /* @__PURE__ */ React.createElement(
1855
1856
  Card,
1856
- __spreadValues$7({
1857
+ __spreadValues$8({
1857
1858
  radius: "md",
1858
- style: __spreadValues$7({ backgroundImage: `url(${image})` }, style),
1859
+ style: __spreadValues$8({ backgroundImage: `url(${image})` }, style),
1859
1860
  className: cx(classes.card, className)
1860
1861
  }, others),
1861
1862
  /* @__PURE__ */ React.createElement(
@@ -1884,7 +1885,7 @@ const TenantBanner = (_a) => {
1884
1885
  };
1885
1886
 
1886
1887
  const Home = (props) => {
1887
- return /* @__PURE__ */ React.createElement(Container, { size: "lg" }, /* @__PURE__ */ React.createElement(Stack$4, { spacing: "lg" }, /* @__PURE__ */ React.createElement(Grid, { gutter: "md" }, /* @__PURE__ */ React.createElement(Grid.Col, { md: 6 }, /* @__PURE__ */ React.createElement(
1888
+ return /* @__PURE__ */ React.createElement(Container, { size: "lg" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "lg" }, /* @__PURE__ */ React.createElement(Grid, { gutter: "md" }, /* @__PURE__ */ React.createElement(Grid.Col, { md: 6 }, /* @__PURE__ */ React.createElement(
1888
1889
  UserInfo,
1889
1890
  {
1890
1891
  variant: "compact",
@@ -1934,10 +1935,17 @@ const Home = (props) => {
1934
1935
  description: "Bite-sized activities and learning experiences accelerating students achievement",
1935
1936
  onClick: props.onLessonsClick
1936
1937
  }
1938
+ )), /* @__PURE__ */ React.createElement(Grid.Col, null, /* @__PURE__ */ React.createElement(
1939
+ CardGradient,
1940
+ {
1941
+ title: "File Locker",
1942
+ description: "A secure space to view student-submitted work and provide feedback",
1943
+ onClick: props.onFileLockerClick
1944
+ }
1937
1945
  )))));
1938
1946
  };
1939
1947
 
1940
- function Table$6(props) {
1948
+ function Table$7(props) {
1941
1949
  const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
1942
1950
  if (props.items.length === 0) {
1943
1951
  return /* @__PURE__ */ React.createElement(
@@ -1969,7 +1977,7 @@ function Table$6(props) {
1969
1977
  ));
1970
1978
  }
1971
1979
 
1972
- const useStyles$f = createStyles((theme) => ({
1980
+ const useStyles$h = createStyles((theme) => ({
1973
1981
  button: {
1974
1982
  borderTopRightRadius: 0,
1975
1983
  borderBottomRightRadius: 0,
@@ -1983,10 +1991,10 @@ const useStyles$f = createStyles((theme) => ({
1983
1991
  borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
1984
1992
  }
1985
1993
  }));
1986
- const SplitButton$2 = (props) => {
1987
- const { classes, theme } = useStyles$f();
1994
+ const SplitButton$3 = (props) => {
1995
+ const { classes, theme } = useStyles$h();
1988
1996
  theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
1989
- return /* @__PURE__ */ React.createElement(Stack$4, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
1997
+ return /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
1990
1998
  Button,
1991
1999
  {
1992
2000
  component: Link,
@@ -2013,36 +2021,36 @@ const SplitButton$2 = (props) => {
2013
2021
  ));
2014
2022
  };
2015
2023
 
2016
- function Stack$2(props) {
2024
+ function Stack$3(props) {
2017
2025
  if (props.items.length === 0) {
2018
2026
  return null;
2019
2027
  }
2020
- const rows = props.items.map((row) => /* @__PURE__ */ React.createElement(Stack$4, { spacing: 0, key: row.questionName }, /* @__PURE__ */ React.createElement(Title, { color: "dark.4", size: "lg" }, row.questionName), /* @__PURE__ */ React.createElement(Text, null, row.answer.join(",") || "No answer.")));
2021
- return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(UnstyledButton, { component: Link, to: props.href }, /* @__PURE__ */ React.createElement(Stack$4, { spacing: 24, sx: { padding: 20, minWidth: 700 } }, rows)));
2028
+ const rows = props.items.map((row) => /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0, key: row.questionName }, /* @__PURE__ */ React.createElement(Title, { color: "dark.4", size: "lg" }, row.questionName), /* @__PURE__ */ React.createElement(Text, null, row.answer.join(",") || "No answer.")));
2029
+ return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(UnstyledButton, { component: Link, to: props.href }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 24, sx: { padding: 20, minWidth: 700 } }, rows)));
2022
2030
  }
2023
2031
 
2024
- var __defProp$6 = Object.defineProperty;
2025
- var __defProps$5 = Object.defineProperties;
2026
- var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;
2027
- var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;
2028
- var __hasOwnProp$6 = Object.prototype.hasOwnProperty;
2029
- var __propIsEnum$6 = Object.prototype.propertyIsEnumerable;
2030
- var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2031
- var __spreadValues$6 = (a, b) => {
2032
+ var __defProp$7 = Object.defineProperty;
2033
+ var __defProps$6 = Object.defineProperties;
2034
+ var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;
2035
+ var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;
2036
+ var __hasOwnProp$7 = Object.prototype.hasOwnProperty;
2037
+ var __propIsEnum$7 = Object.prototype.propertyIsEnumerable;
2038
+ var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2039
+ var __spreadValues$7 = (a, b) => {
2032
2040
  for (var prop in b || (b = {}))
2033
- if (__hasOwnProp$6.call(b, prop))
2034
- __defNormalProp$6(a, prop, b[prop]);
2035
- if (__getOwnPropSymbols$6)
2036
- for (var prop of __getOwnPropSymbols$6(b)) {
2037
- if (__propIsEnum$6.call(b, prop))
2038
- __defNormalProp$6(a, prop, b[prop]);
2041
+ if (__hasOwnProp$7.call(b, prop))
2042
+ __defNormalProp$7(a, prop, b[prop]);
2043
+ if (__getOwnPropSymbols$7)
2044
+ for (var prop of __getOwnPropSymbols$7(b)) {
2045
+ if (__propIsEnum$7.call(b, prop))
2046
+ __defNormalProp$7(a, prop, b[prop]);
2039
2047
  }
2040
2048
  return a;
2041
2049
  };
2042
- var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
2043
- function Table$5(props) {
2050
+ var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
2051
+ function Table$6(props) {
2044
2052
  const preparedItems = React.useMemo(() => {
2045
- return props.items.map((item) => __spreadProps$5(__spreadValues$6({}, item), {
2053
+ return props.items.map((item) => __spreadProps$6(__spreadValues$7({}, item), {
2046
2054
  status: item.isComplete ? 2 : item.isStarted ? 1 : 0
2047
2055
  }));
2048
2056
  }, [props.items]);
@@ -2088,13 +2096,13 @@ function Table$5(props) {
2088
2096
  render: (row) => /* @__PURE__ */ React.createElement(React.Fragment, null, !!row.isComplete && /* @__PURE__ */ React.createElement(Badge$1, { variant: "filled" }, "Complete"), !row.isComplete && !row.isStarted && /* @__PURE__ */ React.createElement(Badge$1, { color: "red", variant: "filled" }, "Not started"), !row.isComplete && !!row.isStarted && /* @__PURE__ */ React.createElement(Badge$1, { color: "violet", variant: "filled" }, "In progress"))
2089
2097
  }],
2090
2098
  rowExpansion: {
2091
- content: ({ record }) => /* @__PURE__ */ React.createElement(Stack$2, { href: record.href, items: record.answers })
2099
+ content: ({ record }) => /* @__PURE__ */ React.createElement(Stack$3, { href: record.href, items: record.answers })
2092
2100
  }
2093
2101
  }
2094
2102
  ));
2095
2103
  }
2096
2104
 
2097
- function Stack$1(props) {
2105
+ function Stack$2(props) {
2098
2106
  const primaryAxis = React.useMemo(
2099
2107
  () => ({
2100
2108
  position: "left",
@@ -2134,7 +2142,7 @@ function Stack$1(props) {
2134
2142
  labelMap[r] = labelMap[r] ? labelMap[r] + 1 : 1;
2135
2143
  }
2136
2144
  }));
2137
- return /* @__PURE__ */ React.createElement(Card, { key: row.question, withBorder: true, p: "xl", radius: "md" }, /* @__PURE__ */ React.createElement(Stack$4, { spacing: 4 }, /* @__PURE__ */ React.createElement(Title, { size: "lg" }, row.question), /* @__PURE__ */ React.createElement(Text, { size: "sm" }, row.answers.length, " answers"), /* @__PURE__ */ React.createElement("div", { style: { background: "white", height: "300px", width: "100%", position: "relative" } }, /* @__PURE__ */ React.createElement(
2145
+ return /* @__PURE__ */ React.createElement(Card, { key: row.question, withBorder: true, p: "xl", radius: "md" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 4 }, /* @__PURE__ */ React.createElement(Title, { size: "lg" }, row.question), /* @__PURE__ */ React.createElement(Text, { size: "sm" }, row.answers.length, " answers"), /* @__PURE__ */ React.createElement("div", { style: { background: "white", height: "300px", width: "100%", position: "relative" } }, /* @__PURE__ */ React.createElement(
2138
2146
  Chart,
2139
2147
  {
2140
2148
  options: {
@@ -2153,16 +2161,16 @@ function Stack$1(props) {
2153
2161
  }
2154
2162
  ))));
2155
2163
  }
2156
- return /* @__PURE__ */ React.createElement(Card, { key: row.question, withBorder: true, p: "xl", radius: "md" }, /* @__PURE__ */ React.createElement(Stack$4, { spacing: 4 }, /* @__PURE__ */ React.createElement(Title, { size: "lg" }, row.question), /* @__PURE__ */ React.createElement(Text, { size: "sm" }, row.answers.length, " answers"), /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Stack$4, { spacing: 4 }, row.answers.map((a) => {
2164
+ return /* @__PURE__ */ React.createElement(Card, { key: row.question, withBorder: true, p: "xl", radius: "md" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 4 }, /* @__PURE__ */ React.createElement(Title, { size: "lg" }, row.question), /* @__PURE__ */ React.createElement(Text, { size: "sm" }, row.answers.length, " answers"), /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 4 }, row.answers.map((a) => {
2157
2165
  const answerText = a.join("\n");
2158
2166
  return /* @__PURE__ */ React.createElement(Card, { key: answerText, p: 5, radius: 0, bg: "gray.0" }, /* @__PURE__ */ React.createElement(Text, null, answerText));
2159
2167
  })))));
2160
2168
  });
2161
- return /* @__PURE__ */ React.createElement(Stack$4, { py: 4, spacing: 10, sx: { minWidth: 700 } }, rows);
2169
+ return /* @__PURE__ */ React.createElement(Stack$5, { py: 4, spacing: 10, sx: { minWidth: 700 } }, rows);
2162
2170
  }
2163
2171
  const truncateWithEllipses = (text, max) => text.substr(0, max - 1) + (text.length > max ? "&hellip;" : "");
2164
2172
 
2165
- const useStyles$e = createStyles((theme) => ({
2173
+ const useStyles$g = createStyles((theme) => ({
2166
2174
  title: {
2167
2175
  fontSize: 34,
2168
2176
  fontWeight: 900,
@@ -2175,7 +2183,7 @@ const useStyles$e = createStyles((theme) => ({
2175
2183
  }
2176
2184
  }));
2177
2185
  const Lesson = (props) => {
2178
- const { classes } = useStyles$e();
2186
+ const { classes } = useStyles$g();
2179
2187
  const [tab, setTab] = useState("question");
2180
2188
  const numberOfStudents = props.students.length;
2181
2189
  const numberOfLessons = numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length : 0;
@@ -2217,7 +2225,7 @@ const Lesson = (props) => {
2217
2225
  { label: "By student", value: "students" },
2218
2226
  { label: "By reflection", value: "reflections" }
2219
2227
  ];
2220
- return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$4, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
2228
+ return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
2221
2229
  Badge$1,
2222
2230
  {
2223
2231
  variant: "filled",
@@ -2225,15 +2233,15 @@ const Lesson = (props) => {
2225
2233
  size: "lg"
2226
2234
  },
2227
2235
  "Back"
2228
- )), /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement(Stack$4, { spacing: 0 }, /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, props.displayName || "Lesson"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description")), /* @__PURE__ */ React.createElement(Stack$4, { ml: "auto" }, /* @__PURE__ */ React.createElement(
2229
- SplitButton$2,
2236
+ )), /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, props.displayName || "Lesson"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description")), /* @__PURE__ */ React.createElement(Stack$5, { ml: "auto" }, /* @__PURE__ */ React.createElement(
2237
+ SplitButton$3,
2230
2238
  {
2231
2239
  href: props.href,
2232
2240
  noExport: props.trial,
2233
2241
  onCopyLinkClick: props.onCopyLinkClick,
2234
2242
  onExportDataClick: props.onExportDataClick
2235
2243
  }
2236
- ))))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$4, null, /* @__PURE__ */ React.createElement(
2244
+ ))))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(
2237
2245
  StatsGroup,
2238
2246
  {
2239
2247
  data: [
@@ -2259,7 +2267,7 @@ const Lesson = (props) => {
2259
2267
  return { value: g.classId, label: g.name };
2260
2268
  })
2261
2269
  }
2262
- ), /* @__PURE__ */ React.createElement(Stack$4, { spacing: 0 }, /* @__PURE__ */ React.createElement(
2270
+ ), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(
2263
2271
  Tabs,
2264
2272
  {
2265
2273
  value: tab,
@@ -2267,19 +2275,19 @@ const Lesson = (props) => {
2267
2275
  onChange: setTab
2268
2276
  }
2269
2277
  ), tab === "question" && /* @__PURE__ */ React.createElement(
2270
- Stack$1,
2278
+ Stack$2,
2271
2279
  {
2272
2280
  loading: props.loading,
2273
2281
  items: props.questions
2274
2282
  }
2275
2283
  ), tab === "reflections" && /* @__PURE__ */ React.createElement(
2276
- Table$6,
2284
+ Table$7,
2277
2285
  {
2278
2286
  loading: props.loading,
2279
2287
  items: props.reflections
2280
2288
  }
2281
2289
  ), tab === "students" && /* @__PURE__ */ React.createElement(
2282
- Table$5,
2290
+ Table$6,
2283
2291
  {
2284
2292
  loading: props.loading,
2285
2293
  items: props.students
@@ -2287,7 +2295,7 @@ const Lesson = (props) => {
2287
2295
  )))))));
2288
2296
  };
2289
2297
 
2290
- function Table$4(props) {
2298
+ function Table$5(props) {
2291
2299
  if (props.items.length === 0) {
2292
2300
  return /* @__PURE__ */ React.createElement(
2293
2301
  PlaceholderBanner,
@@ -2316,10 +2324,10 @@ function Table$4(props) {
2316
2324
  },
2317
2325
  /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(Text, { size: "sm", weight: 500 }, row.name), /* @__PURE__ */ React.createElement(Text, { size: "xs", color: "dimmed" }, row.description)))
2318
2326
  ))));
2319
- return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$k, { horizontalSpacing: 0, verticalSpacing: 0, sx: { minWidth: 700 } }, /* @__PURE__ */ React.createElement("tbody", null, rows)));
2327
+ return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { horizontalSpacing: 0, verticalSpacing: 0, sx: { minWidth: 700 } }, /* @__PURE__ */ React.createElement("tbody", null, rows)));
2320
2328
  }
2321
2329
 
2322
- const useStyles$d = createStyles((theme) => ({
2330
+ const useStyles$f = createStyles((theme) => ({
2323
2331
  title: {
2324
2332
  fontSize: 34,
2325
2333
  fontWeight: 900,
@@ -2332,8 +2340,8 @@ const useStyles$d = createStyles((theme) => ({
2332
2340
  }
2333
2341
  }));
2334
2342
  const Lessons = (props) => {
2335
- const { classes } = useStyles$d();
2336
- return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$4, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(Badge$1, { variant: "filled", size: "lg" }, "Lessons"), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, "Lessons"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, "Bite-sized activities and learning experiences accelerating students achievement"))), /* @__PURE__ */ React.createElement(
2343
+ const { classes } = useStyles$f();
2344
+ return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(Badge$1, { variant: "filled", size: "lg" }, "Lessons"), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, "Lessons"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, "Bite-sized activities and learning experiences accelerating students achievement"))), /* @__PURE__ */ React.createElement(
2337
2345
  Autocomplete,
2338
2346
  {
2339
2347
  placeholder: "Search for a lesson that fits your needs",
@@ -2341,7 +2349,7 @@ const Lessons = (props) => {
2341
2349
  onChange: props.onAutocompleteChange
2342
2350
  }
2343
2351
  ), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(
2344
- Table$4,
2352
+ Table$5,
2345
2353
  {
2346
2354
  loading: props.loading,
2347
2355
  items: props.lessons
@@ -2349,7 +2357,7 @@ const Lessons = (props) => {
2349
2357
  ))));
2350
2358
  };
2351
2359
 
2352
- const useStyles$c = createStyles((theme) => ({
2360
+ const useStyles$e = createStyles((theme) => ({
2353
2361
  title: {
2354
2362
  fontSize: 22,
2355
2363
  fontWeight: 900,
@@ -2368,7 +2376,7 @@ const useStyles$c = createStyles((theme) => ({
2368
2376
  }
2369
2377
  }));
2370
2378
  function AccessCode(props) {
2371
- const { classes } = useStyles$c();
2379
+ const { classes } = useStyles$e();
2372
2380
  return /* @__PURE__ */ React.createElement(Container, { mx: "0", px: "0", size: 460, my: 30 }, /* @__PURE__ */ React.createElement(Title, { className: classes.title }, "Access code"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", size: "sm" }, "Grant access to join your organization"), /* @__PURE__ */ React.createElement(Paper, { withBorder: true, shadow: "md", p: 30, radius: "md", mt: "xl" }, /* @__PURE__ */ React.createElement(TextInput, { value: props.value, readOnly: true }), /* @__PURE__ */ React.createElement(Group, { position: "apart", mt: "lg", className: classes.controls }, /* @__PURE__ */ React.createElement(
2373
2381
  Anchor,
2374
2382
  {
@@ -2396,7 +2404,7 @@ const monthNames = [
2396
2404
  "November",
2397
2405
  "December"
2398
2406
  ];
2399
- const useStyles$b = createStyles((theme) => ({
2407
+ const useStyles$d = createStyles((theme) => ({
2400
2408
  title: {
2401
2409
  fontSize: 34,
2402
2410
  fontWeight: 900,
@@ -2426,8 +2434,8 @@ const useStyles$b = createStyles((theme) => ({
2426
2434
  }
2427
2435
  }));
2428
2436
  const Organization = (props) => {
2429
- const { classes } = useStyles$b();
2430
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$4, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
2437
+ const { classes } = useStyles$d();
2438
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
2431
2439
  Badge$1,
2432
2440
  {
2433
2441
  variant: "filled",
@@ -2435,7 +2443,7 @@ const Organization = (props) => {
2435
2443
  size: "lg"
2436
2444
  },
2437
2445
  "Back"
2438
- )), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, props.displayName || "Overview"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description"))), /* @__PURE__ */ React.createElement(AccessCode, { value: props.accessCode, onCopyCode: props.onCopyAccessCode, peopleLink: props.peopleLink }), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$4, { spacing: "sm" }, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
2446
+ )), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, props.displayName || "Overview"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description"))), /* @__PURE__ */ React.createElement(AccessCode, { value: props.accessCode, onCopyCode: props.onCopyAccessCode, peopleLink: props.peopleLink }), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
2439
2447
  {
2440
2448
  title: "# OF STUDENTS",
2441
2449
  value: props.numberOfStudents || 0
@@ -2452,7 +2460,7 @@ const Organization = (props) => {
2452
2460
  ] }))))));
2453
2461
  };
2454
2462
 
2455
- const useStyles$a = createStyles((theme) => ({
2463
+ const useStyles$c = createStyles((theme) => ({
2456
2464
  button: {
2457
2465
  borderTopRightRadius: 0,
2458
2466
  borderBottomRightRadius: 0,
@@ -2466,8 +2474,8 @@ const useStyles$a = createStyles((theme) => ({
2466
2474
  borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
2467
2475
  }
2468
2476
  }));
2469
- const SplitButton$1 = (props) => {
2470
- const { classes, theme } = useStyles$a();
2477
+ const SplitButton$2 = (props) => {
2478
+ const { classes, theme } = useStyles$c();
2471
2479
  const menuIconColor = theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
2472
2480
  const hasMenu = !!props.withOrganizationLink;
2473
2481
  return /* @__PURE__ */ React.createElement(Group, { noWrap: true, spacing: 0 }, /* @__PURE__ */ React.createElement(
@@ -2497,7 +2505,7 @@ const SplitButton$1 = (props) => {
2497
2505
  ))));
2498
2506
  };
2499
2507
 
2500
- function Table$3(props) {
2508
+ function Table$4(props) {
2501
2509
  if (props.items.length === 0) {
2502
2510
  return /* @__PURE__ */ React.createElement(
2503
2511
  PlaceholderBanner,
@@ -2526,29 +2534,29 @@ function Table$3(props) {
2526
2534
  data: [{ value: "student", label: "Student" }, { value: "educator", label: "Educator" }, { value: "admin", label: "Admin" }]
2527
2535
  }
2528
2536
  ))), /* @__PURE__ */ React.createElement("td", null, row.hasAccount && /* @__PURE__ */ React.createElement(IconCheck, { color: "green" })), /* @__PURE__ */ React.createElement("td", null, row.numberOfClasses), /* @__PURE__ */ React.createElement("td", null, row.lastActivity ? relativeTimeFromDates(row.lastActivity) : ""), /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(Group, { noWrap: true, spacing: 0, position: "right" }, !row.readonly && !!props.onDelete && /* @__PURE__ */ React.createElement(ActionIcon, { color: "red" }, /* @__PURE__ */ React.createElement(IconTrash, { onClick: () => openDeleteModal(row), size: 16, stroke: 1.5 }))))));
2529
- return /* @__PURE__ */ React.createElement(ScrollArea, null, /* @__PURE__ */ React.createElement(Table$k, { verticalSpacing: 20, sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Name"), /* @__PURE__ */ React.createElement("th", null, "Role"), /* @__PURE__ */ React.createElement("th", null, "Account Created?"), /* @__PURE__ */ React.createElement("th", null, "# of Classes"), /* @__PURE__ */ React.createElement("th", null, "Last Active"), /* @__PURE__ */ React.createElement("th", null))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
2537
+ return /* @__PURE__ */ React.createElement(ScrollArea, null, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: 20, sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("th", null, "Name"), /* @__PURE__ */ React.createElement("th", null, "Role"), /* @__PURE__ */ React.createElement("th", null, "Account Created?"), /* @__PURE__ */ React.createElement("th", null, "# of Classes"), /* @__PURE__ */ React.createElement("th", null, "Last Active"), /* @__PURE__ */ React.createElement("th", null))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
2530
2538
  }
2531
2539
 
2532
- var __defProp$5 = Object.defineProperty;
2533
- var __defProps$4 = Object.defineProperties;
2534
- var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
2535
- var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
2536
- var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
2537
- var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
2538
- var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2539
- var __spreadValues$5 = (a, b) => {
2540
+ var __defProp$6 = Object.defineProperty;
2541
+ var __defProps$5 = Object.defineProperties;
2542
+ var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;
2543
+ var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;
2544
+ var __hasOwnProp$6 = Object.prototype.hasOwnProperty;
2545
+ var __propIsEnum$6 = Object.prototype.propertyIsEnumerable;
2546
+ var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2547
+ var __spreadValues$6 = (a, b) => {
2540
2548
  for (var prop in b || (b = {}))
2541
- if (__hasOwnProp$5.call(b, prop))
2542
- __defNormalProp$5(a, prop, b[prop]);
2543
- if (__getOwnPropSymbols$5)
2544
- for (var prop of __getOwnPropSymbols$5(b)) {
2545
- if (__propIsEnum$5.call(b, prop))
2546
- __defNormalProp$5(a, prop, b[prop]);
2549
+ if (__hasOwnProp$6.call(b, prop))
2550
+ __defNormalProp$6(a, prop, b[prop]);
2551
+ if (__getOwnPropSymbols$6)
2552
+ for (var prop of __getOwnPropSymbols$6(b)) {
2553
+ if (__propIsEnum$6.call(b, prop))
2554
+ __defNormalProp$6(a, prop, b[prop]);
2547
2555
  }
2548
2556
  return a;
2549
2557
  };
2550
- var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
2551
- const useStyles$9 = createStyles((theme) => ({
2558
+ var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
2559
+ const useStyles$b = createStyles((theme) => ({
2552
2560
  title: {
2553
2561
  fontSize: 34,
2554
2562
  fontWeight: 900,
@@ -2578,7 +2586,7 @@ const useStyles$9 = createStyles((theme) => ({
2578
2586
  }
2579
2587
  }));
2580
2588
  const People = (props) => {
2581
- const { classes } = useStyles$9();
2589
+ const { classes } = useStyles$b();
2582
2590
  const form = useForm({
2583
2591
  initialValues: {
2584
2592
  userId: "",
@@ -2609,32 +2617,32 @@ const People = (props) => {
2609
2617
  padding: "xl",
2610
2618
  size: "xl"
2611
2619
  },
2612
- /* @__PURE__ */ React.createElement(Stack$4, { spacing: "md" }, /* @__PURE__ */ React.createElement(DropzoneButton, __spreadProps$4(__spreadValues$5({}, props), { close: () => setOpened(false) })), /* @__PURE__ */ React.createElement(Divider, { label: "or", labelPosition: "center", my: "md", variant: "dashed" }), /* @__PURE__ */ React.createElement("form", { onSubmit: form.onSubmit(() => {
2620
+ /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(DropzoneButton, __spreadProps$5(__spreadValues$6({}, props), { close: () => setOpened(false) })), /* @__PURE__ */ React.createElement(Divider, { label: "or", labelPosition: "center", my: "md", variant: "dashed" }), /* @__PURE__ */ React.createElement("form", { onSubmit: form.onSubmit(() => {
2613
2621
  const values = form.values;
2614
2622
  form.reset();
2615
2623
  setOpened(false);
2616
2624
  props.onCreateUsers && props.onCreateUsers([values]);
2617
- }) }, /* @__PURE__ */ React.createElement(Stack$4, null, /* @__PURE__ */ React.createElement(
2625
+ }) }, /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(
2618
2626
  TextInput,
2619
- __spreadValues$5({
2627
+ __spreadValues$6({
2620
2628
  withAsterisk: true,
2621
2629
  label: "Email",
2622
2630
  placeholder: "Email"
2623
2631
  }, form.getInputProps("email"))
2624
2632
  ), /* @__PURE__ */ React.createElement(Group, { grow: true }, /* @__PURE__ */ React.createElement(
2625
2633
  TextInput,
2626
- __spreadValues$5({
2634
+ __spreadValues$6({
2627
2635
  label: "Given name",
2628
2636
  placeholder: "Given name"
2629
2637
  }, form.getInputProps("givenName"))
2630
2638
  ), /* @__PURE__ */ React.createElement(
2631
2639
  TextInput,
2632
- __spreadValues$5({
2640
+ __spreadValues$6({
2633
2641
  label: "Family name",
2634
2642
  placeholder: "Family name"
2635
2643
  }, form.getInputProps("familyName"))
2636
2644
  )), /* @__PURE__ */ React.createElement(Button, { type: "submit", fullWidth: true, mt: "md" }, "Submit"))))
2637
- ), /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$4, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
2645
+ ), /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
2638
2646
  Badge$1,
2639
2647
  {
2640
2648
  variant: "filled",
@@ -2643,13 +2651,13 @@ const People = (props) => {
2643
2651
  },
2644
2652
  "Back"
2645
2653
  )), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, "People"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, "Manage members of your organization")), /* @__PURE__ */ React.createElement(Grid.Col, { sm: "content" }, !props.loading && /* @__PURE__ */ React.createElement(
2646
- SplitButton$1,
2654
+ SplitButton$2,
2647
2655
  {
2648
2656
  withOrganizationLink: props.withOrganizationLink,
2649
2657
  onAddUsersClick: () => setOpened(true),
2650
2658
  onCopyOrganizationLinkClick: props.onCopyLinkClick
2651
2659
  }
2652
- ))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$4, { spacing: "sm" }, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
2660
+ ))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
2653
2661
  {
2654
2662
  title: "# OF PEOPLE",
2655
2663
  value: props.users.length
@@ -2672,7 +2680,7 @@ const People = (props) => {
2672
2680
  onChange: props.onAutocompleteChange
2673
2681
  }
2674
2682
  ), /* @__PURE__ */ React.createElement(
2675
- Table$3,
2683
+ Table$4,
2676
2684
  {
2677
2685
  loading: props.loading,
2678
2686
  items: props.users,
@@ -2682,7 +2690,7 @@ const People = (props) => {
2682
2690
  ))))));
2683
2691
  };
2684
2692
  const DropzoneButton = (props) => {
2685
- const { classes, theme } = useStyles$9();
2693
+ const { classes, theme } = useStyles$b();
2686
2694
  const openRef = React.useRef(null);
2687
2695
  const [loading, setLoading] = React.useState(false);
2688
2696
  const onDrop = React.useCallback((acceptedFiles) => {
@@ -2728,7 +2736,7 @@ const DropzoneButton = (props) => {
2728
2736
  } }, "Select file"));
2729
2737
  };
2730
2738
 
2731
- const useStyles$8 = createStyles((theme) => ({
2739
+ const useStyles$a = createStyles((theme) => ({
2732
2740
  form: {
2733
2741
  backgroundColor: theme.white,
2734
2742
  padding: theme.spacing.xl,
@@ -2791,7 +2799,7 @@ const useStyles$8 = createStyles((theme) => ({
2791
2799
  }
2792
2800
  }));
2793
2801
  const StartAnonymousLesson = (props) => {
2794
- const { classes } = useStyles$8();
2802
+ const { classes } = useStyles$a();
2795
2803
  const [name, setName] = React.useState("");
2796
2804
  return /* @__PURE__ */ React.createElement("div", { className: classes.wrapper }, /* @__PURE__ */ React.createElement(Container, null, /* @__PURE__ */ React.createElement(SimpleGrid, { maw: 960, cols: 2, spacing: 15, breakpoints: [{ maxWidth: "sm", cols: 1 }] }, /* @__PURE__ */ React.createElement("div", { className: classes.content }, /* @__PURE__ */ React.createElement(Badge$1, { color: "violet" }, "Community"), /* @__PURE__ */ React.createElement(Title, { className: classes.title }, props.title), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", mt: "md" }, props.description), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", mt: "md" }, "You are now part of ", `${props.educatorName}'s`, " Class")), /* @__PURE__ */ React.createElement("div", { className: classes.form }, /* @__PURE__ */ React.createElement(
2797
2805
  TextInput,
@@ -2815,24 +2823,24 @@ const StartAnonymousLesson = (props) => {
2815
2823
  ))))));
2816
2824
  };
2817
2825
 
2818
- var __defProp$4 = Object.defineProperty;
2819
- var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
2820
- var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
2821
- var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
2822
- var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2823
- var __spreadValues$4 = (a, b) => {
2826
+ var __defProp$5 = Object.defineProperty;
2827
+ var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
2828
+ var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
2829
+ var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
2830
+ var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2831
+ var __spreadValues$5 = (a, b) => {
2824
2832
  for (var prop in b || (b = {}))
2825
- if (__hasOwnProp$4.call(b, prop))
2826
- __defNormalProp$4(a, prop, b[prop]);
2827
- if (__getOwnPropSymbols$4)
2828
- for (var prop of __getOwnPropSymbols$4(b)) {
2829
- if (__propIsEnum$4.call(b, prop))
2830
- __defNormalProp$4(a, prop, b[prop]);
2833
+ if (__hasOwnProp$5.call(b, prop))
2834
+ __defNormalProp$5(a, prop, b[prop]);
2835
+ if (__getOwnPropSymbols$5)
2836
+ for (var prop of __getOwnPropSymbols$5(b)) {
2837
+ if (__propIsEnum$5.call(b, prop))
2838
+ __defNormalProp$5(a, prop, b[prop]);
2831
2839
  }
2832
2840
  return a;
2833
2841
  };
2834
2842
  const BadgeGrid = (props) => {
2835
- const badges = props.badges.map((b) => /* @__PURE__ */ React.createElement(TaskCard, __spreadValues$4({ key: b.title }, b)));
2843
+ const badges = props.badges.map((b) => /* @__PURE__ */ React.createElement(TaskCard, __spreadValues$5({ key: b.title }, b)));
2836
2844
  return /* @__PURE__ */ React.createElement(SimpleGrid, { cols: 4, breakpoints: [{ maxWidth: "sm", cols: 1 }, { maxWidth: "md", cols: 3 }] }, badges);
2837
2845
  };
2838
2846
  function TaskCard(props) {
@@ -2848,7 +2856,7 @@ function TaskCard(props) {
2848
2856
  ));
2849
2857
  }
2850
2858
 
2851
- const useStyles$7 = createStyles((theme) => ({
2859
+ const useStyles$9 = createStyles((theme) => ({
2852
2860
  action: {
2853
2861
  backgroundColor: "inherit",
2854
2862
  ":hover": {
@@ -2867,7 +2875,7 @@ const useStyles$7 = createStyles((theme) => ({
2867
2875
  }
2868
2876
  }));
2869
2877
  const TrialHome = (props) => {
2870
- const { classes } = useStyles$7();
2878
+ const { classes } = useStyles$9();
2871
2879
  return /* @__PURE__ */ React.createElement(Container, { size: "lg" }, /* @__PURE__ */ React.createElement(Badge$1, null, props.daysRemaining, " day", props.daysRemaining !== 1 ? "s" : "", " left"), /* @__PURE__ */ React.createElement(
2872
2880
  Button,
2873
2881
  {
@@ -2879,7 +2887,7 @@ const TrialHome = (props) => {
2879
2887
  target: "_blank"
2880
2888
  },
2881
2889
  "UPGRADE NOW"
2882
- ), /* @__PURE__ */ React.createElement(Stack$4, { spacing: "sm" }, /* @__PURE__ */ React.createElement(Stack$4, { spacing: 0 }, /* @__PURE__ */ React.createElement(
2890
+ ), /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(
2883
2891
  UserInfo,
2884
2892
  {
2885
2893
  variant: "compact",
@@ -2896,38 +2904,38 @@ const TrialHome = (props) => {
2896
2904
  )), /* @__PURE__ */ React.createElement(Title, { maw: 500, mb: 20, mt: 20, className: classes.title }, "Based on the tags you selected, check out these lessons to get started with your students!"), /* @__PURE__ */ React.createElement(BadgeGrid, { onAssign: props.onAssign, badges: props.badges })));
2897
2905
  };
2898
2906
 
2899
- var __defProp$3 = Object.defineProperty;
2900
- var __defProps$3 = Object.defineProperties;
2901
- var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
2902
- var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
2903
- var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
2904
- var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
2905
- var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2906
- var __spreadValues$3 = (a, b) => {
2907
+ var __defProp$4 = Object.defineProperty;
2908
+ var __defProps$4 = Object.defineProperties;
2909
+ var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
2910
+ var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
2911
+ var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
2912
+ var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
2913
+ var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2914
+ var __spreadValues$4 = (a, b) => {
2907
2915
  for (var prop in b || (b = {}))
2908
- if (__hasOwnProp$3.call(b, prop))
2909
- __defNormalProp$3(a, prop, b[prop]);
2910
- if (__getOwnPropSymbols$3)
2911
- for (var prop of __getOwnPropSymbols$3(b)) {
2912
- if (__propIsEnum$3.call(b, prop))
2913
- __defNormalProp$3(a, prop, b[prop]);
2916
+ if (__hasOwnProp$4.call(b, prop))
2917
+ __defNormalProp$4(a, prop, b[prop]);
2918
+ if (__getOwnPropSymbols$4)
2919
+ for (var prop of __getOwnPropSymbols$4(b)) {
2920
+ if (__propIsEnum$4.call(b, prop))
2921
+ __defNormalProp$4(a, prop, b[prop]);
2914
2922
  }
2915
2923
  return a;
2916
2924
  };
2917
- var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
2925
+ var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
2918
2926
  var __objRest = (source, exclude) => {
2919
2927
  var target = {};
2920
2928
  for (var prop in source)
2921
- if (__hasOwnProp$3.call(source, prop) && exclude.indexOf(prop) < 0)
2929
+ if (__hasOwnProp$4.call(source, prop) && exclude.indexOf(prop) < 0)
2922
2930
  target[prop] = source[prop];
2923
- if (source != null && __getOwnPropSymbols$3)
2924
- for (var prop of __getOwnPropSymbols$3(source)) {
2925
- if (exclude.indexOf(prop) < 0 && __propIsEnum$3.call(source, prop))
2931
+ if (source != null && __getOwnPropSymbols$4)
2932
+ for (var prop of __getOwnPropSymbols$4(source)) {
2933
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$4.call(source, prop))
2926
2934
  target[prop] = source[prop];
2927
2935
  }
2928
2936
  return target;
2929
2937
  };
2930
- const useStyles$6 = createStyles((theme, { checked }) => ({
2938
+ const useStyles$8 = createStyles((theme, { checked }) => ({
2931
2939
  button: {
2932
2940
  display: "flex",
2933
2941
  alignItems: "center",
@@ -2969,10 +2977,10 @@ function ImageCheckbox(_a) {
2969
2977
  finalValue: false,
2970
2978
  onChange
2971
2979
  });
2972
- const { classes, cx } = useStyles$6({ checked: value });
2980
+ const { classes, cx } = useStyles$8({ checked: value });
2973
2981
  return /* @__PURE__ */ React.createElement(
2974
2982
  UnstyledButton,
2975
- __spreadProps$3(__spreadValues$3({}, others), {
2983
+ __spreadProps$4(__spreadValues$4({}, others), {
2976
2984
  onClick: () => handleChange(!value),
2977
2985
  className: cx(classes.button, className)
2978
2986
  }),
@@ -2993,7 +3001,7 @@ function ImageCheckbox(_a) {
2993
3001
  function SelectGrid(props) {
2994
3002
  const items = props.items.map((item) => /* @__PURE__ */ React.createElement(
2995
3003
  ImageCheckbox,
2996
- __spreadProps$3(__spreadValues$3({}, item), {
3004
+ __spreadProps$4(__spreadValues$4({}, item), {
2997
3005
  key: item.title,
2998
3006
  onChange: (checked) => props.onChange(item.title, checked)
2999
3007
  })
@@ -3011,26 +3019,26 @@ function SelectGrid(props) {
3011
3019
  );
3012
3020
  }
3013
3021
 
3014
- var __defProp$2 = Object.defineProperty;
3015
- var __defProps$2 = Object.defineProperties;
3016
- var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
3017
- var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
3018
- var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
3019
- var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
3020
- var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3021
- var __spreadValues$2 = (a, b) => {
3022
+ var __defProp$3 = Object.defineProperty;
3023
+ var __defProps$3 = Object.defineProperties;
3024
+ var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
3025
+ var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
3026
+ var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
3027
+ var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
3028
+ var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3029
+ var __spreadValues$3 = (a, b) => {
3022
3030
  for (var prop in b || (b = {}))
3023
- if (__hasOwnProp$2.call(b, prop))
3024
- __defNormalProp$2(a, prop, b[prop]);
3025
- if (__getOwnPropSymbols$2)
3026
- for (var prop of __getOwnPropSymbols$2(b)) {
3027
- if (__propIsEnum$2.call(b, prop))
3028
- __defNormalProp$2(a, prop, b[prop]);
3031
+ if (__hasOwnProp$3.call(b, prop))
3032
+ __defNormalProp$3(a, prop, b[prop]);
3033
+ if (__getOwnPropSymbols$3)
3034
+ for (var prop of __getOwnPropSymbols$3(b)) {
3035
+ if (__propIsEnum$3.call(b, prop))
3036
+ __defNormalProp$3(a, prop, b[prop]);
3029
3037
  }
3030
3038
  return a;
3031
3039
  };
3032
- var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
3033
- const useStyles$5 = createStyles((theme) => ({
3040
+ var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
3041
+ const useStyles$7 = createStyles((theme) => ({
3034
3042
  wrapper: {
3035
3043
  minHeight: "100%",
3036
3044
  boxSizing: "border-box",
@@ -3093,7 +3101,7 @@ const OPTIONS = [
3093
3101
  { description: "project-based learning", title: "Project-Based Learning", icon: IconTools }
3094
3102
  ];
3095
3103
  const TrialRegistration = (props) => {
3096
- const { classes } = useStyles$5();
3104
+ const { classes } = useStyles$7();
3097
3105
  const [firstName, setFirstName] = React.useState("");
3098
3106
  const [lastName, setLastName] = React.useState("");
3099
3107
  const [organization, setOrganization] = React.useState({ organizationId: "", displayName: "" });
@@ -3139,7 +3147,7 @@ const TrialRegistration = (props) => {
3139
3147
  label: "School/Organization Name",
3140
3148
  placeholder: "What's the name of your school?",
3141
3149
  data: props.organizations.map((o) => {
3142
- return __spreadProps$2(__spreadValues$2({}, o), { value: o.displayName });
3150
+ return __spreadProps$3(__spreadValues$3({}, o), { value: o.displayName });
3143
3151
  }),
3144
3152
  onItemSubmit: (item) => setOrganization({ organizationId: item.organizationId, displayName: item.displayName }),
3145
3153
  onChange: (next) => {
@@ -3151,7 +3159,7 @@ const TrialRegistration = (props) => {
3151
3159
  SelectGrid,
3152
3160
  {
3153
3161
  items: OPTIONS,
3154
- onChange: (e, checked) => setInterests(__spreadProps$2(__spreadValues$2({}, interests), { [e]: checked }))
3162
+ onChange: (e, checked) => setInterests(__spreadProps$3(__spreadValues$3({}, interests), { [e]: checked }))
3155
3163
  }
3156
3164
  ), /* @__PURE__ */ React.createElement(Group, { position: "right", mt: "md" }, /* @__PURE__ */ React.createElement(
3157
3165
  Button,
@@ -3189,26 +3197,26 @@ const AdminProvider = (props) => {
3189
3197
  );
3190
3198
  };
3191
3199
 
3192
- var __defProp$1 = Object.defineProperty;
3193
- var __defProps$1 = Object.defineProperties;
3194
- var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
3195
- var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
3196
- var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
3197
- var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
3198
- var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3199
- var __spreadValues$1 = (a, b) => {
3200
+ var __defProp$2 = Object.defineProperty;
3201
+ var __defProps$2 = Object.defineProperties;
3202
+ var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
3203
+ var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
3204
+ var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
3205
+ var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
3206
+ var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3207
+ var __spreadValues$2 = (a, b) => {
3200
3208
  for (var prop in b || (b = {}))
3201
- if (__hasOwnProp$1.call(b, prop))
3202
- __defNormalProp$1(a, prop, b[prop]);
3203
- if (__getOwnPropSymbols$1)
3204
- for (var prop of __getOwnPropSymbols$1(b)) {
3205
- if (__propIsEnum$1.call(b, prop))
3206
- __defNormalProp$1(a, prop, b[prop]);
3209
+ if (__hasOwnProp$2.call(b, prop))
3210
+ __defNormalProp$2(a, prop, b[prop]);
3211
+ if (__getOwnPropSymbols$2)
3212
+ for (var prop of __getOwnPropSymbols$2(b)) {
3213
+ if (__propIsEnum$2.call(b, prop))
3214
+ __defNormalProp$2(a, prop, b[prop]);
3207
3215
  }
3208
3216
  return a;
3209
3217
  };
3210
- var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
3211
- const useStyles$4 = createStyles((theme, props) => ({
3218
+ var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
3219
+ const useStyles$6 = createStyles((theme, props) => ({
3212
3220
  footer: {
3213
3221
  paddingTop: theme.spacing.md,
3214
3222
  paddingBottom: theme.spacing.md,
@@ -3295,7 +3303,7 @@ const useStyles$4 = createStyles((theme, props) => ({
3295
3303
  }
3296
3304
  }));
3297
3305
  const App = (props) => {
3298
- const { classes } = useStyles$4(props);
3306
+ const { classes } = useStyles$6(props);
3299
3307
  const account = useAccount(props.account, props.accounts, props.onAccountChange);
3300
3308
  return /* @__PURE__ */ React.createElement(
3301
3309
  AppShell,
@@ -3303,7 +3311,7 @@ const App = (props) => {
3303
3311
  padding: "xs",
3304
3312
  navbar: props.navbar && /* @__PURE__ */ React.createElement(
3305
3313
  Navbar,
3306
- __spreadProps$1(__spreadValues$1({}, props.navbar.props), {
3314
+ __spreadProps$2(__spreadValues$2({}, props.navbar.props), {
3307
3315
  onSwitchAccounts: account.accounts && account.accounts.length > 1 ? () => account.setChangeModalOpen(true) : void 0
3308
3316
  })
3309
3317
  ),
@@ -3390,7 +3398,7 @@ const useAccount = (account, accounts, onAccountChange) => {
3390
3398
  };
3391
3399
  };
3392
3400
 
3393
- function Table$2(props) {
3401
+ function Table$3(props) {
3394
3402
  if (props.items.length === 0) {
3395
3403
  return /* @__PURE__ */ React.createElement(
3396
3404
  PlaceholderBanner,
@@ -3419,10 +3427,10 @@ function Table$2(props) {
3419
3427
  },
3420
3428
  /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(Text, { size: "sm", weight: 500 }, row.name), /* @__PURE__ */ React.createElement(Text, { size: "xs", color: "dimmed" }, row.description)))
3421
3429
  ))));
3422
- return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$k, { horizontalSpacing: 0, verticalSpacing: 0, sx: { minWidth: 700 } }, /* @__PURE__ */ React.createElement("tbody", null, rows)));
3430
+ return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { horizontalSpacing: 0, verticalSpacing: 0, sx: { minWidth: 700 } }, /* @__PURE__ */ React.createElement("tbody", null, rows)));
3423
3431
  }
3424
3432
 
3425
- const useStyles$3 = createStyles((theme) => ({
3433
+ const useStyles$5 = createStyles((theme) => ({
3426
3434
  title: {
3427
3435
  fontSize: 34,
3428
3436
  fontWeight: 900,
@@ -3435,9 +3443,9 @@ const useStyles$3 = createStyles((theme) => ({
3435
3443
  }
3436
3444
  }));
3437
3445
  const Pathways = (props) => {
3438
- const { classes } = useStyles$3();
3439
- return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$4, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(Badge$1, { variant: "filled", size: "lg" }, "Pathways"), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, "Pathways"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, "Explore all your unique pathway requirements in one clear space"))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(
3440
- Table$2,
3446
+ const { classes } = useStyles$5();
3447
+ return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(Badge$1, { variant: "filled", size: "lg" }, "Pathways"), /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, "Pathways"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, "Explore all your unique pathway requirements in one clear space"))), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(
3448
+ Table$3,
3441
3449
  {
3442
3450
  loading: props.loading,
3443
3451
  items: props.pathways
@@ -3445,7 +3453,7 @@ const Pathways = (props) => {
3445
3453
  ))));
3446
3454
  };
3447
3455
 
3448
- const useStyles$2 = createStyles((theme) => ({
3456
+ const useStyles$4 = createStyles((theme) => ({
3449
3457
  button: {
3450
3458
  borderTopRightRadius: 0,
3451
3459
  borderBottomRightRadius: 0,
@@ -3459,10 +3467,10 @@ const useStyles$2 = createStyles((theme) => ({
3459
3467
  borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
3460
3468
  }
3461
3469
  }));
3462
- const SplitButton = (props) => {
3463
- const { classes, theme } = useStyles$2();
3470
+ const SplitButton$1 = (props) => {
3471
+ const { classes, theme } = useStyles$4();
3464
3472
  theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
3465
- return /* @__PURE__ */ React.createElement(Stack$4, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
3473
+ return /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
3466
3474
  Button,
3467
3475
  {
3468
3476
  component: Link,
@@ -3488,7 +3496,7 @@ const SplitButton = (props) => {
3488
3496
  ));
3489
3497
  };
3490
3498
 
3491
- function Stack(props) {
3499
+ function Stack$1(props) {
3492
3500
  if (props.items.length === 0) {
3493
3501
  return null;
3494
3502
  }
@@ -3496,29 +3504,29 @@ function Stack(props) {
3496
3504
  return /* @__PURE__ */ React.createElement(Grid, { grow: true, gutter: "lg", sx: { padding: 20, minWidth: 700 } }, rows);
3497
3505
  }
3498
3506
 
3499
- var __defProp = Object.defineProperty;
3500
- var __defProps = Object.defineProperties;
3501
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
3502
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3503
- var __hasOwnProp = Object.prototype.hasOwnProperty;
3504
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
3505
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3506
- var __spreadValues = (a, b) => {
3507
+ var __defProp$1 = Object.defineProperty;
3508
+ var __defProps$1 = Object.defineProperties;
3509
+ var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
3510
+ var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
3511
+ var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
3512
+ var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
3513
+ var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3514
+ var __spreadValues$1 = (a, b) => {
3507
3515
  for (var prop in b || (b = {}))
3508
- if (__hasOwnProp.call(b, prop))
3509
- __defNormalProp(a, prop, b[prop]);
3510
- if (__getOwnPropSymbols)
3511
- for (var prop of __getOwnPropSymbols(b)) {
3512
- if (__propIsEnum.call(b, prop))
3513
- __defNormalProp(a, prop, b[prop]);
3516
+ if (__hasOwnProp$1.call(b, prop))
3517
+ __defNormalProp$1(a, prop, b[prop]);
3518
+ if (__getOwnPropSymbols$1)
3519
+ for (var prop of __getOwnPropSymbols$1(b)) {
3520
+ if (__propIsEnum$1.call(b, prop))
3521
+ __defNormalProp$1(a, prop, b[prop]);
3514
3522
  }
3515
3523
  return a;
3516
3524
  };
3517
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
3518
- function Table$1(props) {
3525
+ var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
3526
+ function Table$2(props) {
3519
3527
  const preparedItems = React.useMemo(() => {
3520
3528
  return props.items.map((item) => {
3521
- const flatItem = __spreadProps(__spreadValues({}, item), {
3529
+ const flatItem = __spreadProps$1(__spreadValues$1({}, item), {
3522
3530
  status: item.isComplete ? 1 : 0
3523
3531
  });
3524
3532
  if (item.categoryPoints) {
@@ -3586,13 +3594,13 @@ function Table$1(props) {
3586
3594
  }))
3587
3595
  ],
3588
3596
  rowExpansion: {
3589
- content: ({ record }) => /* @__PURE__ */ React.createElement(Stack, { items: record.badges })
3597
+ content: ({ record }) => /* @__PURE__ */ React.createElement(Stack$1, { items: record.badges })
3590
3598
  }
3591
3599
  }
3592
3600
  ));
3593
3601
  }
3594
3602
 
3595
- const useStyles$1 = createStyles((theme) => ({
3603
+ const useStyles$3 = createStyles((theme) => ({
3596
3604
  th: { padding: "0 !important" },
3597
3605
  control: {
3598
3606
  width: "100%",
@@ -3603,11 +3611,11 @@ const useStyles$1 = createStyles((theme) => ({
3603
3611
  }
3604
3612
  }));
3605
3613
  function Th({ children, reversed, sorted, onSort }) {
3606
- const { classes } = useStyles$1();
3614
+ const { classes } = useStyles$3();
3607
3615
  const Icon = sorted ? reversed ? IconChevronUp : IconChevronDown : IconSelector;
3608
3616
  return /* @__PURE__ */ React.createElement("th", { className: classes.th }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: onSort, className: classes.control }, /* @__PURE__ */ React.createElement(Group, { position: "apart", noWrap: true, spacing: "xs" }, /* @__PURE__ */ React.createElement(Text, { weight: 500, size: "sm", sx: { whiteSpace: "nowrap" } }, children), /* @__PURE__ */ React.createElement(Center, null, /* @__PURE__ */ React.createElement(Icon, { size: 14, stroke: 1.5 })))));
3609
3617
  }
3610
- function Table(props) {
3618
+ function Table$1(props) {
3611
3619
  const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
3612
3620
  if (props.items.length === 0) {
3613
3621
  return /* @__PURE__ */ React.createElement(
@@ -3624,7 +3632,7 @@ function Table(props) {
3624
3632
  const percentageCompletion = Math.round((row.percentageCompletion + Number.EPSILON) * 100);
3625
3633
  return /* @__PURE__ */ React.createElement("tr", { key: row.badgeId }, /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement(Text, { component: Link, to: row.href }, row.badgeName)), /* @__PURE__ */ React.createElement("td", null, percentageCompletion, "%"));
3626
3634
  });
3627
- return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$k, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement(
3635
+ return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(Table$l, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement(
3628
3636
  Th,
3629
3637
  {
3630
3638
  sorted: sortConfig.key === "badgeName",
@@ -3643,7 +3651,7 @@ function Table(props) {
3643
3651
  ))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
3644
3652
  }
3645
3653
 
3646
- const useStyles = createStyles((theme) => ({
3654
+ const useStyles$2 = createStyles((theme) => ({
3647
3655
  title: {
3648
3656
  fontSize: 34,
3649
3657
  fontWeight: 900,
@@ -3656,12 +3664,12 @@ const useStyles = createStyles((theme) => ({
3656
3664
  }
3657
3665
  }));
3658
3666
  const Pathway = (props) => {
3659
- const { classes } = useStyles();
3667
+ const { classes } = useStyles$2();
3660
3668
  const [tab, setTab] = useState("badges");
3661
3669
  const numberOfStudents = props.students.length;
3662
3670
  numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length / numberOfStudents : 0;
3663
3671
  const numberOfBadgesEarned = numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length : 0;
3664
- return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$4, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
3672
+ return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
3665
3673
  Badge$1,
3666
3674
  {
3667
3675
  variant: "filled",
@@ -3669,14 +3677,14 @@ const Pathway = (props) => {
3669
3677
  size: "lg"
3670
3678
  },
3671
3679
  "Back"
3672
- )), /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement(Stack$4, { spacing: 0 }, /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, props.title || "Pathway"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description")), !props.trial && /* @__PURE__ */ React.createElement(Stack$4, { ml: "auto" }, /* @__PURE__ */ React.createElement(
3673
- SplitButton,
3680
+ )), /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, props.title || "Pathway"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description")), !props.trial && /* @__PURE__ */ React.createElement(Stack$5, { ml: "auto" }, /* @__PURE__ */ React.createElement(
3681
+ SplitButton$1,
3674
3682
  {
3675
3683
  href: props.href,
3676
3684
  onCopyLinkClick: props.onCopyLinkClick,
3677
3685
  onExportDataClick: props.onExportDataClick
3678
3686
  }
3679
- ))))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$4, null, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
3687
+ ))))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
3680
3688
  {
3681
3689
  title: props.trial ? "BADGES SUBMITTED" : "PATHWAY COMPLETION",
3682
3690
  value: props.trial ? 0 : numberOfBadgesEarned,
@@ -3697,7 +3705,7 @@ const Pathway = (props) => {
3697
3705
  return { value: g.classId, label: g.name };
3698
3706
  })
3699
3707
  }
3700
- ), /* @__PURE__ */ React.createElement(Stack$4, { spacing: 0 }, !props.trial && /* @__PURE__ */ React.createElement(
3708
+ ), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, !props.trial && /* @__PURE__ */ React.createElement(
3701
3709
  Tabs,
3702
3710
  {
3703
3711
  value: tab,
@@ -3708,13 +3716,13 @@ const Pathway = (props) => {
3708
3716
  onChange: setTab
3709
3717
  }
3710
3718
  ), (!!props.trial || tab === "badges") && /* @__PURE__ */ React.createElement(
3711
- Table,
3719
+ Table$1,
3712
3720
  {
3713
3721
  loading: props.loading,
3714
3722
  items: props.badges
3715
3723
  }
3716
3724
  ), !props.trial && tab === "students" && /* @__PURE__ */ React.createElement(
3717
- Table$1,
3725
+ Table$2,
3718
3726
  {
3719
3727
  loading: props.loading,
3720
3728
  items: props.students,
@@ -3723,5 +3731,210 @@ const Pathway = (props) => {
3723
3731
  )))))));
3724
3732
  };
3725
3733
 
3726
- export { AdminProvider, App, Badge, Badges, Class, Classes, Dashboard, GettingStarted, Home, Lesson, Lessons, Navbar, Organization, Pathway, Pathways, People, StartAnonymousLesson, Student, SwitchAccount, TrialHome, TrialRegistration };
3734
+ const useStyles$1 = createStyles((theme) => ({
3735
+ button: {
3736
+ borderTopRightRadius: 0,
3737
+ borderBottomRightRadius: 0,
3738
+ marginLeft: 0,
3739
+ marginRight: 0
3740
+ },
3741
+ menuControl: {
3742
+ borderTopLeftRadius: 0,
3743
+ borderBottomLeftRadius: 0,
3744
+ border: 0,
3745
+ borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
3746
+ }
3747
+ }));
3748
+ const SplitButton = (props) => {
3749
+ const { classes, theme } = useStyles$1();
3750
+ theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
3751
+ return /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
3752
+ Button,
3753
+ {
3754
+ component: Link,
3755
+ to: props.href,
3756
+ className: classes.button,
3757
+ variant: "gradient"
3758
+ },
3759
+ "Preview"
3760
+ ), /* @__PURE__ */ React.createElement(
3761
+ Button,
3762
+ {
3763
+ leftIcon: /* @__PURE__ */ React.createElement(IconClipboardCopy, { size: 14 }),
3764
+ onClick: props.onCopyLinkClick
3765
+ },
3766
+ "Copy link"
3767
+ ), /* @__PURE__ */ React.createElement(
3768
+ Button,
3769
+ {
3770
+ leftIcon: /* @__PURE__ */ React.createElement(IconTableExport, { size: 14 }),
3771
+ onClick: props.onExportDataClick
3772
+ },
3773
+ "Export data (.csv)"
3774
+ ));
3775
+ };
3776
+
3777
+ function Stack(props) {
3778
+ if (!props.items.length)
3779
+ return null;
3780
+ return /* @__PURE__ */ React.createElement(Grid, { gutter: "md", sx: { padding: 20, minWidth: 700 } }, /* @__PURE__ */ React.createElement(Grid.Col, { span: 6 }, /* @__PURE__ */ React.createElement(Text, { color: "dark.4", weight: "bold", size: "md" }, "By link")), /* @__PURE__ */ React.createElement(Grid.Col, { span: 6 }, /* @__PURE__ */ React.createElement(Text, { color: "dark.4", weight: "bold", size: "md" }, "By badge")), /* @__PURE__ */ React.createElement(Grid.Col, { span: 6 }, /* @__PURE__ */ React.createElement(Text, { color: "dark.4", weight: "bold", size: "md" }, "By Lesson")), /* @__PURE__ */ React.createElement(Grid.Col, { span: 6 }, /* @__PURE__ */ React.createElement(Text, { color: "dark.4", weight: "bold", size: "md" }, "By Question")), props.items.map((row, i) => /* @__PURE__ */ React.createElement(React.Fragment, { key: i }, /* @__PURE__ */ React.createElement(Grid.Col, { span: 6 }, /* @__PURE__ */ React.createElement("a", { href: row.link, target: "_blank", rel: "noopener noreferrer" }, "View File")), /* @__PURE__ */ React.createElement(Grid.Col, { span: 6 }, /* @__PURE__ */ React.createElement(Text, null, row.badgeName)), /* @__PURE__ */ React.createElement(Grid.Col, { span: 6 }, /* @__PURE__ */ React.createElement(Text, null, row.lessonName)), /* @__PURE__ */ React.createElement(Grid.Col, { span: 6 }, /* @__PURE__ */ React.createElement(Text, null, row.question)))));
3781
+ }
3782
+
3783
+ var __defProp = Object.defineProperty;
3784
+ var __defProps = Object.defineProperties;
3785
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
3786
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3787
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
3788
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
3789
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3790
+ var __spreadValues = (a, b) => {
3791
+ for (var prop in b || (b = {}))
3792
+ if (__hasOwnProp.call(b, prop))
3793
+ __defNormalProp(a, prop, b[prop]);
3794
+ if (__getOwnPropSymbols)
3795
+ for (var prop of __getOwnPropSymbols(b)) {
3796
+ if (__propIsEnum.call(b, prop))
3797
+ __defNormalProp(a, prop, b[prop]);
3798
+ }
3799
+ return a;
3800
+ };
3801
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
3802
+ function Table(props) {
3803
+ const preparedItems = React.useMemo(() => {
3804
+ return props.items.map((item) => {
3805
+ var _a;
3806
+ return __spreadProps(__spreadValues({}, item), {
3807
+ submissionCount: ((_a = item.submissions) == null ? void 0 : _a.length) || 0
3808
+ });
3809
+ });
3810
+ }, [props.items]);
3811
+ const { items: sortedItems, requestSort, sortConfig } = useSortableData(preparedItems);
3812
+ if (props.items.length === 0) {
3813
+ return /* @__PURE__ */ React.createElement(
3814
+ PlaceholderBanner,
3815
+ {
3816
+ title: "No files to display",
3817
+ description: "There are no submitted files to display yet.",
3818
+ loading: props.loading,
3819
+ icon: "badges"
3820
+ }
3821
+ );
3822
+ }
3823
+ const sortStatus = {
3824
+ columnAccessor: sortConfig.key,
3825
+ direction: sortConfig.direction === "desc" ? "desc" : "asc"
3826
+ };
3827
+ return /* @__PURE__ */ React.createElement(ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React.createElement(
3828
+ DataTable,
3829
+ {
3830
+ verticalSpacing: "sm",
3831
+ sx: { minWidth: 700 },
3832
+ withBorder: false,
3833
+ borderRadius: "sm",
3834
+ withColumnBorders: true,
3835
+ striped: true,
3836
+ highlightOnHover: true,
3837
+ records: sortedItems,
3838
+ sortStatus,
3839
+ onSortStatusChange: (status) => requestSort(status.columnAccessor),
3840
+ idAccessor: "userId",
3841
+ columns: [{
3842
+ accessor: "name",
3843
+ title: "Student Name",
3844
+ sortable: true,
3845
+ render: (row) => /* @__PURE__ */ React.createElement(Group, { spacing: "sm" }, /* @__PURE__ */ React.createElement(Avatar, { size: 40, src: row.avatar, radius: 40 }), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(Text, { size: "sm", weight: 500 }, row.name), /* @__PURE__ */ React.createElement(Text, { size: "xs", color: "dimmed" }, row.email)))
3846
+ }, {
3847
+ accessor: "submissionCount",
3848
+ title: "Files",
3849
+ sortable: true,
3850
+ render: (row) => row.submissions.length
3851
+ }],
3852
+ rowExpansion: {
3853
+ content: ({ record }) => /* @__PURE__ */ React.createElement(Stack, { items: record.submissions })
3854
+ }
3855
+ }
3856
+ ));
3857
+ }
3858
+
3859
+ const useStyles = createStyles((theme) => ({
3860
+ title: {
3861
+ fontSize: 34,
3862
+ fontWeight: 900,
3863
+ [theme.fn.smallerThan("sm")]: {
3864
+ fontSize: 24
3865
+ }
3866
+ },
3867
+ description: {
3868
+ maxWidth: 600
3869
+ }
3870
+ }));
3871
+ const FileLocker = (props) => {
3872
+ const { classes } = useStyles();
3873
+ const [tab, setTab] = useState("students");
3874
+ props.students.length;
3875
+ const numberOfFiles = props.students.reduce(
3876
+ (acc, s) => {
3877
+ var _a;
3878
+ return acc + (((_a = s.submissions) == null ? void 0 : _a.length) || 0);
3879
+ },
3880
+ 0
3881
+ );
3882
+ return /* @__PURE__ */ React.createElement(Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React.createElement(Stack$5, { spacing: "md" }, /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(Grid.Col, { sm: "auto" }, /* @__PURE__ */ React.createElement(UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React.createElement(
3883
+ Badge$1,
3884
+ {
3885
+ variant: "filled",
3886
+ leftSection: /* @__PURE__ */ React.createElement(ActionIcon, { color: "blue", size: "xs", radius: "xl", variant: "filled" }, /* @__PURE__ */ React.createElement(IconArrowLeft, { size: 14 })),
3887
+ size: "lg"
3888
+ },
3889
+ "Back"
3890
+ )), /* @__PURE__ */ React.createElement(Group, null, /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(Title, { order: 2, className: classes.title, mt: "md" }, props.displayName || "File"), /* @__PURE__ */ React.createElement(Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description")), !props.trial && /* @__PURE__ */ React.createElement(Stack$5, { ml: "auto" }, /* @__PURE__ */ React.createElement(
3891
+ SplitButton,
3892
+ {
3893
+ href: props.href,
3894
+ onCopyLinkClick: props.onCopyLinkClick,
3895
+ onExportDataClick: props.onExportDataClick
3896
+ }
3897
+ ))))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(StatsGroup, { data: [
3898
+ {
3899
+ title: props.trial ? "LESSONS SUBMITTED" : "FILES",
3900
+ value: props.trial ? props.lessonsCompleted || 0 : numberOfFiles,
3901
+ unit: props.trial ? "" : ""
3902
+ }
3903
+ ] }), !props.trial && /* @__PURE__ */ React.createElement(
3904
+ Select,
3905
+ {
3906
+ clearable: true,
3907
+ clearButtonLabel: "Clear class selection",
3908
+ size: "sm",
3909
+ placeholder: "Select a class",
3910
+ nothingFound: "No options",
3911
+ value: props.classId,
3912
+ onChange: props.onClassChange,
3913
+ icon: /* @__PURE__ */ React.createElement(IconCategory2, null),
3914
+ data: props.classes.map((g) => {
3915
+ return { value: g.classId, label: g.name };
3916
+ })
3917
+ }
3918
+ ), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, !props.trial && /* @__PURE__ */ React.createElement(
3919
+ Tabs,
3920
+ {
3921
+ value: tab,
3922
+ data: [
3923
+ { label: "By student", value: "students" },
3924
+ { label: "By pathway", value: "pathways" },
3925
+ { label: "By badge", value: "badges" },
3926
+ { label: "By lesson", value: "lessons" }
3927
+ ],
3928
+ onChange: setTab
3929
+ }
3930
+ ), !props.trial && tab === "students" && /* @__PURE__ */ React.createElement(
3931
+ Table,
3932
+ {
3933
+ loading: props.loading,
3934
+ items: props.students
3935
+ }
3936
+ )))))));
3937
+ };
3938
+
3939
+ export { AdminProvider, App, Badge, Badges, Class, Classes, Dashboard, FileLocker, GettingStarted, Home, Lesson, Lessons, Navbar, Organization, Pathway, Pathways, People, StartAnonymousLesson, Student, SwitchAccount, TrialHome, TrialRegistration };
3727
3940
  //# sourceMappingURL=index.mjs.map