@burdenoff/microfe-technospam 2026.1031.4 → 2026.1031.6

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.
Files changed (35) hide show
  1. package/dist/technospam/api/technospamApi.d.ts +56 -0
  2. package/dist/technospam/api/technospamApi.d.ts.map +1 -1
  3. package/dist/technospam/api/technospamApi.js +298 -231
  4. package/dist/technospam/api/technospamApi.js.map +1 -1
  5. package/dist/technospam/components/StatusBadge.d.ts.map +1 -1
  6. package/dist/technospam/components/StatusBadge.js +2 -0
  7. package/dist/technospam/components/StatusBadge.js.map +1 -1
  8. package/dist/technospam/components/admin/EnterpriseIntegrationsTab.d.ts +6 -0
  9. package/dist/technospam/components/admin/EnterpriseIntegrationsTab.d.ts.map +1 -0
  10. package/dist/technospam/components/admin/EnterpriseIntegrationsTab.js +256 -0
  11. package/dist/technospam/components/admin/EnterpriseIntegrationsTab.js.map +1 -0
  12. package/dist/technospam/lib/a11y.d.ts +11 -0
  13. package/dist/technospam/lib/a11y.d.ts.map +1 -0
  14. package/dist/technospam/lib/a11y.js +6 -0
  15. package/dist/technospam/lib/a11y.js.map +1 -0
  16. package/dist/technospam/lib/enterprise.d.ts +21 -0
  17. package/dist/technospam/lib/enterprise.d.ts.map +1 -0
  18. package/dist/technospam/lib/enterprise.js +36 -0
  19. package/dist/technospam/lib/enterprise.js.map +1 -0
  20. package/dist/technospam/pages/AdminAdminDashboardPagePage.d.ts.map +1 -1
  21. package/dist/technospam/pages/AdminAdminDashboardPagePage.js +206 -199
  22. package/dist/technospam/pages/AdminAdminDashboardPagePage.js.map +1 -1
  23. package/dist/technospam/pages/ApplicationsProblemsPagePage.d.ts.map +1 -1
  24. package/dist/technospam/pages/ApplicationsProblemsPagePage.js +47 -45
  25. package/dist/technospam/pages/ApplicationsProblemsPagePage.js.map +1 -1
  26. package/dist/technospam/pages/CoursesCoursesPagePage.d.ts.map +1 -1
  27. package/dist/technospam/pages/CoursesCoursesPagePage.js +74 -72
  28. package/dist/technospam/pages/CoursesCoursesPagePage.js.map +1 -1
  29. package/dist/technospam/pages/HackathonsHackathonsPagePage.d.ts.map +1 -1
  30. package/dist/technospam/pages/HackathonsHackathonsPagePage.js +83 -81
  31. package/dist/technospam/pages/HackathonsHackathonsPagePage.js.map +1 -1
  32. package/dist/technospam/pages/MentorshipSessionsPagePage.d.ts.map +1 -1
  33. package/dist/technospam/pages/MentorshipSessionsPagePage.js +99 -97
  34. package/dist/technospam/pages/MentorshipSessionsPagePage.js.map +1 -1
  35. package/package.json +1 -1
@@ -8,49 +8,51 @@ import { EmptyView as f, ErrorView as p, LoadingRows as m } from "../components/
8
8
  import { TagInput as h } from "../components/TagInput.js";
9
9
  import { CodePanel as g, TestResultsPanel as _ } from "../components/SubmissionViews.js";
10
10
  import { notify as v } from "../lib/toast.js";
11
- import { useApproveMentor as y, useArchiveCourse as b, useCompleteHackathon as x, useCoursesQuery as S, useCreateCourse as C, useCreateHackathon as w, useCreateLesson as T, useCreateProblem as ee, useGradeSubmission as E, useHackathonsQuery as D, useLessonQuizKeyQuery as O, useLessonsQuery as k, useMentorsQuery as A, useOpenRegistration as te, useProblemsQuery as j, usePublishCourse as M, usePublishProblem as N, useRegradeSubmission as P, useScoreTeam as F, useStartHackathon as I, useStartJudging as L, useSubmissionsQuery as R, useTeamsQuery as z, useUpdateLesson as B } from "../api/technospamApi.js";
11
+ import { useApproveMentor as y, useArchiveCourse as b, useCompleteHackathon as x, useCoursesQuery as S, useCreateCourse as C, useCreateHackathon as w, useCreateLesson as T, useCreateProblem as ee, useGradeSubmission as E, useHackathonsQuery as D, useLessonQuizKeyQuery as O, useLessonsQuery as k, useMentorsQuery as A, useOpenRegistration as te, useProblemsQuery as ne, usePublishCourse as j, usePublishProblem as M, useRegradeSubmission as N, useScoreTeam as P, useStartHackathon as re, useStartJudging as F, useSubmissionsQuery as I, useTeamsQuery as L, useUpdateLesson as R } from "../api/technospamApi.js";
12
12
  import "../components/index.js";
13
- import { draftFromLesson as V, draftToInput as H } from "../components/lesson/lessonAuthoring.js";
14
- import { LessonKindFields as ne } from "../components/lesson/LessonKindFields.js";
15
- import { useMemo as re, useState as U } from "react";
16
- import { Archive as ie, Award as ae, BookOpen as oe, Code2 as W, ExternalLink as se, Gavel as ce, ListChecks as le, Pencil as ue, Play as de, Plus as fe, RefreshCw as pe, Rocket as me, ShieldAlert as he, Trophy as ge, UserCheck as _e, Users as G, X as ve } from "lucide-react";
13
+ import { TAB_PANEL_FOCUS_CLASS as ie } from "../lib/a11y.js";
14
+ import { draftFromLesson as z, draftToInput as ae } from "../components/lesson/lessonAuthoring.js";
15
+ import { LessonKindFields as oe } from "../components/lesson/LessonKindFields.js";
16
+ import { EnterpriseIntegrationsTab as se } from "../components/admin/EnterpriseIntegrationsTab.js";
17
+ import { useMemo as ce, useState as B } from "react";
18
+ import { Archive as V, Award as le, BookOpen as H, Code2 as U, ExternalLink as ue, Gavel as de, ListChecks as W, Pencil as fe, Play as pe, PlugZap as me, Plus as he, RefreshCw as ge, Rocket as _e, ShieldAlert as ve, Trophy as ye, UserCheck as be, Users as G, X as xe } from "lucide-react";
17
19
  import { Fragment as K, jsx as q, jsxs as J } from "react/jsx-runtime";
18
- import { Badge as ye, Button as Y, GlassCard as be, Input as X, Select as xe, SelectContent as Se, SelectItem as Ce, SelectTrigger as we, SelectValue as Te, Tabs as Ee, TabsContent as De, TabsList as Oe, TabsTrigger as ke, Textarea as Z } from "@burdenoff/fe-libs/ui";
19
- import { nativeConfirm as Ae } from "@burdenoff/fe-libs/shared/native";
20
+ import { Badge as Se, Button as Y, GlassCard as Ce, Input as X, Select as we, SelectContent as Te, SelectItem as Ee, SelectTrigger as De, SelectValue as Oe, Tabs as ke, TabsContent as Ae, TabsList as je, TabsTrigger as Me, Textarea as Z } from "@burdenoff/fe-libs/ui";
21
+ import { nativeConfirm as Ne } from "@burdenoff/fe-libs/shared/native";
20
22
  //#region src/technospam/pages/AdminAdminDashboardPagePage.tsx
