331 Commits

Author SHA1 Message Date
Ruslan Bakiev
45ec9923e3 feat(catalog): add map to all catalog pages
All checks were successful
Build Docker Image / build (push) Successful in 4m47s
All catalog pages now use CatalogPage component with map on the right side:
- /catalog/hubs/[id] - shows hub on map
- /catalog/offers - shows empty map (products have no coords)
- /catalog/offers/[productId] - shows hubs where product can be delivered
- /catalog/suppliers/[supplierId] - shows supplier location
- /catalog/suppliers/[supplierId]/[productId] - shows hubs for supplier's product
- /catalog/suppliers/[supplierId]/[productId]/[hubId] - shows source and destination
2026-01-16 02:00:31 +07:00
Ruslan Bakiev
181dc4ea6b feat: use filtered geo queries for catalog pages
All checks were successful
Build Docker Image / build (push) Successful in 4m57s
- /hubs/[id]: use findProductsForHub to show only deliverable products
- /offers/[productId]: use findHubsForProduct to show only reachable hubs
- /suppliers/[id]/[productId]: use findSupplierProductHubs for supplier-specific hubs
- Add new GraphQL operations for geo queries
2026-01-16 01:42:18 +07:00
Ruslan Bakiev
1e87a14065 feat(catalog): implement step-by-step navigation for offers and suppliers
All checks were successful
Build Docker Image / build (push) Successful in 4m49s
- Transform offers/index.vue to show products list with sparkline charts
- Create nested routes for offers: /offers → /offers/[productId] → /offers/[productId]/[hubId]
- Create nested routes for suppliers: /suppliers → /suppliers/[supplierId] → /suppliers/[supplierId]/[productId] → /suppliers/[supplierId]/[productId]/[hubId]
- Add OffersBreadcrumbs and SuppliersBreadcrumbs components for navigation
- Update HubCard to accept custom linkTo prop
- Key difference: Suppliers calculation uses FindRoutes (single source), Offers uses FindProductRoutes (all sources)
2026-01-16 00:52:47 +07:00
Ruslan Bakiev
210d3e935c feat: вложенные роуты хаб/товар с хлебными крошками
All checks were successful
Build Docker Image / build (push) Successful in 4m34s
- /catalog/hubs/[id] — список товаров с графиками
- /catalog/hubs/[id]/[productId] — страница товара с большим графиком и предложениями
- CatalogBreadcrumbs — компонент хлебных крошек
2026-01-16 00:25:41 +07:00
Ruslan Bakiev
bab0e9e539 refactor: убрать автовыбор продукта, карточки на всю ширину
All checks were successful
Build Docker Image / build (push) Successful in 4m53s
2026-01-16 00:02:17 +07:00
Ruslan Bakiev
25030f0350 feat: добавить мок-данные графиков цен на карточки продуктов
All checks were successful
Build Docker Image / build (push) Successful in 4m43s
2026-01-15 23:50:52 +07:00
Ruslan Bakiev
71663186e2 refactor: убрать ring бордер с карточки продукта
All checks were successful
Build Docker Image / build (push) Successful in 4m34s
2026-01-15 23:39:35 +07:00
Ruslan Bakiev
5b620f77b3 Improve hub page: new RouteStepper, HubProductCard with ApexCharts
All checks were successful
Build Docker Image / build (push) Successful in 4m57s
- Redesign RouteStepper: nodes connected by lines with distance on line
- Add HubProductCard component with sparkline chart background
- Auto-select first product when hub page loads
- Remove placeholder with package-x icon
- Add ApexCharts plugin for charts
- Pass startName/endName to RouteStepper for route visualization
2026-01-15 15:45:26 +07:00
Ruslan Bakiev
97f346ba83 Fix navigation background color: bg-base-100 → bg-base-200
All checks were successful
Build Docker Image / build (push) Successful in 4m10s
2026-01-15 13:03:16 +07:00
Ruslan Bakiev
43158924ab Fix smooth scroll animation and map positioning
All checks were successful
Build Docker Image / build (push) Successful in 4m4s
- Replace v-show with transform: translateY() for smooth header collapse animation
- Wrap MainNav + SubNav in fixed container with dynamic transform
- Remove sticky positioning from MainNavigation and SubNavigation
- Fix map to extend to screen edge (right-0, no rounded corners)
- Add dynamic padding-top to main for fixed header compensation
2026-01-15 12:51:00 +07:00
Ruslan Bakiev
9b738e6841 Remove py-4 from main to fix gap between SubNav and SearchBar
All checks were successful
Build Docker Image / build (push) Successful in 4m12s
2026-01-15 12:32:22 +07:00
Ruslan Bakiev
b9f44ecaf4 Fix SearchBar height and remove padding gaps
All checks were successful
Build Docker Image / build (push) Successful in 4m24s
2026-01-15 12:15:48 +07:00
Ruslan Bakiev
ea7c0b460a Move expand button from separate bar to SearchBar area
All checks were successful
Build Docker Image / build (push) Successful in 4m4s
2026-01-15 11:55:41 +07:00
Ruslan Bakiev
46b1a17a23 Fix smooth scroll in CatalogPage - use pixel values from useScrollCollapse
All checks were successful
Build Docker Image / build (push) Successful in 4m3s
2026-01-15 11:47:56 +07:00
Ruslan Bakiev
03485b77a5 Refactor: use topnav layout + CatalogPage component
All checks were successful
Build Docker Image / build (push) Successful in 4m11s
- Remove catalog.vue layout and useCatalogLayout.ts (broken provide/inject)
- All catalog/clientarea list pages now use topnav layout
- Pages use CatalogPage component for SearchBar + Map functionality
- Clean architecture: layout handles nav, component handles features
2026-01-15 11:18:57 +07:00
Ruslan Bakiev
7ea96a97b3 Refactor catalog layout: replace Teleport with provide/inject
All checks were successful
Build Docker Image / build (push) Successful in 4m1s
- Create useCatalogLayout composable for data transfer from pages to layout
- Layout now owns SearchBar and CatalogMap components directly
- Pages provide data via provideCatalogLayout()
- Fixes navigation glitches (multiple SearchBars) when switching tabs
- Support custom subNavItems for clientarea pages
- Unify 6 pages to use catalog layout:
  - catalog/offers, suppliers, hubs
  - clientarea/orders, addresses, offers
