Commit Graph

161 Commits

Author SHA1 Message Date
AmirReza Jamali 5155c42146 feat(tenders): scroll to top on pagination change
continuous-integration/drone/push Build is passing
Smoothly scroll the page to the top when users move between tender list pages, respecting reduced-motion preferences.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-13 16:14:33 +03:30
AmirReza Jamali b87cf35f08 fix(tenders): clear documents scraped checkbox on filter reset
continuous-integration/drone/push Build is passing
Control the checkbox through react-hook-form so Reset all updates the UI, and normalize documents_scraped to false when rebuilding filter state.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-13 15:20:53 +03:30
AmirReza Jamali 209acea88a fix(notifications): dismiss bell badge when dropdown opens
continuous-integration/drone/push Build is passing
Hide the unread count badge after the user opens notifications, and show it again only when new unread items arrive.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-13 15:11:54 +03:30
AmirReza Jamali a762a14026 feat(admin): optimize tender list pagination
continuous-integration/drone/push Build is passing
2026-07-11 15:46:19 +03:30
AmirReza Jamali 624614f1a9 feat add company links
continuous-integration/drone/push Build is passing
2026-07-11 15:34:13 +03:30
AmirReza Jamali 37aa916ad5 fix notification badge initialization
continuous-integration/drone/push Build is passing
2026-07-11 14:56:05 +03:30
AmirReza Jamali 4051cb156c fix: improve inquiry status change and notification refresh
continuous-integration/drone/push Build is passing
Block no-op inquiry status updates, refetch active my-notifications after create, and use the shared error text token on Select validation messages.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-07 16:09:50 +03:30
AmirReza Jamali 5b43741d74 Fix marketing validation and filter reset issues
continuous-integration/drone/push Build is passing
2026-07-07 12:55:41 +03:30
AmirReza Jamali 08938ad7f0 Fix company document removal in edit mode
continuous-integration/drone/push Build is passing
2026-07-07 10:54:51 +03:30
AmirReza Jamali 98fac2c867 Use timezone dropdown for company form
continuous-integration/drone/push Build is passing
2026-07-04 13:52:43 +03:30
AmirReza Jamali 3933efeddb Make company address fields optional
continuous-integration/drone/push Build is passing
2026-07-04 13:10:23 +03:30
AmirReza Jamali 6b6dd7d2d1 fix(companies): clear currency filter on reset all
continuous-integration/drone/push Build is passing
Reset currency to an empty string instead of undefined so React Hook Form
overwrites the stored value and the controlled currency Select clears.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 16:03:54 +03:30
AmirReza Jamali 0a28a1226f fix(customers): clear filter text inputs on reset all
continuous-integration/drone/push Build is passing
Reset full_name and email to empty strings instead of undefined so React
Hook Form clears the uncontrolled input DOM values, matching the companies
filter reset behavior.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 13:26:11 +03:30
AmirReza Jamali 84482f3952 fix(forms): default company currency to USD instead of invalid "en"
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 12:50:28 +03:30
AmirReza Jamali 15315ebb47 fix(forms): make company tax id, registration number, and industry optional
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 12:28:09 +03:30
AmirReza Jamali 5b5150e7da Fix notification user filtering
continuous-integration/drone/push Build is passing
2026-06-27 18:28:49 +03:30
AmirReza Jamali 561931876f fix(forms): add loading state for company document removal
continuous-integration/drone/push Build is passing
Block uploads and other document actions while a file is being removed, and show per-item and global loading feedback until deletion completes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-27 10:31:24 +03:30
AmirReza Jamali 31d80cd6ae refactor(forms): memoize dynamic form sections with stable ids
continuous-integration/drone/push Build is passing
Add uuid-based section keys and memoized DynamicSection to reduce re-renders, fix dashboard GSAP scoping, update logo sizing, and temporarily hide notice-type and closing-soon widgets.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-23 09:50:27 +03:30
AmirReza Jamali 90a42b9fc5 feat(forms): implement dynamic form builder for admin and company creation
continuous-integration/drone/push Build is passing
- Introduced DynamicFormBuilder component to streamline form creation for admin and company categories.
- Refactored CreateAdmin and CreateCompany components to utilize the new dynamic form structure.
- Added createAdminFormSections and createCompanyFormSections functions to define form fields and validation rules.
- Enhanced form handling with improved error management and dynamic field rendering.

