SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
Web Components as a foundation
for Design System
Vladlen Fedosov, Director of R&D @Namecheap, Inc
Hint: prepare your QR scanners 😉
Vlad Fedosov
Director of R&D @Namecheap
TL;DR:
● 10 years in the industry
● Went path from Junior to Architect
● Use JS since Mootools era
● Amateur DevOps evangelist
● AWS ninja
● Was a part of the Design System kickstart at Namecheap
“Opening the door for everyone to
a free and open Internet”
Design System concept
Quick refresh of the subject
Design system – What’s inside?
“A design system is a
collection of reusable
components, guided by
clear standards, that can
be assembled together to
build any number of
applications.”
Design system – Principles
● Efficiency: Instead of repeatedly building similar components from scratch, Design
Systems enable designers & developers to reuse components and thereby increase
efficiency.
● Scalability: Design System is an open work process, constantly being updated and
upgraded, enabling a constant self-improving flux and pushing forward in front of
industry standards.
Design system – Principles
● Consistency: Design Systems introduce a shared set of principles and rules to build
components. It becomes much easier to create consistent experiences across different
platforms.
● Scale: Increased efficiency and consistency lead a company to build faster products at
scale.
Ok, got it! But why do I need
Web Components here?
A UI is a UI
Users don’t care that one UI is built by Team A and another is built by Team B.
Users don’t care if for one project the team followed a scrum process, while
another project followed a kanban process.
Users don’t care if React is powering this feature while Angular is powering
another.
“Easily one of the biggest benefits of establishing a design system is the ability to
produce consistent UIs across teams and products.”
Technology agnostic principle
Creating a technology dependency in order to achieve a specific UI style
inherently limits where that UI can go. That’s especially important for big
organizations.
While building a Design System in Angular, React, or Vue is quite a bit better than
the too-open-ended technology agnostic approach, it has one major flaw: it only
works if the rest of your company has standardized on that single framework!
Ways to stay technology agnostic
First approach
Use power of HTML & CSS and keep JS out of scope
Why not today:
It’s nearly impossible to implement certain animations, transitions and design
rules without use of the JS.
Also complex UI components like date picker just impossible to create w/o JS.
Second approach
Write Vanilla JS in a way that it can be integrated with any framework. “Material
Components for the web” approach. We use it now in production.
Why not today: This approach requires high
development effort from Design System
creators and consumers side. Also it has
issues with frameworks compatibility and
Accessibility.
Our approach for today
Use Web Platform APIs - Web Components
Web Components
Do they really can help us to stay technology agnostic?
Web Components – To the rescue!
<x-your-ui-component>
Appearance
Behaviour
Accessibility
</x-your-ui-component>
<x-tab-group aria-label="My test tabs" inverted scrollable>
<x-tab role="tab" slot="tab">Package (12)</x-tab>
<x-tab-panel role="tabpanel" slot="panel">Package</gb-tab-panel>
<x-tab role="tab" slot="tab">Email (345)</x-tab>
<x-tab-panel role="tabpanel" slot="panel">Email</gb-tab-panel>
<x-tab role="tab" slot="tab">Database (14)</x-tab>
<x-tab-panel role="tabpanel" slot="panel">Database</x-tab-panel>
</x-tab-group>
Web Components – Compatibility
All major frameworks that exist nowadays fully support Web Components (only React has
some issues with advanced integration).
Browser support:
● IE 10–11 and Edge (Chakra based) are out of the game as they do not support Shadow
DOM.
● All other browsers (Chrome, FF, Safari, iOS, Android, considering 2 latest versions) work
just fine with all major techs we need.
Mobile: Ionic 4 heavily uses Web Components
Quirks and features
Of the Web Components
Server Side Rendering (SSR)
It’s theoretically possible to fully render WCs at server side (and it even works for
simple ones), but… There is no stable SSR implementation yet, as well as native
way to represent Shadow DOM in HTML 😟
But here is good news – you can live without it (for Design System components).
<good-components>hello world</good-components>
// It’s shadow tree is using a slot to get text contents
<bad-components></bad-components>
// "hello world" is hard-coded in its shadow tree.
Styling
Bad news:
● Some browsers still have an issues applying complex
CSS rules
● Sharing of the common CSS rules between
components is tricky
● Some other minor issues are present
Good news:
● There are no issues which can’t be workarounded w/o
heavy polyfills
Accessibility
How can we create accessible web pages with Web Components considering that HTML
tags will be custom and so will not have any semantic meaning?
Fortunately there is a solution, to bring semantic back to your custom elements you just
need to follow WAI-AIRA specification. So if you already take care about accessibility — no
much changes here. Let’s look at the accessible slider component built with Web
Components:
<custom-slider min="0" max="10" value="3" role="slider"
tabindex="0" aria-valuemin="0" aria-valuemax="10"
aria-valuenow="3" aria-valuetext="3"
aria-label="Movie rating"></custom-slider>
Available tools
Libraries you can use to author your Web Components (sorted by my preference, top to bottom):
● LitElement – written by the guys from Polymer@Google. Simple & capable. Optimal choice
IMO.
● Stencil – Web Components compiler plus base classes. Built by Ionic team. Has paid version
that is adapted for Design Systems creation.
● SkateJS – tiny wrapper around native APIs that allows to use various renderers. Built by Trey
Shugart who gave us WC SSR PoC.
Hmm, is there are any examples of
Design Systems built with
Web Components?
Design Systems that use Web Components
● Ionic 4 UI Components
● Material Web Components @Google (pre-release)
● Helix Design System @Rackspace
● UI5 Web Components @SAP
● Others
Demo time 😅
Vlad Fedosov
Director of R&D
@Namecheap, Inc
vlad.fedosov@gmail.com
Slides:
Or just scan it:
bit.ly/2Nxa02s
Demo:
github.com/StyleT/
lvivcss19

Más contenido relacionado

La actualidad más candente

Developpement informatique
Developpement informatiqueDeveloppement informatique
Developpement informatique
brokerslip0
 
Prototyping app using JS and HTML5 (Ciklum Kharkiv)
Prototyping app using JS and HTML5 (Ciklum Kharkiv)Prototyping app using JS and HTML5 (Ciklum Kharkiv)
Prototyping app using JS and HTML5 (Ciklum Kharkiv)
Yuriy Silvestrov
 

La actualidad más candente (20)

Single page applications
Single page applicationsSingle page applications
Single page applications
 
Everything XControls
Everything XControlsEverything XControls
Everything XControls
 
Fronted development trends - past, present and the future
Fronted development trends - past, present and the futureFronted development trends - past, present and the future
Fronted development trends - past, present and the future
 
Frameworks for Web Development
Frameworks for Web DevelopmentFrameworks for Web Development
Frameworks for Web Development
 
Angular,react,vue
Angular,react,vueAngular,react,vue
Angular,react,vue
 
Design Patterns for Smart Applications
Design Patterns for Smart ApplicationsDesign Patterns for Smart Applications
Design Patterns for Smart Applications
 
A Smooth Transition to HTML5
A Smooth Transition to HTML5A Smooth Transition to HTML5
A Smooth Transition to HTML5
 
9 reasons why angular js web development should be your choice in 2020
9 reasons why angular js web development should be your choice in 20209 reasons why angular js web development should be your choice in 2020
9 reasons why angular js web development should be your choice in 2020
 
AD105 - OneUI.. really? Is that because you don't know about Twitter Bootstrap?
AD105 - OneUI.. really? Is that because you don't know about Twitter Bootstrap?AD105 - OneUI.. really? Is that because you don't know about Twitter Bootstrap?
AD105 - OneUI.. really? Is that because you don't know about Twitter Bootstrap?
 
Making sense of the front-end, for PHP developers
Making sense of the front-end, for PHP developersMaking sense of the front-end, for PHP developers
Making sense of the front-end, for PHP developers
 
