Skip to content

feat: progressbar#325

Merged
joacotornello merged 19 commits intomasterfrom
feat/progress-bar
Aug 4, 2025
Merged

feat: progressbar#325
joacotornello merged 19 commits intomasterfrom
feat/progress-bar

Conversation

@joacotornello
Copy link
Copy Markdown
Contributor

@joacotornello joacotornello commented Jul 31, 2025

Type

  • Bugfix 🐛
  • New feature 🌈
  • Change request 🤓
  • Documentation 📚
  • Tech debt 👩‍💻

Changes proposed ✔️

Summary by CodeRabbit

  • New Features

    • Introduced a new ProgressBar component with customizable appearance variants and progress value control.
    • Added a ProgressBar Skeleton component for loading states.
    • Enhanced accessibility with appropriate ARIA attributes.
    • Updated documentation and changelogs to detail the new component and its usage.
  • Documentation

    • Provided detailed usage guidelines, installation instructions, and accessibility information for the ProgressBar.
  • Tests

    • Implemented tests covering rendering, value boundaries, appearance variants, and accessibility compliance.
    • Added tests for the ProgressBar Skeleton component verifying styling and props.
  • Chores

    • Added configuration, path mappings, and exports to integrate the ProgressBar package into the project.
    • Updated build and webpack configurations to support the new component.

Screenshots

Captura de pantalla 2025-08-01 a la(s) 10 30 05 a  m

@joacotornello joacotornello requested a review from a team July 31, 2025 15:09
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Jul 31, 2025

Warning

Rate limit exceeded

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

⌛ How to resolve this issue?

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

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

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

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

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 9669063 and b934895.

⛔ Files ignored due to path filters (2)
  • packages/react/src/atomic/Icon/src/icon.docs.json is excluded by !**/*.docs.json
  • packages/react/src/atomic/ProgressBar/src/progressBar.docs.json is excluded by !**/*.docs.json
