Iconography
Icons are graphic symbols that are used to represent concepts, objects or actions.
Overview
- Web library and Naming conventions
- iOS library and naming conventions
- Android library and naming conventions
Web library and Naming conventions
We previously had a number of different icon packages available for each supported framework, which are now deprecated in favour of pie-webc. For installation and usage instructions, please refer to this documentation.
The web library uses the same icon names, but the naming style depends on where you use it:
For React, import the component from the React dist — names are in PascalCase:
import { IconCalendar } from "@justeattakeaway/pie-icons-webc/dist/react/IconCalendar.js";
<IconCalendar />
For other frameworks, including vanilla JS and Vue, the naming convention uses kebab-case.
import '@justeattakeaway/pie-icons-webc/dist/IconCalendar.js';
<icon-calendar></icon-calendar>
iOS library and naming conventions
iOS packs all icons into the JustUI core library. Our iOS library will use the same name of the icon, but transforming it from kebab-case to camelCase (removing the hyphens).
For example, the gift-filled-large icon would be giftFilledLarge.
Android library and naming conventions
Use the latest version
In order to get all the PIE Icons in your app, you’ll need to include the com.jet.pie2:icons library in your gradle module.
Library versions are controlled via a Bill of Materials (BOM), that will ensure all PIE libraries use a compatible version.
This will handle all versions for you, BOM version: 2025.01.00 or higher:
implementation(platform("com.jet.pie2:bom:$latestBOMversion"))
Access to all PIE Icons:
implementation("com.jet.pie2:icons")
Access to all PIE illustrations:
implementation("com.jet.pie2:illustrations")
Access to all PIE Logos:
implementation("com.jet.pie2:logos")
Get the information directly from Figma
Naming convention for icons: ic_pie_{category}_{icon_name}.
For example, the icon below would be ic_pie_benefits_gift_filled_large and available as
@drawableic_pie_benefits_gift_filled_large or R.drawable ic_pie_benefits_gift_filled_large.
Tint the icons with the correct colour token
Icons come with a fuchsia tint by default, so it is your responsibility to make sure they look correct in both Light and Dark themes. To do so, get the colour token from Figma and apply it directly to the icon.
contentDefault as your default design token colour for tinting your icon if you are unsure. This will make sure that the icon looks neat in both Light and Dark modes. Please check with your designer/Figma files that you are using the right token for the icon. Example for XML Views:
android:drawableStart="@drawable/ic_pie_alert_info_help_circle_filled_large
android:drawableTint="?attr/jetColorContentDefault"
or
app:srcCompat="@drawable/ic_pie_chevron_chevron_down"
app:tint="?attr/jetColorInteractivePrimary"
Example for Jetpack Compose:
Icon(
...
imageVector = ImageVector.vectorResource(id = PieIconR.drawable.ic_pie_arrow_arrow_left),
tint = JetTheme.colors.contentInteractiveBrand,
...
)
FAQs
Q: I’ve imported the library. Where can I find the icons?
A: Icons are located in their own namespace: com.jet.pie2.icons.R. You can find more information in the Android repository Wiki under the Use PIE assets section.
Q: I can’t find the icon I need. Can I add it to the library?
A: No. All icons will be automatically generated. If your icon doesn’t belong to PIE, it needs to live inside your own project.
Q: My icon belongs to PIE, I can see it in Figma. Can I add it?
A: If your icon belongs to PIE and it’s not in the library, make sure you’re using the latest version of PIE BOM. If you still can’t see it, message us via #help-designsystem Slack channel and we’ll update the icons for you.