Skip to content

[WEB-3567] dev: empty state v2#7910

Merged
pushya22 merged 9 commits intopreviewfrom
dev-empty-state-v2
Oct 7, 2025
Merged

[WEB-3567] dev: empty state v2#7910
pushya22 merged 9 commits intopreviewfrom
dev-empty-state-v2

Conversation

@anmolsinghbhatia
Copy link
Collaborator

@anmolsinghbhatia anmolsinghbhatia commented Oct 6, 2025

Summary

This PR includes new empty state assets and components in the propel package.

Type of Change

  • Improvement
  • Code refactoring

Media

Light Dark
light dark
light dark
light dark
light dark
light dark

Summary by CodeRabbit

  • New Features

    • Added EmptyState component (detailed & simple) with optional illustrations, title, description, and action buttons.
    • Added a comprehensive illustration library (horizontal & vertical stacks), asset maps, and many ready-to-use SVG assets; published empty-state as a public export.
  • Documentation

    • Added Storybook stories showcasing component variants and full asset galleries.
  • Chores

    • Updated ignore list for CLAUDE.md and build config to include the new module; added package export for empty-state.
  • Style

    • Normalized SVG attribute casing in a brand icon.

@anmolsinghbhatia anmolsinghbhatia self-assigned this Oct 6, 2025
Copilot AI review requested due to automatic review settings October 6, 2025 15:22
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 pull request introduces empty state components and assets for the propel package as part of WEB-3567. The PR adds a new empty-state module with reusable components and supporting illustration assets in both horizontal and vertical stack variants.

  • Empty state React component with configurable titles, descriptions, and action buttons
  • Comprehensive illustration assets for different scenarios (work items, views, projects, etc.)
  • Stories documentation for component usage and asset previews

Reviewed Changes

