Commit Graph

586 Commits

Author SHA1 Message Date
gnezim 9ff034d19f OnlineBoard search: render Купить/Онлайн регистрация in expanded row
Angular's board search results expansion shows [Купить] [Онлайн
регистрация] [Детали рейса]. React only rendered Details. Added a
`renderActions` prop on FlightCard/FlightList so the feature layer
can inject extra buttons without the ui layer importing from
features. OnlineBoardSearchPage wires it to FlightActions with
showShare=false (the row already has a dedicated share icon).

Visibility rules fall through to canBuyTicket / canRegister (same
as BoardDetailsHeader), so cancelled/past flights still hide the
Buy button and carriers without a registrationUrl still hide the
Online Registration button — matching Angular's per-flight gating.

Integration test mocks useAppSettings to avoid requiring the real
ApiClientProvider in flight-search.test.tsx.
2026-04-20 18:27:31 +03:00
gnezim 2134447664 Replace margin/padding 20px directional literals with vars.$space-xl tokens (3 files) 2026-04-20 18:19:10 +03:00
gnezim 8de1f197fd Replace padding/margin 10px/20px literals with vars.$space-m/$space-xl tokens (3 files) 2026-04-20 18:17:41 +03:00
gnezim 2bc61de87d Replace gap 10/12/15/20px literals with vars.$space-m/m2/l/xl tokens across 5 SCSS files 2026-04-20 18:05:50 +03:00
gnezim 9778d6ba8a Replace 8px padding/gap/margin literals with vars.$space-s2 across 7 SCSS files 2026-04-20 18:04:33 +03:00
gnezim 50885b7afd font-size 22px/30px → fonts.$font-size-xl2/$font-size-xxl across 4 SCSS files 2026-04-20 17:54:01 +03:00
gnezim 623f282f56 font-size 18px/20px → fonts.$font-size-xl/$font-size-xl1 across 16 SCSS files (brand palette parity) 2026-04-20 17:52:31 +03:00
gnezim fbf99f427f font-size: 16px → fonts.$font-size-l across 8 SCSS files (brand palette parity) 2026-04-20 17:49:21 +03:00
gnezim 93684c1bbb font-size: 14px → fonts.$font-size-m across 15 SCSS files (brand palette parity) 2026-04-20 17:48:12 +03:00
gnezim 41ed2bdc1d font-size: 12px → fonts.$font-size-s across 21 SCSS files (brand palette parity) 2026-04-20 17:37:03 +03:00
gnezim 42e595cb16 font-size: 10px → fonts.$font-size-xs across 5 feature SCSS files 2026-04-20 17:35:44 +03:00
gnezim 2037ba0141 Swap font-weight 400/700 literals for fonts.$font-regular/$font-bold tokens across 8 SCSS files 2026-04-20 17:25:01 +03:00
gnezim 4a653849f4 Final font-weight: 500 sweep: 9 more SCSS files use fonts.$font-medium (brand palette parity) 2026-04-20 17:21:22 +03:00
gnezim 43a7380059 Replace font-weight: 500 literals with fonts.$font-medium across 8 SCSS files (brand palette parity) 2026-04-20 17:08:06 +03:00
gnezim 9b5aaaeebc Replace remaining font-weight: 600 with fonts.$font-bold across 4 SCSS files (brand palette parity) 2026-04-20 17:06:20 +03:00
gnezim c283e3bab4 WeekTabs + FullRouteTimeline: font-weight: 600 → fonts.$font-bold (brand palette parity) 2026-04-20 16:56:28 +03:00
gnezim 3cb9f87d04 ScheduleFlightBody: swap 3px literals for vars.$border-radius (3 occurrences) 2026-04-20 16:54:22 +03:00
gnezim e694ccf42b ScheduleFlightBody "Купить" button: wire onBuy → Aeroflot booking URL
DayGroupedFlightList gains an optional `onBuy` prop that forwards to
ScheduleFlightBody. ScheduleSearchPage implements handleBuy — matches
BoardDetailsHeader.BuyTicketButton: opens
`aeroflot.ru/sb/app/{lang}-{lang}#/search?routes={dep}.{yyyyMMdd}.{arr}`
in a new tab, using the first leg's airportCode + scheduled-departure
UTC for direct and multi-leg flights.