2026-01-15 10:49:40 +07:00
Ruslan Bakiev
4bd5b882e0 Fix header heights: MainNav 64px, SubNav 54px, SearchBar 56px
All checks were successful
Build Docker Image / build (push) Successful in 4m28s
2026-01-15 10:30:40 +07:00
Ruslan Bakiev
3f5c2d6e60 Migrate offers and suppliers pages to catalog layout with Teleport
All checks were successful
Build Docker Image / build (push) Successful in 4m34s
2026-01-15 10:16:35 +07:00
Ruslan Bakiev
9411eb9874 Change body background to base-300 for better color hierarchy
All checks were successful
Build Docker Image / build (push) Successful in 6m28s
2026-01-15 10:07:56 +07:00
Ruslan Bakiev
e451267c36 Fix search bar top padding on catalog page
Some checks failed
Build Docker Image / build (push) Has been cancelled
2026-01-15 10:04:45 +07:00
Ruslan Bakiev
0337cebc63 Simplify OfferResultCard and use daisyUI Steps
All checks were successful
Build Docker Image / build (push) Successful in 4m42s
- Remove sourceName, latitude, longitude props from OfferResultCard
- Remove LocationMiniMap component (not needed, main map is on the side)
- Convert RouteStepper to use daisyUI steps-horizontal
- Update hub page and CalcResultContent to remove unused props
2026-01-15 00:33:17 +07:00
Ruslan Bakiev
f03554893b Update OfferResultCard: add location, mini map, fix price format
All checks were successful
Build Docker Image / build (push) Successful in 4m30s
- Remove distance from right side (shown in stepper)
- Change price format to symbol + formatted number (e.g. $1,200/тонна)
- Add locationName prop for displaying offer location
- Add LocationMiniMap component for showing point on map
- Update hub page and CalcResultContent to pass coordinates
2026-01-15 00:07:21 +07:00
Ruslan Bakiev
de95dbd059 Unify offer cards: RouteStepper + OfferResultCard components
All checks were successful
Build Docker Image / build (push) Successful in 4m36s
- Add RouteStepper component with transport icons (🚛 🚂 🚢)
- Add OfferResultCard with price, distance, route stages
- Update hub page to use OfferResultCard
- Update CalcResultContent to use OfferResultCard
2026-01-14 23:47:42 +07:00
Ruslan Bakiev
1c19e5cb78 Use Card components instead of buttons for product selection
All checks were successful
Build Docker Image / build (push) Successful in 4m30s
2026-01-14 23:34:34 +07:00
Ruslan Bakiev
c780c638ba Redesign hub detail page: buttons instead of select, show prices
All checks were successful
Build Docker Image / build (push) Successful in 4m37s
2026-01-14 23:26:03 +07:00
Ruslan Bakiev
23bdd926bf fix: header height 118 -> 104px
All checks were successful
Build Docker Image / build (push) Successful in 4m28s
2026-01-14 22:49:59 +07:00
Ruslan Bakiev
8a0a32ce6b fix: remove overflow-hidden from header
All checks were successful
Build Docker Image / build (push) Successful in 4m40s
2026-01-14 22:43:00 +07:00
Ruslan Bakiev
ff2b25d8c7 fix: catalog layout - header height, search width, overflow
All checks were successful
Build Docker Image / build (push) Successful in 4m47s
2026-01-14 22:36:37 +07:00
Ruslan Bakiev
6f16c862f4 feat: smooth scroll animation for catalog header
All checks were successful
Build Docker Image / build (push) Successful in 4m41s
- Dynamic top positioning based on scrollY
- Chevron inside SearchBar for expand/collapse
- All layers position:fixed with calculated offsets
2026-01-14 22:03:27 +07:00
Ruslan Bakiev
c10c085b70 feat: new catalog layout with all fixed layers
All checks were successful
Build Docker Image / build (push) Successful in 4m38s
- Add catalog.vue layout with all layers position:fixed
- Layer 1: MainNavigation (fixed top-0, bg-base-200)
- Layer 2: SubNavigation (fixed top-16, bg-base-200)
- Layer 3: SearchBar (fixed, bg-base-100)
- Layer 4: Map (fixed, right side, to bottom)
- Update hubs page to use new layout with Teleport
- Collapsible header on scroll
2026-01-14 21:48:09 +07:00
Ruslan Bakiev
9d0b1a6b15 feat: collapsible header on scroll for catalog pages
All checks were successful
Build Docker Image / build (push) Successful in 4m24s
- Add useScrollCollapse composable to track scroll and collapse state
- Update topnav.vue to show collapsed bar with chevron when scrolled
- Add collapse button (chevron up) to SubNavigation
- Make SubNavigation sticky below MainNavigation
- Update CatalogPage map/searchbar positions based on header state
2026-01-14 21:34:06 +07:00
Ruslan Bakiev
25da16f854 Make search bar sticky third navigation bar
All checks were successful
Build Docker Image / build (push) Successful in 5m17s
- Add sticky positioning with proper styling (bg, border-b)
- Use negative margins to span full width like nav bars
- Update map offset to account for 3 bars (11rem with search bar)
2026-01-14 13:06:30 +07:00
Ruslan Bakiev
479412d901 Hide duplicate counter in pagination when search bar is present
All checks were successful
Build Docker Image / build (push) Successful in 5m27s
Add hideCounter prop to PaginationLoadMore and use it on hubs page
2026-01-14 12:57:58 +07:00
Ruslan Bakiev
7bd5000dc4 Fix map positioning when search bar is present
All checks were successful
Build Docker Image / build (push) Successful in 5m13s
Use dynamic mapTopClass/mapHeightClass based on searchBar slot:
- With searchBar: top-44 (176px), height calc(100vh-12rem)
- Without searchBar: top-32 (128px), height calc(100vh-9rem)
2026-01-14 12:50:57 +07:00
Ruslan Bakiev
134b8a5eb4 Add CatalogSearchBar component with filter badges
All checks were successful
Build Docker Image / build (push) Successful in 5m8s
- Create CatalogSearchBar.vue with search input, filter badges (× to remove), filter dropdown, counter, sort dropdown
- Integrate searchBar slot into CatalogPage with displayedCount and totalCount
- Update hubs page to use CatalogSearchBar with transport type and country filters
- Add translations for search bar in common.json
- Add transport/country filter labels in catalogHubsSection.json
2026-01-14 12:31:38 +07:00
Ruslan Bakiev
a493d2cf01 Add map improvements: hover highlight, fitBounds, search checkbox
All checks were successful
Build Docker Image / build (push) Successful in 5m45s
2026-01-14 12:09:15 +07:00
Ruslan Bakiev
c458f851dc Fix map clusters: use Apollo client, remove flyTo on hover
All checks were successful
Build Docker Image / build (push) Successful in 4m48s
2026-01-14 11:50:39 +07:00
Ruslan Bakiev
46f8e97ee9 feat: add server-side clustering to CatalogPage for hubs
All checks were successful
Build Docker Image / build (push) Successful in 5m8s
2026-01-14 11:16:26 +07:00
Ruslan Bakiev
b75459c8be fix: remove separate /map pages, add hover highlight to CatalogPage
All checks were successful
Build Docker Image / build (push) Successful in 4m48s
- Delete hubs/map.vue, offers/map.vue, suppliers/map.vue
- Pass hoveredId to CatalogMap for marker highlighting
- Split view on main pages (like Airbnb) is the correct approach
2026-01-14 10:46:04 +07:00
Ruslan Bakiev
844878ce85 feat(map): add server-side h3 clustering and hover highlight
All checks were successful
Build Docker Image / build (push) Successful in 4m55s
- Add useClusteredNodes composable for fetching clustered nodes
- Update CatalogMap to support server-side clustering mode
- Add bounds-change event for fetching clusters on map move/zoom
- Add hover event to HubCard for marker highlighting
- Update hubs/map page to use new clustering system
2026-01-14 10:34:44 +07:00
Ruslan Bakiev
fbcfc6caf8 refactor(hub): use CatalogPage component for split layout
All checks were successful
Build Docker Image / build (push) Successful in 4m19s
2026-01-09 01:33:03 +07:00
Ruslan Bakiev
cd2c8afff1 refactor(hub): replace sections with sources list and map
All checks were successful
Build Docker Image / build (push) Successful in 4m45s
- Remove Offers, Suppliers, Products, NearbyConnections sections
- Add product filter dropdown
- Show sources list with routes from findProductRoutes API
- Display routes on map using RequestRoutesMap component
- Add i18n keys for sources section (en/ru)
2026-01-09 01:08:56 +07:00
Ruslan Bakiev
01e8eb2cfa fix: separate list items from map points in orders page
All checks were successful
Build Docker Image / build (push) Successful in 4m58s
- Add mapItems prop to CatalogPage for separate map data
- List shows one card per order, map shows source+dest points
- Fix hover to match by orderUuid pattern
2026-01-08 14:52:58 +07:00
Ruslan Bakiev
75ef38c8b2 feat: show source and destination points on orders map
All checks were successful
Build Docker Image / build (push) Successful in 5m18s
Use coordinates from stages to display both origin and destination
2026-01-08 14:35:59 +07:00
Ruslan Bakiev
13f60bd022 feat: show transport type on routes + unify map height
All checks were successful
Build Docker Image / build (push) Successful in 4m33s
- Add transportType display (🚂 ЖД / 🚛 Авто) in RouteStagesList
- Pass transportType from CalcResultContent to RouteStagesList
- Unify map height in CatalogPage for orders/addresses pages
2026-01-08 14:22:37 +07:00
Ruslan Bakiev
821dd72809 fix(ui): hide SubNavigation on home page, reorder sections, remove description
All checks were successful
Build Docker Image / build (push) Successful in 4m9s
2026-01-08 14:01:18 +07:00
Ruslan Bakiev
6b2208f0ae Add KYC translations, AI button, improve chat, swap homepage sections
Some checks failed
Build Docker Image / build (push) Has been cancelled
- Add missing kycOverview.list translations (en + ru)
- Add AI assistant button to navigation (left of globe)
- Improve AI chat layout: fixed textarea at bottom, full width
- Swap homepage sections: How it works before Who it's for
2026-01-08 13:58:09 +07:00
Ruslan Bakiev
34c7404a42 Refactor navigation and fix UI issues
All checks were successful
Build Docker Image / build (push) Successful in 4m13s
- Add py-4 to main layout for detail page padding
- Show search widget only on main page (not all catalog pages)
- Add 4 menu items: Search, Catalog, Orders, Seller
- Fix orders page click to navigate to order detail
- Update CatalogPage map positioning for new nav structure
- Add search translation to cabinetNav i18n files
2026-01-08 13:26:23 +07:00
Ruslan Bakiev
f3e0260325 Fix search widget destination field not passing mode=search
All checks were successful
Build Docker Image / build (push) Successful in 4m1s
When clicking destination in GlobalSearchBar, now passes ?mode=search
to /select-location so the selection gets saved to searchStore
2026-01-08 13:18:05 +07:00
Ruslan Bakiev
675ccc2064 Add hasSubNav prop for map positioning (3 vs 2 nav levels)
All checks were successful
Build Docker Image / build (push) Successful in 3m58s
2026-01-08 13:11:13 +07:00