Copilot reviewed 49 out of 50 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
packages/propel/tsdown.config.ts Added empty-state module to build configuration
packages/propel/src/empty-state/index.ts Module entry point exporting empty state components
packages/propel/src/empty-state/empty-state.tsx Main empty state component with props interface and variants
packages/propel/src/empty-state/empty-state.stories.tsx Storybook documentation and examples
packages/propel/src/empty-state/assets/vertical-stack/*.tsx Collection of vertical stack illustration components

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

export const Simple: Story = {
args: {
asset: <WorkItemHorizontalStackIllustration className="w-40 h-45" />,
title: "There're no progress metrics to show yet.",
Copy link

Copilot AI Oct 6, 2025

Choose a reason for hiding this comment

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

Corrected spelling of 'There're' to 'There are'.

Suggested change
title: "There're no progress metrics to show yet.",
title: "There are no progress metrics to show yet.",

Copilot uses AI. Check for mistakes.
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 6, 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 EmptyState UI component with stories, many new SVG illustration assets (horizontal & vertical stacks) plus helper and asset maps, exposes the empty-state via package exports and tsdown config, fixes JSX SVG attribute names in an icon, and updates .gitignore.

Changes

Cohort / File(s) Summary
Repo hygiene
/.gitignore
Ignore CLAUDE.md.
Package exports & build
packages/propel/package.json, packages/propel/tsdown.config.ts
Add public export ./empty-state and include src/empty-state/index.ts in tsdown entries.
EmptyState component & stories
packages/propel/src/empty-state/empty-state.tsx, packages/propel/src/empty-state/index.ts, packages/propel/src/empty-state/empty-state.stories.tsx
New EmptyState component (types, ActionButton, two layout modes), re-export, and Storybook stories (Default, Simple, HorizontalStackAssets, VerticalStackAssets).
Assets helper & top-level barrel
packages/propel/src/empty-state/assets/helper.tsx, packages/propel/src/empty-state/assets/index.ts
Add ILLUSTRATION_COLOR_TOKEN_MAP, TIllustrationAssetProps, and barrel export for assets.
Horizontal stack assets
packages/propel/src/empty-state/assets/horizontal-stack/index.ts, .../constant.tsx, .../*.tsx
Add ~19 stateless SVG React components (customer, epic, estimate, export, intake, label, link, members, note, priority, settings, state, template, token, unknown, update, webhook, work-item, worklog) and HorizontalStackAssetsMap.
Vertical stack assets
packages/propel/src/empty-state/assets/vertical-stack/index.ts, .../constant.tsx, .../*.tsx
Add ~19 stateless SVG React components (404-error, archived-cycle, archived-module, archived-work-item, customer, cycle, dashboard, draft, epic, initiative, invalid-link, module, no-access, page, project, server-error, teamspace, view, work-item) and VerticalStackAssetsMap.
Icons
packages/propel/src/icons/brand/zerodha-logo.tsx
Fix JSX SVG attributes from kebab-case to camelCase (fill-rulefillRule, clip-ruleclipRule).
Misc. formatting
packages/ui/src/popovers/popover-menu.stories.tsx
Reorder imports (React import moved) — no behavioral change.

Sequence Diagram(s)

sequenceDiagram
    autonumber
    actor Consumer
    participant EmptyState
    participant Asset
    participant Actions

    Consumer->>EmptyState: render(title, description, type, asset?, actions?)
    alt asset provided
        EmptyState->>Asset: render(asset, className)
        Asset-->>EmptyState: SVG element
    end
    EmptyState->>Consumer: render content (title, description)
    opt actions provided
        EmptyState->>Actions: render buttons
        Consumer->>Actions: click
        Actions-->>Consumer: call handler
    end
    Note over EmptyState: layout differs by type ("detailed" = left-aligned, "simple" = centered)
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Suggested labels

🌐frontend, 🌟improvement, requires approval

Suggested reviewers

  • sriramveeraghanta
  • prateekshourya29
  • vamsikrishnamathala

Poem

Thump-thump on keys, a rabbit hops,
New states and sprites in tidy props.
SVG leaves shimmer, tokens bright,
Buttons lined up, stories alight.
A carrot-coded cheer — hop, delight! 🥕🐇

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description Check ⚠️ Warning The pull request description deviates from the required template by using a “### Summary” heading instead of “### Description” and omits the “Test Scenarios” and “References” sections, so it does not fully adhere to the repository’s description structure. Rename the “### Summary” section to “### Description” to match the template and add the missing “Test Scenarios” and “References” sections with details on how the changes were tested and any related issue links.
✅ Passed checks (2 passed)
Check name Status Explanation
Title Check ✅ Passed The title “[WEB-3567] dev: empty state v2” directly references the primary change of introducing the Empty State version 2 feature and includes the ticket number for traceability, making it clearly related to the main purpose of the pull request.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch dev-empty-state-v2

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 25cc997 and 1dc1cb8.

📒 Files selected for processing (2)
  • packages/propel/src/empty-state/empty-state.tsx (1 hunks)
  • packages/ui/src/popovers/popover-menu.stories.tsx (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • packages/ui/src/popovers/popover-menu.stories.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/propel/src/empty-state/empty-state.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)

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.

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

Caution

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

⚠️ Outside diff range comments (1)
packages/propel/src/empty-state/assets/vertical-stack/draft.tsx (1)

14-308: CamelCase all SVG attributes

Every SVG attribute in this TSX file currently uses kebab-case (stroke-width, fill-rule, etc.). React/TypeScript expect camelCase (strokeWidth, fillRule, clipRule, …); otherwise you get compile-time errors. Please update all of them.

♻️ Duplicate comments (1)
packages/propel/src/empty-state/empty-state.stories.tsx (1)

71-71: Grammar: “There are”

Replace "There're" with "There are".

-    title: "There're no progress metrics to show yet.",
+    title: "There are no progress metrics to show yet.",
🧹 Nitpick comments (14)
packages/propel/src/empty-state/assets/horizontal-stack/note.tsx (1)

4-4: Decorative SVGs: hide from AT and prevent focus.

Add aria-hidden and focusable for purely illustrative assets.

-  <svg width="52" height="59" viewBox="0 0 52 59" fill="none" xmlns="http://www.w3.org/2000/svg" className={className}>
+  <svg width="52" height="59" viewBox="0 0 52 59" fill="none" xmlns="http://www.w3.org/2000/svg" className={className} aria-hidden="true" focusable="false">
packages/propel/src/empty-state/assets/vertical-stack/teamspace.tsx (1)

4-11: Mark illustration as decorative (improves a11y).

Hide from assistive tech and remove focus.

   <svg
     width="162"
     height="188"
     viewBox="0 0 162 188"
     fill="none"
     xmlns="http://www.w3.org/2000/svg"
-    className={className}
+    className={className}
+    aria-hidden="true"
+    focusable="false"
   >
packages/propel/src/empty-state/assets/horizontal-stack/work-item.tsx (1)

4-4: Make SVG decorative by default.

-  <svg width="72" height="80" viewBox="0 0 72 80" fill="none" xmlns="http://www.w3.org/2000/svg" className={className}>
+  <svg width="72" height="80" viewBox="0 0 72 80" fill="none" xmlns="http://www.w3.org/2000/svg" className={className} aria-hidden="true" focusable="false">
packages/propel/src/empty-state/assets/vertical-stack/cycle.tsx (1)

236-239: Avoid clipPath ID collisions using React.useId().

Using a constant id risks collisions when multiple instances mount. Generate a unique id and reference it; also switch to camelCase attributes.

-import { TIllustrationAssetProps, ILLUSTRATION_COLOR_TOKEN_MAP } from "../helper";
+import { TIllustrationAssetProps, ILLUSTRATION_COLOR_TOKEN_MAP } from "../helper";
+import { useId } from "react";
 
-export const CycleVerticalStackIllustration = ({ className }: TIllustrationAssetProps) => (
-  <svg
+export const CycleVerticalStackIllustration = ({ className }: TIllustrationAssetProps) => {
+  const clipPathId = useId();
+  return (
+  <svg
     width="160"
     height="165"
     viewBox="0 0 160 165"
     fill="none"
     xmlns="http://www.w3.org/2000/svg"
-    className={className}
+    className={className}
+    aria-hidden="true"
+    focusable="false"
   >
-    <g clip-path="url(#clip0_446_128653)">
+    <g clipPath={`url(#${clipPathId})`}>
      ...
-    <defs>
-      <clipPath id="clip0_446_128653">
+    <defs>
+      <clipPath id={clipPathId}>
         <rect width="160" height="164" fill={ILLUSTRATION_COLOR_TOKEN_MAP.fill.primary} transform="translate(0 0.5)" />
       </clipPath>
     </defs>
-  </svg>
-);
+  </svg>
+  );
+};

Also applies to: 12-12

packages/propel/src/empty-state/assets/horizontal-stack/state.tsx (1)

4-4: Decorative SVG a11y.

-  <svg width="72" height="81" viewBox="0 0 72 81" fill="none" xmlns="http://www.w3.org/2000/svg" className={className}>
+  <svg width="72" height="81" viewBox="0 0 72 81" fill="none" xmlns="http://www.w3.org/2000/svg" className={className} aria-hidden="true" focusable="false">
packages/propel/src/empty-state/assets/vertical-stack/module.tsx (1)

4-11: Add aria-hidden/focusable for decorative SVG.

   <svg
     width="162"
     height="168"
     viewBox="0 0 162 168"
     fill="none"
     xmlns="http://www.w3.org/2000/svg"
-    className={className}
+    className={className}
+    aria-hidden="true"
+    focusable="false"
   >
packages/propel/src/empty-state/assets/vertical-stack/initiative.tsx (1)

4-11: Mark as decorative to improve accessibility.

   <svg
     width="162"
     height="171"
     viewBox="0 0 162 171"
     fill="none"
     xmlns="http://www.w3.org/2000/svg"
-    className={className}
+    className={className}
+    aria-hidden="true"
+    focusable="false"
   >
packages/propel/src/empty-state/assets/vertical-stack/epic.tsx (1)

4-11: Decorative SVG: add aria-hidden/focusable.

   <svg
     width="162"
     height="166"
     viewBox="0 0 162 166"
     fill="none"
     xmlns="http://www.w3.org/2000/svg"
-    className={className}
+    className={className}
+    aria-hidden="true"
+    focusable="false"
   >
packages/propel/src/empty-state/assets/horizontal-stack/constant.tsx (1)

1-21: Avoid potential barrel self-import cycles

Importing components from "./" (the same folder’s barrel) can create circular deps if that barrel re-exports this file. Safer: import components directly from their files (e.g., "./customer", "./epic", …).

Please confirm the barrel does not re-export constant.tsx; if it does, switch to direct imports.

packages/propel/src/empty-state/assets/vertical-stack/work-item.tsx (1)

17-19: Use React SVG camelCase props and forward a11y/rest props.

  • Replace hyphenated SVG attributes with camelCase for React/TSX (e.g., strokeWidth, strokeLinecap, strokeLinejoin, fillRule, clipRule). This improves type safety and consistency.
  • Consider extending TIllustrationAssetProps to accept/forward standard SVG props (e.g., role, aria-hidden, title) and spread them onto the root for accessibility.

Example (apply pattern across the file):

- <path stroke-width="0.4" stroke-linecap="round" stroke-linejoin="round" />
+ <path strokeWidth="0.4" strokeLinecap="round" strokeLinejoin="round" />

And for props forwarding (requires updating helper.tsx):

-export const WorkItemVerticalStackIllustration = ({ className }: TIllustrationAssetProps) => (
+export const WorkItemVerticalStackIllustration = ({ className, ...props }: TIllustrationAssetProps) => (
-  <svg ... className={className}>
+  <svg ... className={className} {...props}>

Optionally set width/height to "100%" and rely on viewBox + className for sizing flexibility.

Also applies to: 25-27, 35-37, 43-45, 51-53, 61-63, 65-73, 75-83, 101-105, 111-115, 133-139, 141-143, 145-153, 155-163, 167-173, 181-183, 187-193, 197-203, 205-213, 215-223, 225-233, 235-243

packages/propel/src/empty-state/assets/vertical-stack/no-access.tsx (1)

17-19: CamelCase SVG attributes + a11y/rest props.

  • Convert stroke-width/linecap/linejoin and fill-rule/clip-rule to strokeWidth/strokeLinecap/strokeLinejoin and fillRule/clipRule.
  • Allow forwarding standard SVG props for accessibility.

Example:

- <path fill-rule="evenodd" clip-rule="evenodd" stroke-width="0.5" />
+ <path fillRule="evenodd" clipRule="evenodd" strokeWidth="0.5" />

Consider: ({ className, ...props }: TIllustrationAssetProps) and {...props} on .

Also applies to: 25-27, 33-35, 41-45, 49-55, 59-63, 69-71, 73-79, 81-87, 89-95, 97-103, 105-111, 115-117, 119-121, 125-131, 135-141, 145-151, 155-161

packages/propel/src/empty-state/assets/horizontal-stack/priority.tsx (1)

10-13: Adopt React SVG camelCase props; enable passing a11y props.

  • Use strokeWidth/strokeLinecap/strokeLinejoin instead of hyphenated forms.
  • Forward {...props} to and extend the prop type to include SVG props for accessibility.

Example:

- stroke-width="0.25" stroke-linecap="round" stroke-linejoin="round"
+ strokeWidth="0.25" strokeLinecap="round" strokeLinejoin="round"

Also applies to: 18-21, 28-31, 36-39, 44-48, 58-60, 62-64, 66-68, 70-72

packages/propel/src/empty-state/empty-state.tsx (2)

36-41: Use stable keys for actions instead of array index.

Index keys cause reconciliation issues on change/reorder. Prefer a stable id (or label if guaranteed unique).

- {actions.map((action, index) => (
-   <Button key={index} ...
+ {actions.map((action) => (
+   <Button key={action.label} ...

If labels aren’t unique, add an id to ActionButton and key by it.


54-59: Align “detailed” layout items; mirror “simple” behavior.

Add items-start for detailed to align content consistently.

- const alignmentClass = type === "simple" ? "items-center text-center" : "text-left";
+ const alignmentClass = type === "simple" ? "items-center text-center" : "items-start text-left";

Optional: change asset wrapper from max-w-40 to w-40 for consistent sizing.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cbcb026 and ee68703.

📒 Files selected for processing (50)
  • .gitignore (1 hunks)
  • packages/propel/package.json (1 hunks)
  • packages/propel/src/empty-state/assets/helper.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/constant.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/customer.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/epic.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/estimate.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/export.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/index.ts (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/intake.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/label.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/link.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/members.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/note.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/priority.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/settings.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/state.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/template.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/token.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/unknown.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/update.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/webhook.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/work-item.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/worklog.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/index.ts (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/404-error.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/archived-cycle.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/archived-module.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/archived-work-item.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/constant.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/customer.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/cycle.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/dashboard.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/draft.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/epic.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/index.ts (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/initiative.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/invalid-link.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/module.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/no-access.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/page.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/project.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/server-error.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/teamspace.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/view.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/work-item.tsx (1 hunks)
  • packages/propel/src/empty-state/empty-state.stories.tsx (1 hunks)
  • packages/propel/src/empty-state/empty-state.tsx (1 hunks)
  • packages/propel/src/empty-state/index.ts (1 hunks)
  • packages/propel/tsdown.config.ts (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (41)
packages/propel/src/empty-state/assets/horizontal-stack/webhook.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/draft.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/404-error.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/worklog.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/archived-module.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/constant.tsx (19)
packages/propel/src/empty-state/assets/horizontal-stack/customer.tsx (1)
  • CustomerHorizontalStackIllustration (3-64)
packages/propel/src/empty-state/assets/horizontal-stack/epic.tsx (1)
  • EpicHorizontalStackIllustration (3-62)
packages/propel/src/empty-state/assets/horizontal-stack/estimate.tsx (1)
  • EstimateHorizontalStackIllustration (3-64)
packages/propel/src/empty-state/assets/horizontal-stack/export.tsx (1)
  • ExportHorizontalStackIllustration (3-70)
packages/propel/src/empty-state/assets/horizontal-stack/intake.tsx (1)
  • IntakeHorizontalStackIllustration (3-82)
packages/propel/src/empty-state/assets/horizontal-stack/label.tsx (1)
  • LabelHorizontalStackIllustration (3-68)
packages/propel/src/empty-state/assets/horizontal-stack/link.tsx (1)
  • LinkHorizontalStackIllustration (3-76)
packages/propel/src/empty-state/assets/horizontal-stack/members.tsx (1)
  • MembersHorizontalStackIllustration (3-82)
packages/propel/src/empty-state/assets/horizontal-stack/note.tsx (1)
  • NoteHorizontalStackIllustration (3-62)
packages/propel/src/empty-state/assets/horizontal-stack/priority.tsx (1)
  • PriorityHorizontalStackIllustration (3-74)
packages/propel/src/empty-state/assets/horizontal-stack/settings.tsx (1)
  • SettingsHorizontalStackIllustration (3-66)
packages/propel/src/empty-state/assets/horizontal-stack/state.tsx (1)
  • StateHorizontalStackIllustration (3-62)
packages/propel/src/empty-state/assets/horizontal-stack/template.tsx (1)
  • TemplateHorizontalStackIllustration (3-76)
packages/propel/src/empty-state/assets/horizontal-stack/token.tsx (1)
  • TokenHorizontalStackIllustration (3-70)
packages/propel/src/empty-state/assets/horizontal-stack/unknown.tsx (1)
  • UnknownHorizontalStackIllustration (3-77)
packages/propel/src/empty-state/assets/horizontal-stack/update.tsx (1)
  • UpdateHorizontalStackIllustration (3-68)
packages/propel/src/empty-state/assets/horizontal-stack/webhook.tsx (1)
  • WebhookHorizontalStackIllustration (3-62)
packages/propel/src/empty-state/assets/horizontal-stack/work-item.tsx (1)
  • WorkItemHorizontalStackIllustration (3-76)
packages/propel/src/empty-state/assets/horizontal-stack/worklog.tsx (1)
  • WorklogHorizontalStackIllustration (3-70)
packages/propel/src/empty-state/assets/horizontal-stack/token.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/dashboard.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/project.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/note.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/unknown.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/invalid-link.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/teamspace.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/page.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/export.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/members.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/cycle.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/update.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/epic.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/work-item.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/state.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/work-item.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/label.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/settings.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/estimate.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/view.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/module.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/intake.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/customer.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/archived-work-item.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/template.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/link.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/no-access.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/priority.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/server-error.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/epic.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/customer.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/empty-state.tsx (1)
packages/propel/src/button/helper.tsx (1)
  • TButtonVariant (1-12)
packages/propel/src/empty-state/assets/vertical-stack/initiative.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/archived-cycle.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/empty-state.stories.tsx (3)
packages/propel/src/empty-state/empty-state.tsx (2)
  • EmptyStateProps (14-21)
  • EmptyState (46-62)
packages/propel/src/empty-state/assets/horizontal-stack/constant.tsx (1)
  • HorizontalStackAssetsMap (23-100)
packages/propel/src/empty-state/assets/vertical-stack/constant.tsx (1)
  • VerticalStackAssetsMap (22-95)
🪛 GitHub Actions: Build and lint web apps
packages/propel/src/empty-state/empty-state.stories.tsx

[error] 7-7: ./empty-state' import is duplicated no-duplicate-imports

🪛 GitHub Check: Build and lint web apps
packages/propel/src/empty-state/empty-state.stories.tsx

[failure] 7-7:
'./empty-state' import is duplicated

⏰ 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). (1)
  • GitHub Check: Analyze (javascript)
🔇 Additional comments (9)
.gitignore (1)

101-103: LGTM

Adding CLAUDE.md here keeps the Storybook static bundle free of stray docs—no concerns.

packages/propel/src/empty-state/index.ts (1)

1-1: Public barrel looks good

Aligns with package export; no issues.

packages/propel/tsdown.config.ts (1)

17-17: Build entry added correctly

Including empty-state in tsdown entries is correct.

packages/propel/package.json (1)

31-31: Export mapping added correctly

Matches the barrel and tsdown entry; looks good.

packages/propel/src/empty-state/assets/index.ts (1)

1-3: Barrel re-exports are correct

Consolidated exports look good.

packages/propel/src/empty-state/assets/vertical-stack/constant.tsx (1)

22-94: LGTM

The registry wiring looks good and matches the newly added assets.

packages/propel/src/empty-state/empty-state.stories.tsx (1)

70-71: Verify Tailwind class h-45 exists.

If not in your theme, use a supported size (e.g., h-40 or h-44) or a custom utility.

packages/propel/src/empty-state/assets/vertical-stack/index.ts (1)

1-19: Barrel looks good.

Re-exports are consistent and cohesive.

packages/propel/src/empty-state/assets/horizontal-stack/index.ts (1)

1-19: Barrel looks good.

Clean, comprehensive re-exports.

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

♻️ Duplicate comments (2)
packages/propel/src/empty-state/assets/horizontal-stack/note.tsx (1)

4-4: Add the decorative SVG accessibility flags that were requested earlier.

The earlier review asked for aria-hidden/focusable="false" on this illustration, but they’re still missing, so assistive tech will surface an unlabeled graphic.

-  <svg width="52" height="59" viewBox="0 0 52 59" fill="none" xmlns="http://www.w3.org/2000/svg" className={className}>
+  <svg
+    width="52"
+    height="59"
+    viewBox="0 0 52 59"
+    fill="none"
+    xmlns="http://www.w3.org/2000/svg"
+    className={className}
+    aria-hidden="true"
+    focusable="false"
+  >
packages/propel/src/empty-state/empty-state.stories.tsx (1)

69-72: Fix grammar in the “Simple” story title.
The string reverted to “There're…”, which is ungrammatical; please switch back to “There are…” so the UI copy reads correctly.

-    title: "There're no progress metrics to show yet.",
+    title: "There are no progress metrics to show yet.",
🧹 Nitpick comments (5)
packages/propel/src/empty-state/assets/vertical-stack/server-error.tsx (1)

3-11: Hide the decorative SVG from assistive tech

This illustration has no accessible name, so screen readers can announce a meaningless “graphic”. Add aria-hidden="true" (and focusable="false" for IE/Edge) on the <svg> so the empty state layout stays quiet for AT users.

packages/propel/src/empty-state/assets/vertical-stack/work-item.tsx (1)

3-11: Consider accessibility and performance enhancements.

Two optional improvements to consider:

  1. Accessibility: Since this is likely a decorative illustration in an empty state, consider adding aria-hidden="true" to indicate it's purely decorative, or add a descriptive aria-label if it conveys meaningful information to screen reader users.

  2. Performance: If this component is rendered frequently or in lists, wrapping it with React.memo could prevent unnecessary re-renders when parent components update.

Example with both enhancements:

+import { memo } from 'react';
 import { type TIllustrationAssetProps, ILLUSTRATION_COLOR_TOKEN_MAP } from "../helper";

-export const WorkItemVerticalStackIllustration = ({ className }: TIllustrationAssetProps) => (
+export const WorkItemVerticalStackIllustration = memo(({ className }: TIllustrationAssetProps) => (
   <svg
     width="162"
     height="180"
     viewBox="0 0 162 180"
     fill="none"
     xmlns="http://www.w3.org/2000/svg"
     className={className}
+    aria-hidden="true"
   >
     {/* ... rest of SVG content ... */}
   </svg>
