Skip to content

Conversation

@danielroe
Copy link
Member

@danielroe danielroe commented Feb 10, 2026

quick QOL for developing and detecting CLS - this lets you swap on/off the loading state for the package page to see at a glance how things differ

Screen.Recording.2026-02-10.at.23.31.33.mov

@vercel
Copy link

vercel bot commented Feb 10, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
npmx.dev Ready Ready Preview, Comment Feb 10, 2026 11:32pm
2 Skipped Deployments
Project Deployment Actions Updated (UTC)
docs.npmx.dev Ignored Ignored Feb 10, 2026 11:32pm
npmx-lunaria Ignored Ignored Feb 10, 2026 11:32pm

Request Review

@codecov
Copy link

codecov bot commented Feb 10, 2026

Codecov Report

❌ Patch coverage is 0% with 2 lines in your changes missing coverage. Please review.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
app/pages/package/[[org]]/[name].vue 0.00% 2 Missing ⚠️

📢 Thoughts on this report? Let us know!

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 10, 2026

📝 Walkthrough

Walkthrough

The pull request introduces a development-only skeleton loader toggle feature to the package page component. A new local state variable showSkeleton and a floating DevOnly button are added to control the toggle. The PackageSkeleton component is now conditionally rendered when either showSkeleton is true or the existing status is pending. The change modifies app/pages/package/[[org]]/[name].vue with 15 lines added and 1 line removed.

Possibly related PRs

🚥 Pre-merge checks | ✅ 1
✅ Passed checks (1 passed)
Check name Status Explanation
Description check ✅ Passed The pull request description is directly related to the changeset, explaining the purpose of adding a skeleton debugging tool for development.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/skeleton

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

Comment on lines +553 to +564
<DevOnly>
<ButtonBase
class="fixed bottom-4 inset-is-4 z-50 shadow-lg rounded-full! px-3! py-2!"
classicon="i-simple-icons:skeleton"
variant="primary"
title="Toggle skeleton loader (development only)"
:aria-pressed="showSkeleton"
@click="showSkeleton = !showSkeleton"
>
<span class="text-xs">Skeleton</span>
</ButtonBase>
</DevOnly>
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

# First, check for UnoCSS configuration files
fd -e "config.*" -e "uno.config.*" | head -20

Repository: npmx-dev/npmx.dev

Length of output: 43


🏁 Script executed:

# Check for icon definitions or presets in the project
rg -n "preset.*icon|icon.*preset" --type ts --type js -A 5 -B 5 | head -100

Repository: npmx-dev/npmx.dev

Length of output: 43


🏁 Script executed:

# Search for simple-icons usage in the codebase
rg "i-simple-icons" --type vue --type ts --type js -n | head -20

Repository: npmx-dev/npmx.dev

Length of output: 88


🏁 Script executed:

# Check the ButtonBase component to understand its icon property
fd -e "ButtonBase.vue" -o -e "ButtonBase.ts" -o -e "ButtonBase.tsx"

Repository: npmx-dev/npmx.dev

Length of output: 177


🏁 Script executed:

# List files to understand structure
git ls-files | grep -E "(uno|config)" | head -20

Repository: npmx-dev/npmx.dev

Length of output: 488


🏁 Script executed:

# Find ButtonBase component more broadly
find . -name "*Button*" -type f 2>/dev/null | head -20

Repository: npmx-dev/npmx.dev

Length of output: 97


🏁 Script executed:

# Search for simple-icons usage without file type filter
rg "i-simple-icons" -n -C 3 | head -40

Repository: npmx-dev/npmx.dev

Length of output: 3317


🏁 Script executed:

# Check package.json for UnoCSS and dependencies
cat package.json | grep -A 5 -B 5 "unocss\|simple-icons"

Repository: npmx-dev/npmx.dev

Length of output: 1869


🏁 Script executed:

# Read the uno.config.ts to understand icon configuration
cat uno.config.ts

