Skip to content

[WEB-4727] feat: propel cards#7630

Merged
sriramveeraghanta merged 7 commits intopreviewfrom
feat-propel-cards
Aug 25, 2025
Merged

[WEB-4727] feat: propel cards#7630
sriramveeraghanta merged 7 commits intopreviewfrom
feat-propel-cards

Conversation

@JayashTripathy
Copy link
Member

@JayashTripathy JayashTripathy commented Aug 22, 2025

Description

Added Cards to propel and removed dependency of UI from propel

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • Feature (non-breaking change which adds functionality)
  • Improvement (change that would cause existing functionality to not work as expected)
  • Code refactoring
  • Performance improvements
  • Documentation update

Screenshots and Media (if applicable)

Test Scenarios

References

Summary by CodeRabbit

  • New Features
    • Introduced a Card component in Propel with configurable variant, spacing, and layout direction for consistent UI building.
  • Refactor
    • Updated chart tooltips to use the new in-package Card component with no visual or behavioral changes.
  • Chores
    • Removed an external UI dependency to streamline and simplify the package.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Aug 22, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

Adds a new Card component and styling helpers under packages/propel/src/card, exposes it via a barrel and package.json export, removes the external @plane/ui dependency from propel, updates chart tooltips to import the local Card, and widens CardProps in packages/ui to extend HTMLDivElement attributes.

Changes

Cohort / File(s) Summary
Propel package export & deps
packages/propel/package.json
Adds ./card export → ./src/card/index.ts; removes @plane/ui from dependencies.
Propel Card implementation
packages/propel/src/card/card.tsx, packages/propel/src/card/helper.tsx
New Card component (forwardRef) with CardProps extending React HTML attributes; helper defines enums/types (ECardVariant, ECardSpacing, ECardDirection, T*), spacing/direction/variant mappings, and getCardStyle. Exports Card and enums.
Propel Card barrel
packages/propel/src/card/index.ts
Adds export * from "./card".
Charts tooltips — import updates
packages/propel/src/charts/components/tooltip.tsx, packages/propel/src/charts/pie-chart/tooltip.tsx, packages/propel/src/charts/tree-map/tooltip.tsx
Switch imports of Card and ECardSpacing from @plane/ui → local ../../card. No behavioral changes.
UI package Card props typing
packages/ui/src/card/card.tsx
CardProps now extends React.HTMLAttributes<HTMLDivElement> (type widening).

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant Tooltip as Tooltip (charts/*/tooltip)
  participant Card as Card (propel/src/card)
  participant DOM as DOM

  User->>Tooltip: Hover or request tooltip
  Tooltip->>Card: Render <Card variant, spacing, direction>
  Card->>Card: getCardStyle(variant, spacing, direction)
  Card->>DOM: Render <div class="..."> with children
  Tooltip->>DOM: Insert tooltip content inside Card
  note over Tooltip,Card: Tooltip imports Card locally from propel
Loading
sequenceDiagram
  rect rgba(240,240,255,0.5)
  Note over Tooltip,External: Before
  participant Tooltip as Tooltip
  participant External as @plane/ui Card
  Tooltip->>External: import { Card, ECardSpacing } from "@plane/ui"
  end

  rect rgba(230,255,230,0.4)
  Note over Tooltip,Local: After
  participant Local as propel/src/card
  Tooltip->>Local: import { Card, ECardSpacing } from "../../card"
  end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • anmolsinghbhatia
  • vamsikrishnamathala

Poem

I stitched a cozy Card from burrowed code,
Padding like clover, and shadows in ode.
Tooltips now hop to a local abode,
Dependencies light, down a tidy road.
Thump-thump — rabbit review, ready to go! 🐇✨

Tip

🔌 Remote MCP (Model Context Protocol) integration is now available!

Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats.


📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between bd86f01 and 59f529c.

📒 Files selected for processing (1)
  • packages/propel/src/card/card.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/propel/src/card/card.tsx
⏰ 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). (2)
  • GitHub Check: Build and lint web apps
  • GitHub Check: Analyze (javascript)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat-propel-cards

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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

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

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

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

CodeRabbit Configuration File (.coderabbit.yaml)

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

Status, Documentation and Community

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

@makeplane
Copy link

makeplane bot commented Aug 22, 2025

Pull Request Linked with Plane Work Items

Comment Automatically Generated by Plane

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: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/propel/package.json (1)

28-40: Remove all lingering “@plane/ui” imports and workspace dependencies
The search uncovered numerous remaining references to the dropped “@plane/ui” package—including in packages/propel/src/command/command.tsx, your various app workspaces (apps/editor, apps/web, apps/space, apps/admin, etc.), and even within your lockfile (pnpm-lock.yaml). These will break downstream builds now that “@plane/ui” is no longer declared as a dependency.

Please update or remove every import and dependency entry for “@plane/ui” (and any of its subpaths) across the repo. Key locations include, but are not limited to:

  • packages/propel/src/command/command.tsx (import { cn } from “@plane/ui”)
  • packages/editor and packages/propel’s package.jsons still listing “@plane/ui” as a workspace dependency
  • apps/editor, apps/web, apps/space, apps/admin workspaces: numerous components importing UI primitives (Button, Tooltip, Loader, etc.) from “@plane/ui”
  • pnpm-lock.yaml entries for “@plane/ui”

After removing each import, replace it with the correct package or local subpath (e.g. @plane/base-ui-components, @plane/propel/card, or your internal UI library), then regenerate the lockfile.

🧹 Nitpick comments (13)
packages/propel/package.json (2)

14-27: Optional: add types conditions in exports for better TS editor hints

If these subpaths are consumed outside Next.js transpilePackages, adding a “types” condition per subpath improves DX and avoids relying on TS to parse source TS from workspaces. Not required if this package stays private and only used via Next build pipeline.

Example for “./card”:

   "exports": {
-    "./card": "./src/card/index.ts"
+    "./card": {
+      "types": "./src/card/index.ts",
+      "default": "./src/card/index.ts"
+    }
   },

14-27: Consider exporting the new Separator (and fix spelling) if it’s part of the public surface

You introduced packages/propel/src/seperator/index.tsx. If intended for consumers, add a subpath export and standardize the spelling to “separator” to avoid API churn later.

packages/propel/src/seperator/index.tsx (2)

5-16: Forward the ref for drop-in compatibility with the primitive

Wrapping as a simple function drops ref support. Forwarding the ref preserves focus management and integration in parent components.

Patch:

-export function Separator({ className, ...props }: React.ComponentProps<typeof SeparatorPrimitive>) {
-  return (
-    <SeparatorPrimitive
+export const Separator = React.forwardRef<
+  React.ElementRef<typeof SeparatorPrimitive>,
+  React.ComponentProps<typeof SeparatorPrimitive>
+>(({ className, ...props }, ref) => {
+  return (
+    <SeparatorPrimitive
+      ref={ref}
       data-slot="separator"
       className={cn(
         "bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
         className
       )}
       {...props}
     />
-  );
-}
+  );
+});
+Separator.displayName = "Separator";

1-16: Rename “seperator” directory to “separator” and update related imports/exports

To prevent the typo from propagating through import paths and package exports, please:

  • Rename the folder
    packages/propel/src/seperator/packages/propel/src/separator/
  • Update all import paths within this package (and any consumers) that reference the old name, for example:
    - import { Separator } from "@base-ui-components/react/seperator"
    + import { Separator } from "@base-ui-components/react/separator"
  • Add an exports entry for the corrected path in packages/propel/package.json:
     "exports": {
  • "./separator": "./src/separator/index.ts",
    "./avatar": "./src/avatar/index.ts",
    "./charts/": "./src/charts//index.ts",

    }

This will ensure your public API and monorepo imports continue to work after renaming.

</blockquote></details>
<details>
<summary>packages/propel/src/card/helper.tsx (3)</summary><blockquote>

`22-22`: **Avoid conflicting flex direction classes**

DEFAULT_STYLE hardcodes “flex-col”, and directions[ROW] adds “flex-row”, leading to conflicting classes. Tailwind resolves by last-wins, but removing the default “flex-col” is cleaner and future-proof.

Apply:

```diff
-const DEFAULT_STYLE =
-  "bg-custom-background-100 rounded-lg border-[0.5px] border-custom-border-200 w-full flex flex-col";
+const DEFAULT_STYLE =
+  "bg-custom-background-100 rounded-lg border-[0.5px] border-custom-border-200 w-full flex";

13-15: Simplify auxiliary types

These aliases can just be the enums themselves; reduces duplication without changing behavior.

-export type TCardVariant = ECardVariant.WITHOUT_SHADOW | ECardVariant.WITH_SHADOW;
-export type TCardDirection = ECardDirection.ROW | ECardDirection.COLUMN;
-export type TCardSpacing = ECardSpacing.SM | ECardSpacing.LG;
+export type TCardVariant = ECardVariant;
+export type TCardDirection = ECardDirection;
+export type TCardSpacing = ECardSpacing;

27-34: Make mappings exhaustive and type-checked

Using “satisfies Record<…>” ensures all enum keys are covered and values stay string-literals.

-export const spacings = {
-  [ECardSpacing.SM]: "p-4",
-  [ECardSpacing.LG]: "p-6",
-};
-export const directions = {
-  [ECardDirection.ROW]: "flex-row space-x-3",
-  [ECardDirection.COLUMN]: "flex-col space-y-3",
-};
+export const spacings = {
+  [ECardSpacing.SM]: "p-4",
+  [ECardSpacing.LG]: "p-6",
+} as const satisfies Record<TCardSpacing, string>;
+export const directions = {
+  [ECardDirection.ROW]: "flex-row space-x-3",
+  [ECardDirection.COLUMN]: "flex-col space-y-3",
+} as const satisfies Record<TCardDirection, string>;
packages/propel/src/charts/tree-map/tooltip.tsx (1)

5-8: Replace any[] with a precise payload type (fixes ESLint no-explicit-any)

The payload shape used below accesses payload[0].payload.{icon,name,value,label}. Define a typed interface to satisfy the linter and improve safety.

-interface TreeMapTooltipProps {
-  active: boolean | undefined;
-  payload: any[] | undefined;
-}
+interface TreeMapDatum {
+  name?: string;
+  value: number;
+  label?: string;
+  icon?: React.ReactNode;
+}
+interface TreeMapTooltipItem {
+  payload: TreeMapDatum;
+}
+interface TreeMapTooltipProps {
+  active: boolean | undefined;
+  payload: TreeMapTooltipItem[] | undefined;
+}
packages/propel/src/charts/components/tooltip.tsx (1)

4-6: Fix import order to satisfy lint rule (import/order)

Place external/aliased imports before relative ones.

-import { Card, ECardSpacing } from "../../card";
-
-import { cn } from "@plane/utils";
+import { cn } from "@plane/utils";
+import { Card, ECardSpacing } from "../../card";
packages/propel/src/charts/pie-chart/tooltip.tsx (2)

16-19: Add a11y semantics for tooltips.

Consider passing role="tooltip" and an accessible name (e.g., aria-label={label}) to the container. This improves SR behavior for chart tooltips.

Note: This depends on Card accepting native div attributes. See my CardProps comment in src/card/card.tsx.

     <Card
       className="flex flex-col max-h-[40vh] w-[12rem] overflow-y-scroll vertical-scrollbar scrollbar-sm"
       spacing={ECardSpacing.SM}
+      role="tooltip"
+      aria-label={label}
     >

23-35: Stabilize list keys and provide a color fallback.

  • key={item?.dataKey} can be undefined and isn’t guaranteed unique. Safer to fall back to name or index.
  • If dotColor isn’t provided, consider falling back to item?.color (common in Recharts payloads).
-      {payload?.map((item) => (
-        <div key={item?.dataKey} className="flex items-center gap-2 text-xs capitalize">
+      {payload?.map((item, idx) => (
+        <div key={(item?.dataKey as string) ?? String(item?.name ?? idx)} className="flex items-center gap-2 text-xs capitalize">
           <div className="flex items-center gap-2 truncate">
             <div
               className="flex-shrink-0 size-2 rounded-sm"
               style={{
-                backgroundColor: dotColor,
+                backgroundColor: (item as any)?.color ?? dotColor,
               }}
             />
packages/propel/src/card/index.ts (1)

1-1: Barrel export is fine; optionally re-export CardProps explicitly.

export * will re-export type-only symbols in TS, but making CardProps explicit can aid discoverability and d.ts generation clarity.

 export * from "./card";
+export type { CardProps } from "./card";
packages/propel/src/card/card.tsx (1)

39-39: Rename displayName to reflect the new package.

The current displayName references the old UI package and may confuse React DevTools users.

-Card.displayName = "plane-ui-card";
+Card.displayName = "propel-card";
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between d3b2699 and 980d0b8.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (8)
  • packages/propel/package.json (1 hunks)
  • packages/propel/src/card/card.tsx (1 hunks)
  • packages/propel/src/card/helper.tsx (1 hunks)
  • packages/propel/src/card/index.ts (1 hunks)
  • packages/propel/src/charts/components/tooltip.tsx (1 hunks)
  • packages/propel/src/charts/pie-chart/tooltip.tsx (1 hunks)
  • packages/propel/src/charts/tree-map/tooltip.tsx (1 hunks)
  • packages/propel/src/seperator/index.tsx (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (2)
packages/propel/src/card/helper.tsx (1)
packages/propel/src/card/card.tsx (3)
  • ECardVariant (41-41)
  • ECardDirection (41-41)
  • ECardSpacing (41-41)
packages/propel/src/card/card.tsx (1)
packages/propel/src/card/helper.tsx (4)
  • TCardVariant (13-13)
  • TCardSpacing (15-15)
  • TCardDirection (14-14)
  • getCardStyle (35-36)
🪛 GitHub Actions: Build and lint web apps
packages/propel/src/charts/components/tooltip.tsx

[warning] 6-6: ESLint: import/order violation: Import order should be adjusted. (import/order)

packages/propel/src/charts/tree-map/tooltip.tsx

[warning] 7-7: ESLint: Unexpected any. Specify a different type. (no-explicit-any)

packages/propel/src/seperator/index.tsx

[error] 17-17: ESLint: Trailing spaces not allowed. (no-trailing-spaces)

🪛 GitHub Check: Build and lint web apps
packages/propel/src/seperator/index.tsx

[failure] 17-17:
Trailing spaces not allowed

⏰ 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). (2)
  • GitHub Check: Analyze (javascript)
  • GitHub Check: Analyze (python)
🔇 Additional comments (6)
packages/propel/package.json (1)

25-26: Subpath export for Card looks good

The new public export (“./card”) is correctly wired to the barrel at ./src/card/index.ts. This unblocks consumers from importing the local Card and enums.

packages/propel/src/charts/tree-map/tooltip.tsx (1)

3-3: Card import migration looks correct

Switching to the local “../../card” module aligns with the dependency removal of @plane/ui.

packages/propel/src/charts/components/tooltip.tsx (1)

4-5: Card import migration looks correct

Localizing the Card usage is consistent with dropping @plane/ui.

packages/propel/src/card/card.tsx (3)

21-37: Component structure and ref forwarding look good.

Defaults + getCardStyle + cn are composed cleanly; the forwardRef wrapper is correct and stable.


2-2: Dependency Declaration Verified

The import of cn from @plane/utils is supported: in packages/propel/package.json, @plane/utils is listed under dependencies with "workspace:*". No further changes are needed.


23-27: Verify default variant impact on tooltips

All existing <Card> usages in Propel explicitly set spacing={ECardSpacing.SM}, so the new default spacing = ECardSpacing.LG won’t affect them. However, none of these override variant, meaning they now inherit the new default ECardVariant.WITH_SHADOW. Please visually confirm that adding the shadow does not introduce unintended elevation or layout changes in the following files:

  • packages/propel/src/charts/tree-map/tooltip.tsx
  • packages/propel/src/charts/pie-chart/tooltip.tsx
  • packages/propel/src/charts/components/tooltip.tsx

@JayashTripathy JayashTripathy changed the title [WEB-4727] Feat propel cards [WEB-4727] feat: propel cards Aug 22, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds Cards to the propel package and removes its dependency on the UI package to improve modularity. The changes create a standalone Card component within propel to replace external UI dependencies.

  • Added new Card component with variant, spacing, and direction configuration options to the propel package
  • Updated chart tooltip components to use the local Card implementation instead of the external UI package
  • Removed the @plane/ui dependency from propel's package.json

Reviewed Changes

Copilot reviewed 9 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
packages/ui/src/card/card.tsx Extended CardProps interface to include HTML div attributes
packages/propel/src/command/command.tsx Updated import to use @plane/utils instead of @plane/ui for cn utility
packages/propel/src/charts/tree-map/tooltip.tsx Changed Card import from @plane/ui to local card module
packages/propel/src/charts/pie-chart/tooltip.tsx Changed Card import from @plane/ui to local card module
packages/propel/src/charts/components/tooltip.tsx Changed Card import from @plane/ui to local card module
packages/propel/src/card/index.ts Added export barrel file for card module
packages/propel/src/card/helper.tsx Added card configuration enums, types, and styling utilities
packages/propel/src/card/card.tsx Implemented new Card component with variant, spacing, and direction props
packages/propel/package.json Removed @plane/ui dependency and added card export to package exports
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/ui/src/card/card.tsx (1)

39-39: Action Required: Assign a unique displayName in the Propel package

Both the UI and Propel packages currently set their Card component’s displayName to "plane-ui-card", which will cause confusion in React DevTools. Update the Propel Card to use a distinct name.

• packages/propel/src/card/card.tsx (line 39):
– Change Card.displayName = "plane-ui-card"

  • to Card.displayName = "plane-propel-card"

Recommended diff:

--- a/packages/propel/src/card/card.tsx
+++ b/packages/propel/src/card/card.tsx
@@ -37,7 +37,7 @@
 });
 Card.displayName = "plane-ui-card";
-export { Card, ECardVariant, ECardSpacing, ECardDirection };
+// Renamed for uniqueness in React DevTools
+Card.displayName = "plane-propel-card";
+export { Card, ECardVariant, ECardSpacing, ECardDirection };
🧹 Nitpick comments (3)
packages/propel/package.json (1)

26-26: Optional: consider adding a types condition for the new subpath

If consumers (outside the monorepo) ever rely on the new subpath, adding a types condition (or ensuring TS path mapping covers it) can improve DX. Existing entries don’t use this, so this is optional for consistency.

packages/ui/src/card/card.tsx (2)

13-19: Remove redundant className from CardProps to avoid duplication

className already comes from React.HTMLAttributes<HTMLDivElement>. Keeping a duplicate property is harmless but unnecessary.

Apply this diff to the interface:

 export interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
   variant?: TCardVariant;
   spacing?: TCardSpacing;
   direction?: TCardDirection;
-  className?: string;
   children: React.ReactNode;
 }

23-29: Minor: drop the default empty string for className

With the above interface change, letting className be undefined is fine and keeps the props shape minimal. cn should gracefully handle undefined.

   const {
     variant = ECardVariant.WITH_SHADOW,
     direction = ECardDirection.COLUMN,
-    className = "",
+    className,
     spacing = ECardSpacing.LG,
     children,
     ...rest
   } = props;
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 980d0b8 and bd86f01.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (2)
  • packages/propel/package.json (1 hunks)
  • packages/ui/src/card/card.tsx (1 hunks)
⏰ 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). (2)
  • GitHub Check: Analyze (javascript)
  • GitHub Check: Build and lint web apps
🔇 Additional comments (4)
packages/propel/package.json (2)

26-26: New subpath export for card is consistent and looks good

Adding "./card": "./src/card/index.ts" aligns with existing export patterns and will allow @plane/propel/card imports cleanly.


26-26: No remaining @plane/ui imports in packages/propel/src

All search results show no imports from @plane/ui in the packages/propel/src directory. The only imports of Card and ECardSpacing in chart tooltips are from the new local ../../card module, as intended:

  • No matches for from '@plane/ui' in packages/propel/src
  • Local imports in chart tooltips (e.g. import { Card, ECardSpacing } from "../../card";) confirm the new module usage

Looks good to merge.

packages/ui/src/card/card.tsx (2)

13-19: Extending HTMLDivElement attributes is a good improvement

Broadening CardProps with React.HTMLAttributes<HTMLDivElement> increases flexibility (handlers, data-* attrs, etc.) without affecting runtime.


13-19: No self-closing <Card /> usages detected
I searched all .tsx files under packages for self-closing <Card /> instances and found none. Enforcing children as a required prop should not introduce compile errors in existing call sites.

No further changes required.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants