@burdenoff/microfe-comradecircle 2026.827.1 → 2026.830.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 (74) hide show
  1. package/dist/comradecircle/components/AvatarUploadField.js +8 -8
  2. package/dist/comradecircle/components/CircleCard.js +4 -4
  3. package/dist/comradecircle/components/CommentThread.d.ts.map +1 -1
  4. package/dist/comradecircle/components/CommentThread.js +66 -61
  5. package/dist/comradecircle/components/CommentThread.js.map +1 -1
  6. package/dist/comradecircle/components/CreateCircleDialog.d.ts.map +1 -1
  7. package/dist/comradecircle/components/CreateCircleDialog.js +89 -88
  8. package/dist/comradecircle/components/CreateCircleDialog.js.map +1 -1
  9. package/dist/comradecircle/components/CreateEventDialog.d.ts.map +1 -1
  10. package/dist/comradecircle/components/CreateEventDialog.js +28 -27
  11. package/dist/comradecircle/components/CreateEventDialog.js.map +1 -1
  12. package/dist/comradecircle/components/DraftsPanel.js +13 -13
  13. package/dist/comradecircle/components/EventCard.js +5 -5
  14. package/dist/comradecircle/components/FileImage.js +5 -5
  15. package/dist/comradecircle/components/ImageAttachments.js +21 -21
  16. package/dist/comradecircle/components/MemberIdentity.js +4 -4
  17. package/dist/comradecircle/components/MobileBottomNav.d.ts.map +1 -1
  18. package/dist/comradecircle/components/MobileBottomNav.js +37 -30
  19. package/dist/comradecircle/components/MobileBottomNav.js.map +1 -1
  20. package/dist/comradecircle/components/Pagination.d.ts.map +1 -1
  21. package/dist/comradecircle/components/Pagination.js +37 -28
  22. package/dist/comradecircle/components/Pagination.js.map +1 -1
  23. package/dist/comradecircle/components/PollCard.js +13 -13
  24. package/dist/comradecircle/components/PostCard.d.ts.map +1 -1
  25. package/dist/comradecircle/components/PostCard.js +102 -89
  26. package/dist/comradecircle/components/PostCard.js.map +1 -1
  27. package/dist/comradecircle/components/PostComposer.js +4 -4
  28. package/dist/comradecircle/components/ReactionBar.d.ts.map +1 -1
  29. package/dist/comradecircle/components/ReactionBar.js +65 -55
  30. package/dist/comradecircle/components/ReactionBar.js.map +1 -1
  31. package/dist/comradecircle/components/StateViews.d.ts.map +1 -1
  32. package/dist/comradecircle/components/StateViews.js +38 -30
  33. package/dist/comradecircle/components/StateViews.js.map +1 -1
  34. package/dist/comradecircle/components/UpcomingEvents.js +17 -17
  35. package/dist/comradecircle/hooks/index.d.ts +1 -0
  36. package/dist/comradecircle/hooks/index.d.ts.map +1 -1
  37. package/dist/comradecircle/hooks/index.js +1 -0
  38. package/dist/comradecircle/hooks/useTr.d.ts +18 -0
  39. package/dist/comradecircle/hooks/useTr.d.ts.map +1 -0
  40. package/dist/comradecircle/hooks/useTr.js +12 -0
  41. package/dist/comradecircle/hooks/useTr.js.map +1 -0
  42. package/dist/comradecircle/pages/FeedPage.d.ts.map +1 -1
  43. package/dist/comradecircle/pages/FeedPage.js +75 -62
  44. package/dist/comradecircle/pages/FeedPage.js.map +1 -1
  45. package/dist/comradecircle/pages/circles/CircleDetailPage.d.ts.map +1 -1
  46. package/dist/comradecircle/pages/circles/CircleDetailPage.js +439 -401
  47. package/dist/comradecircle/pages/circles/CircleDetailPage.js.map +1 -1
  48. package/dist/comradecircle/pages/circles/CirclesPage.d.ts.map +1 -1
  49. package/dist/comradecircle/pages/circles/CirclesPage.js +124 -117
  50. package/dist/comradecircle/pages/circles/CirclesPage.js.map +1 -1
  51. package/dist/comradecircle/pages/events/EventDetailPage.d.ts.map +1 -1
  52. package/dist/comradecircle/pages/events/EventDetailPage.js +182 -153
  53. package/dist/comradecircle/pages/events/EventDetailPage.js.map +1 -1
  54. package/dist/comradecircle/pages/events/EventsPage.d.ts.map +1 -1
  55. package/dist/comradecircle/pages/events/EventsPage.js +100 -91
  56. package/dist/comradecircle/pages/events/EventsPage.js.map +1 -1
  57. package/dist/comradecircle/pages/members/MemberProfilePage.d.ts.map +1 -1
  58. package/dist/comradecircle/pages/members/MemberProfilePage.js +172 -159
  59. package/dist/comradecircle/pages/members/MemberProfilePage.js.map +1 -1
  60. package/dist/comradecircle/pages/members/MembersPage.d.ts.map +1 -1
  61. package/dist/comradecircle/pages/members/MembersPage.js +103 -104
  62. package/dist/comradecircle/pages/members/MembersPage.js.map +1 -1
  63. package/dist/comradecircle/pages/monetization/MonetizationPage.d.ts.map +1 -1
  64. package/dist/comradecircle/pages/monetization/MonetizationPage.js +319 -297
  65. package/dist/comradecircle/pages/monetization/MonetizationPage.js.map +1 -1
  66. package/dist/comradecircle/pages/posts/PostThreadPage.d.ts.map +1 -1
  67. package/dist/comradecircle/pages/posts/PostThreadPage.js +37 -32
  68. package/dist/comradecircle/pages/posts/PostThreadPage.js.map +1 -1
  69. package/dist/comradecircle/pages/profile/MyProfilePage.d.ts.map +1 -1
  70. package/dist/comradecircle/pages/profile/MyProfilePage.js +182 -177
  71. package/dist/comradecircle/pages/profile/MyProfilePage.js.map +1 -1
  72. package/dist/comradecircle/utils/i18n.js +15 -0
  73. package/dist/comradecircle/utils/i18n.js.map +1 -0
  74. package/package.json +1 -1