ReactJS vs Vue.js — What to choose in 2019?
ReactJS vs Vue.js — What to choose in 2019?ReactJS vs Vue.js — What to choose in 2019?
ReactJS vs Vue.js — What to choose in 2019?
 
Sandeep Chauhan | Top java script frameworks in 2020
Sandeep Chauhan | Top java script frameworks in 2020Sandeep Chauhan | Top java script frameworks in 2020
Sandeep Chauhan | Top java script frameworks in 2020
 
Making Single Page Applications (SPA) faster
Making Single Page Applications (SPA) faster Making Single Page Applications (SPA) faster
Making Single Page Applications (SPA) faster
 
What if we put the end user in the middle?
What if we put the end user in the middle?What if we put the end user in the middle?
What if we put the end user in the middle?
 
Developpement informatique
Developpement informatiqueDeveloppement informatique
Developpement informatique
 
Prototyping app using JS and HTML5 (Ciklum Kharkiv)
Prototyping app using JS and HTML5 (Ciklum Kharkiv)Prototyping app using JS and HTML5 (Ciklum Kharkiv)
Prototyping app using JS and HTML5 (Ciklum Kharkiv)
 
Mozilla Prism
Mozilla PrismMozilla Prism
Mozilla Prism
 
Boston, MA Developer Group 2/7/2019 - Introduction to lightning web components
Boston, MA Developer Group 2/7/2019 - Introduction to lightning web componentsBoston, MA Developer Group 2/7/2019 - Introduction to lightning web components
Boston, MA Developer Group 2/7/2019 - Introduction to lightning web components
 
The Technical Side of Harvard.edu Redesign
The Technical Side of Harvard.edu RedesignThe Technical Side of Harvard.edu Redesign
The Technical Side of Harvard.edu Redesign
 
INTERNSHIP REPORT
INTERNSHIP REPORTINTERNSHIP REPORT
INTERNSHIP REPORT
 

Similar a LvivCSS: Web Components as a foundation for Design System

Gujarat university portal development proposal
Gujarat university portal development proposalGujarat university portal development proposal
Gujarat university portal development proposal
Prafful Daga
 

Similar a LvivCSS: Web Components as a foundation for Design System (20)

Vue Storefront - Progressive Web App for Magento (1.9, 2.x) - MM18DE speech
Vue Storefront - Progressive Web App for Magento (1.9, 2.x) - MM18DE speechVue Storefront - Progressive Web App for Magento (1.9, 2.x) - MM18DE speech
Vue Storefront - Progressive Web App for Magento (1.9, 2.x) - MM18DE speech
 
KharkivJS: Flaws of the Web Components in 2019 and how to address them
KharkivJS: Flaws of the Web Components in 2019 and how to address themKharkivJS: Flaws of the Web Components in 2019 and how to address them
KharkivJS: Flaws of the Web Components in 2019 and how to address them
 
How to choose the best frontend framework in 2022
How to choose the best frontend framework in 2022How to choose the best frontend framework in 2022
How to choose the best frontend framework in 2022
 
AngularJS in Production (CTO Forum)
AngularJS in Production (CTO Forum)AngularJS in Production (CTO Forum)
AngularJS in Production (CTO Forum)
 
Implementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing CompanyImplementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing Company
 
vue-storefront - PWA eCommerce for Magento2 MM17NYC presentation
vue-storefront - PWA eCommerce for Magento2 MM17NYC presentationvue-storefront - PWA eCommerce for Magento2 MM17NYC presentation
vue-storefront - PWA eCommerce for Magento2 MM17NYC presentation
 
Navigating the Hype and Realities of Web Development Frameworks
Navigating the Hype and Realities of Web Development FrameworksNavigating the Hype and Realities of Web Development Frameworks
Navigating the Hype and Realities of Web Development Frameworks
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...
 
Gujarat university portal development proposal
Gujarat university portal development proposalGujarat university portal development proposal
Gujarat university portal development proposal
 
The Superhero’s Method of Modern HTML5 Development by RapidValue Solutions
The Superhero’s Method of Modern HTML5 Development by RapidValue SolutionsThe Superhero’s Method of Modern HTML5 Development by RapidValue Solutions
The Superhero’s Method of Modern HTML5 Development by RapidValue Solutions
 
Why a CMS? Why Drupal?
Why a CMS? Why Drupal?Why a CMS? Why Drupal?
Why a CMS? Why Drupal?
 
Redesigning a large B2B website - The FusionCharts revamping story
Redesigning a large B2B website - The FusionCharts revamping storyRedesigning a large B2B website - The FusionCharts revamping story
Redesigning a large B2B website - The FusionCharts revamping story
 
FRONTEND DEVELOPMENT WITH REACT.JS
FRONTEND DEVELOPMENT WITH REACT.JSFRONTEND DEVELOPMENT WITH REACT.JS
FRONTEND DEVELOPMENT WITH REACT.JS
 
PWA - The Future of eCommerce - Magento Meetup Ahmedabad 2018
PWA - The Future of eCommerce - Magento Meetup Ahmedabad 2018PWA - The Future of eCommerce - Magento Meetup Ahmedabad 2018
PWA - The Future of eCommerce - Magento Meetup Ahmedabad 2018
 
Designing Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAsDesigning Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAs
 
5 Front End Frameworks to Master in Web Development.pdf
5 Front End Frameworks to Master in Web Development.pdf5 Front End Frameworks to Master in Web Development.pdf
5 Front End Frameworks to Master in Web Development.pdf
 
An Introduction to Web Components
An Introduction to Web ComponentsAn Introduction to Web Components
An Introduction to Web Components
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
 
Startup Institute NYC: Styling
Startup Institute NYC: StylingStartup Institute NYC: Styling
Startup Institute NYC: Styling
 

Último

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 

Último (20)

10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 

