Commit Graph
88 Commits
Author SHA1 Message Date
Ruslan Bakiev 19aca61845 fix(catalog): prevent unnecessary list reloads on map movement
Build Docker Image / build (push) Successful in 4m14s
- Remove currentMapBounds from watch - it changes on every map move
- Watch only filterByBounds and urlBounds (URL-based state)
- Add early return in setBoundsFilter if bounds haven't changed

This fixes the issue where the list was reloading on every map movement
even when the 'filter by bounds' checkbox was OFF.
2026-01-26 22:24:47 +07:00
Ruslan Bakiev 6545eeabea feat(catalog): persist bounds filter state in URL
Build Docker Image / build (push) Successful in 4m14s
- Add urlBounds and filterByBounds computed from URL query
- Add setBoundsInUrl and clearBoundsFromUrl actions
- Update index.vue to use URL-based bounds state
- Bounds written to URL as comma-separated values (west,south,east,north)

This enables sharing links with map viewport bounds filter.
2026-01-26 21:40:44 +07:00
Ruslan Bakiev f9eb027ebd chore: regenerate geo GraphQL types with bounds params
Build Docker Image / build (push) Has been cancelled
2026-01-26 21:38:44 +07:00
Ruslan Bakiev b02e3882cc feat(catalog): add bounds filtering to list queries
Build Docker Image / build (push) Has been cancelled
- Add west/south/east/north params to HubsList, SuppliersList, ProductsList GraphQL
- Update useCatalogHubs to pass bounds to query
- Update useCatalogSuppliers to pass bounds to query
- Update useCatalogProducts to pass bounds to query
2026-01-26 21:37:23 +07:00
Ruslan Bakiev c56bb57fbf fix(CatalogMap): use proper icons with colors for related points
- Add loadRelatedPointIcons to load icons for all entity types
- Change related points layer from circle to symbol with icons
- Each type (hub, supplier, offer) gets its standard color:
  - hub: green (#22c55e)
  - supplier: blue (#3b82f6)
  - offer: orange (#f97316)
2026-01-26 21:34:07 +07:00
Ruslan Bakiev c6abf8ad4a fix(catalog): hide filter checkbox in info mode + color related points by type
Build Docker Image / build (push) Successful in 3m48s
2026-01-26 21:21:19 +07:00
Ruslan Bakiev 33c1559ab7 fix(catalog): hide clusters when InfoPanel is open, show only related points
Build Docker Image / build (push) Successful in 3m51s
2026-01-26 20:47:05 +07:00
Ruslan Bakiev e905098cb5 refactor(catalog): replace InfoPanel tabs with vertical sections
Build Docker Image / build (push) Successful in 3m57s
- Remove all tabs from InfoPanel, use stacked sections instead
- Load suppliers (for hub) and hubs (for supplier) immediately
- Show entity header as text, not card
- Simplify relatedPoints to show all points on map
- Add translations for new section titles
2026-01-26 19:34:04 +07:00
Ruslan Bakiev 69bb978526 fix(catalog): add badge when selecting from list + fix checkbox position
Build Docker Image / build (push) Successful in 3m51s
- onSelectItem now calls selectItem to add filter badge
- Checkbox repositioned to left-[420px] to not hide behind panel
- Hide List button when panel is open
2026-01-26 18:15:26 +07:00
Ruslan Bakiev 263e60e003 feat: simplify hero to single tagline
Build Docker Image / build (push) Successful in 3m36s
2026-01-26 18:06:07 +07:00
Ruslan Bakiev eb2266d66f feat: hero effect with dynamic navbar height and inline title
Build Docker Image / build (push) Successful in 3m41s
2026-01-26 17:56:24 +07:00
Ruslan Bakiev 3f56a2f117 feat(catalog): add loading states for InfoPanel tabs and filter map by active tab
Build Docker Image / build (push) Successful in 3m35s
- Add separate loading states for products, hubs, suppliers, offers
- Show spinner on tabs while loading, disable tab during load
- Filter relatedPoints on map by current active tab
2026-01-26 17:49:59 +07:00
Ruslan Bakiev f680740f52 Center MainNav vertically on home hero, add fading title
Build Docker Image / build (push) Successful in 3m47s
2026-01-26 17:24:08 +07:00
Ruslan Bakiev 53a51ed80c Simplify: use same MainNavigation everywhere, just taller container on home
Build Docker Image / build (push) Successful in 3m56s
2026-01-26 17:14:40 +07:00
Ruslan Bakiev d4b4f7011f Fix hero scroll - use fixed padding so content stays in place
Build Docker Image / build (push) Successful in 3m58s
2026-01-26 16:59:19 +07:00
Ruslan Bakiev 11a52003e7 Make hero scroll linear - direct 1:1 scroll to height/opacity
Build Docker Image / build (push) Successful in 3m55s
2026-01-26 16:29:20 +07:00
Ruslan Bakiev 80a587c74f Fix langDir path - remove duplicate i18n prefix
Build Docker Image / build (push) Successful in 3m54s
2026-01-26 16:15:36 +07:00
Ruslan Bakiev cecbed99b5 Add hero section to home page with scroll collapse
Build Docker Image / build (push) Failing after 50s
- Full-screen dark gradient hero on home page
- Search input centered vertically
- Smooth collapse to fixed header on scroll
- Added hero translations (ru/en)
2026-01-26 16:12:00 +07:00
Ruslan Bakiev f973784257 Add URL params for InfoPanel tab and product (infoTab, infoProduct)
Build Docker Image / build (push) Successful in 3m39s
2026-01-26 15:55:25 +07:00
Ruslan Bakiev 8354102895 Restyle InfoPanel to match SelectionPanel (dark glass styling)
Build Docker Image / build (push) Has been cancelled
2026-01-26 15:52:16 +07:00
Ruslan Bakiev a569942e24 Show mode toggle on home page without active state
Build Docker Image / build (push) Has been cancelled
2026-01-26 15:48:55 +07:00
Ruslan Bakiev 2275f956ae Fix: hide mode toggle on home page, store mapViewMode in URL
Build Docker Image / build (push) Successful in 3m56s
2026-01-26 15:44:44 +07:00
Ruslan Bakiev 6b359b177c Fix: trigger reactivity when setting filter labels
Build Docker Image / build (push) Successful in 3m44s
2026-01-26 15:35:05 +07:00
Ruslan Bakiev 1c298951b1 Fix: entity type detection in selectProduct, handle offer in add-to-filter
Build Docker Image / build (push) Successful in 3m47s
2026-01-26 15:29:17 +07:00
Ruslan Bakiev c76750a738 Fix: InfoPanel not showing - use showPanel prop
Build Docker Image / build (push) Successful in 3m48s
2026-01-26 15:13:06 +07:00
Ruslan Bakiev 2d83110ef1 Move filterByBounds to map, show only when panel is open
Build Docker Image / build (push) Successful in 3m46s
2026-01-26 15:00:30 +07:00
Ruslan Bakiev 5ca995ebcc Move filterByBounds checkbox into SelectionPanel
Build Docker Image / build (push) Has been cancelled
2026-01-26 14:56:40 +07:00
Ruslan Bakiev 3211c5a881 Rename drawer to panel, use selectMode for visibility
Build Docker Image / build (push) Successful in 3m44s
2026-01-26 14:52:19 +07:00
Ruslan Bakiev 911de423f6 Fix SelectionPanel - click applies immediately, opens Info
Build Docker Image / build (push) Has been cancelled
2026-01-26 14:49:55 +07:00
Ruslan Bakiev a48dcf24ee Remove explore mode chips from MainNavigation
Build Docker Image / build (push) Successful in 3m37s
2026-01-26 14:46:05 +07:00
Ruslan Bakiev 0efc4eddfd Simplify catalog UI - remove chips, add drawer for list
Build Docker Image / build (push) Successful in 3m59s
- Remove product/hub chips from QuoteForm.vue (duplicate of toggle)
- Add drawer state to useCatalogSearch.ts (isDrawerOpen, selectDrawerItem, applyDrawerFilter)
- Convert SelectionPanel to drawer with header, scrollable content, and footer
- Add "Список" button to CatalogPage.vue to open drawer
- Add "Применить фильтр" button in drawer footer
- Add slide animations for drawer (left on desktop, up on mobile)
- Update translations: catalog.list, catalog.applyFilter
2026-01-26 14:36:42 +07:00
Ruslan Bakiev 65b07271d9 Simplify GEO API - use new list endpoints and routes in nearestOffers
Build Docker Image / build (push) Successful in 4m11s
- Replace GetNodesDocument with HubsListDocument in useCatalogHubs.ts
- Replace GetSupplierProfilesDocument with SuppliersListDocument in useCatalogSuppliers.ts
- Replace manual grouping with ProductsListDocument in useCatalogProducts.ts
- Update nearestOffers to pass hubUuid for server-side route calculation
- Remove RouteToCoordinate calls - routes now included in nearestOffers response
- Delete 15 obsolete GraphQL files
- Add 3 new list endpoints: HubsList, SuppliersList, ProductsList
- Fix TypeScript errors in CalcResultContent, LocationsContent, hubs page, location store
2026-01-26 14:08:21 +07:00
Ruslan Bakiev 6d916d65a0 Show routes in hub info panel offers
Build Docker Image / build (push) Successful in 3m47s
Replace OfferCard with OfferResultCard when displaying offers
for a hub after product selection. This shows the route stages
and distance to the hub instead of just offer info.
2026-01-26 08:36:14 +07:00
Ruslan Bakiev 2b6cccdead Fix all TypeScript errors and remove Storybook
Build Docker Image / build (push) Successful in 5m8s
- Remove all Storybook files and configuration
- Add type declarations for @vueuse/core, @formkit/core, vue3-apexcharts
- Fix TypeScript configuration (typeRoots, include paths)
- Fix Sentry config - move settings to plugin
- Fix nullable prop assignments with ?? operator
- Fix type narrowing issues with explicit type assertions
- Fix Card component linkable computed properties
- Update codegen with operationResultSuffix
- Fix GraphQL operation type definitions
2026-01-26 00:32:36 +07:00
Ruslan Bakiev b326d8cd76 Fix supplierUuid -> uuid parameter in GetSupplierProfile call
Build Docker Image / build (push) Successful in 3m32s
2026-01-25 22:38:59 +07:00
Ruslan Bakiev ed7dec304f Update geo GraphQL types after backend fixes
Build Docker Image / build (push) Successful in 3m25s
2026-01-25 22:20:47 +07:00
Ruslan BakievandClaude Sonnet 4.5 cc52aa6179 Fix supplier info and catalog filtering bugs
Build Docker Image / build (push) Successful in 3m22s
1. Add latitude/longitude to GetSupplierProfile query
   - Without coordinates, supplier merge overwrites geo node data
   - Causes "Supplier has no coordinates" warning and no offers loading
   - Affects: useCatalogInfo.ts loadSupplierInfo() and useCatalogProducts.ts fetchProducts()

2. Add bounds validation in catalog composables
   - Validate bounds coordinates before passing to GraphQL or using in filters
   - Prevents 400 errors when bounds contain NaN/undefined/Infinity
   - Fixed in: useCatalogHubs.ts and useCatalogSuppliers.ts

Fixes:
- https://optovia.ru/catalog?info=supplier:c7f2e3f1-b16a-423d-a947-359e30858d94
- https://optovia.ru/catalog?select=hub 400 error

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-25 21:01:23 +07:00
Ruslan BakievandClaude Sonnet 4.5 50375f2a74 Refactor catalog to use coordinate-based GraphQL endpoints
Build Docker Image / build (push) Successful in 3m33s
Replace entity-specific queries (GetProductsNearHub, GetOffersByHub, GetHubsForProduct, GetSuppliersForProduct) with unified coordinate-based endpoints (NearestHubs, NearestOffers, NearestSuppliers, RouteToCoordinate). This simplifies backend architecture from 18 to 8 core endpoints while maintaining identical UI/UX behavior.

All composables and pages now use coordinates + client-side grouping instead of specialized backend queries. For global product filtering, uses center point (0,0) with 20000km radius.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-25 17:39:33 +07:00
Ruslan Bakiev 7403d4f063 Add coordinate-based GraphQL operations for geo API
Build Docker Image / build (push) Successful in 3m31s
- Add NearestHubs.graphql - find hubs near coordinates
- Add NearestOffers.graphql - find offers near coordinates
- Add NearestSuppliers.graphql - find suppliers near coordinates
- Add RouteToCoordinate.graphql - route from offer to coordinates
- Regenerate geo-generated.ts with new operations

These operations simplify frontend logic by working with coordinates
instead of requiring entity-specific queries.
2026-01-25 17:28:40 +07:00
Ruslan Bakiev 39c3d24b3a Fix Info panel - translations, two-step offers flow, icon, add to filter
Build Docker Image / build (push) Successful in 3m36s
- Add i18n translations for entities, tabs, and info sections (EN/RU)
- Refactor offers tab to two-step flow (products → offers) for Hub/Supplier
- Replace entity badge with circular icon in header
- Fix "Add to filter" button with name fallback and proper cleanup
- Update selectItem() to clear info param when adding to filter
2026-01-25 16:44:00 +07:00
Ruslan Bakiev 908d63062c Merge branch 'info-panel'
Build Docker Image / build (push) Successful in 4m22s
2026-01-25 15:38:31 +07:00
Ruslan BakievandClaude Sonnet 4.5 2ce3bd0bd2 Add Info panel for catalog with tabbed interface
Implemented Info mode для детального просмотра объектов каталога (hub/supplier/offer) с навигацией между связанными объектами.

Новые компоненты:
- InfoPanel.vue - панель с детальной информацией и табами для связанных объектов
- useCatalogInfo.ts - composable для управления Info state и загрузки данных

Изменения:
- useCatalogSearch.ts - добавлен infoId state и функции openInfo/closeInfo
- catalog/index.vue - интеграция InfoPanel, обработчики событий, relatedPoints для карты
- CatalogPage.vue - проброс relatedPoints в CatalogMap
- CatalogMap.vue - related points layer (cyan circles) для отображения связанных объектов

Флоу:
1. Клик на чип → Selection → Выбор → Info открывается
2. Клик на карту → Info открывается напрямую
3. В Info показываются табы со связанными объектами (top-12)
4. Клик на связанный объект → навигация к его Info
5. Кнопка "Добавить в фильтр" - добавляет объект в chips

URL sharing: ?info=type:uuid для шаринга ссылок

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-25 14:17:47 +07:00
Ruslan Bakiev d9d05a4c21 feat(catalog): add search to all catalog pages
Build Docker Image / build (push) Successful in 4m55s
Add CatalogSearchBar component with filtering to:
- /catalog/offers - search by product name
- /catalog/offers/[productId] - search by hub name/country
- /catalog/hubs/[id] - search by product name
- /catalog/suppliers/[supplierId] - search by product name
- /catalog/suppliers/[supplierId]/[productId] - search by hub name/country
2026-01-16 02:19:41 +07:00
Ruslan Bakiev 45ec9923e3 feat(catalog): add map to all catalog pages
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
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
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: вложенные роуты хаб/товар с хлебными крошками
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: убрать автовыбор продукта, карточки на всю ширину
Build Docker Image / build (push) Successful in 4m53s
2026-01-16 00:02:17 +07:00
Ruslan Bakiev 25030f0350 feat: добавить мок-данные графиков цен на карточки продуктов
Build Docker Image / build (push) Successful in 4m43s
2026-01-15 23:50:52 +07:00
Ruslan Bakiev 71663186e2 refactor: убрать ring бордер с карточки продукта
Build Docker Image / build (push) Successful in 4m34s
2026-01-15 23:39:35 +07:00
Ruslan Bakiev 0337cebc63 Simplify OfferResultCard and use daisyUI Steps
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
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
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
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
Build Docker Image / build (push) Successful in 4m37s
2026-01-14 23:26:03 +07:00
Ruslan Bakiev 23bdd926bf fix: header height 118 -> 104px
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
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
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
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
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
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 fbcfc6caf8 refactor(hub): use CatalogPage component for split layout
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
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 6b2208f0ae Add KYC translations, AI button, improve chat, swap homepage sections
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
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
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)
Build Docker Image / build (push) Successful in 3m58s
2026-01-08 13:11:13 +07:00
Ruslan Bakiev 53904ead05 Fix: offers map coords, map position, orders filter, select-location layout
Build Docker Image / build (push) Successful in 3m38s
2026-01-08 13:01:54 +07:00
Ruslan Bakiev 8d1b7c6dc7 Unify CatalogPage: fixed map, hover support, delete ListMapLayout
Build Docker Image / build (push) Successful in 4m31s
2026-01-08 11:15:54 +07:00
Ruslan Bakiev 4057bce4be Update generated GraphQL types
Build Docker Image / build (push) Successful in 3m58s
2026-01-08 10:56:35 +07:00
Ruslan Bakiev d6865d2129 UI improvements: filters, map layout, search bar
Build Docker Image / build (push) Failing after 1m29s
- Add hubCountries query and country filter for hubs page
- Add getAvailableProducts query for offers (only products with active offers)
- Add sourceLatitude/sourceLongitude to orders GraphQL
- Fix ListMapLayout with position fixed for proper map height
- GlobalSearchBar: make fields wider, remove unit selector
- Remove status/isVerified filters from suppliers/offers (backend handles this)
2026-01-08 10:42:59 +07:00
Ruslan Bakiev 0c88cf383c Refactor catalog filters: remove badges, use select dropdowns
Build Docker Image / build (push) Successful in 4m21s
- Remove filter from suppliers page (not needed)
- Offers: show all active offers directly, add product type filter as select
- Hubs: change filter from pills to select dropdown
- Create CatalogFilterSelect component for dropdown filters
- Update useCatalogOffers to always filter active, use product filter
2026-01-08 10:08:05 +07:00
Ruslan Bakiev e629025899 Fix UI issues: 3 columns, SubNav label, back button, sticky map, hover flyTo
Build Docker Image / build (push) Successful in 4m14s
- Homepage roles section now shows 3 columns on medium screens
- SubNavigation catalog offers label changed to "Предложения"
- Removed back button from catalog/offers page
- ListMapLayout: sticky map with full height
- ListMapLayout: hover on card flies to location on map
2026-01-08 10:00:59 +07:00
Ruslan BakievandClaude Opus 4.5 1a0305011f Migrate orders and addresses to split layout
Build Docker Image / build (push) Successful in 4m20s
- Use ListMapLayout for two-column list+map view
- Orders: show source locations on map
- Addresses: show address locations on map
- Remove preview map links (map is now inline)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 09:48:23 +07:00
Ruslan BakievandClaude Opus 4.5 ee7b8d0ee4 Remove default layout, migrate all pages to topnav
Build Docker Image / build (push) Has been cancelled
- Add layout: 'topnav' to all 27 pages that were using default layout
- Delete app/layouts/default.vue

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 09:44:26 +07:00
Ruslan BakievandClaude Opus 4.5 b8de322dd2 Unify layouts and create CatalogPage component
Build Docker Image / build (push) Successful in 3m45s
- MainNavigation: center tabs on page (absolute positioning)
- SubNavigation: align left instead of center
- Create CatalogPage universal component for list+map pages
- Migrate catalog pages (offers, suppliers, hubs) to CatalogPage
- Remove PageHeader from clientarea pages (redundant with navigation)
- Add topnav layout to supplier detail page

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 09:38:53 +07:00
Ruslan Bakiev f34c484561 Fix navigation layout and search behavior
Build Docker Image / build (push) Successful in 3m40s
- Reorder topnav components: search bar before submenu
- GlobalSearchBar: use page navigation instead of dropdowns
- Remove icons from MainNavigation and SubNavigation
- Create ListMapLayout universal component for list+map pages
- Migrate catalog pages (offers, suppliers, hubs) to ListMapLayout
2026-01-08 09:16:56 +07:00
Ruslan Bakiev 5d1ce88927 Migrate pages to topnav layout
Build Docker Image / build (push) Failing after 1m20s
2026-01-08 01:08:25 +07:00
Ruslan Bakiev 737ec91473 Add topnav layout with MainNavigation, SubNavigation, GlobalSearchBar, SplitLayout
Build Docker Image / build (push) Failing after 1m25s
2026-01-08 01:03:07 +07:00
Ruslan Bakiev 4235c9f1e9 refactor: redesign AI chat page - full width chat, input pinned to bottom
Build Docker Image / build (push) Successful in 4m5s
2026-01-07 21:52:53 +07:00
Ruslan Bakiev b177a567cf Pin chat input to bottom
Build Docker Image / build (push) Successful in 3m43s
2026-01-07 18:42:19 +07:00
Ruslan Bakiev b65f00bf2e Trigger rebuild
Build Docker Image / build (push) Successful in 3m42s
2026-01-07 18:32:49 +07:00
Ruslan Bakiev 83bfab1742 Fix clientarea AI chat layout 2026-01-07 18:22:25 +07:00
Ruslan Bakiev 8e7271abf3 Fix: check all 4 coordinates in routesForMap filter
Build Docker Image / build (push) Successful in 3m44s
2026-01-07 10:35:40 +07:00
Ruslan Bakiev bddaf6e142 Fix maps: use satellite-streets-v12 style, fix markers visibility
Build Docker Image / build (push) Successful in 3m49s
2026-01-07 10:19:01 +07:00
Ruslan Bakiev 6e0a0d6975 Update webhook URL
Build Docker Image / build (push) Successful in 5m2s
2026-01-07 09:44:56 +07:00
Ruslan Bakiev bf1966b859 Add Gitea Actions CI/CD workflow
Build Docker Image / build (push) Failing after 1m1s
2026-01-07 09:24:11 +07:00
Ruslan Bakiev 3db50d9637 Initial commit from monorepo 2026-01-07 09:10:35 +07:00