Skip to content

feat: skeleton loaders for templates and extensions catalogs - #84

Merged
ulises-jeremias merged 2 commits into
mainfrom
feat/36-catalog-search-filter
Sep 10, 2026
Merged

feat: skeleton loaders for templates and extensions catalogs#84
ulises-jeremias merged 2 commits into
mainfrom
feat/36-catalog-search-filter

Conversation

@ulises-jeremias

@ulises-jeremias ulises-jeremias commented Sep 10, 2026

Copy link
Copy Markdown
Member

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

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update

How Has This Been Tested?

  • New vitest suite src/components/tests/catalog-skeleton.test.tsx (3 tests: default count, custom count, accessible label)
  • Full suite: 24/24 pass; tsc --noEmit clean; prettier/eslint clean via lint-staged

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • Any dependent changes have been merged and published in downstream modules
  • I have checked my code and corrected any misspellings

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.
@vercel

vercel Bot commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

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

Project Deployment Actions Updated
website-3g7t Ready Ready Preview Sep 10, 2026 7:04am UTC

@coderabbitai

coderabbitai Bot commented Sep 10, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 56dd1f73-972f-499f-8217-c1902b3b871f

📥 Commits

Reviewing files that changed from the base of the PR and between 7f956bc and 2812df2.

📒 Files selected for processing (6)
  • src/app/extensions/ExtensionsPageClient.tsx
  • src/app/extensions/loading.tsx
  • src/app/templates/TemplatesPageClient.tsx
  • src/app/templates/loading.tsx
  • src/components/__tests__/catalog-skeleton.test.tsx
  • src/components/catalog-skeleton.tsx

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The 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.

Changes

Catalog loading skeletons

Layer / File(s) Summary
Shared catalog skeleton component
src/components/catalog-skeleton.tsx, src/components/__tests__/catalog-skeleton.test.tsx
Adds configurable responsive skeleton cards with loading accessibility attributes. Tests cover default and custom card counts, labels, and status attributes.
Catalog page loading states
src/app/extensions/ExtensionsPageClient.tsx, src/app/templates/TemplatesPageClient.tsx
Extension and template client pages render labeled skeleton grids while loading. Loaded result grids and empty states render only after loading completes.
Route loading screens
src/app/extensions/loading.tsx, src/app/templates/loading.tsx
Route loading screens replace centered spinner indicators with labeled skeleton grids. The loading component names are updated.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Severity of issue fixed: Medium

Merge Risk: ⚪ Minimal · up to f0e16

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)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 6 functions across 6 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The changes satisfy issue #37 by adding shared skeleton placeholders to both catalog loading states. The skeletons match the catalog layout and include relevant accessibility attributes without introd…
Out of Scope Changes check ✅ Passed All changes support the loading-skeleton objective in issue #37. The shared component, route fallbacks, client loading states, accessibility attributes, and focused tests are in scope.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: adding skeleton loaders for the templates and extensions catalog pages.
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/36-catalog-search-filter

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Sep 10, 2026

Copy link
Copy Markdown
Messages
📖 Thanks! We ❤️ small PRs!

Generated by 🚫 dangerJS against f0e169d

@github-actions

github-actions Bot commented Sep 10, 2026

Copy link
Copy Markdown

⚠️MegaLinter analysis: Success with warnings

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
⚠️ BASH 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 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

MegaLinter is provided by OX Security
Show us your support by starring ⭐ the repository

@ulises-jeremias
ulises-jeremias merged commit 62282c9 into main Sep 10, 2026
9 checks passed
@ulises-jeremias
ulises-jeremias deleted the feat/36-catalog-search-filter branch September 10, 2026 07:06
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.

feat: add loading skeletons to catalog listing pages

1 participant