patternfly / patternfly/patternfly-org

Create official icon sets

Open
#1,836 5 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
74
Forks
147
Avg merge
4d 11h
Merged PRs (30d)
2

Description

  1. Introduction
    As Red Hatters we want to be open to the community sharing icons with each other, especially designers and developers. So here is the story of PatternFly icons: a place where we've failed to do that.

  2. History
    PatternFly (design, Core, and HTML) has always used FontAwesome icons. However, we've never really taken time to unify our icon set, and it shows:

  • Designers download and install the FontAwesome font to use in their designs

  • Core copies the font from 16 months ago and uses HTML like <i class="fas fa-angle-right pf-c-accordion__toggle-icon" aria-hidden="true"></i>.

  • React installs the @fortawesome/free-regular-svg-icons and @fortawesome/free-solid-svg-icons icon sets (which don't always match the font) and reexports all SVGs except for the Font Awesome Logo as their own <svg><path d="..."></svg> to be used like <CogIcon />. This is what usually ends up in products.

For PatternFly icons we wrote some SVGs and created a webfont in Core that designers can use. React re-exports these from Core and we have 2 icon sets.

This works great, except for designers and developers who want to share community icons (like Red Hat brand icons) between products. So we end up with a 3rd React-only icon set including icons like AnsibeIcon that designers didn't review (or else the name might correctly be AnsibleIcon).

  1. Today
    Here's where the story can turn around, our designers have audited our icons and decided on a list of 172 (including FontAwesome and custom PatternFly ones) that should be sufficient for all of PatternFly design. I believe that's what we should support starting in Core.

  2. Future
    Here's a possible way we can allow for designers and developers to collaborate on icons:

    1. Create 3 icon sets in Core
  3. PatternFly icons (unchanged).

  4. Design-approved subset of FontAwesome icons (reduced number of icons, but easily continued support for entire set).

  5. Community icons such as brand icons or general UXD icons.

  6. 1.1 Export each icon set in many formats

  • SVGs (for downloading or re-exporting in React)

  • Webfonts (for use in HTML like <i class="fa-icon"></i> and Sketch)

  • Other fonts (for use in Word or Adobe products)

    1. Create 3 icon sets in React
  • Split @patternfly/react-icons into Core's 3 sets. We could possibly do this through 3 index files, or maybe spin off 2 new packages.

  • Yes, we are very concerned about not breaking existing products and won't just remove icons without ample warning and upgrade paths.

    1. Document
  • Allow downloading assets from patternfly.org

  • Finally close #919 #993 #1576 #1687, and #1826

  1. Feedback
    I encourage everyone who cares about our icons to share how they feel about these 3 icons sets:
  • Design-approved subset of FontAwesome icons used in PatternFly design (possibly replaced by all of FontAwesome for products that need it)

  • PatternFly icons

  • Community icons

Are there any more icons that wouldn't fit into the community set, or maybe ideas to combine the design-approved subset of and PatternFly icons? Would we want to possibly change FontAwesome icons in the future? You decide...


Jira Issue: PF-1953

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the referenced icon definitions and build files in patternfly, plus the React paths packages/react-icons/build/pfIcons.js and customIcons.js. Compare the proposed three sets, export formats, compatibility concerns, and linked issues; done requires an agreed scope and implementation plan, which this discussion does not yet define.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, react
Domain
design, documentation, frontend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
18/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.