Integrating UI components is too damn hard!
- Past
- Confirmed
- Breakout Sessions
- Past
- Confirmed
- Breakout Sessions
Meeting
The vision of authors being able to drop components and UI libraries into their pages and have things Just Work™ and look right (at least to a first order approximation) is still largely unrealized. Integrating any UI component is incredibly laborious, as it requires manually communicating fine grained design tokens to every single component.
This Web Awesome tutorial illustrates the problem perfectly:
https://youtu.be/JhfYeXLfWdI?si=vF3xRai2QrjabVFv&t=277
<img width="1296" alt="image" src="https://github.com/w3c/csswg-drafts/assets/175836/e4175efa-fe6f-47e9-a11f-bf3e0ae7cc55">And this is just for assigning a certain hue as the primary color of a whole page — the effort is duplicated for every third-party UI component that uses colors, fonts, measurements, font sizes, etc. Same-party components can use the same naming convention to reduce effort, but that doesn't work for components from different entities.
To reduce integration effort, we need to reduce the amount of information the host page needs to communicate about its design to each individual component. Some avenues are:
- standardized ways to set design tokens (e.g. the page’s primary color or serif font) in a way that can be read by other components
- ways to derive tokens from core tokens (e.g. a light tint from a primary color, or the next smaller font size in a scale) to minimize how many tokens need to be communicated.
- Ways for components to adopt and repurpose page styles of existing (standard) elements
- ???
Agenda
Chairs:
Lea Verou, Keith Cirkel
Description:
The vision of authors being able to drop components and UI libraries into their pages and have things Just Work™ and look right (at least to a first order approximation) is still largely unrealized. Integrating any UI component is incredibly laborious, as it requires manually communicating fine grained design tokens to every single component.
This Web Awesome tutorial illustrates the problem perfectly:
https://youtu.be/JhfYeXLfWdI?si=vF3xRai2QrjabVFv&t=277
<img width="1296" alt="image" src="https://github.com/w3c/csswg-drafts/assets/175836/e4175efa-fe6f-47e9-a11f-bf3e0ae7cc55">And this is just for assigning a certain hue as the primary color of a whole page — the effort is duplicated for every third-party UI component that uses colors, fonts, measurements, font sizes, etc. Same-party components can use the same naming convention to reduce effort, but that doesn't work for components from different entities.
To reduce integration effort, we need to reduce the amount of information the host page needs to communicate about its design to each individual component. Some avenues are:
- standardized ways to set design tokens (e.g. the page’s primary color or serif font) in a way that can be read by other components
- ways to derive tokens from core tokens (e.g. a light tint from a primary color, or the next smaller font size in a scale) to minimize how many tokens need to be communicated.
- Ways for components to adopt and repurpose page styles of existing (standard) elements
- ???
Goal(s):
Flesh out ideas for potential directions, see which are most viable in terms of I/E
Agenda:
- Discuss requirements and potential directions
- Discuss relevant proposals:
Materials:
Track(s):
- Web Components
Minutes
Read minutesExport options
Personal Links
Please log in to export this event with all the information you have access to.
Public Links
The following links do not contain any sensitive information and can be shared publicly.