Skip to content

feat: add BottomSheetFooter component#899

Merged
kirillzyusko merged 8 commits into
MetaMask:mainfrom
kirillzyusko:feat/bottom-sheet-footer
Feb 20, 2026
Merged

feat: add BottomSheetFooter component#899
kirillzyusko merged 8 commits into
MetaMask:mainfrom
kirillzyusko:feat/bottom-sheet-footer

Conversation

@kirillzyusko

@kirillzyusko kirillzyusko commented Feb 11, 2026

Copy link
Copy Markdown
Collaborator

Description

Added BottomSheetFooter component.

Related issues

Fixes: https://consensyssoftware.atlassian.net/browse/DSYS-277

Manual testing steps

  1. Open storybook app
  2. Check BottomSheetFooter specs

Screenshots/Recordings

Before

After

image

Pre-merge author checklist

  • I've followed MetaMask Contributor Docs
  • I've completed the PR template to the best of my ability
  • I’ve included tests if applicable
  • I’ve documented my code using JSDoc format if applicable
  • I’ve applied the right labels on the PR (see labeling guidelines). Not required for external contributors.

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Note

Low Risk
Additive UI component with no changes to existing business logic; risk is limited to potential styling/layout regressions where adopted.

Overview
Adds a new BottomSheetFooter component that renders an optional primary and/or secondary action button, enforces button variants, supports horizontal/vertical alignment, and returns null when no actions are provided.

Includes Storybook stories for common configurations, a unit test suite covering rendering/layout/prop spreading, documentation (README.md), and exports the component and related types/enums from the design system index (plus Storybook autoload registration).

Written by Cursor Bugbot for commit 3d41db4. This will update automatically on new commits. Configure here.

@kirillzyusko

Copy link
Copy Markdown
Collaborator Author

@georgewrmarshall this PR is ready for review 👀

@kirillzyusko kirillzyusko force-pushed the feat/bottom-sheet-footer branch from bce21f3 to 78f58e4 Compare February 13, 2026 14:17

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

can you make sure the footer has 16px bottom margin for ios and 0 for android?

@kirillzyusko

Copy link
Copy Markdown
Collaborator Author

can you make sure the footer has 16px bottom margin for ios and 0 for android?

Hey @brianacnguyen

I don't see such code in mobile repo. Could you point me to the code or a decision where it has been made, please? 🙏

@kirillzyusko kirillzyusko marked this pull request as ready for review February 18, 2026 17:49
@kirillzyusko kirillzyusko requested a review from a team as a code owner February 18, 2026 17:49
export enum ButtonsAlignment {
Horizontal = 'Horizontal',
Vertical = 'Vertical',
}

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.

Enum name breaks design system naming convention

Low Severity

The exported enum ButtonsAlignment doesn't follow the established ComponentNamePropertyName naming convention used by every other enum in this design system (e.g., BadgeWrapperPosition, AvatarBaseShape, BoxFlexDirection, ButtonVariant). The name is especially confusing because it reads like it belongs to the Button component, which already exports ButtonVariant and ButtonSize nearby. Since this is a public API, renaming later would be a breaking change — something like BottomSheetFooterButtonsAlignment would be consistent with the rest of the system.

Additional Locations (1)

Fix in Cursor Fix in Web

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

can you remove the constants file?

@kirillzyusko

Copy link
Copy Markdown
Collaborator Author

Done @brianacnguyen

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.


export const Default: Story = {
args: {
buttonsAlignment: ButtonsAlignment.Vertical,

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.

Default story uses non-default alignment value

Low Severity

The Default story explicitly sets buttonsAlignment: ButtonsAlignment.Vertical, but the component's actual default is ButtonsAlignment.Horizontal (as declared in the component and documented in the README). Meanwhile, the Horizontal story showcases what is actually the default behavior. This makes Storybook documentation misleading — developers viewing the Default story would incorrectly assume the component defaults to vertical layout.

Additional Locations (1)

Fix in Cursor Fix in Web

@kirillzyusko kirillzyusko enabled auto-merge (squash) February 20, 2026 11:59
@kirillzyusko kirillzyusko merged commit 6fddcd2 into MetaMask:main Feb 20, 2026
42 checks passed
georgewrmarshall added a commit that referenced this pull request Feb 20, 2026
## Summary

Reverts the failed Release 20.0.0 (#921) to redo it properly with
complete changelogs and correct yarn.lock.

## Context

Release 20.0.0 was merged to main but the publish workflow failed due to
a yarn.lock issue:
- **Failed workflow:**
https://github.com/MetaMask/metamask-design-system/actions/runs/22198282954
- **Root cause:** yarn.lock not updated when peer dependency changed

After the release was merged, 7 additional PRs were merged to main:
1. Label component (#907)
2. HeaderBase component (#902)
3. Skeleton (#891)
4. Card (#923)
5. BottomSheetFooter (#899)
6. Toast (#892)
7. Input component (#909)

## Why Revert?

To maintain clean version history and proper changelogs:
- Release 20.0.0 was never published to NPM (latest is 19.0.0)
- The 7 PRs merged after are not documented in Release 20.0.0 changelog
- Reverting allows us to create a proper Release 20.0.0 that includes
ALL changes

## Changes

This PR reverts commit `45004196` which:
- Restores package versions to pre-release state (8.1.1, 0.7.0, 0.6.0,
etc.)
- Restores root package.json version from 20.0.0 to 19.0.0
- Removes Release 20.0.0 changelog entries

## Next Steps

After this is merged:
1. Create new `release/20.0.0` branch using standard release process
2. Include all changes (original + 7 PRs) in changelogs
3. **Run `yarn install` to update yarn.lock**
4. Merge new Release 20.0.0 PR
5. Publish workflow will succeed with correct lockfile

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
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.

3 participants