Repository: npmx-dev/npmx.dev

Length of output: 8079


🏁 Script executed:

# Search for skeleton icon references in the codebase
rg "skeleton" -i --type-add "vue:*.vue" -t vue -t ts -t js | head -30

Repository: npmx-dev/npmx.dev

Length of output: 2831


🏁 Script executed:

# Check if there are any custom icon definitions
rg "define.*icon|icon.*define" -i -t ts -t js -C 3 | head -50

Repository: npmx-dev/npmx.dev

Length of output: 2383


🌐 Web query:

simple-icons skeleton icon library collection

💡 Result:

  • Simple Icons is an open-source collection of SVG brand logos (popular companies/products) distributed via GitHub and npm—so you generally won’t find a “skeleton” (anatomy) icon in the Simple Icons collection. [1]
  • If you meant a skeleton/anatomy icon, you’ll want a different icon set/collection, e.g.:
    • IconSvg.co has a downloadable “Skeleton” SVG in a medical-themed collection. [2]
    • BioRender provides skeleton icons inside its life-science icon library (usable within their app). [3]
    • simpleicon.com is a large “simple icons” style gallery (not the Simple Icons brand project) with many general-purpose categories. [4]

Sources: [1] [2] [3] [4]


🏁 Script executed:

# Find and read the ButtonBase component
find . -path ./node_modules -prune -o -name "*ButtonBase*" -type f -print

Repository: npmx-dev/npmx.dev

Length of output: 43


🏁 Script executed:

# Check what icons are available in Carbon collection (commonly used in project)
rg "i-carbon:" app/pages/package/\[\[org\]\]/\[name\].vue -B 2 -A 2 | head -20

Repository: npmx-dev/npmx.dev

Length of output: 605


🏁 Script executed:

# View the ButtonBase component definition
find . -path ./node_modules -prune -o -path ./dist -prune -o -name "ButtonBase.vue" -type f -print | xargs cat 2>/dev/null

Repository: npmx-dev/npmx.dev

Length of output: 43


🏁 Script executed:

# Check what Carbon icons are available for skeletal/bone-related concepts
rg "i-carbon:" --type-add "vue:*.vue" -t vue -t ts -t js | grep -i "bone\|skeleton\|load\|debug" | head -20

Repository: npmx-dev/npmx.dev

Length of output: 1368


🏁 Script executed:

# Check if there are any other references to simple-icons in the component file itself
cat app/pages/package/\[\[org\]\]/\[name\].vue | grep -n "simple-icons\|classicon" | head -30

Repository: npmx-dev/npmx.dev

Length of output: 1384


Replace i-simple-icons:skeleton with a valid icon from the Carbon collection.

The i-simple-icons:skeleton icon does not exist—simple-icons contains only brand logos (GitHub, npm, etc.), not UI icons. The icon will fail to render, leaving the button without an icon.

Consider using a Carbon icon suitable for a skeleton loader toggle:

Suggested fix
  <ButtonBase
    class="fixed bottom-4 inset-is-4 z-50 shadow-lg rounded-full! px-3! py-2!"
-   classicon="i-simple-icons:skeleton"
+   classicon="i-carbon:hourglass"
    variant="primary"
    title="Toggle skeleton loader (development only)"
    :aria-pressed="showSkeleton"
    `@click`="showSkeleton = !showSkeleton"
  >
    <span class="text-xs">Skeleton</span>
  </ButtonBase>

Alternatives: i-carbon:timer, or use i-carbon:circle-dash with motion-safe:animate-spin for a loading animation effect.

@danielroe danielroe merged commit 06dc9df into main Feb 10, 2026
21 checks passed
@danielroe danielroe deleted the feat/skeleton branch February 10, 2026 23:44
@HugoRCD
Copy link
Contributor

HugoRCD commented Feb 10, 2026

This is so cool 😮

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.

2 participants