@burdenoff/microfe-technospam 2026.709.3 → 2026.709.4

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 (46) hide show
  1. package/dist/index.js +4 -4
  2. package/dist/technospam/TechnoSpamRoutes.d.ts.map +1 -1
  3. package/dist/technospam/TechnoSpamRoutes.js +100 -74
  4. package/dist/technospam/TechnoSpamRoutes.js.map +1 -1
  5. package/dist/technospam/components/PageLayout.d.ts.map +1 -1
  6. package/dist/technospam/components/PageLayout.js +26 -23
  7. package/dist/technospam/components/PageLayout.js.map +1 -1
  8. package/dist/technospam/components/TagInput.d.ts +18 -0
  9. package/dist/technospam/components/TagInput.d.ts.map +1 -0
  10. package/dist/technospam/components/TagInput.js +58 -0
  11. package/dist/technospam/components/TagInput.js.map +1 -0
  12. package/dist/technospam/components/TagStrip.d.ts +12 -0
  13. package/dist/technospam/components/TagStrip.d.ts.map +1 -0
  14. package/dist/technospam/components/TagStrip.js +20 -0
  15. package/dist/technospam/components/TagStrip.js.map +1 -0
  16. package/dist/technospam/components/index.d.ts +2 -0
  17. package/dist/technospam/components/index.d.ts.map +1 -1
  18. package/dist/technospam/components/index.js +2 -0
  19. package/dist/technospam/hooks/useNativeControls.d.ts +27 -0
  20. package/dist/technospam/hooks/useNativeControls.d.ts.map +1 -0
  21. package/dist/technospam/hooks/useNativeControls.js +18 -0
  22. package/dist/technospam/hooks/useNativeControls.js.map +1 -0
  23. package/dist/technospam/hooks/useTechnoSpamAnalytics.d.ts +1 -1
  24. package/dist/technospam/hooks/useTechnoSpamAnalytics.d.ts.map +1 -1
  25. package/dist/technospam/hooks/useTechnoSpamAnalytics.js.map +1 -1
  26. package/dist/technospam/hooks/useTechnoSpamPageView.d.ts +14 -0
  27. package/dist/technospam/hooks/useTechnoSpamPageView.d.ts.map +1 -0
  28. package/dist/technospam/hooks/useTechnoSpamPageView.js +26 -0
  29. package/dist/technospam/hooks/useTechnoSpamPageView.js.map +1 -0
  30. package/dist/technospam/index.js +1 -1
  31. package/dist/technospam/pages/AdminAdminDashboardPagePage.d.ts.map +1 -1
  32. package/dist/technospam/pages/AdminAdminDashboardPagePage.js +408 -399
  33. package/dist/technospam/pages/AdminAdminDashboardPagePage.js.map +1 -1
  34. package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.d.ts.map +1 -1
  35. package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.js +50 -55
  36. package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.js.map +1 -1
  37. package/dist/technospam/pages/ApplicationsProblemsPagePage.js +25 -25
  38. package/dist/technospam/pages/CoursesCourseDetailsPagePage.d.ts.map +1 -1
  39. package/dist/technospam/pages/CoursesCourseDetailsPagePage.js +142 -144
  40. package/dist/technospam/pages/CoursesCourseDetailsPagePage.js.map +1 -1
  41. package/dist/technospam/pages/CoursesCoursesPagePage.js +30 -30
  42. package/dist/technospam/pages/HackathonsHackathonsPagePage.js +29 -29
  43. package/dist/technospam/pages/MentorshipMentorProfilePagePage.js +54 -54
  44. package/dist/technospam/pages/MentorshipMentorsPagePage.js +61 -61
  45. package/dist/technospam/pages/MentorshipSessionsPagePage.js +42 -42
  46. package/package.json +2 -2
@@ -5,270 +5,272 @@ import { coverGradient as r, topicIcon as i } from "../components/MediaCover.js"
5
5
  import { formatDateTime as a, formatDuration as o, formatMoney as s, humanizeEnum as c } from "../utils/format.js";
6
6
  import { StatusBadge as l } from "../components/StatusBadge.js";
7
7
  import { EmptyView as u, ErrorView as d, LoadingRows as f } from "../components/StateViews.js";
8
+ import { TagInput as p } from "../components/TagInput.js";
8
9
  import "../components/index.js";
9
- import { notify as p } from "../lib/toast.js";
10
- import { useApproveMentor as m, useArchiveCourse as h, useCompleteHackathon as g, useCoursesQuery as _, useCreateCourse as v, useCreateHackathon as y, useCreateLesson as b, useCreateProblem as x, useGradeSubmission as S, useHackathonsQuery as C, useLessonsQuery as w, useMentorsQuery as T, useOpenRegistration as E, useProblemsQuery as ee, usePublishCourse as te, usePublishProblem as ne, useScoreTeam as D, useStartHackathon as O, useStartJudging as k, useSubmissionsQuery as A, useTeamsQuery as j } from "../api/technospamApi.js";
11
- import { useState as M } from "react";
12
- import { Archive as N, Award as re, BookOpen as P, Code2 as F, Gavel as I, ListChecks as L, Play as R, Plus as z, Rocket as ie, ShieldAlert as B, Trophy as V, UserCheck as ae, Users as H, X as oe } from "lucide-react";
13
- import { Fragment as U, jsx as W, jsxs as G } from "react/jsx-runtime";
14
- import { Badge as K, Button as q, GlassCard as J, Input as Y, Select as X, SelectContent as se, SelectItem as ce, SelectTrigger as Z, SelectValue as le, Tabs as ue, TabsList as de, TabsTrigger as Q, Textarea as fe } from "@burdenoff/fe-libs/ui";
10
+ import { notify as m } from "../lib/toast.js";
11
+ import { useApproveMentor as h, useArchiveCourse as g, useCompleteHackathon as _, useCoursesQuery as v, useCreateCourse as y, useCreateHackathon as b, useCreateLesson as x, useCreateProblem as S, useGradeSubmission as C, useHackathonsQuery as w, useLessonsQuery as T, useMentorsQuery as E, useOpenRegistration as ee, useProblemsQuery as te, usePublishCourse as D, usePublishProblem as O, useScoreTeam as k, useStartHackathon as A, useStartJudging as j, useSubmissionsQuery as M, useTeamsQuery as N } from "../api/technospamApi.js";
12
+ import { useState as P } from "react";
13
+ import { Archive as ne, Award as re, BookOpen as F, Code2 as I, Gavel as L, ListChecks as R, Play as z, Plus as B, Rocket as ie, ShieldAlert as V, Trophy as H, UserCheck as ae, Users as U, X as oe } from "lucide-react";
14
+ import { Fragment as W, jsx as G, jsxs as K } from "react/jsx-runtime";
15
+ import { Badge as q, Button as J, GlassCard as Y, Input as X, Select as se, SelectContent as ce, SelectItem as le, SelectTrigger as Z, SelectValue as ue, Tabs as de, TabsList as fe, TabsTrigger as Q, Textarea as pe } from "@burdenoff/fe-libs/ui";
16
+ import { nativeConfirm as me } from "@burdenoff/fe-libs/shared/native";
15
17
  //#region src/technospam/pages/AdminAdminDashboardPagePage.tsx
