feat: skeleton loaders for templates and extensions catalogs - #84
Conversation
Add shared CatalogSkeletonGrid component (role=status, aria-busy, sr-only label) mirroring the catalog card layout, and use it for the loading states of /templates and /extensions — both the client fetch branches and the route loading.tsx Suspense fallbacks — replacing the plain 'Loading...' text. Covers website#37.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (6)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe change adds a shared, accessible catalog skeleton grid. Extension and template pages use it during loading in both client-page states and route loading screens. Tests cover card counts, accessibility attributes, and custom labels. ChangesCatalog loading skeletons
Estimated code review effort: 3 (Moderate) | ~20 minutes Severity of issue fixed: Medium Merge Risk: ⚪ Minimal · up to Templates and extensions now show accessible catalog-shaped placeholders while content loads, replacing blank text or spinners without changing loaded or empty catalog behavior. The change is ready to merge. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 2📝 Generate docstrings 💡
🛠️ Fix failing CI checks 💡
🧪 Generate unit tests (beta)
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. Comment |
✅
|
| Descriptor | Linter | Files | Fixed | Errors | Max errors | Warnings | Elapsed time |
|---|---|---|---|---|---|---|---|
| ✅ ACTION | actionlint | 5 | 0 | 0 | 0.05s | ||
| ✅ ACTION | zizmor | 5 | 0 | 0 | 1.42s | ||
| ✅ BASH | bash-exec | 1 | 0 | 0 | 0.01s | ||
| ✅ BASH | shellcheck | 1 | 0 | 0 | 0.21s | ||
| shfmt | 1 | 1 | 0 | 0.01s | |||
| ✅ COPYPASTE | jscpd | yes | no | no | 2.91s | ||
| ✅ EDITORCONFIG | editorconfig-checker | 176 | 0 | 0 | 0.6s | ||
| ✅ JAVASCRIPT | eslint | 1 | 0 | 0 | 3.81s | ||
| ✅ JAVASCRIPT | standard | 1 | 0 | 0 | 1.8s | ||
| ✅ JSON | jsonlint | 9 | 0 | 0 | 0.12s | ||
| ✅ JSON | npm-package-json-lint | yes | no | no | 0.97s | ||
| ✅ JSON | prettier | 9 | 0 | 0 | 0.6s | ||
| ✅ JSON | v8r | 9 | 0 | 0 | 14.04s | ||
| ✅ MARKDOWN | markdownlint | 9 | 0 | 0 | 0.71s | ||
| markdown-table-formatter | 9 | 1 | 0 | 0.24s | |||
| ✅ REPOSITORY | betterleaks | yes | no | no | 1.07s | ||
| ✅ REPOSITORY | checkov | yes | no | no | 17.66s | ||
| ✅ REPOSITORY | git_diff | yes | no | no | 0.02s | ||
| ✅ REPOSITORY | osv-scanner | yes | no | no | 1.57s | ||
| ✅ REPOSITORY | secretlint | yes | no | no | 3.29s | ||
| ✅ REPOSITORY | trivy | yes | no | no | 15.29s | ||
| ✅ REPOSITORY | trufflehog | yes | no | no | 3.58s | ||
| ✅ SPELL | cspell | 177 | 0 | 0 | 5.21s | ||
| ✅ TSX | eslint | 102 | 0 | 0 | 4.19s | ||
| ✅ YAML | prettier | 13 | 0 | 0 | 0.67s | ||
| ✅ YAML | yamllint | 13 | 0 | 0 | 0.66s |
Detailed Issues
⚠️ MARKDOWN / markdown-table-formatter - 1 error
1 files contain markdown tables to format:
- README.md
⚠️ BASH / shfmt - 1 error
diff public/install.sh.orig public/install.sh
--- public/install.sh.orig
+++ public/install.sh
@@ -25,7 +25,10 @@
GITHUB_DOWNLOAD="${GITHUB_DOWNLOAD:-https://github.com}"
info() { printf '%s\n' "$*" >&2; }
-die() { printf 'error: %s\n' "$*" >&2; exit 1; }
+die() {
+ printf 'error: %s\n' "$*" >&2
+ exit 1
+}
need_cmd() {
command -v "$1" >/dev/null 2>&1 || die "required command not found: $1"
See detailed reports in MegaLinter artifacts
Your project could benefit from a custom flavor, which would allow you to run only the linters you need, and thus improve runtime performances. (Skip this info by defining FLAVOR_SUGGESTIONS: false)
- Documentation: Custom Flavors
- Command:
npx mega-linter-runner@10.0.0 --custom-flavor-setup --custom-flavor-linters ACTION_ACTIONLINT,ACTION_ZIZMOR,BASH_EXEC,BASH_SHELLCHECK,BASH_SHFMT,COPYPASTE_JSCPD,EDITORCONFIG_EDITORCONFIG_CHECKER,JAVASCRIPT_ES,JAVASCRIPT_STANDARD,JSON_JSONLINT,JSON_V8R,JSON_PRETTIER,JSON_NPM_PACKAGE_JSON_LINT,MARKDOWN_MARKDOWNLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER,REPOSITORY_CHECKOV,REPOSITORY_GIT_DIFF,REPOSITORY_BETTERLEAKS,REPOSITORY_OSV_SCANNER,REPOSITORY_SECRETLINT,REPOSITORY_TRIVY,REPOSITORY_TRUFFLEHOG,SPELL_CSPELL,TSX_ESLINT,YAML_PRETTIER,YAML_YAMLLINT

Show us your support by starring ⭐ the repository
Description
Shared CatalogSkeletonGrid component (role=status, aria-busy, sr-only label) mirroring the catalog card layout, used by both /templates and /extensions loading states and route Suspense fallbacks, replacing the plain 'Loading...' text.
Fixes #37. (#35 breadcrumbs and #36 search/filter verified already-implemented on main.)
Type of Change
How Has This Been Tested?
Checklist