Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: interactive charts on home page (BAL-3246) #2925

Merged
merged 3 commits into from
Jan 1, 2025
Merged

feat: interactive charts on home page (BAL-3246) #2925

merged 3 commits into from
Jan 1, 2025

Conversation

r4zendev
Copy link
Collaborator

@r4zendev r4zendev commented Jan 1, 2025

Changes

  • Improve interactivity on the Home page by allowing the user to click the parts of charts/tables to be forwarded to the appropriate list of monitoring reports.

  • Fix spacing on Social & Ads page

image
  • Add empty state text on Website Credibility tab (each section has its own text to avoid breaking the layout)

image

Summary by CodeRabbit

  • New Features

    • Added interactivity to homepage charts
    • Enhanced navigation in Portfolio Risk Statistics
    • Improved handling of empty data scenarios in website credibility view
  • Bug Fixes

    • Refined search parameter management across components
  • Dependencies

    • Updated @ballerine/ui to version 0.5.59
    • Updated @ballerine/react-pdf-toolkit to version 1.2.59
    • Updated various internal package versions

@r4zendev r4zendev self-assigned this Jan 1, 2025
Copy link

changeset-bot bot commented Jan 1, 2025

⚠️ No Changeset found

Latest commit: d54c9a1

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Copy link
Contributor

coderabbitai bot commented Jan 1, 2025

Warning

Rate limit exceeded

@r4zendev has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 14 minutes and 4 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between d54c9a1 and 90b1f43.

📒 Files selected for processing (1)
  • apps/backoffice-v2/src/pages/Statistics/components/PortfolioRiskStatistics/PortfolioRiskStatistics.tsx (4 hunks)

Walkthrough

This pull request introduces version updates across multiple Ballerine packages, focusing on enhancing interactivity in homepage charts and updating dependencies. The changes span several applications and packages, including backoffice-v2, kyb-app, react-pdf-toolkit, and ui. Key modifications include adding interactivity to portfolio risk statistics, updating search parameter handling, and improving component rendering for scenarios with empty data arrays.

Changes

File Change Summary
apps/backoffice-v2/CHANGELOG.md Added version 0.7.89 with homepage chart interactivity and dependency updates
apps/backoffice-v2/package.json Updated version to 0.7.89 and dependencies
apps/backoffice-v2/src/common/hooks/* Enhanced useSerializedSearchParams with replace option
apps/backoffice-v2/src/pages/Statistics/components/PortfolioRiskStatistics Added navigation and interactivity to charts and tables
apps/kyb-app/* Updated to version 0.3.105 with @ballerine/ui dependency update
packages/react-pdf-toolkit/* Updated to version 1.2.59
packages/ui/* Updated to version 0.5.59 with chart interactivity and dependency updates

Sequence Diagram

sequenceDiagram
    participant User
    participant PortfolioRiskStatistics
    participant MerchantMonitoring
    
    User->>PortfolioRiskStatistics: Clicks on Risk Level/Indicator
    PortfolioRiskStatistics->>MerchantMonitoring: Navigate with Query Params
    MerchantMonitoring-->>User: Display Filtered Merchants
Loading

Possibly related PRs

Suggested labels

enhancement, Review effort [1-5]: 4

Suggested reviewers

  • Omri-Levy
  • alonp99

Poem

🐰 Hop, hop, through code so bright,
Interactivity takes its flight!
Charts now dance with user's might,
Dependencies aligned just right,
A rabbit's code update delight! 🚀


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@r4zendev r4zendev changed the title feat: interactive charts on home page feat: interactive charts on home page (BAL-3246) Jan 1, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (11)
packages/react-pdf-toolkit/CHANGELOG.md (1)

3-8: Consider adding more descriptive changelog entries.

The PR implements interactive charts on the home page and fixes spacing issues, but these changes are not reflected in the changelog. Consider adding these details to provide better context for the changes in this version.

Example:

 ## 1.2.58
 
 ### Patch Changes
 
+- Added interactive charts on home page
+- Fixed spacing issues on Social & Ads page
+- Updated empty state text on Website Credibility tab
 - Updated dependencies
   - @ballerine/[email protected]
packages/ui/CHANGELOG.md (1)

3-7: Consider adding more details to the changelog entry.

While the change description aligns with the PR objectives, it would be helpful to specify what interactivity improvements were made to the stats cards (e.g., click behavior, hover effects, etc.).

 ## 0.5.58

 ### Patch Changes

-Improve interactivity on Home page in the stats cards
+Improve interactivity on Home page in the stats cards by enabling click navigation to corresponding monitoring reports
packages/ui/src/components/templates/report/components/AdsAndSocialMedia/AdsAndSocialMedia.tsx (3)

123-124: Check responsive behavior for container widths.

You’ve used grow-0 w-2/3 min-w-0. Ensure that on smaller screens, the layout remains visually appealing and no overflow occurs.


143-174: Eliminate repetition by abstracting field rendering.

The code for mapping over the fields is repeated in both columns. Consider extracting a small helper component or function to render each field’s label and value, ultimately improving maintainability and reducing duplication.

-/* repeated code in both columns */
+// Potential approach: create a small functional component or map-based renderer

182-182: Use centralized color tokens or theme variables instead of hardcoding.

