Commit Graph
251 Commits
Author SHA1 Message Date
Ruslan Bakiev 532b9ce78d Fix OrderDetailBottomSheet backdrop to not overlap panel
Build Docker Image / build (push) Successful in 4m22s
Restructured z-index layering:
- Parent container: fixed inset-0 z-40 with pointer-events-none
- Backdrop: only covers map area (lg:left-96 on desktop)
- Sheet content: z-50, positioned above backdrop
2026-01-29 20:22:22 +07:00
Ruslan Bakiev a244589fe5 fix(orders): bottom sheet doesn't cover side panel on desktop
Build Docker Image / build (push) Successful in 4m7s
2026-01-29 19:57:29 +07:00
Ruslan Bakiev 1850d255a7 feat(orders): open order details in bottom sheet (no page transition)
Build Docker Image / build (push) Successful in 4m1s
- Created OrderDetailBottomSheet.vue component (like KycBottomSheet)
- Click on order in list opens bottom sheet instead of navigating
- Slide-up animation with backdrop
- Click backdrop or X to close
2026-01-29 19:49:21 +07:00
Ruslan Bakiev de3ec4c39d feat(orders): add slide-up animation for order detail bottom sheet
Build Docker Image / build (push) Successful in 4m29s
2026-01-29 19:43:56 +07:00
Ruslan Bakiev d5aa47c323 fix(orders): use side panel for list, bottom sheet for detail
Build Docker Image / build (push) Successful in 3m56s
- orders/index.vue: Reverted to side panel pattern for map interaction
- orders/[id].vue: Converted to CatalogPage + bottom sheet pattern

List page uses #panel slot to interact with map markers.
Detail page uses fixed bottom sheet (70vh) with glass styling.
2026-01-29 18:56:31 +07:00
Ruslan Bakiev d227325d1a Fix homepage: remove spacer, full-width sections with negative margin
Build Docker Image / build (push) Successful in 4m5s
2026-01-29 18:51:19 +07:00
Ruslan Bakiev bd7a1d1b4b Homepage: magazine layout with text blocks, quotes, spacing
Build Docker Image / build (push) Successful in 4m1s
- Added spacer after hero nav
- Section headers with decorative lines
- Mixed photo cards with text-only blocks
- Full-width testimonial/quote section
- Asymmetric grid layouts
- Dashed border stats card for variety
- Gradient CTA section at bottom
- Better visual rhythm and breathing room
2026-01-29 16:54:00 +07:00
Ruslan Bakiev 3a46cfc5dc Homepage: bento magazine layout + dark footer with offices by continent
Build Docker Image / build (push) Successful in 4m6s
- Bento grid with varied card sizes (8-col hero, 4-col stats, 3-col roles)
- Stats cards with gradient backgrounds (500+ suppliers, 24/7 support)
- Dark footer with countries by continent (Europe, CIS, Asia, Americas)
- Office locations (Dubai HQ, Amsterdam, Moscow)
- Quick links for products, services, company, legal
- Security badges in bottom bar
2026-01-29 16:42:23 +07:00
Ruslan Bakiev f4afd362eb Rewrite team/profile/orders pages with bottom sheet (not side panel)
Build Docker Image / build (push) Successful in 4m9s
- All three pages now use CatalogPage + bottom sheet from bottom (70vh)
- Glass style: bg-black/40 backdrop-blur-xl rounded-t-2xl
- Drag handle at top
- Two-column grid layout for team/profile
- Orders list with search and filter
- Map visible in background
2026-01-29 16:34:58 +07:00
Ruslan Bakiev 5a780707dc Homepage Photo Glass Cards - unified visual style
Build Docker Image / build (push) Successful in 4m12s
- Add 6 promo images from Unsplash (wheat, trucks, warehouse, farmer, etc.)
- Replace plain white cards with Photo Glass Cards
- Gradient overlay + backdrop blur for glass effect
- Hover animation (scale 105%)
- Colored accent icons (violet, cyan, rose)
- Matches animated hero visual style
2026-01-29 16:29:57 +07:00
Ruslan Bakiev 886415344d Glass nav fix + team/profile pages with CatalogPage layout
Build Docker Image / build (push) Successful in 4m20s
- Fix glass nav on clientarea pages (add isClientArea to is-collapsed)
- Rewrite team page using CatalogPage with glass panel
- Rewrite profile page using CatalogPage with glass panel
2026-01-29 16:18:33 +07:00
Ruslan Bakiev 6ee8c12e6f Role switcher: dropdown menu with chevron icon
Build Docker Image / build (push) Successful in 3m59s
2026-01-29 16:07:41 +07:00
Ruslan Bakiev bc037e85a4 Simplify role switcher: text + single swap icon
Build Docker Image / build (push) Successful in 4m23s
2026-01-29 16:01:46 +07:00
Ruslan Bakiev 72f2e1c39d Refactor role switcher: single item with arrows on right
Build Docker Image / build (push) Successful in 4m44s
- Remove separate "Кабинет" link and two role buttons
- Add single role switcher: "Я клиент <>" format
- Arrows <> shown only when user has both roles
- Click text → navigate to cabinet, click arrows → switch role
2026-01-29 15:44:52 +07:00
Ruslan Bakiev 3d5215d967 Add role switcher (Client/Seller) in navigation menu
Build Docker Image / build (push) Successful in 4m20s
- Add role switcher buttons after Explore/Quote/Кабинет with separator
- Dynamic center tabs based on role: BUYER shows orders/addresses, SELLER shows offers
- Redirect to appropriate page when switching role in client area
- Add localization for roles.client and roles.seller
2026-01-29 13:53:03 +07:00
Ruslan Bakiev 33c406995f fix(catalog): align QuotePanel style with SelectionPanel/InfoPanel
Build Docker Image / build (push) Successful in 5m2s
2026-01-28 09:29:17 +07:00
Ruslan Bakiev 209d81ec61 fix(clientarea): correct panel widths - orders w-1/2, addresses w-96
Build Docker Image / build (push) Has been cancelled
2026-01-28 09:27:58 +07:00
Ruslan Bakiev 984daa7a84 refactor(clientarea): use CatalogPage with #panel slot for orders/addresses
Build Docker Image / build (push) Successful in 4m21s
- Add panelWidth and hideViewToggle props to CatalogPage
- Update orders page to use CatalogPage with narrow panel (w-50)
- Update addresses page to use CatalogPage with narrow panel (w-50)
- Remove unused ClientAreaMapPage component
2026-01-28 09:19:01 +07:00
Ruslan Bakiev 63e8d47b79 feat(clientarea): modernize orders and addresses pages with new map layout
Build Docker Image / build (push) Successful in 6m13s
- Create ClientAreaMapPage component for client area pages with glass effect
- Update orders page to use new ClientAreaMapPage with filter dropdown
- Update addresses page to use new ClientAreaMapPage with add button
- Remove Profile and Team tabs from MainNavigation (already in user menu)
2026-01-28 09:11:18 +07:00
Ruslan Bakiev f5b95c27ef fix(nav): move Cabinet to nav links next to Explore/Quote
Build Docker Image / build (push) Successful in 5m19s
2026-01-28 05:30:18 +07:00
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