Commit Graph
231 Commits
Author SHA1 Message Date
Ruslan Bakiev 8b0e1900d1 feat(nav): client area tabs in main navigation
Build Docker Image / build (push) Has been cancelled
- Add Cabinet button to header (dashboard icon)
- When in /clientarea/* show tabs instead of search input
- Tabs: Заказы | Предложения (SELLER only) | Адреса | Профиль | Команда
- Hide Explore/Quote toggle in client area
- Remove SubNavigation for clientarea (tabs moved to MainNavigation)
2026-01-28 05:28:16 +07:00
Ruslan Bakiev 45acef9b20 feat(catalog): KYC bottom sheet instead of separate page
Build Docker Image / build (push) Successful in 4m21s
- Add KycBottomSheet component with glass effect (70vh height)
- Animate sheet sliding up from bottom when opening KYC
- InfoPanel hides when KYC sheet is open
- Click outside or X button to close
- Contains all company info: реквизиты, руководство, учредители, контакты, финансы, арбитраж, ОКВЭД
2026-01-28 05:04:20 +07:00
Ruslan Bakiev 1f996d27e5 feat(kyc): comprehensive demo profile page with full business data
Build Docker Image / build (push) Successful in 4m14s
- Реквизиты: ИНН, КПП, ОГРН, ОКПО, дата регистрации
- Руководство с ФИО и должностью
- Учредители с долями владения и уставным капиталом
- Контакты: адрес, телефон, email, сайт
- Финансовые показатели: выручка, прибыль, активы, сотрудники
- Арбитражные дела: истец/ответчик с суммами
- Виды деятельности (ОКВЭД) с основным и дополнительными
- История изменений в виде timeline
2026-01-27 20:35:32 +07:00
Ruslan Bakiev 02419abdd1 feat(kyc): add demo KYC profile page with mock data
Build Docker Image / build (push) Successful in 4m1s
- Always show 'view full profile' button with fallback to demo UUID
- KYC page shows mock data when demo UUID is used
- Add i18n translations for demo page
2026-01-27 20:16:30 +07:00
Ruslan Bakiev 7066c51505 fix(catalog): only show KYC full profile button when kycProfileUuid exists
Build Docker Image / build (push) Successful in 4m6s
2026-01-27 20:10:40 +07:00
Ruslan Bakiev 88d78e9662 feat(catalog): add offers section to InfoPanel after product selection
Build Docker Image / build (push) Successful in 4m33s
- Hide products section when product is selected
- Show offers section with OfferCard components
- Add cancel button to return to product list
- Wire up select-offer event to navigate to offer detail
2026-01-27 15:24:53 +07:00
Ruslan Bakiev 3f7b83bb6d feat(kyc): add KYC profile page, navigate instead of modal
Build Docker Image / build (push) Successful in 4m17s
2026-01-27 12:51:08 +07:00
Ruslan Bakiev b5534d1fd5 feat(catalog): add KYC profile modal on click
Build Docker Image / build (push) Has been cancelled
2026-01-27 12:49:19 +07:00
Ruslan Bakiev 7f8a148aa7 feat(catalog): add KYC teaser section to supplier InfoPanel
Build Docker Image / build (push) Successful in 4m6s
- Add KYC teaser info section (companyType, registrationYear, status, sourcesCount)
- Use mock data for now (backend integration TBD)
- Add 'open-kyc' emit for full profile navigation
- Add kycProfileUuid field to InfoEntity type
- Add i18n translations for both RU and EN
2026-01-27 12:30:00 +07:00
Ruslan Bakiev f269c0daf0 Fix camera jumping when opening InfoPanel
Build Docker Image / build (push) Successful in 4m17s
Replace setTimeout/debounce with event-based approach:
- Add isInfoLoading computed that tracks all info loading states
- Pass infoLoading prop through CatalogPage to CatalogMap
- Watch infoLoading transition from true->false to trigger fitBounds
- Remove setTimeout hack in favor of proper loading state detection
2026-01-27 12:25:15 +07:00
Ruslan Bakiev 497a80f0c6 Fix camera jumping - debounce fitBounds when points load
Build Docker Image / build (push) Has been cancelled
2026-01-27 12:21:35 +07:00
Ruslan Bakiev 5aa460fd8a Fix supplier link - show name instead of 'View supplier'
Build Docker Image / build (push) Has been cancelled
2026-01-27 12:20:06 +07:00
Ruslan Bakiev 805b6795f0 Fix InfoPanel - show supplier name as text, remove button
Build Docker Image / build (push) Has been cancelled
- Remove "View supplier" button, show name as plain text
- Add fallback translation for unknown supplier
2026-01-27 12:15:44 +07:00
Ruslan Bakiev c39bc55ebc Fix InfoPanel for offers - supplier name and map point
Build Docker Image / build (push) Has been cancelled
- Show supplier name with loading state instead of "View Supplier" link
- Fix offer coordinates on map (use locationLatitude/locationLongitude)
2026-01-27 12:12:05 +07:00
Ruslan Bakiev c152a5b14c Update catalog cards - logo right in supplier, sparkline in product
Build Docker Image / build (push) Successful in 3m53s
- SupplierCard: Move logo to right side, text on left
- ProductCard: Generate mock priceHistory from uuid, add product icon
2026-01-27 11:48:46 +07:00
Ruslan Bakiev 2dbe600d8a refactor: remove all any types, add strict GraphQL scalar typing
Build Docker Image / build (push) Successful in 4m3s
- Add strictScalars: true to codegen.ts with proper scalar mappings
  (Date, Decimal, JSONString, JSON, UUID, BigInt → string/Record)
- Replace all ref<any[]> with proper GraphQL-derived types
- Add type guards for null filtering in arrays
- Fix bugs exposed by typing (locationLatitude vs latitude, etc.)
- Add interfaces for external components (MapboxSearchBox)

This enables end-to-end type safety from GraphQL schema to frontend.
2026-01-27 11:34:12 +07:00
Ruslan Bakiev ff34c564e1 Fix InfoPanel map: hide toggle, show current entity, auto-center
Build Docker Image / build (push) Successful in 4m18s
- Hide view mode toggle (offers/hubs/suppliers) when in InfoPanel mode
- Add current entity to relatedPoints so it's visible on the map
- Auto-fit map bounds to show all points (current + related) in InfoPanel mode
2026-01-27 11:25:57 +07:00
Ruslan Bakiev 80474acc0f Update webapp - fix hero animation scroll + dark background
Build Docker Image / build (push) Successful in 4m1s
- Fixed animation height to 100vh to prevent squeeze on scroll
- Added dark slate-900 background for transparent animation
2026-01-27 11:09:14 +07:00
Ruslan Bakiev 859eef3761 Update webapp - fix hero animation to use cover layout
Build Docker Image / build (push) Successful in 3m58s
Use DotLottie's native layout prop with fit: 'cover' instead of
CSS object-cover which doesn't work on canvas elements.
2026-01-27 10:54:41 +07:00
Ruslan Bakiev 7bd4aa37bd Redesign SupplierCard and ProductCard, unify components
Build Docker Image / build (push) Successful in 4m0s
- SupplierCard: horizontal layout with logo left, verified badge before name, chips at bottom
- ProductCard: add optional sparkline background, trend indicator, and price display
- Replace HubProductCard usage with ProductCard in hub detail page
- Remove HubProductCard.vue and PriceSparkline.vue (unified into ProductCard)
2026-01-27 10:49:58 +07:00
Ruslan Bakiev 20e0e73c58 refactor: remove any types and fix TypeScript errors
Build Docker Image / build (push) Successful in 3m59s
- Export InfoProductItem, InfoHubItem, InfoSupplierItem, InfoOfferItem types
- Update InfoEntity interface to have explicit fields (no index signature)
- Export CatalogHubItem, CatalogNearestHubItem from useCatalogHubs
- Fix MapItem interfaces to accept nullable GraphQL types
- Fix v-for :key bindings to handle null uuid
- Add null guards in select-location pages
- Update HubCard to accept nullable transportTypes
- Add shims.d.ts for missing module declarations
2026-01-27 10:35:14 +07:00
Ruslan Bakiev 9210f79a3d Always include mode query param (explore/quote)
Build Docker Image / build (push) Successful in 4m29s
2026-01-27 10:21:09 +07:00
Ruslan Bakiev 65250f1342 Fix hero animation: transparent navbar on home page, glass on collapse
Build Docker Image / build (push) Has been cancelled
2026-01-27 10:19:00 +07:00
Ruslan Bakiev 3f823b2abc Fix hero animation: always use glass style on home page
Build Docker Image / build (push) Successful in 4m8s
2026-01-27 10:09:33 +07:00
Ruslan Bakiev 75ce64b46e Fix hero animation: object-fit cover + conditional blur + glass on collapse
Build Docker Image / build (push) Successful in 5m14s
- HeroBackground.vue:
  - Add object-cover class to Lottie animation (fills container)
  - Make dark overlay conditional (v-if collapseProgress > 0.5)
  - Overlay fades in during collapse (opacity 0→1)

- MainNavigation.vue:
  - Replace glassStyle prop with isCollapsed
  - Glass effect (backdrop-blur-md) applies only when collapsed

- topnav.vue:
  - Pass isCollapsed instead of glass-style
  - Home page: isCollapsed from useHeroScroll
  - Other pages: always true (always collapsed)

Result:
- Animation covers full viewport without crop
- No blur overlay when hero is expanded
- Glass effect appears only when header collapses to 100px
2026-01-27 09:14:20 +07:00
Ruslan Bakiev 70c53da8eb Fix type safety in catalog composables + 3 InfoPanel bugs
Build Docker Image / build (push) Successful in 3m42s
- Add proper codegen types to all catalog composables:
  - useCatalogHubs: HubItem, NearestHubItem
  - useCatalogSuppliers: SupplierItem, NearestSupplierItem
  - useCatalogProducts: ProductItem
  - useCatalogOffers: OfferItem
  - useCatalogInfo: InfoEntity, ProductItem, HubItem, OfferItem

- Fix InfoPanel bugs for offers:
  - Use locationLatitude/locationLongitude for offer coordinates
  - Enrich entity with supplierName after loading profile
  - Apply-to-filter now adds both product AND hub for offers

- Filter null values from GraphQL array responses
- Add type-safe coordinate helper (getEntityCoords)
- Fix urlBounds type inference in useCatalogSearch
2026-01-26 23:30:16 +07:00
Ruslan Bakiev 839ab4e830 feat(hero): add animated Supply Chain background on home page
Build Docker Image / build (push) Successful in 3m54s
2026-01-26 22:31:06 +07:00
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 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