Commit Graph

33 Commits

Author SHA1 Message Date
Ruslan Bakiev
404375248b Fix catalog UI: navbar alignment, selection panel, map search, infinite scroll
All checks were successful
Build Docker Image / build (push) Successful in 3m37s
- Fix team selector alignment in navbar (use items-center, fixed height)
- Fix SelectionPanel header padding to account for parent p-4
- Add map search input (white glass, positioned next to panel)
- Add infinite scroll to SelectionPanel with IntersectionObserver
- Products load all at once (no server-side pagination yet)
- Hubs and Suppliers support pagination with loadMore
2026-01-24 10:09:55 +07:00
Ruslan Bakiev
2a607d0d2d Fix catalog UI issues
All checks were successful
Build Docker Image / build (push) Successful in 3m31s
1. Fix navbar height - prevent tag wrapping with overflow-hidden
2. Fix translation keys for mode labels and search form labels
3. Fix SelectionPanel - white glass header/search, no top gap
4. Map click fills active selector - emit full properties from map
2026-01-24 09:47:41 +07:00
Ruslan Bakiev
5e55443975 Fix map points: icons, color updates, loading state
All checks were successful
Build Docker Image / build (push) Successful in 3m41s
- Add entityType prop to CatalogMap for icon selection
- Change circle layers to symbol layers with entity-specific icons
- Icons: shopping bag (offers), warehouse (hubs), factory (suppliers)
- Add watcher to update colors when pointColor/entityType changes
- Clear old points and show loading indicator when switching view modes
- Add clearNodes function to useClusteredNodes composable
2026-01-24 09:18:27 +07:00
Ruslan Bakiev
999658aee1 UI: Glass effect everywhere, fix nav height, simplify quote form
All checks were successful
Build Docker Image / build (push) Successful in 3m9s
- Fixed nav height (h-20), logo and user menu aligned to top
- Quote form: removed colored circles, simple labels, search button inside pill
- Panels closer to nav (top-4 instead of top-20)
- Glass effect on all overlays (bg-base-100/70 backdrop-blur-md)
- Selection panel sticky headers with glass effect
2026-01-23 11:36:20 +07:00
Ruslan Bakiev
5258347ccb UI fixes: header height, map color, panel scroll
All checks were successful
Build Docker Image / build (push) Successful in 3m10s
- MainNavigation: fixed min-height to prevent jumping on mode switch
- CatalogMap: default pointColor changed from green to orange (#f97316)
- CatalogPage: panel scroll on entire container, not inner
- SelectionPanel: sticky header and search, removed inner scroll
2026-01-23 10:53:21 +07:00
Ruslan Bakiev
c7054579f1 Fix catalog: selection panels instead of modals, remove duplicate QuoteForm
All checks were successful
Build Docker Image / build (push) Successful in 3m55s
- Add SelectionPanel.vue for product/hub/supplier selection lists
- Remove QuoteForm from QuotePanel (header already has controls)
- Show SelectionPanel when selectMode is active
- Connect search button in header to page via shared state
2026-01-23 09:56:17 +07:00
Ruslan Bakiev
850ab3f252 Add Explore/Quote dual mode to catalog page
All checks were successful
Build Docker Image / build (push) Successful in 3m52s
- Add CatalogMode type (explore/quote) to useCatalogSearch
- Create ExplorePanel component with view toggle (offers/hubs/suppliers)
- Create QuoteForm and QuotePanel components for search form
- Refactor CatalogPage to fullscreen map with overlay panel
- Simplify catalog/index.vue to use new components
- Add translations for modes and quote form (ru/en)

The catalog now has two modes:
- Explore: Browse map with offers/hubs/suppliers toggle
- Quote: Search form with product/hub/qty filters to find offers
2026-01-22 19:13:45 +07:00
Ruslan Bakiev
39f8364edb Improve catalog UX: remove category, add offers count, dynamic layout
All checks were successful
Build Docker Image / build (push) Successful in 3m37s
- ProductCard: remove category field, add offersCount display
- CatalogPage: add fullWidthMap prop for map-only view
- catalog/index: pass fullWidthMap based on selectMode
- i18n: add offers pluralization
2026-01-22 16:59:33 +07:00
Ruslan Bakiev
3c6ae03c30 Add entity color scheme and improve map hover effect
All checks were successful
Build Docker Image / build (push) Successful in 3m6s
- Add color scheme: product/offer=orange, supplier=blue, hub=green
- Remove 'location' filter (same as hub)
- Quantity filter appears only after product is selected
- Map hover shows 'target' ring effect (outer white ring)
- Tokens in header use entity-specific colors
2026-01-22 11:45:23 +07:00
Ruslan Bakiev
d837b9b90b Fix unified catalog: add map, tokens inside input, redirect from main
Some checks failed
Build Docker Image / build (push) Has been cancelled
- Main page (/) now redirects to /catalog
- Catalog page uses CatalogPage component with map on the right
- Search bar tokens are now inside the input field (like Gmail)
- Removed separate grid components, using cards directly
- Added missing translations (refine, noResults)
2026-01-22 11:06:58 +07:00
Ruslan Bakiev
08d7e0ade9 Implement unified catalog search with token-based filtering
All checks were successful
Build Docker Image / build (push) Successful in 3m23s
- Add useCatalogSearch composable for managing unified search state
- Add UnifiedSearchBar component with token chips for filters
- Add CatalogHero component for empty/landing state
- Create grid components for each display mode:
  - CatalogGridProducts, CatalogGridSuppliers, CatalogGridHubs
  - CatalogGridHubsForProduct, CatalogGridProductsFromSupplier
  - CatalogGridProductsInHub, CatalogGridOffers
- Add unified catalog page at /catalog with query params
- Remove SubNavigation from catalog section (kept for other sections)
- Update all links to use new unified catalog paths
- Delete old nested catalog pages (offers/suppliers/hubs flows)
- Add i18n translations for catalog section
2026-01-22 10:57:30 +07:00
Ruslan Bakiev
01f0836173 Move transport icons to bottom of HubCard
Some checks failed
Build Docker Image / build (push) Failing after 7m41s
2026-01-22 10:06:51 +07:00
Ruslan Bakiev
bd176973a8 Add verified badge top-right on SupplierCard, transport icons on HubCard
Some checks failed
Build Docker Image / build (push) Has been cancelled
2026-01-22 10:05:59 +07:00
Ruslan Bakiev
4e49da5f9f Fix route conflict: move offer detail page to /offers/detail/[offerId]
All checks were successful
Build Docker Image / build (push) Successful in 3m18s
- Change theme from cmyk to cupcake
- Move [offerId].vue to detail/[offerId].vue to avoid conflict with [productId]/index.vue
- Update all navigation references to use new /catalog/offers/detail/ path
2026-01-22 09:07:26 +07:00
Ruslan Bakiev
ace458ed7e Add KYC profile integration and SupplierInfoBlock component
Some checks failed
Build Docker Image / build (push) Failing after 2m51s
2026-01-21 09:19:44 +07:00
Ruslan Bakiev
0a79b90d1c Replace breadcrumbs with key-value badges in search bar
All checks were successful
Build Docker Image / build (push) Successful in 4m0s
- Add key property to FilterOption interface in CatalogSearchBar
- Display badges in "Key: Value" format (e.g., "Поставщик: Name")
- Remove SuppliersBreadcrumbs from supplier catalog pages
- Add navigationFilters computed with supplier/product/hub badges
- Add handleRemoveFilter to navigate back when badge is clicked
2026-01-19 11:09:58 +07:00
Ruslan Bakiev
3b0418f328 fix(catalog): use supplier.uuid instead of teamUuid for navigation
All checks were successful
Build Docker Image / build (push) Successful in 5m25s
- SupplierCard.vue: use supplier.uuid in link generation
- products/[id].vue: get uuid from supplier profile and use it for navigation

Fixes 404 errors on supplier pages
2026-01-16 09:11:46 +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
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
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
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
0c88cf383c Refactor catalog filters: remove badges, use select dropdowns
All checks were successful
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
ce30652252 feat(catalog): two-level offers navigation + map auto-centering
All checks were successful
Build Docker Image / build (push) Successful in 3m45s
- Add fitBounds to CatalogMap for auto-centering on all points
- Add productUuid filter to useCatalogOffers composable
- Create useCatalogProducts composable for products list
- Update offers/index.vue: show products first, then offers by product
- Update offers/map.vue: same two-level navigation
- Add translations for new UI elements

Navigation flow:
/catalog/offers → product selection → offers for that product

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 15:09:14 +07:00
Ruslan Bakiev
ee2374f92a fix: full width for select-location page + restore space fly animation
All checks were successful
Build Docker Image / build (push) Successful in 4m1s
- Remove max-w-4xl constraint on /select-location page
- Replace simple easeTo with flyThroughSpace in CatalogMap
  (2-phase animation: zoom out to space, then fly to target)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 14:03:19 +07:00
Ruslan Bakiev
3db50d9637 Initial commit from monorepo 2026-01-07 09:10:35 +07:00