Skip to content

feat(icons): add HeartStraight and HeartStraightFilled - #1503

Merged
georgewrmarshall merged 2 commits into
mainfrom
icons/add-heart
Sep 10, 2026
Merged

georgewrmarshall merged 2 commits into
mainfrom
icons/add-heart

Conversation

@amandaye0h

@amandaye0h amandaye0h commented Sep 10, 2026 •

Copy link
Copy Markdown
Contributor

Description

Adds the Phosphor heart-straight glyph in regular and fill weights to the shared icon set, available as IconName.HeartStraight and IconName.HeartStraightFilled.

Reason for change: The icon set no longer has a heart glyph — the previous Heart / HeartFilled icons were part of the 111 unused icons removed in #1481. This adds one back, drawn from Phosphor so it matches the artwork style established by the brand migration (#1475, #1482, #1493).

What changed:

  • Added heart-straight.svg and heart-straight-filled.svg to @metamask/design-system-shared (the single source of truth for icon assets)
  • Ran yarn generate:icons, which added HeartStraight and HeartStraightFilled to IconName and generated the platform outputs
  • Generated HeartStraight.tsx and HeartStraightFilled.tsx plus Icons barrel entries in @metamask/design-system-react
  • Copied both SVGs into @metamask/design-system-react-native assets and mapped them in assetByIconName

Both glyphs keep the shared icon conventions: viewBox="0 0 24 24", fill="currentColor", and Phosphor's 256-unit path scaled by transform="scale(0.09375)". This is additive — no existing IconName values change, so no MIGRATION.md entry is needed.

Related issues

Fixes: https://consensys.slack.com/archives/C0354T27M5M/p1789035991588969?thread_ts=1789031981.932039&cid=C0354T27M5M

Manual testing steps

  1. Run yarn build from the repo root.
  2. Run yarn storybook and open Components / Icon.
  3. In the Name story, confirm HeartStraight and HeartStraightFilled render as an outline and a solid heart, with no clipped edges at IconSize.Xs through IconSize.Xl.
  4. Change the icon color (e.g. IconColor.ErrorDefault) and confirm both glyphs inherit it via currentColor.
  5. Run yarn storybook:ios and repeat steps 3 and 4 in the React Native Icon story.
  6. Confirm yarn lint and yarn test pass.

Screenshots/Recordings

Before

N/A — no heart glyph existed in the set.

After

Screenshot 2026-09-10 at 7 36 22 PM

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 — the existing Icon tests iterate over IconName, so both new icons are covered without new test files
  • I've documented my code using JSDoc format if applicable — all changed files are generated output

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 icon assets and generated registry entries only; no auth, data, or breaking API changes.

Overview
Restores a heart glyph to the design system after prior heart icons were removed, adding Phosphor heart-straight in outline and filled weights.

New SVG assets land in @metamask/design-system-shared, with generated wiring so consumers can use IconName.HeartStraight and IconName.HeartStraightFilled on React (new icon components + barrel exports) and React Native (assetByIconName mappings). The change is additive only—no existing icon names or behavior change.

Reviewed by Cursor Bugbot for commit b5a26e8. Bugbot is set up for automated code reviews on this repo. Configure here.

Co-authored-by: Cursor <cursoragent@cursor.com>
@amandaye0h
amandaye0h requested a review from a team as a code owner September 10, 2026 11:21
@github-actions

Copy link
Copy Markdown
Contributor

📖 Storybook Links

Compare the preview for this pull request with the latest Storybooks from the main branch.

🔀 Pull Request Preview

🌳 Main Branch (Latest)

@georgewrmarshall
georgewrmarshall enabled auto-merge (squash) September 10, 2026 13:12
@github-actions

Copy link
Copy Markdown
Contributor

📖 Storybook Links

Compare the preview for this pull request with the latest Storybooks from the main branch.

🔀 Pull Request Preview

🌳 Main Branch (Latest)

@georgewrmarshall
georgewrmarshall merged commit 54fb393 into main Sep 10, 2026
35 checks passed
@georgewrmarshall
georgewrmarshall deleted the icons/add-heart branch September 10, 2026 13:16
@amandaye0h amandaye0h mentioned this pull request Sep 10, 2026
13 of 18 tasks
georgewrmarshall pushed a commit that referenced this pull request Sep 10, 2026
## Release 67.0.0

This release restores a heart glyph to the icon set as
`IconName.HeartStraight` and `IconName.HeartStraightFilled`, and fixes
React `ButtonIcon` shrinking in flex layouts. Shared also publishes the
Telegram artwork restore that landed after its last package release.