@@ -1,37 +1,42 @@
1
1
  import { useComradeCircle as e } from "../../context/ComradeCircleContext.js";
2
2
  import "../../context/index.js";
3
- import { cn as t } from "../../utils/cn.js";
4
- import { PageLayout as n } from "../../components/PageLayout.js";
5
- import { useComEvent as r, useComEventLive as ee, useComRsvpEvent as te, useComTransitionEvent as i } from "../../hooks/useComradeCircleApi.js";
3
+ import { useComEvent as t, useComEventLive as n, useComRsvpEvent as ee, useComTransitionEvent as te } from "../../hooks/useComradeCircleApi.js";
4
+ import { useTr as r } from "../../hooks/useTr.js";
6
5
  import "../../hooks/index.js";
7
- import { MemberIdentity as a } from "../../components/MemberIdentity.js";
8
- import { describeError as o, notify as s } from "../../lib/toast.js";
9
- import { formatDateTime as c, formatEnumLabel as l, formatNumber as u } from "../../utils/formatters.js";
10
- import { EmptyState as d } from "../../components/EmptyState.js";
11
- import { ErrorView as f, LoadingView as p } from "../../components/StateViews.js";
12
- import { StatusBadge as m } from "../../components/StatusBadge.js";
13
- import { MiniBar as h } from "../../components/MiniBar.js";
14
- import { ArrowLeft as ne, Ban as re, CalendarDays as ie, Check as g, CheckCircle2 as _, MapPin as v, Radio as y, Tag as ae, Users as b, Video as x } from "lucide-react";
15
- import { useParams as S } from "react-router";
16
- import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
17
- import { Button as E, GlassCard as oe } from "@burdenoff/fe-libs/ui";
6
+ import { cn as i } from "../../utils/cn.js";
7
+ import { PageLayout as a } from "../../components/PageLayout.js";
8
+ import { MemberIdentity as o } from "../../components/MemberIdentity.js";
9
+ import { describeError as s, notify as c } from "../../lib/toast.js";
10
+ import { formatDateTime as l, formatEnumLabel as u, formatNumber as d } from "../../utils/formatters.js";
11
+ import { EmptyState as f } from "../../components/EmptyState.js";
12
+ import { ErrorView as p, LoadingView as m } from "../../components/StateViews.js";
13
+ import { StatusBadge as h } from "../../components/StatusBadge.js";
14
+ import { MiniBar as ne } from "../../components/MiniBar.js";
15
+ import { ArrowLeft as re, Ban as ie, CalendarDays as ae, Check as g, CheckCircle2 as _, MapPin as v, Radio as y, Tag as b, Users as x, Video as S } from "lucide-react";
16
+ import { useParams as C } from "react-router";
17
+ import { Fragment as w, jsx as T, jsxs as E } from "react/jsx-runtime";
18
+ import { Button as D, GlassCard as oe } from "@burdenoff/fe-libs/ui";
18
19
  //#region src/comradecircle/pages/events/EventDetailPage.tsx