21
- var je = [
23
+ var Pe = [
22
24
  "ARTICLE",
23
25
  "VIDEO",
24
26
  "INTERACTIVE",
25
27
  "QUIZ",
26
28
  "PROJECT"
27
- ], Me = [
29
+ ], Fe = [
28
30
  "ACCEPTED",
29
31
  "WRONG_ANSWER",
30
32
  "TIME_LIMIT_EXCEEDED",
31
33
  "RUNTIME_ERROR",
32
34
  "COMPILE_ERROR"
33
- ], Ne = [
35
+ ], Ie = [
34
36
  "BEGINNER",
35
37
  "INTERMEDIATE",
36
38
  "ADVANCED",
37
39
  "EXPERT"
38
- ], Pe = [
40
+ ], Le = [
39
41
  "EASY",
40
42
  "MEDIUM",
41
43
  "HARD"
42
44
  ];
43
- function Fe(e) {
45
+ function Re(e) {
44
46
  return e.toLowerCase().trim().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
45
47
  }
46
- function Ie(e) {
48
+ function ze(e) {
47
49
  return e.split(",").map((e) => e.trim()).filter(Boolean);
48
50
  }
49
51
  function Q(e) {
50
52
  let t = Number.parseInt(e, 10);
51
53
  return Number.isFinite(t) ? t : void 0;
52
54
  }
53
- function Le(e) {
55
+ function Be(e) {
54
56
  if (!e) return null;
55
57
  let t = new Date(e);
56
58
  return Number.isNaN(t.getTime()) ? null : t.toISOString();
@@ -67,7 +69,7 @@ function $({ label: e, required: t, className: n, children: r }) {
67
69
  }), r]
68
70
  });
69
71
  }
