@local-civics/mgmt-ui 0.1.191 → 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,6 +1,6 @@
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';
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
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';
@@ -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",
@@ -282,7 +282,7 @@ const TRIAL_PAGES = [
282
282
  "Badges"
283
283
  ];
284
284
  function Navbar(props) {
285
- const { classes, cx } = useStyles$u();
285
+ const { classes, cx } = useStyles$w();
286
286
  const [burgerOpen, setBurgerOpen] = React.useState(false);
287
287
  const toggle = () => setBurgerOpen(!burgerOpen);
288
288
  const links = data.map((item) => {
@@ -295,12 +295,12 @@ function Navbar(props) {
295
295
  }
296
296
  return /* @__PURE__ */ React.createElement(
297
297
  LinksGroup,
298
- __spreadProps$8(__spreadValues$b(__spreadValues$b({
298
+ __spreadProps$9(__spreadValues$c(__spreadValues$c({
299
299
  key: item.label,
300
300
  active: props.active
301
301
  }, item), context), {
302
302
  links: (item.links || []).map((link) => {
303
- 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: "" });
304
304
  })
305
305
  })
306
306
  );
@@ -325,7 +325,7 @@ function Navbar(props) {
325
325
  } }, /* @__PURE__ */ React.createElement(IconLogout, { className: classes.linkIcon, stroke: 1.5 }), /* @__PURE__ */ React.createElement("span", null, "Logout"))))));
326
326
  }
327
327
 