Includes
[#1503](#1503)
(HeartStraight icons) and
[#1502](#1502)
(`ButtonIcon` flex shrink).

### 📦 Package Versions

- `@metamask/design-system-shared`: **0.37.0**
- `@metamask/design-system-react`: **0.42.0**
- `@metamask/design-system-react-native`: **0.46.0**

### 🔄 Shared Type Updates (0.37.0)

#### Added

- Added `HeartStraight` and `HeartStraightFilled` to `IconName`
([#1503](#1503))

#### Changed

- Restored the Telegram `Icon` artwork to the official logo
([#1500](#1500))

### 🌐 React Web Updates (0.42.0)

#### Added

- Added `HeartStraight` and `HeartStraightFilled` to `IconName`
([#1503](#1503))

#### Fixed

- Fixed `ButtonIcon` shrinking when placed in a flex container
([#1502](#1502))

### 📱 React Native Updates (0.46.0)

#### Added

- Added `HeartStraight` and `HeartStraightFilled` to `IconName`
([#1503](#1503))

### ⚠️ Breaking Changes

None.

### ✅ Checklist

- [x] Changelogs updated with human-readable descriptions
- [x] Changelog validation passed (`yarn changelog:validate`)
- [x] Version bumps follow semantic versioning
- [x] design-system-shared: minor (`0.36.0 → 0.37.0`) — additive
`IconName` members; Telegram SVG published for shared
- [x] design-system-react: minor (`0.41.0 → 0.42.0`) — additive
`IconName` members plus `ButtonIcon` fix
- [x] design-system-react-native: minor (`0.45.0 → 0.46.0`) — additive
`IconName` members
- [x] Breaking changes documented with migration guidance
- [x] Migration guides updated with before/after examples (if breaking
changes)
- [x] PR references included in changelog entries

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs)
- [x] I've reviewed the [Release
Workflow](./.cursor/rules/release-workflow.md) cursor rule
- [x] All tests pass (`yarn build && yarn test && yarn lint`)
- [x] Changelog validation passes (`yarn changelog:validate`)

## **Pre-merge reviewer checklist**

- [ ] I've reviewed the [Reviewing Release
PRs](./docs/reviewing-release-prs.md) guide
- [ ] Package versions follow semantic versioning
- [ ] Changelog entries are consumer-facing (not commit message
regurgitation)
- [ ] Breaking changes are documented in MIGRATION.md with examples
- [ ] All unreleased changes are accounted for in changelogs


Made with [Cursor](https://cursor.com)

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
pull Bot pushed a commit to Eric-Johnson-1/metamask-extension that referenced this pull request Sep 11, 2026
## **Description**

Upgrades design system packages to align with the [v67.0.0
release](https://github.com/MetaMask/metamask-design-system/releases/tag/v67.0.0)
([MetaMask/metamask-design-system#1508](MetaMask/metamask-design-system#1508)).

**Packages upgraded:**
- `@metamask/design-system-react`: `^0.41.0` → `^0.42.0`
- `@metamask/design-system-shared`: `^0.36.0` → `^0.37.0`

**Breaking changes addressed:**

None — this is a minor release with no breaking API changes.

**Changes included in this release:**

### ButtonIcon: prevent shrinking in flex layouts
Upstream `ButtonIcon` now includes `shrink-0` so icon buttons keep their
size in flex containers
([MetaMask#1502](MetaMask/metamask-design-system#1502)).

**Migration:** No application code changes required. Consumers using
`ButtonIcon` from `@metamask/design-system-react` pick up the layout fix
via the dependency bump.

**Snapshot updates:**
- Jest snapshots that serialize MMDS `ButtonIcon` class names now
include `shrink-0`.

### Icon: HeartStraight additions
Added `HeartStraight` and `HeartStraightFilled` to `IconName`
([MetaMask#1503](MetaMask/metamask-design-system#1503)).
These names are available for future use; this PR does not switch any
existing icons.

### Shared Telegram artwork
`@metamask/design-system-shared` now publishes the Telegram `Icon`
artwork restore that already shipped in `design-system-react` `0.41.0`
([MetaMask#1500](MetaMask/metamask-design-system#1500)).

**Legacy component deprecations:**
- No new deprecations added.

## **Changelog**

CHANGELOG entry: Fixed icon buttons shrinking when placed in flex
layouts.

<!--
## **Related issues**

Fixes:
-->

## **Manual testing steps**

1. Run the extension and unlock/onboard to the home screen.
2. Check screens that use MMDS `ButtonIcon` in flex rows (home header,
password form, bridge asset picker, confirmation gas rows) and confirm
icon buttons keep a square size and do not compress.
3. Confirm existing icons still render with the same names and sizes as
before.
4. `HeartStraight` / `HeartStraightFilled` are not used in the extension
yet; no visual change is expected for those glyphs.

## **Screenshots/Recordings**

### **Before**

N/A – dependency-only update with no application code changes

### **After**

N/A – class-name layout fix (`shrink-0` on MMDS `ButtonIcon`). Confirm
icon buttons in flex headers during review.

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
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.

Made with [Cursor](https://cursor.com)

Co-authored-by: Cursor <cursoragent@cursor.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.

2 participants