@local-civics/mgmt-ui 0.1.195 → 0.1.197
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 +134 -135
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +135 -136
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -62,7 +62,7 @@ var __objRest$2 = (source, exclude) => {
|
|
|
62
62
|
}
|
|
63
63
|
return target;
|
|
64
64
|
};
|
|
65
|
-
const useStyles$
|
|
65
|
+
const useStyles$v = core.createStyles((theme) => ({
|
|
66
66
|
user: {
|
|
67
67
|
display: "block",
|
|
68
68
|
width: "100%",
|
|
@@ -73,7 +73,7 @@ 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$
|
|
76
|
+
const { classes } = useStyles$v();
|
|
77
77
|
return /* @__PURE__ */ React__namespace.createElement(core.Group, __spreadValues$e({ 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
|
|
|
@@ -84,7 +84,7 @@ const compact = (num) => {
|
|
|
84
84
|
}).format(num || 0);
|
|
85
85
|
};
|
|
86
86
|
|
|
87
|
-
const useStyles$
|
|
87
|
+
const useStyles$u = 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$
|
|
140
|
+
const { classes, theme, cx } = useStyles$u();
|
|
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);
|
|
@@ -183,8 +183,8 @@ function LinksGroup({ icon: Icon, href, label, initiallyOpened, links, active, n
|
|
|
183
183
|
}
|
|
184
184
|
|
|
185
185
|
var __defProp$d = Object.defineProperty;
|
|
186
|
-
var __defProps$
|
|
187
|
-
var __getOwnPropDescs$
|
|
186
|
+
var __defProps$9 = Object.defineProperties;
|
|
187
|
+
var __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors;
|
|
188
188
|
var __getOwnPropSymbols$d = Object.getOwnPropertySymbols;
|
|
189
189
|
var __hasOwnProp$d = Object.prototype.hasOwnProperty;
|
|
190
190
|
var __propIsEnum$d = Object.prototype.propertyIsEnumerable;
|
|
@@ -200,8 +200,8 @@ var __spreadValues$d = (a, b) => {
|
|
|
200
200
|
}
|
|
201
201
|
return a;
|
|
202
202
|
};
|
|
203
|
-
var __spreadProps$
|
|
204
|
-
const useStyles$
|
|
203
|
+
var __spreadProps$9 = (a, b) => __defProps$9(a, __getOwnPropDescs$9(b));
|
|
204
|
+
const useStyles$t = 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$
|
|
235
|
+
link: __spreadProps$9(__spreadValues$d({}, theme.fn.focusStyles()), {
|
|
236
236
|
display: "flex",
|
|
237
237
|
alignItems: "center",
|
|
238
238
|
textDecoration: "none",
|
|
@@ -302,7 +302,7 @@ const TRIAL_PAGES = [
|
|
|
302
302
|
"Badges"
|
|
303
303
|
];
|
|
304
304
|
function Navbar(props) {
|
|
305
|
-
const { classes, cx } = useStyles$
|
|
305
|
+
const { classes, cx } = useStyles$t();
|
|
306
306
|
const [burgerOpen, setBurgerOpen] = React__namespace.useState(false);
|
|
307
307
|
const toggle = () => setBurgerOpen(!burgerOpen);
|
|
308
308
|
const links = data.map((item) => {
|
|
@@ -315,7 +315,7 @@ function Navbar(props) {
|
|
|
315
315
|
}
|
|
316
316
|
return /* @__PURE__ */ React__namespace.createElement(
|
|
317
317
|
LinksGroup,
|
|
318
|
-
__spreadProps$
|
|
318
|
+
__spreadProps$9(__spreadValues$d(__spreadValues$d({
|
|
319
319
|
key: item.label,
|
|
320
320
|
active: props.active
|
|
321
321
|
}, item), context), {
|
|
@@ -345,7 +345,7 @@ function Navbar(props) {
|
|
|
345
345
|
} }, /* @__PURE__ */ React__namespace.createElement(icons.IconLogout, { className: classes.linkIcon, stroke: 1.5 }), /* @__PURE__ */ React__namespace.createElement("span", null, "Logout"))))));
|
|
346
346
|
}
|
|
347
347
|
|
|
348
|
-
const useStyles$
|
|
348
|
+
const useStyles$s = core.createStyles((theme) => ({
|
|
349
349
|
inner: {
|
|
350
350
|
paddingTop: theme.spacing.xl,
|
|
351
351
|
paddingBottom: theme.spacing.xl * 4
|
|
@@ -381,7 +381,7 @@ const useStyles$t = core.createStyles((theme) => ({
|
|
|
381
381
|
}
|
|
382
382
|
}));
|
|
383
383
|
const GettingStarted = (props) => {
|
|
384
|
-
const { classes } = useStyles$
|
|
384
|
+
const { classes } = useStyles$s();
|
|
385
385
|
return /* @__PURE__ */ React__namespace.createElement(
|
|
386
386
|
core.Modal,
|
|
387
387
|
{
|
|
@@ -395,7 +395,7 @@ const GettingStarted = (props) => {
|
|
|
395
395
|
);
|
|
396
396
|
};
|
|
397
397
|
|
|
398
|
-
const useStyles$
|
|
398
|
+
const useStyles$r = core.createStyles((theme) => ({
|
|
399
399
|
title: {
|
|
400
400
|
fontSize: 34,
|
|
401
401
|
fontWeight: 900,
|
|
@@ -436,7 +436,7 @@ const useStyles$s = core.createStyles((theme) => ({
|
|
|
436
436
|
}
|
|
437
437
|
}));
|
|
438
438
|
const SwitchAccount = (props) => {
|
|
439
|
-
const { classes, theme } = useStyles$
|
|
439
|
+
const { classes, theme } = useStyles$r();
|
|
440
440
|
const options = props.accounts.map((a) => {
|
|
441
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")));
|
|
442
442
|
});
|
|
@@ -453,7 +453,7 @@ const SwitchAccount = (props) => {
|
|
|
453
453
|
);
|
|
454
454
|
};
|
|
455
455
|
|
|
456
|
-
const useStyles$
|
|
456
|
+
const useStyles$q = core.createStyles((theme) => ({
|
|
457
457
|
root: {
|
|
458
458
|
display: "flex",
|
|
459
459
|
backgroundImage: `linear-gradient(-60deg, ${theme.colors[theme.primaryColor][4]} 0%, ${theme.colors[theme.primaryColor][7]} 100%)`,
|
|
@@ -497,7 +497,7 @@ const useStyles$r = core.createStyles((theme) => ({
|
|
|
497
497
|
}
|
|
498
498
|
}));
|
|
499
499
|
const StatsGroup = ({ data, footer }) => {
|
|
500
|
-
const { classes } = useStyles$
|
|
500
|
+
const { classes } = useStyles$q();
|
|
501
501
|
const stats = data.map((stat) => {
|
|
502
502
|
const value = (() => {
|
|
503
503
|
if (stat.unit === "%") {
|
|
@@ -517,7 +517,7 @@ const Tabs = (props) => {
|
|
|
517
517
|
return /* @__PURE__ */ React__namespace.createElement(core.Tabs, { value: props.value, onTabChange: props.onChange }, /* @__PURE__ */ React__namespace.createElement(core.Tabs.List, null, tabs));
|
|
518
518
|
};
|
|
519
519
|
|
|
520
|
-
const useStyles$
|
|
520
|
+
const useStyles$p = core.createStyles((theme) => ({
|
|
521
521
|
button: {
|
|
522
522
|
borderTopRightRadius: 0,
|
|
523
523
|
borderBottomRightRadius: 0,
|
|
@@ -532,7 +532,7 @@ const useStyles$q = core.createStyles((theme) => ({
|
|
|
532
532
|
}
|
|
533
533
|
}));
|
|
534
534
|
const SplitButton$5 = (props) => {
|
|
535
|
-
const { classes, theme } = useStyles$
|
|
535
|
+
const { classes, theme } = useStyles$p();
|
|
536
536
|
theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
|
|
537
537
|
return /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "sm" }, /* @__PURE__ */ React__namespace.createElement(
|
|
538
538
|
core.Button,
|
|
@@ -560,7 +560,7 @@ const SplitButton$5 = (props) => {
|
|
|
560
560
|
));
|
|
561
561
|
};
|
|
562
562
|
|
|
563
|
-
const useStyles$
|
|
563
|
+
const useStyles$o = core.createStyles((theme) => ({
|
|
564
564
|
wrapper: {
|
|
565
565
|
display: "flex",
|
|
566
566
|
alignItems: "center",
|
|
@@ -611,7 +611,7 @@ const useStyles$p = core.createStyles((theme) => ({
|
|
|
611
611
|
}
|
|
612
612
|
}));
|
|
613
613
|
const PlaceholderBanner = (props) => {
|
|
614
|
-
const { classes } = useStyles$
|
|
614
|
+
const { classes } = useStyles$o();
|
|
615
615
|
const title = props.title || "Nothing to display";
|
|
616
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.";
|
|
617
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 }));
|
|
@@ -657,8 +657,6 @@ function useSortableData(items, config = { key: "", direction: null }) {
|
|
|
657
657
|
let direction = "asc";
|
|
658
658
|
if (sortConfig.key === key && sortConfig.direction === "asc") {
|
|
659
659
|
direction = "desc";
|
|
660
|
-
} else if (sortConfig.key === key && sortConfig.direction === "desc") {
|
|
661
|
-
direction = null;
|
|
662
660
|
}
|
|
663
661
|
setSortConfig({ key, direction });
|
|
664
662
|
};
|
|
@@ -666,8 +664,8 @@ function useSortableData(items, config = { key: "", direction: null }) {
|
|
|
666
664
|
}
|
|
667
665
|
|
|
668
666
|
var __defProp$c = Object.defineProperty;
|
|
669
|
-
var __defProps$
|
|
670
|
-
var __getOwnPropDescs$
|
|
667
|
+
var __defProps$8 = Object.defineProperties;
|
|
668
|
+
var __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;
|
|
671
669
|
var __getOwnPropSymbols$c = Object.getOwnPropertySymbols;
|
|
672
670
|
var __hasOwnProp$c = Object.prototype.hasOwnProperty;
|
|
673
671
|
var __propIsEnum$c = Object.prototype.propertyIsEnumerable;
|
|
@@ -683,10 +681,10 @@ var __spreadValues$c = (a, b) => {
|
|
|
683
681
|
}
|
|
684
682
|
return a;
|
|
685
683
|
};
|
|
686
|
-
var __spreadProps$
|
|
684
|
+
var __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));
|
|
687
685
|
function Table$k(props) {
|
|
688
686
|
const preparedItems = React__namespace.useMemo(() => {
|
|
689
|
-
return props.items.map((item) => __spreadProps$
|
|
687
|
+
return props.items.map((item) => __spreadProps$8(__spreadValues$c({}, item), {
|
|
690
688
|
status: item.isComplete ? 1 : 0
|
|
691
689
|
}));
|
|
692
690
|
}, [props.items]);
|
|
@@ -783,7 +781,7 @@ function Table$j(props) {
|
|
|
783
781
|
));
|
|
784
782
|
}
|
|
785
783
|
|
|
786
|
-
const useStyles$
|
|
784
|
+
const useStyles$n = core.createStyles((theme) => ({
|
|
787
785
|
title: {
|
|
788
786
|
fontSize: 34,
|
|
789
787
|
fontWeight: 900,
|
|
@@ -796,7 +794,7 @@ const useStyles$o = core.createStyles((theme) => ({
|
|
|
796
794
|
}
|
|
797
795
|
}));
|
|
798
796
|
const Badge = (props) => {
|
|
799
|
-
const { classes } = useStyles$
|
|
797
|
+
const { classes } = useStyles$n();
|
|
800
798
|
const [tab, setTab] = React.useState("lessons");
|
|
801
799
|
const numberOfStudents = props.students.length;
|
|
802
800
|
const numberOfBadges = numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length : 0;
|
|
@@ -894,7 +892,7 @@ function Table$i(props) {
|
|
|
894
892
|
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)));
|
|
895
893
|
}
|
|
896
894
|
|
|
897
|
-
const useStyles$
|
|
895
|
+
const useStyles$m = core.createStyles((theme) => ({
|
|
898
896
|
title: {
|
|
899
897
|
fontSize: 34,
|
|
900
898
|
fontWeight: 900,
|
|
@@ -907,7 +905,7 @@ const useStyles$n = core.createStyles((theme) => ({
|
|
|
907
905
|
}
|
|
908
906
|
}));
|
|
909
907
|
const Badges = (props) => {
|
|
910
|
-
const { classes } = useStyles$
|
|
908
|
+
const { classes } = useStyles$m();
|
|
911
909
|
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(
|
|
912
910
|
core.Autocomplete,
|
|
913
911
|
{
|
|
@@ -1138,8 +1136,8 @@ const SplitButton$4 = (props) => {
|
|
|
1138
1136
|
};
|
|
1139
1137
|
|
|
1140
1138
|
var __defProp$b = Object.defineProperty;
|
|
1141
|
-
var __defProps$
|
|
1142
|
-
var __getOwnPropDescs$
|
|
1139
|
+
var __defProps$7 = Object.defineProperties;
|
|
1140
|
+
var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;
|
|
1143
1141
|
var __getOwnPropSymbols$b = Object.getOwnPropertySymbols;
|
|
1144
1142
|
var __hasOwnProp$b = Object.prototype.hasOwnProperty;
|
|
1145
1143
|
var __propIsEnum$b = Object.prototype.propertyIsEnumerable;
|
|
@@ -1155,14 +1153,14 @@ var __spreadValues$b = (a, b) => {
|
|
|
1155
1153
|
}
|
|
1156
1154
|
return a;
|
|
1157
1155
|
};
|
|
1158
|
-
var __spreadProps$
|
|
1156
|
+
var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
|
|
1159
1157
|
function Table$c(props) {
|
|
1160
|
-
React__namespace.useMemo(() => {
|
|
1161
|
-
return props.items.map((item) => __spreadProps$
|
|
1158
|
+
const preparedItems = React__namespace.useMemo(() => {
|
|
1159
|
+
return props.items.map((item) => __spreadProps$7(__spreadValues$b({}, item), {
|
|
1162
1160
|
fullName: item.givenName && item.familyName ? `${item.givenName} ${item.familyName}`.toLowerCase() : item.email.toLowerCase()
|
|
1163
1161
|
}));
|
|
1164
1162
|
}, [props.items]);
|
|
1165
|
-
const { items: sortedItems, requestSort, sortConfig } = useSortableData(
|
|
1163
|
+
const { items: sortedItems, requestSort, sortConfig } = useSortableData(preparedItems);
|
|
1166
1164
|
if (props.items.length === 0) {
|
|
1167
1165
|
return /* @__PURE__ */ React__namespace.createElement(
|
|
1168
1166
|
PlaceholderBanner,
|
|
@@ -1256,8 +1254,8 @@ function Table$c(props) {
|
|
|
1256
1254
|
}
|
|
1257
1255
|
|
|
1258
1256
|
var __defProp$a = Object.defineProperty;
|
|
1259
|
-
var __defProps$
|
|
1260
|
-
var __getOwnPropDescs$
|
|
1257
|
+
var __defProps$6 = Object.defineProperties;
|
|
1258
|
+
var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;
|
|
1261
1259
|
var __getOwnPropSymbols$a = Object.getOwnPropertySymbols;
|
|
1262
1260
|
var __hasOwnProp$a = Object.prototype.hasOwnProperty;
|
|
1263
1261
|
var __propIsEnum$a = Object.prototype.propertyIsEnumerable;
|
|
@@ -1273,8 +1271,8 @@ var __spreadValues$a = (a, b) => {
|
|
|
1273
1271
|
}
|
|
1274
1272
|
return a;
|
|
1275
1273
|
};
|
|
1276
|
-
var __spreadProps$
|
|
1277
|
-
const useStyles$
|
|
1274
|
+
var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
|
|
1275
|
+
const useStyles$l = core.createStyles((theme) => ({
|
|
1278
1276
|
title: {
|
|
1279
1277
|
fontSize: 34,
|
|
1280
1278
|
fontWeight: 900,
|
|
@@ -1307,7 +1305,7 @@ const useStyles$m = core.createStyles((theme) => ({
|
|
|
1307
1305
|
}
|
|
1308
1306
|
}));
|
|
1309
1307
|
const Class = (props) => {
|
|
1310
|
-
const { classes } = useStyles$
|
|
1308
|
+
const { classes } = useStyles$l();
|
|
1311
1309
|
const form$1 = form.useForm({
|
|
1312
1310
|
initialValues: {
|
|
1313
1311
|
classId: "",
|
|
@@ -1339,7 +1337,7 @@ const Class = (props) => {
|
|
|
1339
1337
|
padding: "xl",
|
|
1340
1338
|
size: "xl"
|
|
1341
1339
|
},
|
|
1342
|
-
/* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "md" }, /* @__PURE__ */ React__namespace.createElement(DropzoneButton$1, __spreadProps$
|
|
1340
|
+
/* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "md" }, /* @__PURE__ */ React__namespace.createElement(DropzoneButton$1, __spreadProps$6(__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(() => {
|
|
1343
1341
|
const values = form$1.values;
|
|
1344
1342
|
form$1.reset();
|
|
1345
1343
|
setOpened(false);
|
|
@@ -1408,7 +1406,7 @@ const Class = (props) => {
|
|
|
1408
1406
|
))))));
|
|
1409
1407
|
};
|
|
1410
1408
|
const DropzoneButton$1 = (props) => {
|
|
1411
|
-
const { classes, theme } = useStyles$
|
|
1409
|
+
const { classes, theme } = useStyles$l();
|
|
1412
1410
|
const openRef = React__namespace.useRef(null);
|
|
1413
1411
|
const [loading, setLoading] = React__namespace.useState(false);
|
|
1414
1412
|
const onDrop = React__namespace.useCallback((acceptedFiles) => {
|
|
@@ -1454,21 +1452,6 @@ const DropzoneButton$1 = (props) => {
|
|
|
1454
1452
|
} }, "Select file"));
|
|
1455
1453
|
};
|
|
1456
1454
|
|
|
1457
|
-
const useStyles$l = core.createStyles((theme) => ({
|
|
1458
|
-
th: { padding: "0 !important" },
|
|
1459
|
-
control: {
|
|
1460
|
-
width: "100%",
|
|
1461
|
-
padding: `${theme.spacing.xs}px ${theme.spacing.md}px`,
|
|
1462
|
-
"&:hover": {
|
|
1463
|
-
backgroundColor: theme.colorScheme === "dark" ? theme.colors.dark[6] : theme.colors.gray[0]
|
|
1464
|
-
}
|
|
1465
|
-
}
|
|
1466
|
-
}));
|
|
1467
|
-
function Th({ children, reversed, sorted, onSort }) {
|
|
1468
|
-
const { classes } = useStyles$l();
|
|
1469
|
-
const Icon = sorted ? reversed ? icons.IconChevronUp : icons.IconChevronDown : icons.IconSelector;
|
|
1470
|
-
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 })))));
|
|
1471
|
-
}
|
|
1472
1455
|
function Table$b(props) {
|
|
1473
1456
|
const { items: sortedItems, requestSort, sortConfig } = useSortableData(props.items);
|
|
1474
1457
|
if (props.items.length === 0) {
|
|
@@ -1490,24 +1473,49 @@ function Table$b(props) {
|
|
|
1490
1473
|
confirmProps: { color: "red" },
|
|
1491
1474
|
onConfirm: () => props.onDeleteClass(group)
|
|
1492
1475
|
});
|
|
1493
|
-
const
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
onSort: () => requestSort("name")
|
|
1500
|
-
},
|
|
1501
|
-
"Class Name"
|
|
1502
|
-
), /* @__PURE__ */ React__namespace.createElement("th", { style: { padding: "7px 16px" } }, /* @__PURE__ */ React__namespace.createElement(core.Text, { weight: 500, size: "sm" }, "Description")), /* @__PURE__ */ React__namespace.createElement(
|
|
1503
|
-
Th,
|
|
1476
|
+
const sortStatus = {
|
|
1477
|
+
columnAccessor: sortConfig.key,
|
|
1478
|
+
direction: sortConfig.direction === "desc" ? "desc" : "asc"
|
|
1479
|
+
};
|
|
1480
|
+
return /* @__PURE__ */ React__namespace.createElement(core.ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React__namespace.createElement(
|
|
1481
|
+
mantineDatatable.DataTable,
|
|
1504
1482
|
{
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1483
|
+
withBorder: false,
|
|
1484
|
+
borderRadius: "sm",
|
|
1485
|
+
verticalSpacing: "sm",
|
|
1486
|
+
sx: { minWidth: 700 },
|
|
1487
|
+
highlightOnHover: true,
|
|
1488
|
+
striped: true,
|
|
1489
|
+
records: sortedItems,
|
|
1490
|
+
idAccessor: "classId",
|
|
1491
|
+
sortStatus,
|
|
1492
|
+
onSortStatusChange: (status) => requestSort(status.columnAccessor),
|
|
1493
|
+
columns: [
|
|
1494
|
+
{
|
|
1495
|
+
accessor: "name",
|
|
1496
|
+
title: "Class Name",
|
|
1497
|
+
sortable: true,
|
|
1498
|
+
render: (row) => /* @__PURE__ */ React__namespace.createElement(core.UnstyledButton, { component: reactRouterDom.Link, to: row.href }, /* @__PURE__ */ React__namespace.createElement(core.Text, { size: 14, weight: 500 }, row.name))
|
|
1499
|
+
},
|
|
1500
|
+
{
|
|
1501
|
+
accessor: "description",
|
|
1502
|
+
title: "Description",
|
|
1503
|
+
render: (row) => /* @__PURE__ */ React__namespace.createElement(core.Text, { size: 14 }, row.description)
|
|
1504
|
+
},
|
|
1505
|
+
{
|
|
1506
|
+
accessor: "numberOfStudents",
|
|
1507
|
+
title: "# of Students",
|
|
1508
|
+
sortable: true,
|
|
1509
|
+
render: (row) => /* @__PURE__ */ React__namespace.createElement(core.Text, { size: 14 }, row.numberOfStudents || 0)
|
|
1510
|
+
},
|
|
1511
|
+
{
|
|
1512
|
+
accessor: "actions",
|
|
1513
|
+
title: "",
|
|
1514
|
+
render: (row) => /* @__PURE__ */ React__namespace.createElement(core.Group, { noWrap: true, spacing: 0, position: "right" }, /* @__PURE__ */ React__namespace.createElement(core.ActionIcon, { color: "red", onClick: () => openDeleteModal(row) }, /* @__PURE__ */ React__namespace.createElement(icons.IconTrash, { size: 16, stroke: 1.5 })))
|
|
1515
|
+
}
|
|
1516
|
+
]
|
|
1517
|
+
}
|
|
1518
|
+
));
|
|
1511
1519
|
}
|
|
1512
1520
|
|
|
1513
1521
|
var __defProp$9 = Object.defineProperty;
|
|
@@ -2072,8 +2080,8 @@ function Stack$3(props) {
|
|
|
2072
2080
|
}
|
|
2073
2081
|
|
|
2074
2082
|
var __defProp$7 = Object.defineProperty;
|
|
2075
|
-
var __defProps$
|
|
2076
|
-
var __getOwnPropDescs$
|
|
2083
|
+
var __defProps$5 = Object.defineProperties;
|
|
2084
|
+
var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;
|
|
2077
2085
|
var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;
|
|
2078
2086
|
var __hasOwnProp$7 = Object.prototype.hasOwnProperty;
|
|
2079
2087
|
var __propIsEnum$7 = Object.prototype.propertyIsEnumerable;
|
|
@@ -2089,13 +2097,18 @@ var __spreadValues$7 = (a, b) => {
|
|
|
2089
2097
|
}
|
|
2090
2098
|
return a;
|
|
2091
2099
|
};
|
|
2092
|
-
var __spreadProps$
|
|
2100
|
+
var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
|
|
2093
2101
|
function Table$6(props) {
|
|
2094
2102
|
const preparedItems = React__namespace.useMemo(() => {
|
|
2095
|
-
return props.items.map((item) => __spreadProps$
|
|
2103
|
+
return props.items.map((item) => __spreadProps$5(__spreadValues$7({}, item), {
|
|
2096
2104
|
status: item.isComplete ? 2 : item.isStarted ? 1 : 0
|
|
2097
2105
|
}));
|
|
2098
2106
|
}, [props.items]);
|
|
2107
|
+
const { items: sortedItems, requestSort, sortConfig } = useSortableData(preparedItems);
|
|
2108
|
+
const sortStatus = {
|
|
2109
|
+
columnAccessor: sortConfig.key,
|
|
2110
|
+
direction: sortConfig.direction === "desc" ? "desc" : "asc"
|
|
2111
|
+
};
|
|
2099
2112
|
if (props.items.length === 0) {
|
|
2100
2113
|
return /* @__PURE__ */ React__namespace.createElement(
|
|
2101
2114
|
PlaceholderBanner,
|
|
@@ -2107,11 +2120,6 @@ function Table$6(props) {
|
|
|
2107
2120
|
}
|
|
2108
2121
|
);
|
|
2109
2122
|
}
|
|
2110
|
-
const { items: sortedItems, requestSort, sortConfig } = useSortableData(preparedItems);
|
|
2111
|
-
const sortStatus = {
|
|
2112
|
-
columnAccessor: sortConfig.key,
|
|
2113
|
-
direction: sortConfig.direction === "desc" ? "desc" : "asc"
|
|
2114
|
-
};
|
|
2115
2123
|
return /* @__PURE__ */ React__namespace.createElement(core.ScrollArea.Autosize, { maxHeight: 600 }, /* @__PURE__ */ React__namespace.createElement(
|
|
2116
2124
|
mantineDatatable.DataTable,
|
|
2117
2125
|
{
|
|
@@ -2580,8 +2588,8 @@ function Table$4(props) {
|
|
|
2580
2588
|
}
|
|
2581
2589
|
|
|
2582
2590
|
var __defProp$6 = Object.defineProperty;
|
|
2583
|
-
var __defProps$
|
|
2584
|
-
var __getOwnPropDescs$
|
|
2591
|
+
var __defProps$4 = Object.defineProperties;
|
|
2592
|
+
var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
|
|
2585
2593
|
var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;
|
|
2586
2594
|
var __hasOwnProp$6 = Object.prototype.hasOwnProperty;
|
|
2587
2595
|
var __propIsEnum$6 = Object.prototype.propertyIsEnumerable;
|
|
@@ -2597,7 +2605,7 @@ var __spreadValues$6 = (a, b) => {
|
|
|
2597
2605
|
}
|
|
2598
2606
|
return a;
|
|
2599
2607
|
};
|
|
2600
|
-
var __spreadProps$
|
|
2608
|
+
var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
|
|
2601
2609
|
const useStyles$a = core.createStyles((theme) => ({
|
|
2602
2610
|
title: {
|
|
2603
2611
|
fontSize: 34,
|
|
@@ -2659,7 +2667,7 @@ const People = (props) => {
|
|
|
2659
2667
|
padding: "xl",
|
|
2660
2668
|
size: "xl"
|
|
2661
2669
|
},
|
|
2662
|
-
/* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "md" }, /* @__PURE__ */ React__namespace.createElement(DropzoneButton, __spreadProps$
|
|
2670
|
+
/* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "md" }, /* @__PURE__ */ React__namespace.createElement(DropzoneButton, __spreadProps$4(__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(() => {
|
|
2663
2671
|
const values = form$1.values;
|
|
2664
2672
|
form$1.reset();
|
|
2665
2673
|
setOpened(false);
|
|
@@ -2947,8 +2955,8 @@ const TrialHome = (props) => {
|
|
|
2947
2955
|
};
|
|
2948
2956
|
|
|
2949
2957
|
var __defProp$4 = Object.defineProperty;
|
|
2950
|
-
var __defProps$
|
|
2951
|
-
var __getOwnPropDescs$
|
|
2958
|
+
var __defProps$3 = Object.defineProperties;
|
|
2959
|
+
var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
|
|
2952
2960
|
var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
|
|
2953
2961
|
var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
|
|
2954
2962
|
var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
|
|
@@ -2964,7 +2972,7 @@ var __spreadValues$4 = (a, b) => {
|
|
|
2964
2972
|
}
|
|
2965
2973
|
return a;
|
|
2966
2974
|
};
|
|
2967
|
-
var __spreadProps$
|
|
2975
|
+
var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
|
|
2968
2976
|
var __objRest = (source, exclude) => {
|
|
2969
2977
|
var target = {};
|
|
2970
2978
|
for (var prop in source)
|
|
@@ -3022,7 +3030,7 @@ function ImageCheckbox(_a) {
|
|
|
3022
3030
|
const { classes, cx } = useStyles$7({ checked: value });
|
|
3023
3031
|
return /* @__PURE__ */ React__namespace.createElement(
|
|
3024
3032
|
core.UnstyledButton,
|
|
3025
|
-
__spreadProps$
|
|
3033
|
+
__spreadProps$3(__spreadValues$4({}, others), {
|
|
3026
3034
|
onClick: () => handleChange(!value),
|
|
3027
3035
|
className: cx(classes.button, className)
|
|
3028
3036
|
}),
|
|
@@ -3043,7 +3051,7 @@ function ImageCheckbox(_a) {
|
|
|
3043
3051
|
function SelectGrid(props) {
|
|
3044
3052
|
const items = props.items.map((item) => /* @__PURE__ */ React__namespace.createElement(
|
|
3045
3053
|
ImageCheckbox,
|
|
3046
|
-
__spreadProps$
|
|
3054
|
+
__spreadProps$3(__spreadValues$4({}, item), {
|
|
3047
3055
|
key: item.title,
|
|
3048
3056
|
onChange: (checked) => props.onChange(item.title, checked)
|
|
3049
3057
|
})
|
|
@@ -3062,8 +3070,8 @@ function SelectGrid(props) {
|
|
|
3062
3070
|
}
|
|
3063
3071
|
|
|
3064
3072
|
var __defProp$3 = Object.defineProperty;
|
|
3065
|
-
var __defProps$
|
|
3066
|
-
var __getOwnPropDescs$
|
|
3073
|
+
var __defProps$2 = Object.defineProperties;
|
|
3074
|
+
var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
|
|
3067
3075
|
var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
|
|
3068
3076
|
var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
|
|
3069
3077
|
var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
|
|
@@ -3079,7 +3087,7 @@ var __spreadValues$3 = (a, b) => {
|
|
|
3079
3087
|
}
|
|
3080
3088
|
return a;
|
|
3081
3089
|
};
|
|
3082
|
-
var __spreadProps$
|
|
3090
|
+
var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
|
|
3083
3091
|
const useStyles$6 = core.createStyles((theme) => ({
|
|
3084
3092
|
wrapper: {
|
|
3085
3093
|
minHeight: "100%",
|
|
@@ -3189,7 +3197,7 @@ const TrialRegistration = (props) => {
|
|
|
3189
3197
|
label: "School/Organization Name",
|
|
3190
3198
|
placeholder: "What's the name of your school?",
|
|
3191
3199
|
data: props.organizations.map((o) => {
|
|
3192
|
-
return __spreadProps$
|
|
3200
|
+
return __spreadProps$2(__spreadValues$3({}, o), { value: o.displayName });
|
|
3193
3201
|
}),
|
|
3194
3202
|
onItemSubmit: (item) => setOrganization({ organizationId: item.organizationId, displayName: item.displayName }),
|
|
3195
3203
|
onChange: (next) => {
|
|
@@ -3201,7 +3209,7 @@ const TrialRegistration = (props) => {
|
|
|
3201
3209
|
SelectGrid,
|
|
3202
3210
|
{
|
|
3203
3211
|
items: OPTIONS,
|
|
3204
|
-
onChange: (e, checked) => setInterests(__spreadProps$
|
|
3212
|
+
onChange: (e, checked) => setInterests(__spreadProps$2(__spreadValues$3({}, interests), { [e]: checked }))
|
|
3205
3213
|
}
|
|
3206
3214
|
), /* @__PURE__ */ React__namespace.createElement(core.Group, { position: "right", mt: "md" }, /* @__PURE__ */ React__namespace.createElement(
|
|
3207
3215
|
core.Button,
|
|
@@ -3240,8 +3248,8 @@ const AdminProvider = (props) => {
|
|
|
3240
3248
|
};
|
|
3241
3249
|
|
|
3242
3250
|
var __defProp$2 = Object.defineProperty;
|
|
3243
|
-
var __defProps$
|
|
3244
|
-
var __getOwnPropDescs$
|
|
3251
|
+
var __defProps$1 = Object.defineProperties;
|
|
3252
|
+
var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
|
|
3245
3253
|
var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
|
|
3246
3254
|
var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
|
|
3247
3255
|
var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
|
|
@@ -3257,7 +3265,7 @@ var __spreadValues$2 = (a, b) => {
|
|
|
3257
3265
|
}
|
|
3258
3266
|
return a;
|
|
3259
3267
|
};
|
|
3260
|
-
var __spreadProps$
|
|
3268
|
+
var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
|
|
3261
3269
|
const useStyles$5 = core.createStyles((theme, props) => ({
|
|
3262
3270
|
footer: {
|
|
3263
3271
|
paddingTop: theme.spacing.md,
|
|
@@ -3353,7 +3361,7 @@ const App = (props) => {
|
|
|
3353
3361
|
padding: "xs",
|
|
3354
3362
|
navbar: props.navbar && /* @__PURE__ */ React__namespace.createElement(
|
|
3355
3363
|
Navbar,
|
|
3356
|
-
__spreadProps$
|
|
3364
|
+
__spreadProps$1(__spreadValues$2({}, props.navbar.props), {
|
|
3357
3365
|
onSwitchAccounts: account.accounts && account.accounts.length > 1 ? () => account.setChangeModalOpen(true) : void 0
|
|
3358
3366
|
})
|
|
3359
3367
|
),
|
|
@@ -3547,8 +3555,6 @@ function Stack$1(props) {
|
|
|
3547
3555
|
}
|
|
3548
3556
|
|
|
3549
3557
|
var __defProp$1 = Object.defineProperty;
|
|
3550
|
-
var __defProps$1 = Object.defineProperties;
|
|
3551
|
-
var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
|
|
3552
3558
|
var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
|
|
3553
3559
|
var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
|
|
3554
3560
|
var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
|
|
@@ -3564,37 +3570,12 @@ var __spreadValues$1 = (a, b) => {
|
|
|
3564
3570
|
}
|
|
3565
3571
|
return a;
|
|
3566
3572
|
};
|
|
3567
|
-
var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
|
|
3568
3573
|
function Table$2(props) {
|
|
3569
3574
|
const preparedItems = React__namespace.useMemo(() => {
|
|
3570
|
-
|
|
3571
|
-
|
|
3572
|
-
console.log("Raw items from props:", props);
|
|
3573
|
-
console.log("Raw items from prop.itemss:", props.items);
|
|
3574
|
-
console.log("Categories available:", props.categories);
|
|
3575
|
-
const mapped = props.items.map((item) => {
|
|
3576
|
-
const flatItem = __spreadProps$1(__spreadValues$1({}, item), {
|
|
3577
|
-
status: item.isComplete ? 1 : 0
|
|
3578
|
-
});
|
|
3579
|
-
if (item.categoryPoints) {
|
|
3580
|
-
Object.keys(item.categoryPoints).forEach((catId) => {
|
|
3581
|
-
flatItem[catId] = item.categoryPoints[catId];
|
|
3582
|
-
});
|
|
3583
|
-
}
|
|
3584
|
-
return flatItem;
|
|
3585
|
-
});
|
|
3586
|
-
console.log("Transformed items (Flat):", mapped);
|
|
3587
|
-
const firstCatId = (_b = (_a = props.categories) == null ? void 0 : _a[0]) == null ? void 0 : _b.categoryId;
|
|
3588
|
-
if (mapped.length > 0 && firstCatId) {
|
|
3589
|
-
console.log(`Matching Check for ID [${firstCatId}]:`, mapped[0][firstCatId] !== void 0 ? "\u2705 FOUND" : "\u274C MISSING");
|
|
3590
|
-
console.groupEnd();
|
|
3591
|
-
} else if (props.categories) {
|
|
3592
|
-
console.groupEnd();
|
|
3593
|
-
}
|
|
3594
|
-
return mapped;
|
|
3595
|
-
}, [props.items, props.categories]);
|
|
3575
|
+
return (props.items || []).map((item) => __spreadValues$1(__spreadValues$1({}, item), item.categoryPoints));
|
|
3576
|
+
}, [props.items]);
|
|
3596
3577
|
const { items: sortedItems, requestSort, sortConfig } = useSortableData(preparedItems);
|
|
3597
|
-
if (props.items.length === 0) {
|
|
3578
|
+
if (props.loading && props.items.length === 0) {
|
|
3598
3579
|
return /* @__PURE__ */ React__namespace.createElement(
|
|
3599
3580
|
PlaceholderBanner,
|
|
3600
3581
|
{
|
|
@@ -3632,7 +3613,7 @@ function Table$2(props) {
|
|
|
3632
3613
|
render: (row) => /* @__PURE__ */ React__namespace.createElement(core.Group, { spacing: "sm", noWrap: true }, /* @__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)))
|
|
3633
3614
|
},
|
|
3634
3615
|
{
|
|
3635
|
-
accessor: "
|
|
3616
|
+
accessor: "isComplete",
|
|
3636
3617
|
title: "Status",
|
|
3637
3618
|
sortable: true,
|
|
3638
3619
|
titleStyle: { whiteSpace: "nowrap" },
|
|
@@ -3677,6 +3658,8 @@ function Table$1(props) {
|
|
|
3677
3658
|
mantineDatatable.DataTable,
|
|
3678
3659
|
{
|
|
3679
3660
|
verticalSpacing: "sm",
|
|
3661
|
+
withBorder: false,
|
|
3662
|
+
borderRadius: "sm",
|
|
3680
3663
|
sx: { minWidth: 700 },
|
|
3681
3664
|
highlightOnHover: true,
|
|
3682
3665
|
striped: true,
|
|
@@ -3689,7 +3672,23 @@ function Table$1(props) {
|
|
|
3689
3672
|
accessor: "badgeName",
|
|
3690
3673
|
title: "Badge Name",
|
|
3691
3674
|
sortable: true,
|
|
3692
|
-
render: (row) => /* @__PURE__ */ React__namespace.createElement(
|
|
3675
|
+
render: (row) => /* @__PURE__ */ React__namespace.createElement(
|
|
3676
|
+
core.Text,
|
|
3677
|
+
{
|
|
3678
|
+
component: reactRouterDom.Link,
|
|
3679
|
+
to: row.href,
|
|
3680
|
+
sx: (theme) => ({
|
|
3681
|
+
color: theme.colorScheme === "dark" ? theme.white : theme.black,
|
|
3682
|
+
textDecoration: "none",
|
|
3683
|
+
fontWeight: 500,
|
|
3684
|
+
"&:hover": {
|
|
3685
|
+
textDecoration: "underline",
|
|
3686
|
+
color: theme.colors.blue[6]
|
|
3687
|
+
}
|
|
3688
|
+
})
|
|
3689
|
+
},
|
|
3690
|
+
row.badgeName
|
|
3691
|
+
)
|
|
3693
3692
|
},
|
|
3694
3693
|
{
|
|
3695
3694
|
accessor: "percentageCompletion",
|