LvivCSS: Web Components as a foundation for Design System

  • 1. Web Components as a foundation for Design System Vladlen Fedosov, Director of R&D @Namecheap, Inc Hint: prepare your QR scanners 😉
  • 2. Vlad Fedosov Director of R&D @Namecheap TL;DR: ● 10 years in the industry ● Went path from Junior to Architect ● Use JS since Mootools era ● Amateur DevOps evangelist ● AWS ninja ● Was a part of the Design System kickstart at Namecheap
  • 3. “Opening the door for everyone to a free and open Internet”
  • 4. Design System concept Quick refresh of the subject
  • 5. Design system – What’s inside? “A design system is a collection of reusable components, guided by clear standards, that can be assembled together to build any number of applications.”
  • 6. Design system – Principles ● Efficiency: Instead of repeatedly building similar components from scratch, Design Systems enable designers & developers to reuse components and thereby increase efficiency. ● Scalability: Design System is an open work process, constantly being updated and upgraded, enabling a constant self-improving flux and pushing forward in front of industry standards.
  • 7. Design system – Principles ● Consistency: Design Systems introduce a shared set of principles and rules to build components. It becomes much easier to create consistent experiences across different platforms. ● Scale: Increased efficiency and consistency lead a company to build faster products at scale.
  • 8. Ok, got it! But why do I need Web Components here?
  • 9. A UI is a UI Users don’t care that one UI is built by Team A and another is built by Team B. Users don’t care if for one project the team followed a scrum process, while another project followed a kanban process. Users don’t care if React is powering this feature while Angular is powering another. “Easily one of the biggest benefits of establishing a design system is the ability to produce consistent UIs across teams and products.”
  • 10. Technology agnostic principle Creating a technology dependency in order to achieve a specific UI style inherently limits where that UI can go. That’s especially important for big organizations. While building a Design System in Angular, React, or Vue is quite a bit better than the too-open-ended technology agnostic approach, it has one major flaw: it only works if the rest of your company has standardized on that single framework!
  • 11. Ways to stay technology agnostic
  • 12. First approach Use power of HTML & CSS and keep JS out of scope Why not today: It’s nearly impossible to implement certain animations, transitions and design rules without use of the JS. Also complex UI components like date picker just impossible to create w/o JS.
  • 13. Second approach Write Vanilla JS in a way that it can be integrated with any framework. “Material Components for the web” approach. We use it now in production. Why not today: This approach requires high development effort from Design System creators and consumers side. Also it has issues with frameworks compatibility and Accessibility.
  • 14. Our approach for today Use Web Platform APIs - Web Components
  • 15. Web Components Do they really can help us to stay technology agnostic?
  • 16. Web Components – To the rescue! <x-your-ui-component> Appearance Behaviour Accessibility </x-your-ui-component> <x-tab-group aria-label="My test tabs" inverted scrollable> <x-tab role="tab" slot="tab">Package (12)</x-tab> <x-tab-panel role="tabpanel" slot="panel">Package</gb-tab-panel> <x-tab role="tab" slot="tab">Email (345)</x-tab> <x-tab-panel role="tabpanel" slot="panel">Email</gb-tab-panel> <x-tab role="tab" slot="tab">Database (14)</x-tab> <x-tab-panel role="tabpanel" slot="panel">Database</x-tab-panel> </x-tab-group>
  • 17. Web Components – Compatibility All major frameworks that exist nowadays fully support Web Components (only React has some issues with advanced integration). Browser support: ● IE 10–11 and Edge (Chakra based) are out of the game as they do not support Shadow DOM. ● All other browsers (Chrome, FF, Safari, iOS, Android, considering 2 latest versions) work just fine with all major techs we need. Mobile: Ionic 4 heavily uses Web Components
  • 18. Quirks and features Of the Web Components
  • 19. Server Side Rendering (SSR) It’s theoretically possible to fully render WCs at server side (and it even works for simple ones), but… There is no stable SSR implementation yet, as well as native way to represent Shadow DOM in HTML 😟 But here is good news – you can live without it (for Design System components). <good-components>hello world</good-components> // It’s shadow tree is using a slot to get text contents <bad-components></bad-components> // "hello world" is hard-coded in its shadow tree.
  • 20. Styling Bad news: ● Some browsers still have an issues applying complex CSS rules ● Sharing of the common CSS rules between components is tricky ● Some other minor issues are present Good news: ● There are no issues which can’t be workarounded w/o heavy polyfills
  • 21. Accessibility How can we create accessible web pages with Web Components considering that HTML tags will be custom and so will not have any semantic meaning? Fortunately there is a solution, to bring semantic back to your custom elements you just need to follow WAI-AIRA specification. So if you already take care about accessibility — no much changes here. Let’s look at the accessible slider component built with Web Components: <custom-slider min="0" max="10" value="3" role="slider" tabindex="0" aria-valuemin="0" aria-valuemax="10" aria-valuenow="3" aria-valuetext="3" aria-label="Movie rating"></custom-slider>
  • 22. Available tools Libraries you can use to author your Web Components (sorted by my preference, top to bottom): ● LitElement – written by the guys from Polymer@Google. Simple & capable. Optimal choice IMO. ● Stencil – Web Components compiler plus base classes. Built by Ionic team. Has paid version that is adapted for Design Systems creation. ● SkateJS – tiny wrapper around native APIs that allows to use various renderers. Built by Trey Shugart who gave us WC SSR PoC.
  • 23. Hmm, is there are any examples of Design Systems built with Web Components?
  • 24. Design Systems that use Web Components ● Ionic 4 UI Components ● Material Web Components @Google (pre-release) ● Helix Design System @Rackspace ● UI5 Web Components @SAP ● Others
  • 26. Vlad Fedosov Director of R&D @Namecheap, Inc vlad.fedosov@gmail.com Slides: Or just scan it: bit.ly/2Nxa02s Demo: github.com/StyleT/ lvivcss19