This update enhances maintainability and scalability of forms across the application.
2026-06-21 09:03:51 +03:30
AmirReza Jamali 169708e49d fix(companies): align optional numeric fields with API validation
continuous-integration/drone/push Build is passing
Make employee_count, annual_revenue, and founded_year truly optional in
the create company form and payload. Add field validation docs and
Cypress e2e coverage for dashboard and notifications.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-16 11:47:45 +03:30
AmirReza Jamali 2fec8bb84c Fix admin profile image removal
continuous-integration/drone/push Build is passing
2026-06-16 11:18:53 +03:30
AmirReza Jamali a62963a93d chore(env): update application version to 2.3.1 in production environment
feat(customers): enhance customer list filters with lazy-loaded company options

- Added InputGroup components for searching by full name and email in CustomerListFilters.
- Integrated Select component for company selection with lazy-loading capabilities.
- Implemented company search and load more functionality using useCompaniesInfiniteQuery.
- Updated useCustomerListPresenter to manage company search state and loading indicators.
- Enhanced customer list filtering experience by allowing dynamic company selection.
2026-06-08 12:48:04 +03:30
AmirReza Jamali 72948a9b55 feat(dashboard): add daily trend chart and statistics section to dashboard
- Introduced DailyTrendChart component for visualizing daily scraped TED notices, documents, and translated notices.
- Implemented StatisticsSection to display key metrics with animated counters and a days selector for data range.
- Created utility function to convert API data into labeled points for chart rendering.
- Updated dashboard index to include the new StatisticsSection, enhancing overall dashboard functionality and user experience.
- Refactored existing trends chart to utilize the new DailyPoint type for consistency in data handling.
2026-06-07 12:39:15 +03:30
AmirReza Jamali da1e2f89e7 feat(documents): implement document upload functionality for companies
- Added DocumentItem component to display uploaded documents in CompanyDetailsPage.
- Introduced useUploadCompanyDocuments hook for handling document uploads.
- Updated CreateCompany form to include document upload capabilities and validation for file types and sizes.
- Enhanced API services to support batch document uploads and retrieval of document information.
- Improved response handling in the file service for better error management and user feedback.
2026-06-06 17:18:02 +03:30
AmirReza Jamali 88f223bf08 chore(env): update application version to 2.2.8 in production environment
feat(marketing): enhance step components with validity reporting

- Added onValidityChange prop to multiple step components (BenefitsStep, ChallengesStep, ChartStep, ContactsStep, FeaturesStep, FooterStep, HeroStep) to handle form validity.
- Updated respective presenter hooks to utilize the new onValidityChange functionality for real-time validity reporting.
- Enhanced MarketingForm to manage step validity and disable the next button based on current step validity.
2026-06-06 15:39:03 +03:30
AmirReza Jamali 5d01d66ea3 chore(env): update application version to 2.2.7 in production environment
feat(image-upload): introduce ImageUploadField component for enhanced image uploads

- Added ImageUploadField component to streamline image uploads with improved UI and functionality.
- Integrated file upload handling with a new file service for better management of image uploads.
- Updated SectionStep component to utilize ImageUploadField for icon uploads, enhancing user experience.
- Refactored TenderListFilters to use isDateRangeActive utility for improved date range filtering logic.
2026-06-06 09:51:32 +03:30
AmirReza Jamali a99f86b2f9 feat(notification): enhance NotificationDetailsPage and Notification component with improved UI and functionality
- Refactored NotificationDetailsPage to utilize a presenter hook for better state management and loading handling.
- Improved UI elements in NotificationDetailsPage, including a hero header and detail grid for displaying notification information.
- Updated Notification component to streamline the marking of notifications as seen and enhance the display of notification details.
- Added gradient backgrounds and improved tooltip functionality for better visual feedback and user experience.
2026-06-03 16:34:43 +03:30
AmirReza Jamali bb3695ee74 chore(env): update application version to 2.2.6 in production environment
feat(tenders): enhance TendersTable with improved title truncation and tooltip support

- Updated TendersTable to include a tooltip for tender titles exceeding 40 characters, improving user experience by providing additional context.
- Refactored imports in TendersTable for better organization and clarity.
2026-06-01 19:07:47 +03:30
AmirReza Jamali 9424758af5 fix(next.config): correct comment formatting for BACKEND_API_BASE_URL warning
- Updated comment in next.config.mjs to improve clarity regarding the implications of setting BACKEND_API_BASE_URL in the environment file.
- Added "use client" directive in tableSortContext.ts to indicate client-side rendering for the context component.
2026-06-01 13:14:25 +03:30
AmirReza Jamali f0902d7536 feat(api): enhance backend API configuration and routing for multi-domain support
- Updated `next.config.mjs` to implement host-based routing for two domains, allowing seamless API proxying to the appropriate backend based on the host.
- Refactored backend API base URL logic in `config.ts` to dynamically determine the correct URL based on the deployment environment, supporting both production and test setups.
- Modified `CreateCompany` form to validate website input with a regex pattern and changed input type to text for better user experience.
2026-06-01 11:34:42 +03:30
AmirReza Jamali eb41f9b7b2 feat(docs): migrate and reorganize frontend guides for BP panel and file uploads
- Deleted outdated documentation files for BP panel list sorting and Filestore frontend guide.
- Created new documentation files for BP panel list sorting and Filestore frontend guide in the client directory.
- Updated the structure and content to enhance clarity and accessibility for frontend integration with file upload and profile image APIs.
- Ensured consistency in documentation style and improved examples for better developer experience.
2026-05-31 15:18:37 +03:30
AmirReza Jamali 46ddc018a6 feat(tables): implement sortable columns across various table components
- Added TableSortProvider to manage sorting state in AdminsTable, CmsTable, CompaniesTable, CustomersTable, TendersTable, and CompanyCategoriesTable.
- Enhanced TableHead component to support sortable columns with visual indicators for sort direction.
- Introduced columnSortKeys and columnDefaultOrder mappings in respective table presenters to define sortable fields and default sorting behavior.
- Updated useCompanyListPresenter, useCmsTablePresenter, useCustomerListPresenter, useTenderListPresenter, and useCompanyCategoriesPresenter to handle sorting logic and state management.
- Improved user experience by allowing dynamic sorting of table data based on user interactions.
2026-05-31 10:48:08 +03:30
AmirReza Jamali 5ef0298840 feat(reset-password): implement reset password functionality for admins and customers
- Added new ResetPasswordModalContent component for displaying generated passwords.
- Integrated reset password functionality in the AdminsTable and CustomersTable components, allowing users to reset passwords for admins and customers.
- Created useResetPasswordModalPresenter hook to manage password visibility and clipboard copying.
- Updated API services and hooks to support reset password requests for both admins and customers.
- Enhanced tooltip functionality for reset password actions in the tables.
2026-05-30 12:09:57 +03:30
AmirReza Jamali 36334119bd chore(env): update application version to 2.2.4 in production environment
feat(multi-select): enhance MultiSelect component with dropdown positioning and portal rendering

- Added dynamic dropdown positioning to ensure it appears correctly relative to the trigger element.
- Implemented portal rendering for the dropdown to improve performance and prevent overflow issues.
- Refactored MultiSelect state management for better clarity and maintainability.

feat(switch): improve Switch component with GSAP animations and enhanced styling

- Integrated GSAP animations for thumb transitions and glow effects to enhance user interaction.
- Updated styling for the Switch component to improve visual feedback and responsiveness.

feat(companies-table): add currency and language metadata display in CompaniesTable

- Introduced currency and language metadata for better representation of company details.
- Enhanced UI for displaying company languages and currencies with tooltips for additional context.

feat(assign-to-company-modal): refactor AssignToCompanyModalContent to use MultiSelect

- Replaced Select component with MultiSelect for improved user experience in selecting companies.
- Streamlined state management and data handling for company assignments.

feat(customers-table): enhance customer company display with tooltips and improved layout

- Updated customer company display to show a maximum of two companies with a tooltip for additional companies.
- Improved styling for better visual representation of customer associations with companies.

feat(confirmation-modal): enhance ConfirmationModal with animations and improved accessibility

- Added GSAP animations for modal entrance and exit to improve user experience.
- Implemented accessibility features for better keyboard navigation and focus management.

feat(status): extend Status component with pulse and shimmer effects for enhanced visual feedback

- Introduced new visual effects for status indicators to improve user engagement and clarity.
- Updated styles for better integration with existing UI components.

feat(tooltip): enhance tooltip styling and functionality with new palettes