16
- var pe = [
18
+ var he = [
17
19
  "ARTICLE",
18
20
  "VIDEO",
19
21
  "INTERACTIVE",
20
22
  "QUIZ",
21
23
  "PROJECT"
22
- ], me = [
24
+ ], ge = [
23
25
  "ACCEPTED",
24
26
  "WRONG_ANSWER",
25
27
  "TIME_LIMIT_EXCEEDED",
26
28
  "RUNTIME_ERROR",
27
29
  "COMPILE_ERROR"
28
- ], he = [
30
+ ], _e = [
29
31
  "BEGINNER",
30
32
  "INTERMEDIATE",
31
33
  "ADVANCED",
32
34
  "EXPERT"
33
- ], ge = [
35
+ ], ve = [
34
36
  "EASY",
35
37
  "MEDIUM",
36
38
  "HARD"
37
39
  ];
38
- function _e(e) {
40
+ function ye(e) {
39
41
  return e.toLowerCase().trim().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
40
42
  }
41
- function ve(e) {
43
+ function be(e) {
42
44
  return e.split(",").map((e) => e.trim()).filter(Boolean);
43
45
  }
44
- function ye(e) {
46
+ function xe(e) {
45
47
  let t = Number.parseInt(e, 10);
46
48
  return Number.isFinite(t) ? t : void 0;
47
49
  }
48
- function be(e) {
50
+ function Se(e) {
49
51
  if (!e) return null;
50
52
  let t = new Date(e);
51
53
  return Number.isNaN(t.getTime()) ? null : t.toISOString();
52
54
  }
53
55
  function $({ label: e, required: t, className: n, children: r }) {
54
- return /* @__PURE__ */ G("div", {
56
+ return /* @__PURE__ */ K("div", {
55
57
  className: `flex flex-col gap-1.5 ${n ?? ""}`,
56
- children: [/* @__PURE__ */ G("span", {
58
+ children: [/* @__PURE__ */ K("span", {
57
59
  className: "text-xs font-medium text-text-secondary",
58
- children: [e, t ? /* @__PURE__ */ W("span", {
60
+ children: [e, t ? /* @__PURE__ */ G("span", {
59
61
  className: "text-status-error-text",
60
62
  children: " *"
61
63
  }) : null]
62
64
  }), r]
63
65
  });
64
66
  }
65
- function xe({ seed: e, icon: n }) {
66
- return /* @__PURE__ */ W("span", {
67
+ function Ce({ seed: e, icon: n }) {
68
+ return /* @__PURE__ */ G("span", {
67
69
  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)),
68
- children: /* @__PURE__ */ W(n, {
70
+ children: /* @__PURE__ */ G(n, {
69
71
  size: 18,
70
72
  strokeWidth: 2
71
73
  })
72
74
  });
73
75
  }
74
- function Se({ title: e, description: t, icon: n, children: r, footer: i }) {
75
- return /* @__PURE__ */ G(J, {
76
+ function we({ title: e, description: t, icon: n, children: r, footer: i }) {
77
+ return /* @__PURE__ */ K(Y, {
76
78
  className: "space-y-4 p-4 sm:p-5",
77
79
  children: [
78
- /* @__PURE__ */ G("div", {
80
+ /* @__PURE__ */ K("div", {
79
81
  className: "flex items-center gap-3 border-b border-border-seam pb-3",
80
- children: [/* @__PURE__ */ W("span", {
82
+ children: [/* @__PURE__ */ G("span", {
81
83
  className: "flex h-9 w-9 shrink-0 items-center justify-center rounded-xl bg-accent-primary/15 text-accent-primary ring-1 ring-accent-primary/20",
82
- children: /* @__PURE__ */ W(n, { size: 17 })
83
- }), /* @__PURE__ */ G("div", {
84
+ children: /* @__PURE__ */ G(n, { size: 17 })
85
+ }), /* @__PURE__ */ K("div", {
84
86
  className: "min-w-0",
85
- children: [/* @__PURE__ */ W("h3", {
87
+ children: [/* @__PURE__ */ G("h3", {
86
88
  className: "text-sm font-semibold text-text-primary",
87
89
  children: e
88
- }), t ? /* @__PURE__ */ W("p", {
90
+ }), t ? /* @__PURE__ */ G("p", {
89
91
  className: "text-xs text-text-muted",
90
92
  children: t
91
93
  }) : null]
92
94
  })]
93
95
  }),
94
- /* @__PURE__ */ W("div", {
96
+ /* @__PURE__ */ G("div", {
95
97
  className: "grid grid-cols-1 gap-3 sm:grid-cols-2",
96
98
  children: r
97
99
  }),
98
- /* @__PURE__ */ W("div", {
100
+ /* @__PURE__ */ G("div", {
99
101
  className: "flex justify-end gap-2 border-t border-border-seam pt-3",
100
102
  children: i
101
103
  })
102
104
  ]
103
105
  });
104
106
  }
105
- function Ce({ summary: e, actionLabel: t, open: n, onToggle: r }) {
106
- return /* @__PURE__ */ G("div", {
107
+ function Te({ summary: e, actionLabel: t, open: n, onToggle: r }) {
108
+ return /* @__PURE__ */ K("div", {
107
109
  className: "flex items-center justify-between gap-3",
108
- children: [/* @__PURE__ */ W("p", {
110
+ children: [/* @__PURE__ */ G("p", {
109
111
  className: "text-sm text-text-secondary",
110
112
  children: e
111
- }), t && r ? /* @__PURE__ */ G(q, {
113
+ }), t && r ? /* @__PURE__ */ K(J, {
112
114
  size: "sm",
113
115
  variant: n ? "outline" : "default",
114
116
  onClick: r,
115
- children: [W(n ? oe : z, { size: 15 }), n ? "Close" : t]
117
+ children: [G(n ? oe : B, { size: 15 }), n ? "Close" : t]
116
118
  }) : null]
117
119
  });
118
120
  }
119
- function we({ leading: e, children: t, actions: n }) {
120
- return /* @__PURE__ */ G(J, {
121
+ function Ee({ leading: e, children: t, actions: n }) {
122
+ return /* @__PURE__ */ K(Y, {
121
123
  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",
122
- children: [/* @__PURE__ */ G("div", {
124
+ children: [/* @__PURE__ */ K("div", {
123
125
  className: "flex min-w-0 items-center gap-3",
124
- children: [e, /* @__PURE__ */ W("div", {
126
+ children: [e, /* @__PURE__ */ G("div", {
125
127
  className: "min-w-0",
126
128
  children: t
127
129
  })]
128
- }), n ? /* @__PURE__ */ W("div", {
130
+ }), n ? /* @__PURE__ */ G("div", {
129
131
  className: "flex shrink-0 flex-wrap items-center gap-2",
130
132
  children: n
131
133
  }) : null]
132
134
  });
133
135
  }
134
- function Te({ courseId: e }) {
135
- let { data: t, loading: n, refetch: r } = w(e), [i, { loading: a }] = b(), [s, l] = M(""), [u, d] = M("ARTICLE"), [m, h] = M(""), [g, _] = M(""), [v, y] = M(!1), x = [...t?.tecListLessons ?? []].sort((e, t) => e.position - t.position);
136
- return /* @__PURE__ */ G("div", {
136
+ function De({ courseId: e }) {
137
+ let { data: t, loading: n, refetch: r } = T(e), [i, { loading: a }] = x(), [s, l] = P(""), [u, d] = P("ARTICLE"), [p, h] = P(""), [g, _] = P(""), [v, y] = P(!1), b = [...t?.tecListLessons ?? []].sort((e, t) => e.position - t.position);
138
+ return /* @__PURE__ */ K("div", {
137
139
  className: "mt-3 rounded-xl border border-border-seam bg-bg-sunken p-4",
138
140
  children: [
139
- /* @__PURE__ */ G("div", {
141
+ /* @__PURE__ */ K("div", {
140
142
  className: "mb-3 flex items-center gap-2",
141
- children: [/* @__PURE__ */ W("span", {
143
+ children: [/* @__PURE__ */ G("span", {
142
144
  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",
143
- children: /* @__PURE__ */ W(L, { size: 15 })
144
- }), /* @__PURE__ */ G("span", {
145
+ children: /* @__PURE__ */ G(R, { size: 15 })
146
+ }), /* @__PURE__ */ K("span", {
145
147
  className: "text-xs font-semibold uppercase tracking-wide text-text-secondary",
146
148
  children: [
147
149
  "Curriculum (",
148
- x.length,
150
+ b.length,
149
151
  ")"
150
152
  ]
151
153
  })]
152
154
  }),
153
- n && x.length === 0 ? /* @__PURE__ */ W(f, {
155
+ n && b.length === 0 ? /* @__PURE__ */ G(f, {
154
156
  count: 2,
155
157
  height: "h-10"
156
- }) : x.length === 0 ? /* @__PURE__ */ W("p", {
158
+ }) : b.length === 0 ? /* @__PURE__ */ G("p", {
157
159
  className: "mb-3 text-xs text-text-muted",
158
160
  children: "No lessons yet — add the first below."
159
- }) : /* @__PURE__ */ W("ol", {
161
+ }) : /* @__PURE__ */ G("ol", {
160
162
  className: "mb-3 space-y-1.5",
161
- children: x.map((e, t) => /* @__PURE__ */ G("li", {
163
+ children: b.map((e, t) => /* @__PURE__ */ K("li", {
162
164
  className: "flex items-center gap-2 rounded-lg bg-bg-surface px-3 py-2 text-sm text-text-primary",
163
165
  children: [
164
- /* @__PURE__ */ W("span", {
166
+ /* @__PURE__ */ G("span", {
165
167
  className: "flex h-5 w-5 shrink-0 items-center justify-center rounded-md bg-accent-primary/10 text-[11px] font-semibold text-accent-primary",
166
168
  children: t + 1
167
169
  }),
168
- /* @__PURE__ */ W("span", {
170
+ /* @__PURE__ */ G("span", {
169
171
  className: "truncate",
170
172
  children: e.title
171
173
  }),
172
- /* @__PURE__ */ W(K, {
174
+ /* @__PURE__ */ G(q, {
173
175
  variant: "secondary",
174
176
  className: "text-[11px]",
175
177
  children: c(e.kind)
176
178
  }),
177
- e.isPreview ? /* @__PURE__ */ W(K, {
179
+ e.isPreview ? /* @__PURE__ */ G(q, {
178
180
  variant: "outline",
179
181
  className: "text-[11px]",
180
182
  children: "Preview"
181
183
  }) : null,
182
- /* @__PURE__ */ W("span", {
184
+ /* @__PURE__ */ G("span", {
183
185
  className: "ml-auto text-xs text-text-muted",
184
186
  children: o(e.estimatedMinutes)
185
187
  })
186
188
  ]
187
189
  }, e.id))
188
190
  }),
189
- /* @__PURE__ */ G("div", {
191
+ /* @__PURE__ */ K("div", {
190
192
  className: "grid grid-cols-1 gap-2 sm:grid-cols-2",
191
- children: [/* @__PURE__ */ W(Y, {
193
+ children: [/* @__PURE__ */ G(X, {
192
194
  placeholder: "Lesson title",
193
195
  value: s,
194
196
  onChange: (e) => l(e.target.value)
195
- }), /* @__PURE__ */ G(X, {
197
+ }), /* @__PURE__ */ K(se, {
196
198
  value: u,
197
199
  onValueChange: (e) => d(e),
198
- children: [/* @__PURE__ */ W(Z, { children: /* @__PURE__ */ W(le, {}) }), /* @__PURE__ */ W(se, { children: pe.map((e) => /* @__PURE__ */ W(ce, {
200
+ children: [/* @__PURE__ */ G(Z, { children: /* @__PURE__ */ G(ue, {}) }), /* @__PURE__ */ G(ce, { children: he.map((e) => /* @__PURE__ */ G(le, {
199
201
  value: e,
200
202
  children: c(e)
201
203
  }, e)) })]
202
204
  })]
203
205
  }),
204
- /* @__PURE__ */ W(fe, {
206
+ /* @__PURE__ */ G(pe, {
205
207
  className: "mt-2",
206
208
  placeholder: "Lesson content (markdown / notes)",
207
- value: m,
209
+ value: p,
208
210
  onChange: (e) => h(e.target.value)
209
211
  }),
210
- /* @__PURE__ */ G("div", {
212
+ /* @__PURE__ */ K("div", {
211
213
  className: "mt-2 flex flex-wrap items-center gap-3",
212
214
  children: [
213
- /* @__PURE__ */ W(Y, {
215
+ /* @__PURE__ */ G(X, {
214
216
  type: "number",
215
217
  className: "w-28",
216
218
  placeholder: "Minutes",
217
219
  value: g,
218
220
  onChange: (e) => _(e.target.value)
219
221
  }),
220
- /* @__PURE__ */ G("label", {
222
+ /* @__PURE__ */ K("label", {
221
223
  className: "flex items-center gap-2 text-xs text-text-secondary",
222
- children: [/* @__PURE__ */ W("input", {
224
+ children: [/* @__PURE__ */ G("input", {
223
225
  type: "checkbox",
224
226
  checked: v,
225
227
  onChange: (e) => y(e.target.checked)
226
228
  }), "Free preview"]
227
229
  }),
228
- /* @__PURE__ */ G(q, {
230
+ /* @__PURE__ */ K(J, {
229
231
  size: "sm",
230
232
  onClick: async () => {
231
233
  let t = s.trim();
232
- if (!t) return p.error("Lesson title is required");
234
+ if (!t) return m.error("Lesson title is required");
233
235
  (await i({ variables: { input: {
234
236
  courseId: e,
235
237
  title: t,
236
238
  kind: u,
237
- content: m.trim() || void 0,
238
- position: x.length + 1,
239
- estimatedMinutes: ye(g),
239
+ content: p.trim() || void 0,
240
+ position: b.length + 1,
241
+ estimatedMinutes: xe(g),
240
242
  isPreview: v
241
- } } })).data?.tecCreateLesson && (p.success("Lesson added", t), l(""), h(""), _(""), y(!1), await r());
243
+ } } })).data?.tecCreateLesson && (m.success("Lesson added", t), l(""), h(""), _(""), y(!1), await r());
242
244
  },
243
245
  disabled: a,
244
246
  className: "ml-auto",
245
- children: [/* @__PURE__ */ W(z, { size: 14 }), " Add lesson"]
247
+ children: [/* @__PURE__ */ G(B, { size: 14 }), " Add lesson"]
246
248
  })
247
249
  ]
248
250
  })
249
251
  ]
250
252
  });
251
253
  }
252
- function Ee({ problemId: e }) {
253
- let { data: t, loading: n, refetch: r } = A({ problemId: e }), [i] = S(), [o, s] = M(null), u = t?.tecListSubmissions.items ?? [], d = async (e, t) => {
254
+ function Oe({ problemId: e }) {
255
+ let { data: t, loading: n, refetch: r } = M({ problemId: e }), [i] = C(), [o, s] = P(null), u = t?.tecListSubmissions.items ?? [], d = async (e, t) => {
254
256
  s(e);
255
257
  try {
256
258
  (await i({ variables: {
257
259
  id: e,
258
260
  verdict: t
259
- } })).data?.tecGradeSubmission && (p.success("Submission graded", c(t)), await r());
261
+ } })).data?.tecGradeSubmission && (m.success("Submission graded", c(t)), await r());
260
262
  } finally {
261
263
  s(null);
262
264
  }
263
265
  };
264
- return /* @__PURE__ */ G("div", {
266
+ return /* @__PURE__ */ K("div", {
265
267
  className: "mt-3 rounded-xl border border-border-seam bg-bg-sunken p-4",
266
- children: [/* @__PURE__ */ G("div", {
268
+ children: [/* @__PURE__ */ K("div", {
267
269
  className: "mb-3 flex items-center gap-2",
268
- children: [/* @__PURE__ */ W("span", {
270
+ children: [/* @__PURE__ */ G("span", {
269
271
  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",
270
- children: /* @__PURE__ */ W(I, { size: 15 })
271
- }), /* @__PURE__ */ G("span", {
272
+ children: /* @__PURE__ */ G(L, { size: 15 })
273
+ }), /* @__PURE__ */ K("span", {
272
274
  className: "text-xs font-semibold uppercase tracking-wide text-text-secondary",
273
275
  children: [
274
276
  "Submissions (",
@@ -276,36 +278,36 @@ function Ee({ problemId: e }) {
276
278
  ")"
277
279
  ]
278
280
  })]
279
- }), n && u.length === 0 ? /* @__PURE__ */ W(f, {
281
+ }), n && u.length === 0 ? /* @__PURE__ */ G(f, {
280
282
  count: 2,
281
283
  height: "h-10"
282
- }) : u.length === 0 ? /* @__PURE__ */ W("p", {
284
+ }) : u.length === 0 ? /* @__PURE__ */ G("p", {
283
285
  className: "text-xs text-text-muted",
284
286
  children: "No submissions yet."
285
- }) : /* @__PURE__ */ W("div", {
287
+ }) : /* @__PURE__ */ G("div", {
286
288
  className: "space-y-2",
287
- children: u.map((e) => /* @__PURE__ */ G("div", {
289
+ children: u.map((e) => /* @__PURE__ */ K("div", {
288
290
  className: "flex flex-wrap items-center gap-2 rounded-lg bg-bg-surface px-3 py-2 text-sm",
289
291
  children: [
290
- /* @__PURE__ */ W(l, { status: e.verdict }),
291
- /* @__PURE__ */ W("span", {
292
+ /* @__PURE__ */ G(l, { status: e.verdict }),
293
+ /* @__PURE__ */ G("span", {
292
294
  className: "text-xs text-text-muted",
293
295
  children: e.language
294
296
  }),
295
- /* @__PURE__ */ W("span", {
297
+ /* @__PURE__ */ G("span", {
296
298
  className: "text-xs text-text-muted",
297
299
  children: a(e.createdAt)
298
300
  }),
299
- e.verdict === "PENDING" ? /* @__PURE__ */ W("div", {
301
+ e.verdict === "PENDING" ? /* @__PURE__ */ G("div", {
300
302
  className: "ml-auto flex flex-wrap gap-1",
301
- children: me.map((t) => /* @__PURE__ */ W(q, {
303
+ children: ge.map((t) => /* @__PURE__ */ G(J, {
302
304
  size: "sm",
303
305
  variant: t === "ACCEPTED" ? "default" : "outline",
304
306
  onClick: () => d(e.id, t),
305
307
  disabled: o === e.id,
306
308
  children: t === "ACCEPTED" ? "Accept" : c(t)
307
309
  }, t))
308
- }) : /* @__PURE__ */ G("span", {
310
+ }) : /* @__PURE__ */ K("span", {
309
311
  className: "ml-auto text-xs text-text-muted",
310
312
  children: [e.pointsAwarded, " pts"]
311
313
  })
@@ -314,8 +316,8 @@ function Ee({ problemId: e }) {
314
316
  })]
315
317
  });
316
318
  }
317
- function De({ hackathon: e }) {
318
- let { data: t, loading: n, refetch: r } = j(e.id), [i] = D(), [a, o] = M(null), [s, c] = M({}), u = t?.tecListTeams ?? [], d = async (e, t) => {
319
+ function ke({ hackathon: e }) {
320
+ let { data: t, loading: n, refetch: r } = N(e.id), [i] = k(), [a, o] = P(null), [s, c] = P({}), u = t?.tecListTeams ?? [], d = async (e, t) => {
319
321
  let n = Math.max(0, Number(s[e] ?? "0") || 0);
320
322
  o(e);
321
323
  try {
@@ -323,19 +325,19 @@ function De({ hackathon: e }) {
323
325
  id: e,
324
326
  score: n,
325
327
  winner: t
326
- } })).data?.tecScoreTeam && (p.success("Team scored", `${n} pts${t ? " · winner" : ""}`), await r());
328
+ } })).data?.tecScoreTeam && (m.success("Team scored", `${n} pts${t ? " · winner" : ""}`), await r());
327
329
  } finally {
328
330
  o(null);
329
331
  }
330
332
  };
331
- return /* @__PURE__ */ G("div", {
333
+ return /* @__PURE__ */ K("div", {
332
334
  className: "mt-3 rounded-xl border border-border-seam bg-bg-sunken p-4",
333
- children: [/* @__PURE__ */ G("div", {
335
+ children: [/* @__PURE__ */ K("div", {
334
336
  className: "mb-3 flex items-center gap-2",
335
- children: [/* @__PURE__ */ W("span", {
337
+ children: [/* @__PURE__ */ G("span", {
336
338
  className: "flex h-7 w-7 items-center justify-center rounded-lg bg-accent-teal/15 text-accent-teal ring-1 ring-accent-teal/20",
337
- children: /* @__PURE__ */ W(H, { size: 15 })
338
- }), /* @__PURE__ */ G("span", {
339
+ children: /* @__PURE__ */ G(U, { size: 15 })
340
+ }), /* @__PURE__ */ K("span", {
339
341
  className: "text-xs font-semibold uppercase tracking-wide text-text-secondary",
340
342
  children: [
341
343
  "Teams (",
@@ -343,30 +345,30 @@ function De({ hackathon: e }) {
343
345
  ")"
344
346
  ]
345
347
  })]
346
- }), n && u.length === 0 ? /* @__PURE__ */ W(f, {
348
+ }), n && u.length === 0 ? /* @__PURE__ */ G(f, {
347
349
  count: 2,
348
350
  height: "h-10"
349
- }) : u.length === 0 ? /* @__PURE__ */ W("p", {
351
+ }) : u.length === 0 ? /* @__PURE__ */ G("p", {
350
352
  className: "text-xs text-text-muted",
351
353
  children: "No teams registered yet."
352
- }) : /* @__PURE__ */ W("div", {
354
+ }) : /* @__PURE__ */ G("div", {
353
355
  className: "space-y-2",
354
- children: u.map((t) => /* @__PURE__ */ G("div", {
356
+ children: u.map((t) => /* @__PURE__ */ K("div", {
355
357
  className: "flex flex-wrap items-center gap-2 rounded-lg bg-bg-surface px-3 py-2 text-sm",
356
358
  children: [
357
- /* @__PURE__ */ W("span", {
359
+ /* @__PURE__ */ G("span", {
358
360
  className: "truncate font-medium text-text-primary",
359
361
  children: t.name
360
362
  }),
361
- /* @__PURE__ */ W(l, { status: t.status }),
362
- t.projectName ? /* @__PURE__ */ W("span", {
363
+ /* @__PURE__ */ G(l, { status: t.status }),
364
+ t.projectName ? /* @__PURE__ */ G("span", {
363
365
  className: "text-xs text-text-muted",
364
366
  children: t.projectName
365
367
  }) : null,
366
- e.status === "JUDGING" ? /* @__PURE__ */ G("div", {
368
+ e.status === "JUDGING" ? /* @__PURE__ */ K("div", {
367
369
  className: "ml-auto flex items-center gap-1",
368
370
  children: [
369
- /* @__PURE__ */ W(Y, {
371
+ /* @__PURE__ */ G(X, {
370
372
  type: "number",
371
373
  className: "w-20",
372
374
  placeholder: "Score",
@@ -376,21 +378,21 @@ function De({ hackathon: e }) {
376
378
  [t.id]: e.target.value
377
379
  }))
378
380
  }),
379
- /* @__PURE__ */ W(q, {
381
+ /* @__PURE__ */ G(J, {
380
382
  size: "sm",
381
383
  onClick: () => d(t.id, !1),
382
384
  disabled: a === t.id,
383
385
  children: "Score"
384
386
  }),
385
- /* @__PURE__ */ G(q, {
387
+ /* @__PURE__ */ K(J, {
386
388
  size: "sm",
387
389
  variant: "outline",
388
390
  onClick: () => d(t.id, !0),
389
391
  disabled: a === t.id,
390
- children: [/* @__PURE__ */ W(V, { size: 14 }), " Winner"]
392
+ children: [/* @__PURE__ */ G(H, { size: 14 }), " Winner"]
391
393
  })
392
394
  ]
393
- }) : /* @__PURE__ */ G("span", {
395
+ }) : /* @__PURE__ */ K("span", {
394
396
  className: "ml-auto text-xs text-text-muted",
395
397
  children: [t.score, " pts"]
396
398
  })
@@ -399,178 +401,185 @@ function De({ hackathon: e }) {
399
401
  })]
400
402
  });
401
403
  }
402
- function Oe() {
403
- let { data: e, loading: t, error: n, refetch: r } = _({}), [a, { loading: s }] = v(), [m] = te(), [g] = h(), [y, b] = M(!1), [x, S] = M(null), [C, w] = M(null), [T, E] = M(""), [ee, ne] = M(""), [D, O] = M(""), [k, A] = M(""), [j, re] = M("BEGINNER"), [F, I] = M(""), [R, z] = M(""), B = e?.tecListCourses.items ?? [], V = () => {
404
- E(""), ne(""), O(""), A(""), re("BEGINNER"), I(""), z(""), b(!1);
404
+ function Ae() {
405
+ let { data: e, loading: t, error: n, refetch: r } = v({}), [a, { loading: s }] = y(), [h] = D(), [_] = g(), [b, x] = P(!1), [S, C] = P(null), [w, T] = P(null), [E, ee] = P(""), [te, O] = P(""), [k, A] = P(""), [j, M] = P(""), [N, re] = P("BEGINNER"), [I, L] = P(""), [z, B] = P([]), V = e?.tecListCourses.items ?? [], H = () => {
406
+ ee(""), O(""), A(""), M(""), re("BEGINNER"), L(""), B([]), x(!1);
405
407
  }, ae = async () => {
406
- let e = T.trim();
407
- if (!e) return p.error("Title is required");
408
- let t = _e(ee || e);
409
- if (!t) return p.error("A valid slug is required");
408
+ let e = E.trim();
409
+ if (!e) return m.error("Title is required");
410
+ let t = ye(te || e);
411
+ if (!t) return m.error("A valid slug is required");
410
412
  (await a({ variables: { input: {
411
413
  title: e,
412
414
  slug: t,
413
- summary: D.trim() || void 0,
414
- topic: k.trim() || void 0,
415
- level: j,
416
- estimatedMinutes: ye(F),
417
- tags: ve(R)
418
- } } })).data?.tecCreateCourse && (p.success("Course created", `"${e}" saved as a draft.`), V(), await r());
419
- }, H = async (e) => {
420
- S(e);
415
+ summary: k.trim() || void 0,
416
+ topic: j.trim() || void 0,
417
+ level: N,
418
+ estimatedMinutes: xe(I),
419
+ tags: z
420
+ } } })).data?.tecCreateCourse && (m.success("Course created", `"${e}" saved as a draft.`), H(), await r());
421
+ }, U = async (e) => {
422
+ C(e);
421
423
  try {
422
- (await m({ variables: { id: e } })).data?.tecPublishCourse && (p.success("Course published"), await r());
424
+ (await h({ variables: { id: e } })).data?.tecPublishCourse && (m.success("Course published"), await r());
423
425
  } finally {
424
- S(null);
426
+ C(null);
425
427
  }
426
- }, oe = async (e) => {
427
- S(e);
428
- try {
429
- (await g({ variables: { id: e } })).data?.tecArchiveCourse && (p.success("Course archived"), await r());
430
- } finally {
431
- S(null);
428
+ }, oe = async (e, t) => {
429
+ if (await me({
430
+ title: "Archive course",
431
+ message: `Archive "${t}"? Learners will no longer be able to enroll.`,
432
+ okButtonTitle: "Archive",
433
+ cancelButtonTitle: "Cancel"
434
+ })) {
435
+ C(e);
436
+ try {
437
+ (await _({ variables: { id: e } })).data?.tecArchiveCourse && (m.success("Course archived"), await r());
438
+ } finally {
439
+ C(null);
440
+ }
432
441
  }
433
442
  };
434
- return /* @__PURE__ */ G("div", {
443
+ return /* @__PURE__ */ K("div", {
435
444
  className: "space-y-4",
436
445
  children: [
437
- /* @__PURE__ */ W(Ce, {
438
- summary: `${B.length} course${B.length === 1 ? "" : "s"}`,
446
+ /* @__PURE__ */ G(Te, {
447
+ summary: `${V.length} course${V.length === 1 ? "" : "s"}`,
439
448
  actionLabel: "New course",
440
- open: y,
441
- onToggle: () => b((e) => !e)
449
+ open: b,
450
+ onToggle: () => x((e) => !e)
442
451
  }),
443
- y ? /* @__PURE__ */ G(Se, {
452
+ b ? /* @__PURE__ */ K(we, {
444
453
  title: "New course",
445
454
  description: "Draft a course, then add lessons and publish when it's ready.",
446
- icon: P,
447
- footer: /* @__PURE__ */ G(U, { children: [/* @__PURE__ */ W(q, {
455
+ icon: F,
456
+ footer: /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ G(J, {
448
457
  variant: "outline",
449
458
  size: "sm",
450
- onClick: V,
459
+ onClick: H,
451
460
  children: "Cancel"
452
- }), /* @__PURE__ */ W(q, {
461
+ }), /* @__PURE__ */ G(J, {
453
462
  size: "sm",
454
463
  onClick: ae,
455
464
  disabled: s,
456
465
  children: s ? "Creating…" : "Create course"
457
466
  })] }),
458
467
  children: [
459
- /* @__PURE__ */ W($, {
468
+ /* @__PURE__ */ G($, {
460
469
  label: "Title",
461
470
  required: !0,
462
- children: /* @__PURE__ */ W(Y, {
463
- value: T,
464
- onChange: (e) => E(e.target.value),
471
+ children: /* @__PURE__ */ G(X, {
472
+ value: E,
473
+ onChange: (e) => ee(e.target.value),
465
474
  placeholder: "Intro to TypeScript"
466
475
  })
467
476
  }),
468
- /* @__PURE__ */ W($, {
477
+ /* @__PURE__ */ G($, {
469
478
  label: "Slug",
470
479
  required: !0,
471
- children: /* @__PURE__ */ W(Y, {
472
- value: ee,
473
- onChange: (e) => ne(e.target.value),
480
+ children: /* @__PURE__ */ G(X, {
481
+ value: te,
482
+ onChange: (e) => O(e.target.value),
474
483
  placeholder: "auto from title if blank"
475
484
  })
476
485
  }),
477
- /* @__PURE__ */ W($, {
486
+ /* @__PURE__ */ G($, {
478
487
  label: "Topic",
479
- children: /* @__PURE__ */ W(Y, {
480
- value: k,
481
- onChange: (e) => A(e.target.value),
488
+ children: /* @__PURE__ */ G(X, {
489
+ value: j,
490
+ onChange: (e) => M(e.target.value),
482
491
  placeholder: "e.g. Web, AI, Data, Cloud"
483
492
  })
484
493
  }),
485
- /* @__PURE__ */ W($, {
494
+ /* @__PURE__ */ G($, {
486
495
  label: "Level",
487
- children: /* @__PURE__ */ G(X, {
488
- value: j,
496
+ children: /* @__PURE__ */ K(se, {
497
+ value: N,
489
498
  onValueChange: (e) => re(e),
490
- children: [/* @__PURE__ */ W(Z, { children: /* @__PURE__ */ W(le, {}) }), /* @__PURE__ */ W(se, { children: he.map((e) => /* @__PURE__ */ W(ce, {
499
+ children: [/* @__PURE__ */ G(Z, { children: /* @__PURE__ */ G(ue, {}) }), /* @__PURE__ */ G(ce, { children: _e.map((e) => /* @__PURE__ */ G(le, {
491
500
  value: e,
492
501
  children: c(e)
493
502
  }, e)) })]
494
503
  })
495
504
  }),
496
- /* @__PURE__ */ W($, {
505
+ /* @__PURE__ */ G($, {
497
506
  label: "Estimated minutes",
498
- children: /* @__PURE__ */ W(Y, {
507
+ children: /* @__PURE__ */ G(X, {
499
508
  type: "number",
500
509
  min: 0,
501
- value: F,
502
- onChange: (e) => I(e.target.value),
510
+ value: I,
511
+ onChange: (e) => L(e.target.value),
503
512
  placeholder: "120"
504
513
  })
505
514
  }),
506
- /* @__PURE__ */ W($, {
507
- label: "Tags (comma-separated)",
508
- children: /* @__PURE__ */ W(Y, {
509
- value: R,
510
- onChange: (e) => z(e.target.value),
515
+ /* @__PURE__ */ G($, {
516
+ label: "Tags",
517
+ children: /* @__PURE__ */ G(p, {
518
+ value: z,
519
+ onChange: B,
511
520
  placeholder: "typescript, basics"
512
521
  })
513
522
  }),
514
- /* @__PURE__ */ W($, {
523
+ /* @__PURE__ */ G($, {
515
524
  label: "Summary",
516
525
  className: "sm:col-span-2",
517
- children: /* @__PURE__ */ W(fe, {
518
- value: D,
519
- onChange: (e) => O(e.target.value),
526
+ children: /* @__PURE__ */ G(pe, {
527
+ value: k,
528
+ onChange: (e) => A(e.target.value),
520
529
  placeholder: "What learners will build and take away."
521
530
  })
522
531
  })
523
532
  ]
524
533
  }) : null,
525
- t && !B.length ? /* @__PURE__ */ W(f, { count: 4 }) : n ? /* @__PURE__ */ W(d, {
534
+ t && !V.length ? /* @__PURE__ */ G(f, { count: 4 }) : n ? /* @__PURE__ */ G(d, {
526
535
  title: "Couldn't load courses",
527
536
  error: n
528
- }) : B.length === 0 ? /* @__PURE__ */ W(u, {
529
- icon: /* @__PURE__ */ W(P, { size: 26 }),
537
+ }) : V.length === 0 ? /* @__PURE__ */ G(u, {
538
+ icon: /* @__PURE__ */ G(F, { size: 26 }),
530
539
  title: "No courses yet",
531
540
  description: "Create your first course with the button above. TechnoSpam is pre-launch."
532
- }) : /* @__PURE__ */ W("div", {
541
+ }) : /* @__PURE__ */ G("div", {
533
542
  className: "space-y-3",
534
- children: B.map((e) => /* @__PURE__ */ G("div", { children: [/* @__PURE__ */ G(we, {
535
- leading: /* @__PURE__ */ W(xe, {
543
+ children: V.map((e) => /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ K(Ee, {
544
+ leading: /* @__PURE__ */ G(Ce, {
536
545
  seed: `${e.topic ?? ""} ${e.title}`,
537
546
  icon: i(e.topic ?? e.title)
538
547
  }),
539
- actions: /* @__PURE__ */ G(U, { children: [
540
- /* @__PURE__ */ G(q, {
548
+ actions: /* @__PURE__ */ K(W, { children: [
549
+ /* @__PURE__ */ K(J, {
541
550
  size: "sm",
542
551
  variant: "outline",
543
- onClick: () => w(C === e.id ? null : e.id),
544
- children: [/* @__PURE__ */ W(L, { size: 15 }), " Lessons"]
552
+ onClick: () => T(w === e.id ? null : e.id),
553
+ children: [/* @__PURE__ */ G(R, { size: 15 }), " Lessons"]
545
554
  }),
546
- e.status === "DRAFT" ? /* @__PURE__ */ G(q, {
555
+ e.status === "DRAFT" ? /* @__PURE__ */ K(J, {
547
556
  size: "sm",
548
- onClick: () => H(e.id),
549
- disabled: x === e.id,
550
- children: [/* @__PURE__ */ W(ie, { size: 15 }), " Publish"]
557
+ onClick: () => U(e.id),
558
+ disabled: S === e.id,
559
+ children: [/* @__PURE__ */ G(ie, { size: 15 }), " Publish"]
551
560
  }) : null,
552
- e.status === "ARCHIVED" ? null : /* @__PURE__ */ G(q, {
561
+ e.status === "ARCHIVED" ? null : /* @__PURE__ */ K(J, {
553
562
  size: "sm",
554
563
  variant: "outline",
555
- onClick: () => oe(e.id),
556
- disabled: x === e.id,
557
- children: [/* @__PURE__ */ W(N, { size: 15 }), " Archive"]
564
+ onClick: () => oe(e.id, e.title),
565
+ disabled: S === e.id,
566
+ children: [/* @__PURE__ */ G(ne, { size: 15 }), " Archive"]
558
567
  })
559
568
  ] }),
560
- children: [/* @__PURE__ */ G("div", {
569
+ children: [/* @__PURE__ */ K("div", {
561
570
  className: "flex flex-wrap items-center gap-2",
562
571
  children: [
563
- /* @__PURE__ */ W("span", {
572
+ /* @__PURE__ */ G("span", {
564
573
  className: "truncate text-sm font-semibold text-text-primary",
565
574
  children: e.title
566
575
  }),
567
- /* @__PURE__ */ W(l, { status: e.status }),
568
- /* @__PURE__ */ W(l, {
576
+ /* @__PURE__ */ G(l, { status: e.status }),
577
+ /* @__PURE__ */ G(l, {
569
578
  status: e.level,
570
579
  kind: "level"
571
580
  })
572
581
  ]
573
- }), /* @__PURE__ */ G("div", {
582
+ }), /* @__PURE__ */ K("div", {
574
583
  className: "mt-1 truncate text-xs text-text-muted",
575
584
  children: [
576
585
  e.slug,
@@ -580,177 +589,177 @@ function Oe() {
580
589
  o(e.estimatedMinutes)
581
590
  ]
582
591
  })]
583
- }), C === e.id ? /* @__PURE__ */ W(Te, { courseId: e.id }) : null] }, e.id))
592
+ }), w === e.id ? /* @__PURE__ */ G(De, { courseId: e.id }) : null] }, e.id))
584
593
  })
585
594
  ]
586
595
  });
587
596
  }
588
- function ke() {
589
- let { data: e, loading: t, error: n, refetch: r } = ee({}), [a, { loading: o }] = x(), [s] = ne(), [m, h] = M(!1), [g, _] = M(null), [v, y] = M(null), [b, S] = M(""), [C, w] = M(""), [T, E] = M(""), [te, D] = M(""), [O, k] = M("EASY"), [A, j] = M(""), [N, re] = M(""), [P, L] = M(""), R = e?.tecListProblems.items ?? [], z = () => {
590
- S(""), w(""), E(""), D(""), k("EASY"), j(""), re(""), L(""), h(!1);
597
+ function je() {
598
+ let { data: e, loading: t, error: n, refetch: r } = te({}), [a, { loading: o }] = S(), [s] = O(), [p, h] = P(!1), [g, _] = P(null), [v, y] = P(null), [b, x] = P(""), [C, w] = P(""), [T, E] = P(""), [ee, D] = P(""), [k, A] = P("EASY"), [j, M] = P(""), [N, ne] = P(""), [re, F] = P(""), R = e?.tecListProblems.items ?? [], z = () => {
599
+ x(""), w(""), E(""), D(""), A("EASY"), M(""), ne(""), F(""), h(!1);
591
600
  }, B = async () => {
592
601
  let e = b.trim();
593
- if (!e) return p.error("Title is required");
594
- let t = _e(C || e);
595
- if (!t) return p.error("A valid slug is required");
602
+ if (!e) return m.error("Title is required");
603
+ let t = ye(C || e);
604
+ if (!t) return m.error("A valid slug is required");
596
605
  (await a({ variables: { input: {
597
606
  title: e,
598
607
  slug: t,
599
608
  statement: T.trim() || void 0,
600
- topic: te.trim() || void 0,
601
- difficulty: O,
602
- points: ye(A),
603
- languages: ve(N),
604
- starterCode: P.trim() || void 0
605
- } } })).data?.tecCreateProblem && (p.success("Problem created", `"${e}" saved as a draft.`), z(), await r());
609
+ topic: ee.trim() || void 0,
610
+ difficulty: k,
611
+ points: xe(j),
612
+ languages: be(N),
613
+ starterCode: re.trim() || void 0
614
+ } } })).data?.tecCreateProblem && (m.success("Problem created", `"${e}" saved as a draft.`), z(), await r());
606
615
  }, V = async (e) => {
607
616
  _(e);
608
617
  try {
609
- (await s({ variables: { id: e } })).data?.tecPublishProblem && (p.success("Problem published"), await r());
618
+ (await s({ variables: { id: e } })).data?.tecPublishProblem && (m.success("Problem published"), await r());
610
619
  } finally {
611
620
  _(null);
612
621
  }
613
622
  };
614
- return /* @__PURE__ */ G("div", {
623
+ return /* @__PURE__ */ K("div", {
615
624
  className: "space-y-4",
616
625
  children: [
617
- /* @__PURE__ */ W(Ce, {
626
+ /* @__PURE__ */ G(Te, {
618
627
  summary: `${R.length} problem${R.length === 1 ? "" : "s"}`,
619
628
  actionLabel: "New problem",
620
- open: m,
629
+ open: p,
621
630
  onToggle: () => h((e) => !e)
622
631
  }),
623
- m ? /* @__PURE__ */ G(Se, {
632
+ p ? /* @__PURE__ */ K(we, {
624
633
  title: "New problem",
625
634
  description: "Define a coding challenge learners can solve and submit.",
626
- icon: F,
627
- footer: /* @__PURE__ */ G(U, { children: [/* @__PURE__ */ W(q, {
635
+ icon: I,
636
+ footer: /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ G(J, {
628
637
  variant: "outline",
629
638
  size: "sm",
630
639
  onClick: z,
631
640
  children: "Cancel"
632
- }), /* @__PURE__ */ W(q, {
641
+ }), /* @__PURE__ */ G(J, {
633
642
  size: "sm",
634
643
  onClick: B,
635
644
  disabled: o,
636
645
  children: o ? "Creating…" : "Create problem"
637
646
  })] }),
638
647
  children: [
639
- /* @__PURE__ */ W($, {
648
+ /* @__PURE__ */ G($, {
640
649
  label: "Title",
641
650
  required: !0,
642
- children: /* @__PURE__ */ W(Y, {
651
+ children: /* @__PURE__ */ G(X, {
643
652
  value: b,
644
- onChange: (e) => S(e.target.value),
653
+ onChange: (e) => x(e.target.value),
645
654
  placeholder: "Two Sum"
646
655
  })
647
656
  }),
648
- /* @__PURE__ */ W($, {
657
+ /* @__PURE__ */ G($, {
649
658
  label: "Slug",
650
659
  required: !0,
651
- children: /* @__PURE__ */ W(Y, {
660
+ children: /* @__PURE__ */ G(X, {
652
661
  value: C,
653
662
  onChange: (e) => w(e.target.value),
654
663
  placeholder: "auto from title if blank"
655
664
  })
656
665
  }),
657
- /* @__PURE__ */ W($, {
666
+ /* @__PURE__ */ G($, {
658
667
  label: "Topic",
659
- children: /* @__PURE__ */ W(Y, {
660
- value: te,
668
+ children: /* @__PURE__ */ G(X, {
669
+ value: ee,
661
670
  onChange: (e) => D(e.target.value),
662
671
  placeholder: "Arrays"
663
672
  })
664
673
  }),
665
- /* @__PURE__ */ W($, {
674
+ /* @__PURE__ */ G($, {
666
675
  label: "Difficulty",
667
- children: /* @__PURE__ */ G(X, {
668
- value: O,
669
- onValueChange: (e) => k(e),
670
- children: [/* @__PURE__ */ W(Z, { children: /* @__PURE__ */ W(le, {}) }), /* @__PURE__ */ W(se, { children: ge.map((e) => /* @__PURE__ */ W(ce, {
676
+ children: /* @__PURE__ */ K(se, {
677
+ value: k,
678
+ onValueChange: (e) => A(e),
679
+ children: [/* @__PURE__ */ G(Z, { children: /* @__PURE__ */ G(ue, {}) }), /* @__PURE__ */ G(ce, { children: ve.map((e) => /* @__PURE__ */ G(le, {
671
680
  value: e,
672
681
  children: c(e)
673
682
  }, e)) })]
674
683
  })
675
684
  }),
676
- /* @__PURE__ */ W($, {
685
+ /* @__PURE__ */ G($, {
677
686
  label: "Points",
678
- children: /* @__PURE__ */ W(Y, {
687
+ children: /* @__PURE__ */ G(X, {
679
688
  type: "number",
680
689
  min: 0,
681
- value: A,
682
- onChange: (e) => j(e.target.value),
690
+ value: j,
691
+ onChange: (e) => M(e.target.value),
683
692
  placeholder: "100"
684
693
  })
685
694
  }),
686
- /* @__PURE__ */ W($, {
695
+ /* @__PURE__ */ G($, {
687
696
  label: "Languages (comma-separated)",
688
- children: /* @__PURE__ */ W(Y, {
697
+ children: /* @__PURE__ */ G(X, {
689
698
  value: N,
690
- onChange: (e) => re(e.target.value),
699
+ onChange: (e) => ne(e.target.value),
691
700
  placeholder: "python, typescript"
692
701
  })
693
702
  }),
694
- /* @__PURE__ */ W($, {
703
+ /* @__PURE__ */ G($, {
695
704
  label: "Statement",
696
705
  className: "sm:col-span-2",
697
- children: /* @__PURE__ */ W(fe, {
706
+ children: /* @__PURE__ */ G(pe, {
698
707
  value: T,
699
708
  onChange: (e) => E(e.target.value),
700
709
  placeholder: "Describe the problem and constraints."
701
710
  })
702
711
  }),
703
- /* @__PURE__ */ W($, {
712
+ /* @__PURE__ */ G($, {
704
713
  label: "Starter code",
705
714
  className: "sm:col-span-2",
706
- children: /* @__PURE__ */ W(fe, {
707
- value: P,
708
- onChange: (e) => L(e.target.value),
715
+ children: /* @__PURE__ */ G(pe, {
716
+ value: re,
717
+ onChange: (e) => F(e.target.value),
709
718
  className: "font-mono",
710
719
  placeholder: "def solve(nums, target):\\n pass"
711
720
  })
712
721
  })
713
722
  ]
714
723
  }) : null,
715
- t && !R.length ? /* @__PURE__ */ W(f, { count: 4 }) : n ? /* @__PURE__ */ W(d, {
724
+ t && !R.length ? /* @__PURE__ */ G(f, { count: 4 }) : n ? /* @__PURE__ */ G(d, {
716
725
  title: "Couldn't load problems",
717
726
  error: n
718
- }) : R.length === 0 ? /* @__PURE__ */ W(u, {
719
- icon: /* @__PURE__ */ W(F, { size: 26 }),
727
+ }) : R.length === 0 ? /* @__PURE__ */ G(u, {
728
+ icon: /* @__PURE__ */ G(I, { size: 26 }),
720
729
  title: "No problems yet",
721
730
  description: "Create your first coding problem with the button above. TechnoSpam is pre-launch."
722
- }) : /* @__PURE__ */ W("div", {
731
+ }) : /* @__PURE__ */ G("div", {
723
732
  className: "space-y-3",
724
- children: R.map((e) => /* @__PURE__ */ G("div", { children: [/* @__PURE__ */ G(we, {
725
- leading: /* @__PURE__ */ W(xe, {
733
+ children: R.map((e) => /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ K(Ee, {
734
+ leading: /* @__PURE__ */ G(Ce, {
726
735
  seed: `${e.topic ?? ""} ${e.title}`,
727
736
  icon: i(e.topic ?? e.title)
728
737
  }),
729
- actions: /* @__PURE__ */ G(U, { children: [/* @__PURE__ */ G(q, {
738
+ actions: /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ K(J, {
730
739
  size: "sm",
731
740
  variant: "outline",
732
741
  onClick: () => y(v === e.id ? null : e.id),
733
- children: [/* @__PURE__ */ W(I, { size: 15 }), " Grade"]
734
- }), e.status === "DRAFT" ? /* @__PURE__ */ G(q, {
742
+ children: [/* @__PURE__ */ G(L, { size: 15 }), " Grade"]
743
+ }), e.status === "DRAFT" ? /* @__PURE__ */ K(J, {
735
744
  size: "sm",
736
745
  onClick: () => V(e.id),
737
746
  disabled: g === e.id,
738
- children: [/* @__PURE__ */ W(ie, { size: 15 }), " Publish"]
747
+ children: [/* @__PURE__ */ G(ie, { size: 15 }), " Publish"]
739
748
  }) : null] }),
740
- children: [/* @__PURE__ */ G("div", {
749
+ children: [/* @__PURE__ */ K("div", {
741
750
  className: "flex flex-wrap items-center gap-2",
742
751
  children: [
743
- /* @__PURE__ */ W("span", {
752
+ /* @__PURE__ */ G("span", {
744
753
  className: "truncate text-sm font-semibold text-text-primary",
745
754
  children: e.title
746
755
  }),
747
- /* @__PURE__ */ W(l, { status: e.status }),
748
- /* @__PURE__ */ W(l, {
756
+ /* @__PURE__ */ G(l, { status: e.status }),
757
+ /* @__PURE__ */ G(l, {
749
758
  status: e.difficulty,
750
759
  kind: "level"
751
760
  })
752
761
  ]
753
- }), /* @__PURE__ */ G("div", {
762
+ }), /* @__PURE__ */ K("div", {
754
763
  className: "mt-1 truncate text-xs text-text-muted",
755
764
  children: [
756
765
  e.slug,
@@ -763,209 +772,209 @@ function ke() {
763
772
  e.languages.length ? e.languages.join(", ") : "No languages"
764
773
  ]
765
774
  })]
766
- }), v === e.id ? /* @__PURE__ */ W(Ee, { problemId: e.id }) : null] }, e.id))
775
+ }), v === e.id ? /* @__PURE__ */ G(Oe, { problemId: e.id }) : null] }, e.id))
767
776
  })
768
777
  ]
769
778
  });
770
779
  }
771
- function Ae() {
772
- let { data: e, loading: t, error: n, refetch: r } = C({}), [o, { loading: c }] = y(), [m] = E(), [h] = O(), [_] = k(), [v] = g(), [b, x] = M(!1), [S, w] = M(null), [T, ee] = M(null), [te, ne] = M(""), [D, A] = M(""), [j, N] = M(""), [P, F] = M(""), [L, z] = M(""), [B, ae] = M(""), [oe, K] = M(""), [J, X] = M(""), [se, ce] = M(""), Z = e?.tecListHackathons.items ?? [], le = () => {
773
- ne(""), A(""), N(""), F(""), z(""), ae(""), K(""), X(""), ce(""), x(!1);
774
- }, ue = async () => {
775
- let e = te.trim();
776
- if (!e) return p.error("Title is required");
777
- let t = _e(D || e);
778
- if (!t) return p.error("A valid slug is required");
779
- let n = be(L), i = be(B);
780
- if (!n || !i) return p.error("Start and end date/time are required");
781
- if (new Date(i) <= new Date(n)) return p.error("End must be after the start");
780
+ function Me() {
781
+ let { data: e, loading: t, error: n, refetch: r } = w({}), [o, { loading: c }] = b(), [h] = ee(), [g] = A(), [v] = j(), [y] = _(), [x, S] = P(!1), [C, T] = P(null), [E, te] = P(null), [D, O] = P(""), [k, M] = P(""), [N, ne] = P(""), [F, I] = P(""), [R, B] = P(""), [V, ae] = P(""), [oe, q] = P(""), [Y, se] = P(""), [ce, le] = P([]), Z = e?.tecListHackathons.items ?? [], ue = () => {
782
+ O(""), M(""), ne(""), I(""), B(""), ae(""), q(""), se(""), le([]), S(!1);
783
+ }, de = async () => {
784
+ let e = D.trim();
785
+ if (!e) return m.error("Title is required");
786
+ let t = ye(k || e);
787
+ if (!t) return m.error("A valid slug is required");
788
+ let n = Se(R), i = Se(V);
789
+ if (!n || !i) return m.error("Start and end date/time are required");
790
+ if (new Date(i) <= new Date(n)) return m.error("End must be after the start");
782
791
  (await o({ variables: { input: {
783
792
  title: e,
784
793
  slug: t,
785
- theme: j.trim() || void 0,
786
- description: P.trim() || void 0,
794
+ theme: N.trim() || void 0,
795
+ description: F.trim() || void 0,
787
796
  startAt: n,
788
797
  endAt: i,
789
- prizePool: ye(oe),
790
- maxTeamSize: ye(J),
791
- tags: ve(se)
792
- } } })).data?.tecCreateHackathon && (p.success("Hackathon created", `"${e}" saved as a draft.`), le(), await r());
793
- }, de = async (e) => {
794
- w(e);
798
+ prizePool: xe(oe),
799
+ maxTeamSize: xe(Y),
800
+ tags: ce
801
+ } } })).data?.tecCreateHackathon && (m.success("Hackathon created", `"${e}" saved as a draft.`), ue(), await r());
802
+ }, fe = async (e) => {
803
+ T(e);
795
804
  try {
796
- (await m({ variables: { id: e } })).data?.tecOpenRegistration && (p.success("Registration open", "Teams can now register."), await r());
805
+ (await h({ variables: { id: e } })).data?.tecOpenRegistration && (m.success("Registration open", "Teams can now register."), await r());
797
806
  } finally {
798
- w(null);
807
+ T(null);
799
808
  }
800
809
  }, Q = async (e, t, n) => {
801
- w(e);
810
+ T(e);
802
811
  try {
803
- (await t({ variables: { id: e } })).data && (p.success(n), await r());
812
+ (await t({ variables: { id: e } })).data && (m.success(n), await r());
804
813
  } finally {
805
- w(null);
814
+ T(null);
806
815
  }
807
816
  };
808
- return /* @__PURE__ */ G("div", {
817
+ return /* @__PURE__ */ K("div", {
809
818
  className: "space-y-4",
810
819
  children: [
811
- /* @__PURE__ */ W(Ce, {
820
+ /* @__PURE__ */ G(Te, {
812
821
  summary: `${Z.length} hackathon${Z.length === 1 ? "" : "s"}`,
813
822
  actionLabel: "New hackathon",
814
- open: b,
815
- onToggle: () => x((e) => !e)
823
+ open: x,
824
+ onToggle: () => S((e) => !e)
816
825
  }),
817
- b ? /* @__PURE__ */ G(Se, {
826
+ x ? /* @__PURE__ */ K(we, {
818
827
  title: "New hackathon",
819
828
  description: "Set up an event, open registration, then run judging to completion.",
820
- icon: V,
821
- footer: /* @__PURE__ */ G(U, { children: [/* @__PURE__ */ W(q, {
829
+ icon: H,
830
+ footer: /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ G(J, {
822
831
  variant: "outline",
823
832
  size: "sm",
824
- onClick: le,
833
+ onClick: ue,
825
834
  children: "Cancel"
826
- }), /* @__PURE__ */ W(q, {
835
+ }), /* @__PURE__ */ G(J, {
827
836
  size: "sm",
828
- onClick: ue,
837
+ onClick: de,
829
838
  disabled: c,
830
839
  children: c ? "Creating…" : "Create hackathon"
831
840
  })] }),
832
841
  children: [
833
- /* @__PURE__ */ W($, {
842
+ /* @__PURE__ */ G($, {
834
843
  label: "Title",
835
844
  required: !0,
836
- children: /* @__PURE__ */ W(Y, {
837
- value: te,
838
- onChange: (e) => ne(e.target.value),
845
+ children: /* @__PURE__ */ G(X, {
846
+ value: D,
847
+ onChange: (e) => O(e.target.value),
839
848
  placeholder: "Build Days 2026"
840
849
  })
841
850
  }),
842
- /* @__PURE__ */ W($, {
851
+ /* @__PURE__ */ G($, {
843
852
  label: "Slug",
844
853
  required: !0,
845
- children: /* @__PURE__ */ W(Y, {
846
- value: D,
847
- onChange: (e) => A(e.target.value),
854
+ children: /* @__PURE__ */ G(X, {
855
+ value: k,
856
+ onChange: (e) => M(e.target.value),
848
857
  placeholder: "auto from title if blank"
849
858
  })
850
859
  }),
851
- /* @__PURE__ */ W($, {
860
+ /* @__PURE__ */ G($, {
852
861
  label: "Theme",
853
- children: /* @__PURE__ */ W(Y, {
854
- value: j,
855
- onChange: (e) => N(e.target.value),
862
+ children: /* @__PURE__ */ G(X, {
863
+ value: N,
864
+ onChange: (e) => ne(e.target.value),
856
865
  placeholder: "AI for good"
857
866
  })
858
867
  }),
859
- /* @__PURE__ */ W($, {
860
- label: "Tags (comma-separated)",
861
- children: /* @__PURE__ */ W(Y, {
862
- value: se,
863
- onChange: (e) => ce(e.target.value),
868
+ /* @__PURE__ */ G($, {
869
+ label: "Tags",
870
+ children: /* @__PURE__ */ G(p, {
871
+ value: ce,
872
+ onChange: le,
864
873
  placeholder: "ai, web"
865
874
  })
866
875
  }),
867
- /* @__PURE__ */ W($, {
876
+ /* @__PURE__ */ G($, {
868
877
  label: "Starts",
869
878
  required: !0,
870
- children: /* @__PURE__ */ W(Y, {
879
+ children: /* @__PURE__ */ G(X, {
871
880
  type: "datetime-local",
872
- value: L,
873
- onChange: (e) => z(e.target.value)
881
+ value: R,
882
+ onChange: (e) => B(e.target.value)
874
883
  })
875
884
  }),
876
- /* @__PURE__ */ W($, {
885
+ /* @__PURE__ */ G($, {
877
886
  label: "Ends",
878
887
  required: !0,
879
- children: /* @__PURE__ */ W(Y, {
888
+ children: /* @__PURE__ */ G(X, {
880
889
  type: "datetime-local",
881
- value: B,
890
+ value: V,
882
891
  onChange: (e) => ae(e.target.value)
883
892
  })
884
893
  }),
885
- /* @__PURE__ */ W($, {
894
+ /* @__PURE__ */ G($, {
886
895
  label: "Prize pool",
887
- children: /* @__PURE__ */ W(Y, {
896
+ children: /* @__PURE__ */ G(X, {
888
897
  type: "number",
889
898
  min: 0,
890
899
  value: oe,
891
- onChange: (e) => K(e.target.value),
900
+ onChange: (e) => q(e.target.value),
892
901
  placeholder: "5000"
893
902
  })
894
903
  }),
895
- /* @__PURE__ */ W($, {
904
+ /* @__PURE__ */ G($, {
896
905
  label: "Max team size",
897
- children: /* @__PURE__ */ W(Y, {
906
+ children: /* @__PURE__ */ G(X, {
898
907
  type: "number",
899
908
  min: 1,
900
- value: J,
901
- onChange: (e) => X(e.target.value),
909
+ value: Y,
910
+ onChange: (e) => se(e.target.value),
902
911
  placeholder: "4"
903
912
  })
904
913
  }),
905
- /* @__PURE__ */ W($, {
914
+ /* @__PURE__ */ G($, {
906
915
  label: "Description",
907
916
  className: "sm:col-span-2",
908
- children: /* @__PURE__ */ W(fe, {
909
- value: P,
910
- onChange: (e) => F(e.target.value),
917
+ children: /* @__PURE__ */ G(pe, {
918
+ value: F,
919
+ onChange: (e) => I(e.target.value),
911
920
  placeholder: "What the hackathon is about and how judging works."
912
921
  })
913
922
  })
914
923
  ]
915
924
  }) : null,
916
- t && !Z.length ? /* @__PURE__ */ W(f, { count: 4 }) : n ? /* @__PURE__ */ W(d, {
925
+ t && !Z.length ? /* @__PURE__ */ G(f, { count: 4 }) : n ? /* @__PURE__ */ G(d, {
917
926
  title: "Couldn't load hackathons",
918
927
  error: n
919
- }) : Z.length === 0 ? /* @__PURE__ */ W(u, {
920
- icon: /* @__PURE__ */ W(V, { size: 26 }),
928
+ }) : Z.length === 0 ? /* @__PURE__ */ G(u, {
929
+ icon: /* @__PURE__ */ G(H, { size: 26 }),
921
930
  title: "No hackathons yet",
922
931
  description: "Create your first hackathon with the button above. TechnoSpam is pre-launch."
923
- }) : /* @__PURE__ */ W("div", {
932
+ }) : /* @__PURE__ */ G("div", {
924
933
  className: "space-y-3",
925
- children: Z.map((e) => /* @__PURE__ */ G("div", { children: [/* @__PURE__ */ G(we, {
926
- leading: /* @__PURE__ */ W(xe, {
934
+ children: Z.map((e) => /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ K(Ee, {
935
+ leading: /* @__PURE__ */ G(Ce, {
927
936
  seed: e.title,
928
- icon: i(e.title, V)
937
+ icon: i(e.title, H)
929
938
  }),
930
- actions: /* @__PURE__ */ G(U, { children: [
931
- /* @__PURE__ */ G(q, {
939
+ actions: /* @__PURE__ */ K(W, { children: [
940
+ /* @__PURE__ */ K(J, {
932
941
  size: "sm",
933
942
  variant: "outline",
934
- onClick: () => ee(T === e.id ? null : e.id),
935
- children: [/* @__PURE__ */ W(H, { size: 15 }), " Teams"]
943
+ onClick: () => te(E === e.id ? null : e.id),
944
+ children: [/* @__PURE__ */ G(U, { size: 15 }), " Teams"]
936
945
  }),
937
- e.status === "DRAFT" ? /* @__PURE__ */ G(q, {
946
+ e.status === "DRAFT" ? /* @__PURE__ */ K(J, {
938
947
  size: "sm",
939
- onClick: () => de(e.id),
940
- disabled: S === e.id,
941
- children: [/* @__PURE__ */ W(ie, { size: 15 }), " Open registration"]
948
+ onClick: () => fe(e.id),
949
+ disabled: C === e.id,
950
+ children: [/* @__PURE__ */ G(ie, { size: 15 }), " Open registration"]
942
951
  }) : null,
943
- e.status === "REGISTRATION_OPEN" ? /* @__PURE__ */ G(q, {
952
+ e.status === "REGISTRATION_OPEN" ? /* @__PURE__ */ K(J, {
944
953
  size: "sm",
945
- onClick: () => Q(e.id, h, "Hackathon started"),
946
- disabled: S === e.id,
947
- children: [/* @__PURE__ */ W(R, { size: 15 }), " Start"]
954
+ onClick: () => Q(e.id, g, "Hackathon started"),
955
+ disabled: C === e.id,
956
+ children: [/* @__PURE__ */ G(z, { size: 15 }), " Start"]
948
957
  }) : null,
949
- e.status === "IN_PROGRESS" ? /* @__PURE__ */ G(q, {
958
+ e.status === "IN_PROGRESS" ? /* @__PURE__ */ K(J, {
950
959
  size: "sm",
951
- onClick: () => Q(e.id, _, "Judging started"),
952
- disabled: S === e.id,
953
- children: [/* @__PURE__ */ W(I, { size: 15 }), " Start judging"]
960
+ onClick: () => Q(e.id, v, "Judging started"),
961
+ disabled: C === e.id,
962
+ children: [/* @__PURE__ */ G(L, { size: 15 }), " Start judging"]
954
963
  }) : null,
955
- e.status === "JUDGING" ? /* @__PURE__ */ G(q, {
964
+ e.status === "JUDGING" ? /* @__PURE__ */ K(J, {
956
965
  size: "sm",
957
- onClick: () => Q(e.id, v, "Hackathon completed"),
958
- disabled: S === e.id,
959
- children: [/* @__PURE__ */ W(re, { size: 15 }), " Complete"]
966
+ onClick: () => Q(e.id, y, "Hackathon completed"),
967
+ disabled: C === e.id,
968
+ children: [/* @__PURE__ */ G(re, { size: 15 }), " Complete"]
960
969
  }) : null
961
970
  ] }),
962
- children: [/* @__PURE__ */ G("div", {
971
+ children: [/* @__PURE__ */ K("div", {
963
972
  className: "flex flex-wrap items-center gap-2",
964
- children: [/* @__PURE__ */ W("span", {
973
+ children: [/* @__PURE__ */ G("span", {
965
974
  className: "truncate text-sm font-semibold text-text-primary",
966
975
  children: e.title
967
- }), /* @__PURE__ */ W(l, { status: e.status })]
968
- }), /* @__PURE__ */ G("div", {
976
+ }), /* @__PURE__ */ G(l, { status: e.status })]
977
+ }), /* @__PURE__ */ K("div", {
969
978
  className: "mt-1 truncate text-xs text-text-muted",
970
979
  children: [
971
980
  e.slug,
@@ -976,57 +985,57 @@ function Ae() {
976
985
  e.prizePool ? ` · ${s(e.prizePool, e.currency)} prize` : ""
977
986
  ]
978
987
  })]
979
- }), T === e.id ? /* @__PURE__ */ W(De, { hackathon: e }) : null] }, e.id))
988
+ }), E === e.id ? /* @__PURE__ */ G(ke, { hackathon: e }) : null] }, e.id))
980
989
  })
981
990
  ]
982
991
  });
983
992
  }
984
- function je() {
985
- let { data: e, loading: t, error: n, refetch: r } = T({}), [a] = m(), [o, c] = M(null), h = e?.tecListMentors.items ?? [], g = h.filter((e) => e.status === "PENDING").length, _ = async (e) => {
993
+ function Ne() {
994
+ let { data: e, loading: t, error: n, refetch: r } = E({}), [a] = h(), [o, c] = P(null), p = e?.tecListMentors.items ?? [], g = p.filter((e) => e.status === "PENDING").length, _ = async (e) => {
986
995
  c(e);
987
996
  try {
988
- (await a({ variables: { id: e } })).data?.tecApproveMentor && (p.success("Mentor approved", "They can now accept mentees."), await r());
997
+ (await a({ variables: { id: e } })).data?.tecApproveMentor && (m.success("Mentor approved", "They can now accept mentees."), await r());
989
998
  } finally {
990
999
  c(null);
991
1000
  }
992
1001
  };
993
- return /* @__PURE__ */ G("div", {
1002
+ return /* @__PURE__ */ K("div", {
994
1003
  className: "space-y-4",
995
- children: [/* @__PURE__ */ W(Ce, { summary: `${h.length} mentor${h.length === 1 ? "" : "s"}${g ? ` · ${g} pending approval` : ""}` }), t && !h.length ? /* @__PURE__ */ W(f, { count: 4 }) : n ? /* @__PURE__ */ W(d, {
1004
+ children: [/* @__PURE__ */ G(Te, { summary: `${p.length} mentor${p.length === 1 ? "" : "s"}${g ? ` · ${g} pending approval` : ""}` }), t && !p.length ? /* @__PURE__ */ G(f, { count: 4 }) : n ? /* @__PURE__ */ G(d, {
996
1005
  title: "Couldn't load mentors",
997
1006
  error: n
998
- }) : h.length === 0 ? /* @__PURE__ */ W(u, {
999
- icon: /* @__PURE__ */ W(H, { size: 26 }),
1007
+ }) : p.length === 0 ? /* @__PURE__ */ G(u, {
1008
+ icon: /* @__PURE__ */ G(U, { size: 26 }),
1000
1009
  title: "No mentors yet",
1001
1010
  description: "Mentor applications will appear here for review. TechnoSpam is pre-launch."
1002
- }) : /* @__PURE__ */ W("div", {
1011
+ }) : /* @__PURE__ */ G("div", {
1003
1012
  className: "space-y-3",
1004
- children: h.map((e) => /* @__PURE__ */ G(we, {
1005
- leading: /* @__PURE__ */ W(xe, {
1013
+ children: p.map((e) => /* @__PURE__ */ K(Ee, {
1014
+ leading: /* @__PURE__ */ G(Ce, {
1006
1015
  seed: e.headline,
1007
- icon: i(e.expertise[0] ?? e.headline, H)
1016
+ icon: i(e.expertise[0] ?? e.headline, U)
1008
1017
  }),
1009
- actions: e.status === "PENDING" ? /* @__PURE__ */ G(q, {
1018
+ actions: e.status === "PENDING" ? /* @__PURE__ */ K(J, {
1010
1019
  size: "sm",
1011
1020
  onClick: () => _(e.id),
1012
1021
  disabled: o === e.id,
1013
- children: [/* @__PURE__ */ W(ae, { size: 15 }), " Approve"]
1022
+ children: [/* @__PURE__ */ G(ae, { size: 15 }), " Approve"]
1014
1023
  }) : void 0,
1015
- children: [/* @__PURE__ */ G("div", {
1024
+ children: [/* @__PURE__ */ K("div", {
1016
1025
  className: "flex flex-wrap items-center gap-2",
1017
1026
  children: [
1018
- /* @__PURE__ */ W("span", {
1027
+ /* @__PURE__ */ G("span", {
1019
1028
  className: "truncate text-sm font-semibold text-text-primary",
1020
1029
  children: e.headline
1021
1030
  }),
1022
- /* @__PURE__ */ W(l, { status: e.status }),
1023
- e.isAcceptingMentees ? /* @__PURE__ */ W(K, {
1031
+ /* @__PURE__ */ G(l, { status: e.status }),
1032
+ e.isAcceptingMentees ? /* @__PURE__ */ G(q, {
1024
1033
  variant: "secondary",
1025
1034
  className: "text-[11px]",
1026
1035
  children: "Accepting mentees"
1027
1036
  }) : null
1028
1037
  ]
1029
- }), /* @__PURE__ */ G("div", {
1038
+ }), /* @__PURE__ */ K("div", {
1030
1039
  className: "mt-1 truncate text-xs text-text-muted",
1031
1040
  children: [
1032
1041
  e.expertise.length ? e.expertise.slice(0, 4).join(", ") : "No expertise listed",
@@ -1042,22 +1051,22 @@ function je() {
1042
1051
  })]
1043
1052
  });
1044
1053
  }
1045
- function Me() {
1046
- let [t, r] = M("courses"), { currentUser: i } = e(), a = (i?.role ?? "").toLowerCase();
1047
- return /* @__PURE__ */ G(n, {
1054
+ function Pe() {
1055
+ let [t, r] = P("courses"), { currentUser: i } = e(), a = (i?.role ?? "").toLowerCase();
1056
+ return /* @__PURE__ */ K(n, {
1048
1057
  hero: !0,
1049
1058
  title: "Authoring Console",
1050
1059
  description: "Create and manage TechnoSpam content — courses, problems, hackathons, and mentor applications.",
1051
1060
  children: [
1052
- a.includes("admin") || a.includes("owner") || a.includes("instructor") ? null : /* @__PURE__ */ G(J, {
1061
+ a.includes("admin") || a.includes("owner") || a.includes("instructor") ? null : /* @__PURE__ */ K(Y, {
1053
1062
  className: "mb-5 flex items-start gap-3 border-status-warning-border p-4",
1054
- children: [/* @__PURE__ */ W(B, {
1063
+ children: [/* @__PURE__ */ G(V, {
1055
1064
  size: 18,
1056
1065
  className: "mt-0.5 shrink-0 text-status-warning-text"
1057
- }), /* @__PURE__ */ G("div", {
1066
+ }), /* @__PURE__ */ K("div", {
1058
1067
  className: "text-sm text-text-secondary",
1059
1068
  children: [
1060
- /* @__PURE__ */ W("span", {
1069
+ /* @__PURE__ */ G("span", {
1061
1070
  className: "font-medium text-text-primary",
1062
1071
  children: "Authoring is limited to workspace admins."
1063
1072
  }),
@@ -1066,36 +1075,36 @@ function Me() {
1066
1075
  ]
1067
1076
  })]
1068
1077
  }),
1069
- /* @__PURE__ */ W(ue, {
1078
+ /* @__PURE__ */ G(de, {
1070
1079
  value: t,
1071
1080
  onValueChange: (e) => r(e),
1072
- children: /* @__PURE__ */ G(de, {
1081
+ children: /* @__PURE__ */ K(fe, {
1073
1082
  className: "mb-5",
1074
1083
  children: [
1075
- /* @__PURE__ */ G(Q, {
1084
+ /* @__PURE__ */ K(Q, {
1076
1085
  value: "courses",
1077
- children: [/* @__PURE__ */ W(P, { size: 15 }), " Courses"]
1086
+ children: [/* @__PURE__ */ G(F, { size: 15 }), " Courses"]
1078
1087
  }),
1079
- /* @__PURE__ */ G(Q, {
1088
+ /* @__PURE__ */ K(Q, {
1080
1089
  value: "problems",
1081
- children: [/* @__PURE__ */ W(F, { size: 15 }), " Problems"]
1090
+ children: [/* @__PURE__ */ G(I, { size: 15 }), " Problems"]
1082
1091
  }),
1083
- /* @__PURE__ */ G(Q, {
1092
+ /* @__PURE__ */ K(Q, {
1084
1093
  value: "hackathons",
1085
- children: [/* @__PURE__ */ W(V, { size: 15 }), " Hackathons"]
1094
+ children: [/* @__PURE__ */ G(H, { size: 15 }), " Hackathons"]
1086
1095
  }),
1087
- /* @__PURE__ */ G(Q, {
1096
+ /* @__PURE__ */ K(Q, {
1088
1097
  value: "mentors",
1089
- children: [/* @__PURE__ */ W(H, { size: 15 }), " Mentors"]
1098
+ children: [/* @__PURE__ */ G(U, { size: 15 }), " Mentors"]
1090
1099
  })
1091
1100
  ]
1092
1101
  })
1093
1102
  }),
1094
- W(t === "courses" ? Oe : t === "problems" ? ke : t === "hackathons" ? Ae : je, {})
1103
+ G(t === "courses" ? Ae : t === "problems" ? je : t === "hackathons" ? Me : Ne, {})
1095
1104
  ]
1096
1105
  });
1097
1106
  }
1098
1107
  //#endregion
1099
- export { Me as AdminAdminDashboardPagePage };
1108
+ export { Pe as AdminAdminDashboardPagePage };
1100
1109
 
1101
1110
  //# sourceMappingURL=AdminAdminDashboardPagePage.js.map