328
- const useStyles$t = createStyles((theme) => ({
328
+ const useStyles$v = createStyles((theme) => ({
329
329
  inner: {
330
330
  paddingTop: theme.spacing.xl,
331
331
  paddingBottom: theme.spacing.xl * 4
@@ -361,7 +361,7 @@ const useStyles$t = createStyles((theme) => ({
361
361
  }
362
362
  }));
363
363
  const GettingStarted = (props) => {
364
- const { classes } = useStyles$t();
364
+ const { classes } = useStyles$v();
365
365
  return /* @__PURE__ */ React.createElement(
366
366
  Modal,
367
367
  {
@@ -375,7 +375,7 @@ const GettingStarted = (props) => {
375
375
  );
376
376
  };
377
377
 
378
- const useStyles$s = createStyles((theme) => ({
378
+ const useStyles$u = createStyles((theme) => ({
379
379
  title: {
380
380
  fontSize: 34,
381
381
  fontWeight: 900,
@@ -416,7 +416,7 @@ const useStyles$s = createStyles((theme) => ({
416
416
  }
417
417
  }));
418
418
  const SwitchAccount = (props) => {
419
- const { classes, theme } = useStyles$s();
419
+ const { classes, theme } = useStyles$u();
420
420
  const options = props.accounts.map((a) => {
421
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")));
422
422
  });
@@ -433,7 +433,7 @@ const SwitchAccount = (props) => {
433
433
  );
434
434
  };
435
435
 
436
- const useStyles$r = createStyles((theme) => ({
436
+ const useStyles$t = createStyles((theme) => ({
437
437
  root: {
438
438
  display: "flex",
439
439
  backgroundImage: `linear-gradient(-60deg, ${theme.colors[theme.primaryColor][4]} 0%, ${theme.colors[theme.primaryColor][7]} 100%)`,
@@ -477,7 +477,7 @@ const useStyles$r = createStyles((theme) => ({
477
477
  }
478
478
  }));
479
479
  const StatsGroup = ({ data, footer }) => {
480
- const { classes } = useStyles$r();
480
+ const { classes } = useStyles$t();
481
481
  const stats = data.map((stat) => {
482
482
  const value = (() => {
483
483
  if (stat.unit === "%") {
@@ -497,7 +497,7 @@ const Tabs = (props) => {
497
497
  return /* @__PURE__ */ React.createElement(Tabs$1, { value: props.value, onTabChange: props.onChange }, /* @__PURE__ */ React.createElement(Tabs$1.List, null, tabs));
498
498
  };
499
499
 
500
- const useStyles$q = createStyles((theme) => ({
500
+ const useStyles$s = createStyles((theme) => ({
501
501
  button: {
502
502
  borderTopRightRadius: 0,
503
503
  borderBottomRightRadius: 0,
@@ -511,10 +511,10 @@ const useStyles$q = createStyles((theme) => ({
511
511
  borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
512
512
  }
513
513
  }));
514
- const SplitButton$4 = (props) => {
515
- const { classes, theme } = useStyles$q();
514
+ const SplitButton$5 = (props) => {
515
+ const { classes, theme } = useStyles$s();
516
516
  theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
517
- return /* @__PURE__ */ React.createElement(Stack$4, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
517
+ return /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
518
518
  Button,
519
519
  {
520
520
  component: Link,
@@ -540,7 +540,7 @@ const SplitButton$4 = (props) => {
540
540
  ));
541
541
  };
542
542
 
543
- const useStyles$p = createStyles((theme) => ({
543
+ const useStyles$r = createStyles((theme) => ({
544
544
  wrapper: {
545
545
  display: "flex",
546
546
  alignItems: "center",
@@ -591,13 +591,13 @@ const useStyles$p = createStyles((theme) => ({
591
591
  }
592
592
  }));
593
593
  const PlaceholderBanner = (props) => {
594
- const { classes } = useStyles$p();
594
+ const { classes } = useStyles$r();
595
595
  const title = props.title || "Nothing to display";
596
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.";
597
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 }));
598
598
  };
599
599
 
600
- function Stack$3(props) {
600
+ function Stack$4(props) {
601
601
  if (props.items.length === 0) {
602
602
  return null;
603
603
  }
@@ -645,28 +645,28 @@ function useSortableData(items, config = { key: "", direction: null }) {
645
645
  return { items: sortedItems, requestSort, sortConfig };
646
646
  }
647
647
 
648
- var __defProp$a = Object.defineProperty;
649
- var __defProps$7 = Object.defineProperties;
650
- var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;
651
- var __getOwnPropSymbols$a = Object.getOwnPropertySymbols;
652
- var __hasOwnProp$a = Object.prototype.hasOwnProperty;
653
- var __propIsEnum$a = Object.prototype.propertyIsEnumerable;
654
- var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
655
- 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) => {
656
656
  for (var prop in b || (b = {}))
657
- if (__hasOwnProp$a.call(b, prop))
658
- __defNormalProp$a(a, prop, b[prop]);
659
- if (__getOwnPropSymbols$a)
660
- for (var prop of __getOwnPropSymbols$a(b)) {
661
- if (__propIsEnum$a.call(b, prop))
662
- __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]);
663
663
  }
664
664
  return a;
665
665
  };
666
- var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
667
- function Table$j(props) {
666
+ var __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));
667
+ function Table$k(props) {
668
668
  const preparedItems = React.useMemo(() => {
669
- return props.items.map((item) => __spreadProps$7(__spreadValues$a({}, item), {
669
+ return props.items.map((item) => __spreadProps$8(__spreadValues$b({}, item), {
670
670
  status: item.isComplete ? 1 : 0
671
671
  }));
672
672
  }, [props.items]);
@@ -712,13 +712,13 @@ function Table$j(props) {
712
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"))
713
713
  }],
714
714
  rowExpansion: {
715
- content: ({ record }) => /* @__PURE__ */ React.createElement(Stack$3, { items: record.lessons })
715
+ content: ({ record }) => /* @__PURE__ */ React.createElement(Stack$4, { items: record.lessons })
716
716
  }
717
717
  }
718
718
  ));
719
719
  }
720
720
 
721
- function Table$i(props) {
721
+ function Table$j(props) {
722
722
  const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
723
723
  if (props.items.length === 0) {
724
724
  return /* @__PURE__ */ React.createElement(
@@ -763,7 +763,7 @@ function Table$i(props) {
763
763
  ));
764
764
  }
765
765
 
766
- const useStyles$o = createStyles((theme) => ({
766
+ const useStyles$q = createStyles((theme) => ({
767
767
  title: {
768
768
  fontSize: 34,
769
769
  fontWeight: 900,
@@ -776,12 +776,12 @@ const useStyles$o = createStyles((theme) => ({
776
776
  }
777
777
  }));
778
778
  const Badge = (props) => {
779
- const { classes } = useStyles$o();
779
+ const { classes } = useStyles$q();
780
780
  const [tab, setTab] = useState("lessons");
781
781
  const numberOfStudents = props.students.length;
782
782
  const numberOfBadges = numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length : 0;
783
783
  numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length / numberOfStudents : 0;
784
- 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(
785
785
  Badge$1,
786
786
  {
787
787
  variant: "filled",
@@ -789,14 +789,14 @@ const Badge = (props) => {
789
789
  size: "lg"
790
790
  },
791
791
  "Back"
792
- )), /* @__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(
793
- 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,
794
794
  {
795
795
  href: props.href,
796
796
  onCopyLinkClick: props.onCopyLinkClick,
797
797
  onExportDataClick: props.onExportDataClick
798
798
  }
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$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: [
800
800
  {
801
801
  title: props.trial ? "LESSONS SUBMITTED" : "BADGE COMPLETION",
802
802
  value: props.trial ? props.lessonsCompleted || 0 : numberOfBadges,
@@ -817,7 +817,7 @@ const Badge = (props) => {
817
817
  return { value: g.classId, label: g.name };
818
818
  })
819
819
  }
820
- ), /* @__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(
821
821
  Tabs,
822
822
  {
823
823
  value: tab,
@@ -828,13 +828,13 @@ const Badge = (props) => {
828
828
  onChange: setTab
829
829
  }
830
830
  ), (!!props.trial || tab === "lessons") && /* @__PURE__ */ React.createElement(
831
- Table$i,
831
+ Table$j,
832
832
  {
833
833
  loading: props.loading,
834
834
  items: props.lessons
835
835
  }
836
836
  ), !props.trial && tab === "students" && /* @__PURE__ */ React.createElement(
837
- Table$j,
837
+ Table$k,
838
838
  {
839
839
  loading: props.loading,
840
840
  items: props.students
@@ -842,7 +842,7 @@ const Badge = (props) => {
842
842
  )))))));
843
843
  };
844
844
 
845
- function Table$h(props) {
845
+ function Table$i(props) {
846
846
  if (props.items.length === 0) {
847
847
  return /* @__PURE__ */ React.createElement(
848
848
  PlaceholderBanner,
@@ -871,10 +871,10 @@ function Table$h(props) {
871
871
  },
872
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)))
873
873
  ))));
874
- 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)));
875
875
  }
876
876
 
877
- const useStyles$n = createStyles((theme) => ({
877
+ const useStyles$p = createStyles((theme) => ({
878
878
  title: {
879
879
  fontSize: 34,
880
880
  fontWeight: 900,
@@ -887,8 +887,8 @@ const useStyles$n = createStyles((theme) => ({
887
887
  }
888
888
  }));
889
889
  const Badges = (props) => {
890
- const { classes } = useStyles$n();
891
- 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(
892
892
  Autocomplete,
893
893
  {
894
894
  placeholder: "Search for a badge that fits your needs",
@@ -896,7 +896,7 @@ const Badges = (props) => {
896
896
  onChange: props.onAutocompleteChange
897
897
  }
898
898
  ), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(
899
- Table$h,
899
+ Table$i,
900
900
  {
901
901
  loading: props.loading,
902
902
  items: props.badges
@@ -904,7 +904,7 @@ const Badges = (props) => {
904
904
  ))));
905
905
  };
906
906
 
907
- function Table$g(props) {
907
+ function Table$h(props) {
908
908
  if (props.items.length === 0) {
909
909
  return /* @__PURE__ */ React.createElement(
910
910
  PlaceholderBanner,
@@ -917,7 +917,7 @@ function Table$g(props) {
917
917
  );
918
918
  }
919
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)));
920
- 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)));
921
921
  }
922
922
 
923
923
  const units = [
@@ -944,7 +944,7 @@ function relativeTimeFromElapsed(elapsed) {
944
944
  return "";
945
945
  }
946
946
 
947
- function Table$f(props) {
947
+ function Table$g(props) {
948
948
  if (props.items.length === 0) {
949
949
  return /* @__PURE__ */ React.createElement(
950
950
  PlaceholderBanner,
@@ -957,10 +957,10 @@ function Table$f(props) {
957
957
  );
958
958
  }
959
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)))));
960
- 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)));
961
961
  }
962
962
 
963
- function Table$e(props) {
963
+ function Table$f(props) {
964
964
  if (props.items.length === 0) {
965
965
  return /* @__PURE__ */ React.createElement(
966
966
  PlaceholderBanner,
@@ -973,10 +973,10 @@ function Table$e(props) {
973
973
  );
974
974
  }
975
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)));
976
- 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)));
977
977
  }
978
978
 
979
- function Table$d(props) {
979
+ function Table$e(props) {
980
980
  if (props.items.length === 0) {
981
981
  return /* @__PURE__ */ React.createElement(
982
982
  PlaceholderBanner,
@@ -989,10 +989,10 @@ function Table$d(props) {
989
989
  );
990
990
  }
991
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), "%")));
992
- 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)));
993
993
  }
994
994
 
995
- function Table$c(props) {
995
+ function Table$d(props) {
996
996
  if (props.items.length === 0) {
997
997
  return /* @__PURE__ */ React.createElement(
998
998
  PlaceholderBanner,
@@ -1005,12 +1005,12 @@ function Table$c(props) {
1005
1005
  );
1006
1006
  }
1007
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), "%")));
1008
- 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)));
1009
1009
  }
1010
1010
 
1011
1011
  const Dashboard = (props) => {
1012
1012
  const [tab, setTab] = useState("students");
1013
- 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: [
1014
1014
  {
1015
1015
  title: "# OF STUDENTS",
1016
1016
  value: props.students.length
@@ -1043,7 +1043,7 @@ const Dashboard = (props) => {
1043
1043
  return { value: g.classId, label: g.name };
1044
1044
  })
1045
1045
  }
1046
- ), /* @__PURE__ */ React.createElement(Stack$4, { spacing: 0 }, /* @__PURE__ */ React.createElement(
1046
+ ), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(
1047
1047
  Tabs,
1048
1048
  {
1049
1049
  value: tab,
@@ -1057,33 +1057,33 @@ const Dashboard = (props) => {
1057
1057
  onChange: setTab
1058
1058
  }
1059
1059
  ), tab === "impact" && /* @__PURE__ */ React.createElement(
1060
- Table$e,
1060
+ Table$f,
1061
1061
  {
1062
1062
  loading: props.loading,
1063
1063
  items: props.impacts
1064
1064
  }
1065
1065
  ), tab === "reflections" && /* @__PURE__ */ React.createElement(
1066
- Table$f,
1066
+ Table$g,
1067
1067
  {
1068
1068
  loading: props.loading,
1069
1069
  items: props.reflections
1070
1070
  }
1071
1071
  ), tab === "badges" && /* @__PURE__ */ React.createElement(
1072
- Table$d,
1072
+ Table$e,
1073
1073
  {
1074
1074
  loading: props.loading,
1075
1075
  items: props.badges,
1076
1076
  onClick: props.onBadgeClick
1077
1077
  }
1078
1078
  ), tab === "lessons" && /* @__PURE__ */ React.createElement(
1079
- Table$c,
1079
+ Table$d,
1080
1080
  {
1081
1081
  loading: props.loading,
1082
1082
  items: props.lessons,
1083
1083
  onClick: props.onLessonClick
1084
1084
  }
1085
1085
  ), tab === "students" && /* @__PURE__ */ React.createElement(
1086
- Table$g,
1086
+ Table$h,
1087
1087
  {
1088
1088
  loading: props.loading,
1089
1089
  items: props.students,
@@ -1092,8 +1092,8 @@ const Dashboard = (props) => {
1092
1092
  )))))));
1093
1093
  };
1094
1094
 
1095
- const SplitButton$3 = (props) => {
1096
- 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(
1097
1097
  Button,
1098
1098
  {
1099
1099
  leftIcon: /* @__PURE__ */ React.createElement(IconPlaylistAdd, { size: 14 }),
@@ -1117,7 +1117,7 @@ const SplitButton$3 = (props) => {
1117
1117
  ));
1118
1118
  };
1119
1119
 
1120
- const useStyles$m = createStyles((theme) => ({
1120
+ const useStyles$o = createStyles((theme) => ({
1121
1121
  th: { padding: "0 !important" },
1122
1122
  control: {
1123
1123
  width: "100%",
@@ -1128,11 +1128,11 @@ const useStyles$m = createStyles((theme) => ({
1128
1128
  }
1129
1129
  }));
1130
1130
  function Th$2({ children, reversed, sorted, onSort }) {
1131
- const { classes } = useStyles$m();
1131
+ const { classes } = useStyles$o();
1132
1132
  const Icon = sorted ? reversed ? IconChevronUp : IconChevronDown : IconSelector;
1133
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 })))));
1134
1134
  }
1135
- function Table$b(props) {
1135
+ function Table$c(props) {
1136
1136
  const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
1137
1137
  if (props.items.length === 0) {
1138
1138
  return /* @__PURE__ */ React.createElement(
@@ -1162,7 +1162,7 @@ function Table$b(props) {
1162
1162
  data: [{ value: "student", label: "Student" }, { value: "educator", label: "Educator" }]
1163
1163
  }
1164
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 }))))));
1165
- 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(
1166
1166
  Th$2,
1167
1167
  {
1168
1168
  sorted: sortConfig.key === "givenName",
@@ -1213,26 +1213,26 @@ function Table$b(props) {
1213
1213
  ), /* @__PURE__ */ React.createElement("th", null), " ")), /* @__PURE__ */ React.createElement("tbody", null, rows)));
1214
1214
  }
1215
1215
 
1216
- var __defProp$9 = Object.defineProperty;
1217
- var __defProps$6 = Object.defineProperties;
1218
- var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;
1219
- var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;
1220
- var __hasOwnProp$9 = Object.prototype.hasOwnProperty;
1221
- var __propIsEnum$9 = Object.prototype.propertyIsEnumerable;
1222
- var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1223
- 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) => {
1224
1224
  for (var prop in b || (b = {}))
1225
- if (__hasOwnProp$9.call(b, prop))
1226
- __defNormalProp$9(a, prop, b[prop]);
1227
- if (__getOwnPropSymbols$9)
1228
- for (var prop of __getOwnPropSymbols$9(b)) {
1229
- if (__propIsEnum$9.call(b, prop))
1230
- __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]);
1231
1231
  }
1232
1232
  return a;
1233
1233
  };
1234
- var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
1235
- const useStyles$l = createStyles((theme) => ({
1234
+ var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
1235
+ const useStyles$n = createStyles((theme) => ({
1236
1236
  title: {
1237
1237
  fontSize: 34,
1238
1238
  fontWeight: 900,
@@ -1265,7 +1265,7 @@ const useStyles$l = createStyles((theme) => ({
1265
1265
  }
1266
1266
  }));
1267
1267
  const Class = (props) => {
1268
- const { classes } = useStyles$l();
1268
+ const { classes } = useStyles$n();
1269
1269
  const form = useForm({
1270
1270
  initialValues: {
1271
1271
  classId: "",
@@ -1297,32 +1297,32 @@ const Class = (props) => {
1297
1297
  padding: "xl",
1298
1298
  size: "xl"
1299
1299
  },
1300
- /* @__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(() => {
1301
1301
  const values = form.values;
1302
1302
  form.reset();
1303
1303
  setOpened(false);
1304
1304
  props.onCreateMembers && props.onCreateMembers([values]);
1305
- }) }, /* @__PURE__ */ React.createElement(Stack$4, null, /* @__PURE__ */ React.createElement(
1305
+ }) }, /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(
1306
1306
  TextInput,
1307
- __spreadValues$9({
1307
+ __spreadValues$a({
1308
1308
  withAsterisk: true,
1309
1309
  label: "Email",
1310
1310
  placeholder: "Email"
1311
1311
  }, form.getInputProps("email"))
1312
1312
  ), /* @__PURE__ */ React.createElement(Group, { grow: true }, /* @__PURE__ */ React.createElement(
1313
1313
  TextInput,
1314
- __spreadValues$9({
1314
+ __spreadValues$a({
1315
1315
  label: "Given name",
1316
1316
  placeholder: "Given name"
1317
1317
  }, form.getInputProps("givenName"))
1318
1318
  ), /* @__PURE__ */ React.createElement(
1319
1319
  TextInput,
1320
- __spreadValues$9({
1320
+ __spreadValues$a({
1321
1321
  label: "Family name",
1322
1322
  placeholder: "Family name"
1323
1323
  }, form.getInputProps("familyName"))
1324
1324
  )), /* @__PURE__ */ React.createElement(Button, { type: "submit", fullWidth: true, mt: "md" }, "Submit"))))
1325
- ), /* @__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(
1326
1326
  Badge$1,
1327
1327
  {
1328
1328
  variant: "filled",
@@ -1331,13 +1331,13 @@ const Class = (props) => {
1331
1331
  },
1332
1332
  "Back"
1333
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(
1334
- SplitButton$3,
1334
+ SplitButton$4,
1335
1335
  {
1336
1336
  onAddMembersClick: () => setOpened(true),
1337
1337
  onCopyClassLinkClick: props.onCopyLinkClick,
1338
1338
  onExportDataClick: props.onExportDataClick
1339
1339
  }
1340
- ))), /* @__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: [
1341
1341
  {
1342
1342
  title: "# OF STUDENTS",
1343
1343
  value: props.members.filter((a) => !a.isAdmin).length
@@ -1356,7 +1356,7 @@ const Class = (props) => {
1356
1356
  value: props.numberOfLessonsCompleted
1357
1357
  }
1358
1358
  ] }), /* @__PURE__ */ React.createElement(
1359
- Table$b,
1359
+ Table$c,
1360
1360
  {
1361
1361
  loading: props.loading,
1362
1362
  items: props.members,
@@ -1366,7 +1366,7 @@ const Class = (props) => {
1366
1366
  ))))));
1367
1367
  };
1368
1368
  const DropzoneButton$1 = (props) => {
1369
- const { classes, theme } = useStyles$l();
1369
+ const { classes, theme } = useStyles$n();
1370
1370
  const openRef = React.useRef(null);
1371
1371
  const [loading, setLoading] = React.useState(false);
1372
1372
  const onDrop = React.useCallback((acceptedFiles) => {
@@ -1412,7 +1412,7 @@ const DropzoneButton$1 = (props) => {
1412
1412
  } }, "Select file"));
1413
1413
  };
1414
1414
 
1415
- const useStyles$k = createStyles((theme) => ({
1415
+ const useStyles$m = createStyles((theme) => ({
1416
1416
  th: { padding: "0 !important" },
1417
1417
  control: {
1418
1418
  width: "100%",
@@ -1423,11 +1423,11 @@ const useStyles$k = createStyles((theme) => ({
1423
1423
  }
1424
1424
  }));
1425
1425
  function Th$1({ children, reversed, sorted, onSort }) {
1426
- const { classes } = useStyles$k();
1426
+ const { classes } = useStyles$m();
1427
1427
  const Icon = sorted ? reversed ? IconChevronUp : IconChevronDown : IconSelector;
1428
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 })))));
1429
1429
  }
1430
- function Table$a(props) {
1430
+ function Table$b(props) {
1431
1431
  const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
1432
1432
  if (props.items.length === 0) {
1433
1433
  return /* @__PURE__ */ React.createElement(
@@ -1449,7 +1449,7 @@ function Table$a(props) {
1449
1449
  onConfirm: () => props.onDeleteClass(group)
1450
1450
  });
1451
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 }))))));
1452
- 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(
1453
1453
  Th$1,
1454
1454
  {
1455
1455
  sorted: sortConfig.key === "name",
@@ -1468,23 +1468,23 @@ function Table$a(props) {
1468
1468
  ), /* @__PURE__ */ React.createElement("th", null))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
1469
1469
  }
1470
1470
 
1471
- var __defProp$8 = Object.defineProperty;
1472
- var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;
1473
- var __hasOwnProp$8 = Object.prototype.hasOwnProperty;
1474
- var __propIsEnum$8 = Object.prototype.propertyIsEnumerable;
1475
- var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1476
- 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) => {
1477
1477
  for (var prop in b || (b = {}))
1478
- if (__hasOwnProp$8.call(b, prop))
1479
- __defNormalProp$8(a, prop, b[prop]);
1480
- if (__getOwnPropSymbols$8)
1481
- for (var prop of __getOwnPropSymbols$8(b)) {
1482
- if (__propIsEnum$8.call(b, prop))
1483
- __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]);
1484
1484
  }
1485
1485
  return a;
1486
1486
  };
1487
- const useStyles$j = createStyles((theme) => ({
1487
+ const useStyles$l = createStyles((theme) => ({
1488
1488
  title: {
1489
1489
  fontSize: 34,
1490
1490
  fontWeight: 900,
@@ -1497,7 +1497,7 @@ const useStyles$j = createStyles((theme) => ({
1497
1497
  }
1498
1498
  }));
1499
1499
  const Classes = (props) => {
1500
- const { classes } = useStyles$j();
1500
+ const { classes } = useStyles$l();
1501
1501
  const form = useForm({
1502
1502
  initialValues: {
1503
1503
  classId: "",
@@ -1525,28 +1525,28 @@ const Classes = (props) => {
1525
1525
  form.reset();
1526
1526
  setOpened(false);
1527
1527
  props.onCreateClass && props.onCreateClass(values);
1528
- }) }, /* @__PURE__ */ React.createElement(Stack$4, null, /* @__PURE__ */ React.createElement(
1528
+ }) }, /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(
1529
1529
  TextInput,
1530
- __spreadValues$8({
1530
+ __spreadValues$9({
1531
1531
  withAsterisk: true,
1532
1532
  label: "Name",
1533
1533
  placeholder: "Class name"
1534
1534
  }, form.getInputProps("name"))
1535
1535
  ), /* @__PURE__ */ React.createElement(
1536
1536
  TextInput,
1537
- __spreadValues$8({
1537
+ __spreadValues$9({
1538
1538
  label: "Description",
1539
1539
  placeholder: "A class for my first period English students"
1540
1540
  }, form.getInputProps("description"))
1541
1541
  )), /* @__PURE__ */ React.createElement(Button, { type: "submit", fullWidth: true, mt: "md" }, "Submit"))
1542
- ), /* @__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(
1543
1543
  Button,
1544
1544
  {
1545
1545
  onClick: () => setOpened(true),
1546
1546
  leftIcon: /* @__PURE__ */ React.createElement(IconPlaylistAdd, { size: 14 })
1547
1547
  },
1548
1548
  "Create class"
1549
- ))), /* @__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: [
1550
1550
  {
1551
1551
  title: "# OF CLASSES",
1552
1552
  value: props.classes.length
@@ -1559,7 +1559,7 @@ const Classes = (props) => {
1559
1559
  onChange: props.onAutocompleteChange
1560
1560
  }
1561
1561
  ), /* @__PURE__ */ React.createElement(
1562
- Table$a,
1562
+ Table$b,
1563
1563
  {
1564
1564
  loading: props.loading,
1565
1565
  items: props.classes,
@@ -1568,7 +1568,7 @@ const Classes = (props) => {
1568
1568
  ))))));
1569
1569
  };
1570
1570
 
1571
- const useStyles$i = createStyles((theme) => ({
1571
+ const useStyles$k = createStyles((theme) => ({
1572
1572
  title: {
1573
1573
  fontSize: 34,
1574
1574
  fontWeight: 900,
@@ -1582,11 +1582,11 @@ const useStyles$i = createStyles((theme) => ({
1582
1582
  }
1583
1583
  }));
1584
1584
  const UserInfo = (props) => {
1585
- const { classes } = useStyles$i();
1585
+ const { classes } = useStyles$k();
1586
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));
1587
1587
  };
1588
1588
 
1589
- function Table$9(props) {
1589
+ function Table$a(props) {
1590
1590
  if (props.items.length === 0) {
1591
1591
  return /* @__PURE__ */ React.createElement(
1592
1592
  PlaceholderBanner,
@@ -1622,7 +1622,7 @@ function Table$9(props) {
1622
1622
  ));
1623
1623
  }
1624
1624
 
1625
- function Table$8(props) {
1625
+ function Table$9(props) {
1626
1626
  if (props.items.length === 0) {
1627
1627
  return /* @__PURE__ */ React.createElement(
1628
1628
  PlaceholderBanner,
@@ -1635,10 +1635,10 @@ function Table$8(props) {
1635
1635
  );
1636
1636
  }
1637
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(","))));
1638
- 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)));
1639
1639
  }
1640
1640
 
1641
- function Table$7(props) {
1641
+ function Table$8(props) {
1642
1642
  if (props.items.length === 0) {
1643
1643
  return /* @__PURE__ */ React.createElement(
1644
1644
  PlaceholderBanner,
@@ -1651,14 +1651,14 @@ function Table$7(props) {
1651
1651
  );
1652
1652
  }
1653
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())));
1654
- 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)));
1655
1655
  }
