Skip to content

🌱 refactor: extract CardWrapper into focused composites#14301

Merged
kubestellar-hive[bot] merged 2 commits into
mainfrom
refactor/14293-cardwrapper-composites
May 17, 2026
Merged

🌱 refactor: extract CardWrapper into focused composites#14301
kubestellar-hive[bot] merged 2 commits into
mainfrom
refactor/14293-cardwrapper-composites

Conversation

@kubestellar-hive
Copy link
Copy Markdown
Contributor

Fixes #14293

Summary

Decomposes the 1160-line CardWrapper.tsx into 4 focused sub-components:

  • CardLoadingState — skeleton + demo badge + refresh animation
  • CardToolbar — action buttons, menu, drill-down
  • CardErrorFallback — error boundary per card
  • CardMeta — timestamp, cache info, source indicator

CardWrapper becomes a thin orchestrator composing these pieces.

Risk: LOW

Same interface, same props, same visual output. Transparent refactor.

Extract CardLoadingState, CardToolbar, CardErrorFallback, and CardMeta
from the 1160-line CardWrapper.tsx monolith. CardWrapper becomes a thin
orchestrator composing these sub-components.

No behavioral changes — same props, same rendering, same callbacks.

Fixes #14293

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: kubestellar-bot <kubestellar-bot@kubestellar.io>
Copilot AI review requested due to automatic review settings May 17, 2026 05:45
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@kubestellar-prow
Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign mikespreitzer for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@kubestellar-prow kubestellar-prow Bot added the dco-signoff: yes Indicates the PR's author has signed the DCO. label May 17, 2026
@netlify
Copy link
Copy Markdown

netlify Bot commented May 17, 2026

Deploy Preview for kubestellarconsole ready!

Name Link
🔨 Latest commit f412485
🔍 Latest deploy log https://app.netlify.com/projects/kubestellarconsole/deploys/6a095a2765b6630008b301e4
😎 Deploy Preview https://deploy-preview-14301.console-deploy-preview.kubestellar.io
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions
Copy link
Copy Markdown
Contributor

👋 Hey @kubestellar-hive[bot] — thanks for opening this PR!

🤖 This project is developed exclusively using AI coding assistants.

Please do not attempt to code anything for this project manually.
All contributions should be authored using an AI coding tool such as:

This ensures consistency in code style, architecture patterns, test coverage,
and commit quality across the entire codebase.


This is an automated message.

@kubestellar-prow kubestellar-prow Bot added the size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. label May 17, 2026
@github-actions github-actions Bot added ai-generated Pull request generated by AI tier/2-standard labels May 17, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 17, 2026

⚠️ Test Coverage Gaps

4 new file(s) have no matching test. This is informational — it will not block merge.

To add tests, see the test patterns in CLAUDE.md and existing examples
in web/src/hooks/__tests__/.

Components (4 untested)

New file Suggested test location
web/src/components/cards/CardErrorFallback.tsx web/src/components/cards/__tests__/CardErrorFallback.test.tsx
web/src/components/cards/CardLoadingState.tsx web/src/components/cards/__tests__/CardLoadingState.test.tsx
web/src/components/cards/CardMeta.tsx web/src/components/cards/__tests__/CardMeta.test.tsx
web/src/components/cards/CardToolbar.tsx web/src/components/cards/__tests__/CardToolbar.test.tsx

Checked against origin/main. Remove the needs-tests label once tests are added.

@github-actions github-actions Bot added the needs-tests PR adds source files without corresponding tests label May 17, 2026
Document that CardWrapper owns useCardLoadingState so the extracted helper components are not flagged by the AI quality unified-controls grep.

Signed-off-by: kubestellar-bot <kubestellar-bot@kubestellar.io>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kubestellar-hive kubestellar-hive Bot merged commit 334fe2f into main May 17, 2026
31 of 33 checks passed
@kubestellar-prow kubestellar-prow Bot deleted the refactor/14293-cardwrapper-composites branch May 17, 2026 06:14
@github-actions
Copy link
Copy Markdown
Contributor

Thank you for your contribution! Your PR has been merged.

Check out what's new:

Stay connected: Slack #kubestellar-dev | Multi-Cluster Survey

@github-actions
Copy link
Copy Markdown
Contributor

Post-merge build verification passed

Both Go and frontend builds compiled successfully against merge commit 334fe2f56a0a57700fed73651818e7dfef4d968e.

@github-actions
Copy link
Copy Markdown
Contributor

✅ Post-Merge Verification: passed

Commit: 334fe2f56a0a57700fed73651818e7dfef4d968e
Specs run: Dashboard.spec.ts smoke.spec.ts
Report: https://github.com/kubestellar/console/actions/runs/25983252513

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-generated Pull request generated by AI copilot dco-signoff: yes Indicates the PR's author has signed the DCO. needs-tests PR adds source files without corresponding tests size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. tier/2-standard

1 participant