Skip to content

Removed legacy Settings button components#29548

Merged
9larsons merged 1 commit into
mainfrom
codex/admin-settings-shade-buttons
Jul 23, 2026
Merged

Removed legacy Settings button components#29548
9larsons merged 1 commit into
mainfrom
codex/admin-settings-shade-buttons

Conversation

@9larsons

Copy link
Copy Markdown
Contributor

Summary

  • migrated Settings button usage and design-system internals to Shade Button primitives
  • removed the legacy Button, ButtonGroup, and ButtonProps implementation and exports
  • changed modal/form action contracts to use semantic Shade variants directly
  • preserved destructive states and accessible action names, and refreshed the Shade adoption snapshot

Validation

  • admin-x-settings lint and typecheck
  • admin-x-framework lint, typecheck, and build
  • admin-x-design-system lint, build, and 13 unit tests
  • admin-x-settings: 213 unit tests
  • 22 affected Settings acceptance files: 223 tests
  • full @tryghost/admin production build
  • two independent review passes with no significant findings remaining

@nx-cloud

nx-cloud Bot commented Jul 22, 2026

Copy link
Copy Markdown

🤖 Nx Cloud AI Fix

Ensure the fix-ci command is configured to always run in your CI pipeline to get automatic fixes in future runs. For more information, please see https://nx.dev/ci/features/self-healing-ci


View your CI Pipeline Execution ↗ for commit ba41b5e

Command Status Duration Result
nx run @tryghost/admin:test:acceptance ✅ Succeeded 6m 6s View ↗
nx run-many -t test:unit -p @tryghost/admin-x-d... ✅ Succeeded 2m 26s View ↗
nx run ghost-monorepo:lint:boundaries ✅ Succeeded 23s View ↗
nx run-many -t lint -p @tryghost/admin-x-design... ✅ Succeeded 1m 9s View ↗
nx run @tryghost/activitypub:test:acceptance ✅ Succeeded 41s View ↗
nx run @tryghost/admin:build ✅ Succeeded 18s View ↗
nx run-many --target=build --projects=tag:publi... ✅ Succeeded <1s View ↗
nx run ghost-admin:test ✅ Succeeded 1s View ↗

💡 Verify your cache is correct by running tasks in a sandbox. Read docs ↗


☁️ Nx Cloud last updated this comment at 2026-07-23 01:01:39 UTC

@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

The PR removes the legacy Button and ButtonGroup components and exports. Design-system layouts, modals, stories, and settings controls migrate to Shade buttons, explicit icons, ReactNode action slots, variant-based modal actions, and direct footer compositions. Toggle controls, StripeButton, framework form types, and Shade adoption metrics are also updated.

Possibly related PRs

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title matches the main change: legacy Settings button components were removed during the Shade migration.
Description check ✅ Passed The description is directly related and accurately summarizes the button migration, API changes, and validation work.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/admin-settings-shade-buttons

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.

@codecov

codecov Bot commented Jul 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 74.82%. Comparing base (0c8323b) to head (0fb4e41).

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #29548      +/-   ##
==========================================
+ Coverage   74.80%   74.82%   +0.01%     
==========================================
  Files        1611     1611              
  Lines      141659   141678      +19     
  Branches    17318    17326       +8     
==========================================
+ Hits       105971   106007      +36     
+ Misses      34616    34598      -18     
- Partials     1072     1073       +1     
Flag Coverage Δ
admin-tests 55.62% <ø> (+0.18%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

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

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
apps/admin-x-settings/src/components/settings/growth/offers/edit-offer-modal.tsx (1)

142-152: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Missing variant='link' on the "Copy link" button — likely dropped during migration.

The copy-offer-code Button at line 147 has no variant prop, so it will render with Shade Button's default (filled) styling instead of the intended subtle link-style action. This is inconsistent with the sibling archive/reactivate buttons at line 170 in the same file, which correctly use variant='link', and contradicts the PR's own stated intent (per the diff summary) that this button should use variant='link'.

🐛 Proposed fix
-                                    rightPlaceholder={offer?.code !== '' ? <Button className='mt-1 mr-0.5' size='sm' type='button' onClick={handleCopyClick}>{isCopied ? 'Copied!' : 'Copy link'}</Button> : null}
+                                    rightPlaceholder={offer?.code !== '' ? <Button className='mt-1 mr-0.5' size='sm' type='button' variant='link' onClick={handleCopyClick}>{isCopied ? 'Copied!' : 'Copy link'}</Button> : null}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@apps/admin-x-settings/src/components/settings/growth/offers/edit-offer-modal.tsx`
around lines 142 - 152, Add variant='link' to the copy-offer-code Button
rendered by the TextField rightPlaceholder in the offer edit modal, matching the
intended subtle styling and the sibling archive/reactivate buttons.
apps/admin-x-settings/src/components/settings/growth/recommendations/edit-recommendation-modal.tsx (1)

39-72: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Preserve destructive styling for the delete confirmation.

ConfirmationModal defaults to okVariant = 'default', so this delete dialog can look non-destructive. Add okVariant: 'destructive' to the confirmation props.

Proposed fix
                 okLabel: 'Delete',
+                okVariant: 'destructive',
                 onOk: async (deleteModal) => {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@apps/admin-x-settings/src/components/settings/growth/recommendations/edit-recommendation-modal.tsx`
around lines 39 - 72, Add okVariant: 'destructive' to the props passed to
ConfirmationModal in the leftButton delete flow, ensuring the confirmation
dialog’s Delete action retains destructive styling.
🧹 Nitpick comments (1)
apps/admin-x-settings/src/components/settings/advanced/labs/migration-options.tsx (1)

60-77: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Duplicate handleDeleteAllContent logic vs. danger-zone.tsx.

This confirmation-modal implementation is essentially identical to handleDeleteAllContent in apps/admin-x-settings/src/components/settings/advanced/danger-zone.tsx (same title/prompt/okVariant/onOk logic). Both copies were updated consistently in this PR, but the duplication risks future drift (e.g. copy or behavior changes applied to only one location).

Consider extracting a shared hook (e.g. useDeleteAllContentConfirmation) used by both migration-options.tsx and danger-zone.tsx.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@apps/admin-x-settings/src/components/settings/advanced/labs/migration-options.tsx`
around lines 60 - 77, Extract the shared delete-all-content confirmation flow
from handleDeleteAllContent in migration-options.tsx and danger-zone.tsx into a
reusable hook such as useDeleteAllContentConfirmation. Have both components use
the hook while preserving the existing modal configuration, deleteAllContent
call, success toast, modal removal, query refetch, and error handling.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/admin-x-design-system/src/global/layout/page.tsx`:
- Line 92: Update the CustomGlobalAction contract to require an ariaLabel field,
then change the custom action Button rendering to use action.ariaLabel for its
aria-label instead of action.iconName; keep iconName solely for selecting the
Icon.

In
`@apps/admin-x-settings/src/components/settings/growth/offers/offer-success.tsx`:
- Line 42: Update the discount formatting in the offer success share-text flow
to preserve fixed-currency decimal values instead of rounding them. Adjust the
formatNumber call around currencyToDecimal(offer?.amount) to use the appropriate
fixed-decimal formatting options, while preserving the existing currency and
discount text.

In
`@apps/admin-x-settings/src/components/settings/membership/portal/portal-links.tsx`:
- Around line 24-31: Update the Copy button handler in the ActionListItemActions
block to handle navigator.clipboard.writeText(value) asynchronously with
try/catch. Change the button label to “Copied” only after the write resolves
successfully, preserve the existing reset to “Copy,” and handle rejected writes
without changing the label.

In
`@apps/admin-x-settings/src/components/settings/site/navigation/navigation-edit-form.tsx`:
- Line 34: Update the Add navigation item Button in the navigation edit form to
use the same unstyled treatment as the surrounding Delete action, specifically
the established ghost variant, while preserving its existing aria-label, click
handler, sizing, and icon.

In `@apps/admin-x-settings/src/components/settings/site/theme/theme-preview.tsx`:
- Around line 105-112: Update the desktop and mobile preview buttons in the
theme preview controls to expose their selected state with aria-pressed, setting
it true only when the corresponding previewMode is active and false otherwise.
Keep the existing setPreviewMode handlers and visual colorClass indicators
unchanged.

---

Outside diff comments:
In
`@apps/admin-x-settings/src/components/settings/growth/offers/edit-offer-modal.tsx`:
- Around line 142-152: Add variant='link' to the copy-offer-code Button rendered
by the TextField rightPlaceholder in the offer edit modal, matching the intended
subtle styling and the sibling archive/reactivate buttons.

In
`@apps/admin-x-settings/src/components/settings/growth/recommendations/edit-recommendation-modal.tsx`:
- Around line 39-72: Add okVariant: 'destructive' to the props passed to
ConfirmationModal in the leftButton delete flow, ensuring the confirmation
dialog’s Delete action retains destructive styling.

---

Nitpick comments:
In
`@apps/admin-x-settings/src/components/settings/advanced/labs/migration-options.tsx`:
- Around line 60-77: Extract the shared delete-all-content confirmation flow
from handleDeleteAllContent in migration-options.tsx and danger-zone.tsx into a
reusable hook such as useDeleteAllContentConfirmation. Have both components use
the hook while preserving the existing modal configuration, deleteAllContent
call, success toast, modal removal, query refetch, and error handling.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: af778512-16c2-4037-992b-44eb045f1450

📥 Commits

Reviewing files that changed from the base of the PR and between 0c8323b and faf0d03.

📒 Files selected for processing (108)
  • apps/admin-x-design-system/src/global/button-group.stories.tsx
  • apps/admin-x-design-system/src/global/button-group.tsx
  • apps/admin-x-design-system/src/global/button.stories.tsx
  • apps/admin-x-design-system/src/global/button.tsx
  • apps/admin-x-design-system/src/global/chrome/desktop-chrome-header.stories.tsx
  • apps/admin-x-design-system/src/global/form/text-field.stories.tsx
  • apps/admin-x-design-system/src/global/layout/app-menu.tsx
  • apps/admin-x-design-system/src/global/layout/global-actions.tsx
  • apps/admin-x-design-system/src/global/layout/page.stories.tsx
  • apps/admin-x-design-system/src/global/layout/page.tsx
  • apps/admin-x-design-system/src/global/layout/view-container.stories.tsx
  • apps/admin-x-design-system/src/global/layout/view-container.tsx
  • apps/admin-x-design-system/src/global/modal/confirmation-modal.stories.tsx
  • apps/admin-x-design-system/src/global/modal/confirmation-modal.tsx
  • apps/admin-x-design-system/src/global/modal/limit-modal.stories.tsx
  • apps/admin-x-design-system/src/global/modal/limit-modal.tsx
  • apps/admin-x-design-system/src/global/modal/modal.stories.tsx
  • apps/admin-x-design-system/src/global/modal/modal.tsx
  • apps/admin-x-design-system/src/global/modal/preview-modal.stories.tsx
  • apps/admin-x-design-system/src/global/modal/preview-modal.tsx
  • apps/admin-x-design-system/src/global/tooltip.stories.tsx
  • apps/admin-x-design-system/src/index.ts
  • apps/admin-x-design-system/src/settings/setting-group-header.stories.tsx
  • apps/admin-x-design-system/src/settings/setting-group.stories.tsx
  • apps/admin-x-design-system/src/settings/setting-group.tsx
  • apps/admin-x-framework/src/hooks/use-form.ts
  • apps/admin-x-settings/src/components/exit-settings-button.tsx
  • apps/admin-x-settings/src/components/settings/advanced/code-injection.tsx
  • apps/admin-x-settings/src/components/settings/advanced/code/code-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/danger-zone.tsx
  • apps/admin-x-settings/src/components/settings/advanced/history-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/history.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/add-integration-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/content-api-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/custom-integration-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/first-promoter-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/pintura-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/slack-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/transistor-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/unsplash-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/webhook-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/webhooks-table.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/zapier-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/beta-features.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/migration-options.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/yaml-file-editor-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/migration-tools-export.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/migration-tools-import.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/universal-import-modal.tsx
  • apps/admin-x-settings/src/components/settings/email-design/email-design-modal.tsx
  • apps/admin-x-settings/src/components/settings/email/emails.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/add-newsletter-modal.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/newsletter-detail-modal.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/newsletters-list.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/newsletters-tab-content.tsx
  • apps/admin-x-settings/src/components/settings/general/invite-user-modal.tsx
  • apps/admin-x-settings/src/components/settings/general/user-detail-modal.tsx
  • apps/admin-x-settings/src/components/settings/general/users.tsx
  • apps/admin-x-settings/src/components/settings/general/users/change-password-form.tsx
  • apps/admin-x-settings/src/components/settings/general/users/staff-token.tsx
  • apps/admin-x-settings/src/components/settings/growth/embed-signup/embed-signup-form.tsx
  • apps/admin-x-settings/src/components/settings/growth/embed-signup/embed-signup-sidebar.tsx
  • apps/admin-x-settings/src/components/settings/growth/explore.tsx
  • apps/admin-x-settings/src/components/settings/growth/explore/testimonials-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/add-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/edit-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/edit-retention-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/offer-success.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/offers-index.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/add-recommendation-modal-confirm.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/add-recommendation-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/edit-recommendation-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/incoming-recommendation-list.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/recommendation-list.tsx
  • apps/admin-x-settings/src/components/settings/membership/custom-fields.tsx
  • apps/admin-x-settings/src/components/settings/membership/custom-fields/custom-field-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/test-email-dropdown.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/welcome-email-customize-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/welcome-email-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal/portal-links.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal/portal-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/stripe/stripe-connect-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers/tier-detail-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers/tier-detail-preview.tsx
  • apps/admin-x-settings/src/components/settings/site/announcement-bar-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/announcement-bar.tsx
  • apps/admin-x-settings/src/components/settings/site/change-theme.tsx
  • apps/admin-x-settings/src/components/settings/site/design-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/design-setting.tsx
  • apps/admin-x-settings/src/components/settings/site/navigation.tsx
  • apps/admin-x-settings/src/components/settings/site/navigation/navigation-edit-form.tsx
  • apps/admin-x-settings/src/components/settings/site/theme-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/advanced-theme-settings.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/invalid-theme-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-code-editor-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-editor-confirm-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-installed-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-preview.tsx
  • apps/admin-x-settings/src/components/stripe-button.tsx
  • apps/shade/src/docs/adoption-data.json
💤 Files with no reviewable changes (5)
  • apps/admin-x-design-system/src/index.ts
  • apps/admin-x-design-system/src/global/button-group.tsx
  • apps/admin-x-design-system/src/global/button.tsx
  • apps/admin-x-design-system/src/global/button-group.stories.tsx
  • apps/admin-x-design-system/src/global/button.stories.tsx

Comment thread apps/admin-x-design-system/src/global/layout/page.tsx Outdated
Comment thread apps/admin-x-settings/src/components/settings/growth/offers/offer-success.tsx Outdated
Comment thread apps/admin-x-settings/src/components/settings/membership/portal/portal-links.tsx Outdated
@9larsons
9larsons force-pushed the codex/admin-settings-shade-buttons branch 3 times, most recently from a0ef046 to 114640a Compare July 23, 2026 00:01

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
apps/shade/src/components/ui/button.tsx (1)

11-20: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Duplicated "destructive ghost" button styling across migrated files. Both migrated components hand-roll the same text-destructive hover:text-destructive override on top of variant='ghost' to get a destructive-looking ghost button; a dedicated buttonVariants compound (e.g. a destructive-ghost variant) in Shade's Button would remove this duplication and keep the styling consistent as more files migrate.

  • apps/shade/src/components/ui/button.tsx#L11-L20: add a compound variant (e.g. ghost-destructive) to buttonVariants encapsulating font-medium text-destructive hover:bg-accent hover:text-destructive.
  • apps/admin-x-settings/src/components/settings/growth/recommendations/edit-recommendation-modal.tsx#L39-L59: use the new variant instead of the inline className='text-destructive hover:text-destructive'.
  • apps/admin-x-settings/src/components/settings/membership/stripe/stripe-connect-modal.tsx#L187-L193: use the new variant instead of the inline className='text-destructive hover:text-destructive'.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/shade/src/components/ui/button.tsx` around lines 11 - 20, The
destructive ghost styling is duplicated across three migrated components. In
apps/shade/src/components/ui/button.tsx:11-20, add a buttonVariants compound
variant such as ghost-destructive that combines font-medium, text-destructive,
hover:bg-accent, and hover:text-destructive; in
apps/admin-x-settings/src/components/settings/growth/recommendations/edit-recommendation-modal.tsx:39-59
and
apps/admin-x-settings/src/components/settings/membership/stripe/stripe-connect-modal.tsx:187-193,
use the new variant and remove the inline destructive text class override.
apps/admin-x-settings/src/components/settings/advanced/history.tsx (1)

15-15: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Duplicated TopLevelGroup action-button styling. Both files build the identical customButtons action button (className='mt-[-5px]' size='sm' type='button' variant='ghost'), differing only in label/handler; this is a good candidate for a small shared helper/component to avoid re-typing the same styling contract in every settings top-level group action.

  • apps/admin-x-settings/src/components/settings/advanced/history.tsx#L15-L15: extract a shared TopLevelGroupActionButton (or similar) taking onClick/children, and use it here for "View history".
  • apps/admin-x-settings/src/components/settings/site/announcement-bar.tsx#L15-L15: reuse the same helper for "Customize".
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/admin-x-settings/src/components/settings/advanced/history.tsx` at line
15, Extract a shared TopLevelGroupActionButton component or helper that accepts
onClick and children while encapsulating the common button styling and props.
Update apps/admin-x-settings/src/components/settings/advanced/history.tsx:15-15
to use it for “View history”, and
apps/admin-x-settings/src/components/settings/site/announcement-bar.tsx:15-15 to
use it for “Customize”, preserving each existing handler and label.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@apps/admin-x-settings/src/components/settings/advanced/history.tsx`:
- Line 15: Extract a shared TopLevelGroupActionButton component or helper that
accepts onClick and children while encapsulating the common button styling and
props. Update
apps/admin-x-settings/src/components/settings/advanced/history.tsx:15-15 to use
it for “View history”, and
apps/admin-x-settings/src/components/settings/site/announcement-bar.tsx:15-15 to
use it for “Customize”, preserving each existing handler and label.

In `@apps/shade/src/components/ui/button.tsx`:
- Around line 11-20: The destructive ghost styling is duplicated across three
migrated components. In apps/shade/src/components/ui/button.tsx:11-20, add a
buttonVariants compound variant such as ghost-destructive that combines
font-medium, text-destructive, hover:bg-accent, and hover:text-destructive; in
apps/admin-x-settings/src/components/settings/growth/recommendations/edit-recommendation-modal.tsx:39-59
and
apps/admin-x-settings/src/components/settings/membership/stripe/stripe-connect-modal.tsx:187-193,
use the new variant and remove the inline destructive text class override.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 224b14c6-0148-43d6-9c79-1a338948e643

📥 Commits

Reviewing files that changed from the base of the PR and between 7caca65 and a0ef046.

📒 Files selected for processing (111)
  • apps/admin-x-design-system/src/global/button-group.stories.tsx
  • apps/admin-x-design-system/src/global/button-group.tsx
  • apps/admin-x-design-system/src/global/button.stories.tsx
  • apps/admin-x-design-system/src/global/button.tsx
  • apps/admin-x-design-system/src/global/chrome/desktop-chrome-header.stories.tsx
  • apps/admin-x-design-system/src/global/form/text-field.stories.tsx
  • apps/admin-x-design-system/src/global/layout/app-menu.tsx
  • apps/admin-x-design-system/src/global/layout/global-actions.tsx
  • apps/admin-x-design-system/src/global/layout/page.stories.tsx
  • apps/admin-x-design-system/src/global/layout/page.tsx
  • apps/admin-x-design-system/src/global/layout/view-container.stories.tsx
  • apps/admin-x-design-system/src/global/layout/view-container.tsx
  • apps/admin-x-design-system/src/global/modal/confirmation-modal.stories.tsx
  • apps/admin-x-design-system/src/global/modal/confirmation-modal.tsx
  • apps/admin-x-design-system/src/global/modal/limit-modal.stories.tsx
  • apps/admin-x-design-system/src/global/modal/limit-modal.tsx
  • apps/admin-x-design-system/src/global/modal/modal.stories.tsx
  • apps/admin-x-design-system/src/global/modal/modal.tsx
  • apps/admin-x-design-system/src/global/modal/preview-modal.stories.tsx
  • apps/admin-x-design-system/src/global/modal/preview-modal.tsx
  • apps/admin-x-design-system/src/global/tooltip.stories.tsx
  • apps/admin-x-design-system/src/index.ts
  • apps/admin-x-design-system/src/settings/setting-group-header.stories.tsx
  • apps/admin-x-design-system/src/settings/setting-group-header.tsx
  • apps/admin-x-design-system/src/settings/setting-group.stories.tsx
  • apps/admin-x-design-system/src/settings/setting-group.tsx
  • apps/admin-x-framework/src/hooks/use-form.ts
  • apps/admin-x-settings/src/components/exit-settings-button.tsx
  • apps/admin-x-settings/src/components/settings/advanced/code-injection.tsx
  • apps/admin-x-settings/src/components/settings/advanced/code/code-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/danger-zone.tsx
  • apps/admin-x-settings/src/components/settings/advanced/history-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/history.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/add-integration-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/content-api-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/custom-integration-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/first-promoter-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/pintura-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/slack-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/transistor-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/unsplash-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/webhook-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/webhooks-table.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/zapier-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/beta-features.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/migration-options.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/yaml-file-editor-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/migration-tools-export.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/migration-tools-import.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/universal-import-modal.tsx
  • apps/admin-x-settings/src/components/settings/email-design/email-design-modal.tsx
  • apps/admin-x-settings/src/components/settings/email/emails.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/add-newsletter-modal.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/newsletter-detail-modal.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/newsletters-list.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/newsletters-tab-content.tsx
  • apps/admin-x-settings/src/components/settings/general/invite-user-modal.tsx
  • apps/admin-x-settings/src/components/settings/general/user-detail-modal.tsx
  • apps/admin-x-settings/src/components/settings/general/users.tsx
  • apps/admin-x-settings/src/components/settings/general/users/change-password-form.tsx
  • apps/admin-x-settings/src/components/settings/general/users/staff-token.tsx
  • apps/admin-x-settings/src/components/settings/growth/embed-signup/embed-signup-form.tsx
  • apps/admin-x-settings/src/components/settings/growth/embed-signup/embed-signup-sidebar.tsx
  • apps/admin-x-settings/src/components/settings/growth/explore.tsx
  • apps/admin-x-settings/src/components/settings/growth/explore/testimonials-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/add-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/edit-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/edit-retention-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/offer-success.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/offers-index.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/add-recommendation-modal-confirm.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/add-recommendation-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/edit-recommendation-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/incoming-recommendation-list.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/recommendation-list.tsx
  • apps/admin-x-settings/src/components/settings/membership/custom-fields.tsx
  • apps/admin-x-settings/src/components/settings/membership/custom-fields/custom-field-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/test-email-dropdown.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/welcome-email-customize-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/welcome-email-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal/portal-links.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal/portal-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/stripe/stripe-connect-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers/tier-detail-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers/tier-detail-preview.tsx
  • apps/admin-x-settings/src/components/settings/site/announcement-bar-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/announcement-bar.tsx
  • apps/admin-x-settings/src/components/settings/site/change-theme.tsx
  • apps/admin-x-settings/src/components/settings/site/design-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/design-setting.tsx
  • apps/admin-x-settings/src/components/settings/site/navigation.tsx
  • apps/admin-x-settings/src/components/settings/site/navigation/navigation-edit-form.tsx
  • apps/admin-x-settings/src/components/settings/site/theme-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/advanced-theme-settings.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/invalid-theme-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-code-editor-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-editor-confirm-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-installed-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-preview.tsx
  • apps/admin-x-settings/src/components/stripe-button.tsx
  • apps/shade/src/components/ui/button.tsx
  • apps/shade/src/docs/adoption-data.json
  • apps/shade/test/unit/components/ui/button.test.tsx
💤 Files with no reviewable changes (5)
  • apps/admin-x-design-system/src/global/button-group.tsx
  • apps/admin-x-design-system/src/global/button-group.stories.tsx
  • apps/admin-x-design-system/src/global/button.stories.tsx
  • apps/admin-x-design-system/src/global/button.tsx
  • apps/admin-x-design-system/src/index.ts
🚧 Files skipped from review as they are similar to previous changes (96)
  • apps/admin-x-settings/src/components/settings/email/newsletters/add-newsletter-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/webhook-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/unsplash-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/invalid-theme-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/embed-signup/embed-signup-form.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/first-promoter-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal/portal-modal.tsx
  • apps/admin-x-settings/src/components/settings/general/invite-user-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/edit-retention-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal.tsx
  • apps/admin-x-design-system/src/settings/setting-group-header.tsx
  • apps/admin-x-settings/src/components/settings/site/design-setting.tsx
  • apps/admin-x-design-system/src/settings/setting-group.stories.tsx
  • apps/admin-x-settings/src/components/settings/site/design-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/universal-import-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/add-recommendation-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/transistor-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-installed-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/announcement-bar-modal.tsx
  • apps/admin-x-design-system/src/global/modal/limit-modal.stories.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/add-integration-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/welcome-email-customize-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/explore.tsx
  • apps/admin-x-settings/src/components/settings/advanced/code-injection.tsx
  • apps/admin-x-settings/src/components/exit-settings-button.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/custom-integration-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations.tsx
  • apps/admin-x-design-system/src/global/modal/limit-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/content-api-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-editor-confirm-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/migration-tools-export.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/pintura-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/migration-options.tsx
  • apps/admin-x-settings/src/components/settings/advanced/danger-zone.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/add-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/change-theme.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/slack-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/test-email-dropdown.tsx
  • apps/admin-x-settings/src/components/settings/site/theme-modal.tsx
  • apps/admin-x-design-system/src/global/modal/modal.stories.tsx
  • apps/admin-x-design-system/src/global/modal/confirmation-modal.stories.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/welcome-email-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/navigation.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-code-editor-modal.tsx
  • apps/admin-x-design-system/src/global/tooltip.stories.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/zapier-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/history-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/navigation/navigation-edit-form.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/newsletters-list.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/advanced-theme-settings.tsx
  • apps/admin-x-design-system/src/global/layout/app-menu.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers/tier-detail-preview.tsx
  • apps/admin-x-design-system/src/global/modal/confirmation-modal.tsx
  • apps/admin-x-settings/src/components/settings/email/emails.tsx
  • apps/admin-x-design-system/src/global/layout/global-actions.tsx
  • apps/admin-x-settings/src/components/settings/general/user-detail-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/edit-offer-modal.tsx
  • apps/admin-x-design-system/src/global/layout/view-container.stories.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/migration-tools-import.tsx
  • apps/admin-x-design-system/src/settings/setting-group-header.stories.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/webhooks-table.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/recommendation-list.tsx
  • apps/admin-x-settings/src/components/settings/general/users/staff-token.tsx
  • apps/admin-x-design-system/src/global/modal/preview-modal.stories.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/beta-features.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/incoming-recommendation-list.tsx
  • apps/admin-x-design-system/src/settings/setting-group.tsx
  • apps/admin-x-settings/src/components/settings/email-design/email-design-modal.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/newsletters-tab-content.tsx
  • apps/admin-x-design-system/src/global/chrome/desktop-chrome-header.stories.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal/portal-links.tsx
  • apps/admin-x-settings/src/components/settings/growth/explore/testimonials-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers/tier-detail-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/code/code-modal.tsx
  • apps/admin-x-settings/src/components/settings/general/users.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/offers-index.tsx
  • apps/admin-x-settings/src/components/settings/membership/custom-fields.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/offer-success.tsx
  • apps/admin-x-design-system/src/global/layout/page.tsx
  • apps/admin-x-design-system/src/global/layout/view-container.tsx
  • apps/admin-x-settings/src/components/settings/growth/embed-signup/embed-signup-sidebar.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails.tsx
  • apps/admin-x-design-system/src/global/modal/preview-modal.tsx
  • apps/admin-x-design-system/src/global/modal/modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/yaml-file-editor-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/custom-fields/custom-field-modal.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters.tsx
  • apps/admin-x-settings/src/components/stripe-button.tsx
  • apps/admin-x-design-system/src/global/layout/page.stories.tsx
  • apps/admin-x-framework/src/hooks/use-form.ts
  • apps/admin-x-settings/src/components/settings/growth/recommendations/add-recommendation-modal-confirm.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/newsletter-detail-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-preview.tsx

@9larsons
9larsons force-pushed the codex/admin-settings-shade-buttons branch 3 times, most recently from 4ca84a2 to dac92d2 Compare July 23, 2026 00:22

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/admin-x-design-system/src/global/layout/view-container.tsx`:
- Line 159: Update the toolbar render guard in the view container to include
primaryAction alongside title, actions, headerContent, and tabs, so a toolbar
renders when primaryAction is the only supplied slot. Keep the existing toolbar
content rendering unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 474ad93b-04ed-4d17-a5a6-df4270cb84dd

📥 Commits

Reviewing files that changed from the base of the PR and between 4ca84a2 and dac92d2.

📒 Files selected for processing (111)
  • apps/admin-x-design-system/src/global/button-group.stories.tsx
  • apps/admin-x-design-system/src/global/button-group.tsx
  • apps/admin-x-design-system/src/global/button.stories.tsx
  • apps/admin-x-design-system/src/global/button.tsx
  • apps/admin-x-design-system/src/global/chrome/desktop-chrome-header.stories.tsx
  • apps/admin-x-design-system/src/global/form/text-field.stories.tsx
  • apps/admin-x-design-system/src/global/layout/app-menu.tsx
  • apps/admin-x-design-system/src/global/layout/global-actions.tsx
  • apps/admin-x-design-system/src/global/layout/page.stories.tsx
  • apps/admin-x-design-system/src/global/layout/page.tsx
  • apps/admin-x-design-system/src/global/layout/view-container.stories.tsx
  • apps/admin-x-design-system/src/global/layout/view-container.tsx
  • apps/admin-x-design-system/src/global/modal/confirmation-modal.stories.tsx
  • apps/admin-x-design-system/src/global/modal/confirmation-modal.tsx
  • apps/admin-x-design-system/src/global/modal/limit-modal.stories.tsx
  • apps/admin-x-design-system/src/global/modal/limit-modal.tsx
  • apps/admin-x-design-system/src/global/modal/modal.stories.tsx
  • apps/admin-x-design-system/src/global/modal/modal.tsx
  • apps/admin-x-design-system/src/global/modal/preview-modal.stories.tsx
  • apps/admin-x-design-system/src/global/modal/preview-modal.tsx
  • apps/admin-x-design-system/src/global/tooltip.stories.tsx
  • apps/admin-x-design-system/src/index.ts
  • apps/admin-x-design-system/src/settings/setting-group-header.stories.tsx
  • apps/admin-x-design-system/src/settings/setting-group-header.tsx
  • apps/admin-x-design-system/src/settings/setting-group.stories.tsx
  • apps/admin-x-design-system/src/settings/setting-group.tsx
  • apps/admin-x-framework/src/hooks/use-form.ts
  • apps/admin-x-settings/src/components/exit-settings-button.tsx
  • apps/admin-x-settings/src/components/settings/advanced/code-injection.tsx
  • apps/admin-x-settings/src/components/settings/advanced/code/code-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/danger-zone.tsx
  • apps/admin-x-settings/src/components/settings/advanced/history-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/history.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/add-integration-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/content-api-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/custom-integration-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/first-promoter-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/pintura-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/slack-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/transistor-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/unsplash-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/webhook-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/webhooks-table.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/zapier-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/beta-features.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/migration-options.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/yaml-file-editor-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/migration-tools-export.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/migration-tools-import.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/universal-import-modal.tsx
  • apps/admin-x-settings/src/components/settings/email-design/email-design-modal.tsx
  • apps/admin-x-settings/src/components/settings/email/emails.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/add-newsletter-modal.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/newsletter-detail-modal.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/newsletters-list.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/newsletters-tab-content.tsx
  • apps/admin-x-settings/src/components/settings/general/invite-user-modal.tsx
  • apps/admin-x-settings/src/components/settings/general/user-detail-modal.tsx
  • apps/admin-x-settings/src/components/settings/general/users.tsx
  • apps/admin-x-settings/src/components/settings/general/users/change-password-form.tsx
  • apps/admin-x-settings/src/components/settings/general/users/staff-token.tsx
  • apps/admin-x-settings/src/components/settings/growth/embed-signup/embed-signup-form.tsx
  • apps/admin-x-settings/src/components/settings/growth/embed-signup/embed-signup-sidebar.tsx
  • apps/admin-x-settings/src/components/settings/growth/explore.tsx
  • apps/admin-x-settings/src/components/settings/growth/explore/testimonials-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/add-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/edit-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/edit-retention-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/offer-success.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/offers-index.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/add-recommendation-modal-confirm.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/add-recommendation-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/edit-recommendation-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/incoming-recommendation-list.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/recommendation-list.tsx
  • apps/admin-x-settings/src/components/settings/membership/custom-fields.tsx
  • apps/admin-x-settings/src/components/settings/membership/custom-fields/custom-field-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/test-email-dropdown.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/welcome-email-customize-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/welcome-email-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal/portal-links.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal/portal-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/stripe/stripe-connect-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers/tier-detail-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers/tier-detail-preview.tsx
  • apps/admin-x-settings/src/components/settings/site/announcement-bar-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/announcement-bar.tsx
  • apps/admin-x-settings/src/components/settings/site/change-theme.tsx
  • apps/admin-x-settings/src/components/settings/site/design-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/design-setting.tsx
  • apps/admin-x-settings/src/components/settings/site/navigation.tsx
  • apps/admin-x-settings/src/components/settings/site/navigation/navigation-edit-form.tsx
  • apps/admin-x-settings/src/components/settings/site/theme-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/advanced-theme-settings.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/invalid-theme-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-code-editor-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-editor-confirm-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-installed-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-preview.tsx
  • apps/admin-x-settings/src/components/stripe-button.tsx
  • apps/shade/src/components/ui/button.tsx
  • apps/shade/src/docs/adoption-data.json
  • apps/shade/test/unit/components/ui/button.test.tsx
💤 Files with no reviewable changes (5)
  • apps/admin-x-design-system/src/global/button.stories.tsx
  • apps/admin-x-design-system/src/global/button-group.stories.tsx
  • apps/admin-x-design-system/src/global/button.tsx
  • apps/admin-x-design-system/src/global/button-group.tsx
  • apps/admin-x-design-system/src/index.ts
🚧 Files skipped from review as they are similar to previous changes (92)
  • apps/admin-x-settings/src/components/settings/site/theme/theme-installed-modal.tsx
  • apps/admin-x-design-system/src/global/modal/limit-modal.tsx
  • apps/admin-x-design-system/src/settings/setting-group-header.tsx
  • apps/admin-x-settings/src/components/settings/advanced/history.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/first-promoter-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/unsplash-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/design-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/add-integration-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/welcome-email-customize-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/change-theme.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/webhook-modal.tsx
  • apps/shade/test/unit/components/ui/button.test.tsx
  • apps/admin-x-settings/src/components/settings/site/announcement-bar.tsx
  • apps/admin-x-settings/src/components/settings/growth/explore/testimonials-modal.tsx
  • apps/admin-x-settings/src/components/settings/general/users/staff-token.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal.tsx
  • apps/admin-x-settings/src/components/settings/site/announcement-bar-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations.tsx
  • apps/admin-x-settings/src/components/settings/advanced/danger-zone.tsx
  • apps/admin-x-design-system/src/global/modal/limit-modal.stories.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/newsletters-list.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/custom-integration-modal.tsx
  • apps/admin-x-design-system/src/global/modal/confirmation-modal.tsx
  • apps/admin-x-design-system/src/global/modal/confirmation-modal.stories.tsx
  • apps/shade/src/components/ui/button.tsx
  • apps/admin-x-design-system/src/settings/setting-group.stories.tsx
  • apps/admin-x-settings/src/components/settings/site/design-setting.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal/portal-modal.tsx
  • apps/admin-x-design-system/src/settings/setting-group-header.stories.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-editor-confirm-modal.tsx
  • apps/admin-x-design-system/src/global/layout/app-menu.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs.tsx
  • apps/admin-x-framework/src/hooks/use-form.ts
  • apps/admin-x-settings/src/components/settings/membership/portal/portal-links.tsx
  • apps/admin-x-settings/src/components/settings/site/navigation.tsx
  • apps/admin-x-settings/src/components/settings/email-design/email-design-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/add-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/transistor-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/universal-import-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-code-editor-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/advanced-theme-settings.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/welcome-email-modal.tsx
  • apps/admin-x-design-system/src/global/form/text-field.stories.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers.tsx
  • apps/admin-x-settings/src/components/settings/site/theme-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/content-api-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/code/code-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/slack-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/recommendation-list.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/incoming-recommendation-list.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers/tier-detail-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/code-injection.tsx
  • apps/admin-x-settings/src/components/settings/growth/explore.tsx
  • apps/admin-x-design-system/src/global/tooltip.stories.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/offer-success.tsx
  • apps/admin-x-design-system/src/global/modal/preview-modal.stories.tsx
  • apps/admin-x-settings/src/components/settings/general/users/change-password-form.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/beta-features.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/add-newsletter-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/migration-tools-export.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/test-email-dropdown.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-preview.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers.tsx
  • apps/admin-x-settings/src/components/settings/growth/embed-signup/embed-signup-sidebar.tsx
  • apps/admin-x-design-system/src/global/layout/global-actions.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/migration-options.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/pintura-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/edit-recommendation-modal.tsx
  • apps/admin-x-settings/src/components/stripe-button.tsx
  • apps/admin-x-design-system/src/global/chrome/desktop-chrome-header.stories.tsx
  • apps/admin-x-settings/src/components/settings/site/navigation/navigation-edit-form.tsx
  • apps/admin-x-design-system/src/global/modal/preview-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/edit-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/webhooks-table.tsx
  • apps/admin-x-design-system/src/global/modal/modal.stories.tsx
  • apps/admin-x-settings/src/components/settings/general/invite-user-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/zapier-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/history-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers/tier-detail-preview.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/migration-tools-import.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/add-recommendation-modal-confirm.tsx
  • apps/admin-x-settings/src/components/settings/email/emails.tsx
  • apps/admin-x-design-system/src/global/modal/modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/offers-index.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/newsletter-detail-modal.tsx
  • apps/admin-x-design-system/src/global/layout/view-container.stories.tsx
  • apps/admin-x-settings/src/components/settings/membership/stripe/stripe-connect-modal.tsx
  • apps/admin-x-design-system/src/global/layout/page.tsx
  • apps/shade/src/docs/adoption-data.json

Comment thread apps/admin-x-design-system/src/global/layout/view-container.tsx
@9larsons
9larsons force-pushed the codex/admin-settings-shade-buttons branch from dac92d2 to 0fb4e41 Compare July 23, 2026 00:41
@9larsons

Copy link
Copy Markdown
Contributor Author

Addressed the two outside-diff migration findings as well:

  • restored link styling for the offer-code Copy link action
  • restored destructive styling for recommendation deletion confirmation

I intentionally left the delete-all-content hook extraction out of this PR: that duplication predates this migration, both paths remain behaviorally aligned, and extracting it would expand an already broad component-removal change.

@9larsons

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
apps/admin-x-design-system/src/settings/setting-group.tsx (1)

120-148: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Collapse now-identical if (!isEditing)/else branches.

Both branches render the exact same JSX (containerClasses, customHeader/SettingGroupHeader, (onEditingChange && buttons), {children}) since buttons already accounts for isEditing internally. The branching is now dead weight.

♻️ Proposed simplification
-    if (!isEditing) {
-        return (
-            <div className={containerClasses} data-testid={testId}>
-                <div ref={ref} className='absolute' id={navid && navid}></div>
-                {customHeader ? customHeader :
-                    <SettingGroupHeader beta={beta} description={description} title={title!}>
-                        {customButtons ? customButtons :
-                            (onEditingChange && buttons)
-                        }
-                    </SettingGroupHeader>
-                }
-                {children}
-            </div>
-        );
-    } else {
-        return (
-            <div className={containerClasses} data-testid={testId}>
-                <div ref={ref} className='absolute' id={navid && navid}></div>
-                {customHeader ? customHeader :
-                    <SettingGroupHeader beta={beta} description={description} title={title!}>
-                        {customButtons ? customButtons :
-                            (onEditingChange && buttons)
-                        }
-                    </SettingGroupHeader>
-                }
-                {children}
-            </div>
-        );
-    }
+    return (
+        <div className={containerClasses} data-testid={testId}>
+            <div ref={ref} className='absolute' id={navid && navid}></div>
+            {customHeader ? customHeader :
+                <SettingGroupHeader beta={beta} description={description} title={title!}>
+                    {customButtons ? customButtons :
+                        (onEditingChange && buttons)
+                    }
+                </SettingGroupHeader>
+            }
+            {children}
+        </div>
+    );
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/admin-x-design-system/src/settings/setting-group.tsx` around lines 120 -
148, Remove the redundant isEditing conditional in the component render logic
and return the shared JSX once. Preserve the existing container, header
selection, button handling, ref anchor, and children rendering, relying on
buttons to account for editing state internally.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@apps/admin-x-settings/src/components/settings/advanced/migration-tools/migration-tools-import.tsx`:
- Around line 15-23: Restore the Medium icon’s dark-mode inversion in the
`importers` array by adding the existing `dark:invert` styling to its `Icon`
className, while leaving the other importer icons unchanged.

---

Outside diff comments:
In `@apps/admin-x-design-system/src/settings/setting-group.tsx`:
- Around line 120-148: Remove the redundant isEditing conditional in the
component render logic and return the shared JSX once. Preserve the existing
container, header selection, button handling, ref anchor, and children
rendering, relying on buttons to account for editing state internally.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 2cf87267-418d-46f9-968a-0ba24fd18b00

📥 Commits

Reviewing files that changed from the base of the PR and between 4ca84a2 and 0fb4e41.

📒 Files selected for processing (112)
  • apps/admin-x-design-system/src/global/button-group.stories.tsx
  • apps/admin-x-design-system/src/global/button-group.tsx
  • apps/admin-x-design-system/src/global/button.stories.tsx
  • apps/admin-x-design-system/src/global/button.tsx
  • apps/admin-x-design-system/src/global/chrome/desktop-chrome-header.stories.tsx
  • apps/admin-x-design-system/src/global/form/text-field.stories.tsx
  • apps/admin-x-design-system/src/global/layout/app-menu.tsx
  • apps/admin-x-design-system/src/global/layout/global-actions.tsx
  • apps/admin-x-design-system/src/global/layout/page.stories.tsx
  • apps/admin-x-design-system/src/global/layout/page.tsx
  • apps/admin-x-design-system/src/global/layout/view-container.stories.tsx
  • apps/admin-x-design-system/src/global/layout/view-container.tsx
  • apps/admin-x-design-system/src/global/modal/confirmation-modal.stories.tsx
  • apps/admin-x-design-system/src/global/modal/confirmation-modal.tsx
  • apps/admin-x-design-system/src/global/modal/limit-modal.stories.tsx
  • apps/admin-x-design-system/src/global/modal/limit-modal.tsx
  • apps/admin-x-design-system/src/global/modal/modal.stories.tsx
  • apps/admin-x-design-system/src/global/modal/modal.tsx
  • apps/admin-x-design-system/src/global/modal/preview-modal.stories.tsx
  • apps/admin-x-design-system/src/global/modal/preview-modal.tsx
  • apps/admin-x-design-system/src/global/tooltip.stories.tsx
  • apps/admin-x-design-system/src/index.ts
  • apps/admin-x-design-system/src/settings/setting-group-header.stories.tsx
  • apps/admin-x-design-system/src/settings/setting-group-header.tsx
  • apps/admin-x-design-system/src/settings/setting-group.stories.tsx
  • apps/admin-x-design-system/src/settings/setting-group.tsx
  • apps/admin-x-framework/src/hooks/use-form.ts
  • apps/admin-x-framework/test/unit/hooks/use-form.test.ts
  • apps/admin-x-settings/src/components/exit-settings-button.tsx
  • apps/admin-x-settings/src/components/settings/advanced/code-injection.tsx
  • apps/admin-x-settings/src/components/settings/advanced/code/code-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/danger-zone.tsx
  • apps/admin-x-settings/src/components/settings/advanced/history-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/history.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/add-integration-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/content-api-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/custom-integration-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/first-promoter-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/pintura-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/slack-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/transistor-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/unsplash-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/webhook-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/webhooks-table.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/zapier-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/beta-features.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/migration-options.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/yaml-file-editor-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/migration-tools-export.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/migration-tools-import.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/universal-import-modal.tsx
  • apps/admin-x-settings/src/components/settings/email-design/email-design-modal.tsx
  • apps/admin-x-settings/src/components/settings/email/emails.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/add-newsletter-modal.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/newsletter-detail-modal.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/newsletters-list.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/newsletters-tab-content.tsx
  • apps/admin-x-settings/src/components/settings/general/invite-user-modal.tsx
  • apps/admin-x-settings/src/components/settings/general/user-detail-modal.tsx
  • apps/admin-x-settings/src/components/settings/general/users.tsx
  • apps/admin-x-settings/src/components/settings/general/users/change-password-form.tsx
  • apps/admin-x-settings/src/components/settings/general/users/staff-token.tsx
  • apps/admin-x-settings/src/components/settings/growth/embed-signup/embed-signup-form.tsx
  • apps/admin-x-settings/src/components/settings/growth/embed-signup/embed-signup-sidebar.tsx
  • apps/admin-x-settings/src/components/settings/growth/explore.tsx
  • apps/admin-x-settings/src/components/settings/growth/explore/testimonials-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/add-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/edit-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/edit-retention-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/offer-success.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/offers-index.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/add-recommendation-modal-confirm.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/add-recommendation-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/edit-recommendation-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/incoming-recommendation-list.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/recommendation-list.tsx
  • apps/admin-x-settings/src/components/settings/membership/custom-fields.tsx
  • apps/admin-x-settings/src/components/settings/membership/custom-fields/custom-field-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/test-email-dropdown.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/welcome-email-customize-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/welcome-email-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal/portal-links.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal/portal-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/stripe/stripe-connect-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers/tier-detail-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers/tier-detail-preview.tsx
  • apps/admin-x-settings/src/components/settings/site/announcement-bar-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/announcement-bar.tsx
  • apps/admin-x-settings/src/components/settings/site/change-theme.tsx
  • apps/admin-x-settings/src/components/settings/site/design-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/design-setting.tsx
  • apps/admin-x-settings/src/components/settings/site/navigation.tsx
  • apps/admin-x-settings/src/components/settings/site/navigation/navigation-edit-form.tsx
  • apps/admin-x-settings/src/components/settings/site/theme-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/advanced-theme-settings.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/invalid-theme-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-code-editor-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-editor-confirm-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-installed-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-preview.tsx
  • apps/admin-x-settings/src/components/stripe-button.tsx
  • apps/shade/src/components/ui/button.tsx
  • apps/shade/src/docs/adoption-data.json
  • apps/shade/test/unit/components/ui/button.test.tsx
💤 Files with no reviewable changes (5)
  • apps/admin-x-design-system/src/global/button.tsx
  • apps/admin-x-design-system/src/global/button.stories.tsx
  • apps/admin-x-design-system/src/global/button-group.tsx
  • apps/admin-x-design-system/src/global/button-group.stories.tsx
  • apps/admin-x-design-system/src/index.ts
🚧 Files skipped from review as they are similar to previous changes (84)
  • apps/admin-x-settings/src/components/settings/site/announcement-bar-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal/portal-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/webhook-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers/tier-detail-preview.tsx
  • apps/admin-x-design-system/src/settings/setting-group.stories.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal.tsx
  • apps/shade/test/unit/components/ui/button.test.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/edit-retention-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/design-setting.tsx
  • apps/admin-x-settings/src/components/settings/site/navigation.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/first-promoter-modal.tsx
  • apps/admin-x-design-system/src/global/modal/confirmation-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/history.tsx
  • apps/admin-x-design-system/src/global/modal/limit-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/migration-tools-export.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/add-integration-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/transistor-modal.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/add-newsletter-modal.tsx
  • apps/admin-x-settings/src/components/settings/general/invite-user-modal.tsx
  • apps/admin-x-design-system/src/global/layout/global-actions.tsx
  • apps/admin-x-settings/src/components/settings/site/announcement-bar.tsx
  • apps/admin-x-design-system/src/global/form/text-field.stories.tsx
  • apps/admin-x-settings/src/components/settings/growth/embed-signup/embed-signup-form.tsx
  • apps/shade/src/components/ui/button.tsx
  • apps/admin-x-design-system/src/settings/setting-group-header.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-installed-modal.tsx
  • apps/admin-x-design-system/src/global/layout/app-menu.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-editor-confirm-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/code-injection.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/test-email-dropdown.tsx
  • apps/admin-x-settings/src/components/settings/advanced/history-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations.tsx
  • apps/admin-x-settings/src/components/settings/advanced/code/code-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails.tsx
  • apps/admin-x-design-system/src/global/chrome/desktop-chrome-header.stories.tsx
  • apps/admin-x-design-system/src/global/modal/limit-modal.stories.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs.tsx
  • apps/admin-x-settings/src/components/settings/general/users/staff-token.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/welcome-email-customize-modal.tsx
  • apps/admin-x-settings/src/components/settings/general/user-detail-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-code-editor-modal.tsx
  • apps/admin-x-settings/src/components/settings/email/emails.tsx
  • apps/admin-x-settings/src/components/settings/email-design/email-design-modal.tsx
  • apps/admin-x-design-system/src/global/modal/preview-modal.stories.tsx
  • apps/admin-x-settings/src/components/exit-settings-button.tsx
  • apps/admin-x-settings/src/components/settings/growth/embed-signup/embed-signup-sidebar.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/yaml-file-editor-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/migration-tools/universal-import-modal.tsx
  • apps/admin-x-design-system/src/global/layout/page.stories.tsx
  • apps/admin-x-settings/src/components/settings/email/newsletters/newsletters-list.tsx
  • apps/admin-x-settings/src/components/settings/site/navigation/navigation-edit-form.tsx
  • apps/admin-x-settings/src/components/settings/membership/portal/portal-links.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/add-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/recommendation-list.tsx
  • apps/admin-x-design-system/src/global/layout/view-container.stories.tsx
  • apps/admin-x-framework/src/hooks/use-form.ts
  • apps/admin-x-settings/src/components/settings/membership/tiers.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/migration-options.tsx
  • apps/admin-x-settings/src/components/settings/site/change-theme.tsx
  • apps/admin-x-settings/src/components/settings/advanced/danger-zone.tsx
  • apps/admin-x-design-system/src/settings/setting-group-header.stories.tsx
  • apps/admin-x-settings/src/components/settings/advanced/labs/beta-features.tsx
  • apps/admin-x-design-system/src/global/modal/preview-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/recommendations/edit-recommendation-modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/theme-preview.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/zapier-modal.tsx
  • apps/admin-x-settings/src/components/settings/general/users/change-password-form.tsx
  • apps/admin-x-settings/src/components/settings/growth/explore.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/offers-index.tsx
  • apps/admin-x-settings/src/components/settings/site/theme/advanced-theme-settings.tsx
  • apps/admin-x-settings/src/components/settings/membership/tiers/tier-detail-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/stripe/stripe-connect-modal.tsx
  • apps/admin-x-design-system/src/global/modal/modal.stories.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/slack-modal.tsx
  • apps/admin-x-settings/src/components/settings/growth/offers/edit-offer-modal.tsx
  • apps/admin-x-settings/src/components/settings/membership/member-emails/welcome-email-modal.tsx
  • apps/admin-x-design-system/src/global/layout/view-container.tsx
  • apps/admin-x-settings/src/components/settings/membership/custom-fields/custom-field-modal.tsx
  • apps/admin-x-settings/src/components/stripe-button.tsx
  • apps/admin-x-settings/src/components/settings/general/users.tsx
  • apps/admin-x-design-system/src/global/modal/modal.tsx
  • apps/admin-x-settings/src/components/settings/site/theme-modal.tsx
  • apps/admin-x-settings/src/components/settings/advanced/integrations/webhooks-table.tsx
  • apps/shade/src/docs/adoption-data.json

no ref

Settings still depended on the legacy button API even though Shade now owns button styling. Using Shade directly removes that compatibility layer and keeps modal action variants semantic end to end.
@9larsons
9larsons force-pushed the codex/admin-settings-shade-buttons branch from 0fb4e41 to ba41b5e Compare July 23, 2026 00:52
@9larsons
9larsons merged commit 5ef529f into main Jul 23, 2026
45 checks passed
@9larsons
9larsons deleted the codex/admin-settings-shade-buttons branch July 23, 2026 01:07
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.

1 participant