70
- function Re({ seed: e, icon: n }) {
72
+ function Ve({ seed: e, icon: n }) {
71
73
  return /* @__PURE__ */ q("span", {
72
74
  className: t("flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-gradient-to-br text-white shadow-sm", r(e)),
73
75
  children: /* @__PURE__ */ q(n, {
@@ -76,8 +78,8 @@ function Re({ seed: e, icon: n }) {
76
78
  })
77
79
  });
78
80
  }
79
- function ze({ title: e, description: t, icon: n, children: r, footer: i }) {
80
- return /* @__PURE__ */ J(be, {
81
+ function He({ title: e, description: t, icon: n, children: r, footer: i }) {
82
+ return /* @__PURE__ */ J(Ce, {
81
83
  className: "space-y-4 p-4 sm:p-5",
82
84
  children: [
83
85
  /* @__PURE__ */ J("div", {
@@ -107,7 +109,7 @@ function ze({ title: e, description: t, icon: n, children: r, footer: i }) {
107
109
  ]
108
110
  });
109
111
  }
110
- function Be({ summary: e, actionLabel: t, open: n, onToggle: r }) {
112
+ function Ue({ summary: e, actionLabel: t, open: n, onToggle: r }) {
111
113
  return /* @__PURE__ */ J("div", {
112
114
  className: "flex items-center justify-between gap-3",
113
115
  children: [/* @__PURE__ */ q("p", {
@@ -117,12 +119,12 @@ function Be({ summary: e, actionLabel: t, open: n, onToggle: r }) {
117
119
  size: "sm",
118
120
  variant: n ? "outline" : "default",
119
121
  onClick: r,
120
- children: [q(n ? ve : fe, { size: 15 }), n ? "Close" : t]
122
+ children: [q(n ? xe : he, { size: 15 }), n ? "Close" : t]
121
123
  }) : null]
122
124
  });
123
125
  }
124
- function Ve({ leading: e, children: t, actions: n }) {
125
- return /* @__PURE__ */ J(be, {
126
+ function We({ leading: e, children: t, actions: n }) {
127
+ return /* @__PURE__ */ J(Ce, {
126
128
  className: "flex flex-col gap-3 p-4 transition-all duration-200 hover:-translate-y-0.5 hover:shadow-md sm:flex-row sm:items-center sm:justify-between",
127
129
  children: [/* @__PURE__ */ J("div", {
128
130
  className: "flex min-w-0 items-center gap-3",
@@ -136,8 +138,8 @@ function Ve({ leading: e, children: t, actions: n }) {
136
138
  }) : null]
137
139
  });
138
140
  }
139
- function He({ lesson: e, onSaved: t, onCancel: n }) {
140
- let [r, { loading: i }] = B(), [a, o] = U(e.title), [s, c] = U(e.kind), [l, d] = U(e.content ?? ""), [f, p] = U(String(e.estimatedMinutes ?? "")), [m, h] = U(() => V(e)), { data: g } = O(e.id, s !== "QUIZ"), [_, y] = U(null), b = re(() => V(null, g?.tecLessonQuizKey).quiz, [g]), x = {
141
+ function Ge({ lesson: e, onSaved: t, onCancel: n }) {
142
+ let [r, { loading: i }] = R(), [a, o] = B(e.title), [s, c] = B(e.kind), [l, d] = B(e.content ?? ""), [f, p] = B(String(e.estimatedMinutes ?? "")), [m, h] = B(() => z(e)), { data: g } = O(e.id, s !== "QUIZ"), [_, y] = B(null), b = ce(() => z(null, g?.tecLessonQuizKey).quiz, [g]), x = {
141
143
  ...m,
142
144
  quiz: _ ?? b
143
145
  };
@@ -151,13 +153,13 @@ function He({ lesson: e, onSaved: t, onCancel: n }) {
151
153
  value: a,
152
154
  onChange: (e) => o(e.target.value),
153
155
  placeholder: "Lesson title"
154
- }), /* @__PURE__ */ J(xe, {
156
+ }), /* @__PURE__ */ J(we, {
155
157
  value: s,
156
158
  onValueChange: (e) => c(e),
157
- children: [/* @__PURE__ */ q(we, {
159
+ children: [/* @__PURE__ */ q(De, {
158
160
  "aria-label": "Lesson type",
159
- children: /* @__PURE__ */ q(Te, {})
160
- }), /* @__PURE__ */ q(Se, { children: je.map((e) => /* @__PURE__ */ q(Ce, {
161
+ children: /* @__PURE__ */ q(Oe, {})
162
+ }), /* @__PURE__ */ q(Te, { children: Pe.map((e) => /* @__PURE__ */ q(Ee, {
161
163
  value: e,
162
164
  children: u(e)
163
165
  }, e)) })]
@@ -168,7 +170,7 @@ function He({ lesson: e, onSaved: t, onCancel: n }) {
168
170
  value: l,
169
171
  onChange: (e) => d(e.target.value)
170
172
  }),
171
- /* @__PURE__ */ q(ne, {
173
+ /* @__PURE__ */ q(oe, {
172
174
  kind: s,
173
175
  draft: x,
174
176
  onChange: (e) => {
@@ -196,7 +198,7 @@ function He({ lesson: e, onSaved: t, onCancel: n }) {
196
198
  onClick: async () => {
197
199
  let i = a.trim();
198
200
  if (!i) return v.error("Lesson title is required");
199
- let o = H(s, x);
201
+ let o = ae(s, x);
200
202
  if (!o.ok) return v.error(o.error);
201
203
  (await r({ variables: {
202
204
  id: e.id,
@@ -217,8 +219,8 @@ function He({ lesson: e, onSaved: t, onCancel: n }) {
217
219
  ]
218
220
  });
219
221
  }
220
- function Ue({ courseId: e }) {
221
- let { data: t, loading: n, refetch: r } = k(e), [i, { loading: a }] = T(), [o] = B(), [c, l] = U(null), [d, f] = U(null), [p, h] = U(""), [g, _] = U("ARTICLE"), [y, b] = U(""), [x, S] = U(""), [C, w] = U(!1), [ee, E] = U(() => V()), D = [...t?.tecListLessons?.items ?? []].sort((e, t) => e.position - t.position), O = async (e) => {
222
+ function Ke({ courseId: e }) {
223
+ let { data: t, loading: n, refetch: r } = k(e), [i, { loading: a }] = T(), [o] = R(), [c, l] = B(null), [d, f] = B(null), [p, h] = B(""), [g, _] = B("ARTICLE"), [y, b] = B(""), [x, S] = B(""), [C, w] = B(!1), [ee, E] = B(() => z()), D = [...t?.tecListLessons?.items ?? []].sort((e, t) => e.position - t.position), O = async (e) => {
222
224
  f(e.id);
223
225
  try {
224
226
  let t = await o({ variables: {
@@ -237,7 +239,7 @@ function Ue({ courseId: e }) {
237
239
  className: "mb-3 flex items-center gap-2",
238
240
  children: [/* @__PURE__ */ q("span", {
239
241
  className: "flex h-7 w-7 items-center justify-center rounded-lg bg-accent-primary/15 text-accent-primary ring-1 ring-accent-primary/20",
240
- children: /* @__PURE__ */ q(le, { size: 15 })
242
+ children: /* @__PURE__ */ q(W, { size: 15 })
241
243
  }), /* @__PURE__ */ J("span", {
242
244
  className: "text-xs font-semibold uppercase tracking-wide text-text-secondary",
243
245
  children: [
@@ -266,7 +268,7 @@ function Ue({ courseId: e }) {
266
268
  className: "min-w-0 flex-1 truncate",
267
269
  children: e.title
268
270
  }),
269
- /* @__PURE__ */ q(ye, {
271
+ /* @__PURE__ */ q(Se, {
270
272
  variant: "secondary",
271
273
  className: "text-[11px]",
272
274
  children: u(e.kind)
@@ -289,13 +291,13 @@ function Ue({ courseId: e }) {
289
291
  variant: "ghost",
290
292
  onClick: () => l(c === e.id ? null : e.id),
291
293
  children: [
292
- /* @__PURE__ */ q(ue, { size: 13 }),
294
+ /* @__PURE__ */ q(fe, { size: 13 }),
293
295
  " ",
294
296
  c === e.id ? "Close" : "Edit"
295
297
  ]
296
298
  })
297
299
  ]
298
- }), c === e.id ? /* @__PURE__ */ q(He, {
300
+ }), c === e.id ? /* @__PURE__ */ q(Ge, {
299
301
  lesson: e,
300
302
  onSaved: async () => {
301
303
  await r();
@@ -310,13 +312,13 @@ function Ue({ courseId: e }) {
310
312
  placeholder: "Lesson title",
311
313
  value: p,
312
314
  onChange: (e) => h(e.target.value)
313
- }), /* @__PURE__ */ J(xe, {
315
+ }), /* @__PURE__ */ J(we, {
314
316
  value: g,
315
317
  onValueChange: (e) => _(e),
316
- children: [/* @__PURE__ */ q(we, {
318
+ children: [/* @__PURE__ */ q(De, {
317
319
  "aria-label": "Lesson type",
318
- children: /* @__PURE__ */ q(Te, {})
319
- }), /* @__PURE__ */ q(Se, { children: je.map((e) => /* @__PURE__ */ q(Ce, {
320
+ children: /* @__PURE__ */ q(Oe, {})
321
+ }), /* @__PURE__ */ q(Te, { children: Pe.map((e) => /* @__PURE__ */ q(Ee, {
320
322
  value: e,
321
323
  children: u(e)
322
324
  }, e)) })]
@@ -328,7 +330,7 @@ function Ue({ courseId: e }) {
328
330
  value: y,
329
331
  onChange: (e) => b(e.target.value)
330
332
  }),
331
- /* @__PURE__ */ q(ne, {
333
+ /* @__PURE__ */ q(oe, {
332
334
  kind: g,
333
335
  draft: ee,
334
336
  onChange: E
@@ -356,7 +358,7 @@ function Ue({ courseId: e }) {
356
358
  onClick: async () => {
357
359
  let t = p.trim();
358
360
  if (!t) return v.error("Lesson title is required");
359
- let n = H(g, ee);
361
+ let n = ae(g, ee);
360
362
  if (!n.ok) return v.error(n.error);
361
363
  (await i({ variables: { input: {
362
364
  courseId: e,
@@ -367,19 +369,19 @@ function Ue({ courseId: e }) {
367
369
  estimatedMinutes: Q(x),
368
370
  isPreview: C,
369
371
  ...n.input
370
- } } })).data?.tecCreateLesson && (v.success("Lesson added", t), h(""), b(""), S(""), w(!1), E(V()), await r());
372
+ } } })).data?.tecCreateLesson && (v.success("Lesson added", t), h(""), b(""), S(""), w(!1), E(z()), await r());
371
373
  },
372
374
  disabled: a,
373
375
  className: "ml-auto",
374
- children: [/* @__PURE__ */ q(fe, { size: 14 }), " Add lesson"]
376
+ children: [/* @__PURE__ */ q(he, { size: 14 }), " Add lesson"]
375
377
  })
376
378
  ]
377
379
  })
378
380
  ]
379
381
  });
380
382
  }
381
- function We({ submission: e, busy: t, onGrade: n, onRegrade: r }) {
382
- let [i, a] = U(!1), s = e.verdict !== "PENDING";
383
+ function qe({ submission: e, busy: t, onGrade: n, onRegrade: r }) {
384
+ let [i, a] = B(!1), s = e.verdict !== "PENDING";
383
385
  return /* @__PURE__ */ J("div", {
384
386
  className: "space-y-3 rounded-lg bg-bg-surface px-3 py-3 text-sm",
385
387
  children: [
@@ -390,7 +392,7 @@ function We({ submission: e, busy: t, onGrade: n, onRegrade: r }) {
390
392
  /* @__PURE__ */ J("span", {
391
393
  className: "inline-flex items-center gap-1 text-xs text-text-muted",
392
394
  children: [
393
- /* @__PURE__ */ q(W, { size: 12 }),
395
+ /* @__PURE__ */ q(U, { size: 12 }),
394
396
  " ",
395
397
  u(e.language)
396
398
  ]
@@ -429,7 +431,7 @@ function We({ submission: e, busy: t, onGrade: n, onRegrade: r }) {
429
431
  variant: "outline",
430
432
  onClick: () => a((e) => !e),
431
433
  children: [
432
- /* @__PURE__ */ q(W, { size: 13 }),
434
+ /* @__PURE__ */ q(U, { size: 13 }),
433
435
  " ",
434
436
  i ? "Hide code" : "View code"
435
437
  ]
@@ -439,11 +441,11 @@ function We({ submission: e, busy: t, onGrade: n, onRegrade: r }) {
439
441
  variant: "outline",
440
442
  onClick: r,
441
443
  disabled: t,
442
- children: [/* @__PURE__ */ q(pe, { size: 13 }), " Re-run grader"]
444
+ children: [/* @__PURE__ */ q(ge, { size: 13 }), " Re-run grader"]
443
445
  }) : null,
444
446
  /* @__PURE__ */ q("div", {
445
447
  className: "ml-auto flex flex-wrap gap-1",
446
- children: Me.map((r) => /* @__PURE__ */ q(Y, {
448
+ children: Fe.map((r) => /* @__PURE__ */ q(Y, {
447
449
  size: "sm",
448
450
  variant: r === "ACCEPTED" ? "default" : "outline",
449
451
  onClick: () => n(r),
@@ -465,8 +467,8 @@ function We({ submission: e, busy: t, onGrade: n, onRegrade: r }) {
465
467
  ]
466
468
  });
467
469
  }
468
- function Ge({ problemId: e }) {
469
- let { data: t, loading: n, refetch: r } = R({ problemId: e }), [i] = E(), [a] = P(), [o, s] = U(null), [c, l] = U(!1), d = t?.tecListSubmissions?.items ?? [], f = c ? d.filter((e) => e.verdict === "PENDING") : d, p = d.filter((e) => e.verdict === "PENDING").length, h = async (e, t) => {
470
+ function Je({ problemId: e }) {
471
+ let { data: t, loading: n, refetch: r } = I({ problemId: e }), [i] = E(), [a] = N(), [o, s] = B(null), [c, l] = B(!1), d = t?.tecListSubmissions?.items ?? [], f = c ? d.filter((e) => e.verdict === "PENDING") : d, p = d.filter((e) => e.verdict === "PENDING").length, h = async (e, t) => {
470
472
  s(e);
471
473
  try {
472
474
  (await i({ variables: {
@@ -492,7 +494,7 @@ function Ge({ problemId: e }) {
492
494
  children: [
493
495
  /* @__PURE__ */ q("span", {
494
496
  className: "flex h-7 w-7 items-center justify-center rounded-lg bg-accent-purple/15 text-accent-purple ring-1 ring-accent-purple/20",
495
- children: /* @__PURE__ */ q(ce, { size: 15 })
497
+ children: /* @__PURE__ */ q(de, { size: 15 })
496
498
  }),
497
499
  /* @__PURE__ */ J("span", {
498
500
  className: "text-xs font-semibold uppercase tracking-wide text-text-secondary",
@@ -519,7 +521,7 @@ function Ge({ problemId: e }) {
519
521
  children: c ? "Nothing is waiting on a verdict." : "No submissions yet."
520
522
  }) : /* @__PURE__ */ q("div", {
521
523
  className: "space-y-2",
522
- children: f.map((e) => /* @__PURE__ */ q(We, {
524
+ children: f.map((e) => /* @__PURE__ */ q(qe, {
523
525
  submission: e,
524
526
  busy: o === e.id,
525
527
  onGrade: (t) => void h(e.id, t),
@@ -528,8 +530,8 @@ function Ge({ problemId: e }) {
528
530
  })]
529
531
  });
530
532
  }
531
- function Ke({ hackathon: e }) {
532
- let { data: t, loading: n, refetch: r } = z(e.id), [i] = F(), [a, o] = U(null), [s, c] = U({}), l = t?.tecListTeams?.items ?? [], u = async (e, t) => {
533
+ function Ye({ hackathon: e }) {
534
+ let { data: t, loading: n, refetch: r } = L(e.id), [i] = P(), [a, o] = B(null), [s, c] = B({}), l = t?.tecListTeams?.items ?? [], u = async (e, t) => {
533
535
  let n = Math.max(0, Number(s[e] ?? "0") || 0);
534
536
  o(e);
535
537
  try {
@@ -610,7 +612,7 @@ function Ke({ hackathon: e }) {
610
612
  variant: "outline",
611
613
  onClick: () => u(t.id, !0),
612
614
  disabled: a === t.id,
613
- children: [/* @__PURE__ */ q(ge, { size: 14 }), " Winner"]
615
+ children: [/* @__PURE__ */ q(ye, { size: 14 }), " Winner"]
614
616
  })
615
617
  ]
616
618
  }) : /* @__PURE__ */ J("span", {
@@ -636,13 +638,13 @@ function Ke({ hackathon: e }) {
636
638
  target: "_blank",
637
639
  rel: "noreferrer noopener",
638
640
  className: "inline-flex items-center gap-1 text-xs font-medium text-accent-primary hover:underline",
639
- children: [/* @__PURE__ */ q(se, { size: 12 }), " Project"]
641
+ children: [/* @__PURE__ */ q(ue, { size: 12 }), " Project"]
640
642
  }) : null, t.repoUrl ? /* @__PURE__ */ J("a", {
641
643
  href: t.repoUrl,
642
644
  target: "_blank",
643
645
  rel: "noreferrer noopener",
644
646
  className: "inline-flex items-center gap-1 text-xs font-medium text-accent-primary hover:underline",
645
- children: [/* @__PURE__ */ q(W, { size: 12 }), " Repository"]
647
+ children: [/* @__PURE__ */ q(U, { size: 12 }), " Repository"]
646
648
  }) : null]
647
649
  })
648
650
  ]
@@ -654,32 +656,32 @@ function Ke({ hackathon: e }) {
654
656
  })]
655
657
  });
656
658
  }
657
- function qe() {
658
- let { data: e, loading: t, error: n, refetch: r } = S({}), [o, { loading: c }] = C(), [l] = M(), [g] = b(), [_, y] = U(!1), [x, w] = U(null), [T, ee] = U(null), [E, D] = U(""), [O, k] = U(""), [A, te] = U(""), [j, N] = U(""), [P, F] = U("BEGINNER"), [I, L] = U(""), [R, z] = U([]), B = e?.tecListCourses?.items ?? [], V = () => {
659
- D(""), k(""), te(""), N(""), F("BEGINNER"), L(""), z([]), y(!1);
660
- }, H = async () => {
659
+ function Xe() {
660
+ let { data: e, loading: t, error: n, refetch: r } = S({}), [o, { loading: c }] = C(), [l] = j(), [g] = b(), [_, y] = B(!1), [x, w] = B(null), [T, ee] = B(null), [E, D] = B(""), [O, k] = B(""), [A, te] = B(""), [ne, M] = B(""), [N, P] = B("BEGINNER"), [re, F] = B(""), [I, L] = B([]), R = e?.tecListCourses?.items ?? [], ie = () => {
661
+ D(""), k(""), te(""), M(""), P("BEGINNER"), F(""), L([]), y(!1);
662
+ }, z = async () => {
661
663
  let e = E.trim();
662
664
  if (!e) return v.error("Title is required");
663
- let t = Fe(O || e);
665
+ let t = Re(O || e);
664
666
  if (!t) return v.error("A valid slug is required");
665
667
  (await o({ variables: { input: {
666
668
  title: e,
667
669
  slug: t,
668
670
  summary: A.trim() || void 0,
669
- topic: j.trim() || void 0,
670
- level: P,
671
- estimatedMinutes: Q(I),
672
- tags: R
673
- } } })).data?.tecCreateCourse && (v.success("Course created", `"${e}" saved as a draft.`), V(), await r());
674
- }, ne = async (e) => {
671
+ topic: ne.trim() || void 0,
672
+ level: N,
673
+ estimatedMinutes: Q(re),
674
+ tags: I
675
+ } } })).data?.tecCreateCourse && (v.success("Course created", `"${e}" saved as a draft.`), ie(), await r());
676
+ }, ae = async (e) => {
675
677
  w(e);
676
678
  try {
677
679
  (await l({ variables: { id: e } })).data?.tecPublishCourse && (v.success("Course published"), await r());
678
680
  } finally {
679
681
  w(null);
680
682
  }
681
- }, re = async (e, t) => {
682
- if (await Ae({
683
+ }, oe = async (e, t) => {
684
+ if (await Ne({
683
685
  title: "Archive course",
684
686
  message: `Archive "${t}"? Learners will no longer be able to enroll.`,
685
687
  okButtonTitle: "Archive",
@@ -696,24 +698,24 @@ function qe() {
696
698
  return /* @__PURE__ */ J("div", {
697
699
  className: "space-y-4",
698
700
  children: [
699
- /* @__PURE__ */ q(Be, {
700
- summary: `${B.length} course${B.length === 1 ? "" : "s"}`,
701
+ /* @__PURE__ */ q(Ue, {
702
+ summary: `${R.length} course${R.length === 1 ? "" : "s"}`,
701
703
  actionLabel: "New course",
702
704
  open: _,
703
705
  onToggle: () => y((e) => !e)
704
706
  }),
705
- _ ? /* @__PURE__ */ J(ze, {
707
+ _ ? /* @__PURE__ */ J(He, {
706
708
  title: "New course",
707
709
  description: "Draft a course, then add lessons and publish when it's ready.",
708
- icon: oe,
710
+ icon: H,
709
711
  footer: /* @__PURE__ */ J(K, { children: [/* @__PURE__ */ q(Y, {
710
712
  variant: "outline",
711
713
  size: "sm",
712
- onClick: V,
714
+ onClick: ie,
713
715
  children: "Cancel"
714
716
  }), /* @__PURE__ */ q(Y, {
715
717
  size: "sm",
716
- onClick: H,
718
+ onClick: z,
717
719
  disabled: c,
718
720
  children: c ? "Creating…" : "Create course"
719
721
  })] }),
@@ -739,17 +741,17 @@ function qe() {
739
741
  /* @__PURE__ */ q($, {
740
742
  label: "Topic",
741
743
  children: /* @__PURE__ */ q(X, {
742
- value: j,
743
- onChange: (e) => N(e.target.value),
744
+ value: ne,
745
+ onChange: (e) => M(e.target.value),
744
746
  placeholder: "e.g. Web, AI, Data, Cloud"
745
747
  })
746
748
  }),
747
749
  /* @__PURE__ */ q($, {
748
750
  label: "Level",
749
- children: /* @__PURE__ */ J(xe, {
750
- value: P,
751
- onValueChange: (e) => F(e),
752
- children: [/* @__PURE__ */ q(we, { children: /* @__PURE__ */ q(Te, {}) }), /* @__PURE__ */ q(Se, { children: Ne.map((e) => /* @__PURE__ */ q(Ce, {
751
+ children: /* @__PURE__ */ J(we, {
752
+ value: N,
753
+ onValueChange: (e) => P(e),
754
+ children: [/* @__PURE__ */ q(De, { children: /* @__PURE__ */ q(Oe, {}) }), /* @__PURE__ */ q(Te, { children: Ie.map((e) => /* @__PURE__ */ q(Ee, {
753
755
  value: e,
754
756
  children: u(e)
755
757
  }, e)) })]
@@ -760,16 +762,16 @@ function qe() {
760
762
  children: /* @__PURE__ */ q(X, {
761
763
  type: "number",
762
764
  min: 0,
763
- value: I,
764
- onChange: (e) => L(e.target.value),
765
+ value: re,
766
+ onChange: (e) => F(e.target.value),
765
767
  placeholder: "120"
766
768
  })
767
769
  }),
768
770
  /* @__PURE__ */ q($, {
769
771
  label: "Tags",
770
772
  children: /* @__PURE__ */ q(h, {
771
- value: R,
772
- onChange: z,
773
+ value: I,
774
+ onChange: L,
773
775
  placeholder: "typescript, basics"
774
776
  })
775
777
  }),
@@ -784,17 +786,17 @@ function qe() {
784
786
  })
785
787
  ]
786
788
  }) : null,
787
- t && !B.length ? /* @__PURE__ */ q(m, { count: 4 }) : n ? /* @__PURE__ */ q(p, {
789
+ t && !R.length ? /* @__PURE__ */ q(m, { count: 4 }) : n ? /* @__PURE__ */ q(p, {
788
790
  title: "Couldn't load courses",
789
791
  error: n
790
- }) : B.length === 0 ? /* @__PURE__ */ q(f, {
791
- icon: /* @__PURE__ */ q(oe, { size: 26 }),
792
+ }) : R.length === 0 ? /* @__PURE__ */ q(f, {
793
+ icon: /* @__PURE__ */ q(H, { size: 26 }),
792
794
  title: "No courses yet",
793
795
  description: "Create your first course with the button above. TechnoSpam is pre-launch."
794
796
  }) : /* @__PURE__ */ q("div", {
795
797
  className: "space-y-3",
796
- children: B.map((e) => /* @__PURE__ */ J("div", { children: [/* @__PURE__ */ J(Ve, {
797
- leading: /* @__PURE__ */ q(Re, {
798
+ children: R.map((e) => /* @__PURE__ */ J("div", { children: [/* @__PURE__ */ J(We, {
799
+ leading: /* @__PURE__ */ q(Ve, {
798
800
  seed: `${e.topic ?? ""} ${e.title}`,
799
801
  icon: i(e.topic ?? e.title)
800
802
  }),
@@ -803,20 +805,20 @@ function qe() {
803
805
  size: "sm",
804
806
  variant: "outline",
805
807
  onClick: () => ee(T === e.id ? null : e.id),
806
- children: [/* @__PURE__ */ q(le, { size: 15 }), " Lessons"]
808
+ children: [/* @__PURE__ */ q(W, { size: 15 }), " Lessons"]
807
809
  }),
808
810
  e.status === "DRAFT" ? /* @__PURE__ */ J(Y, {
809
811
  size: "sm",
810
- onClick: () => ne(e.id),
812
+ onClick: () => ae(e.id),
811
813
  disabled: x === e.id,
812
- children: [/* @__PURE__ */ q(me, { size: 15 }), " Publish"]
814
+ children: [/* @__PURE__ */ q(_e, { size: 15 }), " Publish"]
813
815
  }) : null,
814
816
  e.status === "ARCHIVED" ? null : /* @__PURE__ */ J(Y, {
815
817
  size: "sm",
816
818
  variant: "outline",
817
- onClick: () => re(e.id, e.title),
819
+ onClick: () => oe(e.id, e.title),
818
820
  disabled: x === e.id,
819
- children: [/* @__PURE__ */ q(ie, { size: 15 }), " Archive"]
821
+ children: [/* @__PURE__ */ q(V, { size: 15 }), " Archive"]
820
822
  })
821
823
  ] }),
822
824
  children: [/* @__PURE__ */ J("div", {
@@ -844,18 +846,18 @@ function qe() {
844
846
  a(e.updatedAt)
845
847
  ]
846
848
  })]
847
- }), T === e.id ? /* @__PURE__ */ q(Ue, { courseId: e.id }) : null] }, e.id))
849
+ }), T === e.id ? /* @__PURE__ */ q(Ke, { courseId: e.id }) : null] }, e.id))
848
850
  })
849
851
  ]
850
852
  });
851
853
  }
852
- function Je() {
853
- let { data: e, loading: t, error: n, refetch: r } = j({}), [a, { loading: o }] = ee(), [s] = N(), [c, l] = U(!1), [h, g] = U(null), [_, y] = U(null), [b, x] = U(""), [S, C] = U(""), [w, T] = U(""), [E, D] = U(""), [O, k] = U("EASY"), [A, te] = U(""), [M, P] = U(""), [F, I] = U(""), L = e?.tecListProblems?.items ?? [], R = () => {
854
- x(""), C(""), T(""), D(""), k("EASY"), te(""), P(""), I(""), l(!1);
855
- }, z = async () => {
854
+ function Ze() {
855
+ let { data: e, loading: t, error: n, refetch: r } = ne({}), [a, { loading: o }] = ee(), [s] = M(), [c, l] = B(!1), [h, g] = B(null), [_, y] = B(null), [b, x] = B(""), [S, C] = B(""), [w, T] = B(""), [E, D] = B(""), [O, k] = B("EASY"), [A, te] = B(""), [j, N] = B(""), [P, re] = B(""), F = e?.tecListProblems?.items ?? [], I = () => {
856
+ x(""), C(""), T(""), D(""), k("EASY"), te(""), N(""), re(""), l(!1);
857
+ }, L = async () => {
856
858
  let e = b.trim();
857
859
  if (!e) return v.error("Title is required");
858
- let t = Fe(S || e);
860
+ let t = Re(S || e);
859
861
  if (!t) return v.error("A valid slug is required");
860
862
  (await a({ variables: { input: {
861
863
  title: e,
@@ -864,10 +866,10 @@ function Je() {
864
866
  topic: E.trim() || void 0,
865
867
  difficulty: O,
866
868
  points: Q(A),
867
- languages: Ie(M),
868
- starterCode: F.trim() || void 0
869
- } } })).data?.tecCreateProblem && (v.success("Problem created", `"${e}" saved as a draft.`), R(), await r());
870
- }, B = async (e) => {
869
+ languages: ze(j),
870
+ starterCode: P.trim() || void 0
871
+ } } })).data?.tecCreateProblem && (v.success("Problem created", `"${e}" saved as a draft.`), I(), await r());
872
+ }, R = async (e) => {
871
873
  g(e);
872
874
  try {
873
875
  (await s({ variables: { id: e } })).data?.tecPublishProblem && (v.success("Problem published"), await r());
@@ -878,24 +880,24 @@ function Je() {
878
880
  return /* @__PURE__ */ J("div", {
879
881
  className: "space-y-4",
880
882
  children: [
881
- /* @__PURE__ */ q(Be, {
882
- summary: `${L.length} problem${L.length === 1 ? "" : "s"}`,
883
+ /* @__PURE__ */ q(Ue, {
884
+ summary: `${F.length} problem${F.length === 1 ? "" : "s"}`,
883
885
  actionLabel: "New problem",
884
886
  open: c,
885
887
  onToggle: () => l((e) => !e)
886
888
  }),
887
- c ? /* @__PURE__ */ J(ze, {
889
+ c ? /* @__PURE__ */ J(He, {
888
890
  title: "New problem",
889
891
  description: "Define a coding challenge learners can solve and submit.",
890
- icon: W,
892
+ icon: U,
891
893
  footer: /* @__PURE__ */ J(K, { children: [/* @__PURE__ */ q(Y, {
892
894
  variant: "outline",
893
895
  size: "sm",
894
- onClick: R,
896
+ onClick: I,
895
897
  children: "Cancel"
896
898
  }), /* @__PURE__ */ q(Y, {
897
899
  size: "sm",
898
- onClick: z,
900
+ onClick: L,
899
901
  disabled: o,
900
902
  children: o ? "Creating…" : "Create problem"
901
903
  })] }),
@@ -928,10 +930,10 @@ function Je() {
928
930
  }),
929
931
  /* @__PURE__ */ q($, {
930
932
  label: "Difficulty",
931
- children: /* @__PURE__ */ J(xe, {
933
+ children: /* @__PURE__ */ J(we, {
932
934
  value: O,
933
935
  onValueChange: (e) => k(e),
934
- children: [/* @__PURE__ */ q(we, { children: /* @__PURE__ */ q(Te, {}) }), /* @__PURE__ */ q(Se, { children: Pe.map((e) => /* @__PURE__ */ q(Ce, {
936
+ children: [/* @__PURE__ */ q(De, { children: /* @__PURE__ */ q(Oe, {}) }), /* @__PURE__ */ q(Te, { children: Le.map((e) => /* @__PURE__ */ q(Ee, {
935
937
  value: e,
936
938
  children: u(e)
937
939
  }, e)) })]
@@ -950,8 +952,8 @@ function Je() {
950
952
  /* @__PURE__ */ q($, {
951
953
  label: "Languages (comma-separated)",
952
954
  children: /* @__PURE__ */ q(X, {
953
- value: M,
954
- onChange: (e) => P(e.target.value),
955
+ value: j,
956
+ onChange: (e) => N(e.target.value),
955
957
  placeholder: "python, typescript"
956
958
  })
957
959
  }),
@@ -968,25 +970,25 @@ function Je() {
968
970
  label: "Starter code",
969
971
  className: "sm:col-span-2",
970
972
  children: /* @__PURE__ */ q(Z, {
971
- value: F,
972
- onChange: (e) => I(e.target.value),
973
+ value: P,
974
+ onChange: (e) => re(e.target.value),
973
975
  className: "font-mono",
974
976
  placeholder: "def solve(nums, target):\\n pass"
975
977
  })
976
978
  })
977
979
  ]
978
980
  }) : null,
979
- t && !L.length ? /* @__PURE__ */ q(m, { count: 4 }) : n ? /* @__PURE__ */ q(p, {
981
+ t && !F.length ? /* @__PURE__ */ q(m, { count: 4 }) : n ? /* @__PURE__ */ q(p, {
980
982
  title: "Couldn't load problems",
981
983
  error: n
982
- }) : L.length === 0 ? /* @__PURE__ */ q(f, {
983
- icon: /* @__PURE__ */ q(W, { size: 26 }),
984
+ }) : F.length === 0 ? /* @__PURE__ */ q(f, {
985
+ icon: /* @__PURE__ */ q(U, { size: 26 }),
984
986
  title: "No problems yet",
985
987
  description: "Create your first coding problem with the button above. TechnoSpam is pre-launch."
986
988
  }) : /* @__PURE__ */ q("div", {
987
989
  className: "space-y-3",
988
- children: L.map((e) => /* @__PURE__ */ J("div", { children: [/* @__PURE__ */ J(Ve, {
989
- leading: /* @__PURE__ */ q(Re, {
990
+ children: F.map((e) => /* @__PURE__ */ J("div", { children: [/* @__PURE__ */ J(We, {
991
+ leading: /* @__PURE__ */ q(Ve, {
990
992
  seed: `${e.topic ?? ""} ${e.title}`,
991
993
  icon: i(e.topic ?? e.title)
992
994
  }),
@@ -994,12 +996,12 @@ function Je() {
994
996
  size: "sm",
995
997
  variant: "outline",
996
998
  onClick: () => y(_ === e.id ? null : e.id),
997
- children: [/* @__PURE__ */ q(ce, { size: 15 }), " Grade"]
999
+ children: [/* @__PURE__ */ q(de, { size: 15 }), " Grade"]
998
1000
  }), e.status === "DRAFT" ? /* @__PURE__ */ J(Y, {
999
1001
  size: "sm",
1000
- onClick: () => B(e.id),
1002
+ onClick: () => R(e.id),
1001
1003
  disabled: h === e.id,
1002
- children: [/* @__PURE__ */ q(me, { size: 15 }), " Publish"]
1004
+ children: [/* @__PURE__ */ q(_e, { size: 15 }), " Publish"]
1003
1005
  }) : null] }),
1004
1006
  children: [/* @__PURE__ */ J("div", {
1005
1007
  className: "flex flex-wrap items-center gap-2",
@@ -1027,33 +1029,33 @@ function Je() {
1027
1029
  e.languages.length ? e.languages.join(", ") : "No languages"
1028
1030
  ]
1029
1031
  })]
1030
- }), _ === e.id ? /* @__PURE__ */ q(Ge, { problemId: e.id }) : null] }, e.id))
1032
+ }), _ === e.id ? /* @__PURE__ */ q(Je, { problemId: e.id }) : null] }, e.id))
1031
1033
  })
1032
1034
  ]
1033
1035
  });
1034
1036
  }
1035
- function Ye() {
1036
- let { data: e, loading: t, error: n, refetch: r } = D({}), [a, { loading: s }] = w(), [l] = te(), [u] = I(), [g] = L(), [_] = x(), [y, b] = U(!1), [S, C] = U(null), [T, ee] = U(null), [E, O] = U(""), [k, A] = U(""), [j, M] = U(""), [N, P] = U(""), [F, R] = U(""), [z, B] = U(""), [V, H] = U(""), [ne, re] = U(""), [ie, oe] = U([]), W = e?.tecListHackathons?.items ?? [], se = () => {
1037
- O(""), A(""), M(""), P(""), R(""), B(""), H(""), re(""), oe([]), b(!1);
1038
- }, le = async () => {
1037
+ function Qe() {
1038
+ let { data: e, loading: t, error: n, refetch: r } = D({}), [a, { loading: s }] = w(), [l] = te(), [u] = re(), [g] = F(), [_] = x(), [y, b] = B(!1), [S, C] = B(null), [T, ee] = B(null), [E, O] = B(""), [k, A] = B(""), [ne, j] = B(""), [M, N] = B(""), [P, I] = B(""), [L, R] = B(""), [ie, z] = B(""), [ae, oe] = B(""), [se, ce] = B([]), V = e?.tecListHackathons?.items ?? [], H = () => {
1039
+ O(""), A(""), j(""), N(""), I(""), R(""), z(""), oe(""), ce([]), b(!1);
1040
+ }, U = async () => {
1039
1041
  let e = E.trim();
1040
1042
  if (!e) return v.error("Title is required");
1041
- let t = Fe(k || e);
1043
+ let t = Re(k || e);
1042
1044
  if (!t) return v.error("A valid slug is required");
1043
- let n = Le(F), i = Le(z);
1045
+ let n = Be(P), i = Be(L);
1044
1046
  if (!n || !i) return v.error("Start and end date/time are required");
1045
1047
  if (new Date(i) <= new Date(n)) return v.error("End must be after the start");
1046
1048
  (await a({ variables: { input: {
1047
1049
  title: e,
1048
1050
  slug: t,
1049
- theme: j.trim() || void 0,
1050
- description: N.trim() || void 0,
1051
+ theme: ne.trim() || void 0,
1052
+ description: M.trim() || void 0,
1051
1053
  startAt: n,
1052
1054
  endAt: i,
1053
- prizePool: Q(V),
1054
- maxTeamSize: Q(ne),
1055
- tags: ie
1056
- } } })).data?.tecCreateHackathon && (v.success("Hackathon created", `"${e}" saved as a draft.`), se(), await r());
1055
+ prizePool: Q(ie),
1056
+ maxTeamSize: Q(ae),
1057
+ tags: se
1058
+ } } })).data?.tecCreateHackathon && (v.success("Hackathon created", `"${e}" saved as a draft.`), H(), await r());
1057
1059
  }, ue = async (e) => {
1058
1060
  C(e);
1059
1061
  try {
@@ -1061,7 +1063,7 @@ function Ye() {
1061
1063
  } finally {
1062
1064
  C(null);
1063
1065
  }
1064
- }, fe = async (e, t, n) => {
1066
+ }, W = async (e, t, n) => {
1065
1067
  C(e);
1066
1068
  try {
1067
1069
  (await t({ variables: { id: e } })).data && (v.success(n), await r());
@@ -1072,24 +1074,24 @@ function Ye() {
1072
1074
  return /* @__PURE__ */ J("div", {
1073
1075
  className: "space-y-4",
1074
1076
  children: [
1075
- /* @__PURE__ */ q(Be, {
1076
- summary: `${W.length} hackathon${W.length === 1 ? "" : "s"}`,
1077
+ /* @__PURE__ */ q(Ue, {
1078
+ summary: `${V.length} hackathon${V.length === 1 ? "" : "s"}`,
1077
1079
  actionLabel: "New hackathon",
1078
1080
  open: y,
1079
1081
  onToggle: () => b((e) => !e)
1080
1082
  }),
1081
- y ? /* @__PURE__ */ J(ze, {
1083
+ y ? /* @__PURE__ */ J(He, {
1082
1084
  title: "New hackathon",
1083
1085
  description: "Set up an event, open registration, then run judging to completion.",
1084
- icon: ge,
1086
+ icon: ye,
1085
1087
  footer: /* @__PURE__ */ J(K, { children: [/* @__PURE__ */ q(Y, {
1086
1088
  variant: "outline",
1087
1089
  size: "sm",
1088
- onClick: se,
1090
+ onClick: H,
1089
1091
  children: "Cancel"
1090
1092
  }), /* @__PURE__ */ q(Y, {
1091
1093
  size: "sm",
1092
- onClick: le,
1094
+ onClick: U,
1093
1095
  disabled: s,
1094
1096
  children: s ? "Creating…" : "Create hackathon"
1095
1097
  })] }),
@@ -1115,16 +1117,16 @@ function Ye() {
1115
1117
  /* @__PURE__ */ q($, {
1116
1118
  label: "Theme",
1117
1119
  children: /* @__PURE__ */ q(X, {
1118
- value: j,
1119
- onChange: (e) => M(e.target.value),
1120
+ value: ne,
1121
+ onChange: (e) => j(e.target.value),
1120
1122
  placeholder: "AI for good"
1121
1123
  })
1122
1124
  }),
1123
1125
  /* @__PURE__ */ q($, {
1124
1126
  label: "Tags",
1125
1127
  children: /* @__PURE__ */ q(h, {
1126
- value: ie,
1127
- onChange: oe,
1128
+ value: se,
1129
+ onChange: ce,
1128
1130
  placeholder: "ai, web"
1129
1131
  })
1130
1132
  }),
@@ -1133,8 +1135,8 @@ function Ye() {
1133
1135
  required: !0,
1134
1136
  children: /* @__PURE__ */ q(X, {
1135
1137
  type: "datetime-local",
1136
- value: F,
1137
- onChange: (e) => R(e.target.value)
1138
+ value: P,
1139
+ onChange: (e) => I(e.target.value)
1138
1140
  })
1139
1141
  }),
1140
1142
  /* @__PURE__ */ q($, {
@@ -1142,8 +1144,8 @@ function Ye() {
1142
1144
  required: !0,
1143
1145
  children: /* @__PURE__ */ q(X, {
1144
1146
  type: "datetime-local",
1145
- value: z,
1146
- onChange: (e) => B(e.target.value)
1147
+ value: L,
1148
+ onChange: (e) => R(e.target.value)
1147
1149
  })
1148
1150
  }),
1149
1151
  /* @__PURE__ */ q($, {
@@ -1151,8 +1153,8 @@ function Ye() {
1151
1153
  children: /* @__PURE__ */ q(X, {
1152
1154
  type: "number",
1153
1155
  min: 0,
1154
- value: V,
1155
- onChange: (e) => H(e.target.value),
1156
+ value: ie,
1157
+ onChange: (e) => z(e.target.value),
1156
1158
  placeholder: "5000"
1157
1159
  })
1158
1160
  }),
@@ -1161,8 +1163,8 @@ function Ye() {
1161
1163
  children: /* @__PURE__ */ q(X, {
1162
1164
  type: "number",
1163
1165
  min: 1,
1164
- value: ne,
1165
- onChange: (e) => re(e.target.value),
1166
+ value: ae,
1167
+ onChange: (e) => oe(e.target.value),
1166
1168
  placeholder: "4"
1167
1169
  })
1168
1170
  }),
@@ -1170,26 +1172,26 @@ function Ye() {
1170
1172
  label: "Description",
1171
1173
  className: "sm:col-span-2",
1172
1174
  children: /* @__PURE__ */ q(Z, {
1173
- value: N,
1174
- onChange: (e) => P(e.target.value),
1175
+ value: M,
1176
+ onChange: (e) => N(e.target.value),
1175
1177
  placeholder: "What the hackathon is about and how judging works."
1176
1178
  })
1177
1179
  })
1178
1180
  ]
1179
1181
  }) : null,
1180
- t && !W.length ? /* @__PURE__ */ q(m, { count: 4 }) : n ? /* @__PURE__ */ q(p, {
1182
+ t && !V.length ? /* @__PURE__ */ q(m, { count: 4 }) : n ? /* @__PURE__ */ q(p, {
1181
1183
  title: "Couldn't load hackathons",
1182
1184
  error: n
1183
- }) : W.length === 0 ? /* @__PURE__ */ q(f, {
1184
- icon: /* @__PURE__ */ q(ge, { size: 26 }),
1185
+ }) : V.length === 0 ? /* @__PURE__ */ q(f, {
1186
+ icon: /* @__PURE__ */ q(ye, { size: 26 }),
1185
1187
  title: "No hackathons yet",
1186
1188
  description: "Create your first hackathon with the button above. TechnoSpam is pre-launch."
1187
1189
  }) : /* @__PURE__ */ q("div", {
1188
1190
  className: "space-y-3",
1189
- children: W.map((e) => /* @__PURE__ */ J("div", { children: [/* @__PURE__ */ J(Ve, {
1190
- leading: /* @__PURE__ */ q(Re, {
1191
+ children: V.map((e) => /* @__PURE__ */ J("div", { children: [/* @__PURE__ */ J(We, {
1192
+ leading: /* @__PURE__ */ q(Ve, {
1191
1193
  seed: e.title,
1192
- icon: i(e.title, ge)
1194
+ icon: i(e.title, ye)
1193
1195
  }),
1194
1196
  actions: /* @__PURE__ */ J(K, { children: [
1195
1197
  /* @__PURE__ */ J(Y, {
@@ -1202,25 +1204,25 @@ function Ye() {
1202
1204
  size: "sm",
1203
1205
  onClick: () => ue(e.id),
1204
1206
  disabled: S === e.id,
1205
- children: [/* @__PURE__ */ q(me, { size: 15 }), " Open registration"]
1207
+ children: [/* @__PURE__ */ q(_e, { size: 15 }), " Open registration"]
1206
1208
  }) : null,
1207
1209
  e.status === "REGISTRATION_OPEN" ? /* @__PURE__ */ J(Y, {
1208
1210
  size: "sm",
1209
- onClick: () => fe(e.id, u, "Hackathon started"),
1211
+ onClick: () => W(e.id, u, "Hackathon started"),
1210
1212
  disabled: S === e.id,
1211
- children: [/* @__PURE__ */ q(de, { size: 15 }), " Start"]
1213
+ children: [/* @__PURE__ */ q(pe, { size: 15 }), " Start"]
1212
1214
  }) : null,
1213
1215
  e.status === "IN_PROGRESS" ? /* @__PURE__ */ J(Y, {
1214
1216
  size: "sm",
1215
- onClick: () => fe(e.id, g, "Judging started"),
1217
+ onClick: () => W(e.id, g, "Judging started"),
1216
1218
  disabled: S === e.id,
1217
- children: [/* @__PURE__ */ q(ce, { size: 15 }), " Start judging"]
1219
+ children: [/* @__PURE__ */ q(de, { size: 15 }), " Start judging"]
1218
1220
  }) : null,
1219
1221
  e.status === "JUDGING" ? /* @__PURE__ */ J(Y, {
1220
1222
  size: "sm",
1221
- onClick: () => fe(e.id, _, "Hackathon completed"),
1223
+ onClick: () => W(e.id, _, "Hackathon completed"),
1222
1224
  disabled: S === e.id,
1223
- children: [/* @__PURE__ */ q(ae, { size: 15 }), " Complete"]
1225
+ children: [/* @__PURE__ */ q(le, { size: 15 }), " Complete"]
1224
1226
  }) : null
1225
1227
  ] }),
1226
1228
  children: [/* @__PURE__ */ J("div", {
@@ -1240,13 +1242,13 @@ function Ye() {
1240
1242
  e.prizePool ? ` · ${c(e.prizePool, e.currency)} prize` : ""
1241
1243
  ]
1242
1244
  })]
1243
- }), T === e.id ? /* @__PURE__ */ q(Ke, { hackathon: e }) : null] }, e.id))
1245
+ }), T === e.id ? /* @__PURE__ */ q(Ye, { hackathon: e }) : null] }, e.id))
1244
1246
  })
1245
1247
  ]
1246
1248
  });
1247
1249
  }
1248
- function Xe() {
1249
- let { data: e, loading: t, error: n, refetch: r } = A({}), [a] = y(), [o, s] = U(null), c = e?.tecListMentors?.items ?? [], u = c.filter((e) => e.status === "PENDING").length, h = async (e) => {
1250
+ function $e() {
1251
+ let { data: e, loading: t, error: n, refetch: r } = A({}), [a] = y(), [o, s] = B(null), c = e?.tecListMentors?.items ?? [], u = c.filter((e) => e.status === "PENDING").length, h = async (e) => {
1250
1252
  s(e);
1251
1253
  try {
1252
1254
  (await a({ variables: { id: e } })).data?.tecApproveMentor && (v.success("Mentor approved", "They can now accept mentees."), await r());
@@ -1256,7 +1258,7 @@ function Xe() {
1256
1258
  };
1257
1259
  return /* @__PURE__ */ J("div", {
1258
1260
  className: "space-y-4",
1259
- children: [/* @__PURE__ */ q(Be, { summary: `${c.length} mentor${c.length === 1 ? "" : "s"}${u ? ` · ${u} pending approval` : ""}` }), t && !c.length ? /* @__PURE__ */ q(m, { count: 4 }) : n ? /* @__PURE__ */ q(p, {
1261
+ children: [/* @__PURE__ */ q(Ue, { summary: `${c.length} mentor${c.length === 1 ? "" : "s"}${u ? ` · ${u} pending approval` : ""}` }), t && !c.length ? /* @__PURE__ */ q(m, { count: 4 }) : n ? /* @__PURE__ */ q(p, {
1260
1262
  title: "Couldn't load mentors",
1261
1263
  error: n
1262
1264
  }) : c.length === 0 ? /* @__PURE__ */ q(f, {
@@ -1265,8 +1267,8 @@ function Xe() {
1265
1267
  description: "Mentor applications will appear here for review. TechnoSpam is pre-launch."
1266
1268
  }) : /* @__PURE__ */ q("div", {
1267
1269
  className: "space-y-3",
1268
- children: c.map((e) => /* @__PURE__ */ J(Ve, {
1269
- leading: /* @__PURE__ */ q(Re, {
1270
+ children: c.map((e) => /* @__PURE__ */ J(We, {
1271
+ leading: /* @__PURE__ */ q(Ve, {
1270
1272
  seed: e.headline,
1271
1273
  icon: i(e.expertise[0] ?? e.headline, G)
1272
1274
  }),
@@ -1274,7 +1276,7 @@ function Xe() {
1274
1276
  size: "sm",
1275
1277
  onClick: () => h(e.id),
1276
1278
  disabled: o === e.id,
1277
- children: [/* @__PURE__ */ q(_e, { size: 15 }), " Approve"]
1279
+ children: [/* @__PURE__ */ q(be, { size: 15 }), " Approve"]
1278
1280
  }) : void 0,
1279
1281
  children: [/* @__PURE__ */ J("div", {
1280
1282
  className: "flex flex-wrap items-center gap-2",
@@ -1284,7 +1286,7 @@ function Xe() {
1284
1286
  children: e.headline
1285
1287
  }),
1286
1288
  /* @__PURE__ */ q(d, { status: e.status }),
1287
- e.isAcceptingMentees ? /* @__PURE__ */ q(ye, {
1289
+ e.isAcceptingMentees ? /* @__PURE__ */ q(Se, {
1288
1290
  variant: "secondary",
1289
1291
  className: "text-[11px]",
1290
1292
  children: "Accepting mentees"
@@ -1307,15 +1309,15 @@ function Xe() {
1307
1309
  })]
1308
1310
  });
1309
1311
  }
1310
- function Ze() {
1311
- let [t, r] = U("courses"), { currentUser: i } = e(), a = (i?.role ?? "").toLowerCase();
1312
+ function et() {
1313
+ let [t, r] = B("courses"), { currentUser: i } = e(), a = (i?.role ?? "").toLowerCase();
1312
1314
  return /* @__PURE__ */ J(n, {
1313
1315
  hero: !0,
1314
1316
  title: "Authoring Console",
1315
- description: "Create and manage TechnoSpam content — courses, problems, hackathons, and mentor applications.",
1316
- children: [a.includes("admin") || a.includes("owner") || a.includes("instructor") ? null : /* @__PURE__ */ J(be, {
1317
+ description: "Create and manage TechnoSpam content — courses, problems, hackathons, mentor applications — and enterprise integrations.",
1318
+ children: [a.includes("admin") || a.includes("owner") || a.includes("instructor") ? null : /* @__PURE__ */ J(Ce, {
1317
1319
  className: "mb-5 flex items-start gap-3 border-status-warning-border p-4",
1318
- children: [/* @__PURE__ */ q(he, {
1320
+ children: [/* @__PURE__ */ q(ve, {
1319
1321
  size: 18,
1320
1322
  className: "mt-0.5 shrink-0 text-status-warning-text"
1321
1323
  }), /* @__PURE__ */ J("div", {
@@ -1329,38 +1331,43 @@ function Ze() {
1329
1331
  "You can review content here, but create/publish actions require the right permission and will be rejected at the gateway otherwise."
1330
1332
  ]
1331
1333
  })]
1332
- }), /* @__PURE__ */ J(Ee, {
1334
+ }), /* @__PURE__ */ J(ke, {
1333
1335
  className: "gap-0",
1334
1336
  value: t,
1335
1337
  onValueChange: (e) => r(e),
1336
- children: [/* @__PURE__ */ J(Oe, {
1338
+ children: [/* @__PURE__ */ J(je, {
1337
1339
  className: "mb-5",
1338
1340
  children: [
1339
- /* @__PURE__ */ J(ke, {
1341
+ /* @__PURE__ */ J(Me, {
1340
1342
  value: "courses",
1341
- children: [/* @__PURE__ */ q(oe, { size: 15 }), " Courses"]
1343
+ children: [/* @__PURE__ */ q(H, { size: 15 }), " Courses"]
1342
1344
  }),
1343
- /* @__PURE__ */ J(ke, {
1345
+ /* @__PURE__ */ J(Me, {
1344
1346
  value: "problems",
1345
- children: [/* @__PURE__ */ q(W, { size: 15 }), " Problems"]
1347
+ children: [/* @__PURE__ */ q(U, { size: 15 }), " Problems"]
1346
1348
  }),
1347
- /* @__PURE__ */ J(ke, {
1349
+ /* @__PURE__ */ J(Me, {
1348
1350
  value: "hackathons",
1349
- children: [/* @__PURE__ */ q(ge, { size: 15 }), " Hackathons"]
1351
+ children: [/* @__PURE__ */ q(ye, { size: 15 }), " Hackathons"]
1350
1352
  }),
1351
- /* @__PURE__ */ J(ke, {
1353
+ /* @__PURE__ */ J(Me, {
1352
1354
  value: "mentors",
1353
1355
  children: [/* @__PURE__ */ q(G, { size: 15 }), " Mentors"]
1356
+ }),
1357
+ /* @__PURE__ */ J(Me, {
1358
+ value: "integrations",
1359
+ children: [/* @__PURE__ */ q(me, { size: 15 }), " Integrations"]
1354
1360
  })
1355
1361
  ]
1356
- }), /* @__PURE__ */ q(De, {
1362
+ }), /* @__PURE__ */ q(Ae, {
1357
1363
  value: t,
1358
- children: q(t === "courses" ? qe : t === "problems" ? Je : t === "hackathons" ? Ye : Xe, {})
1364
+ className: ie,
1365
+ children: q(t === "courses" ? Xe : t === "problems" ? Ze : t === "hackathons" ? Qe : t === "mentors" ? $e : se, {})
1359
1366
  })]
1360
1367
  })]
1361
1368
  });
1362
1369
  }
1363
1370
  //#endregion
1364
- export { Ze as AdminAdminDashboardPagePage };
1371
+ export { et as AdminAdminDashboardPagePage };
1365
1372
 
1366
1373
  //# sourceMappingURL=AdminAdminDashboardPagePage.js.map