@burdenoff/microfe-atheletebridge 2026.1031.3 → 2026.1102.1

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 (68) hide show
  1. package/dist/atheletebridge/AthleteBridgeRoot.d.ts.map +1 -1
  2. package/dist/atheletebridge/AthleteBridgeRoot.js +63 -47
  3. package/dist/atheletebridge/AthleteBridgeRoot.js.map +1 -1
  4. package/dist/atheletebridge/AthleteBridgeRoutes.d.ts.map +1 -1
  5. package/dist/atheletebridge/AthleteBridgeRoutes.js +62 -6
  6. package/dist/atheletebridge/AthleteBridgeRoutes.js.map +1 -1
  7. package/dist/atheletebridge/components/StatusBadge.d.ts.map +1 -1
  8. package/dist/atheletebridge/components/StatusBadge.js +13 -1
  9. package/dist/atheletebridge/components/StatusBadge.js.map +1 -1
  10. package/dist/atheletebridge/components/registration/PaymentSummaryPanel.d.ts +6 -0
  11. package/dist/atheletebridge/components/registration/PaymentSummaryPanel.d.ts.map +1 -0
  12. package/dist/atheletebridge/components/registration/PaymentSummaryPanel.js +104 -0
  13. package/dist/atheletebridge/components/registration/PaymentSummaryPanel.js.map +1 -0
  14. package/dist/atheletebridge/components/registration/RegistrationEntryFields.d.ts +15 -0
  15. package/dist/atheletebridge/components/registration/RegistrationEntryFields.d.ts.map +1 -0
  16. package/dist/atheletebridge/components/registration/RegistrationEntryFields.js +236 -0
  17. package/dist/atheletebridge/components/registration/RegistrationEntryFields.js.map +1 -0
  18. package/dist/atheletebridge/components/registration/entryRules.d.ts +23 -0
  19. package/dist/atheletebridge/components/registration/entryRules.d.ts.map +1 -0
  20. package/dist/atheletebridge/components/registration/entryRules.js +29 -0
  21. package/dist/atheletebridge/components/registration/entryRules.js.map +1 -0
  22. package/dist/atheletebridge/hooks/useAthleteBridgeApi.d.ts +1 -0
  23. package/dist/atheletebridge/hooks/useAthleteBridgeApi.d.ts.map +1 -1
  24. package/dist/atheletebridge/hooks/useAthleteBridgeApi.js +1 -1
  25. package/dist/atheletebridge/hooks/useAthleteBridgeApi.js.map +1 -1
  26. package/dist/atheletebridge/hooks/useRegistrationApi.d.ts +54 -0
  27. package/dist/atheletebridge/hooks/useRegistrationApi.d.ts.map +1 -0
  28. package/dist/atheletebridge/hooks/useRegistrationApi.js +265 -0
  29. package/dist/atheletebridge/hooks/useRegistrationApi.js.map +1 -0
  30. package/dist/atheletebridge/pages/registrations/MyRegistrationsPage.d.ts +10 -0
  31. package/dist/atheletebridge/pages/registrations/MyRegistrationsPage.d.ts.map +1 -0
  32. package/dist/atheletebridge/pages/registrations/MyRegistrationsPage.js +89 -0
  33. package/dist/atheletebridge/pages/registrations/MyRegistrationsPage.js.map +1 -0
  34. package/dist/atheletebridge/pages/registrations/RecordRegistrationPage.d.ts +10 -0
  35. package/dist/atheletebridge/pages/registrations/RecordRegistrationPage.d.ts.map +1 -0
  36. package/dist/atheletebridge/pages/registrations/RecordRegistrationPage.js +94 -0
  37. package/dist/atheletebridge/pages/registrations/RecordRegistrationPage.js.map +1 -0
  38. package/dist/atheletebridge/pages/registrations/RegisterPage.d.ts +11 -0
  39. package/dist/atheletebridge/pages/registrations/RegisterPage.d.ts.map +1 -0
  40. package/dist/atheletebridge/pages/registrations/RegisterPage.js +160 -0
  41. package/dist/atheletebridge/pages/registrations/RegisterPage.js.map +1 -0
  42. package/dist/atheletebridge/pages/registrations/RegistrationFormBuilderPage.d.ts +10 -0
  43. package/dist/atheletebridge/pages/registrations/RegistrationFormBuilderPage.d.ts.map +1 -0
  44. package/dist/atheletebridge/pages/registrations/RegistrationFormBuilderPage.js +602 -0
  45. package/dist/atheletebridge/pages/registrations/RegistrationFormBuilderPage.js.map +1 -0
  46. package/dist/atheletebridge/pages/registrations/RegistrationFormDetailPage.d.ts +9 -0
  47. package/dist/atheletebridge/pages/registrations/RegistrationFormDetailPage.d.ts.map +1 -0
  48. package/dist/atheletebridge/pages/registrations/RegistrationFormDetailPage.js +317 -0
  49. package/dist/atheletebridge/pages/registrations/RegistrationFormDetailPage.js.map +1 -0
  50. package/dist/atheletebridge/pages/registrations/RegistrationFormsListPage.d.ts +9 -0
  51. package/dist/atheletebridge/pages/registrations/RegistrationFormsListPage.d.ts.map +1 -0
  52. package/dist/atheletebridge/pages/registrations/RegistrationFormsListPage.js +127 -0
  53. package/dist/atheletebridge/pages/registrations/RegistrationFormsListPage.js.map +1 -0
  54. package/dist/atheletebridge/pages/registrations/RegistrationSubmissionPage.d.ts +11 -0
  55. package/dist/atheletebridge/pages/registrations/RegistrationSubmissionPage.d.ts.map +1 -0
  56. package/dist/atheletebridge/pages/registrations/RegistrationSubmissionPage.js +411 -0
  57. package/dist/atheletebridge/pages/registrations/RegistrationSubmissionPage.js.map +1 -0
  58. package/dist/atheletebridge/types/registration.d.ts +220 -0
  59. package/dist/atheletebridge/types/registration.d.ts.map +1 -0
  60. package/dist/atheletebridge/utils/money.d.ts +22 -0
  61. package/dist/atheletebridge/utils/money.d.ts.map +1 -0
  62. package/dist/atheletebridge/utils/money.js +38 -0
  63. package/dist/atheletebridge/utils/money.js.map +1 -0
  64. package/dist/atheletebridge/utils/registration.d.ts +17 -0
  65. package/dist/atheletebridge/utils/registration.d.ts.map +1 -0
  66. package/dist/atheletebridge/utils/registration.js +25 -0
  67. package/dist/atheletebridge/utils/registration.js.map +1 -0
  68. package/package.json +1 -1