1656
1656
 
1657
1657
  const Student = (props) => {
1658
1658
  const [tab, setTab] = useState("badges");
1659
1659
  const numberOfBadgesCompleted = props.badges.length > 0 ? props.badges.filter((b) => b.isComplete).length : 0;
1660
1660
  const TEMPORARY_numberOfLessonsCompleted = props.lessons.filter((l) => l.isComplete).length;
1661
- 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(
1662
1662
  Badge$1,
1663
1663
  {
1664
1664
  variant: "filled",
@@ -1673,7 +1673,7 @@ const Student = (props) => {
1673
1673
  name: props.name,
1674
1674
  impactStatement: props.impactStatement
1675
1675
  }
1676
- ))), /* @__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: [
1677
1677
  {
1678
1678
  title: "PROBLEMS SOLVED",
1679
1679
  value: props.numberOfProblemsSolved
@@ -1688,7 +1688,7 @@ const Student = (props) => {
1688
1688
  value: numberOfBadgesCompleted,
1689
1689
  unit: ""
1690
1690
  }
1691
- ] }), /* @__PURE__ */ React.createElement(Stack$4, { spacing: 0 }, /* @__PURE__ */ React.createElement(
1691
+ ] }), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(
1692
1692
  Tabs,
1693
1693
  {
1694
1694
  value: tab,
@@ -1700,19 +1700,19 @@ const Student = (props) => {
1700
1700
  onChange: setTab
1701
1701
  }
1702
1702
  ), tab === "badges" && /* @__PURE__ */ React.createElement(
1703
- Table$9,
1703
+ Table$a,
1704
1704
  {
1705
1705
  loading: props.loading,
1706
1706
  items: props.badges
1707
1707
  }
1708
1708
  ), tab === "answers" && /* @__PURE__ */ React.createElement(
1709
- Table$8,
1709
+ Table$9,
1710
1710
  {
1711
1711
  loading: props.loading,
1712
1712
  items: props.answers
1713
1713
  }
1714
1714
  ), tab === "reflections" && /* @__PURE__ */ React.createElement(
1715
- Table$7,
1715
+ Table$8,
1716
1716
  {
1717
1717
  loading: props.loading,
1718
1718
  items: props.reflections
@@ -1720,7 +1720,7 @@ const Student = (props) => {
1720
1720
  ))))));