Previously the Buy button rendered but its click was `onBuy?.()` with
no handler wired, so nothing happened. The button text + wiring now
mirror Angular's `buy-ticket-button.component`.
2026-04-20 16:51:06 +03:00
gnezim 4e8934f0c9 OnlineBoardDetailsPage cancelled bar: derive light red from $red token (#fbd4d4 → rgba($red, 0.2)) 2026-04-20 16:38:25 +03:00
gnezim bb49a5d609 Fix Schedule "Details" button + search-history sync
Schedule:
- ScheduleSearchPage wires handleFlightClick to DayGroupedFlightList so
  the "Детали рейса" button in the expanded flight body navigates to
  /{lang}/schedule/{carrier}{flightNumber}-{yyyyMMdd} (Angular's
  ScheduleNavigationService.toDetailsPage equivalent). Previously the
  Details button fired onStatus → no handler → no-op.

Search history:
- useSearchHistory now broadcasts a custom `afl:search-history-changed`
  window event on add/clear and listens for it in a useEffect. Fixes
  the case where a route-level component (ScheduleSearchPage) adds to
  storage while a sibling SearchHistory sidebar had already captured
  an empty initial value via useState — the sidebar now re-reads
  storage and shows the history without a page reload.
2026-04-20 16:34:52 +03:00
gnezim d44f97d312 OnlineBoardSearchPage retry button: $blue-light fill + $blue-light--hover (brand button parity) 2026-04-20 16:22:03 +03:00
gnezim 3806e8371a ScheduleSearchPage direction-switch: $space-xl margin + bottom border (Angular .schedule-home-page-header parity) 2026-04-20 16:18:37 +03:00
gnezim 40c3ed62fa OperatorLogo: add round-variant paths for 12 missing carriers (RO/DP/OM/KL/AY/DL/OK/JU/UX/BT/AM/AR) 2026-04-20 15:56:51 +03:00
gnezim 67bf78d22e BoardDetailsHeader actions: transparent button hover uses $blue-extra-light (brand palette) 2026-04-20 15:51:46 +03:00
gnezim ea25f5c017 Replace 4 rgba(46,87,255,0.04/0.06/0.08) hover tints with $blue-extra-light / $blue-icon (brand palette) 2026-04-20 15:50:30 +03:00
gnezim d063281b09 ScheduleFlightBody share-btn: hover uses $blue-icon (Angular share-button parity) 2026-04-20 15:48:13 +03:00
gnezim aecf06c829 TimeGroup day-change: render as chip with blue-icon border + blue-light text (Angular day-change-square parity) 2026-04-20 15:46:50 +03:00
gnezim 3f04ade411 CityPickerPopup: #ffffff → colors.$white (brand palette parity) 2026-04-20 15:44:24 +03:00
gnezim f823aafb35 FlightCard/FlightDetailsAccordion: #8a8a8a → $light-gray (brand palette parity) 2026-04-20 15:28:15 +03:00
gnezim 23b5a35c70 DayTabs: mobile breakpoint 768px→640px, non-standard 8px radius→vars.$border-radius (Angular parity)
CI / ci (push) Failing after 51s
Deploy / build-and-deploy (push) Failing after 6s
2026-04-20 15:25:03 +03:00
gnezim ae133c1e36 useAppSettings: align fallback defaults to Angular AppSettings (1/7 board, 1/330 schedule, 2h flight status) 2026-04-20 15:21:52 +03:00
gnezim 15f3356a75 ScheduleSearchPage: add Angular page-footer-notes to results frame 2026-04-20 15:17:34 +03:00
gnezim 81d979aa34 OnlineBoardSearchPage footer: render Angular page-footer-notes DOM + styling (blue-extra-light card, sort-note *) 2026-04-20 15:15:12 +03:00
gnezim 71b836ec7b FlightsMapFilter exchange button: 35x40 pill with +/-10px margin overlap (Angular .button-change parity) 2026-04-20 14:37:03 +03:00
gnezim 0665799555 FlightsMap loader: overlay + 60×60 ring with plane glyph (Angular loader-sheet parity) 2026-04-20 14:33:23 +03:00
gnezim e66661cee9 FlightsMap: no-directions overlay mirrors Angular no-directions-sheet (translucent bg + white card) 2026-04-20 14:28:21 +03:00
gnezim daf3ed35a5 FlightStatus label colors: match icon palette (green for in-flight/arrived, orange for delayed) 2026-04-20 14:24:04 +03:00
gnezim 3c869198d6 FlightStatus icon colors: use brand palette (Angular statusColors parity) 2026-04-20 14:22:29 +03:00
gnezim 6947e07fd1 FlightsMiniList selected: blue-light border (Angular parity, not blue) 2026-04-20 14:07:42 +03:00
gnezim c91fec16c2 FlightSchedule days strip: filled -color pills (Angular .days .day parity) 2026-04-20 14:00:33 +03:00
gnezim b4aea2a6fd FlightList: empty state matches Angular page-empty-list (icon + title + text, desktop/mobile layouts) 2026-04-20 13:56:54 +03:00
gnezim d7a9ae5d79 FlightCard schedule grid: match Angular schedule-list-flight-header (80px number, minmax(45,240)px stations) 2026-04-20 13:52:59 +03:00
gnezim 3e0b19f633 FlightDetailsAccordion: 1.3px dotted divider between tabs (Angular parity) 2026-04-20 13:32:20 +03:00
gnezim 21a557b875 ScheduleFilter: search button uses Angular blue-light 48px pill styling (Angular parity) 2026-04-20 13:28:30 +03:00
gnezim e4c8948cdc ScheduleFilter: add return-flight date range + time slider when round-trip (Angular parity) 2026-04-20 13:26:35 +03:00
gnezim 9134a830da ScheduleStartPage: add validation-tooltip SCSS for same-cities error 2026-04-20 13:23:08 +03:00
gnezim d44eb2fe71 ScheduleStartPage: add departure===arrival same-cities validation (Angular parity) 2026-04-20 13:21:51 +03:00
gnezim 02c6003225 ScheduleStartPage: Calendar min/max ±1/+330 days, return dates as single range picker (Angular parity) 2026-04-20 13:20:29 +03:00
gnezim 922e41e5c9 ScheduleStartPage: use shared CityAutocomplete (adds clear button + regional picker parity) 2026-04-20 13:18:29 +03:00
gnezim c28cfc2fd3 ScrollUpButton: 40×40, extra-blue bg, right: 30px / bottom: 80px (Angular parity) 2026-04-20 13:03:23 +03:00