Commit Graph

92 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 a762a14026 feat(admin): optimize tender list pagination
continuous-integration/drone/push Build is passing
2026-07-11 15:46:19 +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 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 5b5150e7da Fix notification user filtering
continuous-integration/drone/push Build is passing
2026-06-27 18:28:49 +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 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 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 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 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
AmirReza Jamali 2178f25af5 feat(tender-details): enhance document handling and navigation in tender details
- Added a new documents section to the tender details page, improving organization and visibility of related documents.
- Updated the tender navigation items to conditionally include the documents section based on the loading state and document availability.
- Refactored the TenderDetailsContent component to manage document loading states and conditionally render the documents section.
- Enhanced the getTenderNavItems utility to accept options for showing the documents section, improving flexibility in navigation rendering.
2026-05-13 08:55:40 +03:30
AmirReza Jamali 88bc939956 feat(contact-us & feedback tables): implement pagination and loading states
- Added pagination functionality to ContactUsTable and FeedbackTable components, enhancing user navigation through large datasets.
- Integrated loading states to provide visual feedback during data fetching.
- Updated data fetching hooks to accept parameters for improved query handling.
- Refactored table row rendering to include pagination metadata for accurate row numbering.
- Enhanced overall user experience by conditionally rendering pagination controls based on data availability.
2026-05-11 17:30:34 +03:30
AmirReza Jamali 5855ce33d4 feat(date-picker): add clearable option and enhance date handling
- Introduced a clearable option for the DatePicker component, allowing users to easily reset the selected date.
- Enhanced date handling logic to support conversion from Unix timestamps and improved value management for single and range selections.
- Updated TenderListFilters to utilize the clearable feature in multiple DatePicker instances for better user experience.
- Refactored useTenderListPresenter to manage date range filters more effectively, ensuring proper cleanup of cleared values.
2026-05-11 16:42:49 +03:30
AmirReza Jamali f397158a29 refactor(tender-details): enhance translation page tests and layout
- Updated Cypress tests for the tender translation page to improve visibility checks and streamline assertions.
- Refactored test structure to utilize a dedicated function for fetching the visible title heading.
- Adjusted test cases to ensure accurate language switching and URL handling for tender details.
- Improved layout consistency in the translation page by refining element visibility checks and ensuring proper section rendering.
2026-05-11 16:11:09 +03:30
AmirReza Jamali 283aa9385e refactor(tender-details): enhance tender section navigation and layout
- Introduced a scroll spy feature for tender sections to improve navigation experience.
- Added TenderSectionNavList component for better section navigation and user interaction.
- Updated MainLayout to adjust main content overflow behavior for improved layout consistency.
- Refactored TendersTable to remove unnecessary create button and streamline feedback navigation.
2026-05-10 10:13:57 +03:30
AmirReza Jamali f01632e38d refactor(tender-details): enhance translation and summary features
- Integrated language selection and translation functionality in TenderDetails, allowing users to choose display language and translate tender metadata.
- Added AI summary section to display overall summary of the tender.
- Updated API service to support translation requests and handle responses effectively.
- Improved pagination handling in AdminsTable for better user experience.
- Refactored various components to ensure consistent data flow and state management.
2026-05-10 08:44:03 +03:30
AmirReza Jamali f48cb7e249 chore: update app version and enhance UI components
- Bumped NEXT_PUBLIC_APP_VERSION to 2.0.3 for the latest release.
- Improved Cypress test for customer feedback page to handle delayed route transitions.
- Refactored CompanyDetailsPage to enhance layout and added new components for better structure.
- Updated TenderDetails to conditionally render location and currency information based on validity checks.
- Added data-cy attributes to various form elements and tables for improved testing capabilities.
2026-05-05 15:20:55 +03:30
AmirReza Jamali 88f9605748 feat(tenders-table): add submission and tender deadlines to tender list
- Enhanced TendersTable to display submission deadline, tender deadline, and created at date using unixToDate for better clarity.
- Updated useTenderListPresenter to include new columns for submission and tender deadlines.
- Modified TenderSchema to make created_at optional, aligning with data structure requirements.
2026-05-02 13:01:11 +03:30
AmirReza Jamali 37c4053a6c feat(tender-details): enhance tender details page with improved layout and error handling
- Added SectionHeading and ExternalLinkIcon components for better structure and visual appeal.
- Improved error handling UI when tender data fails to load, providing user-friendly messages and navigation options.
- Refactored ShowcaseSection to accept additional className and rootClassName props for more flexible styling.
- Updated TendersTable to streamline action buttons and improve layout consistency.
2026-05-02 10:05:48 +03:30
AmirReza Jamali 5bf3e53d95 refactor(ui): improve layout and accessibility in various components
- Updated the grid layout in the Home page for better responsiveness.
- Adjusted tabIndex handling in MultiSelect component to enhance accessibility.
- Added minimum width to the TopChannels table for consistent display.
- Refined notification recipient placeholder logic for cleaner code.
2026-04-28 15:16:33 +03:30
AmirReza Jamali eab516c7f3 feat(tests, components): enhance Cypress commands and UI elements for improved testing and accessibility
- Added new Cypress commands for mocking admin-related API interactions, including list, create, update, delete, and change status functionalities.
- Introduced data-cy attributes across various components (e.g., Breadcrumbs, Forms, Tables) to improve testability and accessibility.
- Updated existing components to support new data-cy attributes for better integration with Cypress tests.
2026-04-25 13:25:23 +03:30
AmirReza Jamali f195bba03d refactor(auth, layouts): enhance UI components for improved aesthetics and usability
- Updated SignIn and Profile components with new background styles and layout adjustments for a more modern look.
- Refined button styles in GoogleSigninButton and SigninWithPassword for better user interaction feedback.
- Enhanced InputGroup and Select components with improved styling and error handling for a more consistent user experience.
- Adjusted Sidebar and Header components for better responsiveness and visual appeal.
- Implemented spotlight effect in UserInfo dropdown for a more engaging user interface.
2026-04-23 20:53:23 +03:30
AmirReza Jamali 57e9d90eb1 refactor(Breadcrumbs, InputGroup, Layouts, Tables): enhance styling and structure for improved responsiveness
- Adjusted Breadcrumb component styles for better spacing and font size.
- Made placeholder in InputGroup optional and refined input styles for consistency.
- Updated MainLayout and Header components for improved padding and layout.
- Enhanced table components by importing necessary elements and optimizing rendering logic.
- Refactored CompanyCategoriesTable to utilize optimistic updates for better user experience.
2026-04-19 16:14:51 +03:30
AmirReza Jamali c1b6b4ccf1 feat(Tables): implement pagination and loading state handling across multiple tables
- Added `getPaginatedRowNumber` utility function to calculate the correct row number based on pagination.
- Integrated `isLoading` prop in `EmptyListWrapper` to conditionally render loading state.
- Updated various table components (Admins, CMS, Companies, Inquiries, etc.) to utilize the new pagination logic and loading state handling.
- Wrapped pagination components in `IsVisible` to conditionally display based on data availability.
2026-04-15 15:57:36 +03:30
AmirReza Jamali c93a1ffe8d refactor(Select, AssignToCompanyModalContent): enhance select placeholder and integrate company query
- Updated the Select component to disable the placeholder option for better user experience.
- Refactored AssignToCompanyModalContent to accept a companiesQuery prop, improving data handling.
- Adjusted the useCustomerListPresenter hook to include the company query, ensuring it is only enabled when the assign company modal is open.
- Enhanced the CustomersTable component to pass the company query to the modal content.
2026-04-13 19:27:22 +03:30
AmirReza Jamali 26c092db4a fix(MultiSelect): enhance item handling and improve empty state display
- Update MultiSelect component to allow items to be optional or null, improving flexibility.
- Implement safe handling of items to prevent errors when items are not provided.
- Add a message to display when no items are available, enhancing user experience.
- Refactor rendering logic for selected items to maintain consistent styling.
2026-03-07 10:53:12 +03:30
AmirReza Jamali da82399d07 feat(tables): integrate EmptyListWrapper component for improved empty state handling
- Add EmptyListWrapper to various tables (Admins, Companies, Customers, Feedback, Notification History, Tenders) to provide a consistent empty state message when no data is available.
- Update phone number and status display logic in the Profile page to handle null values gracefully.
- Introduce worktree setup configuration in worktrees.json for easier project setup.
2026-02-10 18:19:49 +03:30
AmirReza Jamali 05e4346b1b refactor(inquiries): Remove unused isSubmitting state from status change
- Remove isSubmitting prop from ChangeStatusForm component interface
- Remove isSubmitting parameter from ChangeStatusForm component destructuring
- Remove isChangingStatus variable from useChangeInquiryStatus hook
- Remove isSubmitting prop passed to ChangeStatusForm in InquiriesTable
- Remove isChangingStatus from presenter return object
- Simplify status change form by eliminating unused loading state management
2025-11-25 15:47:40 +03:30
AmirReza Jamali 864c588f8a feat(inquiries): Replace custom EditIcon with PencilSquareIcon component
- Remove custom EditIcon SVG component definition from inquiries table
- Import PencilSquareIcon from assets/icons instead of custom implementation
- Update change status button to use PencilSquareIcon component
- Improve code maintainability by using centralized icon library
- Format ListHeader component props for better readability
2025-11-25 15:06:18 +03:30
AmirReza Jamali 2ec752df0c feat(inquiries): Add change status functionality to inquiries
- Create ChangeStatusForm component with status, reason, and description fields
- Add change status modal to inquiries table with form integration
- Implement useChangeInquiryStatus hook integration in presenter
- Add edit icon button to trigger status change modal for each inquiry
- Update Status component to accept status prop for proper styling
- Update FormFooter component to support form submission handling
- Add isChangeStatusModalOpen state management to presenter
- Update TInquiries type definitions to include change status credentials
- Enhance inquiries list with status change workflow alongside existing delete functionality
2025-11-25 14:53:16 +03:30
AmirReza Jamali 8b795bb428 feat(inquiries): Add pagination functionality to inquiries list table
- Import and integrate Pagination component into inquiries table
- Add allInquiries data exposure to access pagination metadata
- Expose setParams function to allow dynamic pagination updates
- Initialize default offset and limit parameters (10 items per page)
- Reset offset to 0 when applying new filters for consistent pagination
- Implement page change handler to update offset based on selected page
- Maintain filter state while navigating between pages
2025-11-25 13:54:40 +03:30
AmirReza Jamali a77bb6cccc feat(inquiries): Add filtering functionality to inquiries list table
- Create new InquiriesListFilters component with search and status filter fields
- Integrate filter modal into inquiries table with form handling
- Add INQUIRY_STATUS enum with pending, reviewed, approved, and rejected statuses
- Implement URL-based query parameter management for filter persistence
- Add form state management using react-hook-form with watch and setValue utilities
- Connect filter search to useGetInquiries hook to fetch filtered results
- Support clearing individual filter fields and closing filter modal
2025-11-25 12:40:30 +03:30
AmirReza Jamali 6d4016af5e feat(inquiries): add sidebar nav item, icon, and API endpoint
- Add "Inquiries" nav item to sidebar data with `/inquiries` URL and BriefcaseTimer icon
- Implement BriefcaseTimer SVG icon component
- Add `INQUIRIES` base endpoint to API_ENDPOINTS
- Cleanup: remove commented details button in CmsTable, reorder imports
2025-11-25 12:03:12 +03:30