- Implemented a new tooltip design with gradient backgrounds and shadows for improved visibility.
- Updated tooltip parameters to support new styling options and enhance user experience.
2026-05-24 13:07:07 +03:30
AmirReza Jamali 44897aba5d chore(env): update application version to 2.2.2 in production environment
feat(checkbox): enhance Checkbox component with animation and new icon options

- Added GSAP animations for checkbox state changes to improve user interaction.
- Introduced a new "none" icon option for the Checkbox component.
- Updated Checkbox component to support additional props and improved styling.
- Refactored Checkbox rendering logic for better performance and maintainability.

feat(tender-filters): add document state filter to TenderListFilters

- Integrated a new checkbox filter for "Documents scraped" in the TenderListFilters component.
- Enhanced the UI for the filter section to improve user experience.
2026-05-20 16:17:44 +03:30
AmirReza Jamali f6eaac94c6 feat(tenders): enhance pagination functionality and styling
- Added absoluteCurrentPage to the useTenderListPresenter for better pagination state management.
- Updated the TendersTable component to utilize absoluteCurrentPage in the pagination key.
- Enhanced the Pagination component to support a new "tenders" variant for improved styling.
- Introduced custom styles for the active page in the tenders pagination, ensuring a distinct visual representation.
- Refactored the useHybridPagination hook to maintain accurate page tracking with cursor navigation.
2026-05-20 15:48:29 +03:30
AmirReza Jamali f080d51e63 feat(dashboard): integrate new dashboard queries and refactor closing soon component
- Replaced TTenderDetails with TDashboardClosingSoonItem in the ClosingSoonCard component for better type accuracy.
- Removed the fake-data.ts file as it is no longer needed with the new dashboard queries.
- Introduced new hooks for fetching dashboard data, including summary, trend, countries, notice types, and closing soon items.
- Updated useDashboardData to utilize the new dashboard queries, enhancing data retrieval and management.
- Enhanced the API service layer with new endpoints for dashboard functionalities, improving overall architecture.
2026-05-20 13:01:36 +03:30
AmirReza Jamali 7dbe1cc41c feat(stepper): enhance Stepper component with animations and improved state management
- Added GSAP animations for step transitions, rail fill, and button hover effects to enhance user experience.
- Implemented useLayoutEffect for intro animations and content swaps when steps change.
- Introduced refs for managing step indicators and content, improving performance and maintainability.
- Updated button click handling to ensure smooth scrolling and step navigation.
2026-05-20 06:58:51 +03:30
AmirReza Jamali 99c7e26894 feat(multi-select): enhance multi-select component with search and load more functionality
- Added onSearch and onLoadMore props to the MultiSelect component for improved user interaction.
- Refactored state management to handle selected items and search queries more effectively.
- Updated the CreateNotificationForm to integrate the new multi-select features for recipient selection.
- Implemented infinite scrolling logic in the useCompaniesInfiniteQuery, useCustomersInfiniteQuery, and useAdminListInfiniteQuery hooks to support dynamic data loading.
- Enhanced the useCreateNotificationFormPresenter to manage recipient search and loading states.
2026-05-19 12:43:53 +03:30
AmirReza Jamali d34d405cd3 fix(feedback-table): ensure feedback data is always an array
- Updated the feedback property in useFeedbackTablePresenter to return an empty array if data is not an array, preventing potential runtime errors.
- Removed the cpv_codes input field from TenderListFilters to streamline the filter options, enhancing user experience.
2026-05-19 09:03:10 +03:30
AmirReza Jamali fc53d6b556 feat(pagination): implement windowed pagination for improved navigation
- Introduced windowed pagination logic in the TendersTable component to enhance user experience by allowing for a more manageable view of pages.
- Updated the pagination component to accept new props for page range and margin pages, enabling customizable pagination display.
- Refactored the useTenderListPresenter to utilize the new windowed pagination functionality, improving clarity and maintainability of pagination handling.
2026-05-18 15:28:07 +03:30
AmirReza Jamali 7b63b2a6f3 refactor(useAdminsPresenter): simplify admin list query parameters
- Removed unnecessary spreading of apiDefaultParams in the useGetAdminListQuery call, streamlining the query logic.
- Updated pagination parameters to directly use the provided params, enhancing clarity and maintainability of the code.
2026-05-18 15:15:17 +03:30
AmirReza Jamali a238edc563 feat(dashboard): refactor home page to utilize TenderDashboard component
- Replaced the previous home page structure with a simplified TenderDashboard component for improved clarity and maintainability.
- Updated the .gitignore file to include IDE-specific files, ensuring a cleaner repository.
- Enhanced the useTenderListPresenter to support new parsing logic for cpv_codes in search parameters.
- Introduced a new utility function, buildQueryString, for better handling of query parameters in API requests.
2026-05-18 10:59:16 +03:30
AmirReza Jamali f4a425a6e5 feat(pagination): implement hybrid pagination across multiple components
- Introduced a new `useHybridPagination` hook to manage pagination logic, enhancing data fetching and navigation.
- Updated various components including `useAdminsPresenter`, `useCompanyListPresenter`, `useCustomerListPresenter`, and others to utilize the new pagination hook, improving code consistency and reducing duplication.
- Refactored pagination handling in each component to streamline state management and improve user experience during data navigation.
- Enhanced search functionality to reset pagination state when new search parameters are applied, ensuring accurate data display.
2026-05-17 17:01:28 +03:30
AmirReza Jamali 0d8300493e feat(select): enhance dropdown positioning and filtering functionality
- Introduced a new measureDropdownRect function to accurately position the dropdown menu based on viewport dimensions, improving usability.
- Updated the Select component to utilize the new dropdown measurement logic, ensuring consistent placement above or below the trigger.
- Refactored panelRect state management to use a more structured DropdownRect type, enhancing type safety and clarity.
- Improved event handling for dropdown visibility and positioning during scroll and resize events, ensuring a responsive user experience.
- Adjusted styling in related components for better alignment and visual consistency.
2026-05-17 10:15:25 +03:30
AmirReza Jamali de92137ec4 feat(auth): enhance sign-in page layout and theme toggle functionality
- Updated the SignIn component to improve layout and styling, ensuring better visual alignment.
- Added responsive visibility for the ThemeToggleSwitch in the SigninWithPassword component.
- Refactored the Signin component to include the ThemeToggleSwitch for better user experience.
- Improved code organization by separating theme toggle logic and ensuring consistent styling across components.
2026-05-17 09:42:59 +03:30
AmirReza Jamali d9a945904a feat(phone-input): integrate phone number input component and validation
- Added `libphonenumber-js` dependency for improved phone number handling.
- Refactored `CreateAdmin` form to utilize a new `PhoneNumberInput` component with validation rules.
- Updated `useCreateAdminPresenter` to normalize phone number input before submission.
- Enhanced error messages for phone validation in `Texts` constant.
- Modified `User` schema to validate phone numbers using E.164 format.
2026-05-16 10:28:03 +03:30
AmirReza Jamali 7aa13bb904 feat(select): implement searchable select component with server search capabilities
- Enhanced the Select component to support a searchable dropdown, allowing users to filter options by label or value.
- Introduced a new useSelectServerSearch hook for server-side searching, enabling dynamic fetching of options based on user input.
- Updated TenderDetailsHeader and TenderListFilters to utilize the searchable feature, improving user experience in selecting languages and countries.
- Added utility functions for filtering select items and managing search states, ensuring efficient data handling and responsiveness.
2026-05-16 09:18:12 +03:30
AmirReza Jamali 25f8bde229 feat(dependencies): add Lottie animation libraries and refactor NotFoundPage
- Added `@lottiefiles/dotlottie-react` and `lottie-react` dependencies for enhanced animation capabilities.
- Refactored the NotFoundPage component to utilize a dedicated NotFoundContent component, improving code organization and readability.
- Updated package.json and pnpm-lock.yaml to reflect new dependencies and their versions.
2026-05-13 17:07:47 +03:30
AmirReza Jamali d1bc56dc60 feat(tender-list): add GSAP for animations and enhance table functionality
- Integrated GSAP for improved animations in the tender list components, enhancing user experience during data loading and transitions.
- Refactored TendersTable and TenderListFilters to utilize new animation features, providing smoother interactions.
- Updated TableBody and TableSkeleton components to support ref forwarding, improving flexibility in rendering and animations.
- Enhanced useTenderListPresenter to manage loading states and pagination more effectively, ensuring better data handling and user feedback.
2026-05-13 12:19:42 +03:30