patternfly / patternfly/patternfly-org
Create official icon sets
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 74
- Forks
- 147
- Avg merge
- 4d 11h
- Merged PRs (30d)
- 2
Description
-
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. -
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-iconsand@fortawesome/free-solid-svg-iconsicon 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).
-
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. -
Future
Here's a possible way we can allow for designers and developers to collaborate on icons: -
- Create 3 icon sets in Core
-
PatternFly icons (unchanged).
-
Design-approved subset of FontAwesome icons (reduced number of icons, but easily continued support for entire set).
-
Community icons such as brand icons or general UXD icons.
-
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)
-
- Create 3 icon sets in React
-
Split
@patternfly/react-iconsinto 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.
-
- Document
-
Allow downloading assets from patternfly.org
-
Finally close #919 #993 #1576 #1687, and #1826
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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