!text-[#14203D] is an inline hex color. For maintainability and consistency across the app, consider referencing a shared color token or theme variable (e.g. class names or tailwind config).

apps/backoffice-v2/src/common/hooks/useZodSearchParams/interfaces.ts (1)

6-6: Consider documenting the replace property's usage.
Adding replace?: boolean; looks good. However, it would be beneficial to include a brief inline comment or JSDoc to clarify the intended effect and usage scenarios of this flag—especially for new contributors or maintainers who might not be aware of how it impacts history manipulation.

apps/backoffice-v2/src/common/hooks/useSerializedSearchParams/useSerializedSearchParams.tsx (1)

9-13: Validate behavior when replace is set to true.
Destructuring options to default the new replace flag as false is great. However, you might consider verifying that discussion or usage around “back button” behavior is documented so that future maintainers understand the intended user flow when replace is toggled.

apps/backoffice-v2/src/pages/Statistics/components/PortfolioRiskStatistics/hooks/usePortfolioRiskStatisticsLogic/usePortfolioRiskStatisticsLogic.tsx (2)

24-31: Efficiently handle large datasets.
This snippet uses a sorting approach that might be expensive if violationCounts can be large. Consider memoizing or batching the sorting outside of tight loops, or using a more optimized data structure if performance becomes an issue.


32-43: Handle potential division by zero gracefully.
Currently, the Math.max(...filteredRiskIndicators.map(item => item.count), 0) call prevents errors if the array is empty, but you might also consider early-returning an empty array for widths to avoid further calculations when filteredRiskIndicators is empty. This could simplify reasoning and reduce the chance of unintended side effects.

apps/backoffice-v2/src/pages/Statistics/components/PortfolioRiskStatistics/PortfolioRiskStatistics.tsx (2)

89-93: Consider extracting navigation logic for improved maintainability.

Here, inline arrow functions in the onClick events are succinct but can become repetitive if extended. You could extract a helper function (e.g., handleRiskCellClick(riskLevel)) or define the memoized callback outside the return to reduce duplication and clarify intent.

- onClick={() => navigate(`/${locale}/merchant-monitoring?riskLevels[0]=${riskLevel}`)}
+ const handleRiskCellClick = (riskLevel: string) => {
+   navigate(`/${locale}/merchant-monitoring?riskLevels[0]=${riskLevel}`);
+ };
...
<Cell
  ...
  onClick={() => handleRiskCellClick(riskLevel)}
/>

177-185: Enhance reuse by factoring out repeated code blocks.

You're using a similar pattern: a clickable block that navigates to the merchant-monitoring page with different query parameters. Consider reusability by factoring out a small component or helper. Additionally, ensure that the locale value is consistently sanitized if coming from user inputs or external sources.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8fabbc9 and 6f69eb1.

📒 Files selected for processing (15)
  • apps/backoffice-v2/CHANGELOG.md (1 hunks)
  • apps/backoffice-v2/package.json (2 hunks)
  • apps/backoffice-v2/src/common/hooks/useSerializedSearchParams/useSerializedSearchParams.tsx (2 hunks)
  • apps/backoffice-v2/src/common/hooks/useZodSearchParams/interfaces.ts (1 hunks)
  • apps/backoffice-v2/src/pages/MerchantMonitoring/hooks/useMerchantMonitoringLogic/useMerchantMonitoringLogic.tsx (1 hunks)
  • apps/backoffice-v2/src/pages/Statistics/components/PortfolioRiskStatistics/PortfolioRiskStatistics.tsx (4 hunks)
  • apps/backoffice-v2/src/pages/Statistics/components/PortfolioRiskStatistics/hooks/usePortfolioRiskStatisticsLogic/usePortfolioRiskStatisticsLogic.tsx (1 hunks)
  • apps/kyb-app/CHANGELOG.md (1 hunks)
  • apps/kyb-app/package.json (2 hunks)
  • packages/react-pdf-toolkit/CHANGELOG.md (1 hunks)
  • packages/react-pdf-toolkit/package.json (2 hunks)
  • packages/ui/CHANGELOG.md (1 hunks)
  • packages/ui/package.json (1 hunks)
  • packages/ui/src/components/templates/report/components/AdsAndSocialMedia/AdsAndSocialMedia.tsx (3 hunks)
  • packages/ui/src/components/templates/report/components/WebsiteCredibility/WebsiteCredibility.tsx (2 hunks)
✅ Files skipped from review due to trivial changes (4)
  • apps/kyb-app/CHANGELOG.md
  • packages/ui/package.json
  • apps/kyb-app/package.json
  • apps/backoffice-v2/package.json
🔇 Additional comments (12)
packages/react-pdf-toolkit/CHANGELOG.md (1)

3-8: LGTM: Changelog format and structure.

The changelog entry follows the conventional format with proper version numbering and dependency updates.

apps/backoffice-v2/CHANGELOG.md (1)

3-10: LGTM! Changelog entries are consistent.

The changelog entry correctly documents both the feature change and its dependency updates. The version numbers are properly incremented across packages.

packages/react-pdf-toolkit/package.json (2)

30-30: Dependency update is consistent.

The @ballerine/ui update to 0.5.58 is part of coordinated version updates across multiple packages.

Let's verify the compatibility of this update:

✅ Verification successful

Dependency version is consistently used across packages

The version 0.5.58 of @ballerine/ui is consistently used in both packages/react-pdf-toolkit/package.json and apps/kyb-app/package.json. While we couldn't find the changelog to check for breaking changes, the coordinated update across multiple packages suggests this was an intentional synchronization of versions.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for breaking changes in @ballerine/ui
fd -g "CHANGELOG.md" --full-path "*ballerine/ui*" -x grep -A 5 "0.5.58" {} \;

# Verify this version is used consistently across workspace
rg '"@ballerine/ui": "0.5.58"' 

Length of output: 341


4-4: Version bump looks appropriate.

The increment from 1.2.57 to 1.2.58 follows semantic versioning and aligns with the scope of changes described in the PR.

Let's verify the changelog entry for this version:

✅ Verification successful

Version bump is appropriate and changelog entry is present

The changelog entry confirms:

  • Version 1.2.58 is properly documented
  • Changes are correctly categorized as patch updates
  • Dependencies are accurately listed with their corresponding versions
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if there's a corresponding changelog entry
fd -g "CHANGELOG.md" -x grep -A 5 "1.2.58" {} \;

Length of output: 198

packages/ui/src/components/templates/report/components/AdsAndSocialMedia/AdsAndSocialMedia.tsx (1)

81-83: Consider preserving or clearing query parameters.

When creating a "clean link," you're only concatenating hostname and pathname. If preserving query parameters or fragments is necessary, you might include them in the return value. Otherwise, if you prefer discarding them, you're all set.

packages/ui/src/components/templates/report/components/WebsiteCredibility/WebsiteCredibility.tsx (3)

155-186: Good job on the fallback UI for missing data.

Your changes for the “Estimated Monthly Visitors” section handle the scenario in which no data is present (trafficAnalysis.montlyVisitsIndicators.length > 0). Displaying “No Monthly Visitors Data Available” ensures a clear and user-friendly approach.


197-249: Great approach for empty traffic source data.

The condition trafficSources.length > 0 ? ... : ... is a well-thought-out solution to display an informative message when the list is empty. This improves clarity for users who might otherwise be confused by an empty chart.


258-299: Excellent use of descriptive empty state messages for engagement data.

By showing “No Engagement Data Available”, you ensure users receive a clear indication when there’s insufficient data. This enhances user experience and consistency across all data sections.

apps/backoffice-v2/src/common/hooks/useSerializedSearchParams/useSerializedSearchParams.tsx (1)

24-24: Ensure consistent merging vs. overwriting of search parameters.
Here, navigate merges the new search parameters. Because we're also passing replace to navigate, please confirm that whichever approach is used in the rest of the application is consistent—particularly if some features rely on stacking search states in the browser history.

Run the following script to confirm that the new replace logic is used consistently throughout the codebase:

✅ Verification successful

Based on the search results, I can see that the codebase consistently uses the replace option in navigation-related operations, particularly when dealing with search parameters. Here are the key observations:

  1. In useZodSearchParams.tsx, it's used with replace: true as a default option:
const [searchParams, setSearchParams] = useSerializedSearchParams(options);
  1. In useMerchantMonitoringLogic.tsx:
] = useZodSearchParams(MerchantMonitoringSearchSchema, { replace: true });
  1. In authentication flows (useSignInMutation.tsx, useSignOutMutation.tsx):
void navigate(callbackUrl, {
  replace: true,
  state: {
    from: state?.from,
  },
});
  1. In entity selection (useSelectEntity.tsx):
void navigate(`/${locale}/case-management/entities/${entityId}${search}`, {
  replace: true,
  state: {
    from: state?.from,
  },
});

The replace option is consistently used throughout the codebase when updating search parameters

The review comment's concern about consistency in merging vs. overwriting search parameters is addressed, as the codebase shows a clear pattern of using replace: true when dealing with search parameters. This ensures that the navigation behavior is consistent across the application, particularly in features that rely on search state management.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Searching for usage of navigate with replace or setSearchParams references outside this file
rg "navigate\(|setSearchParams" -A 3

Length of output: 29736

apps/backoffice-v2/src/pages/MerchantMonitoring/hooks/useMerchantMonitoringLogic/useMerchantMonitoringLogic.tsx (1)

31-31: Check alignment with existing conventions.
Adding { replace: true } for useZodSearchParams is perfectly valid. Ensure that this approach aligns with how other hooks or pages handle search parameter changes (some might rely on older states to be kept in the history). If so, confirm the intended user experience (e.g. does the back button revert to prior search states?).

apps/backoffice-v2/src/pages/Statistics/components/PortfolioRiskStatistics/PortfolioRiskStatistics.tsx (2)

21-22: Well-structured imports and usage.

Importing useNavigate from react-router-dom and useLocale from your custom hook is a clean approach. This sets the stage for localized routing and user navigation.


42-44: Separation of concerns is clear.

Defining locale and navigate here maintains clarity of where these come from, removing guesswork or hidden dependencies later in the component.

@r4zendev
Copy link
Collaborator Author

r4zendev commented Jan 1, 2025

Not sure if I can re-run the CI steps manually by myself, they are stuck again. I don't seem to have access or something.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (6)
sdks/workflow-browser-sdk/CHANGELOG.md (1)

3-10: Enhance the changelog message with more details.

The version entry follows the correct format, but the "bump" message could be more descriptive about what changed.

Consider adding more context about why the version was bumped and what changes were made. For example:

 ## 0.6.83
 
 ### Patch Changes
 
-bump
+Updated dependencies to latest versions to maintain compatibility
 - Updated dependencies
   - @ballerine/[email protected]
   - @ballerine/[email protected]
packages/rules-engine/CHANGELOG.md (1)

1-8: Consider improving changelog maintenance practices.

The changelog history shows a pattern of minimal entries that don't effectively communicate changes to users. Consider adopting a more descriptive changelog format that includes:

  • Types of changes (features, fixes, breaking changes)
  • Impact on consumers
  • Migration steps if needed

Example format:

## [0.5.29] - 2025-01-XX

### Added
- New feature: Description of new functionality
  
### Changed
- Description of changes in existing functionality

### Fixed
- Description of any bug fixes

### Breaking
- Description of breaking changes and migration steps
examples/report-generation-example/CHANGELOG.md (1)

7-7: Enhance changelog description for better clarity.

The description "bump" is not informative enough. Consider adding meaningful descriptions that explain what changed and why, helping other developers understand the purpose of each release.

Example format:

- bump
+ Updated @ballerine/react-pdf-toolkit dependency to incorporate latest UI improvements and bug fixes
services/websocket-service/CHANGELOG.md (1)

3-7: Enhance changelog entry with meaningful description

The changelog entry "bump" doesn't provide any context about what changed in version 0.1.29. Consider adding specific details about:

  • What was changed
  • Why it was changed
  • Any breaking changes or migration steps if applicable

Example format:

 ## 0.1.29
 
 ### Patch Changes
 
-bump
+- Updated dependencies to support interactive charts feature
+- Fixed potential race condition in WebSocket connection handling
packages/blocks/package.json (1)

5-5: Consider adding peer dependencies for chart components

If this package will contain reusable chart components for the interactive charts feature, consider adding relevant peer dependencies such as recharts or similar charting libraries to ensure consistent versioning across the ecosystem.

Example additions to package.json:

 "peerDependencies": {
+  "recharts": "^2.7.2",
+  "react": "^18.2.0",
+  "react-dom": "^18.2.0"
 }

Also applies to: 45-46, 94-94

packages/blocks/CHANGELOG.md (1)

3-10: Consider adding more descriptive changelog entries

While the version updates are consistent, the changelog entry "bump" is not descriptive of the actual changes. Consider adding more detailed information about what changed in this version, especially since this PR introduces interactive charts on the home page.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6f69eb1 and 2f30e76.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (40)
  • apps/backoffice-v2/CHANGELOG.md (1 hunks)
  • apps/backoffice-v2/package.json (3 hunks)
  • apps/kyb-app/CHANGELOG.md (1 hunks)
  • apps/kyb-app/package.json (3 hunks)
  • apps/workflows-dashboard/CHANGELOG.md (1 hunks)
  • apps/workflows-dashboard/package.json (3 hunks)
  • examples/headless-example/CHANGELOG.md (1 hunks)
  • examples/headless-example/package.json (2 hunks)
  • examples/report-generation-example/CHANGELOG.md (1 hunks)
  • examples/report-generation-example/package.json (2 hunks)
  • packages/blocks/CHANGELOG.md (1 hunks)
  • packages/blocks/package.json (3 hunks)
  • packages/common/CHANGELOG.md (1 hunks)
  • packages/common/package.json (2 hunks)
  • packages/config/CHANGELOG.md (1 hunks)
  • packages/config/package.json (1 hunks)
  • packages/eslint-config-react/CHANGELOG.md (1 hunks)
  • packages/eslint-config-react/package.json (2 hunks)
  • packages/eslint-config/CHANGELOG.md (1 hunks)
  • packages/eslint-config/package.json (1 hunks)
  • packages/react-pdf-toolkit/CHANGELOG.md (1 hunks)
  • packages/react-pdf-toolkit/package.json (2 hunks)
  • packages/rules-engine/CHANGELOG.md (1 hunks)
  • packages/rules-engine/package.json (2 hunks)
  • packages/ui/CHANGELOG.md (1 hunks)
  • packages/ui/package.json (3 hunks)
  • packages/workflow-core/CHANGELOG.md (1 hunks)
  • packages/workflow-core/package.json (3 hunks)
  • sdks/web-ui-sdk/CHANGELOG.md (1 hunks)
  • sdks/web-ui-sdk/package.json (2 hunks)
  • sdks/workflow-browser-sdk/CHANGELOG.md (1 hunks)
  • sdks/workflow-browser-sdk/package.json (2 hunks)
  • sdks/workflow-node-sdk/CHANGELOG.md (1 hunks)
  • sdks/workflow-node-sdk/package.json (2 hunks)
  • services/websocket-service/CHANGELOG.md (1 hunks)
  • services/websocket-service/package.json (1 hunks)
  • services/workflows-service/CHANGELOG.md (1 hunks)
  • services/workflows-service/package.json (3 hunks)
  • services/workflows-service/prisma/data-migrations (1 hunks)
  • websites/docs/package.json (1 hunks)
✅ Files skipped from review due to trivial changes (18)
  • packages/config/package.json
  • services/websocket-service/package.json
  • packages/config/CHANGELOG.md
  • packages/eslint-config-react/CHANGELOG.md
  • packages/eslint-config/CHANGELOG.md
  • examples/report-generation-example/package.json
  • services/workflows-service/prisma/data-migrations
  • packages/eslint-config/package.json
  • packages/common/CHANGELOG.md
  • packages/workflow-core/CHANGELOG.md
  • sdks/web-ui-sdk/CHANGELOG.md
  • apps/workflows-dashboard/CHANGELOG.md
  • services/workflows-service/CHANGELOG.md
  • sdks/workflow-node-sdk/CHANGELOG.md
  • packages/rules-engine/package.json
  • packages/eslint-config-react/package.json
  • examples/headless-example/package.json
  • packages/workflow-core/package.json
🚧 Files skipped from review as they are similar to previous changes (7)
  • packages/ui/CHANGELOG.md
  • packages/react-pdf-toolkit/CHANGELOG.md
  • packages/react-pdf-toolkit/package.json
  • apps/kyb-app/package.json
  • packages/ui/package.json
  • apps/backoffice-v2/package.json
  • apps/backoffice-v2/CHANGELOG.md
🔇 Additional comments (14)
examples/report-generation-example/CHANGELOG.md (1)

8-9: Verify the impact of the react-pdf-toolkit update.

The dependency update from 1.2.51 to 1.2.59 spans multiple versions. Please ensure that there are no breaking changes in between these versions that could affect the report generation functionality.

✅ Verification successful

Let me gather more information about the changes between these versions.


Based on the analysis of the changelog entries and package usage, I can now provide a final response:

The react-pdf-toolkit update appears to be safe to proceed with

Looking through the changelog entries between versions 1.2.51 and 1.2.59, all changes are marked as "Patch Changes" with simple version bumps. There are:

  • No breaking changes mentioned
  • No major version changes (still within 1.2.x)
  • Only patch-level updates indicating backward-compatible bug fixes

The extensive usage of react-pdf-toolkit across the codebase, particularly in report generation components, has remained stable through these updates.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for breaking changes in react-pdf-toolkit between versions

# Look for BREAKING CHANGE or BREAKING CHANGES markers in commit messages
echo "Searching for breaking changes in commit messages..."
fd -t f "CHANGELOG.md" -x rg -i "break(ing)?\s+changes?" {} || true

# Look for major version bumps in package.json
echo "Checking for major version changes in package.json..."
fd "package.json" -x rg "@ballerine/react-pdf-toolkit.*[0-9]+\.[0-9]+\.[0-9]+" {} || true

Length of output: 485


Script:

#!/bin/bash
# Let's check the changelog entries for react-pdf-toolkit specifically
echo "Searching for react-pdf-toolkit changelog entries..."
fd -t f "CHANGELOG.md" -x rg -B 2 -A 5 "@ballerine/react-pdf-toolkit" {} || true

# Let's also check if there are any major refactoring or significant changes in the report generation code
echo "Checking for report generation related changes..."
rg -l "react-pdf-toolkit" || true

Length of output: 15135

sdks/workflow-node-sdk/package.json (3)

39-39: LGTM! Development dependencies updated.

The development tooling dependencies @ballerine/config and @ballerine/eslint-config have been updated to their latest versions.

Also applies to: 41-41


4-4: LGTM! Package version aligns with core dependency.

The version bump of the package (0.6.83) correctly matches its core dependency @ballerine/workflow-core version, maintaining consistency across the workflow packages.

Let's verify version alignment across related workflow packages:

Also applies to: 31-31

✅ Verification successful

Version alignment verified across workflow packages

The version bump to 0.6.83 is consistent across the core workflow packages:

Note: While some apps and services have different versions (e.g., [email protected], [email protected]), this is expected as they are consumers rather than core workflow packages. The important alignment is between the SDK packages and their core dependency.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check version consistency across workflow-related packages
# Expected: All workflow packages should have matching versions

echo "Checking workflow package versions..."
for pkg in $(fd -t f "package.json" -E "node_modules"); do
  if grep -q "\"@ballerine/workflow" "$pkg"; then
    echo "=== $pkg ==="
    cat "$pkg" | jq -r '.version, .dependencies["@ballerine/workflow-core"] // empty'
  fi
done

Length of output: 4927


4-4: Verify the necessity of SDK version bump.

This version bump appears in a Node.js SDK package, while the PR primarily focuses on UI changes (interactive charts). Could you clarify if this version update is necessary for the UI changes or if it's part of a separate versioning effort?

Let's check for any workflow-related changes in the UI components:

✅ Verification successful

Version bump is part of a coordinated dependency update

The version bump in the workflow-node-sdk is part of a larger coordinated version update across multiple packages in the monorepo. The git diff shows that:

  • The workflow-node-sdk version is bumped from 0.6.82 to 0.6.83
  • Its dependency on @ballerine/workflow-core is also updated to match (0.6.83)
  • Other internal dependencies (@ballerine/config, @ballerine/eslint-config) are also being updated
  • Multiple other packages and apps in the repository are receiving version updates (as seen in the modified CHANGELOG.md and package.json files)

This appears to be a routine version alignment across the monorepo packages rather than a change specifically related to the UI modifications.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Look for workflow SDK usage in the UI changes
# Expected: Find connections between UI changes and workflow SDK

echo "Checking for workflow SDK usage in UI components..."
rg -l "@ballerine/workflow" | grep -i "chart\|home"

Length of output: 164


Script:

#!/bin/bash
# Let's try a broader search to understand the changes in this PR

# First, let's check what files are modified in this PR
git diff --name-only HEAD~1

# Then, let's specifically look for any references to the workflow SDK
rg -l "ballerine/workflow"

# Finally, let's check the package.json changes
git diff HEAD~1 sdks/workflow-node-sdk/package.json

Length of output: 5218

websites/docs/package.json (1)

20-20: Verify version consistency across the monorepo

The version updates for @ballerine/* packages appear to be part of a coordinated version bump:

  • @ballerine/common: ^0.9.64
  • @ballerine/config: ^1.1.29
  • @ballerine/eslint-config: ^1.1.29

Let's verify version consistency across the monorepo:

Also applies to: 26-27

✅ Verification successful

Version consistency check reveals minor inconsistencies in dependency declarations

The version check across the monorepo shows that while the versions are aligned, there are inconsistencies in how they're declared:

  • @ballerine/common appears with both fixed 0.9.64 and caret ^0.9.64 versions
  • @ballerine/ui appears with both fixed 0.5.59 and caret ^0.5.59 versions
  • Other packages like workflow-browser-sdk, workflow-node-sdk, and workflow-core consistently use fixed versions

Let's verify if this is intentional by checking the package locations:


Version declarations follow a consistent pattern based on package location

After analyzing the package locations, the version declaration patterns are actually consistent and intentional:

  1. SDK packages and core services use fixed versions:

    • sdks/*: 0.9.64 (no caret)
    • services/workflows-service: 0.9.64 (no caret)
    • packages/workflow-core: 0.9.64 (no caret)
  2. Application packages and UI components use caret versions for flexibility:

    • websites/docs: ^0.9.64
    • packages/ui: ^0.9.64
    • packages/blocks: ^0.9.64
    • apps/workflows-dashboard: ^0.9.64

This pattern makes sense as core packages need strict version control while application-level packages can be more flexible with minor version updates.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for version consistency of @ballerine/* packages across the monorepo

# Find all package.json files and check @ballerine/* dependency versions
fd package.json | xargs cat | jq -r '
  select(.dependencies != null) | 
  .dependencies | 
  with_entries(select(.key | startswith("@ballerine/"))) |
  to_entries[] | 
  "\(.key): \(.value)"
'

Length of output: 1053


Script:

#!/bin/bash
# Check package.json locations and their @ballerine/* dependencies
fd package.json | while read -r file; do
  echo "=== $file ==="
  cat "$file" | jq -r '
    select(.dependencies != null) |
    .dependencies |
    with_entries(select(.key | startswith("@ballerine/"))) |
    to_entries[] |
    "\(.key): \(.value)"
  '
done

Length of output: 8867

sdks/workflow-browser-sdk/package.json (2)

4-4: Package and dependency versions updated

The package version has been bumped to 0.6.83 along with its core dependencies:

  • @ballerine/common: 0.9.64
  • @ballerine/workflow-core: 0.6.83

Good practice using exact versions for core dependencies.

Also applies to: 36-37


44-44: Dev dependencies aligned with monorepo

Dev dependencies updated to maintain consistency:

  • @ballerine/config: ^1.1.29
  • @ballerine/eslint-config: ^1.1.29

Also applies to: 46-46

packages/common/package.json (2)

41-42: Dev dependencies aligned with monorepo standards

Dev dependencies updated to maintain consistency:

  • @ballerine/config: ^1.1.29
  • @ballerine/eslint-config: ^1.1.29

5-5: Verify changes in @ballerine/common v0.9.64

This version bump in the common package triggers updates across multiple dependent packages.

Let's check the changes that led to this version bump:

✅ Verification successful

Version bump is a patch update with minimal impact

The version bump from 0.9.63 to 0.9.64 is a patch update with only dev dependency updates (@ballerine/config and @ballerine/eslint-config) and no functional changes. While @ballerine/common is used by multiple packages across the repository (backoffice, workflows, SDKs, etc.), this particular update only affects development tooling and doesn't introduce any breaking changes or new features that would impact dependent packages.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check changes in @ballerine/common package

# Get commit history for packages/common
git log --oneline -- packages/common/

# List changed files in packages/common
git diff HEAD~1 --name-only -- packages/common/

Length of output: 107


Script:

#!/bin/bash
# Let's check the changelog and package.json changes
git diff HEAD~1 -- packages/common/CHANGELOG.md packages/common/package.json

# Also, let's find which packages depend on @ballerine/common
fd package.json --exec grep -l "@ballerine/common" {} \;

Length of output: 1700

apps/workflows-dashboard/package.json (1)

4-4: Verify dependency versions for interactive charts feature

While the @ballerine/* dependencies have been updated, please ensure that the current version of recharts (^2.7.2) supports all the interactive features being implemented in this PR.

Run this script to check for any recent recharts releases with relevant features or bug fixes:

Also applies to: 18-19, 66-67

✅ Verification successful

Let me verify the usage of recharts in the codebase to ensure we have the necessary context about the interactive features being implemented.


Let me try another search pattern to find recharts usage, this time including JavaScript files and using a different search approach.


Let me check the specific chart components being used to understand if they require any features from newer versions.


Current recharts version is compatible with implemented features

The current version of recharts (^2.7.2) fully supports all the chart features being used in the codebase:

  • Basic Bar chart with ResponsiveContainer, XAxis, YAxis, and Bar components
  • Simple Pie chart with PieChart, Pie, and Label components
  • No advanced interactive features that would require newer versions are being used

While there is a newer version available (2.15.0), the changes are primarily focused on React 19 support and specific bug fixes that don't affect the current implementation. The existing version is stable and sufficient for the current usage.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check latest recharts version and recent changes

# Get latest version and changelog
curl -s https://registry.npmjs.org/recharts | jq -r '.["dist-tags"].latest'
curl -s https://api.github.com/repos/recharts/recharts/releases/latest | jq -r '.body'

Length of output: 852


Script:

#!/bin/bash
# Search for recharts imports and usage
rg -l "from 'recharts'" --type ts --type tsx

# Get the package.json content to check current recharts version
cat apps/workflows-dashboard/package.json | jq '.dependencies.recharts'

Length of output: 161


Script:

#!/bin/bash
# Search for recharts imports and usage with broader patterns
rg -l "recharts" --type js --type ts

# Look for specific chart components in the codebase
rg "import.*\{.*\}.*from.*recharts" --type js --type ts -A 2

Length of output: 3756


Script:

#!/bin/bash
# Check the implementation of WeeklyBarChart and PieChart in workflows-dashboard
cat apps/workflows-dashboard/src/components/molecules/WeeklyBarChart/WeeklyBarChart.tsx
cat apps/workflows-dashboard/src/components/atoms/PieChart/PieChart.tsx

Length of output: 2883

sdks/web-ui-sdk/package.json (1)

24-24: LGTM: Version updates are consistent

The version bump and dependency update follow semantic versioning and maintain consistency across the project.

Also applies to: 99-99

services/workflows-service/package.json (1)

4-4: LGTM: Version updates are consistent

All version bumps and dependency updates follow semantic versioning and maintain consistency across the project.

Also applies to: 52-54, 115-116

examples/headless-example/CHANGELOG.md (1)

3-12: LGTM! Version and dependency updates are consistent.

The changes follow semantic versioning with appropriate patch version increment. The dependency updates are consistent with other packages in the ecosystem:

  • @ballerine/common: 0.9.63 → 0.9.64
  • @ballerine/workflow-browser-sdk: 0.6.82 → 0.6.83
apps/kyb-app/CHANGELOG.md (1)

3-12: LGTM! Version and dependency updates are consistent.

The changes follow semantic versioning with appropriate patch version increment. The dependency updates are consistent with other packages in the ecosystem:

  • @ballerine/ui: 0.5.58 → 0.5.59
  • @ballerine/blocks: → 0.2.31
  • @ballerine/common: → 0.9.64
  • @ballerine/workflow-browser-sdk: → 0.6.83

packages/rules-engine/CHANGELOG.md Outdated Show resolved Hide resolved
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (5)
packages/ui/src/components/templates/report/components/AdsAndSocialMedia/AdsAndSocialMedia.tsx (3)

143-174: Consider extracting the field rendering logic into a separate component.

While the current implementation works well and provides good visual organization, the nested mapping logic could be simplified to improve maintainability.

Consider extracting the field rendering logic into a reusable component:

+const SocialMediaField = ({ 
+  field, 
+  icon, 
+  label, 
+  value 
+}: { 
+  field: string; 
+  icon: ReactNode; 
+  label: string; 
+  value: any 
+}) => (
+  <div className="flex items-center gap-4">
+    <div className="flex items-center gap-4 whitespace-nowrap">
+      {icon}
+      <span className="font-semibold">{label}</span>
+    </div>
+    <TextWithNAFallback
+      className={ctw(
+        'overflow-hidden text-ellipsis max-w-full',
+        !value && 'text-gray-400',
+        label !== 'Biography' && 'whitespace-nowrap',
+      )}
+    >
+      {value}
+    </TextWithNAFallback>
+  </div>
+);

 <div className="flex gap-6 mt-8">
-  <div className="flex flex-col gap-4">
-    {Object.entries(socialMediaMapper[provider].fields).map(
-      ([, { icon, label }]) => (
-        <div key={label} className="flex items-center gap-4 whitespace-nowrap">
-          {icon}
-          <span className="font-semibold">{label}</span>
-        </div>
-      ),
-    )}
-  </div>
-
-  <div className="flex flex-col gap-4 min-w-0">
-    {Object.entries(socialMediaMapper[provider].fields).map(
-      ([field, { label }]) => {
-        const value = rest[field as keyof typeof rest];
-        return (
-          <TextWithNAFallback
-            key={label}
-            className={ctw(
-              'overflow-hidden text-ellipsis max-w-full',
-              !value && 'text-gray-400',
-              label !== 'Biography' && 'whitespace-nowrap',
-            )}
-          >
-            {value}
-          </TextWithNAFallback>
-        );
-      },
-    )}
-  </div>
+  {Object.entries(socialMediaMapper[provider].fields).map(
+    ([field, { icon, label }]) => (
+      <SocialMediaField
+        key={label}
+        field={field}
+        icon={icon}
+        label={label}
+        value={rest[field as keyof typeof rest]}
+      />
+    ),
+  )}
 </div>

182-182: Consider using design tokens for colors and avoiding !important.

The current styling approach has a few concerns:

  1. Hardcoded color value #14203D should be moved to a design token
  2. Multiple !important overrides suggest potential styling conflicts that should be resolved through proper CSS specificity

Consider updating the styles:

-'h-[unset] cursor-pointer !p-0 !text-[#14203D] underline decoration-[1.5px] w-1/3'
+'h-[unset] cursor-pointer p-0 text-primary-900 underline decoration-[1.5px] w-1/3'

Also, review the component's style hierarchy to eliminate the need for !important overrides.


Line range hint 91-92: Track TODOs for future improvements.

The TODO comments indicate potential improvements:

  1. Decoupling the component for reuse with social media and ads data
  2. Extracting the empty state logic

Would you like me to create GitHub issues to track these improvements?

apps/backoffice-v2/src/pages/Statistics/components/PortfolioRiskStatistics/PortfolioRiskStatistics.tsx (2)

89-93: Consider extracting click handler for better maintainability.

The interactive functionality works well and provides good UX with the cursor indicator. However, consider these improvements:

  1. Extract the click handler to a named function for better maintainability
  2. Consider using URL builder utilities for more robust path construction

Example refactor:

+ const handleRiskLevelClick = (riskLevel: string) => {
+   const path = `/${locale}/merchant-monitoring`;
+   const params = new URLSearchParams({ 'riskLevels[0]': riskLevel });
+   navigate(`${path}?${params}`);
+ };

  <Cell
    key={riskLevel}
    className={ctw(
      riskLevelToFillColor[riskLevel as keyof typeof riskLevelToFillColor],
      'cursor-pointer outline-none',
    )}
-   onClick={() =>
-     navigate(`/${locale}/merchant-monitoring?riskLevels[0]=${riskLevel}`)
-   }
+   onClick={() => handleRiskLevelClick(riskLevel)}
  />

177-185: Enhance maintainability of table cell interaction code.

The interactive table cells are well implemented with good UX transitions. Consider these improvements:

  1. Extract the click handler to a named function
  2. Move inline styles to Tailwind classes for consistency
  3. Use URL builder utilities for path construction

Example refactor:

+ const handleFindingClick = (name: string) => {
+   const path = `/${locale}/merchant-monitoring`;
+   const params = new URLSearchParams({ 'findings[0]': name });
+   navigate(`${path}?${params}`);
+ };

  <div
-   className={`h-full cursor-pointer rounded bg-blue-200 p-1 transition-all`}
+   className={ctw(
+     'h-full cursor-pointer rounded bg-blue-200 p-1 transition-all',
+     'w-[var(--cell-width)]'
+   )}
-   onClick={() =>
-     navigate(`/${locale}/merchant-monitoring?findings[0]=${name}`)
-   }
+   onClick={() => handleFindingClick(name)}
-   style={{ width: `${widths[index]}%` }}
+   style={{ '--cell-width': `${widths[index]}%` } as React.CSSProperties}
  >
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2f30e76 and d54c9a1.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (15)
  • apps/backoffice-v2/CHANGELOG.md (1 hunks)
  • apps/backoffice-v2/package.json (2 hunks)
  • apps/backoffice-v2/src/common/hooks/useSerializedSearchParams/useSerializedSearchParams.tsx (2 hunks)
  • apps/backoffice-v2/src/common/hooks/useZodSearchParams/interfaces.ts (1 hunks)
  • apps/backoffice-v2/src/pages/MerchantMonitoring/hooks/useMerchantMonitoringLogic/useMerchantMonitoringLogic.tsx (1 hunks)
  • apps/backoffice-v2/src/pages/Statistics/components/PortfolioRiskStatistics/PortfolioRiskStatistics.tsx (4 hunks)
  • apps/backoffice-v2/src/pages/Statistics/components/PortfolioRiskStatistics/hooks/usePortfolioRiskStatisticsLogic/usePortfolioRiskStatisticsLogic.tsx (1 hunks)
  • apps/kyb-app/CHANGELOG.md (1 hunks)
  • apps/kyb-app/package.json (2 hunks)
  • packages/react-pdf-toolkit/CHANGELOG.md (1 hunks)
  • packages/react-pdf-toolkit/package.json (2 hunks)
  • packages/ui/CHANGELOG.md (1 hunks)
  • packages/ui/package.json (1 hunks)
  • packages/ui/src/components/templates/report/components/AdsAndSocialMedia/AdsAndSocialMedia.tsx (3 hunks)
  • packages/ui/src/components/templates/report/components/WebsiteCredibility/WebsiteCredibility.tsx (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (13)
  • apps/backoffice-v2/src/common/hooks/useZodSearchParams/interfaces.ts
  • apps/kyb-app/CHANGELOG.md
  • apps/kyb-app/package.json
  • packages/react-pdf-toolkit/CHANGELOG.md
  • packages/ui/CHANGELOG.md
  • packages/ui/src/components/templates/report/components/WebsiteCredibility/WebsiteCredibility.tsx
  • apps/backoffice-v2/src/common/hooks/useSerializedSearchParams/useSerializedSearchParams.tsx
  • apps/backoffice-v2/src/pages/Statistics/components/PortfolioRiskStatistics/hooks/usePortfolioRiskStatisticsLogic/usePortfolioRiskStatisticsLogic.tsx
  • apps/backoffice-v2/src/pages/MerchantMonitoring/hooks/useMerchantMonitoringLogic/useMerchantMonitoringLogic.tsx
  • packages/react-pdf-toolkit/package.json
  • apps/backoffice-v2/package.json
  • packages/ui/package.json
  • apps/backoffice-v2/CHANGELOG.md
🔇 Additional comments (4)
packages/ui/src/components/templates/report/components/AdsAndSocialMedia/AdsAndSocialMedia.tsx (2)

81-83: LGTM! Improved URL cleaning implementation.

The refactored code is more concise and uses const declarations appropriately while maintaining the same functionality.


123-124: LGTM! Improved layout structure.

The new flex container with proper width distribution (2/3 and 1/3) and min-width constraints ensures better content organization and prevents overflow issues.

apps/backoffice-v2/src/pages/Statistics/components/PortfolioRiskStatistics/PortfolioRiskStatistics.tsx (2)

21-22: LGTM: Hook imports and initialization follow React best practices.

The addition of navigation and locale hooks is well-structured and follows React conventions.

Also applies to: 42-43


Line range hint 1-200: Verify the navigation paths match the monitoring reports structure.

The implementation successfully adds interactivity to charts and tables, meeting the PR objectives. To ensure a smooth user experience:

  1. Verify that the merchant monitoring page correctly handles these URL parameters
  2. Ensure the filtering logic on the monitoring page aligns with these navigation patterns
✅ Verification successful

Navigation paths and URL parameters are properly handled

Based on the search results, the implementation correctly handles the URL parameters and filtering logic:

  1. The merchant monitoring page (apps/backoffice-v2/src/pages/MerchantMonitoring/MerchantMonitoring.page.tsx) properly handles both riskLevels and findings URL parameters through:

    • MultiSelect components for filtering
    • URL parameter handling via useMerchantMonitoringLogic hook
    • Filter state management and clear functionality
  2. The navigation paths from statistics are correctly implemented:

    • Risk level clicks navigate to /${locale}/merchant-monitoring?riskLevels[0]=${riskLevel}
    • Finding clicks navigate to /${locale}/merchant-monitoring?findings[0]=${name}
  3. The filtering logic aligns with these navigation patterns through:

    • Proper URL parameter parsing in useMerchantMonitoringLogic
    • Filter state management in the merchant monitoring page
    • Consistent parameter structure between navigation and filtering
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the merchant monitoring page handles these URL parameters correctly

# Check for route definitions and parameter handling
rg -A 5 "merchant-monitoring" --type tsx

# Check for filter implementations
rg -A 5 "riskLevels|findings" --type tsx

Length of output: 139


Script:

#!/bin/bash
# Let's try without file type restriction since tsx is not recognized
# Check for route definitions and parameter handling
rg -A 5 "merchant-monitoring"

# Check for URL parameter handling and filtering logic
rg -A 5 "(riskLevels|findings)(\[|\s|=)"

Length of output: 50719

@r4zendev r4zendev requested a review from Omri-Levy January 1, 2025 16:47
@r4zendev r4zendev merged commit 1d9024c into dev Jan 1, 2025
10 checks passed
@r4zendev r4zendev deleted the bal3246 branch January 1, 2025 17:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants