Skip to content

Conversation

@vleague2
Copy link
Contributor

@vleague2 vleague2 commented Oct 3, 2025

🎟️ Tracking

CL-427

📔 Objective

Add skeleton components to our CL to allow teams to compose skeleton loading screens.

📸 Screenshots

See new stories under Skeleton and new skeleton loading story under Popup Layout

⏰ Reminders before review

  • Contributor guidelines followed
  • All formatters and local linters executed and passed
  • Written new unit and / or integration tests where applicable
  • Protected functional changes with optionality (feature flags)
  • Used internationalization (i18n) for all UI strings
  • CI builds passed
  • Communicated to DevOps any deployment requirements
  • Updated any necessary documentation (Confluence, contributing docs) or informed the documentation team

🦮 Reviewer guidelines

  • 👍 (:+1:) or similar for great changes
  • 📝 (:memo:) or ℹ️ (:information_source:) for notes or general info
  • ❓ (:question:) for questions
  • 🤔 (:thinking:) or 💭 (:thought_balloon:) for more open inquiry that's not quite a confirmed issue and could potentially benefit from discussion
  • 🎨 (:art:) for suggestions / improvements
  • ❌ (:x:) or ⚠️ (:warning:) for more significant problems or concerns needing attention
  • 🌱 (:seedling:) or ♻️ (:recycle:) for future improvements or indications of technical debt
  • ⛏ (:pick:) for minor or nitpick changes

@github-actions
Copy link
Contributor

github-actions bot commented Oct 3, 2025

Logo
Checkmarx One – Scan Summary & Detailsebc637d3-83a1-4988-984d-a561c9467f16

Great job! No new security vulnerabilities introduced in this pull request

@codecov
Copy link

codecov bot commented Oct 3, 2025

Codecov Report

❌ Patch coverage is 28.00000% with 36 lines in your changes missing coverage. Please review.
✅ Project coverage is 38.93%. Comparing base (a7242a1) to head (8f59113).
⚠️ Report is 36 commits behind head on main.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
.../components/src/skeleton/skeleton-group.stories.ts 0.00% 14 Missing ⚠️
...s/components/src/skeleton/skeleton-text.stories.ts 0.00% 9 Missing ⚠️
libs/components/src/skeleton/skeleton.stories.ts 0.00% 8 Missing ⚠️
.../src/platform/popup/layout/popup-layout.stories.ts 0.00% 2 Missing ⚠️
...components/src/skeleton/skeleton-text.component.ts 66.66% 2 Missing ⚠️
libs/components/src/skeleton/skeleton.component.ts 75.00% 1 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff            @@
##             main   #16728    +/-   ##
========================================
  Coverage   38.92%   38.93%            
========================================
  Files        3435     3446    +11     
  Lines       97482    97756   +274     
  Branches    14660    14694    +34     
========================================
+ Hits        37949    38061   +112     
- Misses      57874    58033   +159     
- Partials     1659     1662     +3     

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

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

/**
* The shape of the corners of the skeleton element
*/
readonly edgeShape = input<"box" | "circle">("box");
Copy link
Contributor

Choose a reason for hiding this comment

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

Does it make more sense for this to just be 'shape'?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Maybe! I felt like shape="circle" would imply it's always a circle versus just the corners, but I could be overthinking it

Copy link
Contributor

Choose a reason for hiding this comment

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

Yeah, I guess the consumer could pass circle and then give it differing width and heights. Might be confusing. Unless if we added width and height inputs. Then, if `shape='circle' we only take one of those values... 🤔 Do we think consumers will want full control to set styles with tailwind? Or are the width/height inputs a less complex DX?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I thought about doing width/height inputs but it felt kind of silly when it's super simple with tailwind already, like I'd just be re-implementing classes. The designs have non-circle shapes with rounded corners so that is why I didn't want to imply the object itself being a circle

Copy link
Contributor

Choose a reason for hiding this comment

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

Ah, got ya. In that case, I suppose we can't assume everything will be circular.

re width/height inputs: I'm not sure the assumption that it's easy to do with tailwind is necessarily true for everyone. We find it easy because we use tailwind every day but, some folks may not be as familiar. Explicit inputs might feel easier for them. IDK which is 'better' per se though

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Imo since tailwind is the standard throughout the apps, as long as it's clearly documented in Storybook how to use tailwind to apply width/height, it shouldn't be too confusing. (I think I need to work on the docs more.)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@BryanCunningham I added more to the docs, lmk if you think it's more clear

Copy link
Contributor

Choose a reason for hiding this comment

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

Looks good!

Copy link
Contributor

@BryanCunningham BryanCunningham left a comment

Choose a reason for hiding this comment

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

Looks good to me

@vleague2 vleague2 changed the title skeleton POC [CL-427] Add skeleton loading components to the CL Oct 13, 2025
@vleague2 vleague2 requested a review from sukhleenb October 13, 2025 20:26
@vleague2 vleague2 marked this pull request as ready for review October 13, 2025 20:26
@vleague2 vleague2 requested a review from a team as a code owner October 13, 2025 20:26
@sukhleenb
Copy link

This looks great Vicki! Only question is whether there is a strong reason to support both an oval and rectangle variant? I wonder if we could simplify to just the oval to reduce confusion on when to use which?

@vleague2
Copy link
Contributor Author

This looks great Vicki! Only question is whether there is a strong reason to support both an oval and rectangle variant? I wonder if we could simplify to just the oval to reduce confusion on when to use which?

@sukhleenb Looking at the Figma, it looks like some of the shapes have the full border radius like a circle and some have the 4px more boxy border radius. So I think we will need both unless we want to remove the 4px radius option? The component is pretty configurable, so the stories are examples of what you could do to make whatever basic shape you need. (I.e. you specify the border radius and then you can set whatever height and width you want, which gives the flexibility to make all those shapes)

@sukhleenb
Copy link

@vleague2 Thanks for reformatting some of the docs, I think that's where most of my confusion was coming from!

sukhleenb
sukhleenb previously approved these changes Oct 14, 2025
@sonarqubecloud
Copy link

@vleague2 vleague2 merged commit ba5c93f into main Oct 16, 2025
156 of 159 checks passed
@vleague2 vleague2 deleted the uif/cl-427/skeleton branch October 16, 2025 13:36
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