Skip to content

Conversation

@Uday-sidagana
Copy link
Contributor

@Uday-sidagana Uday-sidagana commented Oct 7, 2025

Add new Composio components and icons

Backend changes:

  • Added 15 new Composio components in src/lfx/src/lfx/components/composio/:
    • finage_composio.py
    • fixer_composio.py
    • flexisign_composio.py
    • freshdesk_composio.py
    • googleclassroom_composio.py
    • instagram_composio.py
    • jotform_composio.py
    • listennotes_composio.py
    • missive_composio.py
    • pandadoc_composio.py
  • Updated __init__.py to include all new components in TYPE_CHECKING, _dynamic_imports, and all

Frontend changes:

  • Added corresponding icons in src/frontend/src/icons/ (added few extra icons):
    • Excel, Finage, Fixer, Flexisign, Freshdesk, Classroom, Slides, Instagram, Jotform, Klipfolio, Listennotes, Missive, Neon, Newsapi, Pandadoc
  • Updated lazyIconImports.ts to register all new icons for lazy loading

Summary by CodeRabbit

  • New Features

    • Added new icons: Classroom, Excel, Finage, Fixer, Flexisign, Freshdesk, Pandadoc, Instagram, Jotform, Listennotes, Missive, Neon, Newsapi, OpenAI, Slides, and Klipfolio. These are reusable, ref-forwarding components for use across the app.
    • Introduced new Composio integrations visible in the components catalog: Finage, Fixer, Flexisign, Freshdesk, Google Classroom, Instagram, Jotform, Listennotes, Missive, and Pandadoc.
  • Performance

    • Enabled lazy loading for the new icons to reduce initial load times and improve perceived performance.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 7, 2025

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

Adds new SVG icon components and forwardRef wrappers for multiple services in the frontend, registers them in the lazy icon import map, and introduces corresponding Composio API component classes in Python with updated package exports and lazy-loading support.

Changes

Cohort / File(s) Summary of Changes
Frontend SVG icon components (.jsx)
src/frontend/src/icons/Classroom/classroom.jsx, src/frontend/src/icons/Excel/excel.jsx, src/frontend/src/icons/Finage/finage.jsx, src/frontend/src/icons/Fixer/fixer.jsx, src/frontend/src/icons/Flexisign/flexisign.jsx, src/frontend/src/icons/Freshdesk/freshdesk.jsx, src/frontend/src/icons/Instagram/instagram.jsx, src/frontend/src/icons/Jotform/jotform.jsx, src/frontend/src/icons/Klipfolio/klipfolio.jsx, src/frontend/src/icons/Listennotes/listennotes.jsx (if present), src/frontend/src/icons/Missive/missive.jsx, src/frontend/src/icons/Neon/neon.jsx, src/frontend/src/icons/Newsapi/newsapi.jsx, src/frontend/src/icons/OpenAI copy/openai.jsx, src/frontend/src/icons/Slides/slides.jsx
Added stateless React components rendering SVGs; each exports a default Icon that spreads props to the root <svg>.
Frontend icon forwardRef wrappers (.tsx)
src/frontend/src/icons/Classroom/index.tsx, src/frontend/src/icons/Excel/index.tsx, src/frontend/src/icons/Finage/index.tsx, src/frontend/src/icons/Fixer/index.tsx, src/frontend/src/icons/Flexisign/index.tsx, src/frontend/src/icons/Freshdesk/index.tsx, src/frontend/src/icons/Instagram/index.tsx, src/frontend/src/icons/Jotform/index.tsx, src/frontend/src/icons/Klipfolio/index.tsx, src/frontend/src/icons/Listennotes/index.tsx, src/frontend/src/icons/Missive/index.tsx, src/frontend/src/icons/Neon/index.tsx, src/frontend/src/icons/Newsapi/index.tsx, src/frontend/src/icons/OpenAI copy/index.tsx, src/frontend/src/icons/Slides/index.tsx
Added named exports wrapping SVG components via React.forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>, forwarding ref and props.
Frontend lazy icon mapping
src/frontend/src/icons/lazyIconImports.ts
Extended lazyIconsMapping with dynamic imports for: Klipfolio, Classroom, Excel, Finage, Fixer, Flexisign, Freshdesk, Pandadoc, Instagram, Jotform, Listennotes, Missive, Neon, Newsapi, OpenAICopy, Slides.
Composio package exports
src/lfx/src/lfx/components/composio/__init__.py
Added imports, __all__ entries, and lazy __getattr__ wiring for new components: Finage, Fixer, Flexisign, Freshdesk, Google Classroom, Instagram, Jotform, Listennotes, Missive, Pandadoc.
Composio API component classes
src/lfx/src/lfx/components/composio/finage_composio.py, .../fixer_composio.py, .../flexisign_composio.py, .../freshdesk_composio.py, .../googleclassroom_composio.py, .../instagram_composio.py, .../jotform_composio.py, .../listennotes_composio.py, .../missive_composio.py, .../pandadoc_composio.py
Added classes extending ComposioBaseComponent with metadata (display_name, icon, documentation, app_name) and a stub set_default_tools(self) method.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant UI as Consumer Component
  participant Map as lazyIconsMapping
  participant Loader as Dynamic Import
  participant Icon as *Icon (forwardRef)

  UI->>Map: request "Instagram"
  Map->>Loader: import("@/icons/Instagram")
  Loader-->>Map: resolve { InstagramIcon }
  Map-->>UI: return InstagramIcon
  UI->>Icon: render with props/ref
  Note over Icon: Props and ref forwarded to SVG
Loading
sequenceDiagram
  autonumber
  participant Dev as User Code
  participant Pkg as lfx.components.composio
  participant Attr as __getattr__
  participant Mod as Module Loader
  participant Class as *APIComponent

  Dev->>Pkg: from composio import ComposioFreshdeskAPIComponent
  Pkg->>Attr: resolve missing attribute
  Attr->>Mod: import freshdesk_composio
  Mod-->>Attr: ComposioFreshdeskAPIComponent
  Attr-->>Dev: return class reference
  Note right of Class: Extends ComposioBaseComponent
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

Suggested labels

enhancement, size:XXL, javascript, lgtm

Suggested reviewers

  • edwinjosechittilappilly
  • Cristhianzl
  • ogabrielluiz

Pre-merge checks and finishing touches

❌ Failed checks (1 error, 2 warnings)
Check name Status Explanation Resolution
Test Coverage For New Implementations ❌ Error I inspected the PR contents and found that all additions are new React icon components and new backend Composio component classes, yet the diff introduces no new or modified test files—no .test.ts (or similar) in the frontend and no test_*.py (or equivalent) in the backend. Because the new functionality lacks accompanying tests, the Test Coverage for New Implementations requirement is not met. Please add appropriate tests covering the new frontend icon components (following the project’s *.test.ts convention) and the new backend Composio component classes (using the test_*.py naming pattern), ensuring the tests exercise the new behavior.
Test Quality And Coverage ⚠️ Warning I inspected the PR changes and found only new SVG icon components on the frontend and new Composio component classes on the backend, with no accompanying test files added or modified. Searching the repository showed no pytest or Playwright suites referencing these new components, so the new functionality currently lacks any automated coverage validating their behavior. Because the instructions require tests covering main functionality, the absence of such tests means the implementation does not meet the Test Quality and Coverage criteria. Please add tests that exercise the new Composio components (e.g., verifying metadata and default tool initialization via pytest) and consider adding frontend tests if applicable, ensuring they align with the project’s testing patterns, so this check can pass.
Test File Naming And Structure ⚠️ Warning Inspection of the repository shows no new or existing tests covering the added Composio backend components or the numerous new frontend icon modules. There are no test_*.py files exercising the Python components, nor any *.test.ts(x) files targeting the React icons, so none of the required naming conventions, structure, or scenario coverage considerations are satisfied. Because the PR introduces functionality without accompanying tests, we cannot confirm adherence to the specified test file naming and structural requirements. Please add appropriately named pytest files for the backend components (e.g., test_finage_composio.py) and Playwright-based *.test.tsx files for the new icons, ensuring they include clear test names, logical organization with setup/teardown where needed, and coverage of both positive and negative paths or edge cases.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The pull request title clearly and concisely indicates the primary backend change of adding new Composio components, using a conventional commit style prefix and specific terminology without generic or vague phrasing.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Excessive Mock Usage Warning ✅ Passed No test files were modified or added in this pull request, so there is no new or altered usage of mocks to evaluate; consequently, there is no evidence of excessive mocking introduced by these changes.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added enhancement New feature or request and removed enhancement New feature or request labels Oct 7, 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: 15

♻️ Duplicate comments (2)
src/lfx/src/lfx/components/composio/flexisign_composio.py (1)

10-11: Verify that the default tool selection behavior is appropriate.

The empty set_default_tools method means this component will use the base class default behavior, which returns the first 5 tools (limited by default_tools_limit). Please verify that selecting the first 5 tools is the intended behavior for Flexisign, or if specific default tools should be configured by populating self._default_tools.

src/lfx/src/lfx/components/composio/pandadoc_composio.py (1)

10-11: Verify that the default tool selection behavior is appropriate.

The empty set_default_tools method means this component will use the base class default behavior, which returns the first 5 tools (limited by default_tools_limit). Please verify that selecting the first 5 tools is the intended behavior for Pandadoc, or if specific default tools should be configured by populating self._default_tools.

🧹 Nitpick comments (12)
src/frontend/src/icons/OpenAI copy/openai.jsx (1)

1-12: Consider adding isDark prop support for theme switching.

The coding guidelines indicate that SVG components should use the isDark prop to support both light and dark mode. While the current implementation works, adding theme support would improve user experience.

As per coding guidelines

src/frontend/src/icons/Slides/slides.jsx (1)

1-21: Consider adding isDark prop support for theme switching.

Per the coding guidelines, SVG components should support the isDark prop for light and dark mode switching. Adding this would improve consistency with the project's theming requirements.

As per coding guidelines

src/frontend/src/icons/Classroom/classroom.jsx (1)

1-30: Consider adding isDark prop support for theme switching.

Per the coding guidelines, SVG components should support the isDark prop for light and dark mode switching.

As per coding guidelines

src/frontend/src/icons/Neon/neon.jsx (1)

1-78: Consider adding isDark prop support for theme switching.

Per the coding guidelines, SVG components should support the isDark prop for light and dark mode switching. This would enable the icon to adapt to different theme contexts.

As per coding guidelines

src/lfx/src/lfx/components/composio/jotform_composio.py (1)

10-11: Empty override is consistent: Jotform’s set_default_tools stub matches other Composio components; with no entries in self._default_tools, the base class will return the first default_tools_limit tools. Remove the override or populate self._default_tools only if custom defaults are needed.

src/lfx/src/lfx/components/composio/freshdesk_composio.py (1)

1-11: LGTM! Consider optional type annotation consistency.

The component implementation correctly follows the established pattern for Composio API components. The empty set_default_tools method is an intentional placeholder consistent with the base class design.

For improved type safety and consistency, consider adding type annotations to icon and app_name attributes:

 class ComposioFreshdeskAPIComponent(ComposioBaseComponent):
     display_name: str = "Freshdesk"
-    icon = "Freshdesk"
+    icon: str = "Freshdesk"
     documentation: str = "https://docs.composio.dev"
-    app_name = "freshdesk"
+    app_name: str = "freshdesk"
src/lfx/src/lfx/components/composio/finage_composio.py (1)

1-11: LGTM! Consider optional type annotation consistency.

The component implementation correctly follows the established pattern for Composio API components.

For improved type safety and consistency, consider adding type annotations to icon and app_name attributes:

 class ComposioFinageAPIComponent(ComposioBaseComponent):
     display_name: str = "Finage"
-    icon = "Finage"
+    icon: str = "Finage"
     documentation: str = "https://docs.composio.dev"
-    app_name = "finage"
+    app_name: str = "finage"
src/lfx/src/lfx/components/composio/listennotes_composio.py (1)

1-11: LGTM! Consider optional type annotation consistency.

The component implementation correctly follows the established pattern for Composio API components.

For improved type safety, consider adding type annotations:

 class ComposioListennotesAPIComponent(ComposioBaseComponent):
     display_name: str = "Listennotes"
-    icon = "Listennotes"
+    icon: str = "Listennotes"
     documentation: str = "https://docs.composio.dev"
-    app_name = "listennotes"
+    app_name: str = "listennotes"
src/lfx/src/lfx/components/composio/instagram_composio.py (1)

1-11: LGTM! Consider optional type annotation consistency.

The component implementation correctly follows the established pattern for Composio API components.

For improved type safety, consider adding type annotations:

 class ComposioInstagramAPIComponent(ComposioBaseComponent):
     display_name: str = "Instagram"
-    icon = "Instagram"
+    icon: str = "Instagram"
     documentation: str = "https://docs.composio.dev"
-    app_name = "instagram"
+    app_name: str = "instagram"
src/lfx/src/lfx/components/composio/missive_composio.py (1)

1-11: LGTM! Consider optional type annotation consistency.

The component implementation correctly follows the established pattern for Composio API components.

For improved type safety, consider adding type annotations:

 class ComposioMissiveAPIComponent(ComposioBaseComponent):
     display_name: str = "Missive"
-    icon = "Missive"
+    icon: str = "Missive"
     documentation: str = "https://docs.composio.dev"
-    app_name = "missive"
+    app_name: str = "missive"
src/lfx/src/lfx/components/composio/fixer_composio.py (1)

1-11: LGTM! Consider optional type annotation consistency.

The component implementation correctly follows the established pattern for Composio API components.

For improved type safety, consider adding type annotations:

 class ComposioFixerAPIComponent(ComposioBaseComponent):
     display_name: str = "Fixer"
-    icon = "Fixer"
+    icon: str = "Fixer"
     documentation: str = "https://docs.composio.dev"
-    app_name = "fixer"
+    app_name: str = "fixer"
src/lfx/src/lfx/components/composio/__init__.py (1)

98-120: LGTM! Consider alphabetical ordering for maintainability.

All new components are correctly added to the public API surface via __all__.

For improved maintainability, consider keeping __all__ entries in alphabetical order:

 __all__ = [
     "ComposioAPIComponent",
     "ComposioAirtableAPIComponent",
     "ComposioAsanaAPIComponent",
     "ComposioAttioAPIComponent",
     "ComposioCalendlyAPIComponent",
     "ComposioContentfulAPIComponent",
     "ComposioDiscordAPIComponent",
     "ComposioFigmaAPIComponent",
     "ComposioFinageAPIComponent",
     "ComposioFixerAPIComponent",
     "ComposioFlexisignAPIComponent",
     "ComposioFreshdeskAPIComponent",
     "ComposioGitHubAPIComponent",
     "ComposioGmailAPIComponent",
     "ComposioGoogleCalendarAPIComponent",
+    "ComposioGoogleclassroomAPIComponent",
     "ComposioGoogleDocsAPIComponent",
     "ComposioGoogleSheetsAPIComponent",
     "ComposioGoogleTasksAPIComponent",
-    "ComposioGoogleclassroomAPIComponent",
     "ComposioGooglemeetAPIComponent",
     "ComposioInstagramAPIComponent",
     "ComposioJotformAPIComponent",
     "ComposioKlaviyoAPIComponent",
     "ComposioLinearAPIComponent",
     "ComposioListennotesAPIComponent",
     "ComposioMiroAPIComponent",
     "ComposioMissiveAPIComponent",
     "ComposioNotionAPIComponent",
     "ComposioOneDriveAPIComponent",
     "ComposioOutlookAPIComponent",
     "ComposioPandadocAPIComponent",
     "ComposioRedditAPIComponent",
     "ComposioSlackAPIComponent",
     "ComposioSlackbotAPIComponent",
     "ComposioSupabaseAPIComponent",
     "ComposioTodoistAPIComponent",
     "ComposioWrikeAPIComponent",
     "ComposioYoutubeAPIComponent",
 ]
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between eb7359c and de6d2b1.

⛔ Files ignored due to path filters (16)
  • src/frontend/src/icons/Classroom/classroom.svg is excluded by !**/*.svg
  • src/frontend/src/icons/Excel/excel.svg is excluded by !**/*.svg
  • src/frontend/src/icons/Finage/finage.svg is excluded by !**/*.svg
  • src/frontend/src/icons/Fixer/fixer.svg is excluded by !**/*.svg
  • src/frontend/src/icons/Flexisign/flexisign.svg is excluded by !**/*.svg
  • src/frontend/src/icons/Freshdesk/freshdesk.svg is excluded by !**/*.svg
  • src/frontend/src/icons/Instagram/instagram.svg is excluded by !**/*.svg
  • src/frontend/src/icons/Jotform/jotform.svg is excluded by !**/*.svg
  • src/frontend/src/icons/Klipfolio/klipfolio.svg is excluded by !**/*.svg
  • src/frontend/src/icons/Listennotes/listennotes.svg is excluded by !**/*.svg
  • src/frontend/src/icons/Missive/missive.svg is excluded by !**/*.svg
  • src/frontend/src/icons/Neon/neon.svg is excluded by !**/*.svg
  • src/frontend/src/icons/Newsapi/newsapi.svg is excluded by !**/*.svg
  • src/frontend/src/icons/OpenAI copy/openai.svg is excluded by !**/*.svg
  • src/frontend/src/icons/Pandadoc/pandadoc.svg is excluded by !**/*.svg
  • src/frontend/src/icons/Slides/slides.svg is excluded by !**/*.svg
📒 Files selected for processing (43)
  • src/frontend/src/icons/Classroom/classroom.jsx (1 hunks)
  • src/frontend/src/icons/Classroom/index.tsx (1 hunks)
  • src/frontend/src/icons/Excel/excel.jsx (1 hunks)
  • src/frontend/src/icons/Excel/index.tsx (1 hunks)
  • src/frontend/src/icons/Finage/finage.jsx (1 hunks)
  • src/frontend/src/icons/Finage/index.tsx (1 hunks)
  • src/frontend/src/icons/Fixer/fixer.jsx (1 hunks)
  • src/frontend/src/icons/Fixer/index.tsx (1 hunks)
  • src/frontend/src/icons/Flexisign/flexisign.jsx (1 hunks)
  • src/frontend/src/icons/Flexisign/index.tsx (1 hunks)
  • src/frontend/src/icons/Freshdesk/freshdesk.jsx (1 hunks)
  • src/frontend/src/icons/Freshdesk/index.tsx (1 hunks)
  • src/frontend/src/icons/Instagram/index.tsx (1 hunks)
  • src/frontend/src/icons/Instagram/instagram.jsx (1 hunks)
  • src/frontend/src/icons/Jotform/index.tsx (1 hunks)
  • src/frontend/src/icons/Jotform/jotform.jsx (1 hunks)
  • src/frontend/src/icons/Klipfolio/index.tsx (1 hunks)
  • src/frontend/src/icons/Klipfolio/klipfolio.jsx (1 hunks)
  • src/frontend/src/icons/Listennotes/index.tsx (1 hunks)
  • src/frontend/src/icons/Missive/index.tsx (1 hunks)
  • src/frontend/src/icons/Missive/missive.jsx (1 hunks)
  • src/frontend/src/icons/Neon/index.tsx (1 hunks)
  • src/frontend/src/icons/Neon/neon.jsx (1 hunks)
  • src/frontend/src/icons/Newsapi/index.tsx (1 hunks)
  • src/frontend/src/icons/Newsapi/newsapi.jsx (1 hunks)
  • src/frontend/src/icons/OpenAI copy/index.tsx (1 hunks)
  • src/frontend/src/icons/OpenAI copy/openai.jsx (1 hunks)
  • src/frontend/src/icons/Pandadoc/index.tsx (1 hunks)
  • src/frontend/src/icons/Pandadoc/pandadoc.jsx (1 hunks)
  • src/frontend/src/icons/Slides/index.tsx (1 hunks)
  • src/frontend/src/icons/Slides/slides.jsx (1 hunks)
  • src/frontend/src/icons/lazyIconImports.ts (9 hunks)
  • src/lfx/src/lfx/components/composio/__init__.py (3 hunks)
  • src/lfx/src/lfx/components/composio/finage_composio.py (1 hunks)
  • src/lfx/src/lfx/components/composio/fixer_composio.py (1 hunks)
  • src/lfx/src/lfx/components/composio/flexisign_composio.py (1 hunks)
  • src/lfx/src/lfx/components/composio/freshdesk_composio.py (1 hunks)
  • src/lfx/src/lfx/components/composio/googleclassroom_composio.py (1 hunks)
  • src/lfx/src/lfx/components/composio/instagram_composio.py (1 hunks)
  • src/lfx/src/lfx/components/composio/jotform_composio.py (1 hunks)
  • src/lfx/src/lfx/components/composio/listennotes_composio.py (1 hunks)
  • src/lfx/src/lfx/components/composio/missive_composio.py (1 hunks)
  • src/lfx/src/lfx/components/composio/pandadoc_composio.py (1 hunks)