📒 Files selected for processing (5)
  • packages/core/styles/src/packages/atomic/progressBar/nimbus-progressBar.css.ts (1 hunks)
  • packages/react/src/atomic/ProgressBar/CHANGELOG.md (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/progressBar.spec.tsx (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/progressBar.stories.tsx (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/progressBar.types.ts (1 hunks)
📝 Walkthrough

Walkthrough

A new atomic ProgressBar component was introduced to the design system, including its styles, TypeScript types, React implementation, Storybook stories, tests, and documentation. Supporting configuration files, changelog entries, and path mappings were added or updated to integrate the new component into the monorepo and ensure accessibility, theming, and package distribution.

Changes

Cohort / File(s) Change Summary
Jest & TypeScript Config
jest.config.ts, tsconfig.json
Added module alias/path mapping for @nimbus-ds/progress-bar pointing to the ProgressBar source directory.
Core Styles: Changelog & Index
packages/core/styles/CHANGELOG.md, packages/core/styles/src/index.ts
Added changelog entry for progress-bar styles and exported progressBar from atomic styles index.
Core Styles: ProgressBar Implementation
packages/core/styles/src/packages/atomic/progressBar/index.ts, packages/core/styles/src/packages/atomic/progressBar/nimbus-progressBar.css.ts
Introduced ProgressBar style module and CSS-in-JS definitions for container and appearance variants.
React Package: Changelog & Entry
packages/react/CHANGELOG.md, packages/react/src/index.ts
Added changelog entry for ProgressBar and exported it from the main React package index.
ProgressBar Package: Documentation & Config
packages/react/src/atomic/ProgressBar/CHANGELOG.md, packages/react/src/atomic/ProgressBar/README.md, packages/react/src/atomic/ProgressBar/package.json, packages/react/src/atomic/ProgressBar/tsconfig.json, packages/react/src/atomic/ProgressBar/webpack.config.ts
Added changelog, README, package.json, TypeScript config, and webpack config for the ProgressBar package.
ProgressBar Component: Implementation
packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx, packages/react/src/atomic/ProgressBar/src/index.ts
Implemented the ProgressBar React component with ARIA support, appearance variants, and subcomponent attachment.
ProgressBar Component: Types
packages/react/src/atomic/ProgressBar/src/progressBar.types.ts, packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.types.tsx
Defined TypeScript interfaces and prop types for ProgressBar and its Skeleton subcomponent.
ProgressBar Skeleton: Implementation & Story
packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.tsx, packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.stories.tsx
Added ProgressBarSkeleton component and Storybook story.
ProgressBar Skeleton: Exports
packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/index.ts, packages/react/src/atomic/ProgressBar/src/components/index.ts
Re-exported ProgressBarSkeleton from component-level index files.
ProgressBar: Storybook
packages/react/src/atomic/ProgressBar/src/progressBar.stories.tsx
Added Storybook stories for ProgressBar with controls for value and appearance.
ProgressBar: Tests
packages/react/src/atomic/ProgressBar/src/progressBar.spec.tsx, packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/progressBarSkeleton.spec.tsx
Added tests for ProgressBar rendering, ARIA attributes, value clamping, appearance variants, and ProgressBarSkeleton styling and test ID support.
Core Webpack: External Packages
packages/core/webpack/src/config/external.ts, packages/core/webpack/CHANGELOG.md
Added @nimbus-ds/progress-bar to webpack external packages and documented in changelog.

Sequence Diagram(s)

sequenceDiagram
  participant App as Application
  participant ProgressBar as ProgressBar Component
  participant Styles as ProgressBar Styles
  participant Skeleton as ProgressBarSkeleton

  App->>ProgressBar: Render with { value, appearance, ... }
  ProgressBar->>Styles: Import classNames for container & appearance
  ProgressBar->>ProgressBar: Clamp value (0-100), set ARIA attrs
  ProgressBar->>App: Render container & fill divs with styles
  App->>ProgressBar: Use ProgressBar.Skeleton (optional)
  ProgressBar->>Skeleton: Render Skeleton with width/height
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~15–20 minutes

Suggested labels

enhancement, documentation, good first issue

✨ 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/progress-bar

🪧 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.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

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

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

CodeRabbit Commands (Invoked using PR comments)

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

Other keywords and placeholders

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

Documentation and Community

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jul 31, 2025

Getting started

Please make sure you read our documentation on how to write code for components, stories and styles.

  • Provide a list of changes
  • Include images to help better visualize your work
  • If your PR closes an issue, please link it
  • Add reviewers
  • Add a label to help better understand what your changes are related to

Copy link
Copy Markdown
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

🔭 Outside diff range comments (1)
packages/react/src/atomic/ProgressBar/CHANGELOG.md (1)

5-15: Fix placeholder PR link, trailing spaces & guideline compliance

  1. Replace [#PR] with the real PR number #325 and add author.
  2. Remove trailing spaces on Line 14.
  3. Follow changelog template – include “Others” section even if empty.
-### 🎉 New features
+### 🎉 New features
-- Added ProgressBar component. ([#PR](https://github.com/TiendaNube/nimbus-design-system/pull/PR))
+- Added ProgressBar component. ([#325](https://github.com/TiendaNube/nimbus-design-system/pull/325) by @joacotornello)
-Added proper TypeScript types and documentation.␠
+Added proper TypeScript types and documentation.
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Knowledge Base: Disabled due to Reviews > Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between 7109dd1 and 3cf8724.

⛔ Files ignored due to path filters (5)
  • .yarn/versions/61e59c2c.yml is excluded by !**/.yarn/**
  • packages/react/src/atomic/ProgressBar/src/progressBar.docs.json is excluded by !**/*.docs.json
  • packages/react/src/composite/ScrollPane/src/scrollPane.docs.json is excluded by !**/*.docs.json
  • packages/react/src/composite/SegmentedControl/src/segmentedControl.docs.json is excluded by !**/*.docs.json
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock, !**/*.lock
📒 Files selected for processing (23)
  • jest.config.ts (1 hunks)
  • packages/core/styles/CHANGELOG.md (1 hunks)
  • packages/core/styles/src/index.ts (2 hunks)
  • packages/core/styles/src/packages/atomic/progressBar/index.ts (1 hunks)
  • packages/core/styles/src/packages/atomic/progressBar/nimbus-progressBar.css.ts (1 hunks)
  • packages/react/CHANGELOG.md (1 hunks)
  • packages/react/src/atomic/ProgressBar/CHANGELOG.md (1 hunks)
  • packages/react/src/atomic/ProgressBar/README.md (1 hunks)
  • packages/react/src/atomic/ProgressBar/package.json (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.stories.tsx (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.tsx (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.types.tsx (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/index.ts (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/components/index.ts (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/index.ts (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/progressBar.spec.tsx (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/progressBar.stories.tsx (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/progressBar.types.ts (1 hunks)
  • packages/react/src/atomic/ProgressBar/tsconfig.json (1 hunks)
  • packages/react/src/atomic/ProgressBar/webpack.config.ts (1 hunks)
  • packages/react/src/index.ts (2 hunks)
  • tsconfig.json (1 hunks)
🧰 Additional context used
📓 Path-based instructions (5)
**/*.{ts,tsx}

⚙️ CodeRabbit Configuration File

**/*.{ts,tsx}: Review the React and TypeScript code for adherence to component design system best practices, including:

  • Component reusability, composability, and proper prop interfaces
  • Consistent usage of @nimbus-ds/styles package for styling and theming
  • Accessibility compliance (WCAG guidelines, ARIA attributes, keyboard navigation)
  • Cross-browser compatibility and progressive enhancement
  • Maintain comprehensive JSDoc comments with consistent style, documenting complex logic, and relevant references
  • Full testing coverage (Jest unit tests)
  • Performance optimization (memoization, loops)
  • Responsive design patterns
  • Component scalability and maintainability
  • Proper TypeScript types and interfaces usage
  • Component, prop, and storybook documentation
    Highlight any deviations from these standards.

Files:

  • packages/react/src/atomic/ProgressBar/src/components/index.ts
  • packages/react/src/atomic/ProgressBar/webpack.config.ts
  • packages/core/styles/src/packages/atomic/progressBar/index.ts
  • jest.config.ts
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.types.tsx
  • packages/react/src/index.ts
  • packages/core/styles/src/index.ts
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.tsx
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/index.ts
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.stories.tsx
  • packages/react/src/atomic/ProgressBar/src/progressBar.spec.tsx
  • packages/react/src/atomic/ProgressBar/src/index.ts
  • packages/core/styles/src/packages/atomic/progressBar/nimbus-progressBar.css.ts
  • packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx
  • packages/react/src/atomic/ProgressBar/src/progressBar.types.ts
  • packages/react/src/atomic/ProgressBar/src/progressBar.stories.tsx
**/packages/react/src/atomic/**/*.{ts,tsx}

⚙️ CodeRabbit Configuration File

**/packages/react/src/atomic/**/*.{ts,tsx}: Review atomic components for dependency management in monorepo context:

  • Evaluate if the component is a common dependency across multiple packages
  • If widely used as a dependency, recommend adding the package name to the 'externals' attribute in webpack.config
  • This prevents the component from being bundled multiple times across different packages
  • Ensure proper package naming and versioning for external configuration
  • Verify that the component is properly exported and consumed by dependent packages
  • Check for circular dependencies and proper dependency tree structure
    Flag components that should be added to webpack 'externals' to optimize bundle size and prevent duplicate code in the monorepo build.

Files:

  • packages/react/src/atomic/ProgressBar/src/components/index.ts
  • packages/react/src/atomic/ProgressBar/webpack.config.ts
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.types.tsx
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.tsx
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/index.ts
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.stories.tsx
  • packages/react/src/atomic/ProgressBar/src/progressBar.spec.tsx
  • packages/react/src/atomic/ProgressBar/src/index.ts
  • packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx
  • packages/react/src/atomic/ProgressBar/src/progressBar.types.ts
  • packages/react/src/atomic/ProgressBar/src/progressBar.stories.tsx
**/CHANGELOG.md

⚙️ CodeRabbit Configuration File

Ensure CHANGELOG.md updates follow the established format: YYYY-MM-DD version with categorized entries (Breaking changes, New features, Bug fixes, Others). Each entry must include PR reference and author, and changes must be properly versioned (major/minor/patch). Changes MUST be documented in their respective package's CHANGELOG.md.

Files:

  • packages/core/styles/CHANGELOG.md
  • packages/react/src/atomic/ProgressBar/CHANGELOG.md
  • packages/react/CHANGELOG.md
**/package.json

⚙️ CodeRabbit Configuration File

Verify version updates follow SemVer: major for breaking changes, minor for new features, patch for bug fixes. Ensure dependencies are properly versioned and peer dependencies are correctly specified.

Files:

  • packages/react/src/atomic/ProgressBar/package.json
**/*.types.ts

⚙️ CodeRabbit Configuration File

**/*.types.ts: Review TypeScript type definitions following these standards:

  • Always export a 'ComponentNameProperties' interface, where the ComponentName is the name of the component. This interface should NOT inherit HTMLElement properties or BoxProperties, not any big interface as it will be used for documentation. It should ONLY contain the specific props this component defines.
  • Prefer type aliases for unions, intersections, and simple object types
  • Keep types and interfaces focused and single-purpose
  • Use proper JSDoc comments for all exported types
  • Leverage TypeScript utility types when appropriate (Partial, Pick, Omit)
  • Ensure type names are descriptive and follow PascalCase convention
  • Avoid type 'any' - use 'unknown' for truly unknown types
    Flag any deviations from these patterns.

Files:

  • packages/react/src/atomic/ProgressBar/src/progressBar.types.ts
🧬 Code Graph Analysis (1)
packages/core/styles/src/packages/atomic/progressBar/nimbus-progressBar.css.ts (1)
packages/core/styles/src/themes/globals.css.ts (1)
  • varsThemeBase (191-191)
🪛 markdownlint-cli2 (0.17.2)
packages/core/styles/CHANGELOG.md

7-7: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4

(MD001, heading-increment)

packages/react/src/atomic/ProgressBar/README.md

43-43: Lists should be surrounded by blank lines

(MD032, blanks-around-lists)


51-51: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


51-51: Inline HTML
Element: img

(MD033, no-inline-html)

packages/react/src/atomic/ProgressBar/CHANGELOG.md

14-14: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)

packages/react/CHANGELOG.md

7-7: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4

(MD001, heading-increment)

🪛 LanguageTool
packages/react/src/atomic/ProgressBar/README.md

[grammar] ~5-~5: Use correct spacing
Context: ...ess of an operation or task in a visual format. ## Installation ```sh $ yarn add @nimbus-d...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~15-~15: Use correct spacing
Context: ...mbus-ds/progress-bar ``` ### Component Anatomy The component consists of a horizontal b...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~17-~17: Use correct spacing
Context: ...rogress value as a percentage from 0 to 100. ## Guidelines We use the ProgressBar compo...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~21-~21: Use correct spacing
Context: ...of operations, tasks, or any measurable progress. ### Variants The component has 5 appearance...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~25-~25: There might be a problem here.
Context: ...iants that can be used according to the context: - Neutral - Used for general progress indication without...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~28-~28: There might be a problem here.
Context: ...n without specific semantic meaning - Primary - Used to highlight important progress or main...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~29-~29: There might be a problem here.
Context: ... important progress or main tasks - Success - Used to indicate positive progress or succes...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~30-~30: There might be a problem here.
Context: ...ess or successful completion stages - Warning - Used to indicate caution or attention-requir...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~31-~31: There might be a problem here.
Context: ...tion or attention-required progress - Danger - Used to indicate critical or error-related p...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~31-~31: Use correct spacing
Context: ...d to indicate critical or error-related progress ### Usage recommendations - Use to show com...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~33-~33: There might be a problem here.
Context: ...al or error-related progress ### Usage recommendations - Use to show completion percentage of tasks,...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~35-~35: Use articles correctly
Context: ...## Usage recommendations - Use to show completion percentage of tasks, uploads, downloads...

(QB_NEW_EN_OTHER_ERROR_IDS_11)


[grammar] ~35-~35: There might be a mistake here.
Context: ..., uploads, downloads, or any measurable operation - Ensure the progress value is meaningful ...

(QB_NEW_EN_OTHER)


[grammar] ~36-~36: There might be a mistake here.
Context: ...rately represents the actual completion state - Consider adding text labels to provide a...

(QB_NEW_EN_OTHER)


[grammar] ~37-~37: There might be a mistake here.
Context: ...bels to provide additional context when necessary - Use appropriate appearance variants to c...

(QB_NEW_EN_OTHER)


[grammar] ~38-~38: There might be a problem here.
Context: ...s to convey the semantic meaning of the progress ### Accessibility The component includes proper ARIA attri...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~42-~42: Use correct spacing
Context: ...ity The component includes proper ARIA attributes: - role="progressbar" to identify the element as a progress indi...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~43-~43: There might be a mistake here.
Context: ...to identify the element as a progress indicator -aria-valuenow` to indicate the current progress value -...

(QB_NEW_EN_OTHER)


[grammar] ~44-~44: There might be a mistake here.
Context: ...uenowto indicate the current progress value -aria-valueminandaria-valuemax` to define the range ...

(QB_NEW_EN_OTHER)


[grammar] ~45-~45: There might be a problem here.
Context: ...and aria-valuemax to define the range (0-100) ## Usage View docs [here](https://nimbus.nuvemsho...

(QB_NEW_EN_MERGED_MATCH)

packages/react/src/atomic/ProgressBar/CHANGELOG.md

[grammar] ~1-~1: Use correct spacing
Context: # Changelog The ProgressBar component allows us to d...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~3-~3: Use correct spacing
Context: ...ess of an operation or task in a visual format. ## 2025-07-31 1.0.0 ### 🎉 New features ...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~7-~7: Use correct spacing
Context: ...mat. ## 2025-07-31 1.0.0 ### 🎉 New features - Added ProgressBar component. ([#PR](http...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~11-~11: Insert the missing word
Context: ...th variants: primary, success, warning, danger, neutral. - Added ProgressBar skeleton c...

(QB_NEW_EN_OTHER_ERROR_IDS_32)


[style] ~13-~13: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...Added ProgressBar skeleton component. - Added accessibility support with ARIA attribu...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~14-~14: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ibility support with ARIA attributes. - Added proper TypeScript types and documentati...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

⏰ Context from checks skipped due to timeout of 30000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: pipeline-quality
  • GitHub Check: Analyze SonarCloud
  • GitHub Check: build-and-deploy
🔇 Additional comments (14)
jest.config.ts (1)

39-40: Alias looks good – remember Storybook/Webpack

Jest can now resolve the module, but Storybook and the production webpack config will also need the same alias to prevent duplicate bundles or resolution failures.

packages/react/src/atomic/ProgressBar/src/components/index.ts (1)

1-1: Re-export looks good

Centralising exports keeps consumer imports succinct and matches the pattern used by other atomics.

packages/react/src/atomic/ProgressBar/tsconfig.json (1)

1-5: Verify the extends path actually resolves

"../../../../../tsconfig.json" climbs five levels up from
packages/react/src/atomic/ProgressBar.
That lands in the repository root, bypassing the package-level packages/react/tsconfig.json (if one exists).
Double-check that the intended base config is indeed the root file; otherwise type-checking rules may drift.

packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.tsx (1)

5-8: Expose decorative intent for assistive tech

A skeleton is purely visual; add aria-hidden so screen-readers skip it (unless @nimbus-ds/skeleton already handles this, which isn’t guaranteed).

-}) => <Skeleton width={width} height="0.5rem" borderRadius="0.5rem" {...rest} />;
+}) => (
+  <Skeleton
+    width={width}
+    height="0.5rem"
+    borderRadius="0.5rem"
+    aria-hidden
+    {...rest}
+  />
+);
packages/react/src/atomic/ProgressBar/src/index.ts (1)

1-7: Solid entry point implementation following atomic design patterns.

The module structure correctly implements the standard atomic component pattern with proper client-side directive, clean imports/exports, and TypeScript type safety. The dual export approach (named + default) provides consumer flexibility.

packages/react/src/atomic/ProgressBar/src/progressBar.spec.tsx (1)

1-85: Exemplary test coverage demonstrating design system best practices.

The test suite excellently covers all critical aspects:

  • ✅ ARIA accessibility attributes compliance
  • ✅ Value boundary validation (clamping 0-100)
  • ✅ Complete appearance variant coverage
  • ✅ Proper BDD structure and testing patterns

This level of testing ensures component reliability and accessibility compliance across the design system.

packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.types.tsx (1)

1-7: Clean TypeScript patterns for skeleton component integration.

The type definition correctly leverages design system composition by selectively picking relevant SkeletonProps and making them optional via Partial. This approach maintains type safety while providing appropriate flexibility for skeleton loading states.

packages/react/src/atomic/ProgressBar/package.json (2)

1-37: Solid package configuration following design system conventions.

The package.json correctly implements monorepo patterns with appropriate dependencies and peer dependency management. Configuration supports the atomic component architecture well.


2-2: Ignore adding the component itself to webpack externals
Webpack’s externals option is intended to exclude peer dependencies (e.g. react, react-dom) from the bundle—not to externalize the entry library itself. In packages/react/src/atomic/ProgressBar/webpack.config.ts the UMD library output is correctly configured; you should NOT add "@nimbus-ds/progress-bar" to externals.

If anything, ensure only actual peer dependencies are marked external.

Likely an incorrect or invalid review comment.

packages/react/src/atomic/ProgressBar/README.md (1)

1-51: Comprehensive documentation following design system standards.

The README provides excellent coverage of component usage, variants, accessibility features, and guidelines. The accessibility documentation particularly well documents ARIA compliance and semantic variant meanings.

packages/react/src/atomic/ProgressBar/src/progressBar.stories.tsx (1)

1-39: Excellent Storybook story implementation following design system conventions.

The story configuration demonstrates solid adherence to atomic design principles with proper typing, comprehensive controls, and appropriate documentation. The Box wrapper provides consistent presentation constraints, and the argTypes properly expose the component's key functionality.

packages/react/src/atomic/ProgressBar/src/progressBar.types.ts (1)

1-21: Perfect adherence to TypeScript coding guidelines for design system components.

The type definitions demonstrate exemplary patterns:

  • ProgressBarProperties correctly contains only component-specific props without inheriting from HTML interfaces
  • Proper use of TypeScript utility types with Omit for clean prop composition
  • Comprehensive JSDoc documentation with default value annotations
  • Clean separation between component interface and base props type

This is exactly how type definitions should be structured in atomic components.

packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx (2)

7-18: Excellent JSDoc documentation with comprehensive examples.

The component documentation provides clear usage examples for both the main component and skeleton variant, following design system documentation standards perfectly.


56-61: No externals update needed for @nimbus-ds/progress-bar

  • No imports of @nimbus-ds/progress-bar were found outside its own package.
  • Current webpack externals only target vscode; adding ProgressBar would be premature.

Comment thread packages/core/styles/CHANGELOG.md Outdated
Comment thread packages/core/styles/src/index.ts
Comment thread packages/core/styles/src/packages/atomic/progressBar/index.ts
Comment thread packages/core/styles/src/packages/atomic/progressBar/nimbus-progressBar.css.ts Outdated
Comment thread packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx
Comment thread packages/react/src/atomic/ProgressBar/webpack.config.ts
Comment thread packages/react/src/atomic/ProgressBar/webpack.config.ts
Comment thread packages/react/src/index.ts
Comment thread tsconfig.json
@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Jul 31, 2025

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 99.35%. Comparing base (6397d90) to head (b934895).
⚠️ Report is 1 commits behind head on master.
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #325   +/-   ##
=======================================
  Coverage   99.34%   99.35%           
=======================================
  Files         351      357    +6     
  Lines        2597     2625   +28     
  Branches      430      432    +2     
=======================================
+ Hits         2580     2608   +28     
  Misses         15       15           
  Partials        2        2           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Knowledge Base: Disabled due to Reviews > Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between 3cf8724 and 7d2792f.

📒 Files selected for processing (1)
  • packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.{ts,tsx}

⚙️ CodeRabbit Configuration File

**/*.{ts,tsx}: Review the React and TypeScript code for adherence to component design system best practices, including:

  • Component reusability, composability, and proper prop interfaces
  • Consistent usage of @nimbus-ds/styles package for styling and theming
  • Accessibility compliance (WCAG guidelines, ARIA attributes, keyboard navigation)
  • Cross-browser compatibility and progressive enhancement
  • Maintain comprehensive JSDoc comments with consistent style, documenting complex logic, and relevant references
  • Full testing coverage (Jest unit tests)
  • Performance optimization (memoization, loops)
  • Responsive design patterns
  • Component scalability and maintainability
  • Proper TypeScript types and interfaces usage
  • Component, prop, and storybook documentation
    Highlight any deviations from these standards.

Files:

  • packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx
**/packages/react/src/atomic/**/*.{ts,tsx}

⚙️ CodeRabbit Configuration File

**/packages/react/src/atomic/**/*.{ts,tsx}: Review atomic components for dependency management in monorepo context:

  • Evaluate if the component is a common dependency across multiple packages
  • If widely used as a dependency, recommend adding the package name to the 'externals' attribute in webpack.config
  • This prevents the component from being bundled multiple times across different packages
  • Ensure proper package naming and versioning for external configuration
  • Verify that the component is properly exported and consumed by dependent packages
  • Check for circular dependencies and proper dependency tree structure
    Flag components that should be added to webpack 'externals' to optimize bundle size and prevent duplicate code in the monorepo build.

Files:

  • packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx
⏰ Context from checks skipped due to timeout of 30000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: build-and-deploy
  • GitHub Check: Analyze SonarCloud
  • GitHub Check: pipeline-quality
🔇 Additional comments (6)
packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx (6)

1-5: LGTM! Clean import structure following design system patterns.

The imports are well-organized with proper separation of React dependencies, design system styles, local types, and components. The use of barrel exports from "./components" maintains clean module boundaries.


7-18: Comprehensive JSDoc documentation with practical examples.

The documentation provides clear component purpose, usage examples, and includes the skeleton variant example. This follows design system documentation standards well.


19-33: Excellent prop destructuring and value clamping implementation.

The component properly handles className and style props (addressing the previous review comment), implements safe value clamping with useMemo for performance, and maintains clean prop destructuring patterns.


34-50: Strong accessibility implementation with proper ARIA attributes.

The component correctly implements:

  • role="progressbar" for screen readers
  • aria-valuenow, aria-valuemin, aria-valuemax for progress state
  • Dynamic width styling based on clamped value
  • Proper CSS class application from design system

The className joining logic properly handles potential undefined values and the style prop is correctly applied.


52-59: Proper component composition with skeleton pattern.

The type assertion for ForwardRefExoticComponent with ProgressBarComponents is correctly implemented, and the skeleton attachment follows established design system patterns. Display names are properly set for debugging.


61-62: Clean type export pattern for external consumption.

The ComponentPropsWithRef type extraction provides proper TypeScript support for consumers while maintaining ref forwarding capabilities.

Comment thread packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx
Copy link
Copy Markdown
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

♻️ Duplicate comments (1)
packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx (1)

53-64: Well-structured component configuration and exports.

Proper TypeScript typing for forwardRef with attached components, correct display name assignment, and clean exports following design system patterns.

Previous webpack externals suggestion remains valid.

The past review comment about adding this component to webpack externals for monorepo optimization is still relevant for build configuration. Consider adding @nimbus-ds/progress-bar to webpack externals to prevent bundle duplication across packages.

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Knowledge Base: Disabled due to Reviews > Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between 7d2792f and bfe6194.

📒 Files selected for processing (6)
  • packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.types.tsx (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/index.ts (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/progressBarSkeleton.spec.tsx (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/components/index.ts (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/progressBar.spec.tsx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.{ts,tsx}

⚙️ CodeRabbit Configuration File

**/*.{ts,tsx}: Review the React and TypeScript code for adherence to component design system best practices, including:

  • Component reusability, composability, and proper prop interfaces
  • Consistent usage of @nimbus-ds/styles package for styling and theming
  • Accessibility compliance (WCAG guidelines, ARIA attributes, keyboard navigation)
  • Cross-browser compatibility and progressive enhancement
  • Maintain comprehensive JSDoc comments with consistent style, documenting complex logic, and relevant references
  • Full testing coverage (Jest unit tests)
  • Performance optimization (memoization, loops)
  • Responsive design patterns
  • Component scalability and maintainability
  • Proper TypeScript types and interfaces usage
  • Component, prop, and storybook documentation
    Highlight any deviations from these standards.

Files:

  • packages/react/src/atomic/ProgressBar/src/components/index.ts
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/progressBarSkeleton.spec.tsx
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/index.ts
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.types.tsx
  • packages/react/src/atomic/ProgressBar/src/progressBar.spec.tsx
  • packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx
**/packages/react/src/atomic/**/*.{ts,tsx}

⚙️ CodeRabbit Configuration File

**/packages/react/src/atomic/**/*.{ts,tsx}: Review atomic components for dependency management in monorepo context:

  • Evaluate if the component is a common dependency across multiple packages
  • If widely used as a dependency, recommend adding the package name to the 'externals' attribute in webpack.config
  • This prevents the component from being bundled multiple times across different packages
  • Ensure proper package naming and versioning for external configuration
  • Verify that the component is properly exported and consumed by dependent packages
  • Check for circular dependencies and proper dependency tree structure
    Flag components that should be added to webpack 'externals' to optimize bundle size and prevent duplicate code in the monorepo build.

Files:

  • packages/react/src/atomic/ProgressBar/src/components/index.ts
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/progressBarSkeleton.spec.tsx
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/index.ts
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.types.tsx
  • packages/react/src/atomic/ProgressBar/src/progressBar.spec.tsx
  • packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx
🧬 Code Graph Analysis (1)
packages/react/src/atomic/ProgressBar/src/progressBar.spec.tsx (2)
packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx (2)
  • ProgressBarProps (62-62)
  • ProgressBar (63-63)
packages/react/src/atomic/ProgressBar/src/index.ts (2)
  • ProgressBarProps (6-6)
  • ProgressBar (5-5)
⏰ Context from checks skipped due to timeout of 30000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: build-and-deploy
  • GitHub Check: Analyze SonarCloud
  • GitHub Check: pipeline-quality
🔇 Additional comments (11)
packages/react/src/atomic/ProgressBar/src/components/index.ts (1)

1-1: Clean export structure follows design system patterns.

The export statement properly exposes the ProgressBarSkeleton component from the components directory, maintaining consistency with the atomic component architecture.

packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/index.ts (1)

1-1: Export statement is clean and follows proper conventions.

The named export approach is appropriate for exposing the ProgressBarSkeleton component. The previous trailing whitespace concern appears to have been resolved.

packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/progressBarSkeleton.spec.tsx (4)

7-9: Well-structured test helper with proper component setup.

The makeSut helper function provides a clean way to render the component with props and a consistent test ID, following good testing practices for component isolation.


13-25: Comprehensive testing of default skeleton dimensions.

The test properly verifies that default CSS custom properties are applied with correct values (100% width, 0.5rem height and border radius). The regex patterns effectively handle CSS-in-JS generated variable names with hash suffixes.


27-67: Thorough coverage of custom dimension scenarios.

The test suite comprehensively covers individual and combined custom width/height scenarios, ensuring the skeleton component properly applies CSS custom properties for various use cases.


69-73: Proper testing of data-testid customization.

The test correctly verifies that custom data-testid attributes are properly handled, ensuring component flexibility for testing scenarios.

packages/react/src/atomic/ProgressBar/src/progressBar.spec.tsx (2)

12-19: Excellent accessibility testing with proper ARIA attributes.

The test correctly verifies that the progress bar implements proper ARIA attributes (aria-valuenow, aria-valuemin, aria-valuemax) for screen reader compatibility, following WCAG guidelines.


21-31: Robust value clamping validation ensures data integrity.

The tests properly verify that values outside the 0-100 range are clamped appropriately, preventing invalid progress states and maintaining component reliability.

packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.types.tsx (1)

1-7: Well-structured type definitions following TypeScript best practices.

The type definition properly extends the base SkeletonProps by picking only relevant properties (width, height, data-testid) and making them optional with Partial<>. This approach maintains type safety while providing a clean, focused interface for the ProgressBar skeleton variant.

packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx (2)

1-5: Imports follow design system best practices.

Clean import structure with appropriate React hooks, centralized styling from @nimbus-ds/styles, and well-organized local dependencies.


7-18: Excellent JSDoc documentation.

Comprehensive documentation with clear examples for both the main component and skeleton variant. Follows design system documentation standards perfectly.

Comment thread packages/react/src/atomic/ProgressBar/src/progressBar.spec.tsx
Comment thread packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx
Copy link
Copy Markdown
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: 2

♻️ Duplicate comments (3)
packages/core/styles/src/index.ts (1)

30-42: Export is out of alphabetical order
Same feedback from the previous review still applies – keep atomic exports alphabetically sorted to ease future diffs.

packages/react/CHANGELOG.md (1)

5-10: Heading level & PR reference still need correction

Same comment provided on the last iteration: update the category heading to ### and change the link to #325.

packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx (1)

1-64: Webpack externals configuration still needed for monorepo optimization.

As noted in previous reviews, this atomic component should be added to webpack externals configuration to prevent bundling duplication across packages in the monorepo. The ProgressBar component will likely be consumed by multiple packages, making this optimization valuable for build performance.

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Knowledge Base: Disabled due to Reviews > Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between bfe6194 and affd19f.

⛔ Files ignored due to path filters (2)
  • .yarn/versions/61e59c2c.yml is excluded by !**/.yarn/**
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock, !**/*.lock
📒 Files selected for processing (6)
  • packages/core/styles/CHANGELOG.md (1 hunks)
  • packages/core/styles/src/index.ts (1 hunks)
  • packages/core/webpack/CHANGELOG.md (1 hunks)
  • packages/core/webpack/src/config/external.ts (1 hunks)
  • packages/react/CHANGELOG.md (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (3)
**/*.{ts,tsx}

⚙️ CodeRabbit Configuration File

**/*.{ts,tsx}: Review the React and TypeScript code for adherence to component design system best practices, including:

  • Component reusability, composability, and proper prop interfaces
  • Consistent usage of @nimbus-ds/styles package for styling and theming
  • Accessibility compliance (WCAG guidelines, ARIA attributes, keyboard navigation)
  • Cross-browser compatibility and progressive enhancement
  • Maintain comprehensive JSDoc comments with consistent style, documenting complex logic, and relevant references
  • Full testing coverage (Jest unit tests)
  • Performance optimization (memoization, loops)
  • Responsive design patterns
  • Component scalability and maintainability
  • Proper TypeScript types and interfaces usage
  • Component, prop, and storybook documentation
    Highlight any deviations from these standards.

Files:

  • packages/core/styles/src/index.ts
  • packages/core/webpack/src/config/external.ts
  • packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx
**/CHANGELOG.md

⚙️ CodeRabbit Configuration File

Ensure CHANGELOG.md updates follow the established format: YYYY-MM-DD version with categorized entries (Breaking changes, New features, Bug fixes, Others). Each entry must include PR reference and author, and changes must be properly versioned (major/minor/patch). Changes MUST be documented in their respective package's CHANGELOG.md.

Files:

  • packages/core/webpack/CHANGELOG.md
  • packages/core/styles/CHANGELOG.md
  • packages/react/CHANGELOG.md
**/packages/react/src/atomic/**/*.{ts,tsx}

⚙️ CodeRabbit Configuration File

**/packages/react/src/atomic/**/*.{ts,tsx}: Review atomic components for dependency management in monorepo context:

  • Evaluate if the component is a common dependency across multiple packages
  • If widely used as a dependency, recommend adding the package name to the 'externals' attribute in webpack.config
  • This prevents the component from being bundled multiple times across different packages
  • Ensure proper package naming and versioning for external configuration
  • Verify that the component is properly exported and consumed by dependent packages
  • Check for circular dependencies and proper dependency tree structure
    Flag components that should be added to webpack 'externals' to optimize bundle size and prevent duplicate code in the monorepo build.

Files:

  • packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx
🪛 markdownlint-cli2 (0.17.2)
packages/core/webpack/CHANGELOG.md

7-7: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4

(MD001, heading-increment)

packages/core/styles/CHANGELOG.md

7-7: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4

(MD001, heading-increment)

packages/react/CHANGELOG.md

7-7: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4

(MD001, heading-increment)

⏰ Context from checks skipped due to timeout of 30000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: pipeline-quality
  • GitHub Check: Analyze SonarCloud
  • GitHub Check: build-and-deploy
🔇 Additional comments (5)
packages/core/webpack/src/config/external.ts (1)

26-37: ProgressBar correctly declared as external – looks good

@nimbus-ds/progress-bar is now excluded from the core bundle, keeping build size under control and avoiding duplicate copies when the component package is consumed elsewhere. No additional action needed.

packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx (4)

1-5: Imports are well-structured and follow design system patterns.

The imports correctly leverage React's forwardRef pattern, integrate with the Nimbus styles package, and maintain proper separation between types and components. Good adherence to design system architecture.


7-18: Excellent JSDoc documentation with practical examples.

The documentation clearly explains the component's purpose and provides useful examples for both basic usage and the skeleton loading state. This supports good developer experience and design system adoption.


19-52: Solid component implementation addressing previous feedback.

The component properly implements:

  • forwardRef pattern for ref forwarding
  • Performance optimization with useMemo for value clamping
  • Accessibility compliance with proper ARIA attributes
  • Design system integration through imported styles
  • Clean className joining with filter(Boolean) as suggested in previous reviews

The custom className and style prop handling has been correctly implemented, allowing user customization while preserving design system styles.


53-64: Proper compound component pattern with correct TypeScript typing.

The component correctly implements the compound component pattern with skeleton attachment, proper display names, and comprehensive TypeScript exports. The intersection type ensures type safety while enabling the skeleton functionality.

Comment thread packages/core/styles/CHANGELOG.md Outdated
Comment thread packages/core/webpack/CHANGELOG.md Outdated
Copy link
Copy Markdown
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: 5

♻️ Duplicate comments (4)
packages/core/webpack/CHANGELOG.md (1)

7-9: Fix heading level to appease markdownlint (MD001)

#### jumps two levels under the ## version header – this still violates the one-level-at-a-time rule flagged in the previous review.

-#### 🎉 New features
+### 🎉 New features

Without this adjustment the markdownlint check will keep failing the pipeline.

packages/core/styles/src/packages/atomic/progressBar/nimbus-progressBar.css.ts (2)

16-21: minWidth still causes visual misrepresentation for very low progress values.

The fixed minWidth: "0.5rem" continues to render an 8px fill even when progress is near zero, overstating completion and potentially failing accessibility expectations.

-  minWidth: "0.5rem",
+  minWidth: 0,

This ensures accurate visual representation where 0% progress shows no fill.


25-62: Missing "disabled" and "inverse" appearance variants for design system consistency.

While the core semantic variants are well-implemented, the absence of "disabled" and "inverse" variants breaks consistency with other atomic components that expose these variants for proper theme contrast handling.

Consider adding these variants:

   },
+  disabled: [
+    fill,
+    {
+      backgroundColor: varsThemeBase.colors.neutral.surfaceDisabled,
+    },
+  ],
+  inverse: [
+    fill,
+    {
+      backgroundColor: varsThemeBase.colors.neutral.surfaceHighlight,
+    },
+  ],
 });

Alternatively, document why these variants are intentionally omitted to prevent inconsistent custom implementations.

packages/core/styles/CHANGELOG.md (1)

5-10: Heading level still violates markdown hierarchy.

The #### heading jumps two levels from ##, violating the changelog convention and triggering the MD001 lint error.

-#### 🎉 New features
+### 🎉 New features

This maintains proper heading hierarchy and fixes the linting issue.

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Knowledge Base: Disabled due to Reviews > Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between affd19f and 035c669.

📒 Files selected for processing (8)
  • packages/core/styles/CHANGELOG.md (1 hunks)
  • packages/core/styles/src/packages/atomic/progressBar/nimbus-progressBar.css.ts (1 hunks)
  • packages/core/webpack/CHANGELOG.md (1 hunks)
  • packages/react/src/atomic/ProgressBar/CHANGELOG.md (1 hunks)
  • packages/react/src/atomic/ProgressBar/package.json (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/progressBar.spec.tsx (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/progressBar.stories.tsx (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/progressBar.types.ts (1 hunks)
🧰 Additional context used
📓 Path-based instructions (5)
**/CHANGELOG.md

⚙️ CodeRabbit Configuration File

Ensure CHANGELOG.md updates follow the established format: YYYY-MM-DD version with categorized entries (Breaking changes, New features, Bug fixes, Others). Each entry must include PR reference and author, and changes must be properly versioned (major/minor/patch). Changes MUST be documented in their respective package's CHANGELOG.md.

Files:

  • packages/core/webpack/CHANGELOG.md
  • packages/react/src/atomic/ProgressBar/CHANGELOG.md
  • packages/core/styles/CHANGELOG.md
**/*.{ts,tsx}

⚙️ CodeRabbit Configuration File

**/*.{ts,tsx}: Review the React and TypeScript code for adherence to component design system best practices, including:

  • Component reusability, composability, and proper prop interfaces
  • Consistent usage of @nimbus-ds/styles package for styling and theming
  • Accessibility compliance (WCAG guidelines, ARIA attributes, keyboard navigation)
  • Cross-browser compatibility and progressive enhancement
  • Maintain comprehensive JSDoc comments with consistent style, documenting complex logic, and relevant references
  • Full testing coverage (Jest unit tests)
  • Performance optimization (memoization, loops)
  • Responsive design patterns
  • Component scalability and maintainability
  • Proper TypeScript types and interfaces usage
  • Component, prop, and storybook documentation
    Highlight any deviations from these standards.

Files:

  • packages/react/src/atomic/ProgressBar/src/progressBar.spec.tsx
  • packages/react/src/atomic/ProgressBar/src/progressBar.stories.tsx
  • packages/core/styles/src/packages/atomic/progressBar/nimbus-progressBar.css.ts
  • packages/react/src/atomic/ProgressBar/src/progressBar.types.ts
**/packages/react/src/atomic/**/*.{ts,tsx}

⚙️ CodeRabbit Configuration File

**/packages/react/src/atomic/**/*.{ts,tsx}: Review atomic components for dependency management in monorepo context:

  • Evaluate if the component is a common dependency across multiple packages
  • If widely used as a dependency, recommend adding the package name to the 'externals' attribute in webpack.config
  • This prevents the component from being bundled multiple times across different packages
  • Ensure proper package naming and versioning for external configuration
  • Verify that the component is properly exported and consumed by dependent packages
  • Check for circular dependencies and proper dependency tree structure
    Flag components that should be added to webpack 'externals' to optimize bundle size and prevent duplicate code in the monorepo build.

Files:

  • packages/react/src/atomic/ProgressBar/src/progressBar.spec.tsx
  • packages/react/src/atomic/ProgressBar/src/progressBar.stories.tsx
  • packages/react/src/atomic/ProgressBar/src/progressBar.types.ts
**/package.json

⚙️ CodeRabbit Configuration File

Verify version updates follow SemVer: major for breaking changes, minor for new features, patch for bug fixes. Ensure dependencies are properly versioned and peer dependencies are correctly specified.

Files:

  • packages/react/src/atomic/ProgressBar/package.json
**/*.types.ts

⚙️ CodeRabbit Configuration File

**/*.types.ts: Review TypeScript type definitions following these standards:

  • Always export a 'ComponentNameProperties' interface, where the ComponentName is the name of the component. This interface should NOT inherit HTMLElement properties or BoxProperties, not any big interface as it will be used for documentation. It should ONLY contain the specific props this component defines.
  • Prefer type aliases for unions, intersections, and simple object types
  • Keep types and interfaces focused and single-purpose
  • Use proper JSDoc comments for all exported types
  • Leverage TypeScript utility types when appropriate (Partial, Pick, Omit)
  • Ensure type names are descriptive and follow PascalCase convention
  • Avoid type 'any' - use 'unknown' for truly unknown types
    Flag any deviations from these patterns.

Files:

  • packages/react/src/atomic/ProgressBar/src/progressBar.types.ts
🧬 Code Graph Analysis (2)
packages/react/src/atomic/ProgressBar/src/progressBar.spec.tsx (3)
packages/react/src/atomic/ProgressBar/src/ProgressBar.tsx (2)
  • ProgressBarProps (62-62)
  • ProgressBar (63-63)
packages/react/src/atomic/ProgressBar/src/index.ts (2)
  • ProgressBarProps (6-6)
  • ProgressBar (5-5)
packages/core/styles/src/packages/atomic/progressBar/index.ts (1)
  • progressBar (3-5)
packages/core/styles/src/packages/atomic/progressBar/nimbus-progressBar.css.ts (3)
packages/core/styles/src/themes/globals.css.ts (1)
  • varsThemeBase (198-198)
packages/core/styles/src/gradients/index.ts (1)
  • gradients (4-4)
packages/core/styles/src/index.ts (1)
  • gradients (10-10)
🪛 LanguageTool
packages/react/src/atomic/ProgressBar/CHANGELOG.md

[grammar] ~1-~1: Use correct spacing
Context: # Changelog The ProgressBar component allows us to d...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~3-~3: Use correct spacing
Context: ...ess of an operation or task in a visual format. ## 2025-08-01 1.0.0 ### 🎉 New features ...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~7-~7: Use correct spacing
Context: ...mat. ## 2025-08-01 1.0.0 ### 🎉 New features - Added ProgressBar component. ([#325](htt...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~11-~11: Add a comma
Context: ...nts: primary, success, warning, danger, neutral and ai-interactive. - Included Progress...

(QB_NEW_EN_OTHER_ERROR_IDS_22)

🪛 markdownlint-cli2 (0.17.2)
packages/core/styles/CHANGELOG.md

7-7: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4

(MD001, heading-increment)

⏰ Context from checks skipped due to timeout of 30000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: pipeline-quality
  • GitHub Check: Analyze SonarCloud
🔇 Additional comments (9)
packages/core/styles/src/packages/atomic/progressBar/nimbus-progressBar.css.ts (2)

1-3: Clean imports following design system patterns.

The imports correctly leverage the theme tokens and gradient system, establishing proper dependencies for the progress bar styling.


5-14: Solid foundation styling for the progress bar container.

The base style correctly implements a flex container with proper dimensions, theming, and overflow handling. The use of theme tokens ensures consistency across the design system.

packages/react/src/atomic/ProgressBar/CHANGELOG.md (1)

1-15: Comprehensive initial changelog documenting all key features.

The changelog clearly describes the ProgressBar component's capabilities including value prop, appearance variants, skeleton component, accessibility support, and TypeScript types. This provides excellent documentation for the initial release.

packages/react/src/atomic/ProgressBar/src/progressBar.spec.tsx (2)

10-33: Excellent accessibility and edge case testing.

The test suite properly validates ARIA attributes for screen reader compatibility and correctly tests value clamping behavior for edge cases. This ensures robust accessibility support and prevents runtime issues.


34-83: Comprehensive appearance variant testing with proper CSS validation.

The tests effectively verify both the visual representation (width styling) and the applied CSS classes for each appearance variant. The className.toContain() assertions ensure that the correct styling is applied, addressing visual consistency across all variants.

packages/react/src/atomic/ProgressBar/src/progressBar.stories.tsx (1)

28-28: Good use of Box wrapper for consistent sizing.

The maxWidth constraint provides a consistent viewing experience across different story variants and prevents the progress bar from becoming too wide in the Storybook canvas.

packages/react/src/atomic/ProgressBar/src/progressBar.types.ts (3)

8-18: Excellent adherence to TypeScript type definition standards.

This perfectly follows the coding guidelines:

  • ✅ Exports ProgressBarProperties interface without inheriting HTMLElement properties
  • ✅ Uses proper JSDoc comments with clear descriptions
  • ✅ Follows PascalCase naming conventions
  • ✅ Avoids 'any' types and uses specific union types

20-21: Perfect use of TypeScript utility types.

The combination of intersection and Omit utility types properly prevents prop conflicts while maintaining full HTML div element functionality. This is exactly how base props should be constructed in the design system.


17-17: ✅ Externalization Verified
The @nimbus-ds/progress-bar package is already marked as external in
packages/core/webpack/src/config/external.ts, so it won’t be bundled multiple times. No further action needed.

  • File: packages/core/webpack/src/config/external.ts
  • Entry: "@nimbus-ds/progress-bar": "@nimbus-ds/progress-bar",

Comment thread packages/react/src/atomic/ProgressBar/package.json
Comment thread packages/react/src/atomic/ProgressBar/src/progressBar.stories.tsx
Comment thread packages/react/src/atomic/ProgressBar/src/progressBar.stories.tsx
Comment thread packages/react/src/atomic/ProgressBar/src/progressBar.types.ts
Comment thread packages/react/src/atomic/ProgressBar/src/progressBar.types.ts
Copy link
Copy Markdown
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: 2

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Knowledge Base: Disabled due to Reviews > Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between 035c669 and ea10c60.

📒 Files selected for processing (2)
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.types.tsx (1 hunks)
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/progressBarSkeleton.spec.tsx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.{ts,tsx}

⚙️ CodeRabbit Configuration File

**/*.{ts,tsx}: Review the React and TypeScript code for adherence to component design system best practices, including:

  • Component reusability, composability, and proper prop interfaces
  • Consistent usage of @nimbus-ds/styles package for styling and theming
  • Accessibility compliance (WCAG guidelines, ARIA attributes, keyboard navigation)
  • Cross-browser compatibility and progressive enhancement
  • Maintain comprehensive JSDoc comments with consistent style, documenting complex logic, and relevant references
  • Full testing coverage (Jest unit tests)
  • Performance optimization (memoization, loops)
  • Responsive design patterns
  • Component scalability and maintainability
  • Proper TypeScript types and interfaces usage
  • Component, prop, and storybook documentation
    Highlight any deviations from these standards.

Files:

  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/progressBarSkeleton.spec.tsx
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.types.tsx
**/packages/react/src/atomic/**/*.{ts,tsx}

⚙️ CodeRabbit Configuration File

**/packages/react/src/atomic/**/*.{ts,tsx}: Review atomic components for dependency management in monorepo context:

  • Evaluate if the component is a common dependency across multiple packages
  • If widely used as a dependency, recommend adding the package name to the 'externals' attribute in webpack.config
  • This prevents the component from being bundled multiple times across different packages
  • Ensure proper package naming and versioning for external configuration
  • Verify that the component is properly exported and consumed by dependent packages
  • Check for circular dependencies and proper dependency tree structure
    Flag components that should be added to webpack 'externals' to optimize bundle size and prevent duplicate code in the monorepo build.

Files:

  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/progressBarSkeleton.spec.tsx
  • packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.types.tsx
⏰ Context from checks skipped due to timeout of 30000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: build-and-deploy
  • GitHub Check: Analyze SonarCloud
  • GitHub Check: pipeline-quality
🔇 Additional comments (3)
packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/ProgressBarSkeleton.types.tsx (1)

1-5: Well-crafted type definition for skeleton component customization.

The use of Partial<Pick<>> pattern effectively creates an optional subset interface that focuses on the essential customization properties for the skeleton state. The selected properties (width, height, data-testid) provide the right level of control for skeleton rendering without exposing unnecessary complexity.

packages/react/src/atomic/ProgressBar/src/components/ProgressBarSkeleton/progressBarSkeleton.spec.tsx (2)

7-9: Solid test setup pattern with proper component rendering.

The makeSut helper function provides a clean, reusable pattern for component instantiation with optional props. The default data-testid ensures consistent test element querying.


27-67: Thorough coverage of custom dimension scenarios.

The test suite comprehensively covers individual and combined custom width/height scenarios, ensuring proper CSS property application. The progressive testing approach (individual props, then combinations) provides excellent coverage.

joacotornello and others added 3 commits August 1, 2025 11:01
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Aug 1, 2025

🚀✨ Your Storybook preview is ready!

🔗 View Storybook

Happy reviewing! 🎉

@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented Aug 1, 2025

@joacotornello joacotornello merged commit 8c49595 into master Aug 4, 2025
8 checks passed
@joacotornello joacotornello deleted the feat/progress-bar branch August 4, 2025 14:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants