@local-civics/mgmt-ui 0.1.96 → 0.1.99
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +5 -2
- package/dist/index.js +95 -90
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +97 -92
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ interface NavbarProps {
|
|
|
18
18
|
trial?: boolean;
|
|
19
19
|
loading?: boolean;
|
|
20
20
|
onLogout: () => void;
|
|
21
|
+
onGettingStarted: () => void;
|
|
21
22
|
onSwitchAccounts?: () => void;
|
|
22
23
|
}
|
|
23
24
|
declare function Navbar(props: NavbarProps): JSX.Element;
|
|
@@ -582,13 +583,14 @@ declare const StartAnonymousLesson: (props: StartAnonymousLessonProps) => JSX.El
|
|
|
582
583
|
*/
|
|
583
584
|
type BadgeGridProps = {
|
|
584
585
|
badges: TaskCardProps[];
|
|
586
|
+
onAssign: (taskId: string) => void;
|
|
585
587
|
};
|
|
586
588
|
type TaskCardProps = {
|
|
589
|
+
taskId: string;
|
|
587
590
|
title: string;
|
|
588
591
|
description: string;
|
|
589
|
-
lessonsCompleted: number;
|
|
590
|
-
lessonsTotal: number;
|
|
591
592
|
href: string;
|
|
593
|
+
onAssign: (taskId: string) => void;
|
|
592
594
|
};
|
|
593
595
|
|
|
594
596
|
/**
|
|
@@ -597,6 +599,7 @@ type TaskCardProps = {
|
|
|
597
599
|
type TrialHomeProps = BadgeGridProps & {
|
|
598
600
|
loading: boolean;
|
|
599
601
|
name: string;
|
|
602
|
+
firstName: string;
|
|
600
603
|
daysRemaining: number;
|
|
601
604
|
upgradeHref: string;
|
|
602
605
|
};
|
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$p = core.createStyles((theme) => ({
|
|
66
66
|
user: {
|
|
67
67
|
display: "block",
|
|
68
68
|
width: "100%",
|
|
@@ -73,7 +73,7 @@ const useStyles$o = 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$p();
|
|
77
77
|
return /* @__PURE__ */ React__namespace.createElement(core.Group, __spreadValues$9({ 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$o = core.createStyles((theme, _params, getRef) => {
|
|
88
88
|
const icon = getRef("icon");
|
|
89
89
|
return {
|
|
90
90
|
control: {
|
|
@@ -137,7 +137,7 @@ const useStyles$n = 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$o();
|
|
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);
|
|
@@ -201,7 +201,7 @@ var __spreadValues$8 = (a, b) => {
|
|
|
201
201
|
return a;
|
|
202
202
|
};
|
|
203
203
|
var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
|
|
204
|
-
const useStyles$
|
|
204
|
+
const useStyles$n = core.createStyles((theme, _params, getRef) => {
|
|
205
205
|
const icon = getRef("icon");
|
|
206
206
|
return {
|
|
207
207
|
navbar: {
|
|
@@ -300,7 +300,7 @@ const TRIAL_PAGES = [
|
|
|
300
300
|
"Badges"
|
|
301
301
|
];
|
|
302
302
|
function Navbar(props) {
|
|
303
|
-
const { classes, cx } = useStyles$
|
|
303
|
+
const { classes, cx } = useStyles$n();
|
|
304
304
|
const [burgerOpen, setBurgerOpen] = React__namespace.useState(false);
|
|
305
305
|
const toggle = () => setBurgerOpen(!burgerOpen);
|
|
306
306
|
const links = data.map((item) => {
|
|
@@ -331,7 +331,10 @@ function Navbar(props) {
|
|
|
331
331
|
name: props.name,
|
|
332
332
|
email: props.email
|
|
333
333
|
}
|
|
334
|
-
), /* @__PURE__ */ React__namespace.createElement(core.Navbar.Section, { grow: true, className: classes.links, component: core.ScrollArea }, /* @__PURE__ */ React__namespace.createElement("div", { className: classes.linksInner }, links)), !props.loading && /* @__PURE__ */ React__namespace.createElement(core.Navbar.Section, { className: classes.footer },
|
|
334
|
+
), /* @__PURE__ */ React__namespace.createElement(core.Navbar.Section, { grow: true, className: classes.links, component: core.ScrollArea }, /* @__PURE__ */ React__namespace.createElement("div", { className: classes.linksInner }, links)), !props.loading && /* @__PURE__ */ React__namespace.createElement(core.Navbar.Section, { className: classes.footer }, props.trial && /* @__PURE__ */ React__namespace.createElement("a", { href: "#", className: classes.link, onClick: (event) => {
|
|
335
|
+
event.preventDefault();
|
|
336
|
+
props.onGettingStarted();
|
|
337
|
+
} }, /* @__PURE__ */ React__namespace.createElement(icons.IconVideo, { className: classes.linkIcon, stroke: 1.5 }), /* @__PURE__ */ React__namespace.createElement("span", null, "Getting started")), !!props.onSwitchAccounts && /* @__PURE__ */ React__namespace.createElement("a", { href: "#", className: classes.link, onClick: (event) => {
|
|
335
338
|
event.preventDefault();
|
|
336
339
|
props.onSwitchAccounts && props.onSwitchAccounts();
|
|
337
340
|
} }, /* @__PURE__ */ React__namespace.createElement(icons.IconSwitchHorizontal, { className: classes.linkIcon, stroke: 1.5 }), /* @__PURE__ */ React__namespace.createElement("span", null, "Change account")), /* @__PURE__ */ React__namespace.createElement("a", { href: "#", className: classes.link, onClick: (event) => {
|
|
@@ -340,7 +343,7 @@ function Navbar(props) {
|
|
|
340
343
|
} }, /* @__PURE__ */ React__namespace.createElement(icons.IconLogout, { className: classes.linkIcon, stroke: 1.5 }), /* @__PURE__ */ React__namespace.createElement("span", null, "Logout"))))));
|
|
341
344
|
}
|
|
342
345
|
|
|
343
|
-
const useStyles$
|
|
346
|
+
const useStyles$m = core.createStyles((theme) => ({
|
|
344
347
|
title: {
|
|
345
348
|
fontSize: 34,
|
|
346
349
|
fontWeight: 900,
|
|
@@ -381,7 +384,7 @@ const useStyles$l = core.createStyles((theme) => ({
|
|
|
381
384
|
}
|
|
382
385
|
}));
|
|
383
386
|
const SwitchAccount = (props) => {
|
|
384
|
-
const { classes, theme } = useStyles$
|
|
387
|
+
const { classes, theme } = useStyles$m();
|
|
385
388
|
const options = props.accounts.map((a) => {
|
|
386
389
|
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")));
|
|
387
390
|
});
|
|
@@ -398,7 +401,7 @@ const SwitchAccount = (props) => {
|
|
|
398
401
|
);
|
|
399
402
|
};
|
|
400
403
|
|
|
401
|
-
const useStyles$
|
|
404
|
+
const useStyles$l = core.createStyles((theme) => ({
|
|
402
405
|
root: {
|
|
403
406
|
display: "flex",
|
|
404
407
|
backgroundImage: `linear-gradient(-60deg, ${theme.colors[theme.primaryColor][4]} 0%, ${theme.colors[theme.primaryColor][7]} 100%)`,
|
|
@@ -442,7 +445,7 @@ const useStyles$k = core.createStyles((theme) => ({
|
|
|
442
445
|
}
|
|
443
446
|
}));
|
|
444
447
|
const StatsGroup = ({ data, footer }) => {
|
|
445
|
-
const { classes } = useStyles$
|
|
448
|
+
const { classes } = useStyles$l();
|
|
446
449
|
const stats = data.map((stat) => {
|
|
447
450
|
const value = (() => {
|
|
448
451
|
if (stat.unit === "%") {
|
|
@@ -461,7 +464,7 @@ const Tabs = (props) => {
|
|
|
461
464
|
return /* @__PURE__ */ React__namespace.createElement(core.Tabs, { value: props.value, onTabChange: props.onChange }, /* @__PURE__ */ React__namespace.createElement(core.Tabs.List, null, tabs));
|
|
462
465
|
};
|
|
463
466
|
|
|
464
|
-
const useStyles$
|
|
467
|
+
const useStyles$k = core.createStyles((theme) => ({
|
|
465
468
|
button: {
|
|
466
469
|
borderTopRightRadius: 0,
|
|
467
470
|
borderBottomRightRadius: 0,
|
|
@@ -476,7 +479,7 @@ const useStyles$j = core.createStyles((theme) => ({
|
|
|
476
479
|
}
|
|
477
480
|
}));
|
|
478
481
|
const SplitButton$3 = (props) => {
|
|
479
|
-
const { classes, theme } = useStyles$
|
|
482
|
+
const { classes, theme } = useStyles$k();
|
|
480
483
|
const menuIconColor = theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
|
|
481
484
|
return /* @__PURE__ */ React__namespace.createElement(core.Group, { noWrap: true, spacing: 0 }, /* @__PURE__ */ React__namespace.createElement(
|
|
482
485
|
core.Button,
|
|
@@ -513,7 +516,7 @@ const SplitButton$3 = (props) => {
|
|
|
513
516
|
))));
|
|
514
517
|
};
|
|
515
518
|
|
|
516
|
-
const useStyles$
|
|
519
|
+
const useStyles$j = core.createStyles((theme) => ({
|
|
517
520
|
wrapper: {
|
|
518
521
|
display: "flex",
|
|
519
522
|
alignItems: "center",
|
|
@@ -564,7 +567,7 @@ const useStyles$i = core.createStyles((theme) => ({
|
|
|
564
567
|
}
|
|
565
568
|
}));
|
|
566
569
|
const PlaceholderBanner = (props) => {
|
|
567
|
-
const { classes } = useStyles$
|
|
570
|
+
const { classes } = useStyles$j();
|
|
568
571
|
const title = props.title || "Nothing to display";
|
|
569
572
|
const description = props.description || "We don't have anything to show you here just yet. Add data, check back later, or adjust your search.";
|
|
570
573
|
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 }));
|
|
@@ -636,7 +639,7 @@ function Table$f(props) {
|
|
|
636
639
|
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, "Lesson Completion"))), /* @__PURE__ */ React__namespace.createElement("tbody", null, rows)));
|
|
637
640
|
}
|
|
638
641
|
|
|
639
|
-
const useStyles$
|
|
642
|
+
const useStyles$i = core.createStyles((theme) => ({
|
|
640
643
|
title: {
|
|
641
644
|
fontSize: 34,
|
|
642
645
|
fontWeight: 900,
|
|
@@ -649,7 +652,7 @@ const useStyles$h = core.createStyles((theme) => ({
|
|
|
649
652
|
}
|
|
650
653
|
}));
|
|
651
654
|
const Badge = (props) => {
|
|
652
|
-
const { classes } = useStyles$
|
|
655
|
+
const { classes } = useStyles$i();
|
|
653
656
|
const [tab, setTab] = React.useState("lessons");
|
|
654
657
|
const numberOfStudents = props.students.length;
|
|
655
658
|
const percentageOfBadgesEarned = numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length / numberOfStudents : 0;
|
|
@@ -746,7 +749,7 @@ function Table$e(props) {
|
|
|
746
749
|
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)));
|
|
747
750
|
}
|
|
748
751
|
|
|
749
|
-
const useStyles$
|
|
752
|
+
const useStyles$h = core.createStyles((theme) => ({
|
|
750
753
|
title: {
|
|
751
754
|
fontSize: 34,
|
|
752
755
|
fontWeight: 900,
|
|
@@ -759,7 +762,7 @@ const useStyles$g = core.createStyles((theme) => ({
|
|
|
759
762
|
}
|
|
760
763
|
}));
|
|
761
764
|
const Badges = (props) => {
|
|
762
|
-
const { classes } = useStyles$
|
|
765
|
+
const { classes } = useStyles$h();
|
|
763
766
|
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" }, "Project-sized skills acquisition and standards alignment."))), /* @__PURE__ */ React__namespace.createElement(
|
|
764
767
|
core.Autocomplete,
|
|
765
768
|
{
|
|
@@ -1033,7 +1036,7 @@ var __spreadValues$7 = (a, b) => {
|
|
|
1033
1036
|
return a;
|
|
1034
1037
|
};
|
|
1035
1038
|
var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
|
|
1036
|
-
const useStyles$
|
|
1039
|
+
const useStyles$g = core.createStyles((theme) => ({
|
|
1037
1040
|
title: {
|
|
1038
1041
|
fontSize: 34,
|
|
1039
1042
|
fontWeight: 900,
|
|
@@ -1066,7 +1069,7 @@ const useStyles$f = core.createStyles((theme) => ({
|
|
|
1066
1069
|
}
|
|
1067
1070
|
}));
|
|
1068
1071
|
const Class = (props) => {
|
|
1069
|
-
const { classes } = useStyles$
|
|
1072
|
+
const { classes } = useStyles$g();
|
|
1070
1073
|
const form$1 = form.useForm({
|
|
1071
1074
|
initialValues: {
|
|
1072
1075
|
classId: "",
|
|
@@ -1166,7 +1169,7 @@ const Class = (props) => {
|
|
|
1166
1169
|
))))));
|
|
1167
1170
|
};
|
|
1168
1171
|
const DropzoneButton$1 = (props) => {
|
|
1169
|
-
const { classes, theme } = useStyles$
|
|
1172
|
+
const { classes, theme } = useStyles$g();
|
|
1170
1173
|
const openRef = React__namespace.useRef(null);
|
|
1171
1174
|
const [loading, setLoading] = React__namespace.useState(false);
|
|
1172
1175
|
const onDrop = React__namespace.useCallback((acceptedFiles) => {
|
|
@@ -1252,7 +1255,7 @@ var __spreadValues$6 = (a, b) => {
|
|
|
1252
1255
|
}
|
|
1253
1256
|
return a;
|
|
1254
1257
|
};
|
|
1255
|
-
const useStyles$
|
|
1258
|
+
const useStyles$f = core.createStyles((theme) => ({
|
|
1256
1259
|
title: {
|
|
1257
1260
|
fontSize: 34,
|
|
1258
1261
|
fontWeight: 900,
|
|
@@ -1265,7 +1268,7 @@ const useStyles$e = core.createStyles((theme) => ({
|
|
|
1265
1268
|
}
|
|
1266
1269
|
}));
|
|
1267
1270
|
const Classes = (props) => {
|
|
1268
|
-
const { classes } = useStyles$
|
|
1271
|
+
const { classes } = useStyles$f();
|
|
1269
1272
|
const form$1 = form.useForm({
|
|
1270
1273
|
initialValues: {
|
|
1271
1274
|
classId: "",
|
|
@@ -1336,7 +1339,7 @@ const Classes = (props) => {
|
|
|
1336
1339
|
))))));
|
|
1337
1340
|
};
|
|
1338
1341
|
|
|
1339
|
-
const useStyles$
|
|
1342
|
+
const useStyles$e = core.createStyles((theme) => ({
|
|
1340
1343
|
title: {
|
|
1341
1344
|
fontSize: 34,
|
|
1342
1345
|
fontWeight: 900,
|
|
@@ -1350,7 +1353,7 @@ const useStyles$d = core.createStyles((theme) => ({
|
|
|
1350
1353
|
}
|
|
1351
1354
|
}));
|
|
1352
1355
|
const UserInfo = (props) => {
|
|
1353
|
-
const { classes } = useStyles$
|
|
1356
|
+
const { classes } = useStyles$e();
|
|
1354
1357
|
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));
|
|
1355
1358
|
};
|
|
1356
1359
|
|
|
@@ -1488,7 +1491,7 @@ const Student = (props) => {
|
|
|
1488
1491
|
))))));
|
|
1489
1492
|
};
|
|
1490
1493
|
|
|
1491
|
-
const useStyles$
|
|
1494
|
+
const useStyles$d = core.createStyles((theme, props) => {
|
|
1492
1495
|
const from = props.from || "blue";
|
|
1493
1496
|
const to = props.to || "green";
|
|
1494
1497
|
return {
|
|
@@ -1516,7 +1519,7 @@ const useStyles$c = core.createStyles((theme, props) => {
|
|
|
1516
1519
|
};
|
|
1517
1520
|
});
|
|
1518
1521
|
function CardGradient(props) {
|
|
1519
|
-
const { classes } = useStyles$
|
|
1522
|
+
const { classes } = useStyles$d(props);
|
|
1520
1523
|
const from = props.from || "blue";
|
|
1521
1524
|
const to = props.to || "green";
|
|
1522
1525
|
const icon = props.icon || /* @__PURE__ */ React__namespace.createElement(icons.IconColorSwatch, { size: 28, stroke: 1.5 });
|
|
@@ -1560,7 +1563,7 @@ var __objRest$1 = (source, exclude) => {
|
|
|
1560
1563
|
}
|
|
1561
1564
|
return target;
|
|
1562
1565
|
};
|
|
1563
|
-
const useStyles$
|
|
1566
|
+
const useStyles$c = core.createStyles((theme) => ({
|
|
1564
1567
|
card: {
|
|
1565
1568
|
height: 240,
|
|
1566
1569
|
backgroundSize: "cover",
|
|
@@ -1576,11 +1579,6 @@ const useStyles$b = core.createStyles((theme) => ({
|
|
|
1576
1579
|
right: 0,
|
|
1577
1580
|
left: 0
|
|
1578
1581
|
},
|
|
1579
|
-
action: {
|
|
1580
|
-
position: "absolute",
|
|
1581
|
-
bottom: theme.spacing.xl,
|
|
1582
|
-
right: theme.spacing.xl
|
|
1583
|
-
},
|
|
1584
1582
|
title: {
|
|
1585
1583
|
color: theme.white,
|
|
1586
1584
|
marginBottom: theme.spacing.xs / 2
|
|
@@ -1595,18 +1593,16 @@ const TenantBanner = (_a) => {
|
|
|
1595
1593
|
title,
|
|
1596
1594
|
description,
|
|
1597
1595
|
image,
|
|
1598
|
-
action,
|
|
1599
1596
|
style,
|
|
1600
1597
|
className
|
|
1601
1598
|
} = _b, others = __objRest$1(_b, [
|
|
1602
1599
|
"title",
|
|
1603
1600
|
"description",
|
|
1604
1601
|
"image",
|
|
1605
|
-
"action",
|
|
1606
1602
|
"style",
|
|
1607
1603
|
"className"
|
|
1608
1604
|
]);
|
|
1609
|
-
const { classes, cx, theme } = useStyles$
|
|
1605
|
+
const { classes, cx, theme } = useStyles$c();
|
|
1610
1606
|
return /* @__PURE__ */ React__namespace.createElement(
|
|
1611
1607
|
core.Card,
|
|
1612
1608
|
__spreadValues$5({
|
|
@@ -1617,24 +1613,12 @@ const TenantBanner = (_a) => {
|
|
|
1617
1613
|
/* @__PURE__ */ React__namespace.createElement(
|
|
1618
1614
|
core.Overlay,
|
|
1619
1615
|
{
|
|
1620
|
-
gradient: `linear-gradient(105deg, ${theme.black} 20%, #312f2f 50%, ${theme.colors.gray[
|
|
1616
|
+
gradient: `linear-gradient(105deg, ${theme.black} 20%, #312f2f 50%, ${theme.colors.gray[6]} 100%)`,
|
|
1621
1617
|
opacity: 0.55,
|
|
1622
1618
|
zIndex: 0
|
|
1623
1619
|
}
|
|
1624
1620
|
),
|
|
1625
|
-
/* @__PURE__ */ React__namespace.createElement("div", { className: classes.content }, /* @__PURE__ */ React__namespace.createElement(core.Text, { size: "lg", weight: 700, className: classes.title }, title), /* @__PURE__ */ React__namespace.createElement(core.Text, { size: "sm", className: classes.description }, description)
|
|
1626
|
-
core.Button,
|
|
1627
|
-
{
|
|
1628
|
-
className: classes.action,
|
|
1629
|
-
variant: "white",
|
|
1630
|
-
color: "dark",
|
|
1631
|
-
component: "a",
|
|
1632
|
-
size: "xs",
|
|
1633
|
-
href: action.link,
|
|
1634
|
-
target: "_blank"
|
|
1635
|
-
},
|
|
1636
|
-
action.label
|
|
1637
|
-
))
|
|
1621
|
+
/* @__PURE__ */ React__namespace.createElement("div", { className: classes.content }, /* @__PURE__ */ React__namespace.createElement(core.Text, { size: "lg", weight: 700, className: classes.title }, title), /* @__PURE__ */ React__namespace.createElement(core.Text, { size: "sm", className: classes.description }, description))
|
|
1638
1622
|
);
|
|
1639
1623
|
};
|
|
1640
1624
|
|
|
@@ -1651,11 +1635,7 @@ const Home = (props) => {
|
|
|
1651
1635
|
{
|
|
1652
1636
|
title: props.organization.name,
|
|
1653
1637
|
description: props.organization.description,
|
|
1654
|
-
image: props.organization.image
|
|
1655
|
-
action: {
|
|
1656
|
-
label: "Visit website",
|
|
1657
|
-
link: props.organization.website
|
|
1658
|
-
}
|
|
1638
|
+
image: props.organization.image
|
|
1659
1639
|
}
|
|
1660
1640
|
))), /* @__PURE__ */ React__namespace.createElement(core.Grid, { gutter: "md" }, /* @__PURE__ */ React__namespace.createElement(core.Grid.Col, null, /* @__PURE__ */ React__namespace.createElement(
|
|
1661
1641
|
CardGradient,
|
|
@@ -1704,7 +1684,7 @@ function Table$3(props) {
|
|
|
1704
1684
|
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, "Reflection"), /* @__PURE__ */ React__namespace.createElement("th", null, "Rating"))), /* @__PURE__ */ React__namespace.createElement("tbody", null, rows)));
|
|
1705
1685
|
}
|
|
1706
1686
|
|
|
1707
|
-
const useStyles$
|
|
1687
|
+
const useStyles$b = core.createStyles((theme) => ({
|
|
1708
1688
|
button: {
|
|
1709
1689
|
borderTopRightRadius: 0,
|
|
1710
1690
|
borderBottomRightRadius: 0,
|
|
@@ -1719,7 +1699,7 @@ const useStyles$a = core.createStyles((theme) => ({
|
|
|
1719
1699
|
}
|
|
1720
1700
|
}));
|
|
1721
1701
|
const SplitButton$1 = (props) => {
|
|
1722
|
-
const { classes, theme } = useStyles$
|
|
1702
|
+
const { classes, theme } = useStyles$b();
|
|
1723
1703
|
const menuIconColor = theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
|
|
1724
1704
|
return /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "sm" }, /* @__PURE__ */ React__namespace.createElement(
|
|
1725
1705
|
core.Button,
|
|
@@ -1872,7 +1852,7 @@ function Stack(props) {
|
|
|
1872
1852
|
}
|
|
1873
1853
|
const truncateWithEllipses = (text, max) => text.substr(0, max - 1) + (text.length > max ? "…" : "");
|
|
1874
1854
|
|
|
1875
|
-
const useStyles$
|
|
1855
|
+
const useStyles$a = core.createStyles((theme) => ({
|
|
1876
1856
|
title: {
|
|
1877
1857
|
fontSize: 34,
|
|
1878
1858
|
fontWeight: 900,
|
|
@@ -1885,7 +1865,7 @@ const useStyles$9 = core.createStyles((theme) => ({
|
|
|
1885
1865
|
}
|
|
1886
1866
|
}));
|
|
1887
1867
|
const Lesson = (props) => {
|
|
1888
|
-
const { classes } = useStyles$
|
|
1868
|
+
const { classes } = useStyles$a();
|
|
1889
1869
|
const [tab, setTab] = React.useState("question");
|
|
1890
1870
|
const numberOfStudents = props.students.length;
|
|
1891
1871
|
const percentageOfLessonsCompleted = numberOfStudents > 0 ? props.students.filter((u) => u.isComplete).length / numberOfStudents : 0;
|
|
@@ -2028,7 +2008,7 @@ function Table$1(props) {
|
|
|
2028
2008
|
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)));
|
|
2029
2009
|
}
|
|
2030
2010
|
|
|
2031
|
-
const useStyles$
|
|
2011
|
+
const useStyles$9 = core.createStyles((theme) => ({
|
|
2032
2012
|
title: {
|
|
2033
2013
|
fontSize: 34,
|
|
2034
2014
|
fontWeight: 900,
|
|
@@ -2041,7 +2021,7 @@ const useStyles$8 = core.createStyles((theme) => ({
|
|
|
2041
2021
|
}
|
|
2042
2022
|
}));
|
|
2043
2023
|
const Lessons = (props) => {
|
|
2044
|
-
const { classes } = useStyles$
|
|
2024
|
+
const { classes } = useStyles$9();
|
|
2045
2025
|
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" }, "Explore units of instruction and/or see corresponding class progress."))), /* @__PURE__ */ React__namespace.createElement(
|
|
2046
2026
|
core.Autocomplete,
|
|
2047
2027
|
{
|
|
@@ -2058,7 +2038,7 @@ const Lessons = (props) => {
|
|
|
2058
2038
|
))));
|
|
2059
2039
|
};
|
|
2060
2040
|
|
|
2061
|
-
const useStyles$
|
|
2041
|
+
const useStyles$8 = core.createStyles((theme) => ({
|
|
2062
2042
|
title: {
|
|
2063
2043
|
fontSize: 22,
|
|
2064
2044
|
fontWeight: 900,
|
|
@@ -2077,7 +2057,7 @@ const useStyles$7 = core.createStyles((theme) => ({
|
|
|
2077
2057
|
}
|
|
2078
2058
|
}));
|
|
2079
2059
|
function AccessCode(props) {
|
|
2080
|
-
const { classes } = useStyles$
|
|
2060
|
+
const { classes } = useStyles$8();
|
|
2081
2061
|
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(
|
|
2082
2062
|
core.Anchor,
|
|
2083
2063
|
{
|
|
@@ -2105,7 +2085,7 @@ const monthNames = [
|
|
|
2105
2085
|
"November",
|
|
2106
2086
|
"December"
|
|
2107
2087
|
];
|
|
2108
|
-
const useStyles$
|
|
2088
|
+
const useStyles$7 = core.createStyles((theme) => ({
|
|
2109
2089
|
title: {
|
|
2110
2090
|
fontSize: 34,
|
|
2111
2091
|
fontWeight: 900,
|
|
@@ -2135,7 +2115,7 @@ const useStyles$6 = core.createStyles((theme) => ({
|
|
|
2135
2115
|
}
|
|
2136
2116
|
}));
|
|
2137
2117
|
const Organization = (props) => {
|
|
2138
|
-
const { classes } = useStyles$
|
|
2118
|
+
const { classes } = useStyles$7();
|
|
2139
2119
|
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(
|
|
2140
2120
|
core.Badge,
|
|
2141
2121
|
{
|
|
@@ -2161,7 +2141,7 @@ const Organization = (props) => {
|
|
|
2161
2141
|
] }))))));
|
|
2162
2142
|
};
|
|
2163
2143
|
|
|
2164
|
-
const useStyles$
|
|
2144
|
+
const useStyles$6 = core.createStyles((theme) => ({
|
|
2165
2145
|
button: {
|
|
2166
2146
|
borderTopRightRadius: 0,
|
|
2167
2147
|
borderBottomRightRadius: 0,
|
|
@@ -2176,7 +2156,7 @@ const useStyles$5 = core.createStyles((theme) => ({
|
|
|
2176
2156
|
}
|
|
2177
2157
|
}));
|
|
2178
2158
|
const SplitButton = (props) => {
|
|
2179
|
-
const { classes, theme } = useStyles$
|
|
2159
|
+
const { classes, theme } = useStyles$6();
|
|
2180
2160
|
const menuIconColor = theme.colors[theme.primaryColor][theme.colorScheme === "dark" ? 5 : 6];
|
|
2181
2161
|
const hasMenu = !!props.withOrganizationLink;
|
|
2182
2162
|
return /* @__PURE__ */ React__namespace.createElement(core.Group, { noWrap: true, spacing: 0 }, /* @__PURE__ */ React__namespace.createElement(
|
|
@@ -2257,7 +2237,7 @@ var __spreadValues$4 = (a, b) => {
|
|
|
2257
2237
|
return a;
|
|
2258
2238
|
};
|
|
2259
2239
|
var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
|
|
2260
|
-
const useStyles$
|
|
2240
|
+
const useStyles$5 = core.createStyles((theme) => ({
|
|
2261
2241
|
title: {
|
|
2262
2242
|
fontSize: 34,
|
|
2263
2243
|
fontWeight: 900,
|
|
@@ -2287,7 +2267,7 @@ const useStyles$4 = core.createStyles((theme) => ({
|
|
|
2287
2267
|
}
|
|
2288
2268
|
}));
|
|
2289
2269
|
const People = (props) => {
|
|
2290
|
-
const { classes } = useStyles$
|
|
2270
|
+
const { classes } = useStyles$5();
|
|
2291
2271
|
const form$1 = form.useForm({
|
|
2292
2272
|
initialValues: {
|
|
2293
2273
|
userId: "",
|
|
@@ -2391,7 +2371,7 @@ const People = (props) => {
|
|
|
2391
2371
|
))))));
|
|
2392
2372
|
};
|
|
2393
2373
|
const DropzoneButton = (props) => {
|
|
2394
|
-
const { classes, theme } = useStyles$
|
|
2374
|
+
const { classes, theme } = useStyles$5();
|
|
2395
2375
|
const openRef = React__namespace.useRef(null);
|
|
2396
2376
|
const [loading, setLoading] = React__namespace.useState(false);
|
|
2397
2377
|
const onDrop = React__namespace.useCallback((acceptedFiles) => {
|
|
@@ -2437,7 +2417,7 @@ const DropzoneButton = (props) => {
|
|
|
2437
2417
|
} }, "Select file"));
|
|
2438
2418
|
};
|
|
2439
2419
|
|
|
2440
|
-
const useStyles$
|
|
2420
|
+
const useStyles$4 = core.createStyles((theme) => ({
|
|
2441
2421
|
form: {
|
|
2442
2422
|
backgroundColor: theme.white,
|
|
2443
2423
|
padding: theme.spacing.xl,
|
|
@@ -2500,7 +2480,7 @@ const useStyles$3 = core.createStyles((theme) => ({
|
|
|
2500
2480
|
}
|
|
2501
2481
|
}));
|
|
2502
2482
|
const StartAnonymousLesson = (props) => {
|
|
2503
|
-
const { classes } = useStyles$
|
|
2483
|
+
const { classes } = useStyles$4();
|
|
2504
2484
|
const [name, setName] = React__namespace.useState("");
|
|
2505
2485
|
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" }, "Instructed by ", props.educatorName, ".")), /* @__PURE__ */ React__namespace.createElement("div", { className: classes.form }, /* @__PURE__ */ React__namespace.createElement(
|
|
2506
2486
|
core.TextInput,
|
|
@@ -2534,23 +2514,52 @@ var __spreadValues$3 = (a, b) => {
|
|
|
2534
2514
|
};
|
|
2535
2515
|
const BadgeGrid = (props) => {
|
|
2536
2516
|
const badges = props.badges.map((b) => /* @__PURE__ */ React__namespace.createElement(TaskCard, __spreadValues$3({ key: b.title }, b)));
|
|
2537
|
-
return /* @__PURE__ */ React__namespace.createElement(core.SimpleGrid, { cols:
|
|
2517
|
+
return /* @__PURE__ */ React__namespace.createElement(core.SimpleGrid, { cols: 4, breakpoints: [{ maxWidth: "sm", cols: 1 }, { maxWidth: "md", cols: 3 }] }, badges);
|
|
2538
2518
|
};
|
|
2539
2519
|
function TaskCard(props) {
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
core.Text,
|
|
2520
|
+
return /* @__PURE__ */ React__namespace.createElement(core.Card, { withBorder: true, radius: "md" }, /* @__PURE__ */ React__namespace.createElement(core.UnstyledButton, { component: reactRouterDom.Link, to: props.href, sx: { ":hover": { textDecoration: "underline" } } }, /* @__PURE__ */ React__namespace.createElement(core.Text, { size: "md", weight: 500 }, props.title)), /* @__PURE__ */ React__namespace.createElement(core.Text, { size: "sm", color: "dimmed", mt: 5, mb: 25, h: 100, sx: { overflowY: "scroll" } }, props.description), /* @__PURE__ */ React__namespace.createElement(
|
|
2521
|
+
core.Button,
|
|
2543
2522
|
{
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2523
|
+
variant: "gradient",
|
|
2524
|
+
size: "xs",
|
|
2525
|
+
leftIcon: /* @__PURE__ */ React__namespace.createElement(icons.IconClipboardCopy, { size: 14 }),
|
|
2526
|
+
onClick: () => props.onAssign(props.taskId)
|
|
2547
2527
|
},
|
|
2548
|
-
|
|
2549
|
-
))
|
|
2528
|
+
"Assign"
|
|
2529
|
+
));
|
|
2550
2530
|
}
|
|
2551
2531
|
|
|
2532
|
+
const useStyles$3 = core.createStyles((theme) => ({
|
|
2533
|
+
action: {
|
|
2534
|
+
":hover": {
|
|
2535
|
+
textDecoration: "underline"
|
|
2536
|
+
}
|
|
2537
|
+
},
|
|
2538
|
+
title: {
|
|
2539
|
+
color: theme.colorScheme === "dark" ? theme.white : theme.black,
|
|
2540
|
+
fontFamily: `Greycliff CF, ${theme.fontFamily}`,
|
|
2541
|
+
fontSize: theme.fontSizes.xl,
|
|
2542
|
+
lineHeight: 1.5,
|
|
2543
|
+
fontWeight: 900,
|
|
2544
|
+
[theme.fn.smallerThan("xs")]: {
|
|
2545
|
+
fontSize: theme.fontSizes.md
|
|
2546
|
+
}
|
|
2547
|
+
}
|
|
2548
|
+
}));
|
|
2552
2549
|
const TrialHome = (props) => {
|
|
2553
|
-
|
|
2550
|
+
const { classes } = useStyles$3();
|
|
2551
|
+
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(
|
|
2552
|
+
core.Button,
|
|
2553
|
+
{
|
|
2554
|
+
className: classes.action,
|
|
2555
|
+
variant: "white",
|
|
2556
|
+
component: "a",
|
|
2557
|
+
size: "xs",
|
|
2558
|
+
href: props.upgradeHref,
|
|
2559
|
+
target: "_blank"
|
|
2560
|
+
},
|
|
2561
|
+
"UPGRADE NOW"
|
|
2562
|
+
), /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: "sm" }, /* @__PURE__ */ React__namespace.createElement(core.Stack, { spacing: 0 }, /* @__PURE__ */ React__namespace.createElement(
|
|
2554
2563
|
UserInfo,
|
|
2555
2564
|
{
|
|
2556
2565
|
variant: "compact",
|
|
@@ -2561,14 +2570,10 @@ const TrialHome = (props) => {
|
|
|
2561
2570
|
TenantBanner,
|
|
2562
2571
|
{
|
|
2563
2572
|
title: "Trial Account",
|
|
2564
|
-
description:
|
|
2565
|
-
image: "https://cdn.localcivics.io/hub/landing.jpg"
|
|
2566
|
-
action: {
|
|
2567
|
-
label: "UPGRADE NOW",
|
|
2568
|
-
link: props.upgradeHref
|
|
2569
|
-
}
|
|
2573
|
+
description: `Welcome to your Local Civics Trial Account${props.firstName ? ", " + props.firstName : ""}!`,
|
|
2574
|
+
image: "https://cdn.localcivics.io/hub/landing.jpg"
|
|
2570
2575
|
}
|
|
2571
|
-
)), /* @__PURE__ */ React__namespace.createElement(BadgeGrid, { badges: props.badges })));
|
|
2576
|
+
)), /* @__PURE__ */ React__namespace.createElement(core.Title, { mb: 20, mt: 20, className: classes.title }, "Based on the tags you selected,", /* @__PURE__ */ React__namespace.createElement("br", null), " check out these lessons to get started with your students!"), /* @__PURE__ */ React__namespace.createElement(BadgeGrid, { onAssign: props.onAssign, badges: props.badges })));
|
|
2572
2577
|
};
|
|
2573
2578
|
|
|
2574
2579
|
var __defProp$2 = Object.defineProperty;
|