🧰 Additional context used
📓 Path-based instructions (5)
src/frontend/src/**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (.cursor/rules/frontend_development.mdc)

src/frontend/src/**/*.{ts,tsx,js,jsx}: All frontend TypeScript and JavaScript code should be located under src/frontend/src/ and organized into components, pages, icons, stores, types, utils, hooks, services, and assets directories as per the specified directory layout.
Use React 18 with TypeScript for all UI components in the frontend.
Format all TypeScript and JavaScript code using the make format_frontend command.
Lint all TypeScript and JavaScript code using the make lint command.

Files:

  • src/frontend/src/icons/Fixer/fixer.jsx
  • src/frontend/src/icons/Excel/excel.jsx
  • src/frontend/src/icons/Jotform/jotform.jsx
  • src/frontend/src/icons/Slides/index.tsx
  • src/frontend/src/icons/Jotform/index.tsx
  • src/frontend/src/icons/Instagram/index.tsx
  • src/frontend/src/icons/Listennotes/index.tsx
  • src/frontend/src/icons/Instagram/instagram.jsx
  • src/frontend/src/icons/Flexisign/index.tsx
  • src/frontend/src/icons/OpenAI copy/index.tsx
  • src/frontend/src/icons/Klipfolio/index.tsx
  • src/frontend/src/icons/Finage/index.tsx
  • src/frontend/src/icons/Klipfolio/klipfolio.jsx
  • src/frontend/src/icons/Fixer/index.tsx
  • src/frontend/src/icons/Neon/neon.jsx
  • src/frontend/src/icons/Pandadoc/pandadoc.jsx
  • src/frontend/src/icons/Newsapi/index.tsx
  • src/frontend/src/icons/OpenAI copy/openai.jsx
  • src/frontend/src/icons/Freshdesk/freshdesk.jsx
  • src/frontend/src/icons/Flexisign/flexisign.jsx
  • src/frontend/src/icons/Newsapi/newsapi.jsx
  • src/frontend/src/icons/Missive/missive.jsx
  • src/frontend/src/icons/Finage/finage.jsx
  • src/frontend/src/icons/Excel/index.tsx
  • src/frontend/src/icons/Missive/index.tsx
  • src/frontend/src/icons/Freshdesk/index.tsx
  • src/frontend/src/icons/Slides/slides.jsx
  • src/frontend/src/icons/Classroom/index.tsx
  • src/frontend/src/icons/Classroom/classroom.jsx
  • src/frontend/src/icons/Neon/index.tsx
  • src/frontend/src/icons/Pandadoc/index.tsx
  • src/frontend/src/icons/lazyIconImports.ts
src/frontend/src/icons/**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (.cursor/rules/frontend_development.mdc)

Use Lucide React for icons in the frontend.

Files:

  • src/frontend/src/icons/Fixer/fixer.jsx
  • src/frontend/src/icons/Excel/excel.jsx
  • src/frontend/src/icons/Jotform/jotform.jsx
  • src/frontend/src/icons/Slides/index.tsx
  • src/frontend/src/icons/Jotform/index.tsx
  • src/frontend/src/icons/Instagram/index.tsx
  • src/frontend/src/icons/Listennotes/index.tsx
  • src/frontend/src/icons/Instagram/instagram.jsx
  • src/frontend/src/icons/Flexisign/index.tsx
  • src/frontend/src/icons/OpenAI copy/index.tsx
  • src/frontend/src/icons/Klipfolio/index.tsx
  • src/frontend/src/icons/Finage/index.tsx
  • src/frontend/src/icons/Klipfolio/klipfolio.jsx
  • src/frontend/src/icons/Fixer/index.tsx
  • src/frontend/src/icons/Neon/neon.jsx
  • src/frontend/src/icons/Pandadoc/pandadoc.jsx
  • src/frontend/src/icons/Newsapi/index.tsx
  • src/frontend/src/icons/OpenAI copy/openai.jsx
  • src/frontend/src/icons/Freshdesk/freshdesk.jsx
  • src/frontend/src/icons/Flexisign/flexisign.jsx
  • src/frontend/src/icons/Newsapi/newsapi.jsx
  • src/frontend/src/icons/Missive/missive.jsx
  • src/frontend/src/icons/Finage/finage.jsx
  • src/frontend/src/icons/Excel/index.tsx
  • src/frontend/src/icons/Missive/index.tsx
  • src/frontend/src/icons/Freshdesk/index.tsx
  • src/frontend/src/icons/Slides/slides.jsx
  • src/frontend/src/icons/Classroom/index.tsx
  • src/frontend/src/icons/Classroom/classroom.jsx
  • src/frontend/src/icons/Neon/index.tsx
  • src/frontend/src/icons/Pandadoc/index.tsx
  • src/frontend/src/icons/lazyIconImports.ts
src/frontend/src/icons/*/*.@(js|jsx|ts|tsx)

📄 CodeRabbit inference engine (.cursor/rules/icons.mdc)

Create a new directory for your icon in src/frontend/src/icons/YourIconName/ and add your SVG as a React component (e.g., YourIconName.jsx). The SVG component must use the isDark prop to support both light and dark mode.

Files:

  • src/frontend/src/icons/Fixer/fixer.jsx
  • src/frontend/src/icons/Excel/excel.jsx
  • src/frontend/src/icons/Jotform/jotform.jsx
  • src/frontend/src/icons/Slides/index.tsx
  • src/frontend/src/icons/Jotform/index.tsx
  • src/frontend/src/icons/Instagram/index.tsx
  • src/frontend/src/icons/Listennotes/index.tsx
  • src/frontend/src/icons/Instagram/instagram.jsx
  • src/frontend/src/icons/Flexisign/index.tsx
  • src/frontend/src/icons/OpenAI copy/index.tsx
  • src/frontend/src/icons/Klipfolio/index.tsx
  • src/frontend/src/icons/Finage/index.tsx
  • src/frontend/src/icons/Klipfolio/klipfolio.jsx
  • src/frontend/src/icons/Fixer/index.tsx
  • src/frontend/src/icons/Neon/neon.jsx
  • src/frontend/src/icons/Pandadoc/pandadoc.jsx
  • src/frontend/src/icons/Newsapi/index.tsx
  • src/frontend/src/icons/OpenAI copy/openai.jsx
  • src/frontend/src/icons/Freshdesk/freshdesk.jsx
  • src/frontend/src/icons/Flexisign/flexisign.jsx
  • src/frontend/src/icons/Newsapi/newsapi.jsx
  • src/frontend/src/icons/Missive/missive.jsx
  • src/frontend/src/icons/Finage/finage.jsx
  • src/frontend/src/icons/Excel/index.tsx
  • src/frontend/src/icons/Missive/index.tsx
  • src/frontend/src/icons/Freshdesk/index.tsx
  • src/frontend/src/icons/Slides/slides.jsx
  • src/frontend/src/icons/Classroom/index.tsx
  • src/frontend/src/icons/Classroom/classroom.jsx
  • src/frontend/src/icons/Neon/index.tsx
  • src/frontend/src/icons/Pandadoc/index.tsx
src/frontend/src/icons/*/index.tsx

📄 CodeRabbit inference engine (.cursor/rules/icons.mdc)

Create an index.tsx in your icon directory that exports your icon using forwardRef and passes the isDark prop.

Files:

  • src/frontend/src/icons/Slides/index.tsx
  • src/frontend/src/icons/Jotform/index.tsx
  • src/frontend/src/icons/Instagram/index.tsx
  • src/frontend/src/icons/Listennotes/index.tsx
  • src/frontend/src/icons/Flexisign/index.tsx
  • src/frontend/src/icons/OpenAI copy/index.tsx
  • src/frontend/src/icons/Klipfolio/index.tsx
  • src/frontend/src/icons/Finage/index.tsx
  • src/frontend/src/icons/Fixer/index.tsx
  • src/frontend/src/icons/Newsapi/index.tsx
  • src/frontend/src/icons/Excel/index.tsx
  • src/frontend/src/icons/Missive/index.tsx
  • src/frontend/src/icons/Freshdesk/index.tsx
  • src/frontend/src/icons/Classroom/index.tsx
  • src/frontend/src/icons/Neon/index.tsx
  • src/frontend/src/icons/Pandadoc/index.tsx
src/frontend/src/icons/lazyIconImports.ts

📄 CodeRabbit inference engine (.cursor/rules/icons.mdc)

Add your icon to the lazyIconsMapping object in src/frontend/src/icons/lazyIconImports.ts with a key that matches the backend icon string exactly.

Files:

  • src/frontend/src/icons/lazyIconImports.ts
🧠 Learnings (6)
📓 Common learnings
Learnt from: CR
PR: langflow-ai/langflow#0
File: .cursor/rules/icons.mdc:0-0
Timestamp: 2025-06-23T12:46:52.420Z
Learning: Export custom icon components in React using React.forwardRef to ensure proper ref forwarding and compatibility with parent components.
Learnt from: CR
PR: langflow-ai/langflow#0
File: .cursor/rules/icons.mdc:0-0
Timestamp: 2025-07-28T15:56:47.865Z
Learning: Applies to src/frontend/src/icons/lazyIconImports.ts : Add your icon to the `lazyIconsMapping` object in `src/frontend/src/icons/lazyIconImports.ts` with a key that matches the backend icon string exactly.
📚 Learning: 2025-07-28T15:56:47.865Z
Learnt from: CR
PR: langflow-ai/langflow#0
File: .cursor/rules/icons.mdc:0-0
Timestamp: 2025-07-28T15:56:47.865Z
Learning: Applies to src/frontend/src/icons/*/*.@(js|jsx|ts|tsx) : Create a new directory for your icon in `src/frontend/src/icons/YourIconName/` and add your SVG as a React component (e.g., `YourIconName.jsx`). The SVG component must use the `isDark` prop to support both light and dark mode.

Applied to files:

  • src/frontend/src/icons/Fixer/fixer.jsx
  • src/frontend/src/icons/Excel/excel.jsx
  • src/frontend/src/icons/Jotform/jotform.jsx
  • src/frontend/src/icons/Instagram/instagram.jsx
  • src/frontend/src/icons/Klipfolio/klipfolio.jsx
  • src/frontend/src/icons/Neon/neon.jsx
  • src/frontend/src/icons/Pandadoc/pandadoc.jsx
  • src/frontend/src/icons/OpenAI copy/openai.jsx
  • src/frontend/src/icons/Freshdesk/freshdesk.jsx
  • src/frontend/src/icons/Flexisign/flexisign.jsx
  • src/frontend/src/icons/Newsapi/newsapi.jsx
  • src/frontend/src/icons/Missive/missive.jsx
  • src/frontend/src/icons/Finage/finage.jsx
  • src/frontend/src/icons/Slides/slides.jsx
  • src/frontend/src/icons/Neon/index.tsx
📚 Learning: 2025-06-16T11:14:04.200Z
Learnt from: dolfim-ibm
PR: langflow-ai/langflow#8394
File: src/frontend/src/icons/Docling/index.tsx:4-6
Timestamp: 2025-06-16T11:14:04.200Z
Learning: The Langflow codebase consistently uses `React.PropsWithChildren<{}>` as the prop type for all icon components using forwardRef, rather than `React.SVGProps<SVGSVGElement>`. This is an established pattern across hundreds of icon files in src/frontend/src/icons/.

Applied to files:

  • src/frontend/src/icons/Fixer/fixer.jsx
  • src/frontend/src/icons/Slides/index.tsx
  • src/frontend/src/icons/Jotform/index.tsx
  • src/frontend/src/icons/Instagram/index.tsx
  • src/frontend/src/icons/Listennotes/index.tsx
  • src/frontend/src/icons/Flexisign/index.tsx
  • src/frontend/src/icons/OpenAI copy/index.tsx
  • src/frontend/src/icons/Klipfolio/index.tsx
  • src/frontend/src/icons/Finage/index.tsx
  • src/frontend/src/icons/Klipfolio/klipfolio.jsx
  • src/frontend/src/icons/Fixer/index.tsx
  • src/frontend/src/icons/Pandadoc/pandadoc.jsx
  • src/frontend/src/icons/Newsapi/index.tsx
  • src/frontend/src/icons/Excel/index.tsx
  • src/frontend/src/icons/Missive/index.tsx
  • src/frontend/src/icons/Freshdesk/index.tsx
  • src/frontend/src/icons/Classroom/index.tsx
  • src/frontend/src/icons/Neon/index.tsx
  • src/frontend/src/icons/Pandadoc/index.tsx
📚 Learning: 2025-06-23T12:46:52.420Z
Learnt from: CR
PR: langflow-ai/langflow#0
File: .cursor/rules/icons.mdc:0-0
Timestamp: 2025-06-23T12:46:52.420Z
Learning: Export custom icon components in React using React.forwardRef to ensure proper ref forwarding and compatibility with parent components.

Applied to files:

  • src/frontend/src/icons/Slides/index.tsx
  • src/frontend/src/icons/Jotform/index.tsx
  • src/frontend/src/icons/Instagram/index.tsx
  • src/frontend/src/icons/Listennotes/index.tsx
  • src/frontend/src/icons/Flexisign/index.tsx
  • src/frontend/src/icons/OpenAI copy/index.tsx
  • src/frontend/src/icons/Klipfolio/index.tsx
  • src/frontend/src/icons/Finage/index.tsx
  • src/frontend/src/icons/Klipfolio/klipfolio.jsx
  • src/frontend/src/icons/Fixer/index.tsx
  • src/frontend/src/icons/Newsapi/index.tsx
  • src/frontend/src/icons/Excel/index.tsx
  • src/frontend/src/icons/Missive/index.tsx
  • src/frontend/src/icons/Freshdesk/index.tsx
  • src/frontend/src/icons/Classroom/index.tsx
  • src/frontend/src/icons/Neon/index.tsx
  • src/frontend/src/icons/Pandadoc/index.tsx
📚 Learning: 2025-07-28T15:56:47.865Z
Learnt from: CR
PR: langflow-ai/langflow#0
File: .cursor/rules/icons.mdc:0-0
Timestamp: 2025-07-28T15:56:47.865Z
Learning: Applies to src/frontend/src/icons/*/index.tsx : Create an `index.tsx` in your icon directory that exports your icon using `forwardRef` and passes the `isDark` prop.

Applied to files:

  • src/frontend/src/icons/Slides/index.tsx
  • src/frontend/src/icons/Jotform/index.tsx
  • src/frontend/src/icons/Instagram/index.tsx
  • src/frontend/src/icons/Listennotes/index.tsx
  • src/frontend/src/icons/Flexisign/index.tsx
  • src/frontend/src/icons/OpenAI copy/index.tsx
  • src/frontend/src/icons/Klipfolio/index.tsx
  • src/frontend/src/icons/Finage/index.tsx
  • src/frontend/src/icons/Klipfolio/klipfolio.jsx
  • src/frontend/src/icons/Fixer/index.tsx
  • src/frontend/src/icons/Neon/neon.jsx
  • src/frontend/src/icons/Newsapi/index.tsx
  • src/frontend/src/icons/Excel/index.tsx
  • src/frontend/src/icons/Missive/index.tsx
  • src/frontend/src/icons/Freshdesk/index.tsx
  • src/frontend/src/icons/Classroom/index.tsx
  • src/frontend/src/icons/Neon/index.tsx
  • src/frontend/src/icons/Pandadoc/index.tsx
📚 Learning: 2025-07-28T15:56:47.865Z
Learnt from: CR
PR: langflow-ai/langflow#0
File: .cursor/rules/icons.mdc:0-0
Timestamp: 2025-07-28T15:56:47.865Z
Learning: Applies to src/frontend/src/icons/lazyIconImports.ts : Add your icon to the `lazyIconsMapping` object in `src/frontend/src/icons/lazyIconImports.ts` with a key that matches the backend icon string exactly.

Applied to files:

  • src/frontend/src/icons/lazyIconImports.ts
🧬 Code graph analysis (8)
src/lfx/src/lfx/components/composio/googleclassroom_composio.py (2)
src/lfx/src/lfx/base/composio/composio_base.py (1)
  • ComposioBaseComponent (32-2157)
src/lfx/src/lfx/components/composio/finage_composio.py (1)
  • set_default_tools (10-11)
src/lfx/src/lfx/components/composio/__init__.py (10)
src/lfx/src/lfx/components/composio/finage_composio.py (1)
  • ComposioFinageAPIComponent (4-11)
src/lfx/src/lfx/components/composio/fixer_composio.py (1)
  • ComposioFixerAPIComponent (4-11)
src/lfx/src/lfx/components/composio/flexisign_composio.py (1)
  • ComposioFlexisignAPIComponent (4-11)
src/lfx/src/lfx/components/composio/freshdesk_composio.py (1)
  • ComposioFreshdeskAPIComponent (4-11)
src/lfx/src/lfx/components/composio/googleclassroom_composio.py (1)
  • ComposioGoogleclassroomAPIComponent (4-11)
src/lfx/src/lfx/components/composio/instagram_composio.py (1)
  • ComposioInstagramAPIComponent (4-11)
src/lfx/src/lfx/components/composio/jotform_composio.py (1)
  • ComposioJotformAPIComponent (4-11)
src/lfx/src/lfx/components/composio/listennotes_composio.py (1)
  • ComposioListennotesAPIComponent (4-11)
src/lfx/src/lfx/components/composio/missive_composio.py (1)
  • ComposioMissiveAPIComponent (4-11)
src/lfx/src/lfx/components/composio/pandadoc_composio.py (1)
  • ComposioPandadocAPIComponent (4-11)
src/lfx/src/lfx/components/composio/fixer_composio.py (1)
src/lfx/src/lfx/components/composio/finage_composio.py (1)
  • set_default_tools (10-11)
src/lfx/src/lfx/components/composio/listennotes_composio.py (1)
src/lfx/src/lfx/components/composio/finage_composio.py (1)
  • set_default_tools (10-11)
src/lfx/src/lfx/components/composio/missive_composio.py (1)
src/lfx/src/lfx/components/composio/finage_composio.py (1)
  • set_default_tools (10-11)
src/lfx/src/lfx/components/composio/pandadoc_composio.py (1)
src/lfx/src/lfx/base/composio/composio_base.py (1)
  • ComposioBaseComponent (32-2157)
src/lfx/src/lfx/components/composio/freshdesk_composio.py (1)
src/lfx/src/lfx/base/composio/composio_base.py (1)
  • ComposioBaseComponent (32-2157)
src/frontend/src/icons/Slides/slides.jsx (6)
src/frontend/src/icons/Classroom/classroom.jsx (1)
  • Icon (1-29)
src/frontend/src/icons/Excel/excel.jsx (1)
  • Icon (1-34)
src/frontend/src/icons/Finage/finage.jsx (1)
  • Icon (1-27)
src/frontend/src/icons/Fixer/fixer.jsx (1)
  • Icon (1-44)
src/frontend/src/icons/Freshdesk/freshdesk.jsx (1)
  • Icon (1-12)
src/frontend/src/icons/OpenAI copy/openai.jsx (1)
  • Icon (1-11)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: Run Frontend Tests / merge-reports
  • GitHub Check: Run Frontend Unit Tests / Frontend Jest Unit Tests
  • GitHub Check: Test Starter Templates
  • GitHub Check: Update Starter Projects
🔇 Additional comments (18)
src/frontend/src/icons/Jotform/index.tsx (1)

1-9: LGTM!

The forwardRef wrapper follows the established pattern correctly, uses the proper type signature React.PropsWithChildren<{}>, and correctly forwards both ref and props to the underlying SVG component.

Based on learnings

src/frontend/src/icons/Newsapi/index.tsx (1)

1-9: LGTM!

The forwardRef wrapper correctly implements the established pattern with proper type signature and ref/props forwarding.

Based on learnings

src/frontend/src/icons/Slides/index.tsx (1)

1-9: LGTM!

The forwardRef wrapper is correctly implemented following the established pattern.

Based on learnings

src/frontend/src/icons/Neon/index.tsx (1)

1-8: LGTM!

The forwardRef wrapper correctly implements the established pattern with proper type signature and ref/props forwarding.

Based on learnings

src/frontend/src/icons/Missive/index.tsx (1)

1-9: LGTM! ForwardRef pattern correctly implemented.

The forwardRef wrapper follows the established Langflow pattern with React.PropsWithChildren<{}> and properly forwards refs and props to the underlying SVG component.

Based on learnings

src/frontend/src/icons/Klipfolio/index.tsx (1)

1-9: LGTM! ForwardRef pattern correctly implemented.

The forwardRef wrapper follows the established Langflow pattern and properly forwards refs and props to the underlying SVG component.

Based on learnings

src/frontend/src/icons/Excel/index.tsx (1)

1-8: LGTM! ForwardRef pattern correctly implemented.

The forwardRef wrapper follows the established Langflow pattern and properly forwards refs and props to the underlying SVG component.

Based on learnings

src/frontend/src/icons/Instagram/index.tsx (1)

1-9: LGTM! ForwardRef pattern correctly implemented.

The forwardRef wrapper follows the established Langflow pattern and properly forwards refs and props to the underlying SVG component.

Based on learnings

src/frontend/src/icons/Flexisign/index.tsx (1)

1-9: LGTM! ForwardRef pattern correctly implemented.

The forwardRef wrapper follows the established Langflow pattern and properly forwards refs and props to the underlying SVG component.

Based on learnings

src/frontend/src/icons/Pandadoc/index.tsx (1)

1-9: LGTM!

The forwardRef wrapper implementation follows the established codebase pattern correctly, using React.PropsWithChildren<{}> as the prop type and properly forwarding the ref and props to the underlying SVG component.

Based on learnings

src/frontend/src/icons/Finage/index.tsx (1)

1-9: LGTM!

The forwardRef wrapper implementation follows the established codebase pattern correctly, using React.PropsWithChildren<{}> as the prop type and properly forwarding the ref and props to the underlying SVG component.

Based on learnings

src/frontend/src/icons/Classroom/index.tsx (1)

1-9: LGTM!

The forwardRef wrapper implementation follows the established codebase pattern correctly, using React.PropsWithChildren<{}> as the prop type and properly forwarding the ref and props to the underlying SVG component.

Based on learnings

src/frontend/src/icons/Fixer/index.tsx (1)

1-8: LGTM!

The forwardRef wrapper implementation follows the established codebase pattern correctly, using React.PropsWithChildren<{}> as the prop type and properly forwarding the ref and props to the underlying SVG component.

Based on learnings

src/lfx/src/lfx/components/composio/__init__.py (2)

16-38: LGTM! TYPE_CHECKING imports correctly added.

All new Composio component imports are properly added within the TYPE_CHECKING block for lazy loading support.


76-85: LGTM! Dynamic import mappings correctly configured.

The lazy loading mappings for all new components are properly configured, enabling on-demand imports of the new Composio API components.

src/lfx/src/lfx/components/composio/googleclassroom_composio.py (1)

1-11: Run the following to compare naming across all Composio components:

#!/bin/bash
rg -n 'app_name\s*=' --type=py src/lfx/src/lfx/components/composio
src/frontend/src/icons/lazyIconImports.ts (2)

32-33: LGTM! New icon mappings follow the established pattern.

All 15 new icon mappings (Klipfolio, Classroom, Excel, Finage, Fixer, Flexisign, Freshdesk, Pandadoc, Instagram, Jotform, Listennotes, Missive, Neon, Newsapi, Slides) correctly implement the lazy-loading pattern with consistent naming conventions and structure.

Also applies to: 101-102, 126-127, 134-135, 136-137, 138-139, 142-143, 174-175, 226-227, 234-235, 244-247, 259-260, 267-267, 268-269, 348-349


32-33: Verify lazyIconsMapping keys for Composio API components

Mapping keys must exactly match their backend icon attributes:

  • Classroom
  • Jotform
  • Missive
  • Listennotes
  • Pandadoc
  • Instagram
  • Freshdesk
  • Flexisign
  • Fixer
  • Finage
  • Wrike
  • Supabase
  • Reddit
  • Slackbot key should be “Slack” (backend uses icon = "Slack")
⛔ Skipped due to learnings
Learnt from: CR
PR: langflow-ai/langflow#0
File: .cursor/rules/icons.mdc:0-0
Timestamp: 2025-06-23T12:46:52.420Z
Learning: The frontend icon mapping key (in 'lazyIconsMapping') must match the backend 'icon' attribute string exactly, including case sensitivity, to ensure correct icon rendering.
Learnt from: CR
PR: langflow-ai/langflow#0
File: .cursor/rules/icons.mdc:0-0
Timestamp: 2025-07-28T15:56:47.865Z
Learning: Applies to src/frontend/src/icons/lazyIconImports.ts : Add your icon to the `lazyIconsMapping` object in `src/frontend/src/icons/lazyIconImports.ts` with a key that matches the backend icon string exactly.

Comment on lines +1 to +7
const Icon = (props) => (
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 48 48"
width="20px"
height="20px"
>
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Add props spread to the SVG element.

The SVG element is missing the {...props} spread, which prevents passing any props (className, style, onClick, etc.) to the icon. All other icon SVG components in the codebase include this spread.

Apply this diff to fix:

 const Icon = (props) => (
   <svg
     xmlns="http://www.w3.org/2000/svg"
     viewBox="0 0 48 48"
     width="20px"
     height="20px"
+    {...props}
   >
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const Icon = (props) => (
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 48 48"
width="20px"
height="20px"
>
const Icon = (props) => (
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 48 48"
width="20px"
height="20px"
{...props}
>
🤖 Prompt for AI Agents
In src/frontend/src/icons/Classroom/classroom.jsx around lines 1 to 7, the SVG
element is missing the props spread which prevents passing className, style,
onClick, and other props to the icon; update the SVG opening tag to include
{...props} so incoming props are forwarded (e.g. <svg xmlns="..." viewBox="..."
width="20px" height="20px" {...props}>), ensuring existing attributes remain and
no prop names are duplicated.

Comment on lines +1 to +35
const Icon = (props) => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" {...props}>
<path
fill="#169154"
d="M29,6H15.744C14.781,6,14,6.781,14,7.744v7.259h15V6z"
/>
<path
fill="#18482a"
d="M14,33.054v7.202C14,41.219,14.781,42,15.743,42H29v-8.946H14z"
/>
<path fill="#0c8045" d="M14 15.003H29V24.005000000000003H14z" />
<path fill="#17472a" d="M14 24.005H29V33.055H14z" />
<g>
<path
fill="#29c27f"
d="M42.256,6H29v9.003h15V7.744C44,6.781,43.219,6,42.256,6z"
/>
<path
fill="#27663f"
d="M29,33.054V42h13.257C43.219,42,44,41.219,44,40.257v-7.202H29z"
/>
<path fill="#19ac65" d="M29 15.003H44V24.005000000000003H29z" />
<path fill="#129652" d="M29 24.005H44V33.055H29z" />
</g>
<path
fill="#0c7238"
d="M22.319,34H5.681C4.753,34,4,33.247,4,32.319V15.681C4,14.753,4.753,14,5.681,14h16.638 C23.247,14,24,14.753,24,15.681v16.638C24,33.247,23.247,34,22.319,34z"
/>
<path
fill="#fff"
d="M9.807 19L12.193 19 14.129 22.754 16.175 19 18.404 19 15.333 24 18.474 29 16.123 29 14.013 25.07 11.912 29 9.526 29 12.719 23.982z"
/>
</svg>
);
export default Icon;
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Missing isDark prop support for theme compatibility.

The SVG icon component must accept and use the isDark prop to support both light and dark mode, but this implementation has multiple hardcoded fill colors and doesn't handle theme switching.

As per coding guidelines

Consider destructuring isDark from props and conditionally adjusting colors. Given the Excel icon's multi-color design, you may want to create theme-appropriate color palettes:

-const Icon = (props) => (
+const Icon = ({ isDark, ...props }) => {
+  const colors = isDark 
+    ? { primary: '#10793f', secondary: '#0d471f', accent: '#0a5c30', highlight: '#129652' }
+    : { primary: '#169154', secondary: '#18482a', accent: '#0c8045', highlight: '#17472a' };
+  
+  return (
   <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" {...props}>
     <path
-      fill="#169154"
+      fill={colors.primary}
       d="M29,6H15.744C14.781,6,14,6.781,14,7.744v7.259h15V6z"
     />
+    {/* Apply similar changes to other path elements */}
   </svg>
- );
+ );
+};

Note: Adjust the color mappings based on your theme requirements.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const Icon = (props) => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" {...props}>
<path
fill="#169154"
d="M29,6H15.744C14.781,6,14,6.781,14,7.744v7.259h15V6z"
/>
<path
fill="#18482a"
d="M14,33.054v7.202C14,41.219,14.781,42,15.743,42H29v-8.946H14z"
/>
<path fill="#0c8045" d="M14 15.003H29V24.005000000000003H14z" />
<path fill="#17472a" d="M14 24.005H29V33.055H14z" />
<g>
<path
fill="#29c27f"
d="M42.256,6H29v9.003h15V7.744C44,6.781,43.219,6,42.256,6z"
/>
<path
fill="#27663f"
d="M29,33.054V42h13.257C43.219,42,44,41.219,44,40.257v-7.202H29z"
/>
<path fill="#19ac65" d="M29 15.003H44V24.005000000000003H29z" />
<path fill="#129652" d="M29 24.005H44V33.055H29z" />
</g>
<path
fill="#0c7238"
d="M22.319,34H5.681C4.753,34,4,33.247,4,32.319V15.681C4,14.753,4.753,14,5.681,14h16.638 C23.247,14,24,14.753,24,15.681v16.638C24,33.247,23.247,34,22.319,34z"
/>
<path
fill="#fff"
d="M9.807 19L12.193 19 14.129 22.754 16.175 19 18.404 19 15.333 24 18.474 29 16.123 29 14.013 25.07 11.912 29 9.526 29 12.719 23.982z"
/>
</svg>
);
export default Icon;
const Icon = ({ isDark, ...props }) => {
const colors = isDark
? { primary: '#10793f', secondary: '#0d471f', accent: '#0a5c30', highlight: '#129652' }
: { primary: '#169154', secondary: '#18482a', accent: '#0c8045', highlight: '#17472a' };
return (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" {...props}>
<path
fill={colors.primary}
d="M29,6H15.744C14.781,6,14,6.781,14,7.744v7.259h15V6z"
/>
{/* Apply similar changes to other path elements */}
<path
fill="#18482a"
d="M14,33.054v7.202C14,41.219,14.781,42,15.743,42H29v-8.946H14z"
/>
<path
fill="#0c8045"
d="M14 15.003H29V24.005000000000003H14z"
/>
<path
fill="#17472a"
d="M14 24.005H29V33.055H14z"
/>
<g>
<path
fill="#29c27f"
d="M42.256,6H29v9.003h15V7.744C44,6.781,43.219,6,42.256,6z"
/>
<path
fill="#27663f"
d="M29,33.054V42h13.257C43.219,42,44,41.219,44,40.257v-7.202H29z"
/>
<path
fill="#19ac65"
d="M29 15.003H44V24.005000000000003H29z"
/>
<path
fill="#129652"
d="M29 24.005H44V33.055H29z"
/>
</g>
<path
fill="#0c7238"
d="M22.319,34H5.681C4.753,34,4,33.247,4,32.319V15.681C4,14.753,4.753,14,5.681,14h16.638 C23.247,14,24,14.753,24,15.681v16.638C24,33.247,23.247,34,22.319,34z"
/>
<path
fill="#fff"
d="M9.807 19L12.193 19 14.129 22.754 16.175 19 18.404 19 15.333 24 18.474 29 16.123 29 14.013 25.07 11.912 29 9.526 29 12.719 23.982z"
/>
</svg>
);
};
export default Icon;
🤖 Prompt for AI Agents
In src/frontend/src/icons/Excel/excel.jsx around lines 1 to 35, the component
uses hardcoded fill colors and doesn't accept an isDark prop; update the
component to destructure isDark (default false) from props, define two color
palettes (light and dark) mapping each of the current fill values to
theme-appropriate colors, replace the hardcoded fill attributes with those
palette variables, and keep spreading remaining props onto the svg so consumers
can still pass className/style; ensure palettes cover every filled path and fall
back to the original color if a mapping is missing.

Comment on lines +1 to +28
const Icon = (props) => (
<svg
viewBox="0 0 100 100"
fill="none"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M74.0067 26.4671C75.1405 28.4062 74.4876 30.8973 72.5486 32.031L43.1784 49.2035L43.1484 88.1897C43.1467 90.4359 41.3244 92.2554 39.0782 92.2537C36.832 92.252 35.0124 90.4296 35.0142 88.1834L35.0459 46.866C35.047 45.422 35.8137 44.0869 37.0602 43.3581L68.4428 25.009C70.3819 23.8752 72.873 24.528 74.0067 26.4671Z"
fill="#444CE7"
/>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M68.1802 9.86606C69.3012 11.8126 68.6319 14.2993 66.6854 15.4202L26.8843 38.3412V76.2868C26.8843 78.533 25.0634 80.3539 22.8171 80.3539C20.5709 80.3539 18.75 78.533 18.75 76.2868V35.9901C18.75 34.5355 19.5269 33.1916 20.7874 32.4656L62.626 8.37129C64.5725 7.25032 67.0592 7.91955 68.1802 9.86606Z"
fill="#444CE7"
/>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M80.0794 42.088C81.179 44.0467 80.4826 46.5259 78.5239 47.6254L59.3535 58.3872V77.8552C59.3535 80.1014 57.5326 81.9223 55.2864 81.9223C53.0402 81.9223 51.2192 80.1014 51.2192 77.8552V56.0063C51.2192 54.5357 52.0131 53.1796 53.2954 52.4597L74.542 40.5324C76.5007 39.4328 78.9799 40.1293 80.0794 42.088Z"
fill="#444CE7"
/>
</svg>
);
export default Icon;
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Respect the isDark prop for theme-aware fills.

The component only spreads props and leaves fixed fills, so it can’t switch palettes in dark mode. Please update it to destructure { isDark, ...rest }, choose fills based on isDark, and pass rest to <svg>, matching our icon guideline.
As per coding guidelines

🤖 Prompt for AI Agents
In src/frontend/src/icons/Finage/finage.jsx lines 1-28, the SVG uses hard-coded
fill colors and spreads all props, so it ignores theme; destructure the props as
({ isDark, ...rest }), compute fill colors (e.g., const fill = isDark ?
'<darkColor>' : '#444CE7' and any secondary fills similarly), replace the
literal fill attributes on each <path> with those computed fill variables, and
pass rest to the <svg> element instead of spreading props; preserve existing
viewBox and other SVG attributes and keep the component export as-is.

Comment on lines +1 to +44
const Icon = (props) => (
<svg
version="1.1"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 152 152"
{...props}
>
<path
d="M0 0 C50.16 0 100.32 0 152 0 C152 50.16 152 100.32 152 152 C101.84 152 51.68 152 0 152 C0 101.84 0 51.68 0 0 Z "
fill="#0152CC"
transform="translate(0,0)"
/>
<path
d="M0 0 C6.6 0 13.2 0 20 0 C20.66 2.908125 21.32 5.81625 22 8.8125 C22.20882812 9.72491455 22.41765625 10.6373291 22.6328125 11.57739258 C22.87644531 12.66250122 22.87644531 12.66250122 23.125 13.76953125 C23.29257813 14.50792236 23.46015625 15.24631348 23.6328125 16.00708008 C24 18 24 18 24 21 C14.76 21 5.52 21 -4 21 C-3.16746869 13.50721821 -1.90487575 7.20539959 0 0 Z "
fill="#F5F8FD"
transform="translate(86,65)"
/>
<path
d="M0 0 C6.6 0 13.2 0 20 0 C20.66 2.7225 21.32 5.445 22 8.25 C22.31324219 9.52665527 22.31324219 9.52665527 22.6328125 10.82910156 C22.79523438 11.5094043 22.95765625 12.18970703 23.125 12.890625 C23.29257813 13.58188477 23.46015625 14.27314453 23.6328125 14.98535156 C24 17 24 17 24 21 C14.76 21 5.52 21 -4 21 C-3.09260756 13.74086045 -1.69882911 7.09076497 0 0 Z "
fill="#F5F8FD"
transform="translate(50,65)"
/>
<path
d="M0 0 C6.6 0 13.2 0 20 0 C20.66 2.908125 21.32 5.81625 22 8.8125 C22.20882812 9.72491455 22.41765625 10.6373291 22.6328125 11.57739258 C22.87644531 12.66250122 22.87644531 12.66250122 23.125 13.76953125 C23.29257813 14.50792236 23.46015625 15.24631348 23.6328125 16.00708008 C24 18 24 18 24 21 C14.76 21 5.52 21 -4 21 C-2 8 -2 8 0 0 Z "
fill="#F9FBFD"
transform="translate(68,38)"
/>
<path
d="M0 0 C6.6 0 13.2 0 20 0 C20.66 2.743125 21.32 5.48625 22 8.3125 C22.20882812 9.17270752 22.41765625 10.03291504 22.6328125 10.91918945 C22.87644531 11.94338989 22.87644531 11.94338989 23.125 12.98828125 C23.29257813 13.68477783 23.46015625 14.38127441 23.6328125 15.09887695 C24 17 24 17 24 20 C14.76 20 5.52 20 -4 20 C-2 7 -2 7 0 0 Z "
fill="#FCFDFE"
transform="translate(101,92)"
/>
<path
d="M0 0 C6.6 0 13.2 0 20 0 C21.7778683 6.80227871 23.12251559 12.98012474 24 20 C14.76 20 5.52 20 -4 20 C-2.68 13.4 -1.36 6.8 0 0 Z "
fill="#FCFDFE"
transform="translate(35,92)"
/>
<path
d="M0 0 C6.6 0 13.2 0 20 0 C21.32 6.6 22.64 13.2 24 20 C14.76 20 5.52 20 -4 20 C-2.68 13.4 -1.36 6.8 0 0 Z "
fill="#FDFDFE"
transform="translate(68,92)"
/>
</svg>
);
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Ensure Fixer icon honors the isDark theme prop.