1721
1721
  };
1722
1722
 
1723
- const useStyles$h = createStyles((theme, props) => {
1723
+ const useStyles$j = createStyles((theme, props) => {
1724
1724
  const from = props.from || "blue";
1725
1725
  const to = props.to || "green";
1726
1726
  return {
@@ -1748,7 +1748,7 @@ const useStyles$h = createStyles((theme, props) => {
1748
1748
  };
1749
1749
  });
1750
1750
  function CardGradient(props) {
1751
- const { classes } = useStyles$h(props);
1751
+ const { classes } = useStyles$j(props);
1752
1752
  const from = props.from || "blue";
1753
1753
  const to = props.to || "green";
1754
1754
  const icon = props.icon || /* @__PURE__ */ React.createElement(IconColorSwatch, { size: 28, stroke: 1.5 });
@@ -1764,35 +1764,35 @@ function CardGradient(props) {
1764
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));
1765
1765
  }
1766
1766
 
1767
- var __defProp$7 = Object.defineProperty;
1768
- var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;
1769
- var __hasOwnProp$7 = Object.prototype.hasOwnProperty;
1770
- var __propIsEnum$7 = Object.prototype.propertyIsEnumerable;
1771
- var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1772
- 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) => {
1773
1773
  for (var prop in b || (b = {}))
1774
- if (__hasOwnProp$7.call(b, prop))
1775
- __defNormalProp$7(a, prop, b[prop]);
1776
- if (__getOwnPropSymbols$7)
1777
- for (var prop of __getOwnPropSymbols$7(b)) {
1778
- if (__propIsEnum$7.call(b, prop))
1779
- __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]);
1780
1780
  }
1781
1781
  return a;
1782
1782
  };
1783
1783
  var __objRest$1 = (source, exclude) => {
1784
1784
  var target = {};
1785
1785
  for (var prop in source)
1786
- if (__hasOwnProp$7.call(source, prop) && exclude.indexOf(prop) < 0)
1786
+ if (__hasOwnProp$8.call(source, prop) && exclude.indexOf(prop) < 0)
1787
1787
  target[prop] = source[prop];
1788
- if (source != null && __getOwnPropSymbols$7)
1789
- for (var prop of __getOwnPropSymbols$7(source)) {
1790
- 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))
1791
1791
  target[prop] = source[prop];
1792
1792
  }
1793
1793
  return target;
1794
1794
  };
