# Icons Zulip makes extensive use of icons to decorate elements in the UI as well as for compact buttons. ## Using icons - Modern Zulip icons are implemented using ``, which is rendered using generated CSS that maps that class name combination to displaying the SVG file located at `web/shared/icons/smile.svg`. - Older icons use [Font Awesome 4.7](https://fontawesome.com/), declared in our HTML via ``. We are migrating away from Font Awesome both for design and licensing reasons (Font Awesome 5.0+ is no longer fully open source). Always consider [accessibility](../subsystems/accessibility.md) when using icons. Typically, this means: - Icons that are used **purely as a decoration** to a textual label (for example, in our popover menus) should use `aria-hidden`, so that screenreaders ignore them in favor of reading the label. - Buttons whose **entire label** is an icon should have a [tooltip](../subsystems/html-css.md#tooltips) as well as an `aria-label` declaration, so that screenreaders will explain the button. Generally, the tooltip text should be identical to the `aria-label` text. ## Adding a new icon A new feature may require a new icon to represent it, for example to be used next to a menu option. The issue you're working on may not have an icon specified upfront. In this case, you should: 1. Prototype using a [Lucide icon](https://lucide.dev/icons/), which is the default source for icons in Zulip. SVG files must be added under `web/shared/icons/` (don't forget to `git add`) to be used. 1. **When your feature is nearing completion**, post in the [appropriate channel](https://zulip.com/development-community/#where-do-i-send-my-message) in the Zulip development community to discuss what icon should be used (e.g., #design for web app icons). You can use the discussion thread linked from the issue you're working on if there is one. 1. Once there is general consensus, @-mention Zulip's designer (Vlad Korobov) to ask him to prepare the icon to be used. 1. Follow the [attribution guidelines](../contributing/licensing.md) to document the icon source. ## Changing an icon When changing an icon for an existing feature, be sure to [update the help center](../documentation/helpcenter.md#icons) accordingly (`git grep` is your friend).