-);
+));
+
+WorkItemVerticalStackIllustration.displayName = 'WorkItemVerticalStackIllustration';
packages/propel/src/empty-state/assets/horizontal-stack/token.tsx (1)

4-4: Mark decorative SVGs as aria-hidden.

These illustration components are decorative, but the root <svg> lacks aria-hidden/focusable so assistive tech will still announce an unlabeled graphic. Please mirror the pattern we use elsewhere and flag it decorative.

-  <svg width="81" height="92" viewBox="0 0 81 92" fill="none" xmlns="http://www.w3.org/2000/svg" className={className}>
+  <svg
+    width="81"
+    height="92"
+    viewBox="0 0 81 92"
+    fill="none"
+    xmlns="http://www.w3.org/2000/svg"
+    className={className}
+    aria-hidden="true"
+    focusable="false"
+  >
packages/propel/src/empty-state/assets/vertical-stack/404-error.tsx (1)

4-11: Flag large decorative SVG as hidden from a11y tools.

Without aria-hidden/focusable="false" this sizeable illustration shows up to screen readers as an empty graphic. Please mark it decorative.

   <svg
     width="162"
     height="173"
     viewBox="0 0 162 173"
     fill="none"
     xmlns="http://www.w3.org/2000/svg"
     className={className}
+    aria-hidden="true"
+    focusable="false"
   >
packages/propel/src/empty-state/assets/vertical-stack/archived-cycle.tsx (1)

4-11: Hide this decorative SVG from screen readers.

Like the other empty-state assets, this SVG should ship with aria-hidden/focusable="false" so assistive tech isn’t forced to announce an unlabeled image.

   <svg
     width="162"
     height="175"
     viewBox="0 0 162 175"
     fill="none"
     xmlns="http://www.w3.org/2000/svg"
     className={className}
+    aria-hidden="true"
+    focusable="false"
   >
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ee68703 and dbde562.

📒 Files selected for processing (43)
  • .gitignore (1 hunks)
  • packages/propel/package.json (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/customer.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/epic.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/estimate.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/export.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/intake.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/label.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/link.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/members.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/note.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/priority.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/settings.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/state.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/template.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/token.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/unknown.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/update.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/webhook.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/work-item.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/horizontal-stack/worklog.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/404-error.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/archived-cycle.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/archived-module.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/archived-work-item.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/customer.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/cycle.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/dashboard.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/draft.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/epic.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/initiative.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/invalid-link.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/module.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/no-access.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/page.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/project.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/server-error.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/teamspace.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/view.tsx (1 hunks)
  • packages/propel/src/empty-state/assets/vertical-stack/work-item.tsx (1 hunks)
  • packages/propel/src/empty-state/empty-state.stories.tsx (1 hunks)
  • packages/propel/src/icons/brand/zerodha-logo.tsx (1 hunks)
  • packages/propel/tsdown.config.ts (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • .gitignore
🚧 Files skipped from review as they are similar to previous changes (27)
  • packages/propel/src/empty-state/assets/horizontal-stack/customer.tsx
  • packages/propel/src/empty-state/assets/vertical-stack/page.tsx
  • packages/propel/src/empty-state/assets/horizontal-stack/estimate.tsx
  • packages/propel/src/empty-state/assets/horizontal-stack/settings.tsx
  • packages/propel/src/empty-state/assets/horizontal-stack/members.tsx
  • packages/propel/src/empty-state/assets/horizontal-stack/template.tsx
  • packages/propel/src/empty-state/assets/horizontal-stack/webhook.tsx
  • packages/propel/src/empty-state/assets/horizontal-stack/label.tsx
  • packages/propel/src/empty-state/assets/vertical-stack/view.tsx
  • packages/propel/src/empty-state/assets/vertical-stack/module.tsx
  • packages/propel/src/empty-state/assets/vertical-stack/draft.tsx
  • packages/propel/src/empty-state/assets/vertical-stack/cycle.tsx
  • packages/propel/src/empty-state/assets/vertical-stack/epic.tsx
  • packages/propel/src/empty-state/assets/vertical-stack/archived-module.tsx
  • packages/propel/src/empty-state/assets/vertical-stack/archived-work-item.tsx
  • packages/propel/src/empty-state/assets/horizontal-stack/work-item.tsx
  • packages/propel/src/empty-state/assets/vertical-stack/initiative.tsx
  • packages/propel/src/empty-state/assets/horizontal-stack/priority.tsx
  • packages/propel/src/empty-state/assets/vertical-stack/invalid-link.tsx
  • packages/propel/tsdown.config.ts
  • packages/propel/src/empty-state/assets/horizontal-stack/worklog.tsx
  • packages/propel/src/empty-state/assets/horizontal-stack/state.tsx
  • packages/propel/src/empty-state/assets/vertical-stack/customer.tsx
  • packages/propel/src/empty-state/assets/vertical-stack/project.tsx
  • packages/propel/src/empty-state/assets/horizontal-stack/link.tsx
  • packages/propel/src/empty-state/assets/horizontal-stack/unknown.tsx
  • packages/propel/src/empty-state/assets/horizontal-stack/export.tsx
🧰 Additional context used
🧬 Code graph analysis (13)
packages/propel/src/empty-state/assets/horizontal-stack/intake.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/teamspace.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/404-error.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/work-item.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/archived-cycle.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/update.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/no-access.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/token.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/empty-state.stories.tsx (3)
packages/propel/src/empty-state/empty-state.tsx (2)
  • EmptyStateProps (14-21)
  • EmptyState (46-62)
packages/propel/src/empty-state/assets/horizontal-stack/constant.tsx (1)
  • HorizontalStackAssetsMap (23-100)
packages/propel/src/empty-state/assets/vertical-stack/constant.tsx (1)
  • VerticalStackAssetsMap (22-95)
packages/propel/src/empty-state/assets/horizontal-stack/note.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/horizontal-stack/epic.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/server-error.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (1-11)
packages/propel/src/empty-state/assets/vertical-stack/dashboard.tsx (1)
packages/propel/src/empty-state/assets/helper.tsx (2)
  • TIllustrationAssetProps (13-15)
  • ILLUSTRATION_COLOR_TOKEN_MAP (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). (2)
  • GitHub Check: Build and lint web apps
  • GitHub Check: Analyze (javascript)
🔇 Additional comments (2)
packages/propel/src/empty-state/assets/vertical-stack/work-item.tsx (1)

1-245: LGTM! Clean implementation following established patterns.

The component correctly:

  • Uses proper TypeScript typing with TIllustrationAssetProps
  • Forwards the className prop to the root SVG element
  • Leverages color tokens from ILLUSTRATION_COLOR_TOKEN_MAP for consistent theming
  • Uses camelCase SVG attributes appropriate for React/JSX
packages/propel/src/empty-state/assets/horizontal-stack/intake.tsx (1)

1-82: LGTM! Previous SVG attribute issue resolved.

The component is well-implemented. All SVG attributes are properly camelCased (strokeWidth, strokeLinecap, strokeLinejoin, fillRule, clipRule), correctly addressing the previous review concern. The component structure is clean, uses the color token map appropriately, and follows React/TSX conventions.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
packages/propel/package.json (1)

99-102: Subpath export for “./empty-state” is correct; src/empty-state/index.ts is included in tsdown’s entries with dts: true. Consider adding a "types": "./dist/empty-state/index.d.ts" condition alongside "import" and "require" for each export.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between dbde562 and 25cc997.

📒 Files selected for processing (1)
  • packages/propel/package.json (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: Build and lint web apps
  • GitHub Check: Analyze (javascript)

@pushya22 pushya22 merged commit d38f481 into preview Oct 7, 2025
6 checks passed
@pushya22 pushya22 deleted the dev-empty-state-v2 branch October 7, 2025 15:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants