Contributing Icons

Welcome! If you're contributing icons or symbols to the @adaptavant/eds-icons package, please follow the guidelines below to ensure consistency, quality, and smooth integration into the Earth Design System.

Overview

The package is a collection of icons and symbols that are used in the Earth Design System and has two main categories:

  • Icons - Common UI icons (e.g., add, arrow, notifications).
  • Symbols - Brand-related graphics, such as logos (e.g., Google, Zoom).

Pre-requisites

Using corepack is suggested to manage your pnpm version. Otherwise make sure that you are using the node and pnpm versions listed under the engines key in the root package.json file ("node": "18.17.0" and "pnpm": "8.10.2" at the time of writing).

Installation

pnpm install

Preparing Your Asset

Please make sure the icon/symbol is available in the Earth Figma Library. Do not use icons from other Figma files, personal drafts, or third-party sources.

This ensures design consistency and is a required step for contributing to EDS icon library.

Missing an Icon?

Reach out to your Product Designer if the icon you need isn't available in the Earth Figma Library. They can evaluate and include it, if it aligns with design system standards.

File Format Requirements

  • Export the icon as an SVG from Figma.
  • .png or other raster formats are not allowed.

SVG Optimisation

Clean up SVGs using tools like SVGOMG and remove any pre-defined colors.

Naming Conventions

For Icons

File names must follow kebab-case with a "-icon" suffix. For example,

SVG File NameAuto-generated Component Name
add-icon.svgAddIcon
notifications-off-icon.svgNotificationsOffIcon

For Symbols

File names must follow kebab-case with a "-color-icon" suffix. For example,

SVG File NameAuto-generated Component Name
google-color-icon.svgGoogleColorIcon
google-calendar-color-icon.svgGoogleCalendarColorIcon

✅ Please ensure filenames are accurate, as these determine the final component name.

Directory Structure

The source svg files live in packages/svg-to-components and will be auto-generated into the packages/icons directory for usage.

packages
- svg-to-components
  - icons
    - icon-name-icon.svg
  - symbols
    - icon-name-color-icon.svg

Versioning

Package publishing has been configured using Changesets. Please review their documentation to familiarize yourself with the workflow.

View here for more information on how to add a changeset file.

Adding a changeset file

Run the following command:

pnpm changeset

Select eds-icons from the list of packages, choose the appropriate SEMVER bump and describe your changes.

Changeset Content Format

---
'@adaptavant/eds-icons': patch or minor or major
---

Describe your changes here, this will be used to generate the changelog content.

For example, you can describe your changes as follows:

---
'@adaptavant/eds-icons': minor
---

Icons:

- Added New icons
  `AnnouncementsIcon, BirthdayIcon, BoldIcon, CampaignIcon, CashIcon, ChargeIcon, ChatIcon, CompanyIcon, CustomerFilledIcon, DesignIcon, ExpandIcon, GlobeIcon, InboxFilledIcon, ItalicIcon, JustifyLeftIcon, LinkDisconnectIcon, MessengerFilledIcon, MinimiseIcon, PaletteIcon, PauseIcon, PaymentApplepayPlainIcon, PaymentCashAppFilledIcon, PaymentCashAppIcon, PaymentCashAppPlainIcon, PaymentGooglepayPlainIcon, PaymentMastercardPlainIcon, PaymentPaypalPlainIcon, PaymentVisaPlainIcon, PlayIcon, PreviewIcon, ReductionIcon, SettingsFilledIcon, UnderlineIcon, WhatsappFilledIcon, XFilledIcon`
- Updated
  `ConnectFilledIcon, CustomersFilledIcon, InstagramFilledIcon, LinkedinFilledIcon, MapPinIcon, MoreIcon, ServicesFilledIcon, ServicesIcon, TeleportIcon, VideoCameraIcon, YoutubeFilledIcon`

Steps to Contribute

If you'd like a quick walkthrough before getting started, there's also a video recording available that covers the full contribution process from sourcing icons to submitting a pull request. Feel free to check it out.

Here's how you can contribute:

  1. Download the assets from Figma and optimise it.
  2. Follow the proper naming conventions for the file name.
  3. Navigate to /packages/svg-to-components/ directory and add your asset in the respective folders.
  4. Navigate back to root of the project.
  5. Run pnpm build:svg to generate the components.
  6. Run pnpm check and pnpm check:test to run the pre-commit checks.
  7. Create a changeset file describing your changes.
  8. Push your changes and create a pull request.

The Earth Design System core team manages the release process. Once your pull request is reviewed and merged, the updated eds-icons package will be published as part of the regular release workflow.

Every contribution you make helps make the system better for everyone. We appreciate your effort and care. Thank you!