19
- var D = [
20
+ var se = [
20
21
  {
21
22
  status: "GOING",
22
- label: "Going"
23
+ labelKey: "comradecircle.pages.eventDetail.rsvpGoing",
24
+ fallback: "Going"
23
25
  },
24
26
  {
25
27
  status: "INTERESTED",
26
- label: "Interested"
28
+ labelKey: "comradecircle.pages.eventDetail.rsvpInterested",
29
+ fallback: "Interested"
27
30
  },
28
31
  {
29
32
  status: "WAITLISTED",
30
- label: "Waitlist"
33
+ labelKey: "comradecircle.pages.eventDetail.rsvpWaitlist",
34
+ fallback: "Waitlist"
31
35
  },
32
36
  {
33
37
  status: "NOT_GOING",
34
- label: "Can't go"
38
+ labelKey: "comradecircle.pages.eventDetail.rsvpNotGoing",
39
+ fallback: "Can't go"
35
40
  }
36
41
  ], O = {
37
42
  GOING: 0,
@@ -41,162 +46,174 @@ var D = [
41
46
  }, k = [
42
47
  {
43
48
  status: "GOING",
44
- label: "going"
49
+ labelKey: "comradecircle.pages.eventDetail.facetGoing",
50
+ fallback: "going"
45
51
  },
46
52
  {
47
53
  status: "INTERESTED",
48
- label: "interested"
54
+ labelKey: "comradecircle.pages.eventDetail.facetInterested",
55
+ fallback: "interested"
49
56
  },
50
57
  {
51
58
  status: "WAITLISTED",
52
- label: "waitlisted"
59
+ labelKey: "comradecircle.pages.eventDetail.facetWaitlisted",
60
+ fallback: "waitlisted"
53
61
  },
54
62
  {
55
63
  status: "NOT_GOING",
56
- label: "can't go"
64
+ labelKey: "comradecircle.pages.eventDetail.facetNotGoing",
65
+ fallback: "can't go"
57
66
  }
58
67
  ];
59
68
  function A() {
60
- let { id: A } = S(), { currentUser: j, navigateTo: M } = e(), { data: N, isLoading: P, isError: F, refetch: I } = r(A);
61
- ee(A);
62
- let L = te(), R = i(), z = /* @__PURE__ */ T(E, {
69
+ let A = r(), { id: j } = C(), { currentUser: M, navigateTo: N } = e(), { data: P, isLoading: F, isError: I, refetch: L } = t(j);
70
+ n(j);
71
+ let R = ee(), z = te(), B = /* @__PURE__ */ E(D, {
63
72
  variant: "ghost",
64
73
  size: "sm",
65
- onClick: () => M("events"),
66
- children: [/* @__PURE__ */ w(ne, { className: "mr-1.5 h-4 w-4" }), " Back"]
74
+ onClick: () => N("events"),
75
+ children: [
76
+ /* @__PURE__ */ T(re, { className: "mr-1.5 h-4 w-4" }),
77
+ " ",
78
+ A("common.back", "Back")
79
+ ]
67
80
  });
68
- if (P) return /* @__PURE__ */ w(n, {
69
- title: "Event",
70
- actions: z,
71
- children: /* @__PURE__ */ w(p, { label: "Loading event…" })
81
+ if (F) return /* @__PURE__ */ T(a, {
82
+ title: A("comradecircle.pages.eventDetail.title", "Event"),
83
+ actions: B,
84
+ children: /* @__PURE__ */ T(m, { label: A("comradecircle.pages.eventDetail.loadingEvent", "Loading event…") })
72
85
  });
73
- if (F || !N) return /* @__PURE__ */ w(n, {
74
- title: "Event",
75
- actions: z,
76
- children: /* @__PURE__ */ w(f, {
77
- title: "Event not found",
78
- message: "This event may have been cancelled, or you may not have access to it.",
79
- onRetry: () => I()
86
+ if (I || !P) return /* @__PURE__ */ T(a, {
87
+ title: A("comradecircle.pages.eventDetail.title", "Event"),
88
+ actions: B,
89
+ children: /* @__PURE__ */ T(p, {
90
+ title: A("comradecircle.pages.eventDetail.notFoundTitle", "Event not found"),
91
+ message: A("comradecircle.pages.eventDetail.notFoundMessage", "This event may have been cancelled, or you may not have access to it."),
92
+ onRetry: () => L()
80
93
  })
81
94
  });
82
- let B = !!(j?.id && j.id === N.hostId), V = N.status === "LIVE", se = N.status === "SCHEDULED" || N.status === "LIVE", H = N.mode === "ONLINE" || N.mode === "HYBRID", U = N.mode === "IN_PERSON" || N.mode === "HYBRID", W = V && H && !!N.joinUrl, G = j?.id ? N.rsvps.find((e) => e.memberId === j.id) : void 0, K = N.capacity ?? null, q = K && K > 0 ? Math.min(100, N.rsvpCount / K * 100) : null, J = q != null && q >= 80, Y = q != null && q >= 100, X = q == null ? "" : Y ? "Full" : `${Math.round(q)}% full`, ce = Y ? "bg-status-error-text" : J ? "bg-status-warning-text" : "bg-accent", le = Y ? "text-status-error-text" : J ? "text-status-warning-text" : "text-text-tertiary", Z = N.rsvps.reduce((e, t) => (e[t.status] += 1, e), {
95
+ let V = !!(M?.id && M.id === P.hostId), H = P.status === "LIVE", ce = P.status === "SCHEDULED" || P.status === "LIVE", U = P.mode === "ONLINE" || P.mode === "HYBRID", W = P.mode === "IN_PERSON" || P.mode === "HYBRID", G = H && U && !!P.joinUrl, le = M?.id ? P.rsvps.find((e) => e.memberId === M.id) : void 0, K = P.capacity ?? null, q = K && K > 0 ? Math.min(100, P.rsvpCount / K * 100) : null, J = q != null && q >= 80, Y = q != null && q >= 100, X = q == null ? "" : Y ? A("comradecircle.pages.eventDetail.capacityFull", "Full") : A("comradecircle.pages.eventDetail.capacityPercent", "{{pct}}% full", { pct: Math.round(q) }), ue = Y ? "bg-status-error-text" : J ? "bg-status-warning-text" : "bg-accent", de = Y ? "text-status-error-text" : J ? "text-status-warning-text" : "text-text-tertiary", Z = P.rsvps.reduce((e, t) => (e[t.status] += 1, e), {
83
96
  GOING: 0,
84
97
  INTERESTED: 0,
85
98
  WAITLISTED: 0,
86
99
  NOT_GOING: 0
87
- }), ue = [...N.rsvps].sort((e, t) => O[e.status] - O[t.status]), Q = k.filter((e) => Z[e.status] > 0).map((e) => `${u(Z[e.status])} ${e.label}`).join(" · "), de = async (e) => {
100
+ }), fe = [...P.rsvps].sort((e, t) => O[e.status] - O[t.status]), Q = k.filter((e) => Z[e.status] > 0).map((e) => `${d(Z[e.status])} ${A(e.labelKey, e.fallback)}`).join(" · "), pe = async (e) => {
88
101
  try {
89
- await L.mutateAsync({
90
- eventId: N.id,
102
+ await R.mutateAsync({
103
+ eventId: P.id,
91
104
  status: e
92
- }), s.success("RSVP updated", `${l(e)} · ${N.title}`);
105
+ }), c.success(A("comradecircle.pages.eventDetail.rsvpUpdated", "RSVP updated"), `${u(e)} · ${P.title}`);
93
106
  } catch (e) {
94
- s.error("Could not RSVP", o(e));
107
+ c.error(A("comradecircle.pages.eventDetail.rsvpError", "Could not RSVP"), s(e));
95
108
  }
96
109
  }, $ = async (e, t) => {
97
110
  try {
98
- await R.mutateAsync({
99
- id: N.id,
111
+ await z.mutateAsync({
112
+ id: P.id,
100
113
  status: e
101
- }), s.success(t, N.title);
114
+ }), c.success(t, P.title);
102
115
  } catch (e) {
103
- s.error("Could not update the event", o(e));
116
+ c.error(A("comradecircle.pages.eventDetail.transitionError", "Could not update the event"), s(e));
104
117
  }
105
- }, fe = N.endsAt ? `${c(N.startsAt)} – ${c(N.endsAt)}` : c(N.startsAt);
106
- return /* @__PURE__ */ w(n, {
107
- title: N.title,
108
- actions: z,
109
- children: /* @__PURE__ */ T("div", {
118
+ }, me = P.endsAt ? `${l(P.startsAt)} – ${l(P.endsAt)}` : l(P.startsAt);
119
+ return /* @__PURE__ */ T(a, {
120
+ title: P.title,
121
+ actions: B,
122
+ children: /* @__PURE__ */ E("div", {
110
123
  className: "mx-auto flex max-w-3xl flex-col gap-6",
111
124
  children: [
112
- /* @__PURE__ */ T(oe, {
125
+ /* @__PURE__ */ E(oe, {
113
126
  treatment: "plain",
114
- className: t("flex flex-col gap-5 p-5 sm:p-6", V && "ring-1 ring-[var(--color-accent-soft)]"),
127
+ className: i("flex flex-col gap-5 p-5 sm:p-6", H && "ring-1 ring-[var(--color-accent-soft)]"),
115
128
  children: [
116
- V && /* @__PURE__ */ w("span", {
129
+ H && /* @__PURE__ */ T("span", {
117
130
  "aria-hidden": "true",
118
131
  className: "pointer-events-none absolute inset-0 rounded-card ring-2 ring-accent/60 motion-safe:animate-pulse"
119
132
  }),
120
- /* @__PURE__ */ T("div", {
133
+ /* @__PURE__ */ E("div", {
121
134
  className: "flex flex-wrap items-center gap-2",
122
- children: [/* @__PURE__ */ w(m, { status: N.status }), /* @__PURE__ */ w(m, { status: N.mode })]
135
+ children: [/* @__PURE__ */ T(h, { status: P.status }), /* @__PURE__ */ T(h, { status: P.mode })]
123
136
  }),
124
- W && N.joinUrl && /* @__PURE__ */ w(E, {
137
+ G && P.joinUrl && /* @__PURE__ */ T(D, {
125
138
  asChild: !0,
126
139
  size: "lg",
127
140
  className: "w-full justify-center sm:w-auto sm:self-start",
128
- children: /* @__PURE__ */ T("a", {
129
- href: N.joinUrl,
141
+ children: /* @__PURE__ */ E("a", {
142
+ href: P.joinUrl,
130
143
  target: "_blank",
131
144
  rel: "noreferrer noopener",
132
- children: [/* @__PURE__ */ w(x, { className: "h-4 w-4" }), " Join the live event"]
145
+ children: [
146
+ /* @__PURE__ */ T(S, { className: "h-4 w-4" }),
147
+ " ",
148
+ A("comradecircle.pages.eventDetail.joinLive", "Join the live event")
149
+ ]
133
150
  })
134
151
  }),
135
- N.description && /* @__PURE__ */ w("p", {
152
+ P.description && /* @__PURE__ */ T("p", {
136
153
  className: "whitespace-pre-wrap text-sm text-text-secondary",
137
- children: N.description
154
+ children: P.description
138
155
  }),
139
- /* @__PURE__ */ T("dl", {
156
+ /* @__PURE__ */ E("dl", {
140
157
  className: "flex flex-col gap-3 text-sm",
141
158
  children: [
142
- /* @__PURE__ */ T("div", {
159
+ /* @__PURE__ */ E("div", {
143
160
  className: "flex items-start gap-2.5",
144
- children: [/* @__PURE__ */ w(ie, { className: "mt-0.5 h-4 w-4 shrink-0 text-text-tertiary" }), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("dt", {
161
+ children: [/* @__PURE__ */ T(ae, { className: "mt-0.5 h-4 w-4 shrink-0 text-text-tertiary" }), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("dt", {
145
162
  className: "text-text-tertiary",
146
- children: "When"
147
- }), /* @__PURE__ */ w("dd", {
163
+ children: A("comradecircle.pages.eventDetail.whenLabel", "When")
164
+ }), /* @__PURE__ */ T("dd", {
148
165
  className: "mt-0.5 text-text-primary",
149
- children: fe
166
+ children: me
150
167
  })] })]
151
168
  }),
152
- U && N.location && /* @__PURE__ */ T("div", {
169
+ W && P.location && /* @__PURE__ */ E("div", {
153
170
  className: "flex items-start gap-2.5",
154
- children: [/* @__PURE__ */ w(v, { className: "mt-0.5 h-4 w-4 shrink-0 text-text-tertiary" }), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("dt", {
171
+ children: [/* @__PURE__ */ T(v, { className: "mt-0.5 h-4 w-4 shrink-0 text-text-tertiary" }), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("dt", {
155
172
  className: "text-text-tertiary",
156
- children: "Where"
157
- }), /* @__PURE__ */ w("dd", {
173
+ children: A("comradecircle.pages.eventDetail.whereLabel", "Where")
174
+ }), /* @__PURE__ */ T("dd", {
158
175
  className: "mt-0.5 text-text-primary",
159
- children: N.location
176
+ children: P.location
160
177
  })] })]
161
178
  }),
162
- H && /* @__PURE__ */ T("div", {
179
+ U && /* @__PURE__ */ E("div", {
163
180
  className: "flex items-start gap-2.5",
164
- children: [/* @__PURE__ */ w(x, { className: "mt-0.5 h-4 w-4 shrink-0 text-text-tertiary" }), /* @__PURE__ */ T("div", {
181
+ children: [/* @__PURE__ */ T(S, { className: "mt-0.5 h-4 w-4 shrink-0 text-text-tertiary" }), /* @__PURE__ */ E("div", {
165
182
  className: "min-w-0",
166
- children: [/* @__PURE__ */ w("dt", {
183
+ children: [/* @__PURE__ */ T("dt", {
167
184
  className: "text-text-tertiary",
168
- children: "Online"
169
- }), /* @__PURE__ */ w("dd", {
185
+ children: A("comradecircle.pages.eventDetail.onlineLabel", "Online")
186
+ }), /* @__PURE__ */ T("dd", {
170
187
  className: "mt-0.5 text-text-primary",
171
- children: W ? /* @__PURE__ */ w("span", {
188
+ children: G ? /* @__PURE__ */ T("span", {
172
189
  className: "font-medium text-accent",
173
- children: "The join link is live — use the button above."
174
- }) : /* @__PURE__ */ w("span", {
190
+ children: A("comradecircle.pages.eventDetail.joinLinkLive", "The join link is live — use the button above.")
191
+ }) : /* @__PURE__ */ T("span", {
175
192
  className: "text-text-secondary",
176
- children: V ? "A join link has not been provided." : "The join link becomes available when the event goes live."
193
+ children: H ? A("comradecircle.pages.eventDetail.joinLinkNotProvided", "A join link has not been provided.") : A("comradecircle.pages.eventDetail.joinLinkWhenLive", "The join link becomes available when the event goes live.")
177
194
  })
178
195
  })]
179
196
  })]
180
197
  }),
181
- /* @__PURE__ */ T("div", {
198
+ /* @__PURE__ */ E("div", {
182
199
  className: "flex items-start gap-2.5",
183
- children: [/* @__PURE__ */ w(b, { className: "mt-0.5 h-4 w-4 shrink-0 text-text-tertiary" }), /* @__PURE__ */ T("div", {
200
+ children: [/* @__PURE__ */ T(x, { className: "mt-0.5 h-4 w-4 shrink-0 text-text-tertiary" }), /* @__PURE__ */ E("div", {
184
201
  className: "min-w-0 flex-1",
185
202
  children: [
186
- /* @__PURE__ */ w("dt", {
203
+ /* @__PURE__ */ T("dt", {
187
204
  className: "text-text-tertiary",
188
- children: "Attending"
205
+ children: A("comradecircle.pages.eventDetail.attendingLabel", "Attending")
189
206
  }),
190
- /* @__PURE__ */ T("dd", {
207
+ /* @__PURE__ */ E("dd", {
191
208
  className: "mt-0.5 flex flex-wrap items-baseline gap-x-2 text-text-primary",
192
- children: [/* @__PURE__ */ T("span", { children: [u(N.rsvpCount), K ? ` / ${u(K)}` : ""] }), X && /* @__PURE__ */ w("span", {
193
- className: t("text-xs font-semibold", le),
209
+ children: [/* @__PURE__ */ E("span", { children: [d(P.rsvpCount), K ? ` / ${d(K)}` : ""] }), X && /* @__PURE__ */ T("span", {
210
+ className: i("text-xs font-semibold", de),
194
211
  children: X
195
212
  })]
196
213
  }),
197
- q != null && /* @__PURE__ */ w(h, {
214
+ q != null && /* @__PURE__ */ T(ne, {
198
215
  value: q,
199
- barClassName: ce,
216
+ barClassName: ue,
200
217
  className: "mt-2 max-w-xs"
201
218
  })
202
219
  ]
@@ -204,23 +221,23 @@ function A() {
204
221
  })
205
222
  ]
206
223
  }),
207
- N.tags.length > 0 && /* @__PURE__ */ T("div", {
224
+ P.tags.length > 0 && /* @__PURE__ */ E("div", {
208
225
  className: "flex flex-wrap items-center gap-1.5",
209
- children: [/* @__PURE__ */ w(ae, {
226
+ children: [/* @__PURE__ */ T(b, {
210
227
  className: "h-3.5 w-3.5 text-text-tertiary",
211
228
  "aria-hidden": "true"
212
- }), N.tags.map((e) => /* @__PURE__ */ T("span", {
229
+ }), P.tags.map((e) => /* @__PURE__ */ E("span", {
213
230
  className: "rounded-full bg-bg-sunken px-2.5 py-0.5 text-xs font-medium text-text-secondary",
214
231
  children: ["#", e]
215
232
  }, e))]
216
233
  }),
217
- /* @__PURE__ */ T("div", {
234
+ /* @__PURE__ */ E("div", {
218
235
  className: "border-t border-border-seam pt-4",
219
- children: [/* @__PURE__ */ w("p", {
236
+ children: [/* @__PURE__ */ T("p", {
220
237
  className: "mb-2 text-xs font-semibold uppercase tracking-wide text-text-tertiary",
221
- children: "Hosted by"
222
- }), /* @__PURE__ */ w(a, {
223
- memberId: N.hostId,
238
+ children: A("comradecircle.pages.eventDetail.hostedBy", "Hosted by")
239
+ }), /* @__PURE__ */ T(o, {
240
+ memberId: P.hostId,
224
241
  variant: "row",
225
242
  size: "md",
226
243
  showPresence: !0
@@ -228,109 +245,121 @@ function A() {
228
245
  })
229
246
  ]
230
247
  }),
231
- se && /* @__PURE__ */ T("section", {
248
+ ce && /* @__PURE__ */ E("section", {
232
249
  className: "rounded-2xl border border-border-seam bg-bg-surface p-5",
233
250
  children: [
234
- /* @__PURE__ */ w("h2", {
251
+ /* @__PURE__ */ T("h2", {
235
252
  className: "text-base font-semibold text-text-primary",
236
- children: "Your RSVP"
253
+ children: A("comradecircle.pages.eventDetail.yourRsvpTitle", "Your RSVP")
237
254
  }),
238
- /* @__PURE__ */ w("p", {
255
+ /* @__PURE__ */ T("p", {
239
256
  className: "mt-0.5 text-sm text-text-secondary",
240
- children: "Let the host know whether you'll attend."
257
+ children: A("comradecircle.pages.eventDetail.rsvpPrompt", "Let the host know whether you'll attend.")
241
258
  }),
242
- /* @__PURE__ */ w("div", {
259
+ /* @__PURE__ */ T("div", {
243
260
  className: "mt-4 flex flex-col gap-2 sm:flex-row sm:flex-wrap",
244
- children: D.map((e) => {
245
- let n = G?.status === e.status;
246
- return /* @__PURE__ */ T(E, {
247
- variant: n ? "default" : "outline",
248
- onClick: () => de(e.status),
249
- disabled: L.isPending,
250
- "aria-pressed": n,
251
- className: t("w-full justify-center sm:w-auto", n && "font-semibold shadow-elevation-1"),
252
- children: [n && /* @__PURE__ */ w(g, { className: "h-4 w-4" }), e.label]
261
+ children: se.map((e) => {
262
+ let t = le?.status === e.status;
263
+ return /* @__PURE__ */ E(D, {
264
+ variant: t ? "default" : "outline",
265
+ onClick: () => pe(e.status),
266
+ disabled: R.isPending,
267
+ "aria-pressed": t,
268
+ className: i("w-full justify-center sm:w-auto", t && "font-semibold shadow-elevation-1"),
269
+ children: [t && /* @__PURE__ */ T(g, { className: "h-4 w-4" }), A(e.labelKey, e.fallback)]
253
270
  }, e.status);
254
271
  })
255
272
  })
256
273
  ]
257
274
  }),
258
- B && (N.status === "SCHEDULED" || N.status === "LIVE") && /* @__PURE__ */ T("section", {
275
+ V && (P.status === "SCHEDULED" || P.status === "LIVE") && /* @__PURE__ */ E("section", {
259
276
  className: "rounded-2xl border border-border-seam bg-bg-surface p-5",
260
277
  children: [
261
- /* @__PURE__ */ w("h2", {
278
+ /* @__PURE__ */ T("h2", {
262
279
  className: "text-base font-semibold text-text-primary",
263
- children: "Host controls"
280
+ children: A("comradecircle.pages.eventDetail.hostControlsTitle", "Host controls")
264
281
  }),
265
- /* @__PURE__ */ w("p", {
282
+ /* @__PURE__ */ T("p", {
266
283
  className: "mt-0.5 text-sm text-text-secondary",
267
- children: "Move this event through its lifecycle."
284
+ children: A("comradecircle.pages.eventDetail.hostControlsPrompt", "Move this event through its lifecycle.")
268
285
  }),
269
- /* @__PURE__ */ T("div", {
286
+ /* @__PURE__ */ E("div", {
270
287
  className: "mt-4 flex flex-wrap gap-2",
271
- children: [N.status === "SCHEDULED" && /* @__PURE__ */ T(C, { children: [/* @__PURE__ */ T(E, {
288
+ children: [P.status === "SCHEDULED" && /* @__PURE__ */ E(w, { children: [/* @__PURE__ */ E(D, {
272
289
  size: "sm",
273
- onClick: () => $("LIVE", "Event is now live"),
274
- disabled: R.isPending,
275
- children: [/* @__PURE__ */ w(y, { className: "mr-1.5 h-4 w-4" }), " Go live"]
276
- }), /* @__PURE__ */ T(E, {
290
+ onClick: () => $("LIVE", A("comradecircle.pages.eventDetail.wentLive", "Event is now live")),
291
+ disabled: z.isPending,
292
+ children: [
293
+ /* @__PURE__ */ T(y, { className: "mr-1.5 h-4 w-4" }),
294
+ " ",
295
+ A("comradecircle.pages.eventDetail.goLive", "Go live")
296
+ ]
297
+ }), /* @__PURE__ */ E(D, {
277
298
  size: "sm",
278
299
  variant: "destructive",
279
- onClick: () => $("CANCELLED", "Event cancelled"),
280
- disabled: R.isPending,
281
- children: [/* @__PURE__ */ w(re, { className: "mr-1.5 h-4 w-4" }), " Cancel"]
282
- })] }), N.status === "LIVE" && /* @__PURE__ */ T(E, {
300
+ onClick: () => $("CANCELLED", A("comradecircle.pages.eventDetail.cancelled", "Event cancelled")),
301
+ disabled: z.isPending,
302
+ children: [
303
+ /* @__PURE__ */ T(ie, { className: "mr-1.5 h-4 w-4" }),
304
+ " ",
305
+ A("comradecircle.pages.eventDetail.cancelEvent", "Cancel")
306
+ ]
307
+ })] }), P.status === "LIVE" && /* @__PURE__ */ E(D, {
283
308
  size: "sm",
284
- onClick: () => $("COMPLETED", "Event marked complete"),
285
- disabled: R.isPending,
286
- children: [/* @__PURE__ */ w(_, { className: "mr-1.5 h-4 w-4" }), " Mark complete"]
309
+ onClick: () => $("COMPLETED", A("comradecircle.pages.eventDetail.markedComplete", "Event marked complete")),
310
+ disabled: z.isPending,
311
+ children: [
312
+ /* @__PURE__ */ T(_, { className: "mr-1.5 h-4 w-4" }),
313
+ " ",
314
+ A("comradecircle.pages.eventDetail.markComplete", "Mark complete")
315
+ ]
287
316
  })]
288
317
  })
289
318
  ]
290
319
  }),
291
- /* @__PURE__ */ T("section", {
320
+ /* @__PURE__ */ E("section", {
292
321
  className: "rounded-2xl border border-border-seam bg-bg-surface p-5",
293
- children: [/* @__PURE__ */ T("div", {
322
+ children: [/* @__PURE__ */ E("div", {
294
323
  className: "mb-3 flex items-center justify-between gap-3",
295
- children: [/* @__PURE__ */ T("div", {
324
+ children: [/* @__PURE__ */ E("div", {
296
325
  className: "min-w-0",
297
- children: [/* @__PURE__ */ w("h2", {
326
+ children: [/* @__PURE__ */ T("h2", {
298
327
  className: "text-base font-semibold text-text-primary",
299
- children: "Attendees"
300
- }), Q && /* @__PURE__ */ w("p", {
328
+ children: A("comradecircle.pages.eventDetail.attendeesTitle", "Attendees")
329
+ }), Q && /* @__PURE__ */ T("p", {
301
330
  className: "mt-0.5 truncate text-xs text-text-tertiary",
302
331
  children: Q
303
332
  })]
304
- }), /* @__PURE__ */ T("span", {
333
+ }), /* @__PURE__ */ E("span", {
305
334
  className: "inline-flex shrink-0 items-center gap-1 text-xs text-text-tertiary",
306
335
  children: [
307
- /* @__PURE__ */ w(b, { className: "h-3.5 w-3.5" }),
336
+ /* @__PURE__ */ T(x, { className: "h-3.5 w-3.5" }),
308
337
  " ",
309
- u(N.rsvps.length)
338
+ d(P.rsvps.length)
310
339
  ]
311
340
  })]
312
- }), N.rsvps.length === 0 ? /* @__PURE__ */ w(d, {
341
+ }), P.rsvps.length === 0 ? /* @__PURE__ */ T(f, {
313
342
  illustration: "empty-people",
314
- title: "No RSVPs yet",
315
- description: "Be the first to let the host know you're coming."
316
- }) : /* @__PURE__ */ w("ul", {
343
+ title: A("comradecircle.pages.eventDetail.noRsvpsTitle", "No RSVPs yet"),
344
+ description: A("comradecircle.pages.eventDetail.noRsvpsDescription", "Be the first to let the host know you're coming.")
345
+ }) : /* @__PURE__ */ T("ul", {
317
346
  className: "flex flex-col gap-2",
318
- children: ue.map((e) => /* @__PURE__ */ T("li", {
347
+ children: fe.map((e) => /* @__PURE__ */ E("li", {
319
348
  className: "flex flex-wrap items-center justify-between gap-3 rounded-xl border border-border-seam bg-bg-sunken px-4 py-2.5 transition-colors hover:border-[var(--color-accent-soft)]",
320
- children: [/* @__PURE__ */ w(a, {
349
+ children: [/* @__PURE__ */ T(o, {
321
350
  memberId: e.memberId,
322
351
  variant: "row",
323
352
  size: "sm"
324
- }), /* @__PURE__ */ T("div", {
353
+ }), /* @__PURE__ */ E("div", {
325
354
  className: "flex min-w-0 items-center gap-2",
326
- children: [e.note && /* @__PURE__ */ T("span", {
355
+ children: [e.note && /* @__PURE__ */ E("span", {
327
356
  className: "max-w-[16rem] truncate text-xs text-text-tertiary",
328
357
  children: [
329
358
  "“",
330
359
  e.note,
331
360
  "”"
332
361
  ]
333
- }), /* @__PURE__ */ w(m, { status: e.status })]
362
+ }), /* @__PURE__ */ T(h, { status: e.status })]
334
363
  })]
335
364
  }, e.id))
336
365
  })]