1795
- const useStyles$g = createStyles((theme) => ({
1795
+ const useStyles$i = createStyles((theme) => ({
1796
1796
  card: {
1797
1797
  height: 240,
1798
1798
  backgroundSize: "cover",
@@ -1837,7 +1837,7 @@ const TenantBanner = (_a) => {
1837
1837
  "className",
1838
1838
  "code"
1839
1839
  ]);
1840
- const { classes, cx, theme } = useStyles$g();
1840
+ const { classes, cx, theme } = useStyles$i();
1841
1841
  const handleCopy = async () => {
1842
1842
  if (!code)
1843
1843
  return;
@@ -1854,9 +1854,9 @@ const TenantBanner = (_a) => {
1854
1854
  };
1855
1855
  return /* @__PURE__ */ React.createElement(
1856
1856
  Card,
1857
- __spreadValues$7({
1857
+ __spreadValues$8({
1858
1858
  radius: "md",
1859
- style: __spreadValues$7({ backgroundImage: `url(${image})` }, style),
1859
+ style: __spreadValues$8({ backgroundImage: `url(${image})` }, style),
1860
1860
  className: cx(classes.card, className)
1861
1861
  }, others),
1862
1862
  /* @__PURE__ */ React.createElement(
@@ -1885,7 +1885,7 @@ const TenantBanner = (_a) => {
1885
1885
  };
1886
1886
 
1887
1887
  const Home = (props) => {
1888
- 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(
1889
1889
  UserInfo,
1890
1890
  {
1891
1891
  variant: "compact",
@@ -1945,7 +1945,7 @@ const Home = (props) => {
1945
1945
  )))));
1946
1946
  };
1947
1947
 
1948
- function Table$6(props) {
1948
+ function Table$7(props) {
1949
1949
  const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
1950
1950
  if (props.items.length === 0) {
1951
1951
  return /* @__PURE__ */ React.createElement(
@@ -1977,7 +1977,7 @@ function Table$6(props) {
1977
1977
  ));
1978
1978
  }
1979
1979
 
1980
- const useStyles$f = createStyles((theme) => ({
1980
+ const useStyles$h = createStyles((theme) => ({
1981
1981
  button: {
1982
1982
  borderTopRightRadius: 0,
1983
1983
  borderBottomRightRadius: 0,
@@ -1991,10 +1991,10 @@ const useStyles$f = createStyles((theme) => ({
1991
1991
  borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
1992
1992
  }
1993
1993
  }));
1994
- const SplitButton$2 = (props) => {
1995
- const { classes, theme } = useStyles$f();
1994
+ const SplitButton$3 = (props) => {
1995
+ const { classes, theme } = useStyles$h();
1996
1996
  theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
1997
- return /* @__PURE__ */ React.createElement(Stack$4, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
1997
+ return /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
1998
1998
  Button,
1999
1999
  {
2000
2000
  component: Link,
@@ -2021,36 +2021,36 @@ const SplitButton$2 = (props) => {
2021
2021
  ));
2022
2022
  };
2023
2023
 
2024
- function Stack$2(props) {
2024
+ function Stack$3(props) {
2025
2025
  if (props.items.length === 0) {
2026
2026
  return null;
2027
2027
  }
2028
- 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.")));
2029
- 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)));
2030
2030
  }
2031
2031
 
2032
- var __defProp$6 = Object.defineProperty;
2033
- var __defProps$5 = Object.defineProperties;
2034
- var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;
2035
- var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;
2036
- var __hasOwnProp$6 = Object.prototype.hasOwnProperty;
2037
- var __propIsEnum$6 = Object.prototype.propertyIsEnumerable;
2038
- var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2039
- 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) => {
2040
2040
  for (var prop in b || (b = {}))
2041
- if (__hasOwnProp$6.call(b, prop))
2042
- __defNormalProp$6(a, prop, b[prop]);
2043
- if (__getOwnPropSymbols$6)
2044
- for (var prop of __getOwnPropSymbols$6(b)) {
2045
- if (__propIsEnum$6.call(b, prop))
2046
- __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]);
2047
2047
  }
2048
2048
  return a;
2049
2049
  };
2050
- var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
2051
- function Table$5(props) {
2050
+ var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
2051
+ function Table$6(props) {
2052
2052
  const preparedItems = React.useMemo(() => {
2053
- return props.items.map((item) => __spreadProps$5(__spreadValues$6({}, item), {
2053
+ return props.items.map((item) => __spreadProps$6(__spreadValues$7({}, item), {
2054
2054
  status: item.isComplete ? 2 : item.isStarted ? 1 : 0
2055
2055
  }));
2056
2056
  }, [props.items]);
@@ -2096,13 +2096,13 @@ function Table$5(props) {
2096
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"))
2097
2097
  }],
2098
2098
  rowExpansion: {
2099
- 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 })
2100
2100
  }
2101
2101
  }
2102
2102
  ));
2103
2103
  }
2104
2104
 
2105
- function Stack$1(props) {
2105
+ function Stack$2(props) {
2106
2106
  const primaryAxis = React.useMemo(
2107
2107
  () => ({
2108
2108
  position: "left",
@@ -2142,7 +2142,7 @@ function Stack$1(props) {
2142
2142
  labelMap[r] = labelMap[r] ? labelMap[r] + 1 : 1;
2143
2143
  }
2144
2144
  }));
2145
- 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(
2146
2146
  Chart,
2147
2147
  {
2148
2148
  options: {
@@ -2161,16 +2161,16 @@ function Stack$1(props) {
2161
2161
  }
2162
2162
  ))));
2163
2163
  }
2164
- 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) => {
2165
2165
  const answerText = a.join("\n");
2166
2166
  return /* @__PURE__ */ React.createElement(Card, { key: answerText, p: 5, radius: 0, bg: "gray.0" }, /* @__PURE__ */ React.createElement(Text, null, answerText));
2167
2167
  })))));
2168
2168
  });
2169
- 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);
2170
2170
  }
2171
2171
  const truncateWithEllipses = (text, max) => text.substr(0, max - 1) + (text.length > max ? "&hellip;" : "");
2172
2172
 
2173
- const useStyles$e = createStyles((theme) => ({
2173
+ const useStyles$g = createStyles((theme) => ({
2174
2174
  title: {
2175
2175
  fontSize: 34,
2176
2176
  fontWeight: 900,
@@ -2183,7 +2183,7 @@ const useStyles$e = createStyles((theme) => ({
2183
2183
  }
2184
2184
  }));
2185
2185
  const Lesson = (props) => {
2186
- const { classes } = useStyles$e();
2186
+ const { classes } = useStyles$g();
2187
2187
  const [tab, setTab] = useState("question");
2188
2188
  const numberOfStudents = props.students.length;
2189
2189
  const numberOfLessons = numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length : 0;
@@ -2225,7 +2225,7 @@ const Lesson = (props) => {
2225
2225
  { label: "By student", value: "students" },
2226
2226
  { label: "By reflection", value: "reflections" }
2227
2227
  ];
2228
- 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(
2229
2229
  Badge$1,
2230
2230
  {
2231
2231
  variant: "filled",
@@ -2233,15 +2233,15 @@ const Lesson = (props) => {
2233
2233
  size: "lg"
2234
2234
  },
2235
2235
  "Back"
2236
- )), /* @__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(
2237
- 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,
2238
2238
  {
2239
2239
  href: props.href,
2240
2240
  noExport: props.trial,
2241
2241
  onCopyLinkClick: props.onCopyLinkClick,
2242
2242
  onExportDataClick: props.onExportDataClick
2243
2243
  }
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$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(
2245
2245
  StatsGroup,
2246
2246
  {
2247
2247
  data: [
@@ -2267,7 +2267,7 @@ const Lesson = (props) => {
2267
2267
  return { value: g.classId, label: g.name };
2268
2268
  })
2269
2269
  }
2270
- ), /* @__PURE__ */ React.createElement(Stack$4, { spacing: 0 }, /* @__PURE__ */ React.createElement(
2270
+ ), /* @__PURE__ */ React.createElement(Stack$5, { spacing: 0 }, /* @__PURE__ */ React.createElement(
2271
2271
  Tabs,
2272
2272
  {
2273
2273
  value: tab,
@@ -2275,19 +2275,19 @@ const Lesson = (props) => {
2275
2275
  onChange: setTab
2276
2276
  }
2277
2277
  ), tab === "question" && /* @__PURE__ */ React.createElement(
2278
- Stack$1,
2278
+ Stack$2,
2279
2279
  {
2280
2280
  loading: props.loading,
2281
2281
  items: props.questions
2282
2282
  }
2283
2283
  ), tab === "reflections" && /* @__PURE__ */ React.createElement(
2284
- Table$6,
2284
+ Table$7,
2285
2285
  {
2286
2286
  loading: props.loading,
2287
2287
  items: props.reflections
2288
2288
  }
2289
2289
  ), tab === "students" && /* @__PURE__ */ React.createElement(
2290
- Table$5,
2290
+ Table$6,
2291
2291
  {
2292
2292
  loading: props.loading,
2293
2293
  items: props.students
@@ -2295,7 +2295,7 @@ const Lesson = (props) => {
2295
2295
  )))))));
2296
2296
  };
2297
2297
 
2298
- function Table$4(props) {
2298
+ function Table$5(props) {
2299
2299
  if (props.items.length === 0) {
2300
2300
  return /* @__PURE__ */ React.createElement(
2301
2301
  PlaceholderBanner,
@@ -2324,10 +2324,10 @@ function Table$4(props) {
2324
2324
  },
2325
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)))
2326
2326
  ))));
2327
- 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)));
2328
2328
  }
2329
2329
 