The SVG never consumes isDark, so its palette is frozen and breaks dark‑mode support mandated for icons. Please destructure isDark and drive your fills/strokes from it (e.g., via a palette map or CSS vars) so both themes render correctly. Sample start:

-const Icon = (props) => (
+const Icon = ({ isDark = false, ...props }) => (
...
-      fill="#0152CC"
+      fill={isDark ? "#0E1B3A" : "#0152CC"}

Apply the same pattern to the remaining paths.

Based on learnings

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const Icon = (props) => (
<svg
version="1.1"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 152 152"
{...props}
>
<path
d="M0 0 C50.16 0 100.32 0 152 0 C152 50.16 152 100.32 152 152 C101.84 152 51.68 152 0 152 C0 101.84 0 51.68 0 0 Z "
fill="#0152CC"
transform="translate(0,0)"
/>
<path
d="M0 0 C6.6 0 13.2 0 20 0 C20.66 2.908125 21.32 5.81625 22 8.8125 C22.20882812 9.72491455 22.41765625 10.6373291 22.6328125 11.57739258 C22.87644531 12.66250122 22.87644531 12.66250122 23.125 13.76953125 C23.29257813 14.50792236 23.46015625 15.24631348 23.6328125 16.00708008 C24 18 24 18 24 21 C14.76 21 5.52 21 -4 21 C-3.16746869 13.50721821 -1.90487575 7.20539959 0 0 Z "
fill="#F5F8FD"
transform="translate(86,65)"
/>
<path
d="M0 0 C6.6 0 13.2 0 20 0 C20.66 2.7225 21.32 5.445 22 8.25 C22.31324219 9.52665527 22.31324219 9.52665527 22.6328125 10.82910156 C22.79523438 11.5094043 22.95765625 12.18970703 23.125 12.890625 C23.29257813 13.58188477 23.46015625 14.27314453 23.6328125 14.98535156 C24 17 24 17 24 21 C14.76 21 5.52 21 -4 21 C-3.09260756 13.74086045 -1.69882911 7.09076497 0 0 Z "
fill="#F5F8FD"
transform="translate(50,65)"
/>
<path
d="M0 0 C6.6 0 13.2 0 20 0 C20.66 2.908125 21.32 5.81625 22 8.8125 C22.20882812 9.72491455 22.41765625 10.6373291 22.6328125 11.57739258 C22.87644531 12.66250122 22.87644531 12.66250122 23.125 13.76953125 C23.29257813 14.50792236 23.46015625 15.24631348 23.6328125 16.00708008 C24 18 24 18 24 21 C14.76 21 5.52 21 -4 21 C-2 8 -2 8 0 0 Z "
fill="#F9FBFD"
transform="translate(68,38)"
/>
<path
d="M0 0 C6.6 0 13.2 0 20 0 C20.66 2.743125 21.32 5.48625 22 8.3125 C22.20882812 9.17270752 22.41765625 10.03291504 22.6328125 10.91918945 C22.87644531 11.94338989 22.87644531 11.94338989 23.125 12.98828125 C23.29257813 13.68477783 23.46015625 14.38127441 23.6328125 15.09887695 C24 17 24 17 24 20 C14.76 20 5.52 20 -4 20 C-2 7 -2 7 0 0 Z "
fill="#FCFDFE"
transform="translate(101,92)"
/>
<path
d="M0 0 C6.6 0 13.2 0 20 0 C21.7778683 6.80227871 23.12251559 12.98012474 24 20 C14.76 20 5.52 20 -4 20 C-2.68 13.4 -1.36 6.8 0 0 Z "
fill="#FCFDFE"
transform="translate(35,92)"
/>
<path
d="M0 0 C6.6 0 13.2 0 20 0 C21.32 6.6 22.64 13.2 24 20 C14.76 20 5.52 20 -4 20 C-2.68 13.4 -1.36 6.8 0 0 Z "
fill="#FDFDFE"
transform="translate(68,92)"
/>
</svg>
);
const Icon = ({ isDark = false, ...props }) => (
<svg
version="1.1"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 152 152"
{...props}
>
<path
d="M0 0 C50.16 0 100.32 0 152 0 C152 50.16 152 100.32 152 152 C101.84 152 51.68 152 0 152 C0 101.84 0 51.68 0 0 Z "
fill={isDark ? "#0E1B3A" : "#0152CC"}
transform="translate(0,0)"
/>
<path
d="M0 0 C6.6 0 13.2 0 20 0 C20.66 2.908125 21.32 5.81625 22 8.8125 C22.20882812 9.72491455 22.41765625 10.6373291 22.6328125 11.57739258 C22.87644531 12.66250122 22.87644531 12.66250122 23.125 13.76953125 C23.29257813 14.50792236 23.46015625 15.24631348 23.6328125 16.00708008 C24 18 24 18 24 21 C14.76 21 5.52 21 -4 21 C-3.16746869 13.50721821 -1.90487575 7.20539959 0 0 Z "
fill="#F5F8FD"
transform="translate(86,65)"
/>
<path
d="M0 0 C6.6 0 13.2 0 20 0 C20.66 2.7225 21.32 5.445 22 8.25 C22.31324219 9.52665527 22.31324219 9.52665527 22.6328125 10.82910156 C22.79523438 11.5094043 22.95765625 12.18970703 23.125 12.890625 C23.29257813 13.58188477 23.46015625 14.27314453 23.6328125 14.98535156 C24 17 24 17 24 21 C14.76 21 5.52 21 -4 21 C-3.09260756 13.74086045 -1.69882911 7.09076497 0 0 Z "
fill="#F5F8FD"
transform="translate(50,65)"
/>
<path
d="M0 0 C6.6 0 13.2 0 20 0 C20.66 2.908125 21.32 5.81625 22 8.8125 C22.20882812 9.72491455 22.41765625 10.6373291 22.6328125 11.57739258 C22.87644531 12.66250122 22.87644531 12.66250122 23.125 13.76953125 C23.29257813 14.50792236 23.46015625 15.24631348 23.6328125 16.00708008 C24 18 24 18 24 21 C14.76 21 5.52 21 -4 21 C-2 8 -2 8 0 0 Z "
fill="#F9FBFD"
transform="translate(68,38)"
/>
<path
d="M0 0 C6.6 0 13.2 0 20 0 C20.66 2.743125 21.32 5.48625 22 8.3125 C22.20882812 9.17270752 22.41765625 10.03291504 22.6328125 10.91918945 C22.87644531 11.94338989 22.87644531 11.94338989 23.125 12.98828125 C23.29257813 13.68477783 23.46015625 14.38127441 23.6328125 15.09887695 C24 17 24 17 24 20 C14.76 20 5.52 20 -4 20 C-2 7 -2 7 0 0 Z "
fill="#FCFDFE"
transform="translate(101,92)"
/>
<path
d="M0 0 C6.6 0 13.2 0 20 0 C21.7778683 6.80227871 23.12251559 12.98012474 24 20 C14.76 20 5.52 20 -4 20 C-2.68 13.4 -1.36 6.8 0 0 Z "
fill="#FCFDFE"
transform="translate(35,92)"
/>
<path
d="M0 0 C6.6 0 13.2 0 20 0 C21.32 6.6 22.64 13.2 24 20 C14.76 20 5.52 20 -4 20 C-2.68 13.4 -1.36 6.8 0 0 Z "
fill="#FDFDFE"
transform="translate(68,92)"
/>
</svg>
);
🤖 Prompt for AI Agents
In src/frontend/src/icons/Fixer/fixer.jsx lines 1-44, the component never reads
the isDark prop so the SVG uses hardcoded fills and won't respond to theme;
destructure isDark from props (e.g., const Icon = ({isDark, ...props}) => ...)
and create a small palette map or CSS-variable lookup (light/dark) to resolve
each color used in the paths, then replace the hardcoded fill attributes with
the corresponding palette values (ensuring sensible defaults if isDark is
undefined) and apply the same pattern to all paths so the icon renders correctly
in both themes.

Comment on lines +1 to +160
const Icon = (props) => (
<svg
version="1.1"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 820 297"
{...props}
>
<path
d="M0 0 C0.71816895 -0.01482422 1.43633789 -0.02964844 2.17626953 -0.04492188 C8.81413589 0.08562853 14.16948258 2.36590714 18.8125 7.125 C21.29083075 12.80450796 21.38784991 18.19169162 19.5 24.109375 C15.54970118 32.72322103 9.08443404 41.10114094 1.3125 46.5625 C-2.5 47.3125 -2.5 47.3125 -5.6875 47.5625 C-7.94679642 43.17680696 -7.95493504 40.31538138 -6.6875 35.5625 C-4.48258658 31.66099152 -1.92472682 28.04539627 0.9453125 24.60546875 C2.51495289 22.25997754 2.92725023 20.33629831 3.3125 17.5625 C-34.11700462 13.77749391 -77.05620348 45.88435079 -104.6875 67.5625 C-105.49767578 68.19696045 -105.49767578 68.19696045 -106.32421875 68.84423828 C-112.14362463 73.4305018 -117.56724626 78.21135948 -122.6875 83.5625 C-123.8940625 84.738125 -123.8940625 84.738125 -125.125 85.9375 C-134.06186373 95.09233602 -143.34116874 104.99312199 -144.11328125 118.33203125 C-143.22394837 122.99083012 -140.58948472 125.91699801 -136.81640625 128.6171875 C-135.64079118 129.24912931 -134.45050754 129.85423085 -133.25 130.4375 C-132.57606201 130.76991699 -131.90212402 131.10233398 -131.20776367 131.44482422 C-120.73284078 136.27451796 -109.32907473 138.76967534 -98.20458984 141.6484375 C-56.63522049 152.45197206 -56.63522049 152.45197206 -48.625 163.375 C-46.93595137 169.11776533 -47.87302376 173.70549417 -50.25 179.125 C-68.29482199 206.86174052 -113.71940945 217.41712992 -143.515625 223.8515625 C-169.198636 229.13322278 -169.198636 229.13322278 -175.47265625 226.30859375 C-178.48259842 223.93567638 -178.8283144 222.19588287 -179.54296875 218.5625 C-179.74553961 215.75935722 -179.1013052 213.96596885 -177.6875 211.5625 C-175.00747294 208.88247294 -173.14589118 209.0007228 -169.40625 208.484375 C-168.10220215 208.29641357 -166.7981543 208.10845215 -165.45458984 207.91479492 C-164.75920105 207.81717865 -164.06381226 207.71956238 -163.34735107 207.61898804 C-135.72365326 203.6991192 -109.20052519 197.81724128 -84.25 184.9375 C-83.39172607 184.49446533 -82.53345215 184.05143066 -81.64916992 183.5949707 C-73.96112878 179.48967057 -73.96112878 179.48967057 -67.6875 173.5625 C-67.6875 172.2425 -67.6875 170.9225 -67.6875 169.5625 C-76.11513623 165.66483621 -84.93750941 163.58870316 -93.91247559 161.38708496 C-149.94364158 147.59142259 -149.94364158 147.59142259 -161.25 130.0625 C-164.48219743 122.19280191 -164.11490225 114.66507879 -161.6875 106.5625 C-154.45150348 89.52368387 -139.86576941 73.97602735 -125.40234375 62.6875 C-122.58257748 60.4803736 -119.89488653 58.15564729 -117.1875 55.8125 C-86.76852599 30.48948813 -40.91361349 0.57852479 0 0 Z "
fill="#376AE2"
transform="translate(582.6875,-0.5625)"
/>
<path
d="M0 0 C1.36125 1.11375 1.36125 1.11375 2.75 2.25 C2.90210938 1.6725 3.05421875 1.095 3.2109375 0.5 C4.39675899 -2.4189452 5.26372325 -3.75098352 7.75 -5.75 C10.83744805 -6.2502178 13.85930118 -6.12615826 16.9765625 -6 C18.23980347 -5.97292969 18.23980347 -5.97292969 19.52856445 -5.9453125 C21.6028646 -5.89826955 23.67657827 -5.82652768 25.75 -5.75 C25.81973294 6.42917605 25.87292917 18.60830404 25.90543652 30.78763962 C25.92104409 36.44394774 25.94219221 42.10011854 25.97631836 47.75634766 C26.00908744 53.22230618 26.02688987 58.6881332 26.03463173 64.15418243 C26.04014387 66.2320182 26.05090715 68.30984737 26.06719017 70.38762665 C26.18764784 86.40609823 26.01086292 99.92273468 14.81640625 112.40625 C4.97906543 122.08113932 -7.63567469 124.52971999 -20.99853516 124.49438477 C-33.45541483 124.27716313 -42.34449603 120.68219175 -51.47265625 112.1796875 C-56.33033466 107.11317431 -62.25 99.62194482 -62.25 92.25 C-58.41746871 92.04494335 -54.58636234 91.92179172 -50.75 91.8125 C-49.13351562 91.72452148 -49.13351562 91.72452148 -47.484375 91.63476562 C-41.67682383 91.51082398 -38.13433032 91.70469097 -33.7109375 95.68359375 C-33.12618652 96.31193115 -32.54143555 96.94026855 -31.93896484 97.58764648 C-28.4879832 100.98425447 -24.39022239 101.25996998 -19.734375 101.23828125 C-14.03507047 100.85434606 -8.98637202 100.03098679 -4.8125 95.7890625 C-1.10298695 91.46832287 -0.12238171 89.22517282 -0.1875 83.625 C-0.19652344 82.62210937 -0.20554687 81.61921875 -0.21484375 80.5859375 C-0.22644531 79.81507813 -0.23804688 79.04421875 -0.25 78.25 C-0.81847656 78.65992188 -1.38695312 79.06984375 -1.97265625 79.4921875 C-11.1670892 85.90833603 -19.09082941 87.19894992 -30.25 86.25 C-40.67922249 84.13887254 -50.2148047 78.72905317 -56.875 70.328125 C-65.52884076 57.24902477 -67.9117148 44.23110332 -65.78515625 28.8984375 C-64.24266236 21.83399803 -61.41132663 16.13325489 -57.25 10.25 C-56.80914063 9.61320312 -56.36828125 8.97640625 -55.9140625 8.3203125 C-42.98083665 -8.50035695 -17.23224255 -12.14561674 0 0 Z M-34.125 22 C-39.61370672 27.33571141 -41.75675455 32.06488321 -42.31640625 39.66015625 C-42.146971 46.26813086 -39.38515174 52.16967072 -35.25 57.25 C-29.94146406 61.49682875 -24.63438093 63.58602913 -17.8125 63.1875 C-11.46271781 62.25720823 -6.58398033 59.01279353 -2.375 54.25 C1.86311908 48.26677307 3.43167935 42.11419902 2.1875 34.8125 C0.45328804 28.07089457 -3.4669292 23.18915866 -9.1875 19.3125 C-17.94325193 14.4039724 -26.63959015 15.64469261 -34.125 22 Z "
fill="#000001"
transform="translate(674.25,111.75)"
/>
<path
d="M0 0 C28.71 0 57.42 0 87 0 C87 8.25 87 16.5 87 25 C66.87 25 46.74 25 26 25 C26 35.23 26 45.46 26 56 C42.5 56 59 56 76 56 C76 63.92 76 71.84 76 80 C59.5 80 43 80 26 80 C26 96.5 26 113 26 130 C17.42 130 8.84 130 0 130 C0 87.1 0 44.2 0 0 Z "
fill="#000000"
transform="translate(13,71)"
/>
<path
d="M0 0 C10.55781689 7.98110722 16.78500774 19.4921198 18.9140625 32.63671875 C18.99269531 33.49523437 19.07132812 34.35375 19.15234375 35.23828125 C19.23871094 36.09164062 19.32507813 36.945 19.4140625 37.82421875 C19.48131683 41.84913191 18.9093831 45.8624271 18.46484375 49.86328125 C-2.98515625 50.19328125 -24.43515625 50.52328125 -46.53515625 50.86328125 C-42.24095242 59.84662283 -42.24095242 59.84662283 -34.22265625 64.11328125 C-26.75235839 65.63266387 -20.44259233 65.17394588 -13.53515625 61.86328125 C-13.12265625 61.35474609 -12.71015625 60.84621094 -12.28515625 60.32226562 C-9.73877412 58.1993332 -7.82921821 58.52239254 -4.5546875 58.5703125 C-3.39130859 58.57998047 -2.22792969 58.58964844 -1.02929688 58.59960938 C0.18564453 58.62474609 1.40058594 58.64988281 2.65234375 58.67578125 C4.4921582 58.69608398 4.4921582 58.69608398 6.36914062 58.71679688 C9.40148039 58.75219384 12.43294371 58.80157365 15.46484375 58.86328125 C13.72844794 68.62746495 6.26685292 76.14859591 -1.53515625 81.86328125 C-12.75410726 88.61526861 -24.5729392 90.5544799 -37.48046875 88.36328125 C-49.46245994 85.05790437 -60.24429927 77.54955088 -66.91015625 66.98828125 C-74.0571081 53.86866426 -76.50081407 40.47181559 -72.53515625 25.86328125 C-67.23842769 12.31419107 -59.51233243 2.65645455 -46.53515625 -4.13671875 C-30.91411364 -10.70383404 -14.04222892 -9.73084156 0 0 Z M-41.53515625 19.86328125 C-44.78370825 24.05136544 -47.24113396 27.68719208 -48.53515625 32.86328125 C-34.01515625 32.86328125 -19.49515625 32.86328125 -4.53515625 32.86328125 C-6.9429256 25.63997319 -10.11685207 21.07093603 -16.53515625 16.92578125 C-24.53290972 14.09324356 -34.76437995 14.03289055 -41.53515625 19.86328125 Z "
fill="#000001"
transform="translate(230.53515625,113.13671875)"
/>
<path
d="M0 0 C8.57447749 5.84309152 14.11358466 12.89123251 16.34498596 23.21315002 C17.76548866 31.07007785 18.07600317 38.6376524 18.0078125 46.609375 C18.0049826 47.87976624 18.00215271 49.15015747 17.99923706 50.45904541 C17.99001984 53.79300991 17.97213673 57.12668589 17.9498291 60.46057129 C17.92915776 63.87993876 17.92007983 67.29933724 17.91015625 70.71875 C17.88994668 77.39599242 17.85077729 84.07273959 17.8125 90.75 C9.5625 90.75 1.3125 90.75 -7.1875 90.75 C-7.21328125 86.6559375 -7.2390625 82.561875 -7.265625 78.34375 C-7.29734133 75.06178294 -7.3329937 71.77991067 -7.37129211 68.49801636 C-7.41053529 65.04325431 -7.44297951 61.58874607 -7.45849609 58.13378906 C-7.47665662 54.16178185 -7.52665575 50.19047054 -7.578125 46.21875 C-7.57935364 44.99136108 -7.58058228 43.76397217 -7.58184814 42.49938965 C-7.72108652 34.30409454 -8.6477392 28.59316887 -14.375 22.375 C-19.66961674 19.31588811 -24.82118348 18.24057633 -30.875 19.3125 C-35.26298414 20.53010816 -38.07990999 22.34644903 -41.1875 25.75 C-44.6080539 32.77428779 -44.65828041 39.27662168 -44.69921875 47 C-44.71716995 48.25385498 -44.73512115 49.50770996 -44.75361633 50.79956055 C-44.79841081 54.10715861 -44.83081531 57.41456386 -44.85705566 60.72235107 C-44.88701809 64.10800346 -44.9334938 67.49342657 -44.97851562 70.87890625 C-45.06328184 77.50251827 -45.13016801 84.126096 -45.1875 90.75 C-53.1075 90.75 -61.0275 90.75 -69.1875 90.75 C-69.1875 59.4 -69.1875 28.05 -69.1875 -4.25 C-63.2475 -4.25 -57.3075 -4.25 -51.1875 -4.25 C-48.1875 1.75 -48.1875 1.75 -48.1875 3.75 C-47.25808594 3.26789063 -46.32867188 2.78578125 -45.37109375 2.2890625 C-44.12256245 1.65071567 -42.87385505 1.01271322 -41.625 0.375 C-41.01591797 0.05789062 -40.40683594 -0.25921875 -39.77929688 -0.5859375 C-26.85023219 -7.15308147 -12.6612813 -7.34936443 0 0 Z "
fill="#000000"
transform="translate(791.1875,110.25)"
/>
<path
d="M0 0 C4.18601536 -0.29191181 8.36941211 -0.46845805 12.5625 -0.625 C13.74392578 -0.70878906 14.92535156 -0.79257813 16.14257812 -0.87890625 C24.72935806 -1.1194323 24.72935806 -1.1194323 28.19311523 1.93212891 C30.03828611 4.53561351 31.52925063 7.16961252 33 10 C34.01960317 11.64447996 35.04922298 13.28280122 36.08984375 14.9140625 C37.04246051 16.48231595 37.9917154 18.05261675 38.9375 19.625 C39.43056641 20.43839844 39.92363281 21.25179687 40.43164062 22.08984375 C41.62415593 24.05807289 42.81357134 26.02809819 44 28 C44.42273193 27.41637695 44.84546387 26.83275391 45.28100586 26.23144531 C46.45107242 24.62211416 47.63146002 23.020282 48.81640625 21.421875 C50.59742981 18.83736423 51.78370148 16.23286006 52.96484375 13.328125 C57.40281006 3.28670592 57.40281006 3.28670592 62 0 C70.75687964 -2.25492034 80.12532866 -1.10028245 89 0 C85.87981003 5.75824421 82.59653385 11.34015589 79 16.8125 C78.53940186 17.51882568 78.07880371 18.22515137 77.60424805 18.95288086 C76.60889913 20.47910461 75.61235927 22.0045522 74.61474609 23.52929688 C72.26514092 27.12439883 69.92701096 30.72692821 67.58789062 34.32885742 C65.06045763 38.22045083 62.5301995 42.11020502 60 46 C63.40306137 52.36316974 67.13721115 58.39807057 71.17578125 64.375 C71.74580368 65.22553955 72.31582611 66.0760791 72.90312195 66.95239258 C74.70290551 69.6371903 76.50729294 72.31884655 78.3125 75 C80.13510112 77.710018 81.95665277 80.42071911 83.7754364 83.13330078 C84.90266787 84.81423163 86.03217603 86.49363834 87.16413879 88.17138672 C87.66853989 88.92307129 88.17294098 89.67475586 88.69262695 90.44921875 C89.13943314 91.11268311 89.58623932 91.77614746 90.04658508 92.4597168 C91 94 91 94 91 95 C82.11168702 96.66035691 72.68953858 98.06457553 64 95 C56.85481866 88.86936942 52.57034887 80.18470916 48.47265625 71.84082031 C47.16653361 69.32125085 45.77817636 67.20148849 44 65 C41.77028267 68.49964947 39.54132733 71.99978366 37.3125 75.5 C36.37374023 76.97339844 36.37374023 76.97339844 35.41601562 78.4765625 C34.80048828 79.44335938 34.18496094 80.41015625 33.55078125 81.40625 C32.93050049 82.35435547 32.31021973 83.30246094 31.67114258 84.27929688 C29.9764874 86.89779282 29.9764874 86.89779282 28.9128418 89.48632812 C27.8178343 91.88084368 27.04225998 93.32519045 25 95 C20.36191889 95.97880951 15.90028244 95.75355891 11.1875 95.5 C9.92228516 95.46390625 8.65707031 95.4278125 7.35351562 95.390625 C4.23260256 95.29640876 1.11784192 95.16498197 -2 95 C-0.55695943 90.96889753 1.39235488 87.67935941 3.78125 84.1328125 C4.15146774 83.58056503 4.52168549 83.02831757 4.90312195 82.45933533 C5.69179746 81.28411701 6.48255623 80.11029446 7.27523804 78.93777466 C8.5068351 77.11488335 9.73143502 75.28746813 10.9543457 73.45874023 C14.41540393 68.28896492 17.89290438 63.13232341 21.44921875 58.02734375 C21.92359375 57.33946777 22.39796875 56.6515918 22.88671875 55.94287109 C23.728592 54.72588389 24.58085279 53.51599005 25.4453125 52.31494141 C27.52032691 49.4558125 27.52032691 49.4558125 27.73266602 46.07006836 C26.95346168 43.86851101 25.99325089 42.12232656 24.734375 40.15625 C24.26241699 39.41391113 23.79045898 38.67157227 23.30419922 37.90673828 C22.79131348 37.11251465 22.27842773 36.31829102 21.75 35.5 C21.22293457 34.6735498 20.69586914 33.84709961 20.15283203 32.99560547 C17.25901441 28.46981426 14.32909942 23.96833829 11.3828125 19.4765625 C10.79661133 18.58130859 10.21041016 17.68605469 9.60644531 16.76367188 C8.47237557 15.03538285 7.33386227 13.30999953 6.19042969 11.58789062 C5.67125977 10.79833984 5.15208984 10.00878906 4.6171875 9.1953125 C4.15940918 8.50453613 3.70163086 7.81375977 3.22998047 7.10205078 C1.88751257 4.80775768 0.92956368 2.48697626 0 0 Z "
fill="#000101"
transform="translate(256,106)"
/>
<path
d="M0 0 C7.92 0 15.84 0 24 0 C24 42.9 24 85.8 24 130 C16.08 130 8.16 130 0 130 C0 87.1 0 44.2 0 0 Z "
fill="#000000"
transform="translate(116,71)"
/>
<path
d="M0 0 C8.25 0 16.5 0 25 0 C25 31.35 25 62.7 25 95 C16.75 95 8.5 95 0 95 C0 63.65 0 32.3 0 0 Z "
fill="#000000"
transform="translate(357,106)"
/>
<path
d="M0 0 C7.92 0 15.84 0 24 0 C24 31.35 24 62.7 24 95 C16.08 95 8.16 95 0 95 C0 63.65 0 32.3 0 0 Z "
fill="#000000"
transform="translate(567,106)"
/>
<path
d="M0 0 C1.07689087 -0.02211548 1.07689087 -0.02211548 2.17553711 -0.04467773 C8.81362852 0.08505442 14.16942245 2.36584551 18.8125 7.125 C21.29083075 12.80450796 21.38784991 18.19169162 19.5 24.109375 C15.54970118 32.72322103 9.08443404 41.10114094 1.3125 46.5625 C-2.5 47.3125 -2.5 47.3125 -5.6875 47.5625 C-7.94679642 43.17680696 -7.95493504 40.31538138 -6.6875 35.5625 C-4.48258658 31.66099152 -1.92472682 28.04539627 0.9453125 24.60546875 C2.51495289 22.25997754 2.92725023 20.33629831 3.3125 17.5625 C-11.04040567 16.11108257 -25.46535692 21.57142561 -38.29296875 27.5234375 C-42.60394538 28.84302298 -45.28842845 28.37981384 -49.6875 27.5625 C-49.40009058 26.18660383 -49.10732258 24.81182678 -48.8125 23.4375 C-48.65007813 22.67179687 -48.48765625 21.90609375 -48.3203125 21.1171875 C-48.11148438 20.27414063 -47.90265625 19.43109375 -47.6875 18.5625 C-47.48769531 17.54542969 -47.28789063 16.52835938 -47.08203125 15.48046875 C-45.13320164 11.40266562 -42.28506736 10.4764422 -38.25 9 C-37.4964624 8.71116943 -36.7429248 8.42233887 -35.96655273 8.12475586 C-24.24425586 3.76462589 -12.59167092 0.16673363 0 0 Z "
fill="#5086EF"
transform="translate(582.6875,-0.5625)"
/>
<path
d="M0 0 C0.99 0.495 0.99 0.495 2 1 C0.92598892 3.91517292 0.22189824 5.77810176 -2 8 C-1.67232833 9.33473599 -1.33815548 10.66788148 -1 12 C-1.60171779 15.49019271 -2.84177737 18.19372323 -5 21 C-8.54300967 23.02892247 -12.22446813 23.85889696 -16.1875 24.75 C-17.28940674 25.02602051 -18.39131348 25.30204102 -19.52661133 25.58642578 C-23.0084009 26.43940125 -26.49941998 27.22804228 -30 28 C-31.68029297 28.37946777 -31.68029297 28.37946777 -33.39453125 28.76660156 C-65.00424771 35.81471402 -65.00424771 35.81471402 -71.76953125 32.7421875 C-74.79898287 30.37592581 -75.13904608 28.64237321 -75.85546875 25 C-76.05803961 22.19685722 -75.4138052 20.40346885 -74 18 C-71.31997294 15.31997294 -69.45839118 15.4382228 -65.71875 14.921875 C-64.41405762 14.73367187 -63.10936523 14.54546875 -61.76513672 14.3515625 C-61.06966736 14.25391602 -60.374198 14.15626953 -59.65765381 14.05566406 C-40.25755017 11.30734806 -20.59072147 8.1697598 -2.34375 0.78515625 C-1.5703125 0.52605469 -0.796875 0.26695312 0 0 Z "
fill="#3366E1"
transform="translate(479,193)"
/>
<path
d="M0 0 C1.09362142 3.25170103 0.93111886 4.97353889 -0.375 8.125 C-0.65085937 8.80820312 -0.92671875 9.49140625 -1.2109375 10.1953125 C-1.77237078 11.47938266 -2.37325547 12.74651095 -3 14 C-1.35 14 0.3 14 2 14 C2.495 14.99 2.495 14.99 3 16 C2.34741211 16.32572998 1.69482422 16.65145996 1.02246094 16.98706055 C-16.92026664 25.99456118 -34.22761321 35.69127349 -50.125 48.0234375 C-52.52226698 49.27201405 -53.48148739 48.72407237 -56 48 C-56.66 48.66 -57.32 49.32 -58 50 C-58.66 49.01 -59.32 48.02 -60 47 C-60.66 46.34 -61.32 45.68 -62 45 C-61.54625 44.113125 -61.0925 43.22625 -60.625 42.3125 C-58.99364321 39.20614149 -58.99364321 39.20614149 -58.25 36.5625 C-54.33033286 28.52718237 -45.92083965 24.14691241 -38.5 19.8125 C-37.41517334 19.17046631 -36.33034668 18.52843262 -35.21264648 17.86694336 C-4.72075982 0 -4.72075982 0 0 0 Z "
fill="#3E73E6"
transform="translate(536,13)"
/>
<path
d="M0 0 C1.98 0 3.96 0 6 0 C7.98852418 4.05798447 9.96416266 8.12211149 11.9375 12.1875 C12.50146484 13.33798828 13.06542969 14.48847656 13.64648438 15.67382812 C14.18466797 16.78564453 14.72285156 17.89746094 15.27734375 19.04296875 C15.77484131 20.06414795 16.27233887 21.08532715 16.78491211 22.13745117 C17.91111567 24.79060301 18.55997652 27.16150655 19 30 C19.66 30 20.32 30 21 30 C21.38800781 28.74316406 21.77601562 27.48632812 22.17578125 26.19140625 C24.0571839 20.54719829 26.58246641 15.27763305 29.1875 9.9375 C29.65091797 8.97650391 30.11433594 8.01550781 30.59179688 7.02539062 C31.7230646 4.6812173 32.85919011 2.33954029 34 0 C35.98 0 37.96 0 40 0 C40 13.86 40 27.72 40 42 C37.69 42 35.38 42 33 42 C32.67 35.4 32.34 28.8 32 22 C31.40832031 23.35996094 30.81664063 24.71992188 30.20703125 26.12109375 C29.40983966 27.89367271 28.61160836 29.66578433 27.8125 31.4375 C27.42513672 32.33533203 27.03777344 33.23316406 26.63867188 34.15820312 C26.24873047 35.01220703 25.85878906 35.86621094 25.45703125 36.74609375 C25.10616455 37.53685303 24.75529785 38.3276123 24.39379883 39.14233398 C23 41 23 41 20.34643555 41.76586914 C19.18494995 41.88176392 19.18494995 41.88176392 18 42 C13 32 13 32 8 22 C7.67 28.6 7.34 35.2 7 42 C4.69 42 2.38 42 0 42 C0 28.14 0 14.28 0 0 Z "
fill="#4E4F50"
transform="translate(93,231)"
/>
<path
d="M0 0 C21 0 21 0 27 4 C29.5821952 7.40380276 29.37096305 10.84521379 29 15 C27.5 17.4375 27.5 17.4375 26 19 C26.639375 19.680625 27.27875 20.36125 27.9375 21.0625 C30.38620784 24.55005359 30.84877013 26.76556351 31 31 C29.92871028 35.99935204 26.9661987 38.0860581 23 41 C15.71989011 43.4267033 7.67390962 42 0 42 C0 28.14 0 14.28 0 0 Z M7 6 C7 9.63 7 13.26 7 17 C8.7325 17.061875 10.465 17.12375 12.25 17.1875 C13.22453125 17.22230469 14.1990625 17.25710937 15.203125 17.29296875 C18.4129536 16.95674369 19.71586138 16.24154396 22 14 C22.75 11.5 22.75 11.5 22 9 C18.82700519 5.93277168 15.90846649 5.82447437 11.6875 5.8125 C9.3671875 5.9053125 9.3671875 5.9053125 7 6 Z M7 23 C7 26.96 7 30.92 7 35 C9.10353495 35.0810206 11.20795952 35.13919907 13.3125 35.1875 C14.48425781 35.22230469 15.65601563 35.25710938 16.86328125 35.29296875 C19.95321666 35.26497976 19.95321666 35.26497976 21.89453125 33.67578125 C23.62064064 31.05917019 23.38086549 29.04692394 23 26 C21.95663946 24.19433115 21.95663946 24.19433115 20 23 C16.79861932 22.6363838 16.79861932 22.6363838 13.3125 22.8125 C12.13300781 22.83957031 10.95351563 22.86664063 9.73828125 22.89453125 C8.38283203 22.94673828 8.38283203 22.94673828 7 23 Z "
fill="#4E4F50"
transform="translate(11,231)"
/>
<path
d="M0 0 C1.671549 0.30791692 3.33805547 0.64386903 5 1 C8.08411363 1.09980224 8.08411363 1.09980224 11.375 0.3125 C15.56469938 -0.04868098 16.56069824 0.86205567 20 3 C21.91665365 2.2516467 21.91665365 2.2516467 24 1 C27.96145244 -0.01125685 30.97170981 -0.41131608 34.8125 1.125 C37.99408334 3.85207144 39.80558393 6.47073295 40.34057617 10.67895508 C40.3170105 12.08504028 40.3170105 12.08504028 40.29296875 13.51953125 C40.2784668 15.0519043 40.2784668 15.0519043 40.26367188 16.61523438 C40.23853516 17.67033203 40.21339844 18.72542969 40.1875 19.8125 C40.16719727 21.42415039 40.16719727 21.42415039 40.14648438 23.06835938 C40.11122577 25.71275455 40.06194366 28.35611748 40 31 C37.69 31 35.38 31 33 31 C32.97494385 30.3387915 32.9498877 29.67758301 32.92407227 28.99633789 C32.80846898 26.01817695 32.68558246 23.0403608 32.5625 20.0625 C32.52318359 19.02158203 32.48386719 17.98066406 32.44335938 16.90820312 C32.40146484 15.91884766 32.35957031 14.92949219 32.31640625 13.91015625 C32.26141968 12.53549194 32.26141968 12.53549194 32.20532227 11.13305664 C32.22996136 9.0179272 32.22996136 9.0179272 31 8 C28.54207971 7.66656449 28.54207971 7.66656449 26 8 C23.91254955 11.13117567 23.72346004 12.06946224 23.5859375 15.66796875 C23.54726563 16.56064453 23.50859375 17.45332031 23.46875 18.37304688 C23.42234375 19.76620117 23.42234375 19.76620117 23.375 21.1875 C23.33632813 22.12787109 23.29765625 23.06824219 23.2578125 24.03710938 C23.16356813 26.3578771 23.07795975 28.67863748 23 31 C20.69 31 18.38 31 16 31 C15.97494385 30.3387915 15.9498877 29.67758301 15.92407227 28.99633789 C15.80846898 26.01817695 15.68558246 23.0403608 15.5625 20.0625 C15.52318359 19.02158203 15.48386719 17.98066406 15.44335938 16.90820312 C15.40146484 15.91884766 15.35957031 14.92949219 15.31640625 13.91015625 C15.27974854 12.99371338 15.24309082 12.07727051 15.20532227 11.13305664 C15.22996136 9.0179272 15.22996136 9.0179272 14 8 C11.54190002 7.7499227 11.54190002 7.7499227 9 8 C6.51942372 10.48057628 6.70980995 11.36192464 6.5859375 14.7890625 C6.54726563 15.73007812 6.50859375 16.67109375 6.46875 17.640625 C6.4378125 18.62546875 6.406875 19.6103125 6.375 20.625 C6.31699219 22.11386719 6.31699219 22.11386719 6.2578125 23.6328125 C6.1633686 26.08835385 6.07780125 28.5438841 6 31 C3.69 31 1.38 31 -1 31 C-1.02465622 26.74585377 -1.04283899 22.49174502 -1.05493164 18.23754883 C-1.05997101 16.78929927 -1.06680253 15.34105483 -1.07543945 13.89282227 C-1.08752247 11.81525412 -1.09323211 9.73775303 -1.09765625 7.66015625 C-1.10289307 6.40855713 -1.10812988 5.15695801 -1.11352539 3.86743164 C-1 1 -1 1 0 0 Z "
fill="#4D4E4F"
transform="translate(317,242)"
/>
<path
d="M0 0 C3.58899446 4.0112291 5.15739047 7.52874297 5.0625 12.9375 C3.57976299 18.37420235 1.76120382 21.3995708 -3.125 24.3125 C-7.47477315 25.54493573 -10.57731377 25.80465627 -14.875 24.375 C-18.07803177 22.53661532 -20.31344255 20.25395949 -22.3125 17.125 C-23.26875653 12.44996806 -23.2025218 7.79426752 -20.86328125 3.53125 C-15.36822837 -3.54124708 -7.59322622 -4.29182352 0 0 Z "
fill="#020203"
transform="translate(378.875,69.625)"
/>
<path
d="M0 0 C4.35151368 3.2163362 6.50706325 6.81863128 8 12 C7.80242028 16.50997195 6.50882742 19.36740375 3.6875 22.875 C-0.43351234 26.13347487 -2.62615835 27.02180701 -7.9375 26.9375 C-13.16351281 26.10766054 -16.19239093 23.38275741 -19.375 19.1875 C-20.84642784 14.03750258 -20.70719826 10.33862529 -18.25 5.6875 C-12.95469557 -0.63744696 -7.91849843 -2.00750664 0 0 Z "
fill="#010102"
transform="translate(586,68)"
/>
<path
d="M0 0 C3.96759136 2.27925461 5.93677408 4.87354817 8 9 C8 11.97 8 14.94 8 18 C1.4 18.33 -5.2 18.66 -12 19 C-8.68698041 22.31301959 -7.55956692 22.81389523 -3 23 C-1.64664105 22.02727325 -0.31337396 21.0260734 1 20 C4.25 19.8125 4.25 19.8125 7 20 C7.33 20.66 7.66 21.32 8 22 C7.07038578 23.15224028 6.1309875 24.29659176 5.1875 25.4375 C4.66542969 26.07558594 4.14335937 26.71367187 3.60546875 27.37109375 C1.00529874 30.00922244 -1.77191294 30.19631493 -5.3125 30.3125 C-9.92402889 30.26001105 -12.44850983 29.04413444 -16 26 C-19.47687854 22.043552 -20.37077563 18.47686697 -20.2734375 13.19140625 C-19.70000871 8.59578409 -17.86680784 4.76524575 -14.4921875 1.57421875 C-9.83869175 -1.57500745 -5.28721486 -1.67268252 0 0 Z M-11.4375 8.4375 C-13.0867679 10.6420824 -13.0867679 10.6420824 -13 12 C-8.05 12 -3.1 12 2 12 C0.23148964 8.81925835 0.23148964 8.81925835 -2 6 C-7.31203422 5.36068049 -7.31203422 5.36068049 -11.4375 8.4375 Z "
fill="#4E4E51"
transform="translate(218,243)"
/>
<path
d="M0 0 C3.24712869 3.34263247 4.97960252 6.45459303 6 11 C5.71256797 13.00711084 5.38485559 15.00927217 5 17 C1.98017116 17.50682442 -1.04062817 18.00563335 -4.0625 18.5 C-4.91005859 18.64308594 -5.75761719 18.78617188 -6.63085938 18.93359375 C-18.55904691 20.86789443 -18.55904691 20.86789443 -23.8125 19 C-26.94720256 16.13398623 -27.69765754 13.18376596 -28 9 C-27.14997422 5.74156784 -26.37459679 4.37459679 -24 2 C-22.00048828 1.48168945 -22.00048828 1.48168945 -19.5703125 1.11328125 C-18.25353516 0.9131543 -18.25353516 0.9131543 -16.91015625 0.70898438 C-15.53150391 0.51272461 -15.53150391 0.51272461 -14.125 0.3125 C-13.21363281 0.17005859 -12.30226563 0.02761719 -11.36328125 -0.11914062 C-3.51282302 -1.2742959 -3.51282302 -1.2742959 0 0 Z "
fill="#2C5FDD"
transform="translate(431,207)"
/>
<path
d="M0 0 C2.31 0 4.62 0 7 0 C7.33 6.93 7.66 13.86 8 21 C10.041875 18.525 10.041875 18.525 12.125 16 C14.4453125 13.1875 14.4453125 13.1875 17 11 C20.3046875 10.6875 20.3046875 10.6875 23 11 C23 15.17561407 21.16647522 16.53957787 18.5 19.6875 C17.6646875 20.68136719 16.829375 21.67523438 15.96875 22.69921875 C15.3190625 23.45847656 14.669375 24.21773437 14 25 C16.09710919 29.86252791 19.705049 33.542534 23.1015625 37.5390625 C25 40 25 40 25 42 C20.07532197 42.87940679 20.07532197 42.87940679 17 42 C13.86488105 38.98318743 11.45380111 35.57973479 9 32 C8.67 31.67 8.34 31.34 8 31 C7.67 34.63 7.34 38.26 7 42 C4.69 42 2.38 42 0 42 C0 28.14 0 14.28 0 0 Z "
fill="#4E4E50"
transform="translate(172,231)"
/>
<path
d="M0 0 C2.81992717 1.82120296 4.50345478 3.00690956 6 6 C6.08471364 7.81341842 6.10721083 9.62994161 6.09765625 11.4453125 C6.09443359 12.52167969 6.09121094 13.59804688 6.08789062 14.70703125 C6.07951172 15.83496094 6.07113281 16.96289062 6.0625 18.125 C6.05798828 19.26066406 6.05347656 20.39632813 6.04882812 21.56640625 C6.03701615 24.37765638 6.02054507 27.1888023 6 30 C4.35 30 2.7 30 1 30 C1 29.34 1 28.68 1 28 C0.360625 28.33 -0.27875 28.66 -0.9375 29 C-5.0293871 30.3361264 -8.73481019 30.64905062 -13 30 C-15.87029869 28.20606332 -17.49131638 27.01736724 -19 24 C-19.41465022 20.268148 -19.297997 18.48562474 -17.3125 15.25 C-13.4630496 11.5045888 -10.4311505 10.89965666 -5.1875 10.875 C-3.79140897 10.90688462 -2.39538254 10.94527912 -1 11 C-1.33 9.68 -1.66 8.36 -2 7 C-4.64 6.67 -7.28 6.34 -10 6 C-10.33 6.99 -10.66 7.98 -11 9 C-13.31 9 -15.62 9 -18 9 C-17.70540991 5.46491897 -17.25118587 4.23796556 -14.625 1.75 C-9.69564355 -1.53623763 -5.59726517 -1.29620878 0 0 Z M-12 19 C-12 20.32 -12 21.64 -12 23 C-7.17026575 24.1203061 -7.17026575 24.1203061 -2.5625 22.8125 C-0.56470692 20.89389731 -0.56470692 20.89389731 -1 17 C-6.7974423 16.75571657 -6.7974423 16.75571657 -12 19 Z "
fill="#4E4E4F"
transform="translate(159,243)"
/>
<path
d="M0 0 C8.91 0 17.82 0 27 0 C27 1.98 27 3.96 27 6 C20.4 6 13.8 6 7 6 C7 9.63 7 13.26 7 17 C12.28 17 17.56 17 23 17 C23 19.31 23 21.62 23 24 C17.72 24 12.44 24 7 24 C7 29.94 7 35.88 7 42 C4.69 42 2.38 42 0 42 C0 28.14 0 14.28 0 0 Z "
fill="#4E4E4E"
transform="translate(233,231)"
/>
<path
d="M0 0 C-0.66 0 -1.32 0 -2 0 C-1.34 1.32 -0.68 2.64 0 4 C-0.99 4 -1.98 4 -3 4 C-3.66 4.99 -4.32 5.98 -5 7 C-5 5.68 -5 4.36 -5 3 C-5.99 3 -6.98 3 -8 3 C-8 3.99 -8 4.98 -8 6 C-8.66 6 -9.32 6 -10 6 C-9.67 6.66 -9.34 7.32 -9 8 C-8.34 7.67 -7.68 7.34 -7 7 C-6.731875 8.11375 -6.46375 9.2275 -6.1875 10.375 C-5.34190981 14.21840951 -5.34190981 14.21840951 -2 16 C-3.63195312 16.45439453 -3.63195312 16.45439453 -5.296875 16.91796875 C-6.78176964 17.33931883 -8.26610695 17.76263601 -9.75 18.1875 C-10.52335693 18.40873535 -11.29671387 18.6299707 -12.09350586 18.85791016 C-16.75883445 20.23009407 -21.13228574 21.84472209 -25.5625 23.875 C-30.60360915 26.10699453 -33.67139947 26.33215013 -39 25 C-38.71259058 23.62410383 -38.41982258 22.24932678 -38.125 20.875 C-37.96257813 20.10929687 -37.80015625 19.34359375 -37.6328125 18.5546875 C-37.42398438 17.71164063 -37.21515625 16.86859375 -37 16 C-36.80664062 14.98421875 -36.61328125 13.9684375 -36.4140625 12.921875 C-34.40603108 8.77268301 -31.366162 7.86509463 -27.25 6.375 C-26.49372314 6.08431641 -25.73744629 5.79363281 -24.95825195 5.49414062 C-5.24117229 -1.92895445 -5.24117229 -1.92895445 0 0 Z "
fill="#497EEC"
transform="translate(572,2)"
/>
<path
d="M0 0 C3.89968373 2.24727537 6.38791743 4.85234517 8.5 8.8125 C9.39949986 14.54681163 8.9185508 19.16289841 6.3125 24.375 C2.61022706 28.57758009 -0.39545437 29.82171715 -5.9375 30.4375 C-10.57034679 30.23337074 -13.28838366 28.76551806 -17 26 C-20.82016805 20.94751968 -20.82477983 15.09068185 -20 9 C-15.67935621 0.35871242 -9.18554346 -2.46775794 0 0 Z M-11.3125 7.625 C-13.41220402 10.58013899 -13.92746152 12.37307621 -14 16 C-12.8135525 19.24711946 -11.88563888 21.32101019 -9.125 23.4375 C-6.35625147 24.17040402 -4.70968737 23.90322912 -2 23 C-0.10649669 22.02478463 -0.10649669 22.02478463 1 20 C2.28566203 14.3916343 2.28566203 14.3916343 0.6875 9.0625 C-1.50685607 6.38050925 -2.42259318 6.06276161 -5.875 5.6875 C-9.04045443 5.74592782 -9.04045443 5.74592782 -11.3125 7.625 Z "
fill="#4D4E50"
transform="translate(282,243)"
/>
<path
d="M0 0 C2.8125 -0.3125 2.8125 -0.3125 6 0 C8.63900018 3.60596208 10.08703713 7.57957308 11.625 11.75 C12.82328536 15.66026569 12.82328536 15.66026569 15 19 C15.20681396 18.45996338 15.41362793 17.91992676 15.62670898 17.36352539 C16.56088784 14.92878405 17.49913747 12.49563181 18.4375 10.0625 C18.76298828 9.21236328 19.08847656 8.36222656 19.42382812 7.48632812 C19.73642578 6.67744141 20.04902344 5.86855469 20.37109375 5.03515625 C20.65911865 4.2862915 20.94714355 3.53742676 21.24389648 2.76586914 C22 1 22 1 23 0 C24.99958364 -0.04080783 27.00045254 -0.04254356 29 0 C28.10958777 6.74260968 25.5374146 12.73508408 23.01733398 18.99536133 C22.19014076 21.05592179 21.37878213 23.12224868 20.56835938 25.18945312 C20.04001221 26.51340023 19.51074568 27.83698089 18.98046875 29.16015625 C18.50504639 30.35261963 18.02962402 31.54508301 17.53979492 32.77368164 C15.99805603 36.00407319 14.48315732 38.42567419 12 41 C8.25 41.8125 8.25 41.8125 5 42 C5 40.02 5 38.04 5 36 C5.639375 35.79375 6.27875 35.5875 6.9375 35.375 C9.27950372 34.13729209 9.27950372 34.13729209 9.75952148 31.28588867 C10.03512649 27.52003302 9.38072457 25.50668664 7.91015625 22.05078125 C7.45576172 20.95572266 7.00136719 19.86066406 6.53320312 18.73242188 C5.80520508 17.03956055 5.80520508 17.03956055 5.0625 15.3125 C4.11151469 13.06043439 3.16469247 10.80660489 2.22265625 8.55078125 C1.79734619 7.55731689 1.37203613 6.56385254 0.93383789 5.5402832 C0 3 0 3 0 0 Z "
fill="#4C4E52"
transform="translate(44,242)"
/>
<path
d="M0 0 C0.66 0.33 1.32 0.66 2 1 C1.690625 1.763125 1.38125 2.52625 1.0625 3.3125 C0.32106407 5.18789677 -0.36228217 7.08684652 -1 9 C-1.66 9.66 -2.32 10.32 -3 11 C-2.01 11.99 -1.02 12.98 0 14 C-0.99 15.32 -1.98 16.64 -3 18 C-2.01 17.34 -1.02 16.68 0 16 C0 16.66 0 17.32 0 18 C0.66 18.33 1.32 18.66 2 19 C-22.83870968 32 -22.83870968 32 -30 32 C-29.67 30.906875 -29.34 29.81375 -29 28.6875 C-27.86913351 25.15421116 -27.86913351 25.15421116 -28 22 C-27.6937566 20.66018514 -27.36548445 19.32488113 -27 18 C-26.34 18 -25.68 18 -25 18 C-24.82855469 17.09507812 -24.65710938 16.19015625 -24.48046875 15.2578125 C-22.4216225 10.72726429 -19.72589232 9.80909258 -15.3125 7.875 C-13.91184438 7.22854356 -12.51209634 6.58011693 -11.11328125 5.9296875 C-10.08581787 5.46320801 -10.08581787 5.46320801 -9.03759766 4.98730469 C-6.98391629 3.99220674 -5.05827805 2.87438627 -3.10546875 1.6953125 C-1.56826172 0.85613281 -1.56826172 0.85613281 0 0 Z "
fill="#3B6FE3"
transform="translate(504,181)"
/>
<path
d="M0 0 C2.97964239 2.08574968 3.79654283 3.25399039 4.75 6.75 C4.87375 7.86375 4.87375 7.86375 5 9 C2.69 9 0.38 9 -2 9 C-2.33 8.34 -2.66 7.68 -3 7 C-4.98 7 -6.96 7 -9 7 C-9.33 7.99 -9.66 8.98 -10 10 C-9.25234375 10.17015625 -8.5046875 10.3403125 -7.734375 10.515625 C-6.74953125 10.75796875 -5.7646875 11.0003125 -4.75 11.25 C-3.28820312 11.59804687 -3.28820312 11.59804687 -1.796875 11.953125 C1.38910721 13.14564348 2.91361635 14.32864898 5 17 C5.72771233 19.73962288 5.57971577 22.23214139 5 25 C3.12984906 27.43119623 1.71861655 28.64069173 -1 30 C-5.77080489 30.51507805 -9.74036502 30.64267091 -14.0625 28.4375 C-16.53572471 25.32602376 -16.77407627 22.91601134 -17 19 C-14.1875 18.75 -14.1875 18.75 -11 19 C-9.125 21 -9.125 21 -8 23 C-6.02 22.67 -4.04 22.34 -2 22 C-1.67 21.01 -1.34 20.02 -1 19 C-2.10408203 18.76216797 -2.10408203 18.76216797 -3.23046875 18.51953125 C-13.82719547 15.98583569 -13.82719547 15.98583569 -17 11 C-17.07155548 6.9213378 -16.6613188 4.83767048 -14.125 1.625 C-9.65320123 -1.79461082 -5.2278586 -1.21951855 0 0 Z "
fill="#4D4E51"
transform="translate(380,243)"
/>
<path
d="M0 0 C1.67293936 0.30027117 3.33985384 0.63557767 5 1 C7.08896425 1 9.05372935 0.76726073 11.125 0.5 C13.043125 0.2525 13.043125 0.2525 15 0 C15 2.31 15 4.62 15 7 C13.865625 7.28875 12.73125 7.5775 11.5625 7.875 C10.386875 8.24625 9.21125 8.6175 8 9 C6.82530556 11.34938888 6.79965111 12.95073205 6.68359375 15.5703125 C6.64169922 16.46621094 6.59980469 17.36210937 6.55664062 18.28515625 C6.51732422 19.22230469 6.47800781 20.15945313 6.4375 21.125 C6.37272461 22.54232422 6.37272461 22.54232422 6.30664062 23.98828125 C6.20040928 26.32537092 6.09836824 28.6625683 6 31 C3.69 31 1.38 31 -1 31 C-1.02465622 26.74585377 -1.04283899 22.49174502 -1.05493164 18.23754883 C-1.05997101 16.78929927 -1.06680253 15.34105483 -1.07543945 13.89282227 C-1.08752247 11.81525412 -1.09323211 9.73775303 -1.09765625 7.66015625 C-1.10289307 6.40855713 -1.10812988 5.15695801 -1.11352539 3.86743164 C-1 1 -1 1 0 0 Z "
fill="#4E4F50"
transform="translate(297,242)"
/>
<path
d="M0 0 C0.66 0.33 1.32 0.66 2 1 C1.50072998 1.4940332 1.00145996 1.98806641 0.48706055 2.49707031 C-1.78210327 4.74539676 -4.04733095 6.99764921 -6.3125 9.25 C-7.09818359 10.02730469 -7.88386719 10.80460937 -8.69335938 11.60546875 C-9.45068359 12.35957031 -10.20800781 13.11367187 -10.98828125 13.890625 C-11.68477783 14.58188477 -12.38127441 15.27314453 -13.09887695 15.98535156 C-14.90379187 17.89804681 -16.46941668 19.86430235 -18 22 C-18.66 21.67 -19.32 21.34 -20 21 C-17.67614385 18.32495016 -15.34033831 15.66064009 -13 13 C-12.23171875 12.12472656 -11.4634375 11.24945313 -10.671875 10.34765625 C-9.50398438 9.03087891 -9.50398438 9.03087891 -8.3125 7.6875 C-7.58675781 6.86636719 -6.86101562 6.04523438 -6.11328125 5.19921875 C-4.18925315 3.19694921 -2.27230025 1.5849679 0 0 Z "
fill="#3563D2"
transform="translate(453,66)"
/>
<path
d="M0 0 C-0.66 0 -1.32 0 -2 0 C-1.34 1.32 -0.68 2.64 0 4 C-0.99 4 -1.98 4 -3 4 C-3.33 3.34 -3.66 2.68 -4 2 C-6.01669827 0.86649466 -6.01669827 0.86649466 -8 0 C-4.94736336 -0.98120464 -3.05263664 -0.98120464 0 0 Z "
fill="#4577E1"
transform="translate(572,2)"
/>
</svg>
);
export default Icon;
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Implement isDark prop for dark mode support.

The SVG component does not use the isDark prop, which is required by the coding guidelines to support both light and dark mode. Currently, the component uses hardcoded fill colors that won't adapt to the theme.

As per coding guidelines

Apply this pattern to support theme switching:

-const Icon = (props) => (
+const Icon = ({ isDark, ...props }) => (
   <svg
     version="1.1"
     xmlns="http://www.w3.org/2000/svg"
     viewBox="0 0 820 297"
     {...props}
   >
     <path
       d="M0 0 C0.71816895..."
-      fill="#376AE2"
+      fill={isDark ? "#5086EF" : "#376AE2"}
       transform="translate(582.6875,-0.5625)"
     />
+    {/* Update other path fill colors based on isDark prop */}

Note: You'll need to define appropriate color values for dark mode for all path elements with fill colors.

🤖 Prompt for AI Agents
In src/frontend/src/icons/Flexisign/flexisign.jsx lines 1-160, the Icon
component ignores the isDark prop and uses hardcoded fill colors; update the
component signature to accept an isDark boolean (with a sensible default), and
replace each hardcoded fill attribute with a conditional expression that selects
the light-mode color or the corresponding dark-mode color (e.g. fill={isDark ?
'<darkColor>' : '<lightColor>'}); ensure all path fill attributes are updated
consistently and preserve existing transforms/paths.

Comment on lines +1 to +98
const Icon = (props) => (
<svg
version="1.1"
xmlns="http://www.w3.org/2000/svg"
width="20"
height="20"
viewBox="0 0 280 280"
preserveAspectRatio="xMidYMid meet"
{...props}
>
<path
d="M0 0 C0.69931641 -0.01160156 1.39863281 -0.02320312 2.11914062 -0.03515625 C8.14423147 -0.00133909 12.10151392 1.58564497 16.7421875 5.56640625 C17.50789063 6.34886719 18.27359375 7.13132812 19.0625 7.9375 C20.23425781 9.11505859 20.23425781 9.11505859 21.4296875 10.31640625 C23.1875 12.375 23.1875 12.375 23.1875 14.375 C23.8475 14.375 24.5075 14.375 25.1875 14.375 C26.84375 15.984375 26.84375 15.984375 28.6875 18.125 C29.2959375 18.82109375 29.904375 19.5171875 30.53125 20.234375 C32.06726963 22.21960792 33.1598966 24.09372045 34.1875 26.375 C34.8475 26.375 35.5075 26.375 36.1875 26.375 C37.64409977 27.98882948 39.02798951 29.66863216 40.375 31.375 C44.86988722 36.98819784 49.36719445 42.55954034 54.4609375 47.64453125 C57.73644762 50.92473407 60.90272695 54.29622304 64.0625 57.6875 C64.68455322 58.35467041 65.30660645 59.02184082 65.94750977 59.70922852 C70.11514988 64.19177887 74.20241359 68.7291212 78.1875 73.375 C79.49871022 74.87612758 80.81120866 76.37613091 82.125 77.875 C83.14583333 79.04166667 84.16666667 80.20833333 85.1875 81.375 C89.2317928 79.80274566 91.69323014 76.92327288 94.5 73.75 C94.98782959 73.20802979 95.47565918 72.66605957 95.97827148 72.10766602 C99.13832488 68.5877191 102.26031596 65.03415431 105.35546875 61.45703125 C108.55960975 57.81565139 111.8607047 54.26116167 115.1484375 50.6953125 C117.20327328 48.55553118 117.20327328 48.55553118 118.1875 46.375 C118.8475 46.375 119.5075 46.375 120.1875 46.375 C120.45554443 45.78477051 120.72358887 45.19454102 120.99975586 44.58642578 C122.19698994 42.35733096 123.45001195 40.81625218 125.19140625 38.9921875 C126.05475586 38.07759766 126.05475586 38.07759766 126.93554688 37.14453125 C127.53431641 36.51933594 128.13308594 35.89414063 128.75 35.25 C129.94082327 33.99931717 131.12972111 32.74679738 132.31640625 31.4921875 C132.84306885 30.94159668 133.36973145 30.39100586 133.91235352 29.82373047 C135.28987804 28.38295511 135.28987804 28.38295511 136.1875 26.375 C136.8475 26.375 137.5075 26.375 138.1875 26.375 C138.4453125 25.80265625 138.703125 25.2303125 138.96875 24.640625 C140.30115942 22.16371005 141.83806118 20.2408834 143.6875 18.125 C144.2959375 17.41859375 144.904375 16.7121875 145.53125 15.984375 C147.1875 14.375 147.1875 14.375 149.1875 14.375 C149.56455078 13.51261719 149.56455078 13.51261719 149.94921875 12.6328125 C151.34919681 10.08017112 152.94909549 8.31266878 155 6.25 C155.99966797 5.22519531 155.99966797 5.22519531 157.01953125 4.1796875 C161.73356735 0.25557096 166.36141309 0.03540033 172.3125 0.0625 C173.38564453 0.03833008 173.38564453 0.03833008 174.48046875 0.01367188 C179.67213534 0.00881985 179.67213534 0.00881985 182.1171875 1.74609375 C183.66322623 4.09900671 184.1875 5.5333493 184.1875 8.375 C182.4375 11.125 182.4375 11.125 179.1875 13.375 C176.68359375 13.6640625 176.68359375 13.6640625 173.875 13.75 C168.36496358 14.02365282 165.86239547 15.51649321 162.00390625 19.3671875 C161.40449219 20.02976562 160.80507812 20.69234375 160.1875 21.375 C159.63964844 21.97570312 159.09179688 22.57640625 158.52734375 23.1953125 C157.40110397 24.46799008 156.28960846 25.75383246 155.19140625 27.05078125 C152.16262607 30.56369394 148.99419532 33.94693665 145.83081055 37.33862305 C143.20578615 40.13738575 143.20578615 40.13738575 141.1875 43.375 C140.5275 43.375 139.8675 43.375 139.1875 43.375 C138.9296875 43.94734375 138.671875 44.5196875 138.40625 45.109375 C137.07384058 47.58628995 135.53693882 49.5091166 133.6875 51.625 C133.0790625 52.33140625 132.470625 53.0378125 131.84375 53.765625 C130.1875 55.375 130.1875 55.375 128.1875 55.375 C127.91945557 55.96522949 127.65141113 56.55545898 127.37524414 57.16357422 C126.17801006 59.39266904 124.92498805 60.93374782 123.18359375 62.7578125 C122.32024414 63.67240234 122.32024414 63.67240234 121.43945312 64.60546875 C120.84068359 65.23066406 120.24191406 65.85585937 119.625 66.5 C118.43417673 67.75068283 117.24527889 69.00320262 116.05859375 70.2578125 C115.53193115 70.80840332 115.00526855 71.35899414 114.46264648 71.92626953 C113.08512196 73.36704489 113.08512196 73.36704489 112.1875 75.375 C111.5275 75.375 110.8675 75.375 110.1875 75.375 C109.92179199 75.96071777 109.65608398 76.54643555 109.38232422 77.14990234 C107.33617538 80.96040511 104.25971121 83.86671232 101.3125 87 C100.68730469 87.680625 100.06210938 88.36125 99.41796875 89.0625 C98.50337891 90.04089844 98.50337891 90.04089844 97.5703125 91.0390625 C97.01746582 91.63154785 96.46461914 92.2240332 95.89501953 92.83447266 C92.29126355 96.0857881 89.21043914 96.62094198 84.3828125 96.8359375 C77.75506201 95.44434576 73.18047396 89.51008853 68.8125 84.75 C68.17183594 84.069375 67.53117187 83.38875 66.87109375 82.6875 C62.1875 77.63441165 62.1875 77.63441165 62.1875 75.375 C61.5275 75.375 60.8675 75.375 60.1875 75.375 C58.73347658 73.7373728 57.34901322 72.03765804 56 70.3125 C52.68470572 66.14960622 49.30216034 62.33168045 45.40234375 58.71484375 C44.1875 57.375 44.1875 57.375 44.1875 55.375 C43.5275 55.375 42.8675 55.375 42.1875 55.375 C40.53125 53.765625 40.53125 53.765625 38.6875 51.625 C38.0790625 50.92890625 37.470625 50.2328125 36.84375 49.515625 C35.30773037 47.53039208 34.2151034 45.65627955 33.1875 43.375 C32.5275 43.375 31.8675 43.375 31.1875 43.375 C29.73347658 41.7373728 28.34901322 40.03765804 27 38.3125 C23.68470572 34.14960622 20.30216034 30.33168045 16.40234375 26.71484375 C15.1875 25.375 15.1875 25.375 15.1875 23.375 C14.5275 23.375 13.8675 23.375 13.1875 23.375 C11.53125 21.66015625 11.53125 21.66015625 9.6875 19.4375 C7.29823001 16.45454821 7.29823001 16.45454821 4.1875 14.375 C2.41767834 14.27240164 0.64652191 14.19212126 -1.125 14.125 C-5.17516047 13.78438204 -6.62371315 13.50569859 -10.0625 11.125 C-11.8125 8.375 -11.8125 8.375 -11.8125 5.75 C-9.35478606 -0.08707061 -5.91761491 -0.09657032 0 0 Z "
fill="#1A1D20"
transform="translate(53.8125,87.625)"
/>
<path
d="M0 0 C4.07821252 2.03910626 5.83516013 3.75849603 8.8125 7.125 C9.6890625 8.10855469 10.565625 9.09210938 11.46875 10.10546875 C13.59652255 12.53861606 15.70671725 14.9853714 17.8125 17.4375 C22.2375101 22.90132173 22.2375101 22.90132173 28.578125 25.28125 C29.54234375 25.3328125 30.5065625 25.384375 31.5 25.4375 C35.5561979 25.67319799 36.78878181 25.85377202 40.25 28.25 C42 31 42 31 42 33.625 C40.88372026 36.27616439 40.33871565 37.33016651 38 39 C35.29997644 39.30032977 32.88149723 39.41896369 30.1875 39.375 C29.48818359 39.38660156 28.78886719 39.39820313 28.06835938 39.41015625 C22.04326853 39.37633909 18.08598608 37.78935503 13.4453125 33.80859375 C12.67960937 33.02613281 11.91390625 32.24367187 11.125 31.4375 C10.34382813 30.65246094 9.56265625 29.86742187 8.7578125 29.05859375 C7 27 7 27 7 25 C6.34 25 5.68 25 5 25 C3.34375 23.390625 3.34375 23.390625 1.5 21.25 C0.8915625 20.55390625 0.283125 19.8578125 -0.34375 19.140625 C-1.87976963 17.15539208 -2.9723966 15.28127955 -4 13 C-4.66 13 -5.32 13 -6 13 C-6.66 11.68 -7.32 10.36 -8 9 C-5.36 6.03 -2.72 3.06 0 0 Z "
fill="#1A1D20"
transform="translate(196,153)"
/>
<path
d="M0 0 C2.04119788 1.61594832 4.04072937 3.2856382 6 5 C6 5.66 6 6.32 6 7 C6.66 7 7.32 7 8 7 C8.8359375 8.6171875 8.8359375 8.6171875 9 11 C7.27262966 13.23786466 5.60625407 15.13891361 3.625 17.125 C-0.11348286 20.74496191 -0.11348286 20.74496191 -3 25 C-3.66 25 -4.32 25 -5 25 C-5.37705078 25.86238281 -5.37705078 25.86238281 -5.76171875 26.7421875 C-7.16169681 29.29482888 -8.76159549 31.06233122 -10.8125 33.125 C-11.47894531 33.80820313 -12.14539063 34.49140625 -12.83203125 35.1953125 C-17.54606735 39.11942904 -22.17391309 39.33959967 -28.125 39.3125 C-29.19814453 39.33666992 -29.19814453 39.33666992 -30.29296875 39.36132812 C-35.48463534 39.36618015 -35.48463534 39.36618015 -37.9296875 37.62890625 C-39.47572623 35.27599329 -40 33.8416507 -40 31 C-38.25 28.25 -38.25 28.25 -35 26 C-32.49609375 25.7109375 -32.49609375 25.7109375 -29.6875 25.625 C-24.03555739 25.38790904 -21.43987597 23.58102161 -17.4609375 19.69140625 C-15.92297984 18.05113644 -15.92297984 18.05113644 -15 16 C-14.34 16 -13.68 16 -13 16 C-12.78601563 15.46890625 -12.57203125 14.9378125 -12.3515625 14.390625 C-10.48655451 11.09182474 -7.95775758 8.49008292 -5.375 5.75 C-4.859375 5.19570312 -4.34375 4.64140625 -3.8125 4.0703125 C-2.54574965 2.7097288 -1.27342185 1.35434163 0 0 Z "
fill="#1B1E21"
transform="translate(82,153)"
/>
<path
d="M0 0 C0 3.54404336 -0.60989485 4.10267905 -2.875 6.6875 C-3.40867188 7.31011719 -3.94234375 7.93273437 -4.4921875 8.57421875 C-6 10 -6 10 -8 10 C-8.25523437 10.57234375 -8.51046875 11.1446875 -8.7734375 11.734375 C-10.13087159 14.24173733 -11.71974104 16.1330456 -13.625 18.25 C-14.25664062 18.95640625 -14.88828125 19.6628125 -15.5390625 20.390625 C-16.02117187 20.92171875 -16.50328125 21.4528125 -17 22 C-17.66 21.67 -18.32 21.34 -19 21 C-19 20.34 -19 19.68 -19 19 C-18.34 19 -17.68 19 -17 19 C-17 18.01 -17 17.02 -17 16 C-15.35178756 14.96986723 -13.68496298 13.96885372 -12 13 C-12 12.34 -12 11.68 -12 11 C-11.34 11 -10.68 11 -10 11 C-10 10.34 -10 9.68 -10 9 C-9.34 8.34 -8.68 7.68 -8 7 C-8 6.01 -8 5.02 -8 4 C-7.34 4 -6.68 4 -6 4 C-6 3.34 -6 2.68 -6 2 C-4.02 1.34 -2.04 0.68 0 0 Z "
fill="#141618"
transform="translate(201,121)"
/>
<path
d="M0 0 C0.99 0 1.98 0 3 0 C3.78260048 2.81736172 4.19511109 4.45969238 3.1875 7.25 C2 9 2 9 0 10 C-2.67911399 10.12413998 -5.32083099 10.18515807 -8 10.1875 C-8.73734375 10.19974609 -9.4746875 10.21199219 -10.234375 10.22460938 C-12.15770058 10.22987395 -14.08054263 10.12203447 -16 10 C-16.66 9.34 -17.32 8.68 -18 8 C-12.39 8.33 -6.78 8.66 -1 9 C-0.67 6.03 -0.34 3.06 0 0 Z "
fill="#131417"
transform="translate(234,182)"
/>
<path
d="M0 0 C0.66 0.33 1.32 0.66 2 1 C2.66 0.67 3.32 0.34 4 0 C4.99 0.33 5.98 0.66 7 1 C5.95125002 3.62187494 5.35068687 4.79371361 2.875 6.25 C2.25625 6.4975 1.6375 6.745 1 7 C-2 3.25 -2 3.25 -2 1 C-1.34 0.67 -0.68 0.34 0 0 Z "
fill="#202427"
transform="translate(177,139)"
/>
<path
d="M0 0 C1.98 0.99 1.98 0.99 4 2 C4.33 1.34 4.66 0.68 5 0 C5.99 0.33 6.98 0.66 8 1 C7.79375 1.556875 7.5875 2.11375 7.375 2.6875 C6.89304789 5.659538 7.73434972 7.31979941 9 10 C7 10 7 10 5.2734375 8.3203125 C4.64695312 7.59585938 4.02046875 6.87140625 3.375 6.125 C2.74335937 5.40570313 2.11171875 4.68640625 1.4609375 3.9453125 C0 2 0 2 0 0 Z "
fill="#131618"
transform="translate(78,121)"
/>
<path
d="M0 0 C3 2 3 2 4 4 C0.84044583 5.57977708 -2.53463817 5.18447084 -6 5.1875 C-6.73734375 5.19974609 -7.4746875 5.21199219 -8.234375 5.22460938 C-10.15770058 5.22987395 -12.08054263 5.12203447 -14 5 C-14.66 4.34 -15.32 3.68 -16 3 C-10.72 3 -5.44 3 0 3 C0 2.01 0 1.02 0 0 Z "
fill="#0F1214"
transform="translate(60,187)"
/>
<path
d="M0 0 C0.99 0 1.98 0 3 0 C3.66 0.99 4.32 1.98 5 3 C5.66 2.67 6.32 2.34 7 2 C9 4 9 4 10 7 C9.67 7.66 9.34 8.32 9 9 C7 9 7 9 5.2734375 7.28515625 C4.64695312 6.55167969 4.02046875 5.81820312 3.375 5.0625 C2.74335937 4.33160156 2.11171875 3.60070312 1.4609375 2.84765625 C0 1 0 1 0 0 Z "
fill="#131417"
transform="translate(60,102)"
/>
<path
d="M0 0 C1.32 0.33 2.64 0.66 4 1 C3.43410156 1.55429688 2.86820313 2.10859375 2.28515625 2.6796875 C1.55167969 3.40414062 0.81820312 4.12859375 0.0625 4.875 C-0.66839844 5.59429687 -1.39929688 6.31359375 -2.15234375 7.0546875 C-4.05667999 8.87027192 -4.05667999 8.87027192 -5 11 C-5.66 10.67 -6.32 10.34 -7 10 C-7 9.34 -7 8.68 -7 8 C-6.34 8 -5.68 8 -5 8 C-5 7.01 -5 6.02 -5 5 C-3.35178756 3.96986723 -1.68496298 2.96885372 0 2 C0 1.34 0 0.68 0 0 Z "
fill="#0E0F11"
transform="translate(189,132)"
/>
<path
d="M0 0 C0.99 0.33 1.98 0.66 3 1 C3 1.66 3 2.32 3 3 C3.99 3.33 4.98 3.66 6 4 C6 4.99 6 5.98 6 7 C4 7 2 7 0 7 C0 4.69 0 2.38 0 0 Z "
fill="#212427"
transform="translate(97,127)"
/>
<path
d="M0 0 C0.66 0 1.32 0 2 0 C3.61949011 2.57213134 4.04408751 3.67669159 3.625 6.75 C3.41875 7.4925 3.2125 8.235 3 9 C1.66666667 6.33333333 0.33333333 3.66666667 -1 1 C-0.67 0.67 -0.34 0.34 0 0 Z "
fill="#141517"
transform="translate(234,89)"
/>
<path
d="M0 0 C1.32 0 2.64 0 4 0 C4 0.66 4 1.32 4 2 C3.34 2 2.68 2 2 2 C1.731875 2.61875 1.46375 3.2375 1.1875 3.875 C0 6 0 6 -3 8 C-1.125 1.125 -1.125 1.125 0 0 Z "
fill="#101112"
transform="translate(75,176)"
/>
<path
d="M0 0 C0.33 0.99 0.66 1.98 1 3 C-1.64 4.98 -4.28 6.96 -7 9 C-5.04783565 5.09567131 -3.12613393 2.96160056 0 0 Z "
fill="#0E0F12"
transform="translate(153,156)"
/>
<path
d="M0 0 C0.66 0 1.32 0 2 0 C3.38938077 1.96147874 4.7260411 3.96166576 6 6 C4.68 6.33 3.36 6.66 2 7 C0 2.25 0 2.25 0 0 Z "
fill="#121517"
transform="translate(211,169)"
/>
<path
d="M0 0 C0.99 0.33 1.98 0.66 3 1 C2.34 1 1.68 1 1 1 C1.33 1.66 1.66 2.32 2 3 C2.99 3.33 3.98 3.66 5 4 C4.67 5.32 4.34 6.64 4 8 C2.35 6.35 0.7 4.7 -1 3 C-0.67 2.01 -0.34 1.02 0 0 Z "
fill="#121215"
transform="translate(117,162)"
/>
<path
d="M0 0 C1.32 0.66 2.64 1.32 4 2 C3.67 2.99 3.34 3.98 3 5 C1.35 5.33 -0.3 5.66 -2 6 C-2 3 -2 3 0 0 Z "
fill="#121518"
transform="translate(67,169)"
/>
</svg>
);
export default Icon;
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Wire isDark through the Missive SVG colours.

This component never reads isDark, so all fills stay fixed and dark mode loses contrast. Please accept isDark explicitly and branch your palette accordingly (e.g. compute const fills = isDark ? DARK_PALETTE : LIGHT_PALETTE; and reference those values when rendering each path).

Based on learnings

🤖 Prompt for AI Agents
In src/frontend/src/icons/Missive/missive.jsx around lines 1-98, the Icon
component never reads an isDark prop so all SVG path fills are fixed dark;
accept isDark in the component signature, compute a fills object (e.g. const
fills = isDark ? DARK_PALETTE : LIGHT_PALETTE) mapping each semantic part to the
correct hex, and replace the hard-coded fill attributes on each <path> with
references to fills.<partName>; ensure props spread still applied and keep
existing transforms/structure.

Comment on lines +1 to +27
const Icon = (props) => (
<svg
version="1.1"
xmlns="http://www.w3.org/2000/svg"
width="20"
height="20"
viewBox="0 0 400 400"
preserveAspectRatio="xMidYMid meet"
{...props}
>
<path
d="M0 0 C132 0 264 0 400 0 C400 132 400 264 400 400 C268 400 136 400 0 400 C0 268 0 136 0 0 Z "
fill="#FEFEFE"
transform="translate(0,0)"
/>
<path
d="M0 0 C16.35993767 -0.56152333 16.35993767 -0.56152333 23.37695312 -0.68359375 C28.15205779 -0.7670592 32.92337806 -0.86534378 37.69555664 -1.05615234 C41.54742436 -1.20918564 45.3952363 -1.2921428 49.24991035 -1.3282814 C50.71402471 -1.35399909 52.17793508 -1.40423856 53.64030266 -1.48022079 C58.35666344 -1.71534938 62.49343686 -1.63294498 67 0 C71.19201514 3.81995709 73.51325939 8.99845649 76 14 C77.20006337 15.95028167 78.4185393 17.8895636 79.66796875 19.80859375 C80.84247918 21.68406148 82.01563007 23.56038124 83.1875 25.4375 C83.82695557 26.46117676 84.46641113 27.48485352 85.12524414 28.53955078 C90.0192209 36.39086972 94.84694927 44.28091375 99.64575195 52.19067383 C106.0775824 62.7901927 112.58322924 73.34386992 119.08886719 83.89819336 C121.09474566 87.1537741 123.09825237 90.41080706 125.1015625 93.66796875 C128.39103194 99.01405436 131.69231882 104.35267037 135 109.6875 C140.69368171 118.87718343 146.36197433 128.08233802 152.02368164 137.29174805 C157.03063277 145.43328517 162.05697538 153.56262628 167.10351562 161.6796875 C167.60431641 162.48664063 168.10511719 163.29359375 168.62109375 164.125 C169.27742798 165.18074219 169.27742798 165.18074219 169.94702148 166.2578125 C171 168 171 168 172 170 C172.33 124.79 172.66 79.58 173 33 C165.08 32.67 157.16 32.34 149 32 C149 21.44 149 10.88 149 0 C179.03 0 209.06 0 240 0 C240 10.23 240 20.46 240 31 C235.05 31.33 230.1 31.66 225 32 C219.96482201 34.63104608 219.96482201 34.63104608 218 39 C217.80228517 41.83769118 217.71467753 44.57770305 217.7215271 47.41546631 C217.7128385 48.70078652 217.7128385 48.70078652 217.70397437 50.0120728 C217.68694717 52.8879693 217.68409552 55.76370558 217.68115234 58.63964844 C217.67185605 60.69932958 217.66168783 62.75900694 217.65071106 64.81867981 C217.62336336 70.41536387 217.6082475 76.01202269 217.59528303 81.60875607 C217.57967337 87.45577331 217.55287626 93.30273885 217.5272522 99.14971924 C217.48042605 110.22413959 217.4437005 121.29856963 217.41057932 132.37303853 C217.37238504 144.97993667 217.32296783 157.58678293 217.27259517 170.19363737 C217.16921825 196.12905316 217.07997658 222.06450225 217 248 C210.89883668 248.25626205 204.80084655 248.44265121 198.69555664 248.56648254 C196.62241012 248.61812745 194.54963534 248.68834556 192.4777832 248.77796936 C174.31551471 249.54355549 174.31551471 249.54355549 169.64363289 245.78000641 C165.83155178 241.47306111 163.03853856 236.78802657 161.3046875 231.28125 C159.25368208 225.4633424 156.57665062 220.76940723 153.125 215.6875 C152.14251231 214.15351846 151.16609937 212.61563183 150.1953125 211.07421875 C149.68774414 210.27161621 149.18017578 209.46901367 148.65722656 208.64208984 C144.70036129 202.33372272 140.82468882 195.97475526 136.93115234 189.62719727 C132.91924695 183.09477078 128.86496274 176.59293345 124.75 170.125 C120.2072117 162.98109904 115.82956698 155.7496467 111.49682617 148.47680664 C107.62089974 141.98918552 103.6206633 135.5888593 99.56811523 129.21044922 C94.75949205 121.6392264 90.03750229 114.01605814 85.328125 106.3828125 C83.01835326 102.64010132 80.69358045 98.90720727 78.359375 95.1796875 C77.76568115 94.22884277 77.1719873 93.27799805 76.56030273 92.29833984 C75.42233546 90.47638414 74.28137278 88.65629478 73.13696289 86.83837891 C72.62383545 86.01515137 72.11070801 85.19192383 71.58203125 84.34375 C70.90491089 83.26383789 70.90491089 83.26383789 70.21411133 82.16210938 C68.91019226 79.84006889 67.93707777 77.49014435 67 75 C66.34 75 65.68 75 65 75 C65 121.53 65 168.06 65 216 C72.92 216 80.84 216 89 216 C89 226.56 89 237.12 89 248 C58.97 248 28.94 248 -2 248 C-2 238.1 -2 228.2 -2 218 C6.1875 217.25 6.1875 217.25 8.73901367 217.04394531 C9.75572144 216.93711426 9.75572144 216.93711426 10.79296875 216.828125 C11.4789917 216.7652832 12.16501465 216.70244141 12.87182617 216.63769531 C16.01271331 215.69654616 17.68369944 214.3239868 20 212 C20.75496505 208.61734592 20.75496505 208.61734592 20.63923645 204.72344971 C20.65176996 203.62188935 20.65176996 203.62188935 20.66455668 202.49807525 C20.68651126 200.03632075 20.67287326 197.57605458 20.65942383 195.11425781 C20.66787529 193.35013189 20.67851859 191.58601531 20.69119263 189.82191467 C20.71938821 185.03085238 20.71685867 180.24023704 20.70889878 175.44911671 C20.70577818 170.44287798 20.73079499 165.43678272 20.75285339 160.43060303 C20.79033905 150.94985624 20.80244406 141.4692529 20.8054778 131.98843932 C20.81016372 121.1952541 20.84307208 110.40221302 20.87837565 99.60909128 C20.95036665 77.40607726 20.98683595 55.20312169 21 33 C20.40574219 33.01160156 19.81148437 33.02320313 19.19921875 33.03515625 C18.37035156 33.04417969 17.54148437 33.05320313 16.6875 33.0625 C15.88699219 33.07410156 15.08648437 33.08570313 14.26171875 33.09765625 C9.49588866 32.95496673 4.74838463 32.43167133 0 32 C0 21.44 0 10.88 0 0 Z "
fill="#010101"
transform="translate(81,76)"
/>
<path
d="M0 0 C0.66 0 1.32 0 2 0 C2.66 1.32 3.32 2.64 4 4 C3.01 4 2.02 4 1 4 C1 48.88 1 93.76 1 140 C3.31 140 5.62 140 8 140 C8 140.33 8 140.66 8 141 C5.36 141 2.72 141 0 141 C0 94.47 0 47.94 0 0 Z "
fill="#C1C1C1"
transform="translate(146,151)"
/>
</svg>
);
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Implement isDark-aware fills.

This icon never reads isDark, so it always renders the light palette. Update it to accept { isDark, ...rest }, compute fills based on isDark, and spread rest onto <svg> to satisfy our icon contract.
As per coding guidelines

🤖 Prompt for AI Agents
In src/frontend/src/icons/Newsapi/newsapi.jsx around lines 1 to 27, the
component currently ignores the isDark prop and always uses hardcoded light
fills and spreads props incorrectly; update the component signature to accept ({
isDark, ...rest }), compute fill colors (e.g., primaryFill = isDark ?
'<dark-primary>' : '<light-primary>' and secondaryFill = isDark ?
'<dark-secondary>' : '<light-secondary>'), replace the hardcoded fill values on
the <path> elements with those computed variables, and spread ...rest onto the
<svg> element so the icon contract is satisfied.

Comment on lines +1 to +9
import React, { forwardRef } from "react";
import OpenAIIconSVG from "./openai";

export const OpenAIIcon = forwardRef<
SVGSVGElement,
React.PropsWithChildren<{}>
>((props, ref) => {
return <OpenAIIconSVG ref={ref} {...props} />;
});
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Rename folder to drop the space.

Placing this module under icons/OpenAI copy/ violates the YourIconName directory contract and breaks alias imports (@/icons/OpenAICopy). Please rename the folder (and update imports/lazy map) to OpenAICopy/ before merging.

Based on learnings

🤖 Prompt for AI Agents
In src/frontend/src/icons/OpenAI copy/index.tsx lines 1-9: the folder name
contains a space ("OpenAI copy") which violates the YourIconName directory
contract and breaks alias imports; rename the directory to "OpenAICopy" (no
space), move this index.tsx and the openai SVG into that directory, then update
all imports and any lazy map/alias entries (e.g. "@/icons/OpenAICopy" or icon
registry) to point to the new path, and run a project-wide search to replace any
remaining references to "OpenAI copy".

Comment on lines +1 to +12
const Icon = (props) => (
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 30 30"
width="20px"
height="20px"
{...props}
>
<path d="M 14.070312 2 C 11.330615 2 8.9844456 3.7162572 8.0390625 6.1269531 C 6.061324 6.3911222 4.2941948 7.5446684 3.2773438 9.3066406 C 1.9078196 11.678948 2.2198602 14.567816 3.8339844 16.591797 C 3.0745422 18.436097 3.1891418 20.543674 4.2050781 22.304688 C 5.5751778 24.677992 8.2359331 25.852135 10.796875 25.464844 C 12.014412 27.045167 13.895916 28 15.929688 28 C 18.669385 28 21.015554 26.283743 21.960938 23.873047 C 23.938676 23.608878 25.705805 22.455332 26.722656 20.693359 C 28.09218 18.321052 27.78014 15.432184 26.166016 13.408203 C 26.925458 11.563903 26.810858 9.4563257 25.794922 7.6953125 C 24.424822 5.3220082 21.764067 4.1478652 19.203125 4.5351562 C 17.985588 2.9548328 16.104084 2 14.070312 2 z M 14.070312 4 C 15.226446 4 16.310639 4.4546405 17.130859 5.2265625 C 17.068225 5.2600447 17.003357 5.2865019 16.941406 5.3222656 L 12.501953 7.8867188 C 12.039953 8.1527187 11.753953 8.6456875 11.751953 9.1796875 L 11.724609 15.146484 L 9.5898438 13.900391 L 9.5898438 8.4804688 C 9.5898438 6.0104687 11.600312 4 14.070312 4 z M 20.492188 6.4667969 C 21.927441 6.5689063 23.290625 7.3584375 24.0625 8.6953125 C 24.640485 9.696213 24.789458 10.862812 24.53125 11.958984 C 24.470201 11.920997 24.414287 11.878008 24.351562 11.841797 L 19.910156 9.2773438 C 19.448156 9.0113437 18.879016 9.0103906 18.416016 9.2753906 L 13.236328 12.236328 L 13.248047 9.765625 L 17.941406 7.0546875 C 18.743531 6.5915625 19.631035 6.4055313 20.492188 6.4667969 z M 7.5996094 8.2675781 C 7.5972783 8.3387539 7.5898438 8.4087418 7.5898438 8.4804688 L 7.5898438 13.607422 C 7.5898438 14.141422 7.8729844 14.635297 8.3339844 14.904297 L 13.488281 17.910156 L 11.34375 19.134766 L 6.6484375 16.425781 C 4.5094375 15.190781 3.7747656 12.443687 5.0097656 10.304688 C 5.5874162 9.3043657 6.522013 8.5923015 7.5996094 8.2675781 z M 18.65625 10.865234 L 23.351562 13.574219 C 25.490562 14.809219 26.225234 17.556313 24.990234 19.695312 C 24.412584 20.695634 23.477987 21.407698 22.400391 21.732422 C 22.402722 21.661246 22.410156 21.591258 22.410156 21.519531 L 22.410156 16.392578 C 22.410156 15.858578 22.127016 15.364703 21.666016 15.095703 L 16.511719 12.089844 L 18.65625 10.865234 z M 15.009766 12.947266 L 16.78125 13.980469 L 16.771484 16.035156 L 14.990234 17.052734 L 13.21875 16.017578 L 13.228516 13.964844 L 15.009766 12.947266 z M 18.275391 14.853516 L 20.410156 16.099609 L 20.410156 21.519531 C 20.410156 23.989531 18.399687 26 15.929688 26 C 14.773554 26 13.689361 25.54536 12.869141 24.773438 C 12.931775 24.739955 12.996643 24.713498 13.058594 24.677734 L 17.498047 22.113281 C 17.960047 21.847281 18.246047 21.354312 18.248047 20.820312 L 18.275391 14.853516 z M 16.763672 17.763672 L 16.751953 20.234375 L 12.058594 22.945312 C 9.9195938 24.180312 7.1725 23.443687 5.9375 21.304688 C 5.3595152 20.303787 5.2105423 19.137188 5.46875 18.041016 C 5.5297994 18.079003 5.5857129 18.121992 5.6484375 18.158203 L 10.089844 20.722656 C 10.551844 20.988656 11.120984 20.989609 11.583984 20.724609 L 16.763672 17.763672 z" />
</svg>
);
export default Icon;
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Fix the directory name.

The directory name "OpenAI copy" contains a space and the suffix "copy", which can cause issues with:

  • Module imports and path resolution
  • Build tools and file system operations
  • Suggests this may be a duplicate or temporary file

Rename the directory to follow the established naming convention (e.g., OpenAI or OpenAICopy without spaces).

🤖 Prompt for AI Agents
In src/frontend/src/icons/OpenAI copy/openai.jsx lines 1-12, the directory name
"OpenAI copy" contains a space and "copy" which can break imports and build
tooling; rename the folder to a valid identifier (e.g., OpenAI or OpenAICopy)
and update all import paths that reference src/frontend/src/icons/OpenAI
copy/openai.jsx accordingly (search/replace imports, update any barrel exports
and tests), commit the moved file so history is preserved and verify the app
builds and imports the icon from the new path.

Comment on lines +1 to +37
const Icon = (props) => (
<svg
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlnsXlink="http://www.w3.org/1999/xlink"
x="0px"
y="0px"
width="20"
height="20"
viewBox="0 0 80 80"
style={{ enableBackground: "new 0 0 80 80" }}
xmlSpace="preserve"
preserveAspectRatio="xMidYMid meet"
{...props}
>
<style type="text/css">{`
.st0{fill:#47B972;}
.st1{fill:#FFFFFF;}
`}</style>
<g id="mark_green">
<g id="mark_7_">
<rect id="XMLID_552_" className="st0" width="80" height="80" />
<path
id="XMLID_551_"
className="st1"
d="M58.5,17.7v11.8l-0.2,0.1c-1.7-1.4-3.9-2.3-6.7-2.3c-3.6,0-6.9,1.3-9.1,3.9l3.4,3.6
c1.7-1.6,3.5-2.5,5.8-2.5c4.3,0.1,7.1,3.4,7.1,7.8c0,4.4-2.9,7.8-7.3,7.8c-11,0-7.9-20.6-22.7-20.6c-7.4,0-12.6,5.5-12.6,12.8
v22.3h5.3V50.5l0.2-0.1c1.7,1.4,3.9,2.3,6.7,2.3c3.6,0,6.9-1.3,9.1-3.9l-3.4-3.6c-1.7,1.6-3.5,2.5-5.8,2.5
c-4.3-0.1-7.1-3.4-7.1-7.8c0-4.4,2.9-7.8,7.3-7.8c11,0,7.9,20.6,22.7,20.6c7.4,0,12.6-5.5,12.6-12.8V17.7H58.5z"
/>
</g>
</g>
<g id="logo_on_black-alpha"></g>
<g id="logo_on_green-alpha"></g>
</svg>
);
export default Icon;
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Missing isDark prop support for theme compatibility.

The SVG icon component must accept and use the isDark prop to support both light and dark mode, but this implementation has hardcoded fill colors in the CSS styles (#47B972, #FFFFFF) and doesn't handle theme switching.

As per coding guidelines

Consider destructuring isDark from props and conditionally adjusting the styles:

-const Icon = (props) => (
+const Icon = ({ isDark, ...props }) => (
   <svg
     version="1.1"
     xmlns="http://www.w3.org/2000/svg"
     xmlnsXlink="http://www.w3.org/1999/xlink"
     x="0px"
     y="0px"
     width="20"
     height="20"
     viewBox="0 0 80 80"
     style={{ enableBackground: "new 0 0 80 80" }}
     xmlSpace="preserve"
     preserveAspectRatio="xMidYMid meet"
     {...props}
   >
-    <style type="text/css">{`
-  .st0{fill:#47B972;}
-	.st1{fill:#FFFFFF;}
- `}</style>
+    <style type="text/css">{`
+  .st0{fill:#47B972;}
+	.st1{fill:${isDark ? '#000000' : '#FFFFFF'};}
+ `}</style>

Note: You may need to adjust the color logic based on your theme requirements.

🤖 Prompt for AI Agents
In src/frontend/src/icons/Pandadoc/pandadoc.jsx around lines 1-37, the SVG uses
hardcoded CSS fill colors and does not support the isDark prop; update the
component to destructure isDark from props (with a sensible default) and apply
conditional colors instead of the embedded .st0/.st1 CSS (e.g., choose a
dark/light fill for the rect and paths based on isDark), remove or replace the
<style> block and set fill attributes or inline style objects on the rect/path
elements so theme toggling works, and ensure other props are still spread onto
the svg.

@github-actions github-actions bot added enhancement New feature or request and removed enhancement New feature or request labels Oct 7, 2025
@github-actions github-actions bot added enhancement New feature or request and removed enhancement New feature or request labels Oct 9, 2025
@github-actions github-actions bot added enhancement New feature or request and removed enhancement New feature or request labels Oct 13, 2025
@github-actions github-actions bot added enhancement New feature or request and removed enhancement New feature or request labels Oct 14, 2025
Copy link
Collaborator

@edwinjosechittilappilly edwinjosechittilappilly left a comment

Choose a reason for hiding this comment

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

LGTM But fixes required in Composio Base, merging but need follow up bug with for auth

@github-actions github-actions bot added enhancement New feature or request and removed enhancement New feature or request labels Oct 14, 2025
@sonarqubecloud
Copy link

@edwinjosechittilappilly edwinjosechittilappilly added the fast-track Skip tests and sends PR into the merge queue label Oct 14, 2025
@edwinjosechittilappilly edwinjosechittilappilly added this pull request to the merge queue Oct 14, 2025
Merged via the queue into langflow-ai:main with commit 81c19bc Oct 14, 2025
38 of 40 checks passed
@edwinjosechittilappilly edwinjosechittilappilly deleted the v3-NewComponents-Oct7 branch October 14, 2025 13:57
korenLazar pushed a commit to kiran-kate/langflow that referenced this pull request Nov 13, 2025
* feat: add new Composio components

* add component index

---------

Co-authored-by: Edwin Jose <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request fast-track Skip tests and sends PR into the merge queue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants