@local-civics/mgmt-ui 0.1.190 → 0.1.192

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -34,35 +34,35 @@ function _interopNamespaceDefault(e) {
34
34
  var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
35
35
  var papa__namespace = /*#__PURE__*/_interopNamespaceDefault(papa);
36
36
 
37
- var __defProp$c = Object.defineProperty;
38
- var __getOwnPropSymbols$c = Object.getOwnPropertySymbols;
39
- var __hasOwnProp$c = Object.prototype.hasOwnProperty;
40
- var __propIsEnum$c = Object.prototype.propertyIsEnumerable;
41
- var __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
42
- var __spreadValues$c = (a, b) => {
37
+ var __defProp$d = Object.defineProperty;
38
+ var __getOwnPropSymbols$d = Object.getOwnPropertySymbols;
39
+ var __hasOwnProp$d = Object.prototype.hasOwnProperty;
40
+ var __propIsEnum$d = Object.prototype.propertyIsEnumerable;
41
+ var __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
42
+ var __spreadValues$d = (a, b) => {
43
43
  for (var prop in b || (b = {}))
44
- if (__hasOwnProp$c.call(b, prop))
45
- __defNormalProp$c(a, prop, b[prop]);
46
- if (__getOwnPropSymbols$c)
47
- for (var prop of __getOwnPropSymbols$c(b)) {
48
- if (__propIsEnum$c.call(b, prop))
49
- __defNormalProp$c(a, prop, b[prop]);
44
+ if (__hasOwnProp$d.call(b, prop))
45
+ __defNormalProp$d(a, prop, b[prop]);
46
+ if (__getOwnPropSymbols$d)
47
+ for (var prop of __getOwnPropSymbols$d(b)) {
48
+ if (__propIsEnum$d.call(b, prop))
49
+ __defNormalProp$d(a, prop, b[prop]);
50
50
  }
51
51
  return a;
52
52
  };
53
53
  var __objRest$2 = (source, exclude) => {
54
54
  var target = {};
55
55
  for (var prop in source)
56
- if (__hasOwnProp$c.call(source, prop) && exclude.indexOf(prop) < 0)
56
+ if (__hasOwnProp$d.call(source, prop) && exclude.indexOf(prop) < 0)
57
57
  target[prop] = source[prop];
58
- if (source != null && __getOwnPropSymbols$c)
59
- for (var prop of __getOwnPropSymbols$c(source)) {
60
- if (exclude.indexOf(prop) < 0 && __propIsEnum$c.call(source, prop))
58
+ if (source != null && __getOwnPropSymbols$d)
59
+ for (var prop of __getOwnPropSymbols$d(source)) {
60
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$d.call(source, prop))
61
61
  target[prop] = source[prop];
62
62
  }
63
63
  return target;
64
64
  };
65
- const useStyles$w = core.createStyles((theme) => ({
65
+ const useStyles$y = core.createStyles((theme) => ({
66
66
  user: {
67
67
  display: "block",
68
68
  width: "100%",
@@ -73,8 +73,8 @@ const useStyles$w = core.createStyles((theme) => ({
73
73
  }));
74
74
  function UserButton(_a) {
75
75
  var _b = _a, { image, name, email, icon } = _b, others = __objRest$2(_b, ["image", "name", "email", "icon"]);
76
- const { classes } = useStyles$w();
77
- return /* @__PURE__ */ React__namespace.createElement(core.Group, __spreadValues$c({ className: classes.user }, others), /* @__PURE__ */ React__namespace.createElement(core.Avatar, { src: image, radius: "xl" }), /* @__PURE__ */ React__namespace.createElement("div", { style: { flex: 1 } }, /* @__PURE__ */ React__namespace.createElement(core.Text, { size: "sm", weight: 500 }, name), /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dimmed", size: "xs" }, email)));
76
+ const { classes } = useStyles$y();
77
+ return /* @__PURE__ */ React__namespace.createElement(core.Group, __spreadValues$d({ className: classes.user }, others), /* @__PURE__ */ React__namespace.createElement(core.Avatar, { src: image, radius: "xl" }), /* @__PURE__ */ React__namespace.createElement("div", { style: { flex: 1 } }, /* @__PURE__ */ React__namespace.createElement(core.Text, { size: "sm", weight: 500 }, name), /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dimmed", size: "xs" }, email)));
78
78
  }
79
79
 
80
80
  const compact = (num) => {
@@ -84,7 +84,7 @@ const compact = (num) => {
84
84
  }).format(num || 0);
85
85
  };
86
86
 
87
- const useStyles$v = core.createStyles((theme, _params, getRef) => {
87
+ const useStyles$x = core.createStyles((theme, _params, getRef) => {
88
88
  const icon = getRef("icon");
89
89
  return {
90
90
  control: {
@@ -137,7 +137,7 @@ const useStyles$v = core.createStyles((theme, _params, getRef) => {
137
137
  };
138
138
  });
139
139
  function LinksGroup({ icon: Icon, href, label, initiallyOpened, links, active, notifications }) {
140
- const { classes, theme, cx } = useStyles$v();
140
+ const { classes, theme, cx } = useStyles$x();
141
141
  const hasLinks = Array.isArray(links) && links.length > 0;
142
142
  const hasActiveLinks = Array.isArray(links) && links.map((l) => !!active && active === `${label}/${l.label}`).reduce((a, b) => a || b, false);
143
143
  const [opened, setOpened] = React.useState(initiallyOpened || hasActiveLinks || false);
@@ -182,26 +182,26 @@ function LinksGroup({ icon: Icon, href, label, initiallyOpened, links, active, n
182
182
  ), hasLinks ? /* @__PURE__ */ React__namespace.createElement(core.Collapse, { in: opened }, items) : null);
183
183
  }
184
184
 
185
- var __defProp$b = Object.defineProperty;
186
- var __defProps$8 = Object.defineProperties;
187
- var __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;
188
- var __getOwnPropSymbols$b = Object.getOwnPropertySymbols;
189
- var __hasOwnProp$b = Object.prototype.hasOwnProperty;
190
- var __propIsEnum$b = Object.prototype.propertyIsEnumerable;
191
- var __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
192
- var __spreadValues$b = (a, b) => {
185
+ var __defProp$c = Object.defineProperty;
186
+ var __defProps$9 = Object.defineProperties;
187
+ var __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors;
188
+ var __getOwnPropSymbols$c = Object.getOwnPropertySymbols;
189
+ var __hasOwnProp$c = Object.prototype.hasOwnProperty;
190
+ var __propIsEnum$c = Object.prototype.propertyIsEnumerable;
191
+ var __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
192
+ var __spreadValues$c = (a, b) => {
193
193
  for (var prop in b || (b = {}))
194
- if (__hasOwnProp$b.call(b, prop))
195
- __defNormalProp$b(a, prop, b[prop]);
196
- if (__getOwnPropSymbols$b)
197
- for (var prop of __getOwnPropSymbols$b(b)) {
198
- if (__propIsEnum$b.call(b, prop))
199
- __defNormalProp$b(a, prop, b[prop]);
194
+ if (__hasOwnProp$c.call(b, prop))
195
+ __defNormalProp$c(a, prop, b[prop]);
196
+ if (__getOwnPropSymbols$c)
197
+ for (var prop of __getOwnPropSymbols$c(b)) {
198
+ if (__propIsEnum$c.call(b, prop))
199
+ __defNormalProp$c(a, prop, b[prop]);
200
200
  }
201
201
  return a;
202
202
  };
203
- var __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));
204
- const useStyles$u = core.createStyles((theme, _params, getRef) => {
203
+ var __spreadProps$9 = (a, b) => __defProps$9(a, __getOwnPropDescs$9(b));
204
+ const useStyles$w = core.createStyles((theme, _params, getRef) => {
205
205
  const icon = getRef("icon");
206
206
  return {
207
207
  navbar: {
@@ -232,7 +232,7 @@ const useStyles$u = core.createStyles((theme, _params, getRef) => {
232
232
  color: theme.colorScheme === "dark" ? theme.white : theme.black,
233
233
  borderBottom: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[4] : theme.colors.gray[3]}`
234
234
  },
235
- link: __spreadProps$8(__spreadValues$b({}, theme.fn.focusStyles()), {
235
+ link: __spreadProps$9(__spreadValues$c({}, theme.fn.focusStyles()), {
236
236
  display: "flex",
237
237
  alignItems: "center",
238
238
  textDecoration: "none",
@@ -286,6 +286,7 @@ const data = [
286
286
  { label: "Pathways", icon: icons.IconRoute },
287
287
  { label: "Badges", icon: icons.IconAlbum },
288
288
  { label: "Lessons", icon: icons.IconLambda },
289
+ { label: "File Locker", icon: icons.IconClipboard },
289
290
  {
290
291
  label: "Organization",
291
292
  icon: icons.IconBuilding,
@@ -301,7 +302,7 @@ const TRIAL_PAGES = [
301
302
  "Badges"
302
303
  ];
303
304
  function Navbar(props) {
304
- const { classes, cx } = useStyles$u();
305
+ const { classes, cx } = useStyles$w();
305
306
  const [burgerOpen, setBurgerOpen] = React__namespace.useState(false);
306
307
  const toggle = () => setBurgerOpen(!burgerOpen);
307
308
  const links = data.map((item) => {
@@ -314,12 +315,12 @@ function Navbar(props) {
314
315
  }
315
316
  return /* @__PURE__ */ React__namespace.createElement(
316
317
  LinksGroup,
317
- __spreadProps$8(__spreadValues$b(__spreadValues$b({
318
+ __spreadProps$9(__spreadValues$c(__spreadValues$c({
318
319
  key: item.label,
319
320
  active: props.active
320
321
  }, item), context), {
321
322
  links: (item.links || []).map((link) => {
322
- return __spreadValues$b(__spreadValues$b({}, link), props.links[`${item.label}/${link.label}`] || { notifications: 0, href: "" });
323
+ return __spreadValues$c(__spreadValues$c({}, link), props.links[`${item.label}/${link.label}`] || { notifications: 0, href: "" });
323
324
  })
324
325
  })
325
326
  );
@@ -344,7 +345,7 @@ function Navbar(props) {
344
345
  } }, /* @__PURE__ */ React__namespace.createElement(icons.IconLogout, { className: classes.linkIcon, stroke: 1.5 }), /* @__PURE__ */ React__namespace.createElement("span", null, "Logout"))))));
345
346
  }
346
347
 
347
- const useStyles$t = core.createStyles((theme) => ({
348
+ const useStyles$v = core.createStyles((theme) => ({
348
349
  inner: {
349
350
  paddingTop: theme.spacing.xl,
350
351
  paddingBottom: theme.spacing.xl * 4
@@ -380,7 +381,7 @@ const useStyles$t = core.createStyles((theme) => ({
380
381
  }
381
382
  }));
382
383
  const GettingStarted = (props) => {
383
- const { classes } = useStyles$t();
384
+ const { classes } = useStyles$v();
384
385
  return /* @__PURE__ */ React__namespace.createElement(
385
386
  core.Modal,
386
387
  {
@@ -394,7 +395,7 @@ const GettingStarted = (props) => {
394
395
  );
395
396
  };
396
397
 
397
- const useStyles$s = core.createStyles((theme) => ({
398
+ const useStyles$u = core.createStyles((theme) => ({
398
399
  title: {
399
400
  fontSize: 34,
400
401
  fontWeight: 900,
@@ -435,7 +436,7 @@ const useStyles$s = core.createStyles((theme) => ({
435
436
  }
436
437
  }));
437
438
  const SwitchAccount = (props) => {
438
- const { classes, theme } = useStyles$s();
439
+ const { classes, theme } = useStyles$u();
439
440
  const options = props.accounts.map((a) => {
440
441
  return /* @__PURE__ */ React__namespace.createElement(core.UnstyledButton, { onClick: () => props.onClick && props.onClick(a.accountId), key: a.accountId, p: theme.spacing.md }, /* @__PURE__ */ React__namespace.createElement(core.Card, { withBorder: true, shadow: "md", radius: "md", className: classes.card, p: "xl" }, a.isAdmin && /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(icons.IconBatteryEco, { size: 50, stroke: 2, color: theme.fn.primaryColor() })), a.isGroupAdmin && !a.isAdmin && /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(icons.IconBooks, { size: 50, stroke: 2, color: theme.fn.primaryColor() })), !a.isAdmin && !a.isGroupAdmin && /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(icons.IconBackpack, { size: 50, stroke: 2, color: theme.fn.primaryColor() })), /* @__PURE__ */ React__namespace.createElement(core.Text, { size: "lg", weight: 500, className: classes.cardTitle, mt: "md" }, a.name), /* @__PURE__ */ React__namespace.createElement(core.Text, { size: "sm", color: "dimmed", mt: "sm" }, a.isAdmin ? "Admin" : a.isGroupAdmin ? "Educator" : "Student")));
441
442
  });
@@ -452,7 +453,7 @@ const SwitchAccount = (props) => {
452
453
  );
453
454
  };
454
455
 
455
- const useStyles$r = core.createStyles((theme) => ({
456
+ const useStyles$t = core.createStyles((theme) => ({
456
457
  root: {
457
458
  display: "flex",
458
459
  backgroundImage: `linear-gradient(-60deg, ${theme.colors[theme.primaryColor][4]} 0%, ${theme.colors[theme.primaryColor][7]} 100%)`,
@@ -496,7 +497,7 @@ const useStyles$r = core.createStyles((theme) => ({
496
497
  }
497
498
  }));
498
499
  const StatsGroup = ({ data, footer }) => {
499
- const { classes } = useStyles$r();
500
+ const { classes } = useStyles$t();
500
501
  const stats = data.map((stat) => {
501
502
  const value = (() => {
502
503
  if (stat.unit === "%") {
@@ -516,7 +517,7 @@ const Tabs = (props) => {
516
517
  return /* @__PURE__ */ React__namespace.createElement(core.Tabs, { value: props.value, onTabChange: props.onChange }, /* @__PURE__ */ React__namespace.createElement(core.Tabs.List, null, tabs));
517
518
  };
518
519
 
519
- const useStyles$q = core.createStyles((theme) => ({
520
+ const useStyles$s = core.createStyles((theme) => ({
520
521
  button: {
521
522
  borderTopRightRadius: 0,
522
523
  borderBottomRightRadius: 0,
@@ -530,8 +531,8 @@ const useStyles$q = core.createStyles((theme) => ({
530
531
  borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
531
532
  }
532
533
  }));
533
- const SplitButton$4 = (props) => {
534
- const { classes, theme } = useStyles$q();
534
+ const SplitButton$5 = (props) => {
535
+ const { classes, theme } = useStyles$s();
535
536
  theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
536
537
  return /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "sm" }, /* @__PURE__ */ React__namespace.createElement(
537
538
  core.Button,
@@ -559,7 +560,7 @@ const SplitButton$4 = (props) => {
559
560
  ));
560
561
  };
561
562
 
562
- const useStyles$p = core.createStyles((theme) => ({
563
+ const useStyles$r = core.createStyles((theme) => ({
563
564
  wrapper: {
564
565
  display: "flex",
565
566
  alignItems: "center",
@@ -610,13 +611,13 @@ const useStyles$p = core.createStyles((theme) => ({
610
611
  }
611
612
  }));
612
613
  const PlaceholderBanner = (props) => {
613
- const { classes } = useStyles$p();
614
+ const { classes } = useStyles$r();
614
615
  const title = props.title || "Nothing to display";
615
616
  const description = props.description || "We don't have anything to show you here just yet. Add data, check back later, or adjust your search.";
616
617
  return /* @__PURE__ */ React__namespace.createElement("div", { className: classes.wrapper }, /* @__PURE__ */ React__namespace.createElement("div", { className: classes.body }, /* @__PURE__ */ React__namespace.createElement(core.Title, { className: classes.title }, props.loading ? "Loading..." : title), /* @__PURE__ */ React__namespace.createElement(core.Text, { size: "sm", color: "dimmed" }, props.loading ? "Hold on, we're loading your data." : description)), /* @__PURE__ */ React__namespace.createElement(core.Image, { src: `https://cdn.localcivics.io/illustrations/${props.icon}.svg`, className: classes.image }));
617
618
  };
618
619
 
619
- function Stack$3(props) {
620
+ function Stack$4(props) {
620
621
  if (props.items.length === 0) {
621
622
  return null;
622
623
  }
@@ -664,28 +665,28 @@ function useSortableData(items, config = { key: "", direction: null }) {
664
665
  return { items: sortedItems, requestSort, sortConfig };
665
666
  }
666
667
 
667
- var __defProp$a = Object.defineProperty;
668
- var __defProps$7 = Object.defineProperties;
669
- var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;
670
- var __getOwnPropSymbols$a = Object.getOwnPropertySymbols;
671
- var __hasOwnProp$a = Object.prototype.hasOwnProperty;
672
- var __propIsEnum$a = Object.prototype.propertyIsEnumerable;
673
- var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
674
- var __spreadValues$a = (a, b) => {
668
+ var __defProp$b = Object.defineProperty;
669
+ var __defProps$8 = Object.defineProperties;
670
+ var __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;
671
+ var __getOwnPropSymbols$b = Object.getOwnPropertySymbols;
672
+ var __hasOwnProp$b = Object.prototype.hasOwnProperty;
673
+ var __propIsEnum$b = Object.prototype.propertyIsEnumerable;
674
+ var __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
675
+ var __spreadValues$b = (a, b) => {
675
676
  for (var prop in b || (b = {}))
676
- if (__hasOwnProp$a.call(b, prop))
677
- __defNormalProp$a(a, prop, b[prop]);
678
- if (__getOwnPropSymbols$a)
679
- for (var prop of __getOwnPropSymbols$a(b)) {
680
- if (__propIsEnum$a.call(b, prop))
681
- __defNormalProp$a(a, prop, b[prop]);
677
+ if (__hasOwnProp$b.call(b, prop))
678
+ __defNormalProp$b(a, prop, b[prop]);
679
+ if (__getOwnPropSymbols$b)
680
+ for (var prop of __getOwnPropSymbols$b(b)) {
681
+ if (__propIsEnum$b.call(b, prop))
682
+ __defNormalProp$b(a, prop, b[prop]);
682
683
  }
683
684
  return a;
684
685
  };
685
- var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
686
- function Table$j(props) {
686
+ var __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));
687
+ function Table$k(props) {
687
688
  const preparedItems = React__namespace.useMemo(() => {
688
- return props.items.map((item) => __spreadProps$7(__spreadValues$a({}, item), {
689
+ return props.items.map((item) => __spreadProps$8(__spreadValues$b({}, item), {
689
690
  status: item.isComplete ? 1 : 0
690
691
  }));
691
692
  }, [props.items]);
@@ -731,13 +732,13 @@ function Table$j(props) {
731
732
  render: (row) => /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, !!row.isComplete && /* @__PURE__ */ React__namespace.createElement(core.Badge, { variant: "filled" }, "Complete"), !row.isComplete && /* @__PURE__ */ React__namespace.createElement(core.Badge, { color: "red", variant: "filled" }, "Incomplete"))
732
733
  }],
733
734
  rowExpansion: {
734
- content: ({ record }) => /* @__PURE__ */ React__namespace.createElement(Stack$3, { items: record.lessons })
735
+ content: ({ record }) => /* @__PURE__ */ React__namespace.createElement(Stack$4, { items: record.lessons })
735
736
  }
736
737
  }
737
738
  ));
738
739
  }
739
740
 
740
- function Table$i(props) {
741
+ function Table$j(props) {
741
742
  const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
742
743
  if (props.items.length === 0) {
743
744
  return /* @__PURE__ */ React__namespace.createElement(
@@ -782,7 +783,7 @@ function Table$i(props) {
782
783
  ));
783
784
  }
784
785
 
785
- const useStyles$o = core.createStyles((theme) => ({
786
+ const useStyles$q = core.createStyles((theme) => ({
786
787
  title: {
787
788
  fontSize: 34,
788
789
  fontWeight: 900,
@@ -795,7 +796,7 @@ const useStyles$o = core.createStyles((theme) => ({
795
796
  }
796
797
  }));
797
798
  const Badge = (props) => {
798
- const { classes } = useStyles$o();
799
+ const { classes } = useStyles$q();
799
800
  const [tab, setTab] = React.useState("lessons");
800
801
  const numberOfStudents = props.students.length;
801
802
  const numberOfBadges = numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length : 0;
@@ -809,7 +810,7 @@ const Badge = (props) => {
809
810
  },
810
811
  "Back"
811
812
  )), /* @__PURE__ */ React__namespace.createElement(core.Group, null, /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: 0 }, /* @__PURE__ */ React__namespace.createElement(core.Title, { order: 2, className: classes.title, mt: "md" }, props.displayName || "Badge"), /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description")), !props.trial && /* @__PURE__ */ React__namespace.createElement(core.Stack, { ml: "auto" }, /* @__PURE__ */ React__namespace.createElement(
812
- SplitButton$4,
813
+ SplitButton$5,
813
814
  {
814
815
  href: props.href,
815
816
  onCopyLinkClick: props.onCopyLinkClick,
@@ -847,13 +848,13 @@ const Badge = (props) => {
847
848
  onChange: setTab
848
849
  }
849
850
  ), (!!props.trial || tab === "lessons") && /* @__PURE__ */ React__namespace.createElement(
850
- Table$i,
851
+ Table$j,
851
852
  {
852
853
  loading: props.loading,
853
854
  items: props.lessons
854
855
  }
855
856
  ), !props.trial && tab === "students" && /* @__PURE__ */ React__namespace.createElement(
856
- Table$j,
857
+ Table$k,
857
858
  {
858
859
  loading: props.loading,
859
860
  items: props.students
@@ -861,7 +862,7 @@ const Badge = (props) => {
861
862
  )))))));
862
863
  };
863
864
 
864
- function Table$h(props) {
865
+ function Table$i(props) {
865
866
  if (props.items.length === 0) {
866
867
  return /* @__PURE__ */ React__namespace.createElement(
867
868
  PlaceholderBanner,
@@ -893,7 +894,7 @@ function Table$h(props) {
893
894
  return /* @__PURE__ */ React__namespace.createElement(core.ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React__namespace.createElement(core.Table, { horizontalSpacing: 0, verticalSpacing: 0, sx: { minWidth: 700 } }, /* @__PURE__ */ React__namespace.createElement("tbody", null, rows)));
894
895
  }
895
896
 
896
- const useStyles$n = core.createStyles((theme) => ({
897
+ const useStyles$p = core.createStyles((theme) => ({
897
898
  title: {
898
899
  fontSize: 34,
899
900
  fontWeight: 900,
@@ -906,7 +907,7 @@ const useStyles$n = core.createStyles((theme) => ({
906
907
  }
907
908
  }));
908
909
  const Badges = (props) => {
909
- const { classes } = useStyles$n();
910
+ const { classes } = useStyles$p();
910
911
  return /* @__PURE__ */ React__namespace.createElement(core.Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "md" }, /* @__PURE__ */ React__namespace.createElement(core.Grid, null, /* @__PURE__ */ React__namespace.createElement(core.Grid.Col, { sm: "auto" }, /* @__PURE__ */ React__namespace.createElement(core.Badge, { variant: "filled", size: "lg" }, "Badges"), /* @__PURE__ */ React__namespace.createElement(core.Title, { order: 2, className: classes.title, mt: "md" }, "Badges and micro-credentials"), /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dimmed", className: classes.description, mt: "sm" }, "Key milestones that reflect skill development, micro-credentials, or academic progress"))), /* @__PURE__ */ React__namespace.createElement(
911
912
  core.Autocomplete,
912
913
  {
@@ -915,7 +916,7 @@ const Badges = (props) => {
915
916
  onChange: props.onAutocompleteChange
916
917
  }
917
918
  ), /* @__PURE__ */ React__namespace.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React__namespace.createElement(core.LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React__namespace.createElement(
918
- Table$h,
919
+ Table$i,
919
920
  {
920
921
  loading: props.loading,
921
922
  items: props.badges
@@ -923,7 +924,7 @@ const Badges = (props) => {
923
924
  ))));
924
925
  };
925
926
 
926
- function Table$g(props) {
927
+ function Table$h(props) {
927
928
  if (props.items.length === 0) {
928
929
  return /* @__PURE__ */ React__namespace.createElement(
929
930
  PlaceholderBanner,
@@ -963,7 +964,7 @@ function relativeTimeFromElapsed(elapsed) {
963
964
  return "";
964
965
  }
965
966
 
966
- function Table$f(props) {
967
+ function Table$g(props) {
967
968
  if (props.items.length === 0) {
968
969
  return /* @__PURE__ */ React__namespace.createElement(
969
970
  PlaceholderBanner,
@@ -979,7 +980,7 @@ function Table$f(props) {
979
980
  return /* @__PURE__ */ React__namespace.createElement(core.ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React__namespace.createElement(core.Table, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React__namespace.createElement("thead", null, /* @__PURE__ */ React__namespace.createElement("tr", null, /* @__PURE__ */ React__namespace.createElement("th", null, "Student Name"), /* @__PURE__ */ React__namespace.createElement("th", null, "Lesson Name"), /* @__PURE__ */ React__namespace.createElement("th", null, "Reflection"), /* @__PURE__ */ React__namespace.createElement("th", null, "Updated At"))), /* @__PURE__ */ React__namespace.createElement("tbody", null, rows)));
980
981
  }
981
982
 
982
- function Table$e(props) {
983
+ function Table$f(props) {
983
984
  if (props.items.length === 0) {
984
985
  return /* @__PURE__ */ React__namespace.createElement(
985
986
  PlaceholderBanner,
@@ -995,7 +996,7 @@ function Table$e(props) {
995
996
  return /* @__PURE__ */ React__namespace.createElement(core.ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React__namespace.createElement(core.Table, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React__namespace.createElement("thead", null, /* @__PURE__ */ React__namespace.createElement("tr", null, /* @__PURE__ */ React__namespace.createElement("th", null, "Student Name"), /* @__PURE__ */ React__namespace.createElement("th", null, "Impact Statement"))), /* @__PURE__ */ React__namespace.createElement("tbody", null, rows)));
996
997
  }
997
998
 
998
- function Table$d(props) {
999
+ function Table$e(props) {
999
1000
  if (props.items.length === 0) {
1000
1001
  return /* @__PURE__ */ React__namespace.createElement(
1001
1002
  PlaceholderBanner,
@@ -1011,7 +1012,7 @@ function Table$d(props) {
1011
1012
  return /* @__PURE__ */ React__namespace.createElement(core.ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React__namespace.createElement(core.Table, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React__namespace.createElement("thead", null, /* @__PURE__ */ React__namespace.createElement("tr", null, /* @__PURE__ */ React__namespace.createElement("th", null, "Badge Name"), /* @__PURE__ */ React__namespace.createElement("th", null, "Description"), /* @__PURE__ */ React__namespace.createElement("th", null, "Completion"))), /* @__PURE__ */ React__namespace.createElement("tbody", null, rows)));
1012
1013
  }
1013
1014
 
1014
- function Table$c(props) {
1015
+ function Table$d(props) {
1015
1016
  if (props.items.length === 0) {
1016
1017
  return /* @__PURE__ */ React__namespace.createElement(
1017
1018
  PlaceholderBanner,
@@ -1076,33 +1077,33 @@ const Dashboard = (props) => {
1076
1077
  onChange: setTab
1077
1078
  }
1078
1079
  ), tab === "impact" && /* @__PURE__ */ React__namespace.createElement(
1079
- Table$e,
1080
+ Table$f,
1080
1081
  {
1081
1082
  loading: props.loading,
1082
1083
  items: props.impacts
1083
1084
  }
1084
1085
  ), tab === "reflections" && /* @__PURE__ */ React__namespace.createElement(
1085
- Table$f,
1086
+ Table$g,
1086
1087
  {
1087
1088
  loading: props.loading,
1088
1089
  items: props.reflections
1089
1090
  }
1090
1091
  ), tab === "badges" && /* @__PURE__ */ React__namespace.createElement(
1091
- Table$d,
1092
+ Table$e,
1092
1093
  {
1093
1094
  loading: props.loading,
1094
1095
  items: props.badges,
1095
1096
  onClick: props.onBadgeClick
1096
1097
  }
1097
1098
  ), tab === "lessons" && /* @__PURE__ */ React__namespace.createElement(
1098
- Table$c,
1099
+ Table$d,
1099
1100
  {
1100
1101
  loading: props.loading,
1101
1102
  items: props.lessons,
1102
1103
  onClick: props.onLessonClick
1103
1104
  }
1104
1105
  ), tab === "students" && /* @__PURE__ */ React__namespace.createElement(
1105
- Table$g,
1106
+ Table$h,
1106
1107
  {
1107
1108
  loading: props.loading,
1108
1109
  items: props.students,
@@ -1111,7 +1112,7 @@ const Dashboard = (props) => {
1111
1112
  )))))));
1112
1113
  };
1113
1114
 
1114
- const SplitButton$3 = (props) => {
1115
+ const SplitButton$4 = (props) => {
1115
1116
  return /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "sm" }, /* @__PURE__ */ React__namespace.createElement(
1116
1117
  core.Button,
1117
1118
  {
@@ -1136,7 +1137,7 @@ const SplitButton$3 = (props) => {
1136
1137
  ));
1137
1138
  };
1138
1139
 
1139
- const useStyles$m = core.createStyles((theme) => ({
1140
+ const useStyles$o = core.createStyles((theme) => ({
1140
1141
  th: { padding: "0 !important" },
1141
1142
  control: {
1142
1143
  width: "100%",
@@ -1147,11 +1148,11 @@ const useStyles$m = core.createStyles((theme) => ({
1147
1148
  }
1148
1149
  }));
1149
1150
  function Th$2({ children, reversed, sorted, onSort }) {
1150
- const { classes } = useStyles$m();
1151
+ const { classes } = useStyles$o();
1151
1152
  const Icon = sorted ? reversed ? icons.IconChevronUp : icons.IconChevronDown : icons.IconSelector;
1152
1153
  return /* @__PURE__ */ React__namespace.createElement("th", { className: classes.th }, /* @__PURE__ */ React__namespace.createElement(core.UnstyledButton, { onClick: onSort, className: classes.control }, /* @__PURE__ */ React__namespace.createElement(core.Group, { position: "apart", noWrap: true, spacing: "xs" }, /* @__PURE__ */ React__namespace.createElement(core.Text, { weight: 500, size: "sm", sx: { whiteSpace: "nowrap" } }, children), /* @__PURE__ */ React__namespace.createElement(core.Center, null, /* @__PURE__ */ React__namespace.createElement(Icon, { size: 14, stroke: 1.5 })))));
1153
1154
  }
1154
- function Table$b(props) {
1155
+ function Table$c(props) {
1155
1156
  const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
1156
1157
  if (props.items.length === 0) {
1157
1158
  return /* @__PURE__ */ React__namespace.createElement(
@@ -1232,26 +1233,26 @@ function Table$b(props) {
1232
1233
  ), /* @__PURE__ */ React__namespace.createElement("th", null), " ")), /* @__PURE__ */ React__namespace.createElement("tbody", null, rows)));
1233
1234
  }
1234
1235
 
1235
- var __defProp$9 = Object.defineProperty;
1236
- var __defProps$6 = Object.defineProperties;
1237
- var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;
1238
- var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;
1239
- var __hasOwnProp$9 = Object.prototype.hasOwnProperty;
1240
- var __propIsEnum$9 = Object.prototype.propertyIsEnumerable;
1241
- var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1242
- var __spreadValues$9 = (a, b) => {
1236
+ var __defProp$a = Object.defineProperty;
1237
+ var __defProps$7 = Object.defineProperties;
1238
+ var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;
1239
+ var __getOwnPropSymbols$a = Object.getOwnPropertySymbols;
1240
+ var __hasOwnProp$a = Object.prototype.hasOwnProperty;
1241
+ var __propIsEnum$a = Object.prototype.propertyIsEnumerable;
1242
+ var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1243
+ var __spreadValues$a = (a, b) => {
1243
1244
  for (var prop in b || (b = {}))
1244
- if (__hasOwnProp$9.call(b, prop))
1245
- __defNormalProp$9(a, prop, b[prop]);
1246
- if (__getOwnPropSymbols$9)
1247
- for (var prop of __getOwnPropSymbols$9(b)) {
1248
- if (__propIsEnum$9.call(b, prop))
1249
- __defNormalProp$9(a, prop, b[prop]);
1245
+ if (__hasOwnProp$a.call(b, prop))
1246
+ __defNormalProp$a(a, prop, b[prop]);
1247
+ if (__getOwnPropSymbols$a)
1248
+ for (var prop of __getOwnPropSymbols$a(b)) {
1249
+ if (__propIsEnum$a.call(b, prop))
1250
+ __defNormalProp$a(a, prop, b[prop]);
1250
1251
  }
1251
1252
  return a;
1252
1253
  };
1253
- var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
1254
- const useStyles$l = core.createStyles((theme) => ({
1254
+ var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
1255
+ const useStyles$n = core.createStyles((theme) => ({
1255
1256
  title: {
1256
1257
  fontSize: 34,
1257
1258
  fontWeight: 900,
@@ -1284,7 +1285,7 @@ const useStyles$l = core.createStyles((theme) => ({
1284
1285
  }
1285
1286
  }));
1286
1287
  const Class = (props) => {
1287
- const { classes } = useStyles$l();
1288
+ const { classes } = useStyles$n();
1288
1289
  const form$1 = form.useForm({
1289
1290
  initialValues: {
1290
1291
  classId: "",
@@ -1316,27 +1317,27 @@ const Class = (props) => {
1316
1317
  padding: "xl",
1317
1318
  size: "xl"
1318
1319
  },
1319
- /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "md" }, /* @__PURE__ */ React__namespace.createElement(DropzoneButton$1, __spreadProps$6(__spreadValues$9({}, props), { close: () => setOpened(false) })), /* @__PURE__ */ React__namespace.createElement(core.Divider, { label: "or", labelPosition: "center", my: "md", variant: "dashed" }), /* @__PURE__ */ React__namespace.createElement("form", { onSubmit: form$1.onSubmit(() => {
1320
+ /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "md" }, /* @__PURE__ */ React__namespace.createElement(DropzoneButton$1, __spreadProps$7(__spreadValues$a({}, props), { close: () => setOpened(false) })), /* @__PURE__ */ React__namespace.createElement(core.Divider, { label: "or", labelPosition: "center", my: "md", variant: "dashed" }), /* @__PURE__ */ React__namespace.createElement("form", { onSubmit: form$1.onSubmit(() => {
1320
1321
  const values = form$1.values;
1321
1322
  form$1.reset();
1322
1323
  setOpened(false);
1323
1324
  props.onCreateMembers && props.onCreateMembers([values]);
1324
1325
  }) }, /* @__PURE__ */ React__namespace.createElement(core.Stack, null, /* @__PURE__ */ React__namespace.createElement(
1325
1326
  core.TextInput,
1326
- __spreadValues$9({
1327
+ __spreadValues$a({
1327
1328
  withAsterisk: true,
1328
1329
  label: "Email",
1329
1330
  placeholder: "Email"
1330
1331
  }, form$1.getInputProps("email"))
1331
1332
  ), /* @__PURE__ */ React__namespace.createElement(core.Group, { grow: true }, /* @__PURE__ */ React__namespace.createElement(
1332
1333
  core.TextInput,
1333
- __spreadValues$9({
1334
+ __spreadValues$a({
1334
1335
  label: "Given name",
1335
1336
  placeholder: "Given name"
1336
1337
  }, form$1.getInputProps("givenName"))
1337
1338
  ), /* @__PURE__ */ React__namespace.createElement(
1338
1339
  core.TextInput,
1339
- __spreadValues$9({
1340
+ __spreadValues$a({
1340
1341
  label: "Family name",
1341
1342
  placeholder: "Family name"
1342
1343
  }, form$1.getInputProps("familyName"))
@@ -1350,7 +1351,7 @@ const Class = (props) => {
1350
1351
  },
1351
1352
  "Back"
1352
1353
  )), /* @__PURE__ */ React__namespace.createElement(core.Title, { order: 2, className: classes.title, mt: "md" }, props.displayName || "Class"), /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description")), /* @__PURE__ */ React__namespace.createElement(core.Grid.Col, { sm: "content" }, !props.loading && /* @__PURE__ */ React__namespace.createElement(
1353
- SplitButton$3,
1354
+ SplitButton$4,
1354
1355
  {
1355
1356
  onAddMembersClick: () => setOpened(true),
1356
1357
  onCopyClassLinkClick: props.onCopyLinkClick,
@@ -1375,7 +1376,7 @@ const Class = (props) => {
1375
1376
  value: props.numberOfLessonsCompleted
1376
1377
  }
1377
1378
  ] }), /* @__PURE__ */ React__namespace.createElement(
1378
- Table$b,
1379
+ Table$c,
1379
1380
  {
1380
1381
  loading: props.loading,
1381
1382
  items: props.members,
@@ -1385,7 +1386,7 @@ const Class = (props) => {
1385
1386
  ))))));
1386
1387
  };
1387
1388
  const DropzoneButton$1 = (props) => {
1388
- const { classes, theme } = useStyles$l();
1389
+ const { classes, theme } = useStyles$n();
1389
1390
  const openRef = React__namespace.useRef(null);
1390
1391
  const [loading, setLoading] = React__namespace.useState(false);
1391
1392
  const onDrop = React__namespace.useCallback((acceptedFiles) => {
@@ -1431,7 +1432,7 @@ const DropzoneButton$1 = (props) => {
1431
1432
  } }, "Select file"));
1432
1433
  };
1433
1434
 
1434
- const useStyles$k = core.createStyles((theme) => ({
1435
+ const useStyles$m = core.createStyles((theme) => ({
1435
1436
  th: { padding: "0 !important" },
1436
1437
  control: {
1437
1438
  width: "100%",
@@ -1442,11 +1443,11 @@ const useStyles$k = core.createStyles((theme) => ({
1442
1443
  }
1443
1444
  }));
1444
1445
  function Th$1({ children, reversed, sorted, onSort }) {
1445
- const { classes } = useStyles$k();
1446
+ const { classes } = useStyles$m();
1446
1447
  const Icon = sorted ? reversed ? icons.IconChevronUp : icons.IconChevronDown : icons.IconSelector;
1447
1448
  return /* @__PURE__ */ React__namespace.createElement("th", { className: classes.th }, /* @__PURE__ */ React__namespace.createElement(core.UnstyledButton, { onClick: onSort, className: classes.control }, /* @__PURE__ */ React__namespace.createElement(core.Group, { position: "apart", noWrap: true, spacing: "xs" }, /* @__PURE__ */ React__namespace.createElement(core.Text, { weight: 500, size: "sm", sx: { whiteSpace: "nowrap" } }, children), /* @__PURE__ */ React__namespace.createElement(core.Center, null, /* @__PURE__ */ React__namespace.createElement(Icon, { size: 14, stroke: 1.5 })))));
1448
1449
  }
1449
- function Table$a(props) {
1450
+ function Table$b(props) {
1450
1451
  const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
1451
1452
  if (props.items.length === 0) {
1452
1453
  return /* @__PURE__ */ React__namespace.createElement(
@@ -1487,23 +1488,23 @@ function Table$a(props) {
1487
1488
  ), /* @__PURE__ */ React__namespace.createElement("th", null))), /* @__PURE__ */ React__namespace.createElement("tbody", null, rows)));
1488
1489
  }
1489
1490
 
1490
- var __defProp$8 = Object.defineProperty;
1491
- var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;
1492
- var __hasOwnProp$8 = Object.prototype.hasOwnProperty;
1493
- var __propIsEnum$8 = Object.prototype.propertyIsEnumerable;
1494
- var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1495
- var __spreadValues$8 = (a, b) => {
1491
+ var __defProp$9 = Object.defineProperty;
1492
+ var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;
1493
+ var __hasOwnProp$9 = Object.prototype.hasOwnProperty;
1494
+ var __propIsEnum$9 = Object.prototype.propertyIsEnumerable;
1495
+ var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1496
+ var __spreadValues$9 = (a, b) => {
1496
1497
  for (var prop in b || (b = {}))
1497
- if (__hasOwnProp$8.call(b, prop))
1498
- __defNormalProp$8(a, prop, b[prop]);
1499
- if (__getOwnPropSymbols$8)
1500
- for (var prop of __getOwnPropSymbols$8(b)) {
1501
- if (__propIsEnum$8.call(b, prop))
1502
- __defNormalProp$8(a, prop, b[prop]);
1498
+ if (__hasOwnProp$9.call(b, prop))
1499
+ __defNormalProp$9(a, prop, b[prop]);
1500
+ if (__getOwnPropSymbols$9)
1501
+ for (var prop of __getOwnPropSymbols$9(b)) {
1502
+ if (__propIsEnum$9.call(b, prop))
1503
+ __defNormalProp$9(a, prop, b[prop]);
1503
1504
  }
1504
1505
  return a;
1505
1506
  };
1506
- const useStyles$j = core.createStyles((theme) => ({
1507
+ const useStyles$l = core.createStyles((theme) => ({
1507
1508
  title: {
1508
1509
  fontSize: 34,
1509
1510
  fontWeight: 900,
@@ -1516,7 +1517,7 @@ const useStyles$j = core.createStyles((theme) => ({
1516
1517
  }
1517
1518
  }));
1518
1519
  const Classes = (props) => {
1519
- const { classes } = useStyles$j();
1520
+ const { classes } = useStyles$l();
1520
1521
  const form$1 = form.useForm({
1521
1522
  initialValues: {
1522
1523
  classId: "",
@@ -1546,14 +1547,14 @@ const Classes = (props) => {
1546
1547
  props.onCreateClass && props.onCreateClass(values);
1547
1548
  }) }, /* @__PURE__ */ React__namespace.createElement(core.Stack, null, /* @__PURE__ */ React__namespace.createElement(
1548
1549
  core.TextInput,
1549
- __spreadValues$8({
1550
+ __spreadValues$9({
1550
1551
  withAsterisk: true,
1551
1552
  label: "Name",
1552
1553
  placeholder: "Class name"
1553
1554
  }, form$1.getInputProps("name"))
1554
1555
  ), /* @__PURE__ */ React__namespace.createElement(
1555
1556
  core.TextInput,
1556
- __spreadValues$8({
1557
+ __spreadValues$9({
1557
1558
  label: "Description",
1558
1559
  placeholder: "A class for my first period English students"
1559
1560
  }, form$1.getInputProps("description"))
@@ -1578,7 +1579,7 @@ const Classes = (props) => {
1578
1579
  onChange: props.onAutocompleteChange
1579
1580
  }
1580
1581
  ), /* @__PURE__ */ React__namespace.createElement(
1581
- Table$a,
1582
+ Table$b,
1582
1583
  {
1583
1584
  loading: props.loading,
1584
1585
  items: props.classes,
@@ -1587,7 +1588,7 @@ const Classes = (props) => {
1587
1588
  ))))));
1588
1589
  };
1589
1590
 
1590
- const useStyles$i = core.createStyles((theme) => ({
1591
+ const useStyles$k = core.createStyles((theme) => ({
1591
1592
  title: {
1592
1593
  fontSize: 34,
1593
1594
  fontWeight: 900,
@@ -1601,11 +1602,11 @@ const useStyles$i = core.createStyles((theme) => ({
1601
1602
  }
1602
1603
  }));
1603
1604
  const UserInfo = (props) => {
1604
- const { classes } = useStyles$i();
1605
+ const { classes } = useStyles$k();
1605
1606
  return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(core.Title, { className: classes.title }, props.name), /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dimmed", className: classes.description, mt: "xs" }, props.impactStatement));
1606
1607
  };
1607
1608
 
1608
- function Table$9(props) {
1609
+ function Table$a(props) {
1609
1610
  if (props.items.length === 0) {
1610
1611
  return /* @__PURE__ */ React__namespace.createElement(
1611
1612
  PlaceholderBanner,
@@ -1641,7 +1642,7 @@ function Table$9(props) {
1641
1642
  ));
1642
1643
  }
1643
1644
 
1644
- function Table$8(props) {
1645
+ function Table$9(props) {
1645
1646
  if (props.items.length === 0) {
1646
1647
  return /* @__PURE__ */ React__namespace.createElement(
1647
1648
  PlaceholderBanner,
@@ -1657,7 +1658,7 @@ function Table$8(props) {
1657
1658
  return /* @__PURE__ */ React__namespace.createElement(core.ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React__namespace.createElement(core.Table, { verticalSpacing: "sm", sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React__namespace.createElement("thead", null, /* @__PURE__ */ React__namespace.createElement("tr", null, /* @__PURE__ */ React__namespace.createElement("th", null, "Lesson Name"), /* @__PURE__ */ React__namespace.createElement("th", null, "Question"), /* @__PURE__ */ React__namespace.createElement("th", null, "Answer"))), /* @__PURE__ */ React__namespace.createElement("tbody", null, rows)));
1658
1659
  }
1659
1660
 
1660
- function Table$7(props) {
1661
+ function Table$8(props) {
1661
1662
  if (props.items.length === 0) {
1662
1663
  return /* @__PURE__ */ React__namespace.createElement(
1663
1664
  PlaceholderBanner,
@@ -1719,19 +1720,19 @@ const Student = (props) => {
1719
1720
  onChange: setTab
1720
1721
  }
1721
1722
  ), tab === "badges" && /* @__PURE__ */ React__namespace.createElement(
1722
- Table$9,
1723
+ Table$a,
1723
1724
  {
1724
1725
  loading: props.loading,
1725
1726
  items: props.badges
1726
1727
  }
1727
1728
  ), tab === "answers" && /* @__PURE__ */ React__namespace.createElement(
1728
- Table$8,
1729
+ Table$9,
1729
1730
  {
1730
1731
  loading: props.loading,
1731
1732
  items: props.answers
1732
1733
  }
1733
1734
  ), tab === "reflections" && /* @__PURE__ */ React__namespace.createElement(
1734
- Table$7,
1735
+ Table$8,
1735
1736
  {
1736
1737
  loading: props.loading,
1737
1738
  items: props.reflections
@@ -1739,7 +1740,7 @@ const Student = (props) => {
1739
1740
  ))))));
1740
1741
  };
1741
1742
 
1742
- const useStyles$h = core.createStyles((theme, props) => {
1743
+ const useStyles$j = core.createStyles((theme, props) => {
1743
1744
  const from = props.from || "blue";
1744
1745
  const to = props.to || "green";
1745
1746
  return {
@@ -1767,7 +1768,7 @@ const useStyles$h = core.createStyles((theme, props) => {
1767
1768
  };
1768
1769
  });
1769
1770
  function CardGradient(props) {
1770
- const { classes } = useStyles$h(props);
1771
+ const { classes } = useStyles$j(props);
1771
1772
  const from = props.from || "blue";
1772
1773
  const to = props.to || "green";
1773
1774
  const icon = props.icon || /* @__PURE__ */ React__namespace.createElement(icons.IconColorSwatch, { size: 28, stroke: 1.5 });
@@ -1783,35 +1784,35 @@ function CardGradient(props) {
1783
1784
  ), /* @__PURE__ */ React__namespace.createElement(core.Text, { size: "xl", weight: 500, mt: "md" }, props.title), /* @__PURE__ */ React__namespace.createElement(core.Text, { size: "sm", mt: "sm", color: "dimmed" }, props.description));
1784
1785
  }
1785
1786
 
1786
- var __defProp$7 = Object.defineProperty;
1787
- var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;
1788
- var __hasOwnProp$7 = Object.prototype.hasOwnProperty;
1789
- var __propIsEnum$7 = Object.prototype.propertyIsEnumerable;
1790
- var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1791
- var __spreadValues$7 = (a, b) => {
1787
+ var __defProp$8 = Object.defineProperty;
1788
+ var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;
1789
+ var __hasOwnProp$8 = Object.prototype.hasOwnProperty;
1790
+ var __propIsEnum$8 = Object.prototype.propertyIsEnumerable;
1791
+ var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1792
+ var __spreadValues$8 = (a, b) => {
1792
1793
  for (var prop in b || (b = {}))
1793
- if (__hasOwnProp$7.call(b, prop))
1794
- __defNormalProp$7(a, prop, b[prop]);
1795
- if (__getOwnPropSymbols$7)
1796
- for (var prop of __getOwnPropSymbols$7(b)) {
1797
- if (__propIsEnum$7.call(b, prop))
1798
- __defNormalProp$7(a, prop, b[prop]);
1794
+ if (__hasOwnProp$8.call(b, prop))
1795
+ __defNormalProp$8(a, prop, b[prop]);
1796
+ if (__getOwnPropSymbols$8)
1797
+ for (var prop of __getOwnPropSymbols$8(b)) {
1798
+ if (__propIsEnum$8.call(b, prop))
1799
+ __defNormalProp$8(a, prop, b[prop]);
1799
1800
  }
1800
1801
  return a;
1801
1802
  };
1802
1803
  var __objRest$1 = (source, exclude) => {
1803
1804
  var target = {};
1804
1805
  for (var prop in source)
1805
- if (__hasOwnProp$7.call(source, prop) && exclude.indexOf(prop) < 0)
1806
+ if (__hasOwnProp$8.call(source, prop) && exclude.indexOf(prop) < 0)
1806
1807
  target[prop] = source[prop];
1807
- if (source != null && __getOwnPropSymbols$7)
1808
- for (var prop of __getOwnPropSymbols$7(source)) {
1809
- if (exclude.indexOf(prop) < 0 && __propIsEnum$7.call(source, prop))
1808
+ if (source != null && __getOwnPropSymbols$8)
1809
+ for (var prop of __getOwnPropSymbols$8(source)) {
1810
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$8.call(source, prop))
1810
1811
  target[prop] = source[prop];
1811
1812
  }
1812
1813
  return target;
1813
1814
  };
1814
- const useStyles$g = core.createStyles((theme) => ({
1815
+ const useStyles$i = core.createStyles((theme) => ({
1815
1816
  card: {
1816
1817
  height: 240,
1817
1818
  backgroundSize: "cover",
@@ -1856,7 +1857,7 @@ const TenantBanner = (_a) => {
1856
1857
  "className",
1857
1858
  "code"
1858
1859
  ]);
1859
- const { classes, cx, theme } = useStyles$g();
1860
+ const { classes, cx, theme } = useStyles$i();
1860
1861
  const handleCopy = async () => {
1861
1862
  if (!code)
1862
1863
  return;
@@ -1873,9 +1874,9 @@ const TenantBanner = (_a) => {
1873
1874
  };
1874
1875
  return /* @__PURE__ */ React__namespace.createElement(
1875
1876
  core.Card,
1876
- __spreadValues$7({
1877
+ __spreadValues$8({
1877
1878
  radius: "md",
1878
- style: __spreadValues$7({ backgroundImage: `url(${image})` }, style),
1879
+ style: __spreadValues$8({ backgroundImage: `url(${image})` }, style),
1879
1880
  className: cx(classes.card, className)
1880
1881
  }, others),
1881
1882
  /* @__PURE__ */ React__namespace.createElement(
@@ -1954,10 +1955,17 @@ const Home = (props) => {
1954
1955
  description: "Bite-sized activities and learning experiences accelerating students achievement",
1955
1956
  onClick: props.onLessonsClick
1956
1957
  }
1958
+ )), /* @__PURE__ */ React__namespace.createElement(core.Grid.Col, null, /* @__PURE__ */ React__namespace.createElement(
1959
+ CardGradient,
1960
+ {
1961
+ title: "File Locker",
1962
+ description: "A secure space to view student-submitted work and provide feedback",
1963
+ onClick: props.onFileLockerClick
1964
+ }
1957
1965
  )))));
1958
1966
  };
1959
1967
 
1960
- function Table$6(props) {
1968
+ function Table$7(props) {
1961
1969
  const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
1962
1970
  if (props.items.length === 0) {
1963
1971
  return /* @__PURE__ */ React__namespace.createElement(
@@ -1989,7 +1997,7 @@ function Table$6(props) {
1989
1997
  ));
1990
1998
  }
1991
1999
 
1992
- const useStyles$f = core.createStyles((theme) => ({
2000
+ const useStyles$h = core.createStyles((theme) => ({
1993
2001
  button: {
1994
2002
  borderTopRightRadius: 0,
1995
2003
  borderBottomRightRadius: 0,
@@ -2003,8 +2011,8 @@ const useStyles$f = core.createStyles((theme) => ({
2003
2011
  borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
2004
2012
  }
2005
2013
  }));
2006
- const SplitButton$2 = (props) => {
2007
- const { classes, theme } = useStyles$f();
2014
+ const SplitButton$3 = (props) => {
2015
+ const { classes, theme } = useStyles$h();
2008
2016
  theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
2009
2017
  return /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "sm" }, /* @__PURE__ */ React__namespace.createElement(
2010
2018
  core.Button,
@@ -2033,7 +2041,7 @@ const SplitButton$2 = (props) => {
2033
2041
  ));
2034
2042
  };
2035
2043
 
2036
- function Stack$2(props) {
2044
+ function Stack$3(props) {
2037
2045
  if (props.items.length === 0) {
2038
2046
  return null;
2039
2047
  }
@@ -2041,28 +2049,28 @@ function Stack$2(props) {
2041
2049
  return /* @__PURE__ */ React__namespace.createElement(core.ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React__namespace.createElement(core.UnstyledButton, { component: reactRouterDom.Link, to: props.href }, /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: 24, sx: { padding: 20, minWidth: 700 } }, rows)));
2042
2050
  }
2043
2051
 
2044
- var __defProp$6 = Object.defineProperty;
2045
- var __defProps$5 = Object.defineProperties;
2046
- var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;
2047
- var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;
2048
- var __hasOwnProp$6 = Object.prototype.hasOwnProperty;
2049
- var __propIsEnum$6 = Object.prototype.propertyIsEnumerable;
2050
- var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2051
- var __spreadValues$6 = (a, b) => {
2052
+ var __defProp$7 = Object.defineProperty;
2053
+ var __defProps$6 = Object.defineProperties;
2054
+ var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;
2055
+ var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;
2056
+ var __hasOwnProp$7 = Object.prototype.hasOwnProperty;
2057
+ var __propIsEnum$7 = Object.prototype.propertyIsEnumerable;
2058
+ var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2059
+ var __spreadValues$7 = (a, b) => {
2052
2060
  for (var prop in b || (b = {}))
2053
- if (__hasOwnProp$6.call(b, prop))
2054
- __defNormalProp$6(a, prop, b[prop]);
2055
- if (__getOwnPropSymbols$6)
2056
- for (var prop of __getOwnPropSymbols$6(b)) {
2057
- if (__propIsEnum$6.call(b, prop))
2058
- __defNormalProp$6(a, prop, b[prop]);
2061
+ if (__hasOwnProp$7.call(b, prop))
2062
+ __defNormalProp$7(a, prop, b[prop]);
2063
+ if (__getOwnPropSymbols$7)
2064
+ for (var prop of __getOwnPropSymbols$7(b)) {
2065
+ if (__propIsEnum$7.call(b, prop))
2066
+ __defNormalProp$7(a, prop, b[prop]);
2059
2067
  }
2060
2068
  return a;
2061
2069
  };
2062
- var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
2063
- function Table$5(props) {
2070
+ var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
2071
+ function Table$6(props) {
2064
2072
  const preparedItems = React__namespace.useMemo(() => {
2065
- return props.items.map((item) => __spreadProps$5(__spreadValues$6({}, item), {
2073
+ return props.items.map((item) => __spreadProps$6(__spreadValues$7({}, item), {
2066
2074
  status: item.isComplete ? 2 : item.isStarted ? 1 : 0
2067
2075
  }));
2068
2076
  }, [props.items]);
@@ -2108,13 +2116,13 @@ function Table$5(props) {
2108
2116
  render: (row) => /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, !!row.isComplete && /* @__PURE__ */ React__namespace.createElement(core.Badge, { variant: "filled" }, "Complete"), !row.isComplete && !row.isStarted && /* @__PURE__ */ React__namespace.createElement(core.Badge, { color: "red", variant: "filled" }, "Not started"), !row.isComplete && !!row.isStarted && /* @__PURE__ */ React__namespace.createElement(core.Badge, { color: "violet", variant: "filled" }, "In progress"))
2109
2117
  }],
2110
2118
  rowExpansion: {
2111
- content: ({ record }) => /* @__PURE__ */ React__namespace.createElement(Stack$2, { href: record.href, items: record.answers })
2119
+ content: ({ record }) => /* @__PURE__ */ React__namespace.createElement(Stack$3, { href: record.href, items: record.answers })
2112
2120
  }
2113
2121
  }
2114
2122
  ));
2115
2123
  }
2116
2124
 
2117
- function Stack$1(props) {
2125
+ function Stack$2(props) {
2118
2126
  const primaryAxis = React__namespace.useMemo(
2119
2127
  () => ({
2120
2128
  position: "left",
@@ -2182,7 +2190,7 @@ function Stack$1(props) {
2182
2190
  }
2183
2191
  const truncateWithEllipses = (text, max) => text.substr(0, max - 1) + (text.length > max ? "&hellip;" : "");
2184
2192
 
2185
- const useStyles$e = core.createStyles((theme) => ({
2193
+ const useStyles$g = core.createStyles((theme) => ({
2186
2194
  title: {
2187
2195
  fontSize: 34,
2188
2196
  fontWeight: 900,
@@ -2195,7 +2203,7 @@ const useStyles$e = core.createStyles((theme) => ({
2195
2203
  }
2196
2204
  }));
2197
2205
  const Lesson = (props) => {
2198
- const { classes } = useStyles$e();
2206
+ const { classes } = useStyles$g();
2199
2207
  const [tab, setTab] = React.useState("question");
2200
2208
  const numberOfStudents = props.students.length;
2201
2209
  const numberOfLessons = numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length : 0;
@@ -2246,7 +2254,7 @@ const Lesson = (props) => {
2246
2254
  },
2247
2255
  "Back"
2248
2256
  )), /* @__PURE__ */ React__namespace.createElement(core.Group, null, /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: 0 }, /* @__PURE__ */ React__namespace.createElement(core.Title, { order: 2, className: classes.title, mt: "md" }, props.displayName || "Lesson"), /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description")), /* @__PURE__ */ React__namespace.createElement(core.Stack, { ml: "auto" }, /* @__PURE__ */ React__namespace.createElement(
2249
- SplitButton$2,
2257
+ SplitButton$3,
2250
2258
  {
2251
2259
  href: props.href,
2252
2260
  noExport: props.trial,
@@ -2287,19 +2295,19 @@ const Lesson = (props) => {
2287
2295
  onChange: setTab
2288
2296
  }
2289
2297
  ), tab === "question" && /* @__PURE__ */ React__namespace.createElement(
2290
- Stack$1,
2298
+ Stack$2,
2291
2299
  {
2292
2300
  loading: props.loading,
2293
2301
  items: props.questions
2294
2302
  }
2295
2303
  ), tab === "reflections" && /* @__PURE__ */ React__namespace.createElement(
2296
- Table$6,
2304
+ Table$7,
2297
2305
  {
2298
2306
  loading: props.loading,
2299
2307
  items: props.reflections
2300
2308
  }
2301
2309
  ), tab === "students" && /* @__PURE__ */ React__namespace.createElement(
2302
- Table$5,
2310
+ Table$6,
2303
2311
  {
2304
2312
  loading: props.loading,
2305
2313
  items: props.students
@@ -2307,7 +2315,7 @@ const Lesson = (props) => {
2307
2315
  )))))));
2308
2316
  };
2309
2317
 
2310
- function Table$4(props) {
2318
+ function Table$5(props) {
2311
2319
  if (props.items.length === 0) {
2312
2320
  return /* @__PURE__ */ React__namespace.createElement(
2313
2321
  PlaceholderBanner,
@@ -2339,7 +2347,7 @@ function Table$4(props) {
2339
2347
  return /* @__PURE__ */ React__namespace.createElement(core.ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React__namespace.createElement(core.Table, { horizontalSpacing: 0, verticalSpacing: 0, sx: { minWidth: 700 } }, /* @__PURE__ */ React__namespace.createElement("tbody", null, rows)));
2340
2348
  }
2341
2349
 
2342
- const useStyles$d = core.createStyles((theme) => ({
2350
+ const useStyles$f = core.createStyles((theme) => ({
2343
2351
  title: {
2344
2352
  fontSize: 34,
2345
2353
  fontWeight: 900,
@@ -2352,7 +2360,7 @@ const useStyles$d = core.createStyles((theme) => ({
2352
2360
  }
2353
2361
  }));
2354
2362
  const Lessons = (props) => {
2355
- const { classes } = useStyles$d();
2363
+ const { classes } = useStyles$f();
2356
2364
  return /* @__PURE__ */ React__namespace.createElement(core.Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "md" }, /* @__PURE__ */ React__namespace.createElement(core.Grid, null, /* @__PURE__ */ React__namespace.createElement(core.Grid.Col, { sm: "auto" }, /* @__PURE__ */ React__namespace.createElement(core.Badge, { variant: "filled", size: "lg" }, "Lessons"), /* @__PURE__ */ React__namespace.createElement(core.Title, { order: 2, className: classes.title, mt: "md" }, "Lessons"), /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dimmed", className: classes.description, mt: "sm" }, "Bite-sized activities and learning experiences accelerating students achievement"))), /* @__PURE__ */ React__namespace.createElement(
2357
2365
  core.Autocomplete,
2358
2366
  {
@@ -2361,7 +2369,7 @@ const Lessons = (props) => {
2361
2369
  onChange: props.onAutocompleteChange
2362
2370
  }
2363
2371
  ), /* @__PURE__ */ React__namespace.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React__namespace.createElement(core.LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React__namespace.createElement(
2364
- Table$4,
2372
+ Table$5,
2365
2373
  {
2366
2374
  loading: props.loading,
2367
2375
  items: props.lessons
@@ -2369,7 +2377,7 @@ const Lessons = (props) => {
2369
2377
  ))));
2370
2378
  };
2371
2379
 
2372
- const useStyles$c = core.createStyles((theme) => ({
2380
+ const useStyles$e = core.createStyles((theme) => ({
2373
2381
  title: {
2374
2382
  fontSize: 22,
2375
2383
  fontWeight: 900,
@@ -2388,7 +2396,7 @@ const useStyles$c = core.createStyles((theme) => ({
2388
2396
  }
2389
2397
  }));
2390
2398
  function AccessCode(props) {
2391
- const { classes } = useStyles$c();
2399
+ const { classes } = useStyles$e();
2392
2400
  return /* @__PURE__ */ React__namespace.createElement(core.Container, { mx: "0", px: "0", size: 460, my: 30 }, /* @__PURE__ */ React__namespace.createElement(core.Title, { className: classes.title }, "Access code"), /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dimmed", size: "sm" }, "Grant access to join your organization"), /* @__PURE__ */ React__namespace.createElement(core.Paper, { withBorder: true, shadow: "md", p: 30, radius: "md", mt: "xl" }, /* @__PURE__ */ React__namespace.createElement(core.TextInput, { value: props.value, readOnly: true }), /* @__PURE__ */ React__namespace.createElement(core.Group, { position: "apart", mt: "lg", className: classes.controls }, /* @__PURE__ */ React__namespace.createElement(
2393
2401
  core.Anchor,
2394
2402
  {
@@ -2416,7 +2424,7 @@ const monthNames = [
2416
2424
  "November",
2417
2425
  "December"
2418
2426
  ];
2419
- const useStyles$b = core.createStyles((theme) => ({
2427
+ const useStyles$d = core.createStyles((theme) => ({
2420
2428
  title: {
2421
2429
  fontSize: 34,
2422
2430
  fontWeight: 900,
@@ -2446,7 +2454,7 @@ const useStyles$b = core.createStyles((theme) => ({
2446
2454
  }
2447
2455
  }));
2448
2456
  const Organization = (props) => {
2449
- const { classes } = useStyles$b();
2457
+ const { classes } = useStyles$d();
2450
2458
  return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(core.Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "md" }, /* @__PURE__ */ React__namespace.createElement(core.Grid, null, /* @__PURE__ */ React__namespace.createElement(core.Grid.Col, { sm: "auto" }, /* @__PURE__ */ React__namespace.createElement(core.UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React__namespace.createElement(
2451
2459
  core.Badge,
2452
2460
  {
@@ -2472,7 +2480,7 @@ const Organization = (props) => {
2472
2480
  ] }))))));
2473
2481
  };
2474
2482
 
2475
- const useStyles$a = core.createStyles((theme) => ({
2483
+ const useStyles$c = core.createStyles((theme) => ({
2476
2484
  button: {
2477
2485
  borderTopRightRadius: 0,
2478
2486
  borderBottomRightRadius: 0,
@@ -2486,8 +2494,8 @@ const useStyles$a = core.createStyles((theme) => ({
2486
2494
  borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
2487
2495
  }
2488
2496
  }));
2489
- const SplitButton$1 = (props) => {
2490
- const { classes, theme } = useStyles$a();
2497
+ const SplitButton$2 = (props) => {
2498
+ const { classes, theme } = useStyles$c();
2491
2499
  const menuIconColor = theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
2492
2500
  const hasMenu = !!props.withOrganizationLink;
2493
2501
  return /* @__PURE__ */ React__namespace.createElement(core.Group, { noWrap: true, spacing: 0 }, /* @__PURE__ */ React__namespace.createElement(
@@ -2517,7 +2525,7 @@ const SplitButton$1 = (props) => {
2517
2525
  ))));
2518
2526
  };
2519
2527
 
2520
- function Table$3(props) {
2528
+ function Table$4(props) {
2521
2529
  if (props.items.length === 0) {
2522
2530
  return /* @__PURE__ */ React__namespace.createElement(
2523
2531
  PlaceholderBanner,
@@ -2549,26 +2557,26 @@ function Table$3(props) {
2549
2557
  return /* @__PURE__ */ React__namespace.createElement(core.ScrollArea, null, /* @__PURE__ */ React__namespace.createElement(core.Table, { verticalSpacing: 20, sx: { minWidth: 700 }, highlightOnHover: true, striped: true }, /* @__PURE__ */ React__namespace.createElement("thead", null, /* @__PURE__ */ React__namespace.createElement("tr", null, /* @__PURE__ */ React__namespace.createElement("th", null, "Name"), /* @__PURE__ */ React__namespace.createElement("th", null, "Role"), /* @__PURE__ */ React__namespace.createElement("th", null, "Account Created?"), /* @__PURE__ */ React__namespace.createElement("th", null, "# of Classes"), /* @__PURE__ */ React__namespace.createElement("th", null, "Last Active"), /* @__PURE__ */ React__namespace.createElement("th", null))), /* @__PURE__ */ React__namespace.createElement("tbody", null, rows)));
2550
2558
  }
2551
2559
 
2552
- var __defProp$5 = Object.defineProperty;
2553
- var __defProps$4 = Object.defineProperties;
2554
- var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
2555
- var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
2556
- var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
2557
- var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
2558
- var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2559
- var __spreadValues$5 = (a, b) => {
2560
+ var __defProp$6 = Object.defineProperty;
2561
+ var __defProps$5 = Object.defineProperties;
2562
+ var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;
2563
+ var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;
2564
+ var __hasOwnProp$6 = Object.prototype.hasOwnProperty;
2565
+ var __propIsEnum$6 = Object.prototype.propertyIsEnumerable;
2566
+ var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2567
+ var __spreadValues$6 = (a, b) => {
2560
2568
  for (var prop in b || (b = {}))
2561
- if (__hasOwnProp$5.call(b, prop))
2562
- __defNormalProp$5(a, prop, b[prop]);
2563
- if (__getOwnPropSymbols$5)
2564
- for (var prop of __getOwnPropSymbols$5(b)) {
2565
- if (__propIsEnum$5.call(b, prop))
2566
- __defNormalProp$5(a, prop, b[prop]);
2569
+ if (__hasOwnProp$6.call(b, prop))
2570
+ __defNormalProp$6(a, prop, b[prop]);
2571
+ if (__getOwnPropSymbols$6)
2572
+ for (var prop of __getOwnPropSymbols$6(b)) {
2573
+ if (__propIsEnum$6.call(b, prop))
2574
+ __defNormalProp$6(a, prop, b[prop]);
2567
2575
  }
2568
2576
  return a;
2569
2577
  };
2570
- var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
2571
- const useStyles$9 = core.createStyles((theme) => ({
2578
+ var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
2579
+ const useStyles$b = core.createStyles((theme) => ({
2572
2580
  title: {
2573
2581
  fontSize: 34,
2574
2582
  fontWeight: 900,
@@ -2598,7 +2606,7 @@ const useStyles$9 = core.createStyles((theme) => ({
2598
2606
  }
2599
2607
  }));
2600
2608
  const People = (props) => {
2601
- const { classes } = useStyles$9();
2609
+ const { classes } = useStyles$b();
2602
2610
  const form$1 = form.useForm({
2603
2611
  initialValues: {
2604
2612
  userId: "",
@@ -2629,27 +2637,27 @@ const People = (props) => {
2629
2637
  padding: "xl",
2630
2638
  size: "xl"
2631
2639
  },
2632
- /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "md" }, /* @__PURE__ */ React__namespace.createElement(DropzoneButton, __spreadProps$4(__spreadValues$5({}, props), { close: () => setOpened(false) })), /* @__PURE__ */ React__namespace.createElement(core.Divider, { label: "or", labelPosition: "center", my: "md", variant: "dashed" }), /* @__PURE__ */ React__namespace.createElement("form", { onSubmit: form$1.onSubmit(() => {
2640
+ /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "md" }, /* @__PURE__ */ React__namespace.createElement(DropzoneButton, __spreadProps$5(__spreadValues$6({}, props), { close: () => setOpened(false) })), /* @__PURE__ */ React__namespace.createElement(core.Divider, { label: "or", labelPosition: "center", my: "md", variant: "dashed" }), /* @__PURE__ */ React__namespace.createElement("form", { onSubmit: form$1.onSubmit(() => {
2633
2641
  const values = form$1.values;
2634
2642
  form$1.reset();
2635
2643
  setOpened(false);
2636
2644
  props.onCreateUsers && props.onCreateUsers([values]);
2637
2645
  }) }, /* @__PURE__ */ React__namespace.createElement(core.Stack, null, /* @__PURE__ */ React__namespace.createElement(
2638
2646
  core.TextInput,
2639
- __spreadValues$5({
2647
+ __spreadValues$6({
2640
2648
  withAsterisk: true,
2641
2649
  label: "Email",
2642
2650
  placeholder: "Email"
2643
2651
  }, form$1.getInputProps("email"))
2644
2652
  ), /* @__PURE__ */ React__namespace.createElement(core.Group, { grow: true }, /* @__PURE__ */ React__namespace.createElement(
2645
2653
  core.TextInput,
2646
- __spreadValues$5({
2654
+ __spreadValues$6({
2647
2655
  label: "Given name",
2648
2656
  placeholder: "Given name"
2649
2657
  }, form$1.getInputProps("givenName"))
2650
2658
  ), /* @__PURE__ */ React__namespace.createElement(
2651
2659
  core.TextInput,
2652
- __spreadValues$5({
2660
+ __spreadValues$6({
2653
2661
  label: "Family name",
2654
2662
  placeholder: "Family name"
2655
2663
  }, form$1.getInputProps("familyName"))
@@ -2663,7 +2671,7 @@ const People = (props) => {
2663
2671
  },
2664
2672
  "Back"
2665
2673
  )), /* @__PURE__ */ React__namespace.createElement(core.Title, { order: 2, className: classes.title, mt: "md" }, "People"), /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dimmed", className: classes.description, mt: "sm" }, "Manage members of your organization")), /* @__PURE__ */ React__namespace.createElement(core.Grid.Col, { sm: "content" }, !props.loading && /* @__PURE__ */ React__namespace.createElement(
2666
- SplitButton$1,
2674
+ SplitButton$2,
2667
2675
  {
2668
2676
  withOrganizationLink: props.withOrganizationLink,
2669
2677
  onAddUsersClick: () => setOpened(true),
@@ -2692,7 +2700,7 @@ const People = (props) => {
2692
2700
  onChange: props.onAutocompleteChange
2693
2701
  }
2694
2702
  ), /* @__PURE__ */ React__namespace.createElement(
2695
- Table$3,
2703
+ Table$4,
2696
2704
  {
2697
2705
  loading: props.loading,
2698
2706
  items: props.users,
@@ -2702,7 +2710,7 @@ const People = (props) => {
2702
2710
  ))))));
2703
2711
  };
2704
2712
  const DropzoneButton = (props) => {
2705
- const { classes, theme } = useStyles$9();
2713
+ const { classes, theme } = useStyles$b();
2706
2714
  const openRef = React__namespace.useRef(null);
2707
2715
  const [loading, setLoading] = React__namespace.useState(false);
2708
2716
  const onDrop = React__namespace.useCallback((acceptedFiles) => {
@@ -2748,7 +2756,7 @@ const DropzoneButton = (props) => {
2748
2756
  } }, "Select file"));
2749
2757
  };
2750
2758
 
2751
- const useStyles$8 = core.createStyles((theme) => ({
2759
+ const useStyles$a = core.createStyles((theme) => ({
2752
2760
  form: {
2753
2761
  backgroundColor: theme.white,
2754
2762
  padding: theme.spacing.xl,
@@ -2811,7 +2819,7 @@ const useStyles$8 = core.createStyles((theme) => ({
2811
2819
  }
2812
2820
  }));
2813
2821
  const StartAnonymousLesson = (props) => {
2814
- const { classes } = useStyles$8();
2822
+ const { classes } = useStyles$a();
2815
2823
  const [name, setName] = React__namespace.useState("");
2816
2824
  return /* @__PURE__ */ React__namespace.createElement("div", { className: classes.wrapper }, /* @__PURE__ */ React__namespace.createElement(core.Container, null, /* @__PURE__ */ React__namespace.createElement(core.SimpleGrid, { maw: 960, cols: 2, spacing: 15, breakpoints: [{ maxWidth: "sm", cols: 1 }] }, /* @__PURE__ */ React__namespace.createElement("div", { className: classes.content }, /* @__PURE__ */ React__namespace.createElement(core.Badge, { color: "violet" }, "Community"), /* @__PURE__ */ React__namespace.createElement(core.Title, { className: classes.title }, props.title), /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dimmed", mt: "md" }, props.description), /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dimmed", mt: "md" }, "You are now part of ", `${props.educatorName}'s`, " Class")), /* @__PURE__ */ React__namespace.createElement("div", { className: classes.form }, /* @__PURE__ */ React__namespace.createElement(
2817
2825
  core.TextInput,
@@ -2835,24 +2843,24 @@ const StartAnonymousLesson = (props) => {
2835
2843
  ))))));
2836
2844
  };
2837
2845
 
2838
- var __defProp$4 = Object.defineProperty;
2839
- var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
2840
- var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
2841
- var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
2842
- var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2843
- var __spreadValues$4 = (a, b) => {
2846
+ var __defProp$5 = Object.defineProperty;
2847
+ var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
2848
+ var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
2849
+ var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
2850
+ var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2851
+ var __spreadValues$5 = (a, b) => {
2844
2852
  for (var prop in b || (b = {}))
2845
- if (__hasOwnProp$4.call(b, prop))
2846
- __defNormalProp$4(a, prop, b[prop]);
2847
- if (__getOwnPropSymbols$4)
2848
- for (var prop of __getOwnPropSymbols$4(b)) {
2849
- if (__propIsEnum$4.call(b, prop))
2850
- __defNormalProp$4(a, prop, b[prop]);
2853
+ if (__hasOwnProp$5.call(b, prop))
2854
+ __defNormalProp$5(a, prop, b[prop]);
2855
+ if (__getOwnPropSymbols$5)
2856
+ for (var prop of __getOwnPropSymbols$5(b)) {
2857
+ if (__propIsEnum$5.call(b, prop))
2858
+ __defNormalProp$5(a, prop, b[prop]);
2851
2859
  }
2852
2860
  return a;
2853
2861
  };
2854
2862
  const BadgeGrid = (props) => {
2855
- const badges = props.badges.map((b) => /* @__PURE__ */ React__namespace.createElement(TaskCard, __spreadValues$4({ key: b.title }, b)));
2863
+ const badges = props.badges.map((b) => /* @__PURE__ */ React__namespace.createElement(TaskCard, __spreadValues$5({ key: b.title }, b)));
2856
2864
  return /* @__PURE__ */ React__namespace.createElement(core.SimpleGrid, { cols: 4, breakpoints: [{ maxWidth: "sm", cols: 1 }, { maxWidth: "md", cols: 3 }] }, badges);
2857
2865
  };
2858
2866
  function TaskCard(props) {
@@ -2868,7 +2876,7 @@ function TaskCard(props) {
2868
2876
  ));
2869
2877
  }
2870
2878
 
2871
- const useStyles$7 = core.createStyles((theme) => ({
2879
+ const useStyles$9 = core.createStyles((theme) => ({
2872
2880
  action: {
2873
2881
  backgroundColor: "inherit",
2874
2882
  ":hover": {
@@ -2887,7 +2895,7 @@ const useStyles$7 = core.createStyles((theme) => ({
2887
2895
  }
2888
2896
  }));
2889
2897
  const TrialHome = (props) => {
2890
- const { classes } = useStyles$7();
2898
+ const { classes } = useStyles$9();
2891
2899
  return /* @__PURE__ */ React__namespace.createElement(core.Container, { size: "lg" }, /* @__PURE__ */ React__namespace.createElement(core.Badge, null, props.daysRemaining, " day", props.daysRemaining !== 1 ? "s" : "", " left"), /* @__PURE__ */ React__namespace.createElement(
2892
2900
  core.Button,
2893
2901
  {
@@ -2916,38 +2924,38 @@ const TrialHome = (props) => {
2916
2924
  )), /* @__PURE__ */ React__namespace.createElement(core.Title, { maw: 500, mb: 20, mt: 20, className: classes.title }, "Based on the tags you selected, check out these lessons to get started with your students!"), /* @__PURE__ */ React__namespace.createElement(BadgeGrid, { onAssign: props.onAssign, badges: props.badges })));
2917
2925
  };
2918
2926
 
2919
- var __defProp$3 = Object.defineProperty;
2920
- var __defProps$3 = Object.defineProperties;
2921
- var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
2922
- var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
2923
- var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
2924
- var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
2925
- var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2926
- var __spreadValues$3 = (a, b) => {
2927
+ var __defProp$4 = Object.defineProperty;
2928
+ var __defProps$4 = Object.defineProperties;
2929
+ var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
2930
+ var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
2931
+ var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
2932
+ var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
2933
+ var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2934
+ var __spreadValues$4 = (a, b) => {
2927
2935
  for (var prop in b || (b = {}))
2928
- if (__hasOwnProp$3.call(b, prop))
2929
- __defNormalProp$3(a, prop, b[prop]);
2930
- if (__getOwnPropSymbols$3)
2931
- for (var prop of __getOwnPropSymbols$3(b)) {
2932
- if (__propIsEnum$3.call(b, prop))
2933
- __defNormalProp$3(a, prop, b[prop]);
2936
+ if (__hasOwnProp$4.call(b, prop))
2937
+ __defNormalProp$4(a, prop, b[prop]);
2938
+ if (__getOwnPropSymbols$4)
2939
+ for (var prop of __getOwnPropSymbols$4(b)) {
2940
+ if (__propIsEnum$4.call(b, prop))
2941
+ __defNormalProp$4(a, prop, b[prop]);
2934
2942
  }
2935
2943
  return a;
2936
2944
  };
2937
- var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
2945
+ var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
2938
2946
  var __objRest = (source, exclude) => {
2939
2947
  var target = {};
2940
2948
  for (var prop in source)
2941
- if (__hasOwnProp$3.call(source, prop) && exclude.indexOf(prop) < 0)
2949
+ if (__hasOwnProp$4.call(source, prop) && exclude.indexOf(prop) < 0)
2942
2950
  target[prop] = source[prop];
2943
- if (source != null && __getOwnPropSymbols$3)
2944
- for (var prop of __getOwnPropSymbols$3(source)) {
2945
- if (exclude.indexOf(prop) < 0 && __propIsEnum$3.call(source, prop))
2951
+ if (source != null && __getOwnPropSymbols$4)
2952
+ for (var prop of __getOwnPropSymbols$4(source)) {
2953
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$4.call(source, prop))
2946
2954
  target[prop] = source[prop];
2947
2955
  }
2948
2956
  return target;
2949
2957
  };
2950
- const useStyles$6 = core.createStyles((theme, { checked }) => ({
2958
+ const useStyles$8 = core.createStyles((theme, { checked }) => ({
2951
2959
  button: {
2952
2960
  display: "flex",
2953
2961
  alignItems: "center",
@@ -2989,10 +2997,10 @@ function ImageCheckbox(_a) {
2989
2997
  finalValue: false,
2990
2998
  onChange
2991
2999
  });
2992
- const { classes, cx } = useStyles$6({ checked: value });
3000
+ const { classes, cx } = useStyles$8({ checked: value });
2993
3001
  return /* @__PURE__ */ React__namespace.createElement(
2994
3002
  core.UnstyledButton,
2995
- __spreadProps$3(__spreadValues$3({}, others), {
3003
+ __spreadProps$4(__spreadValues$4({}, others), {
2996
3004
  onClick: () => handleChange(!value),
2997
3005
  className: cx(classes.button, className)
2998
3006
  }),
@@ -3013,7 +3021,7 @@ function ImageCheckbox(_a) {
3013
3021
  function SelectGrid(props) {
3014
3022
  const items = props.items.map((item) => /* @__PURE__ */ React__namespace.createElement(
3015
3023
  ImageCheckbox,
3016
- __spreadProps$3(__spreadValues$3({}, item), {
3024
+ __spreadProps$4(__spreadValues$4({}, item), {
3017
3025
  key: item.title,
3018
3026
  onChange: (checked) => props.onChange(item.title, checked)
3019
3027
  })
@@ -3031,26 +3039,26 @@ function SelectGrid(props) {
3031
3039
  );
3032
3040
  }
3033
3041
 
3034
- var __defProp$2 = Object.defineProperty;
3035
- var __defProps$2 = Object.defineProperties;
3036
- var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
3037
- var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
3038
- var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
3039
- var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
3040
- var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3041
- var __spreadValues$2 = (a, b) => {
3042
+ var __defProp$3 = Object.defineProperty;
3043
+ var __defProps$3 = Object.defineProperties;
3044
+ var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
3045
+ var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
3046
+ var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
3047
+ var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
3048
+ var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3049
+ var __spreadValues$3 = (a, b) => {
3042
3050
  for (var prop in b || (b = {}))
3043
- if (__hasOwnProp$2.call(b, prop))
3044
- __defNormalProp$2(a, prop, b[prop]);
3045
- if (__getOwnPropSymbols$2)
3046
- for (var prop of __getOwnPropSymbols$2(b)) {
3047
- if (__propIsEnum$2.call(b, prop))
3048
- __defNormalProp$2(a, prop, b[prop]);
3051
+ if (__hasOwnProp$3.call(b, prop))
3052
+ __defNormalProp$3(a, prop, b[prop]);
3053
+ if (__getOwnPropSymbols$3)
3054
+ for (var prop of __getOwnPropSymbols$3(b)) {
3055
+ if (__propIsEnum$3.call(b, prop))
3056
+ __defNormalProp$3(a, prop, b[prop]);
3049
3057
  }
3050
3058
  return a;
3051
3059
  };
3052
- var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
3053
- const useStyles$5 = core.createStyles((theme) => ({
3060
+ var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
3061
+ const useStyles$7 = core.createStyles((theme) => ({
3054
3062
  wrapper: {
3055
3063
  minHeight: "100%",
3056
3064
  boxSizing: "border-box",
@@ -3113,7 +3121,7 @@ const OPTIONS = [
3113
3121
  { description: "project-based learning", title: "Project-Based Learning", icon: icons.IconTools }
3114
3122
  ];
3115
3123
  const TrialRegistration = (props) => {
3116
- const { classes } = useStyles$5();
3124
+ const { classes } = useStyles$7();
3117
3125
  const [firstName, setFirstName] = React__namespace.useState("");
3118
3126
  const [lastName, setLastName] = React__namespace.useState("");
3119
3127
  const [organization, setOrganization] = React__namespace.useState({ organizationId: "", displayName: "" });
@@ -3159,7 +3167,7 @@ const TrialRegistration = (props) => {
3159
3167
  label: "School/Organization Name",
3160
3168
  placeholder: "What's the name of your school?",
3161
3169
  data: props.organizations.map((o) => {
3162
- return __spreadProps$2(__spreadValues$2({}, o), { value: o.displayName });
3170
+ return __spreadProps$3(__spreadValues$3({}, o), { value: o.displayName });
3163
3171
  }),
3164
3172
  onItemSubmit: (item) => setOrganization({ organizationId: item.organizationId, displayName: item.displayName }),
3165
3173
  onChange: (next) => {
@@ -3171,7 +3179,7 @@ const TrialRegistration = (props) => {
3171
3179
  SelectGrid,
3172
3180
  {
3173
3181
  items: OPTIONS,
3174
- onChange: (e, checked) => setInterests(__spreadProps$2(__spreadValues$2({}, interests), { [e]: checked }))
3182
+ onChange: (e, checked) => setInterests(__spreadProps$3(__spreadValues$3({}, interests), { [e]: checked }))
3175
3183
  }
3176
3184
  ), /* @__PURE__ */ React__namespace.createElement(core.Group, { position: "right", mt: "md" }, /* @__PURE__ */ React__namespace.createElement(
3177
3185
  core.Button,
@@ -3209,26 +3217,26 @@ const AdminProvider = (props) => {
3209
3217
  );
3210
3218
  };
3211
3219
 
3212
- var __defProp$1 = Object.defineProperty;
3213
- var __defProps$1 = Object.defineProperties;
3214
- var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
3215
- var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
3216
- var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
3217
- var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
3218
- var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3219
- var __spreadValues$1 = (a, b) => {
3220
+ var __defProp$2 = Object.defineProperty;
3221
+ var __defProps$2 = Object.defineProperties;
3222
+ var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
3223
+ var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
3224
+ var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
3225
+ var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
3226
+ var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3227
+ var __spreadValues$2 = (a, b) => {
3220
3228
  for (var prop in b || (b = {}))
3221
- if (__hasOwnProp$1.call(b, prop))
3222
- __defNormalProp$1(a, prop, b[prop]);
3223
- if (__getOwnPropSymbols$1)
3224
- for (var prop of __getOwnPropSymbols$1(b)) {
3225
- if (__propIsEnum$1.call(b, prop))
3226
- __defNormalProp$1(a, prop, b[prop]);
3229
+ if (__hasOwnProp$2.call(b, prop))
3230
+ __defNormalProp$2(a, prop, b[prop]);
3231
+ if (__getOwnPropSymbols$2)
3232
+ for (var prop of __getOwnPropSymbols$2(b)) {
3233
+ if (__propIsEnum$2.call(b, prop))
3234
+ __defNormalProp$2(a, prop, b[prop]);
3227
3235
  }
3228
3236
  return a;
3229
3237
  };
3230
- var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
3231
- const useStyles$4 = core.createStyles((theme, props) => ({
3238
+ var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
3239
+ const useStyles$6 = core.createStyles((theme, props) => ({
3232
3240
  footer: {
3233
3241
  paddingTop: theme.spacing.md,
3234
3242
  paddingBottom: theme.spacing.md,
@@ -3315,7 +3323,7 @@ const useStyles$4 = core.createStyles((theme, props) => ({
3315
3323
  }
3316
3324
  }));
3317
3325
  const App = (props) => {
3318
- const { classes } = useStyles$4(props);
3326
+ const { classes } = useStyles$6(props);
3319
3327
  const account = useAccount(props.account, props.accounts, props.onAccountChange);
3320
3328
  return /* @__PURE__ */ React__namespace.createElement(
3321
3329
  core.AppShell,
@@ -3323,7 +3331,7 @@ const App = (props) => {
3323
3331
  padding: "xs",
3324
3332
  navbar: props.navbar && /* @__PURE__ */ React__namespace.createElement(
3325
3333
  Navbar,
3326
- __spreadProps$1(__spreadValues$1({}, props.navbar.props), {
3334
+ __spreadProps$2(__spreadValues$2({}, props.navbar.props), {
3327
3335
  onSwitchAccounts: account.accounts && account.accounts.length > 1 ? () => account.setChangeModalOpen(true) : void 0
3328
3336
  })
3329
3337
  ),
@@ -3410,7 +3418,7 @@ const useAccount = (account, accounts, onAccountChange) => {
3410
3418
  };
3411
3419
  };
3412
3420
 
3413
- function Table$2(props) {
3421
+ function Table$3(props) {
3414
3422
  if (props.items.length === 0) {
3415
3423
  return /* @__PURE__ */ React__namespace.createElement(
3416
3424
  PlaceholderBanner,
@@ -3442,7 +3450,7 @@ function Table$2(props) {
3442
3450
  return /* @__PURE__ */ React__namespace.createElement(core.ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React__namespace.createElement(core.Table, { horizontalSpacing: 0, verticalSpacing: 0, sx: { minWidth: 700 } }, /* @__PURE__ */ React__namespace.createElement("tbody", null, rows)));
3443
3451
  }
3444
3452
 
3445
- const useStyles$3 = core.createStyles((theme) => ({
3453
+ const useStyles$5 = core.createStyles((theme) => ({
3446
3454
  title: {
3447
3455
  fontSize: 34,
3448
3456
  fontWeight: 900,
@@ -3455,9 +3463,9 @@ const useStyles$3 = core.createStyles((theme) => ({
3455
3463
  }
3456
3464
  }));
3457
3465
  const Pathways = (props) => {
3458
- const { classes } = useStyles$3();
3466
+ const { classes } = useStyles$5();
3459
3467
  return /* @__PURE__ */ React__namespace.createElement(core.Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "md" }, /* @__PURE__ */ React__namespace.createElement(core.Grid, null, /* @__PURE__ */ React__namespace.createElement(core.Grid.Col, { sm: "auto" }, /* @__PURE__ */ React__namespace.createElement(core.Badge, { variant: "filled", size: "lg" }, "Pathways"), /* @__PURE__ */ React__namespace.createElement(core.Title, { order: 2, className: classes.title, mt: "md" }, "Pathways"), /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dimmed", className: classes.description, mt: "sm" }, "Explore all your unique pathway requirements in one clear space"))), /* @__PURE__ */ React__namespace.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React__namespace.createElement(core.LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React__namespace.createElement(
3460
- Table$2,
3468
+ Table$3,
3461
3469
  {
3462
3470
  loading: props.loading,
3463
3471
  items: props.pathways
@@ -3465,7 +3473,7 @@ const Pathways = (props) => {
3465
3473
  ))));
3466
3474
  };
3467
3475
 
3468
- const useStyles$2 = core.createStyles((theme) => ({
3476
+ const useStyles$4 = core.createStyles((theme) => ({
3469
3477
  button: {
3470
3478
  borderTopRightRadius: 0,
3471
3479
  borderBottomRightRadius: 0,
@@ -3479,8 +3487,8 @@ const useStyles$2 = core.createStyles((theme) => ({
3479
3487
  borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
3480
3488
  }
3481
3489
  }));
3482
- const SplitButton = (props) => {
3483
- const { classes, theme } = useStyles$2();
3490
+ const SplitButton$1 = (props) => {
3491
+ const { classes, theme } = useStyles$4();
3484
3492
  theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
3485
3493
  return /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "sm" }, /* @__PURE__ */ React__namespace.createElement(
3486
3494
  core.Button,
@@ -3508,7 +3516,7 @@ const SplitButton = (props) => {
3508
3516
  ));
3509
3517
  };
3510
3518
 
3511
- function Stack(props) {
3519
+ function Stack$1(props) {
3512
3520
  if (props.items.length === 0) {
3513
3521
  return null;
3514
3522
  }
@@ -3516,29 +3524,29 @@ function Stack(props) {
3516
3524
  return /* @__PURE__ */ React__namespace.createElement(core.Grid, { grow: true, gutter: "lg", sx: { padding: 20, minWidth: 700 } }, rows);
3517
3525
  }
3518
3526
 
3519
- var __defProp = Object.defineProperty;
3520
- var __defProps = Object.defineProperties;
3521
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
3522
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3523
- var __hasOwnProp = Object.prototype.hasOwnProperty;
3524
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
3525
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3526
- var __spreadValues = (a, b) => {
3527
+ var __defProp$1 = Object.defineProperty;
3528
+ var __defProps$1 = Object.defineProperties;
3529
+ var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
3530
+ var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
3531
+ var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
3532
+ var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
3533
+ var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3534
+ var __spreadValues$1 = (a, b) => {
3527
3535
  for (var prop in b || (b = {}))
3528
- if (__hasOwnProp.call(b, prop))
3529
- __defNormalProp(a, prop, b[prop]);
3530
- if (__getOwnPropSymbols)
3531
- for (var prop of __getOwnPropSymbols(b)) {
3532
- if (__propIsEnum.call(b, prop))
3533
- __defNormalProp(a, prop, b[prop]);
3536
+ if (__hasOwnProp$1.call(b, prop))
3537
+ __defNormalProp$1(a, prop, b[prop]);
3538
+ if (__getOwnPropSymbols$1)
3539
+ for (var prop of __getOwnPropSymbols$1(b)) {
3540
+ if (__propIsEnum$1.call(b, prop))
3541
+ __defNormalProp$1(a, prop, b[prop]);
3534
3542
  }
3535
3543
  return a;
3536
3544
  };
3537
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
3538
- function Table$1(props) {
3545
+ var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
3546
+ function Table$2(props) {
3539
3547
  const preparedItems = React__namespace.useMemo(() => {
3540
3548
  return props.items.map((item) => {
3541
- const flatItem = __spreadProps(__spreadValues({}, item), {
3549
+ const flatItem = __spreadProps$1(__spreadValues$1({}, item), {
3542
3550
  status: item.isComplete ? 1 : 0
3543
3551
  });
3544
3552
  if (item.categoryPoints) {
@@ -3606,13 +3614,13 @@ function Table$1(props) {
3606
3614
  }))
3607
3615
  ],
3608
3616
  rowExpansion: {
3609
- content: ({ record }) => /* @__PURE__ */ React__namespace.createElement(Stack, { items: record.badges })
3617
+ content: ({ record }) => /* @__PURE__ */ React__namespace.createElement(Stack$1, { items: record.badges })
3610
3618
  }
3611
3619
  }
3612
3620
  ));
3613
3621
  }
3614
3622
 
3615
- const useStyles$1 = core.createStyles((theme) => ({
3623
+ const useStyles$3 = core.createStyles((theme) => ({
3616
3624
  th: { padding: "0 !important" },
3617
3625
  control: {
3618
3626
  width: "100%",
@@ -3623,11 +3631,11 @@ const useStyles$1 = core.createStyles((theme) => ({
3623
3631
  }
3624
3632
  }));
3625
3633
  function Th({ children, reversed, sorted, onSort }) {
3626
- const { classes } = useStyles$1();
3634
+ const { classes } = useStyles$3();
3627
3635
  const Icon = sorted ? reversed ? icons.IconChevronUp : icons.IconChevronDown : icons.IconSelector;
3628
3636
  return /* @__PURE__ */ React__namespace.createElement("th", { className: classes.th }, /* @__PURE__ */ React__namespace.createElement(core.UnstyledButton, { onClick: onSort, className: classes.control }, /* @__PURE__ */ React__namespace.createElement(core.Group, { position: "apart", noWrap: true, spacing: "xs" }, /* @__PURE__ */ React__namespace.createElement(core.Text, { weight: 500, size: "sm", sx: { whiteSpace: "nowrap" } }, children), /* @__PURE__ */ React__namespace.createElement(core.Center, null, /* @__PURE__ */ React__namespace.createElement(Icon, { size: 14, stroke: 1.5 })))));
3629
3637
  }
3630
- function Table(props) {
3638
+ function Table$1(props) {
3631
3639
  const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
3632
3640
  if (props.items.length === 0) {
3633
3641
  return /* @__PURE__ */ React__namespace.createElement(
@@ -3663,7 +3671,7 @@ function Table(props) {
3663
3671
  ))), /* @__PURE__ */ React__namespace.createElement("tbody", null, rows)));
3664
3672
  }
3665
3673
 
3666
- const useStyles = core.createStyles((theme) => ({
3674
+ const useStyles$2 = core.createStyles((theme) => ({
3667
3675
  title: {
3668
3676
  fontSize: 34,
3669
3677
  fontWeight: 900,
@@ -3676,7 +3684,7 @@ const useStyles = core.createStyles((theme) => ({
3676
3684
  }
3677
3685
  }));
3678
3686
  const Pathway = (props) => {
3679
- const { classes } = useStyles();
3687
+ const { classes } = useStyles$2();
3680
3688
  const [tab, setTab] = React.useState("badges");
3681
3689
  const numberOfStudents = props.students.length;
3682
3690
  numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length / numberOfStudents : 0;
@@ -3690,7 +3698,7 @@ const Pathway = (props) => {
3690
3698
  },
3691
3699
  "Back"
3692
3700
  )), /* @__PURE__ */ React__namespace.createElement(core.Group, null, /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: 0 }, /* @__PURE__ */ React__namespace.createElement(core.Title, { order: 2, className: classes.title, mt: "md" }, props.title || "Pathway"), /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description")), !props.trial && /* @__PURE__ */ React__namespace.createElement(core.Stack, { ml: "auto" }, /* @__PURE__ */ React__namespace.createElement(
3693
- SplitButton,
3701
+ SplitButton$1,
3694
3702
  {
3695
3703
  href: props.href,
3696
3704
  onCopyLinkClick: props.onCopyLinkClick,
@@ -3728,13 +3736,13 @@ const Pathway = (props) => {
3728
3736
  onChange: setTab
3729
3737
  }
3730
3738
  ), (!!props.trial || tab === "badges") && /* @__PURE__ */ React__namespace.createElement(
3731
- Table,
3739
+ Table$1,
3732
3740
  {
3733
3741
  loading: props.loading,
3734
3742
  items: props.badges
3735
3743
  }
3736
3744
  ), !props.trial && tab === "students" && /* @__PURE__ */ React__namespace.createElement(
3737
- Table$1,
3745
+ Table$2,
3738
3746
  {
3739
3747
  loading: props.loading,
3740
3748
  items: props.students,
@@ -3743,6 +3751,211 @@ const Pathway = (props) => {
3743
3751
  )))))));
3744
3752
  };
3745
3753
 
3754
+ const useStyles$1 = core.createStyles((theme) => ({
3755
+ button: {
3756
+ borderTopRightRadius: 0,
3757
+ borderBottomRightRadius: 0,
3758
+ marginLeft: 0,
3759
+ marginRight: 0
3760
+ },
3761
+ menuControl: {
3762
+ borderTopLeftRadius: 0,
3763
+ borderBottomLeftRadius: 0,
3764
+ border: 0,
3765
+ borderLeft: `1px solid ${theme.colorScheme === "dark" ? theme.colors.dark[7] : theme.white}`
3766
+ }
3767
+ }));
3768
+ const SplitButton = (props) => {
3769
+ const { classes, theme } = useStyles$1();
3770
+ theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
3771
+ return /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "sm" }, /* @__PURE__ */ React__namespace.createElement(
3772
+ core.Button,
3773
+ {
3774
+ component: reactRouterDom.Link,
3775
+ to: props.href,
3776
+ className: classes.button,
3777
+ variant: "gradient"
3778
+ },
3779
+ "Preview"
3780
+ ), /* @__PURE__ */ React__namespace.createElement(
3781
+ core.Button,
3782
+ {
3783
+ leftIcon: /* @__PURE__ */ React__namespace.createElement(icons.IconClipboardCopy, { size: 14 }),
3784
+ onClick: props.onCopyLinkClick
3785
+ },
3786
+ "Copy link"
3787
+ ), /* @__PURE__ */ React__namespace.createElement(
3788
+ core.Button,
3789
+ {
3790
+ leftIcon: /* @__PURE__ */ React__namespace.createElement(icons.IconTableExport, { size: 14 }),
3791
+ onClick: props.onExportDataClick
3792
+ },
3793
+ "Export data (.csv)"
3794
+ ));
3795
+ };
3796
+
3797
+ function Stack(props) {
3798
+ if (!props.items.length)
3799
+ return null;
3800
+ return /* @__PURE__ */ React__namespace.createElement(core.Grid, { gutter: "md", sx: { padding: 20, minWidth: 700 } }, /* @__PURE__ */ React__namespace.createElement(core.Grid.Col, { span: 6 }, /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dark.4", weight: "bold", size: "md" }, "By link")), /* @__PURE__ */ React__namespace.createElement(core.Grid.Col, { span: 6 }, /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dark.4", weight: "bold", size: "md" }, "By badge")), /* @__PURE__ */ React__namespace.createElement(core.Grid.Col, { span: 6 }, /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dark.4", weight: "bold", size: "md" }, "By Lesson")), /* @__PURE__ */ React__namespace.createElement(core.Grid.Col, { span: 6 }, /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dark.4", weight: "bold", size: "md" }, "By Question")), props.items.map((row, i) => /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, { key: i }, /* @__PURE__ */ React__namespace.createElement(core.Grid.Col, { span: 6 }, /* @__PURE__ */ React__namespace.createElement("a", { href: row.link, target: "_blank", rel: "noopener noreferrer" }, "View File")), /* @__PURE__ */ React__namespace.createElement(core.Grid.Col, { span: 6 }, /* @__PURE__ */ React__namespace.createElement(core.Text, null, row.badgeName)), /* @__PURE__ */ React__namespace.createElement(core.Grid.Col, { span: 6 }, /* @__PURE__ */ React__namespace.createElement(core.Text, null, row.lessonName)), /* @__PURE__ */ React__namespace.createElement(core.Grid.Col, { span: 6 }, /* @__PURE__ */ React__namespace.createElement(core.Text, null, row.question)))));
3801
+ }
3802
+
3803
+ var __defProp = Object.defineProperty;
3804
+ var __defProps = Object.defineProperties;
3805
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
3806
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3807
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
3808
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
3809
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3810
+ var __spreadValues = (a, b) => {
3811
+ for (var prop in b || (b = {}))
3812
+ if (__hasOwnProp.call(b, prop))
3813
+ __defNormalProp(a, prop, b[prop]);
3814
+ if (__getOwnPropSymbols)
3815
+ for (var prop of __getOwnPropSymbols(b)) {
3816
+ if (__propIsEnum.call(b, prop))
3817
+ __defNormalProp(a, prop, b[prop]);
3818
+ }
3819
+ return a;
3820
+ };
3821
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
3822
+ function Table(props) {
3823
+ const preparedItems = React__namespace.useMemo(() => {
3824
+ return props.items.map((item) => {
3825
+ var _a;
3826
+ return __spreadProps(__spreadValues({}, item), {
3827
+ submissionCount: ((_a = item.submissions) == null ? void 0 : _a.length) || 0
3828
+ });
3829
+ });
3830
+ }, [props.items]);
3831
+ const { items: sortedItems, requestSort, sortConfig } = useSortableData(preparedItems);
3832
+ if (props.items.length === 0) {
3833
+ return /* @__PURE__ */ React__namespace.createElement(
3834
+ PlaceholderBanner,
3835
+ {
3836
+ title: "No files to display",
3837
+ description: "There are no submitted files to display yet.",
3838
+ loading: props.loading,
3839
+ icon: "badges"
3840
+ }
3841
+ );
3842
+ }
3843
+ const sortStatus = {
3844
+ columnAccessor: sortConfig.key,
3845
+ direction: sortConfig.direction === "desc" ? "desc" : "asc"
3846
+ };
3847
+ return /* @__PURE__ */ React__namespace.createElement(core.ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React__namespace.createElement(
3848
+ mantineDatatable.DataTable,
3849
+ {
3850
+ verticalSpacing: "sm",
3851
+ sx: { minWidth: 700 },
3852
+ withBorder: false,
3853
+ borderRadius: "sm",
3854
+ withColumnBorders: true,
3855
+ striped: true,
3856
+ highlightOnHover: true,
3857
+ records: sortedItems,
3858
+ sortStatus,
3859
+ onSortStatusChange: (status) => requestSort(status.columnAccessor),
3860
+ idAccessor: "userId",
3861
+ columns: [{
3862
+ accessor: "name",
3863
+ title: "Student Name",
3864
+ sortable: true,
3865
+ render: (row) => /* @__PURE__ */ React__namespace.createElement(core.Group, { spacing: "sm" }, /* @__PURE__ */ React__namespace.createElement(core.Avatar, { size: 40, src: row.avatar, radius: 40 }), /* @__PURE__ */ React__namespace.createElement("div", null, /* @__PURE__ */ React__namespace.createElement(core.Text, { size: "sm", weight: 500 }, row.name), /* @__PURE__ */ React__namespace.createElement(core.Text, { size: "xs", color: "dimmed" }, row.email)))
3866
+ }, {
3867
+ accessor: "submissionCount",
3868
+ title: "Files",
3869
+ sortable: true,
3870
+ render: (row) => row.submissions.length
3871
+ }],
3872
+ rowExpansion: {
3873
+ content: ({ record }) => /* @__PURE__ */ React__namespace.createElement(Stack, { items: record.submissions })
3874
+ }
3875
+ }
3876
+ ));
3877
+ }
3878
+
3879
+ const useStyles = core.createStyles((theme) => ({
3880
+ title: {
3881
+ fontSize: 34,
3882
+ fontWeight: 900,
3883
+ [theme.fn.smallerThan("sm")]: {
3884
+ fontSize: 24
3885
+ }
3886
+ },
3887
+ description: {
3888
+ maxWidth: 600
3889
+ }
3890
+ }));
3891
+ const FileLocker = (props) => {
3892
+ const { classes } = useStyles();
3893
+ const [tab, setTab] = React.useState("students");
3894
+ props.students.length;
3895
+ const numberOfFiles = props.students.reduce(
3896
+ (acc, s) => {
3897
+ var _a;
3898
+ return acc + (((_a = s.submissions) == null ? void 0 : _a.length) || 0);
3899
+ },
3900
+ 0
3901
+ );
3902
+ return /* @__PURE__ */ React__namespace.createElement(core.Container, { size: "lg", py: "xl" }, /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "md" }, /* @__PURE__ */ React__namespace.createElement(core.Grid, null, /* @__PURE__ */ React__namespace.createElement(core.Grid.Col, { sm: "auto" }, /* @__PURE__ */ React__namespace.createElement(core.UnstyledButton, { onClick: props.onBackClick }, /* @__PURE__ */ React__namespace.createElement(
3903
+ core.Badge,
3904
+ {
3905
+ variant: "filled",
3906
+ leftSection: /* @__PURE__ */ React__namespace.createElement(core.ActionIcon, { color: "blue", size: "xs", radius: "xl", variant: "filled" }, /* @__PURE__ */ React__namespace.createElement(icons.IconArrowLeft, { size: 14 })),
3907
+ size: "lg"
3908
+ },
3909
+ "Back"
3910
+ )), /* @__PURE__ */ React__namespace.createElement(core.Group, null, /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: 0 }, /* @__PURE__ */ React__namespace.createElement(core.Title, { order: 2, className: classes.title, mt: "md" }, props.displayName || "File"), /* @__PURE__ */ React__namespace.createElement(core.Text, { color: "dimmed", className: classes.description, mt: "sm" }, props.description || "No description")), !props.trial && /* @__PURE__ */ React__namespace.createElement(core.Stack, { ml: "auto" }, /* @__PURE__ */ React__namespace.createElement(
3911
+ SplitButton,
3912
+ {
3913
+ href: props.href,
3914
+ onCopyLinkClick: props.onCopyLinkClick,
3915
+ onExportDataClick: props.onExportDataClick
3916
+ }
3917
+ ))))), /* @__PURE__ */ React__namespace.createElement("div", null, /* @__PURE__ */ React__namespace.createElement("div", { style: { position: "relative" } }, /* @__PURE__ */ React__namespace.createElement(core.LoadingOverlay, { visible: props.loading, overlayBlur: 2 }), /* @__PURE__ */ React__namespace.createElement(core.Stack, null, /* @__PURE__ */ React__namespace.createElement(StatsGroup, { data: [
3918
+ {
3919
+ title: props.trial ? "LESSONS SUBMITTED" : "FILES",
3920
+ value: props.trial ? props.lessonsCompleted || 0 : numberOfFiles,
3921
+ unit: props.trial ? "" : ""
3922
+ }
3923
+ ] }), !props.trial && /* @__PURE__ */ React__namespace.createElement(
3924
+ core.Select,
3925
+ {
3926
+ clearable: true,
3927
+ clearButtonLabel: "Clear class selection",
3928
+ size: "sm",
3929
+ placeholder: "Select a class",
3930
+ nothingFound: "No options",
3931
+ value: props.classId,
3932
+ onChange: props.onClassChange,
3933
+ icon: /* @__PURE__ */ React__namespace.createElement(icons.IconCategory2, null),
3934
+ data: props.classes.map((g) => {
3935
+ return { value: g.classId, label: g.name };
3936
+ })
3937
+ }
3938
+ ), /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: 0 }, !props.trial && /* @__PURE__ */ React__namespace.createElement(
3939
+ Tabs,
3940
+ {
3941
+ value: tab,
3942
+ data: [
3943
+ { label: "By student", value: "students" },
3944
+ { label: "By pathway", value: "pathways" },
3945
+ { label: "By badge", value: "badges" },
3946
+ { label: "By lesson", value: "lessons" }
3947
+ ],
3948
+ onChange: setTab
3949
+ }
3950
+ ), !props.trial && tab === "students" && /* @__PURE__ */ React__namespace.createElement(
3951
+ Table,
3952
+ {
3953
+ loading: props.loading,
3954
+ items: props.students
3955
+ }
3956
+ )))))));
3957
+ };
3958
+
3746
3959
  Object.defineProperty(exports, 'showNotification', {
3747
3960
  enumerable: true,
3748
3961
  get: function () { return notifications.showNotification; }
@@ -3758,6 +3971,7 @@ exports.Badges = Badges;
3758
3971
  exports.Class = Class;
3759
3972
  exports.Classes = Classes;
3760
3973
  exports.Dashboard = Dashboard;
3974
+ exports.FileLocker = FileLocker;
3761
3975
  exports.GettingStarted = GettingStarted;
3762
3976
  exports.Home = Home;
3763
3977
  exports.Lesson = Lesson;