This commit introduces a new user settings page and enhances push notification functionality.
The new settings page, located at `/pages/settings`, allows users to view and update their personal profile information. It fetches the current user's data and provides a form to edit fields such as name, email, phone number, position, and role. The form is built using `react-hook-form` for state management and validation, and it leverages custom hooks (`useProfileQuery`, `useUpdateProfileQuery`) to interact with the API.
Additionally, a `notificationclick` event listener has been added to the Firebase messaging service worker. This handler improves the user experience for push notifications by focusing on an existing tab with the relevant URL or opening a new one if none exists when a notification is clicked.
This commit expands the company profile by adding several new fields to the create and edit forms. This allows for the collection of more detailed and comprehensive company information.
Key changes include:
- Added new fields: Establishment Date, Company Type, Business Nature, Industry, Country, State, and City.
- Introduced a new reusable `DatePicker` component, utilizing `react-datepicker`, for date input.
- Created a new `CalendarIcon` for use in the date picker.
- Updated the company Zod schema, API services, and data types to support the new fields.
Additionally, this commit includes a refactor to standardize the `MultiSelect` component by renaming the `text` prop to `label` for better consistency across form elements. Form labels are now capitalized for a uniform UI.
This commit introduces several enhancements to form components and user experience across the application.
- **Sign-in Form:**
- Implemented a loading state using `useIsMutating` from TanStack Query.
- The username and password fields are now disabled during the login process to prevent concurrent submissions.
- The "Sign in" button displays a spinner while the mutation is pending, providing clear visual feedback.
- **Assign to Company Modal:**
- Refactored the modal to use `react-hook-form` for more robust state management and validation.
- The form submission button is now disabled while the assignment request is in progress.
- **Tag Input Component:**
- Added a new `shouldAddWithSpace` prop to allow creating tags by pressing the space bar, increasing the component's flexibility.
- **Header:**
- Corrected the image path for the mobile header logo to display the correct icon.
The main logo SVG has been replaced with an updated version.
The previous logo had hardcoded fill colors, making it difficult to adapt to different color schemes, such as light and dark modes.
The new SVG uses `fill="currentColor"`, which allows its color to be controlled via the parent element's CSS `color` property. This makes the logo easily themeable and more flexible for use throughout the application.