@burdenoff/microfe-hookmovies 2026.706.3 → 2026.706.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 (33) hide show
  1. package/dist/hookmovies/pages/HomePage.js +211 -139
  2. package/dist/hookmovies/pages/HomePage.js.map +1 -1
  3. package/dist/hookmovies/pages/ai/ConciergePage.js +3 -3
  4. package/dist/hookmovies/pages/auditions/AuditionDetailPage.js +223 -140
  5. package/dist/hookmovies/pages/auditions/AuditionDetailPage.js.map +1 -1
  6. package/dist/hookmovies/pages/auditions/AuditionsPage.js +159 -81
  7. package/dist/hookmovies/pages/auditions/AuditionsPage.js.map +1 -1
  8. package/dist/hookmovies/pages/catalog/PeoplePage.js +175 -101
  9. package/dist/hookmovies/pages/catalog/PeoplePage.js.map +1 -1
  10. package/dist/hookmovies/pages/catalog/StudiosPage.js +189 -106
  11. package/dist/hookmovies/pages/catalog/StudiosPage.js.map +1 -1
  12. package/dist/hookmovies/pages/catalog/TitleDetailPage.js +745 -623
  13. package/dist/hookmovies/pages/catalog/TitleDetailPage.js.map +1 -1
  14. package/dist/hookmovies/pages/catalog/TitlesPage.js +218 -138
  15. package/dist/hookmovies/pages/catalog/TitlesPage.js.map +1 -1
  16. package/dist/hookmovies/pages/commerce/CheckoutPage.js +8 -8
  17. package/dist/hookmovies/pages/consumer/DiscoveryPage.js +14 -14
  18. package/dist/hookmovies/pages/consumer/TitleViewPage.js +6 -6
  19. package/dist/hookmovies/pages/distribution/RightsWindowsPage.js +235 -162
  20. package/dist/hookmovies/pages/distribution/RightsWindowsPage.js.map +1 -1
  21. package/dist/hookmovies/pages/library/EntitlementsPage.js +447 -221
  22. package/dist/hookmovies/pages/library/EntitlementsPage.js.map +1 -1
  23. package/dist/hookmovies/pages/library/ListsPage.js +242 -166
  24. package/dist/hookmovies/pages/library/ListsPage.js.map +1 -1
  25. package/dist/hookmovies/pages/live/LivePage.js +12 -12
  26. package/dist/hookmovies/pages/localization/LocalizationPage.js +10 -10
  27. package/dist/hookmovies/pages/productions/ProductionDetailPage.js +265 -179
  28. package/dist/hookmovies/pages/productions/ProductionDetailPage.js.map +1 -1
  29. package/dist/hookmovies/pages/productions/ProductionsPage.js +264 -71
  30. package/dist/hookmovies/pages/productions/ProductionsPage.js.map +1 -1
  31. package/dist/hookmovies/pages/social/WatchPartyRoomPage.js +205 -205
  32. package/dist/hookmovies/pages/social/WatchPartyRoomPage.js.map +1 -1
  33. package/package.json +1 -1
@@ -1,93 +1,126 @@
1
1
  import { useHookMovies as e } from "../../context/HookMoviesContext.js";