@@ -0,0 +1,160 @@
1
+ import { useAthleteBridge as e } from "../../context/AthleteBridgeContext.js";
2
+ import { PageLayout as t } from "../../components/PageLayout.js";
3
+ import { StatusBadge as n } from "../../components/StatusBadge.js";
4
+ import { formatDate as r } from "../../utils/formatters.js";
5
+ import { EmptyState as i } from "../../components/EmptyState.js";
6
+ import { ErrorState as a, LoadingState as o } from "../../components/LoadingState.js";
7
+ import { usePublicRegistrationForm as s, useSubmitRegistration as c } from "../../hooks/useRegistrationApi.js";
8
+ import { formatMoney as l } from "../../utils/money.js";
9
+ import { EMPTY_REGISTRATION_ENTRY as u, cleanAnswers as d, missingRequiredAnswer as f } from "../../components/registration/entryRules.js";
10
+ import { RegistrationEntryFields as p } from "../../components/registration/RegistrationEntryFields.js";
11
+ import { useState as m } from "react";
12
+ import { CheckCircle2 as h, ClipboardX as g, Loader2 as _, Send as v } from "lucide-react";
13
+ import { useParams as y } from "react-router";
14
+ import { jsx as b, jsxs as x } from "react/jsx-runtime";
15
+ //#region src/atheletebridge/pages/registrations/RegisterPage.tsx
16
+ function S() {
17
+ let { slug: S } = y(), { navigateTo: C } = e(), w = s(S), T = c(), [E, D] = m(u), [O, k] = m(null), [A, j] = m(null);
18
+ if (w.isLoading) return /* @__PURE__ */ b(t, {
19
+ title: "Registration",
20
+ children: /* @__PURE__ */ b(o, { label: "Loading registration form…" })
21
+ });
22
+ if (w.isError) return /* @__PURE__ */ b(t, {
23
+ title: "Registration",
24
+ children: /* @__PURE__ */ b(a, { onRetry: () => void w.refetch() })
25
+ });
26
+ if (!w.data || !S) return /* @__PURE__ */ b(t, {
27
+ title: "Registration",
28
+ children: /* @__PURE__ */ b(i, {
29
+ illustration: "empty-data",
30
+ icon: /* @__PURE__ */ b(g, { className: "h-10 w-10" }),
31
+ title: "This registration link is not available",
32
+ description: "The club may not have published it yet, or the link is incorrect. Check the link with the club."
33
+ })
34
+ });
35
+ let M = w.data;
36
+ if (A) return /* @__PURE__ */ b(t, {
37
+ title: M.title,
38
+ children: /* @__PURE__ */ x("div", {
39
+ className: "max-w-xl space-y-4 rounded-lg border border-border-seam bg-bg-surface p-6",
40
+ "data-testid": "registration-receipt",
41
+ children: [
42
+ /* @__PURE__ */ x("p", {
43
+ className: "flex items-center gap-2 text-lg font-semibold text-text-primary",
44
+ children: [/* @__PURE__ */ b(h, { className: "h-6 w-6 text-status-success-text" }), " Registration received"]
45
+ }),
46
+ /* @__PURE__ */ x("p", {
47
+ className: "text-sm text-text-secondary",
48
+ children: [
49
+ A.participantName,
50
+ " is registered for ",
51
+ A.formTitle,
52
+ ". The club will review it",
53
+ A.amountDue > 0 ? " and confirm payment details with you" : "",
54
+ "."
55
+ ]
56
+ }),
57
+ /* @__PURE__ */ x("div", {
58
+ className: "flex flex-wrap items-center gap-2 text-sm",
59
+ children: [
60
+ /* @__PURE__ */ b(n, { status: A.status }),
61
+ /* @__PURE__ */ b(n, { status: A.paymentStatus }),
62
+ A.amountDue > 0 && /* @__PURE__ */ x("span", {
63
+ className: "tabular-nums text-text-primary",
64
+ children: [l(A.amountOutstanding, A.currency), " due"]
65
+ })
66
+ ]
67
+ }),
68
+ /* @__PURE__ */ b("button", {
69
+ type: "button",
70
+ onClick: () => C("/my-registrations"),
71
+ className: "inline-flex items-center gap-1.5 rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text transition-colors hover:bg-action-primary-bg/90",
72
+ children: "View my registrations"
73
+ })
74
+ ]
75
+ })
76
+ });
77
+ let N = async (e) => {
78
+ e.preventDefault(), k(null);
79
+ let t = f(M.fields, E);
80
+ if (t) {
81
+ k(`Please answer "${t}".`);
82
+ return;
83
+ }
84
+ if (M.waiverText && !E.waiverAccepted) {
85
+ k("Please accept the waiver to register.");
86
+ return;
87
+ }
88
+ try {
89
+ j(await T.mutateAsync({
90
+ slug: S,
91
+ input: {
92
+ participantName: E.participantName.trim(),
93
+ contactName: E.contactName.trim() || void 0,
94
+ contactEmail: E.contactEmail.trim() || void 0,
95
+ contactPhone: E.contactPhone.trim() || void 0,
96
+ answers: d(E.answers),
97
+ selectedFeeIds: E.optionalFeeIds,
98
+ waiverAccepted: E.waiverAccepted
99
+ }
100
+ }));
101
+ } catch (e) {
102
+ k(e instanceof Error ? e.message : "Could not submit the registration.");
103
+ }
104
+ }, P = [
105
+ M.season,
106
+ M.closesAt ? `Closes ${r(M.closesAt)}` : null,
107
+ M.spotsRemaining == null ? null : `${M.spotsRemaining} places left`
108
+ ].filter(Boolean).join(" · ");
109
+ return /* @__PURE__ */ b(t, {
110
+ title: M.title,
111
+ description: P || void 0,
112
+ children: /* @__PURE__ */ x("div", {
113
+ className: "max-w-2xl space-y-6",
114
+ children: [M.description && /* @__PURE__ */ b("p", {
115
+ className: "whitespace-pre-line text-sm text-text-secondary",
116
+ children: M.description
117
+ }), M.isOpen ? /* @__PURE__ */ x("form", {
118
+ onSubmit: N,
119
+ className: "space-y-6",
120
+ children: [
121
+ /* @__PURE__ */ b(p, {
122
+ fields: M.fields,
123
+ fees: M.fees,
124
+ currency: M.currency,
125
+ waiverText: M.waiverText,
126
+ state: E,
127
+ onChange: D
128
+ }),
129
+ O && /* @__PURE__ */ b("p", {
130
+ role: "alert",
131
+ className: "text-sm text-status-error-text",
132
+ children: O
133
+ }),
134
+ /* @__PURE__ */ x("button", {
135
+ type: "submit",
136
+ disabled: T.isPending,
137
+ className: "inline-flex items-center gap-1.5 rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text transition-colors hover:bg-action-primary-bg/90 disabled:opacity-60",
138
+ children: [
139
+ T.isPending ? /* @__PURE__ */ b(_, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ b(v, { className: "h-4 w-4" }),
140
+ " ",
141
+ "Submit registration"
142
+ ]
143
+ })
144
+ ]
145
+ }) : /* @__PURE__ */ x("p", {
146
+ role: "status",
147
+ className: "rounded-lg border border-status-warning-border bg-status-warning-bg-subtle p-4 text-sm text-status-warning-text",
148
+ children: [
149
+ "This form is not accepting registrations right now",
150
+ M.opensAt && new Date(M.opensAt) > /* @__PURE__ */ new Date() ? ` — it opens ${r(M.opensAt)}` : "",
151
+ "."
152
+ ]
153
+ })]
154
+ })
155
+ });
156
+ }
157
+ //#endregion
158
+ export { S as RegisterPage };
159
+
160
+ //# sourceMappingURL=RegisterPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RegisterPage.js","names":[],"sources":["../../../../src/atheletebridge/pages/registrations/RegisterPage.tsx"],"sourcesContent":["/**\n * Family registration (share link)\n * @module atheletebridge/pages/registrations\n *\n * Opened from a club's share link (`/register/:slug`). Any signed-in user —\n * typically a parent who is not a member of the club's workspace — can fill\n * in a published form; the registration is filed with the club and tracked\n * under \"My registrations\" (BOFF-4135).\n */\n\nimport { useState } from 'react';\nimport { useParams } from 'react-router';\nimport { CheckCircle2, ClipboardX, Loader2, Send } from 'lucide-react';\nimport { PageLayout } from '../../components/PageLayout';\nimport { EmptyState } from '../../components/EmptyState';\nimport { LoadingState, ErrorState } from '../../components/LoadingState';\nimport { StatusBadge } from '../../components/StatusBadge';\nimport { RegistrationEntryFields } from '../../components/registration/RegistrationEntryFields';\nimport {\n EMPTY_REGISTRATION_ENTRY,\n type RegistrationEntryState,\n cleanAnswers,\n missingRequiredAnswer,\n} from '../../components/registration/entryRules';\nimport { useAthleteBridge } from '../../context/AthleteBridgeContext';\nimport { usePublicRegistrationForm, useSubmitRegistration } from '../../hooks/useRegistrationApi';\nimport { formatDate } from '../../utils/formatters';\nimport { formatMoney } from '../../utils/money';\nimport type { AthMyRegistration } from '../../types/registration';\n\nexport function RegisterPage() {\n const { slug } = useParams<{ slug: string }>();\n const { navigateTo } = useAthleteBridge();\n const form = usePublicRegistrationForm(slug);\n const submit = useSubmitRegistration();\n const [state, setState] = useState<RegistrationEntryState>(EMPTY_REGISTRATION_ENTRY);\n const [error, setError] = useState<string | null>(null);\n const [receipt, setReceipt] = useState<AthMyRegistration | null>(null);\n\n if (form.isLoading) {\n return (\n <PageLayout title=\"Registration\">\n <LoadingState label=\"Loading registration form…\" />\n </PageLayout>\n );\n }\n if (form.isError) {\n return (\n <PageLayout title=\"Registration\">\n <ErrorState onRetry={() => void form.refetch()} />\n </PageLayout>\n );\n }\n if (!form.data || !slug) {\n return (\n <PageLayout title=\"Registration\">\n <EmptyState\n illustration=\"empty-data\"\n icon={<ClipboardX className=\"h-10 w-10\" />}\n title=\"This registration link is not available\"\n description=\"The club may not have published it yet, or the link is incorrect. Check the link with the club.\"\n />\n </PageLayout>\n );\n }\n const data = form.data;\n\n if (receipt) {\n return (\n <PageLayout title={data.title}>\n <div\n className=\"max-w-xl space-y-4 rounded-lg border border-border-seam bg-bg-surface p-6\"\n data-testid=\"registration-receipt\"\n >\n <p className=\"flex items-center gap-2 text-lg font-semibold text-text-primary\">\n <CheckCircle2 className=\"h-6 w-6 text-status-success-text\" /> Registration received\n </p>\n <p className=\"text-sm text-text-secondary\">\n {receipt.participantName} is registered for {receipt.formTitle}. The club will review it\n {receipt.amountDue > 0 ? ' and confirm payment details with you' : ''}.\n </p>\n <div className=\"flex flex-wrap items-center gap-2 text-sm\">\n <StatusBadge status={receipt.status} />\n <StatusBadge status={receipt.paymentStatus} />\n {receipt.amountDue > 0 && (\n <span className=\"tabular-nums text-text-primary\">\n {formatMoney(receipt.amountOutstanding, receipt.currency)} due\n </span>\n )}\n </div>\n <button\n type=\"button\"\n onClick={() => navigateTo('/my-registrations')}\n className=\"inline-flex items-center gap-1.5 rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text transition-colors hover:bg-action-primary-bg/90\"\n >\n View my registrations\n </button>\n </div>\n </PageLayout>\n );\n }\n\n const onSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setError(null);\n const missing = missingRequiredAnswer(data.fields, state);\n if (missing) {\n setError(`Please answer \"${missing}\".`);\n return;\n }\n if (data.waiverText && !state.waiverAccepted) {\n setError('Please accept the waiver to register.');\n return;\n }\n try {\n const result = await submit.mutateAsync({\n slug,\n input: {\n participantName: state.participantName.trim(),\n contactName: state.contactName.trim() || undefined,\n contactEmail: state.contactEmail.trim() || undefined,\n contactPhone: state.contactPhone.trim() || undefined,\n answers: cleanAnswers(state.answers),\n selectedFeeIds: state.optionalFeeIds,\n waiverAccepted: state.waiverAccepted,\n },\n });\n setReceipt(result);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Could not submit the registration.');\n }\n };\n\n const subtitle = [\n data.season,\n data.closesAt ? `Closes ${formatDate(data.closesAt)}` : null,\n data.spotsRemaining != null ? `${data.spotsRemaining} places left` : null,\n ]\n .filter(Boolean)\n .join(' · ');\n\n return (\n <PageLayout title={data.title} description={subtitle || undefined}>\n <div className=\"max-w-2xl space-y-6\">\n {data.description && (\n <p className=\"whitespace-pre-line text-sm text-text-secondary\">{data.description}</p>\n )}\n {!data.isOpen ? (\n <p\n role=\"status\"\n className=\"rounded-lg border border-status-warning-border bg-status-warning-bg-subtle p-4 text-sm text-status-warning-text\"\n >\n This form is not accepting registrations right now\n {data.opensAt && new Date(data.opensAt) > new Date()\n ? ` — it opens ${formatDate(data.opensAt)}`\n : ''}\n .\n </p>\n ) : (\n <form onSubmit={onSubmit} className=\"space-y-6\">\n <RegistrationEntryFields\n fields={data.fields}\n fees={data.fees}\n currency={data.currency}\n waiverText={data.waiverText}\n state={state}\n onChange={setState}\n />\n {error && (\n <p role=\"alert\" className=\"text-sm text-status-error-text\">\n {error}\n </p>\n )}\n <button\n type=\"submit\"\n disabled={submit.isPending}\n className=\"inline-flex items-center gap-1.5 rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text transition-colors hover:bg-action-primary-bg/90 disabled:opacity-60\"\n >\n {submit.isPending ? (\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n ) : (\n <Send className=\"h-4 w-4\" />\n )}{' '}\n Submit registration\n </button>\n </form>\n )}\n </div>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Registration form builder (create / edit)
3
+ * @module atheletebridge/pages/registrations
4
+ *
5
+ * Club staff define the form's details, its questions and its fees
6
+ * (BOFF-4135). Questions, fees and currency lock once the first registration
7
+ * arrives — the server enforces the same rule.
8
+ */
9
+ export declare function RegistrationFormBuilderPage(): import("react").JSX.Element;
10
+ //# sourceMappingURL=RegistrationFormBuilderPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RegistrationFormBuilderPage.d.ts","sourceRoot":"","sources":["../../../../src/atheletebridge/pages/registrations/RegistrationFormBuilderPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiJH,wBAAgB,2BAA2B,gCA+iB1C"}