2330
- const useStyles$d = createStyles((theme) => ({
2330
+ const useStyles$f = createStyles((theme) => ({
2331
2331
  title: {
2332
2332
  fontSize: 34,
2333
2333
  fontWeight: 900,
@@ -2340,8 +2340,8 @@ const useStyles$d = createStyles((theme) => ({
2340
2340
  }
2341
2341
  }));
2342
2342
  const Lessons = (props) => {
2343
- const { classes } = useStyles$d();
2344
- 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(
2345
2345
  Autocomplete,
2346
2346
  {
2347
2347
  placeholder: "Search for a lesson that fits your needs",
@@ -2349,7 +2349,7 @@ const Lessons = (props) => {
2349
2349
  onChange: props.onAutocompleteChange
2350
2350
  }
2351
2351
  ), /* @__PURE__ */ React.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React.createElement(
2352
- Table$4,
2352
+ Table$5,
2353
2353
  {
2354
2354
  loading: props.loading,
2355
2355
  items: props.lessons
@@ -2357,7 +2357,7 @@ const Lessons = (props) => {
2357
2357
  ))));
2358
2358
  };
2359
2359
 
2360
- const useStyles$c = createStyles((theme) => ({
2360
+ const useStyles$e = createStyles((theme) => ({
2361
2361
  title: {
2362
2362
  fontSize: 22,
2363
2363
  fontWeight: 900,
@@ -2376,7 +2376,7 @@ const useStyles$c = createStyles((theme) => ({
2376
2376
  }
2377
2377
  }));
2378
2378
  function AccessCode(props) {
2379
- const { classes } = useStyles$c();
2379
+ const { classes } = useStyles$e();
2380
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(
2381
2381
  Anchor,
2382
2382
  {
@@ -2404,7 +2404,7 @@ const monthNames = [
2404
2404
  "November",
2405
2405
  "December"
2406
2406
  ];
2407
- const useStyles$b = createStyles((theme) => ({
2407
+ const useStyles$d = createStyles((theme) => ({
2408
2408
  title: {
2409
2409
  fontSize: 34,
2410
2410
  fontWeight: 900,
@@ -2434,8 +2434,8 @@ const useStyles$b = createStyles((theme) => ({
2434
2434
  }
2435
2435
  }));
2436
2436
  const Organization = (props) => {
2437
- const { classes } = useStyles$b();
2438
- 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(
2439
2439
  Badge$1,
2440
2440
  {
2441
2441
  variant: "filled",
@@ -2443,7 +2443,7 @@ const Organization = (props) => {
2443
2443
  size: "lg"
2444
2444
  },
2445
2445
  "Back"
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$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: [
2447
2447
  {
2448
2448
  title: "# OF STUDENTS",
2449
2449
  value: props.numberOfStudents || 0
@@ -2460,7 +2460,7 @@ const Organization = (props) => {
2460
2460
  ] }))))));
2461
2461
  };
2462
2462
 
2463
- const useStyles$a = createStyles((theme) => ({
2463
+ const useStyles$c = createStyles((theme) => ({
2464
2464
  button: {
2465
2465
  borderTopRightRadius: 0,
2466
2466
  borderBottomRightRadius: 0,
@@ -2474,8 +2474,8 @@ const useStyles$a = createStyles((theme) => ({
2474
2474
  borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
2475
2475
  }
2476
2476
  }));
2477
- const SplitButton$1 = (props) => {
2478
- const { classes, theme } = useStyles$a();
2477
+ const SplitButton$2 = (props) => {
2478
+ const { classes, theme } = useStyles$c();
2479
2479
  const menuIconColor = theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
2480
2480
  const hasMenu = !!props.withOrganizationLink;
2481
2481
  return /* @__PURE__ */ React.createElement(Group, { noWrap: true, spacing: 0 }, /* @__PURE__ */ React.createElement(
@@ -2505,7 +2505,7 @@ const SplitButton$1 = (props) => {
2505
2505
  ))));
2506
2506
  };
2507
2507
 
2508
- function Table$3(props) {
2508
+ function Table$4(props) {
2509
2509
  if (props.items.length === 0) {
2510
2510
  return /* @__PURE__ */ React.createElement(
2511
2511
  PlaceholderBanner,
@@ -2534,29 +2534,29 @@ function Table$3(props) {
2534
2534
  data: [{ value: "student", label: "Student" }, { value: "educator", label: "Educator" }, { value: "admin", label: "Admin" }]
2535
2535
  }
2536
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 }))))));
2537
- 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)));
2538
2538
  }
2539
2539
 
2540
- var __defProp$5 = Object.defineProperty;
2541
- var __defProps$4 = Object.defineProperties;
2542
- var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
2543
- var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
2544
- var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
2545
- var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
2546
- var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2547
- 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) => {
2548
2548
  for (var prop in b || (b = {}))
2549
- if (__hasOwnProp$5.call(b, prop))
2550
- __defNormalProp$5(a, prop, b[prop]);
2551
- if (__getOwnPropSymbols$5)
2552
- for (var prop of __getOwnPropSymbols$5(b)) {
2553
- if (__propIsEnum$5.call(b, prop))
2554
- __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]);
2555
2555
  }
2556
2556
  return a;
2557
2557
  };
2558
- var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
2559
- const useStyles$9 = createStyles((theme) => ({
2558
+ var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
2559
+ const useStyles$b = createStyles((theme) => ({
2560
2560
  title: {
2561
2561
  fontSize: 34,
2562
2562
  fontWeight: 900,
@@ -2586,7 +2586,7 @@ const useStyles$9 = createStyles((theme) => ({
2586
2586
  }
2587
2587
  }));
2588
2588
  const People = (props) => {
2589
- const { classes } = useStyles$9();
2589
+ const { classes } = useStyles$b();
2590
2590
  const form = useForm({
2591
2591
  initialValues: {
2592
2592
  userId: "",
@@ -2617,32 +2617,32 @@ const People = (props) => {
2617
2617
  padding: "xl",
2618
2618
  size: "xl"
2619
2619
  },
2620
- /* @__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(() => {
2621
2621
  const values = form.values;
2622
2622
  form.reset();
2623
2623
  setOpened(false);
2624
2624
  props.onCreateUsers && props.onCreateUsers([values]);
2625
- }) }, /* @__PURE__ */ React.createElement(Stack$4, null, /* @__PURE__ */ React.createElement(
2625
+ }) }, /* @__PURE__ */ React.createElement(Stack$5, null, /* @__PURE__ */ React.createElement(
2626
2626
  TextInput,
2627
- __spreadValues$5({
2627
+ __spreadValues$6({
2628
2628
  withAsterisk: true,
2629
2629
  label: "Email",
2630
2630
  placeholder: "Email"
2631
2631
  }, form.getInputProps("email"))
2632
2632
  ), /* @__PURE__ */ React.createElement(Group, { grow: true }, /* @__PURE__ */ React.createElement(
2633
2633
  TextInput,
2634
- __spreadValues$5({
2634
+ __spreadValues$6({
2635
2635
  label: "Given name",
2636
2636
  placeholder: "Given name"
2637
2637
  }, form.getInputProps("givenName"))
2638
2638
  ), /* @__PURE__ */ React.createElement(
2639
2639
  TextInput,
2640
- __spreadValues$5({
2640
+ __spreadValues$6({
2641
2641
  label: "Family name",
2642
2642
  placeholder: "Family name"
2643
2643
  }, form.getInputProps("familyName"))
2644
2644
  )), /* @__PURE__ */ React.createElement(Button, { type: "submit", fullWidth: true, mt: "md" }, "Submit"))))
2645
- ), /* @__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(
2646
2646
  Badge$1,
2647
2647
  {
2648
2648
  variant: "filled",
@@ -2651,13 +2651,13 @@ const People = (props) => {
2651
2651
  },
2652
2652
  "Back"
2653
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(
2654
- SplitButton$1,
2654
+ SplitButton$2,
2655
2655
  {
2656
2656
  withOrganizationLink: props.withOrganizationLink,
2657
2657
  onAddUsersClick: () => setOpened(true),
2658
2658
  onCopyOrganizationLinkClick: props.onCopyLinkClick
2659
2659
  }
2660
- ))), /* @__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: [
2661
2661
  {
2662
2662
  title: "# OF PEOPLE",
2663
2663
  value: props.users.length
@@ -2680,7 +2680,7 @@ const People = (props) => {
2680
2680
  onChange: props.onAutocompleteChange
2681
2681
  }
2682
2682
  ), /* @__PURE__ */ React.createElement(
2683
- Table$3,
2683
+ Table$4,
2684
2684
  {
2685
2685
  loading: props.loading,
2686
2686
  items: props.users,
@@ -2690,7 +2690,7 @@ const People = (props) => {
2690
2690
  ))))));
2691
2691
  };
2692
2692
  const DropzoneButton = (props) => {
2693
- const { classes, theme } = useStyles$9();
2693
+ const { classes, theme } = useStyles$b();
2694
2694
  const openRef = React.useRef(null);
2695
2695
  const [loading, setLoading] = React.useState(false);
2696
2696
  const onDrop = React.useCallback((acceptedFiles) => {
@@ -2736,7 +2736,7 @@ const DropzoneButton = (props) => {
2736
2736
  } }, "Select file"));
2737
2737
  };
2738
2738
 
2739
- const useStyles$8 = createStyles((theme) => ({
2739
+ const useStyles$a = createStyles((theme) => ({
2740
2740
  form: {
2741
2741
  backgroundColor: theme.white,
2742
2742
  padding: theme.spacing.xl,
@@ -2799,7 +2799,7 @@ const useStyles$8 = createStyles((theme) => ({
2799
2799
  }
2800
2800
  }));
2801
2801
  const StartAnonymousLesson = (props) => {
2802
- const { classes } = useStyles$8();
2802
+ const { classes } = useStyles$a();
2803
2803
  const [name, setName] = React.useState("");
2804
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(
2805
2805
  TextInput,
@@ -2823,24 +2823,24 @@ const StartAnonymousLesson = (props) => {
2823
2823
  ))))));
2824
2824
  };
2825
2825
 
2826
- var __defProp$4 = Object.defineProperty;
2827
- var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
2828
- var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
2829
- var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
2830
- var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2831
- 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) => {
2832
2832
  for (var prop in b || (b = {}))
2833
- if (__hasOwnProp$4.call(b, prop))
2834
- __defNormalProp$4(a, prop, b[prop]);
2835
- if (__getOwnPropSymbols$4)
2836
- for (var prop of __getOwnPropSymbols$4(b)) {
2837
- if (__propIsEnum$4.call(b, prop))
2838
- __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]);
2839
2839
  }
2840
2840
  return a;
2841
2841
  };
2842
2842
  const BadgeGrid = (props) => {
2843
- 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)));
2844
2844
  return /* @__PURE__ */ React.createElement(SimpleGrid, { cols: 4, breakpoints: [{ maxWidth: "sm", cols: 1 }, { maxWidth: "md", cols: 3 }] }, badges);
2845
2845
  };
2846
2846
  function TaskCard(props) {
@@ -2856,7 +2856,7 @@ function TaskCard(props) {
2856
2856
  ));
2857
2857
  }
2858
2858
 
2859
- const useStyles$7 = createStyles((theme) => ({
2859
+ const useStyles$9 = createStyles((theme) => ({
2860
2860
  action: {
2861
2861
  backgroundColor: "inherit",
2862
2862
  ":hover": {
@@ -2875,7 +2875,7 @@ const useStyles$7 = createStyles((theme) => ({
2875
2875
  }
2876
2876
  }));
2877
2877
  const TrialHome = (props) => {
2878
- const { classes } = useStyles$7();
2878
+ const { classes } = useStyles$9();
2879
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(
2880
2880
  Button,
2881
2881
  {
@@ -2887,7 +2887,7 @@ const TrialHome = (props) => {
2887
2887
  target: "_blank"
2888
2888
  },
2889
2889
  "UPGRADE NOW"
2890
- ), /* @__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(
2891
2891
  UserInfo,
2892
2892
  {
2893
2893
  variant: "compact",
@@ -2904,38 +2904,38 @@ const TrialHome = (props) => {
2904
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 })));
2905
2905
  };
2906
2906
 
2907
- var __defProp$3 = Object.defineProperty;
2908
- var __defProps$3 = Object.defineProperties;
2909
- var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
2910
- var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
2911
- var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
2912
- var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
2913
- var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2914
- 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) => {
2915
2915
  for (var prop in b || (b = {}))
2916
- if (__hasOwnProp$3.call(b, prop))
2917
- __defNormalProp$3(a, prop, b[prop]);
2918
- if (__getOwnPropSymbols$3)
2919
- for (var prop of __getOwnPropSymbols$3(b)) {
2920
- if (__propIsEnum$3.call(b, prop))
2921
- __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]);
2922
2922
  }
2923
2923
  return a;
2924
2924
  };
2925
- var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
2925
+ var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
2926
2926
  var __objRest = (source, exclude) => {
2927
2927
  var target = {};
2928
2928
  for (var prop in source)
2929
- if (__hasOwnProp$3.call(source, prop) && exclude.indexOf(prop) < 0)
2929
+ if (__hasOwnProp$4.call(source, prop) && exclude.indexOf(prop) < 0)
2930
2930
  target[prop] = source[prop];
2931
- if (source != null && __getOwnPropSymbols$3)
2932
- for (var prop of __getOwnPropSymbols$3(source)) {
2933
- 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))
2934
2934
  target[prop] = source[prop];
2935
2935
  }
2936
2936
  return target;
2937
2937
  };
2938
- const useStyles$6 = createStyles((theme, { checked }) => ({
2938
+ const useStyles$8 = createStyles((theme, { checked }) => ({
2939
2939
  button: {
2940
2940
  display: "flex",
2941
2941
  alignItems: "center",
@@ -2977,10 +2977,10 @@ function ImageCheckbox(_a) {
2977
2977
  finalValue: false,
2978
2978
  onChange
2979
2979
  });
2980
- const { classes, cx } = useStyles$6({ checked: value });
2980
+ const { classes, cx } = useStyles$8({ checked: value });
2981
2981
  return /* @__PURE__ */ React.createElement(
2982
2982
  UnstyledButton,
2983
- __spreadProps$3(__spreadValues$3({}, others), {
2983
+ __spreadProps$4(__spreadValues$4({}, others), {
2984
2984
  onClick: () => handleChange(!value),
2985
2985
  className: cx(classes.button, className)
2986
2986
  }),
@@ -3001,7 +3001,7 @@ function ImageCheckbox(_a) {
3001
3001
  function SelectGrid(props) {
3002
3002
  const items = props.items.map((item) => /* @__PURE__ */ React.createElement(
3003
3003
  ImageCheckbox,
3004
- __spreadProps$3(__spreadValues$3({}, item), {
3004
+ __spreadProps$4(__spreadValues$4({}, item), {
3005
3005
  key: item.title,
3006
3006
  onChange: (checked) => props.onChange(item.title, checked)
3007
3007
  })
@@ -3019,26 +3019,26 @@ function SelectGrid(props) {
3019
3019
  );
3020
3020
  }
3021
3021
 
3022
- var __defProp$2 = Object.defineProperty;
3023
- var __defProps$2 = Object.defineProperties;
3024
- var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
3025
- var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
3026
- var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
3027
- var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
3028
- var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3029
- 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) => {
3030
3030
  for (var prop in b || (b = {}))
3031
- if (__hasOwnProp$2.call(b, prop))
3032
- __defNormalProp$2(a, prop, b[prop]);
3033
- if (__getOwnPropSymbols$2)
3034
- for (var prop of __getOwnPropSymbols$2(b)) {
3035
- if (__propIsEnum$2.call(b, prop))
3036
- __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]);
3037
3037
  }
3038
3038
  return a;
3039
3039
  };
3040
- var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
3041
- const useStyles$5 = createStyles((theme) => ({
3040
+ var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
3041
+ const useStyles$7 = createStyles((theme) => ({
3042
3042
  wrapper: {
3043
3043
  minHeight: "100%",
3044
3044
  boxSizing: "border-box",
@@ -3101,7 +3101,7 @@ const OPTIONS = [
3101
3101
  { description: "project-based learning", title: "Project-Based Learning", icon: IconTools }
3102
3102
  ];
3103
3103
  const TrialRegistration = (props) => {
3104
- const { classes } = useStyles$5();
3104
+ const { classes } = useStyles$7();
3105
3105
  const [firstName, setFirstName] = React.useState("");
3106
3106
  const [lastName, setLastName] = React.useState("");
3107
3107
  const [organization, setOrganization] = React.useState({ organizationId: "", displayName: "" });
@@ -3147,7 +3147,7 @@ const TrialRegistration = (props) => {
3147
3147
  label: "School/Organization Name",
3148
3148
  placeholder: "What's the name of your school?",
3149
3149
  data: props.organizations.map((o) => {
3150
- return __spreadProps$2(__spreadValues$2({}, o), { value: o.displayName });
3150
+ return __spreadProps$3(__spreadValues$3({}, o), { value: o.displayName });
3151
3151
  }),
3152
3152
  onItemSubmit: (item) => setOrganization({ organizationId: item.organizationId, displayName: item.displayName }),
3153
3153
  onChange: (next) => {
@@ -3159,7 +3159,7 @@ const TrialRegistration = (props) => {
3159
3159
  SelectGrid,
3160
3160
  {
3161
3161
  items: OPTIONS,
3162
- onChange: (e, checked) => setInterests(__spreadProps$2(__spreadValues$2({}, interests), { [e]: checked }))
3162
+ onChange: (e, checked) => setInterests(__spreadProps$3(__spreadValues$3({}, interests), { [e]: checked }))
3163
3163
  }
3164
3164
  ), /* @__PURE__ */ React.createElement(Group, { position: "right", mt: "md" }, /* @__PURE__ */ React.createElement(
3165
3165
  Button,
@@ -3197,26 +3197,26 @@ const AdminProvider = (props) => {
3197
3197
  );
3198
3198
  };
3199
3199
 
3200
- var __defProp$1 = Object.defineProperty;
3201
- var __defProps$1 = Object.defineProperties;
3202
- var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
3203
- var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
3204
- var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
3205
- var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
3206
- var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3207
- 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) => {
3208
3208
  for (var prop in b || (b = {}))
3209
- if (__hasOwnProp$1.call(b, prop))
3210
- __defNormalProp$1(a, prop, b[prop]);
3211
- if (__getOwnPropSymbols$1)
3212
- for (var prop of __getOwnPropSymbols$1(b)) {
3213
- if (__propIsEnum$1.call(b, prop))
3214
- __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]);
3215
3215
  }
3216
3216
  return a;
3217
3217
  };
3218
- var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
3219
- 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) => ({
3220
3220
  footer: {
3221
3221
  paddingTop: theme.spacing.md,
3222
3222
  paddingBottom: theme.spacing.md,
@@ -3303,7 +3303,7 @@ const useStyles$4 = createStyles((theme, props) => ({
3303
3303
  }
3304
3304
  }));
3305
3305
  const App = (props) => {
3306
- const { classes } = useStyles$4(props);
3306
+ const { classes } = useStyles$6(props);
3307
3307
  const account = useAccount(props.account, props.accounts, props.onAccountChange);
3308
3308
  return /* @__PURE__ */ React.createElement(
3309
3309
  AppShell,
@@ -3311,7 +3311,7 @@ const App = (props) => {
3311
3311
  padding: "xs",
3312
3312
  navbar: props.navbar && /* @__PURE__ */ React.createElement(
3313
3313
  Navbar,
3314
- __spreadProps$1(__spreadValues$1({}, props.navbar.props), {
3314
+ __spreadProps$2(__spreadValues$2({}, props.navbar.props), {
3315
3315
  onSwitchAccounts: account.accounts && account.accounts.length > 1 ? () => account.setChangeModalOpen(true) : void 0
3316
3316
  })
3317
3317
  ),
@@ -3398,7 +3398,7 @@ const useAccount = (account, accounts, onAccountChange) => {
3398
3398
  };
3399
3399
  };
3400
3400
 
3401
- function Table$2(props) {
3401
+ function Table$3(props) {
3402
3402
  if (props.items.length === 0) {
3403
3403
  return /* @__PURE__ */ React.createElement(
3404
3404
  PlaceholderBanner,
@@ -3427,10 +3427,10 @@ function Table$2(props) {
3427
3427
  },
3428
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)))
3429
3429
  ))));
3430
- 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)));
3431
3431
  }
3432
3432
 
3433
- const useStyles$3 = createStyles((theme) => ({
3433
+ const useStyles$5 = createStyles((theme) => ({
3434
3434
  title: {
3435
3435
  fontSize: 34,
3436
3436
  fontWeight: 900,
@@ -3443,9 +3443,9 @@ const useStyles$3 = createStyles((theme) => ({
3443
3443
  }
3444
3444
  }));
3445
3445
  const Pathways = (props) => {
3446
- const { classes } = useStyles$3();
3447
- 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(
3448
- 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,
3449
3449
  {
3450
3450
  loading: props.loading,
3451
3451
  items: props.pathways
@@ -3453,7 +3453,7 @@ const Pathways = (props) => {
3453
3453
  ))));
3454
3454
  };
3455
3455
 
3456
- const useStyles$2 = createStyles((theme) => ({
3456
+ const useStyles$4 = createStyles((theme) => ({
3457
3457
  button: {
3458
3458
  borderTopRightRadius: 0,
3459
3459
  borderBottomRightRadius: 0,
@@ -3467,10 +3467,10 @@ const useStyles$2 = createStyles((theme) => ({
3467
3467
  borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
3468
3468
  }
3469
3469
  }));
3470
- const SplitButton = (props) => {
3471
- const { classes, theme } = useStyles$2();
3470
+ const SplitButton$1 = (props) => {
3471
+ const { classes, theme } = useStyles$4();
3472
3472
  theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
3473
- return /* @__PURE__ */ React.createElement(Stack$4, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
3473
+ return /* @__PURE__ */ React.createElement(Stack$5, { spacing: "sm" }, /* @__PURE__ */ React.createElement(
3474
3474
  Button,
3475
3475
  {
3476
3476
  component: Link,
@@ -3496,7 +3496,7 @@ const SplitButton = (props) => {
3496
3496
  ));
3497
3497
  };
3498
3498
 
3499
- function Stack(props) {
3499
+ function Stack$1(props) {
3500
3500
  if (props.items.length === 0) {
3501
3501
  return null;
3502
3502
  }
@@ -3504,29 +3504,29 @@ function Stack(props) {
3504
3504
  return /* @__PURE__ */ React.createElement(Grid, { grow: true, gutter: "lg", sx: { padding: 20, minWidth: 700 } }, rows);
3505
3505
  }
3506
3506
 
3507
- var __defProp = Object.defineProperty;
3508
- var __defProps = Object.defineProperties;
3509
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
3510
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3511
- var __hasOwnProp = Object.prototype.hasOwnProperty;
3512
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
3513
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3514
- 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) => {
3515
3515
  for (var prop in b || (b = {}))
3516
- if (__hasOwnProp.call(b, prop))
3517
- __defNormalProp(a, prop, b[prop]);
3518
- if (__getOwnPropSymbols)
3519
- for (var prop of __getOwnPropSymbols(b)) {
3520
- if (__propIsEnum.call(b, prop))
3521
- __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]);
3522
3522
  }
3523
3523
  return a;
3524
3524
  };
3525
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
3526
- function Table$1(props) {
3525
+ var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
3526
+ function Table$2(props) {
3527
3527
  const preparedItems = React.useMemo(() => {
3528
3528
  return props.items.map((item) => {
3529
- const flatItem = __spreadProps(__spreadValues({}, item), {
3529
+ const flatItem = __spreadProps$1(__spreadValues$1({}, item), {
3530
3530
  status: item.isComplete ? 1 : 0
3531
3531
  });
3532
3532
  if (item.categoryPoints) {
@@ -3594,13 +3594,13 @@ function Table$1(props) {
3594
3594
  }))
3595
3595
  ],
3596
3596
  rowExpansion: {
3597
- content: ({ record }) => /* @__PURE__ */ React.createElement(Stack, { items: record.badges })
3597
+ content: ({ record }) => /* @__PURE__ */ React.createElement(Stack$1, { items: record.badges })
3598
3598
  }
3599
3599
  }
3600
3600
  ));
3601
3601
  }
3602
3602
 
3603
- const useStyles$1 = createStyles((theme) => ({
3603
+ const useStyles$3 = createStyles((theme) => ({
3604
3604
  th: { padding: "0 !important" },
3605
3605
  control: {
3606
3606
  width: "100%",
@@ -3611,11 +3611,11 @@ const useStyles$1 = createStyles((theme) => ({
3611
3611
  }
3612
3612
  }));
3613
3613
  function Th({ children, reversed, sorted, onSort }) {
3614
- const { classes } = useStyles$1();
3614
+ const { classes } = useStyles$3();
3615
3615
  const Icon = sorted ? reversed ? IconChevronUp : IconChevronDown : IconSelector;
3616
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 })))));
3617
3617
  }
3618
- function Table(props) {
3618
+ function Table$1(props) {
3619
3619
  const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
3620
3620
  if (props.items.length === 0) {
3621
3621
  return /* @__PURE__ */ React.createElement(
@@ -3632,7 +3632,7 @@ function Table(props) {
3632
3632
  const percentageCompletion = Math.round((row.percentageCompletion + Number.EPSILON) * 100);
3633
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, "%"));
3634
3634
  });
3635
- 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(
3636
3636
  Th,
3637
3637
  {
3638
3638
  sorted: sortConfig.key === "badgeName",
@@ -3651,7 +3651,7 @@ function Table(props) {
3651
3651
  ))), /* @__PURE__ */ React.createElement("tbody", null, rows)));
3652
3652
  }
3653
3653
 
3654
- const useStyles = createStyles((theme) => ({
3654
+ const useStyles$2 = createStyles((theme) => ({
3655
3655
  title: {
3656
3656
  fontSize: 34,
3657
3657
  fontWeight: 900,
@@ -3664,12 +3664,12 @@ const useStyles = createStyles((theme) => ({
3664
3664
  }
3665
3665
  }));
3666
3666
  const Pathway = (props) => {
3667
- const { classes } = useStyles();
3667
+ const { classes } = useStyles$2();
3668
3668
  const [tab, setTab] = useState("badges");
3669
3669
  const numberOfStudents = props.students.length;
3670
3670
  numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length / numberOfStudents : 0;
3671
3671
  const numberOfBadgesEarned = numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length : 0;
3672
- 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(
3673
3673
  Badge$1,
3674
3674
  {
3675
3675
  variant: "filled",
@@ -3677,14 +3677,14 @@ const Pathway = (props) => {
3677
3677
  size: "lg"
3678
3678
  },
3679
3679
  "Back"
3680
- )), /* @__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(
3681
- 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,
3682
3682
  {
3683
3683
  href: props.href,
3684
3684
  onCopyLinkClick: props.onCopyLinkClick,
3685
3685
  onExportDataClick: props.onExportDataClick
3686
3686
  }
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$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: [
3688
3688
  {
3689
3689
  title: props.trial ? "BADGES SUBMITTED" : "PATHWAY COMPLETION",
3690
3690
  value: props.trial ? 0 : numberOfBadgesEarned,
@@ -3705,7 +3705,7 @@ const Pathway = (props) => {
3705
3705
  return { value: g.classId, label: g.name };
3706
3706
  })
3707
3707
  }
3708
- ), /* @__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(
3709
3709
  Tabs,
3710
3710
  {
3711
3711
  value: tab,
@@ -3716,13 +3716,13 @@ const Pathway = (props) => {
3716
3716
  onChange: setTab
3717
3717
  }
3718
3718
  ), (!!props.trial || tab === "badges") && /* @__PURE__ */ React.createElement(
3719
- Table,
3719
+ Table$1,
3720
3720
  {
3721
3721
  loading: props.loading,
3722
3722
  items: props.badges
3723
3723
  }
3724
3724
  ), !props.trial && tab === "students" && /* @__PURE__ */ React.createElement(
3725
- Table$1,
3725
+ Table$2,
3726
3726
  {
3727
3727
  loading: props.loading,
3728
3728
  items: props.students,
@@ -3731,5 +3731,210 @@ const Pathway = (props) => {
3731
3731
  )))))));
3732
3732
  };
3733
3733
 
3734
- 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 };
3735
3940
  //# sourceMappingURL=index.mjs.map