2
- import { PageLayout as t } from "../../components/PageLayout.js";
3
- import { StatusBadge as n } from "../../components/StatusBadge.js";
4
- import { useApplyToAudition as r, useAuditionApplications as i, useAuditionById as ee, useCloseAudition as te, useScoreApplication as a } from "../../hooks/useHookMoviesApi.js";
5
- import { formatDate as o, formatMinorUnits as s, formatRelativeTime as c } from "../../utils/formatters.js";
6
- import { FILE_FOLDERS as l, uploadFileToFiles as u } from "../../hooks/useFiles.js";
7
- import { ErrorState as d, LoadingState as f } from "../../components/StateViews.js";
8
- import { useRef as p, useState as m } from "react";
9
- import { ArrowLeft as h, Clock as g, Coins as ne, Film as _, Languages as v, Loader2 as y, Lock as b, MapPin as x, Send as re, Upload as ie, Users as ae, X as oe } from "lucide-react";
10
- import { useParams as se } from "react-router-dom";
2
+ import { cn as t } from "../../utils/cn.js";
3
+ import { PageLayout as n } from "../../components/PageLayout.js";
4
+ import { StatusBadge as r } from "../../components/StatusBadge.js";
5
+ import { useApplyToAudition as i, useAuditionApplications as a, useAuditionById as ee, useCloseAudition as te, useScoreApplication as ne } from "../../hooks/useHookMoviesApi.js";
6
+ import { FILE_FOLDERS as o, uploadFileToFiles as s } from "../../hooks/useFiles.js";
7
+ import { formatDate as c, formatMinorUnits as l, formatRelativeTime as re } from "../../utils/formatters.js";
8
+ import { ErrorState as ie, LoadingState as u } from "../../components/StateViews.js";
9
+ import { useMemo as d, useRef as ae, useState as f } from "react";
10
+ import { ArrowLeft as p, Clock as oe, Coins as m, Film as h, Languages as se, Loader2 as ce, Lock as g, MapPin as _, Send as v, ShieldAlert as y, Star as b, Upload as le, Users as x, X as ue } from "lucide-react";
11
+ import { useParams as de } from "react-router-dom";
11
12
  import { Fragment as S, jsx as C, jsxs as w } from "react/jsx-runtime";
12
13
  import { GlassCard as T } from "@burdenoff/fe-libs/ui";
13
14
  //#region src/hookmovies/pages/auditions/AuditionDetailPage.tsx
14
- var E = "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]", D = () => {
15
- let { id: D } = se(), { navigateTo: O } = e(), { data: k, isLoading: A, isError: j, refetch: M } = ee(D), N = i(D), P = r(), F = a(), I = te(), [L, R] = m(""), [z, B] = m(""), [V, H] = m(""), [U, W] = m(!1), [G, K] = m(null), [q, J] = m(null), [ce, le] = m(!1), [Y, X] = m(null), Z = p(null);
16
- if (A) return /* @__PURE__ */ C(t, {
15
+ var fe = "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]";
16
+ function pe(e) {
17
+ return (e.replace(/[^a-zA-Z0-9]/g, "").slice(0, 2) || "?").toUpperCase();
18
+ }
19
+ var E = new Set([
20
+ "shortlisted",
21
+ "callback",
22
+ "offered"
23
+ ]), D = ({ value: e, disabled: n, onScore: r }) => /* @__PURE__ */ C("div", {
24
+ className: "flex items-center gap-1",
25
+ role: "group",
26
+ "aria-label": e ? `Rating ${e} of 5` : "Not yet rated",
27
+ children: [
28
+ 1,
29
+ 2,
30
+ 3,
31
+ 4,
32
+ 5
33
+ ].map((i) => {
34
+ let a = e !== null && i <= e;
35
+ return /* @__PURE__ */ C("button", {
36
+ type: "button",
37
+ disabled: n,
38
+ onClick: () => r(i),
39
+ "aria-label": `Score ${i} of 5`,
40
+ "aria-pressed": e === i,
41
+ title: `Score ${i} of 5`,
42
+ className: "rounded p-0.5 text-text-muted transition-colors hover:text-status-warning-text focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)] disabled:cursor-not-allowed disabled:opacity-60",
43
+ children: /* @__PURE__ */ C(b, { className: t("h-5 w-5 transition-transform", a ? "fill-status-warning-text text-status-warning-text" : "fill-transparent") })
44
+ }, i);
45
+ })
46
+ }), O = () => {
47
+ let { id: O } = de(), { navigateTo: k } = e(), { data: A, isLoading: j, isError: M, refetch: N } = ee(O), P = a(O), F = i(), I = ne(), L = te(), [R, z] = f(""), [B, V] = f(""), [me, H] = f(""), [U, W] = f(!1), [G, K] = f(null), [q, J] = f(null), [he, ge] = f(!1), [Y, X] = f(null), Z = ae(null), Q = d(() => P.data ?? [], [P.data]), _e = d(() => Q.filter((e) => e.score !== null).length, [Q]);
48
+ if (j) return /* @__PURE__ */ C(n, {
17
49
  title: "Audition",
18
- children: /* @__PURE__ */ C(f, { label: "Loading audition…" })
50
+ children: /* @__PURE__ */ C(u, { label: "Loading audition…" })
19
51
  });
20
- if (j || !k) return /* @__PURE__ */ C(t, {
52
+ if (M || !A) return /* @__PURE__ */ C(n, {
21
53
  title: "Audition",
22
- children: /* @__PURE__ */ C(d, {
54
+ children: /* @__PURE__ */ C(ie, {
23
55
  title: "Audition not found",
24
- onRetry: () => void M()
56
+ onRetry: () => void N()
25
57
  })
26
58
  });
27
- let ue = async (e) => {
59
+ let ve = async (e) => {
28
60
  e.preventDefault(), J(null);
29
61
  try {
30
- await P.mutateAsync({
31
- auditionId: k.id,
32
- coverNote: L.trim() || void 0,
33
- selfTapeFileId: z.trim() || void 0
34
- }), le(!0), R(""), B(""), H("");
62
+ await F.mutateAsync({
63
+ auditionId: A.id,
64
+ coverNote: R.trim() || void 0,
65
+ selfTapeFileId: B.trim() || void 0
66
+ }), ge(!0), z(""), V(""), H("");
35
67
  } catch (e) {
36
68
  J(e instanceof Error ? e.message : "Failed to apply");
37
69
  }
38
- }, de = async (e) => {
70
+ }, ye = async (e) => {
39
71
  let t = e.target.files?.[0];
40
72
  if (e.target.value = "", t) {
41
73
  K(null), W(!0);
42
74
  try {
43
- let e = await u(t, l.selfTapes);
44
- B(e.id), H(e.name || t.name);
75
+ let e = await s(t, o.selfTapes);
76
+ V(e.id), H(e.name || t.name);
45
77
  } catch (e) {
46
78
  K(e instanceof Error ? e.message : "Failed to upload self-tape");
47
79
  } finally {
48
80
  W(!1);
49
81
  }
50
82
  }
51
- }, fe = () => {
52
- B(""), H(""), K(null);
53
- }, pe = async (e, t) => {
83
+ }, be = () => {
84
+ V(""), H(""), K(null);
85
+ }, xe = async (e, t) => {
54
86
  X(null);
55
87
  try {
56
- await F.mutateAsync({
88
+ await I.mutateAsync({
57
89
  id: e,
58
90
  score: t
59
91
  });
60
92
  } catch (e) {
61
93
  X(e instanceof Error ? e.message : "Failed to score");
62
94
  }
63
- }, Q = k.status === "OPEN", $ = N.data ?? [];
64
- return /* @__PURE__ */ C(t, {
95
+ }, $ = A.status === "OPEN";
96
+ return /* @__PURE__ */ C(n, {
97
+ hero: !0,
65
98
  title: /* @__PURE__ */ w("span", {
66
99
  className: "flex items-center gap-3",
67
100
  children: [/* @__PURE__ */ C("button", {
68
101
  type: "button",
69
- onClick: () => O("auditions"),
70
- className: "rounded-md p-1 text-text-secondary hover:text-text-primary",
102
+ onClick: () => k("auditions"),
103
+ className: "rounded-md p-1 text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]",
71
104
  "aria-label": "Back to auditions",
72
- children: /* @__PURE__ */ C(h, { className: "h-5 w-5" })
73
- }), k.roleName]
105
+ children: /* @__PURE__ */ C(p, { className: "h-5 w-5" })
106
+ }), A.roleName]
74
107
  }),
75
- description: k.production?.title ?? "Casting call",
108
+ description: A.production?.title ?? "Casting call",
76
109
  actions: /* @__PURE__ */ w("div", {
77
110
  className: "flex items-center gap-2",
78
- children: [/* @__PURE__ */ C(n, { status: k.status }), Q && /* @__PURE__ */ w("button", {
111
+ children: [/* @__PURE__ */ C(r, { status: A.status }), $ && /* @__PURE__ */ w("button", {
79
112
  type: "button",
80
- disabled: I.isPending,
81
- onClick: () => void I.mutateAsync(k.id),
82
- className: "inline-flex items-center gap-1 rounded-lg border border-border-seam px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-bg-sunken disabled:opacity-50 transition-colors",
83
- children: [/* @__PURE__ */ C(b, { className: "h-3.5 w-3.5" }), "Close"]
113
+ disabled: L.isPending,
114
+ onClick: () => void L.mutateAsync(A.id),
115
+ className: "inline-flex items-center gap-1.5 rounded-lg border border-border-seam px-3 py-1.5 text-xs font-medium text-text-primary transition-colors hover:bg-bg-sunken disabled:opacity-50 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]",
116
+ children: [/* @__PURE__ */ C(g, { className: "h-3.5 w-3.5" }), "Close"]
84
117
  })]
85
118
  }),
86
119
  children: /* @__PURE__ */ w("div", {
87
120
  className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
88
121
  children: [/* @__PURE__ */ w("div", {
89
122
  className: "space-y-6 lg:col-span-2",
90
- children: [k.description && /* @__PURE__ */ w(T, {
123
+ children: [A.description && /* @__PURE__ */ w(T, {
91
124
  treatment: "metric",
92
125
  className: "border-border-seam p-5",
93
126
  children: [/* @__PURE__ */ C("h2", {
@@ -95,71 +128,113 @@ var E = "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 t
95
128
  children: "Role Description"
96
129
  }), /* @__PURE__ */ C("p", {
97
130
  className: "text-sm leading-relaxed text-text-secondary",
98
- children: k.description
131
+ children: A.description
99
132
  })]
100
133
  }), /* @__PURE__ */ w(T, {
101
134
  treatment: "metric",
102
135
  className: "border-border-seam p-5",
103
136
  children: [
104
- /* @__PURE__ */ w("h2", {
105
- className: "mb-3 flex items-center gap-2 text-sm font-semibold text-text-primary",
106
- children: [
107
- /* @__PURE__ */ C(ae, { className: "h-4 w-4" }),
108
- "Applicants (",
109
- $.length,
110
- ")"
111
- ]
137
+ /* @__PURE__ */ w("div", {
138
+ className: "mb-4 flex flex-wrap items-center justify-between gap-2",
139
+ children: [/* @__PURE__ */ w("h2", {
140
+ className: "flex items-center gap-2 text-sm font-semibold text-text-primary",
141
+ children: [
142
+ /* @__PURE__ */ C(x, { className: "h-4 w-4 text-text-secondary" }),
143
+ "Applicants",
144
+ /* @__PURE__ */ C("span", {
145
+ className: "rounded-full bg-bg-sunken px-2 py-0.5 text-xs font-medium text-text-secondary",
146
+ children: Q.length
147
+ })
148
+ ]
149
+ }), Q.length > 0 && /* @__PURE__ */ w("span", {
150
+ className: "flex items-center gap-1.5 text-xs text-text-secondary",
151
+ children: [
152
+ /* @__PURE__ */ C(b, { className: "h-3.5 w-3.5 fill-status-warning-text text-status-warning-text" }),
153
+ _e,
154
+ " of ",
155
+ Q.length,
156
+ " rated"
157
+ ]
158
+ })]
112
159
  }),
113
160
  Y && /* @__PURE__ */ C("div", {
114
161
  className: "mb-3 rounded-lg border border-status-error-border bg-status-error-bg-subtle px-3 py-2 text-xs text-status-error-text",
115
162
  children: Y
116
163
  }),
117
- N.isLoading ? /* @__PURE__ */ C(f, {
164
+ P.isLoading ? /* @__PURE__ */ C(u, {
118
165
  label: "Loading applicants…",
119
- className: "min-h-[120px]"
120
- }) : $.length === 0 ? /* @__PURE__ */ C("p", {
121
- className: "text-sm text-text-secondary",
122
- children: "No applications yet."
166
+ className: "min-h-[160px]"
167
+ }) : Q.length === 0 ? /* @__PURE__ */ w("div", {
168
+ className: "flex flex-col items-center justify-center gap-3 rounded-xl border border-dashed border-border-seam bg-bg-surface/60 px-4 py-12 text-center",
169
+ children: [
170
+ /* @__PURE__ */ C("div", {
171
+ className: "flex h-11 w-11 items-center justify-center rounded-full bg-bg-sunken",
172
+ children: /* @__PURE__ */ C(x, { className: "h-5 w-5 text-text-muted" })
173
+ }),
174
+ /* @__PURE__ */ C("p", {
175
+ className: "text-sm font-medium text-text-primary",
176
+ children: "No applications yet"
177
+ }),
178
+ /* @__PURE__ */ C("p", {
179
+ className: "max-w-xs text-xs text-text-secondary",
180
+ children: "Applicants who apply to this role will appear here for review and scoring."
181
+ })
182
+ ]
123
183
  }) : /* @__PURE__ */ C("ul", {
124
- className: "space-y-3",
125
- children: $.map((e) => /* @__PURE__ */ w("li", {
126
- className: "rounded-lg border border-border-seam bg-bg-surface p-3",
184
+ className: "grid grid-cols-1 gap-3 sm:grid-cols-2",
185
+ children: Q.map((e) => /* @__PURE__ */ w("li", {
186
+ className: t("flex flex-col rounded-xl border bg-bg-surface p-4 transition-colors", E.has(e.status.toLowerCase()) ? "border-status-info-border ring-1 ring-status-info-border" : "border-border-seam hover:border-border-strong"),
127
187
  children: [
128
188
  /* @__PURE__ */ w("div", {
129
- className: "flex items-center justify-between gap-2",
189
+ className: "flex items-start justify-between gap-3",
130
190
  children: [/* @__PURE__ */ w("div", {
131
- className: "min-w-0",
132
- children: [/* @__PURE__ */ w("p", {
133
- className: "truncate text-sm font-medium text-text-primary",
134
- children: ["Applicant ", e.applicantId.slice(0, 8)]
135
- }), /* @__PURE__ */ w("p", {
136
- className: "text-xs text-text-secondary",
137
- children: ["Applied ", c(e.createdAt)]
191
+ className: "flex min-w-0 items-center gap-3",
192
+ children: [/* @__PURE__ */ C("span", {
193
+ className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-full border border-border-seam bg-bg-sunken text-xs font-semibold text-text-secondary",
194
+ "aria-hidden": "true",
195
+ children: pe(e.applicantId)
196
+ }), /* @__PURE__ */ w("div", {
197
+ className: "min-w-0",
198
+ children: [/* @__PURE__ */ w("p", {
199
+ className: "truncate text-sm font-semibold text-text-primary",
200
+ children: ["Applicant ", e.applicantId.slice(0, 8)]
201
+ }), /* @__PURE__ */ w("p", {
202
+ className: "text-xs text-text-secondary",
203
+ children: ["Applied ", re(e.createdAt)]
204
+ })]
138
205
  })]
139
- }), /* @__PURE__ */ C(n, { status: e.status })]
206
+ }), /* @__PURE__ */ C(r, {
207
+ status: e.status,
208
+ className: "shrink-0"
209
+ })]
140
210
  }),
141
- e.coverNote && /* @__PURE__ */ C("p", {
142
- className: "mt-2 text-sm text-text-secondary",
143
- children: e.coverNote
211
+ e.coverNote ? /* @__PURE__ */ w("p", {
212
+ className: "mt-3 line-clamp-3 text-sm leading-relaxed text-text-secondary",
213
+ children: [
214
+ /* @__PURE__ */ C("span", {
215
+ className: "text-text-muted",
216
+ children: "“"
217
+ }),
218
+ e.coverNote,
219
+ /* @__PURE__ */ C("span", {
220
+ className: "text-text-muted",
221
+ children: "”"
222
+ })
223
+ ]
224
+ }) : /* @__PURE__ */ C("p", {
225
+ className: "mt-3 text-sm italic text-text-muted",
226
+ children: "No cover note provided."
144
227
  }),
145
228
  /* @__PURE__ */ w("div", {
146
- className: "mt-3 flex items-center gap-2",
147
- children: [/* @__PURE__ */ C("span", {
148
- className: "text-xs text-text-secondary",
149
- children: "Score:"
150
- }), [
151
- 1,
152
- 2,
153
- 3,
154
- 4,
155
- 5
156
- ].map((t) => /* @__PURE__ */ C("button", {
157
- type: "button",
158
- disabled: F.isPending,
159
- onClick: () => void pe(e.id, t),
160
- className: e.score === t ? "h-7 w-7 rounded-md bg-action-primary-bg text-xs font-semibold text-action-primary-text" : "h-7 w-7 rounded-md border border-border-seam text-xs text-text-primary hover:bg-bg-sunken transition-colors",
161
- children: t
162
- }, t))]
229
+ className: "mt-auto flex items-center justify-between gap-2 pt-4",
230
+ children: [/* @__PURE__ */ C(D, {
231
+ value: e.score,
232
+ disabled: I.isPending,
233
+ onScore: (t) => void xe(e.id, t)
234
+ }), /* @__PURE__ */ C("span", {
235
+ className: "text-xs font-medium text-text-secondary",
236
+ children: e.score === null ? "Unrated" : `${e.score}/5`
237
+ })]
163
238
  })
164
239
  ]
165
240
  }, e.id))
@@ -177,46 +252,46 @@ var E = "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 t
177
252
  children: "Details"
178
253
  }),
179
254
  /* @__PURE__ */ w("dl", {
180
- className: "space-y-2 text-sm",
255
+ className: "space-y-3 text-sm",
181
256
  children: [
182
257
  /* @__PURE__ */ w("div", {
183
- className: "flex items-center justify-between",
258
+ className: "flex items-center justify-between gap-3",
184
259
  children: [/* @__PURE__ */ w("dt", {
185
260
  className: "flex items-center gap-2 text-text-secondary",
186
- children: [/* @__PURE__ */ C(ne, { className: "h-3.5 w-3.5" }), "Pay"]
261
+ children: [/* @__PURE__ */ C(m, { className: "h-3.5 w-3.5" }), "Pay"]
187
262
  }), /* @__PURE__ */ C("dd", {
188
- className: "font-medium text-text-primary",
189
- children: s(k.payMinorUnits, k.currency)
263
+ className: "text-right font-medium text-text-primary",
264
+ children: l(A.payMinorUnits, A.currency)
190
265
  })]
191
266
  }),
192
- k.location && /* @__PURE__ */ w("div", {
193
- className: "flex items-center justify-between",
267
+ A.location && /* @__PURE__ */ w("div", {
268
+ className: "flex items-center justify-between gap-3",
194
269
  children: [/* @__PURE__ */ w("dt", {
195
270
  className: "flex items-center gap-2 text-text-secondary",
196
- children: [/* @__PURE__ */ C(x, { className: "h-3.5 w-3.5" }), "Location"]
271
+ children: [/* @__PURE__ */ C(_, { className: "h-3.5 w-3.5" }), "Location"]
197
272
  }), /* @__PURE__ */ C("dd", {
198
- className: "font-medium text-text-primary",
199
- children: k.location
273
+ className: "text-right font-medium text-text-primary",
274
+ children: A.location
200
275
  })]
201
276
  }),
202
- k.language && /* @__PURE__ */ w("div", {
203
- className: "flex items-center justify-between",
277
+ A.language && /* @__PURE__ */ w("div", {
278
+ className: "flex items-center justify-between gap-3",
204
279
  children: [/* @__PURE__ */ w("dt", {
205
280
  className: "flex items-center gap-2 text-text-secondary",
206
- children: [/* @__PURE__ */ C(v, { className: "h-3.5 w-3.5" }), "Language"]
281
+ children: [/* @__PURE__ */ C(se, { className: "h-3.5 w-3.5" }), "Language"]
207
282
  }), /* @__PURE__ */ C("dd", {
208
- className: "font-medium text-text-primary",
209
- children: k.language
283
+ className: "text-right font-medium text-text-primary",
284
+ children: A.language
210
285
  })]
211
286
  }),
212
- k.submissionDeadline && /* @__PURE__ */ w("div", {
213
- className: "flex items-center justify-between",
287
+ A.submissionDeadline && /* @__PURE__ */ w("div", {
288
+ className: "flex items-center justify-between gap-3",
214
289
  children: [/* @__PURE__ */ w("dt", {
215
290
  className: "flex items-center gap-2 text-text-secondary",
216
- children: [/* @__PURE__ */ C(g, { className: "h-3.5 w-3.5" }), "Deadline"]
291
+ children: [/* @__PURE__ */ C(oe, { className: "h-3.5 w-3.5" }), "Deadline"]
217
292
  }), /* @__PURE__ */ C("dd", {
218
- className: "font-medium text-text-primary",
219
- children: o(k.submissionDeadline, {
293
+ className: "text-right font-medium text-text-primary",
294
+ children: c(A.submissionDeadline, {
220
295
  hour: void 0,
221
296
  minute: void 0
222
297
  })
@@ -224,37 +299,45 @@ var E = "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 t
224
299
  })
225
300
  ]
226
301
  }),
227
- k.isMinorRole && /* @__PURE__ */ C("p", {
228
- className: "mt-3 rounded-lg bg-status-warning-bg-subtle px-3 py-2 text-xs text-status-warning-text",
229
- children: "This is a minor role. Guardian consent and restricted communications apply."
302
+ A.isMinorRole && /* @__PURE__ */ w("div", {
303
+ className: "mt-4 flex items-start gap-2 rounded-lg border border-status-warning-border bg-status-warning-bg-subtle px-3 py-2 text-xs text-status-warning-text",
304
+ children: [/* @__PURE__ */ C(y, { className: "mt-0.5 h-4 w-4 shrink-0" }), /* @__PURE__ */ C("span", { children: "This is a minor role. Guardian consent and restricted communications apply." })]
230
305
  })
231
306
  ]
232
307
  }), /* @__PURE__ */ w(T, {
233
308
  treatment: "glass",
234
309
  className: "border-border-seam p-5",
235
- children: [/* @__PURE__ */ C("h2", {
236
- className: "mb-3 text-sm font-semibold text-text-primary",
237
- children: "Apply"
238
- }), ce ? /* @__PURE__ */ C("p", {
239
- className: "rounded-lg bg-status-success-bg-subtle px-3 py-2 text-sm text-status-success-text",
310
+ children: [/* @__PURE__ */ w("h2", {
311
+ className: "mb-3 flex items-center gap-2 text-sm font-semibold text-text-primary",
312
+ children: [/* @__PURE__ */ C(v, { className: "h-4 w-4 text-text-secondary" }), "Apply for this role"]
313
+ }), he ? /* @__PURE__ */ C("div", {
314
+ className: "rounded-lg border border-status-success-border bg-status-success-bg-subtle px-3 py-2.5 text-sm text-status-success-text",
240
315
  children: "Your application has been submitted."
241
- }) : Q ? /* @__PURE__ */ w("form", {
242
- onSubmit: ue,
316
+ }) : $ ? /* @__PURE__ */ w("form", {
317
+ onSubmit: ve,
243
318
  className: "space-y-3",
244
319
  children: [
245
320
  q && /* @__PURE__ */ C("div", {
246
321
  className: "rounded-lg border border-status-error-border bg-status-error-bg-subtle px-3 py-2 text-xs text-status-error-text",
247
322
  children: q
248
323
  }),
249
- /* @__PURE__ */ C("textarea", {
250
- value: L,
251
- onChange: (e) => R(e.target.value),
252
- rows: 3,
253
- placeholder: "Cover note (why you're right for this role)",
254
- className: E
324
+ /* @__PURE__ */ w("div", {
325
+ className: "space-y-1.5",
326
+ children: [/* @__PURE__ */ C("label", {
327
+ htmlFor: "cover-note",
328
+ className: "block text-xs font-medium text-text-secondary",
329
+ children: "Cover note"
330
+ }), /* @__PURE__ */ C("textarea", {
331
+ id: "cover-note",
332
+ value: R,
333
+ onChange: (e) => z(e.target.value),
334
+ rows: 3,
335
+ placeholder: "Why you're right for this role",
336
+ className: fe
337
+ })]
255
338
  }),
256
339
  /* @__PURE__ */ w("div", {
257
- className: "space-y-2",
340
+ className: "space-y-1.5",
258
341
  children: [
259
342
  /* @__PURE__ */ C("label", {
260
343
  htmlFor: "self-tape-upload",
@@ -266,32 +349,32 @@ var E = "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 t
266
349
  id: "self-tape-upload",
267
350
  type: "file",
268
351
  accept: "video/*",
269
- onChange: (e) => void de(e),
352
+ onChange: (e) => void ye(e),
270
353
  disabled: U,
271
354
  className: "sr-only",
272
355
  "aria-label": "Upload self-tape video"
273
356
  }),
274
- z ? /* @__PURE__ */ w("div", {
357
+ B ? /* @__PURE__ */ w("div", {
275
358
  className: "flex items-center justify-between gap-2 rounded-lg border border-border-seam bg-bg-surface px-3 py-2",
276
359
  children: [/* @__PURE__ */ w("span", {
277
360
  className: "flex min-w-0 items-center gap-2 text-sm text-text-primary",
278
- children: [/* @__PURE__ */ C(_, { className: "h-4 w-4 shrink-0 text-status-success-text" }), /* @__PURE__ */ C("span", {
361
+ children: [/* @__PURE__ */ C(h, { className: "h-4 w-4 shrink-0 text-status-success-text" }), /* @__PURE__ */ C("span", {
279
362
  className: "truncate",
280
- children: V || "Self-tape uploaded"
363
+ children: me || "Self-tape uploaded"
281
364
  })]
282
365
  }), /* @__PURE__ */ C("button", {
283
366
  type: "button",
284
- onClick: fe,
285
- className: "rounded-md p-1 text-text-secondary hover:text-text-primary",
367
+ onClick: be,
368
+ className: "rounded-md p-1 text-text-secondary transition-colors hover:text-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]",
286
369
  "aria-label": "Remove self-tape",
287
- children: /* @__PURE__ */ C(oe, { className: "h-4 w-4" })
370
+ children: /* @__PURE__ */ C(ue, { className: "h-4 w-4" })
288
371
  })]
289
372
  }) : /* @__PURE__ */ C("button", {
290
373
  type: "button",
291
374
  onClick: () => Z.current?.click(),
292
375
  disabled: U,
293
- className: "inline-flex w-full items-center justify-center gap-2 rounded-lg border border-dashed border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-secondary hover:border-border-seam hover:text-text-primary disabled:opacity-50 transition-colors",
294
- children: U ? /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(y, { className: "h-4 w-4 animate-spin" }), "Uploading…"] }) : /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(ie, { className: "h-4 w-4" }), "Upload self-tape video"] })
376
+ className: "inline-flex w-full items-center justify-center gap-2 rounded-lg border border-dashed border-border-subtle bg-bg-surface px-3 py-3 text-sm text-text-secondary transition-colors hover:border-border-seam hover:text-text-primary disabled:opacity-50 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]",
377
+ children: U ? /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(ce, { className: "h-4 w-4 animate-spin" }), "Uploading…"] }) : /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(le, { className: "h-4 w-4" }), "Upload self-tape video"] })
295
378
  }),
296
379
  G && /* @__PURE__ */ C("p", {
297
380
  className: "rounded-lg border border-status-error-border bg-status-error-bg-subtle px-3 py-2 text-xs text-status-error-text",
@@ -301,14 +384,14 @@ var E = "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 t
301
384
  }),
302
385
  /* @__PURE__ */ w("button", {
303
386
  type: "submit",
304
- disabled: P.isPending || U,
305
- className: "inline-flex w-full items-center justify-center gap-2 rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:opacity-90 disabled:opacity-50 transition-opacity",
306
- children: [/* @__PURE__ */ C(re, { className: "h-4 w-4" }), P.isPending ? "Submitting…" : "Submit Application"]
387
+ disabled: F.isPending || U,
388
+ className: "inline-flex w-full items-center justify-center gap-2 rounded-lg bg-action-primary-bg px-4 py-2.5 text-sm font-medium text-action-primary-text transition-opacity hover:opacity-90 disabled:opacity-50 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]",
389
+ children: [/* @__PURE__ */ C(v, { className: "h-4 w-4" }), F.isPending ? "Submitting…" : "Submit Application"]
307
390
  })
308
391
  ]
309
392
  }) : /* @__PURE__ */ C("p", {
310
- className: "text-sm text-text-secondary",
311
- children: "This audition is no longer open."
393
+ className: "rounded-lg bg-bg-sunken px-3 py-2.5 text-sm text-text-secondary",
394
+ children: "This audition is no longer open for applications."
312
395
  })]
313
396
  })]
314
397
  })]
@@ -316,6 +399,6 @@ var E = "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 t
316
399
  });
317
400
  };
318
401
  //#endregion
319
- export { D as AuditionDetailPage };
402
+ export { O as AuditionDetailPage };
320
403
 
321
404
  //# sourceMappingURL=AuditionDetailPage.js.map