feat(ui): event autocomplete + log-bet deep link, steam-move label

- MyBets: add a "Find event" MudAutocomplete over upcoming events (loaded once,
  filtered client-side) that fills the Event ID; the manual ID field stays as a
  fallback. Backed by IBetJournalService.GetUpcomingEventOptionsAsync.
- Add a "Log bet" CTA on the anomaly detail page that deep-links to
  /my-bets?eventId=<code>; the journal prefills the Event ID from the query.
- Render the new SteamMove anomaly kind with a localized label in the card and
  detail KindLabel switches (was falling through to the raw enum name).
- Localization (en+ru) for all new strings.
This commit is contained in:
2026-05-28 23:08:56 +03:00
parent 2b1025cae3
commit d9d92ea8fd
7 changed files with 103 additions and 0 deletions
@@ -163,6 +163,7 @@
<data name="Anomaly.Live"><value>Anomaly</value></data>
<data name="Anomaly.Kind.SuspensionFlip"><value>Suspension flip</value></data>
<data name="Anomaly.Kind.SteamMove"><value>Steam move</value></data>
<data name="Anomaly.Score"><value>Confidence</value></data>
<!-- Phase 7 — Anomaly feed UI -->
@@ -190,6 +191,7 @@
<data name="Anomaly.Evidence.FavouriteSwap"><value>Favourite swap</value></data>
<data name="Anomaly.Detail.EvidenceTitle"><value>Evidence timeline</value></data>
<data name="Anomaly.Detail.LinkBackToEvent"><value>Open event</value></data>
<data name="Action.LogBet"><value>Log bet</value></data>
<data name="Anomaly.Detail.BackToFeed"><value>Back to feed</value></data>
<data name="Anomaly.Detail.NotFound"><value>Anomaly not found — it may have been pruned.</value></data>
<data name="Anomaly.Empty.NoneInRange"><value>No anomalies match the current filters. Loosen the severity threshold or widen the date range.</value></data>
@@ -387,6 +389,9 @@
<data name="Journal.Action.Cancel"><value>Cancel</value></data>
<data name="Journal.Field.EventId"><value>Event ID</value></data>
<data name="Journal.Field.EventId.Hint"><value>Numeric ID from the event detail URL.</value></data>
<data name="Journal.Field.FindEvent"><value>Find event</value></data>
<data name="Journal.Field.FindEvent.Placeholder"><value>Search by team name…</value></data>
<data name="Journal.Field.FindEvent.Hint"><value>Pick an upcoming event to fill the ID, or type it below.</value></data>
<data name="Journal.Field.Type"><value>Bet type</value></data>
<data name="Journal.Field.Side"><value>Side</value></data>
<data name="Journal.Field.Value"><value>Threshold</value></data>