SlideShare ist ein Scribd-Unternehmen logo
1 von 76
Downloaden Sie, um offline zu lesen
<💅>
styled-components
Max Stoiber
@mxstbr
CTO, Space Program
spectrum.chat/~react
The Component Age
1. Small, focussed components
2. Use container components
Best Practices: Components
Small, focussed components
<Button className="btn"></Button>
<Button className="btn btn--primary"></Button>
<Button className="btn"></Button>
<Button className="btn btn--primary"></Button>
Implementation detail!
Implementation detail!
<Button></Button>
<Button primary></Button>
Split containers and components
class Sidebar extends React.Component {
componentDidMount() {
fetch('api.com/sidebar')
.then(res => {
this.setState({
items: res.items
})
});
}
render() {
return (
<div className="sidebar">
{this.state.items.map(item => (
<div className="sidebar__item">{item}</div>
))}
</div>
)
}
}
class SidebarContainer extends React.Component {
componentDidMount() {
fetch('api.com/sidebar')
.then(res => {
this.setState({
items: res.items
})
});
}
render() {
return (
<Sidebar>
{this.state.items.map(item => (
<SidebarItem item={item} />
))}
</Sidebar>
)
}
}
Containers = How things work
Components = How things look
What about styling?
1. Single-use classes
2. Components as a styling
construct
Best Practices: Styling
If you’re writing React, you have
access to a more powerful styling
construct than CSS class names.
You have components.”
– Michael Chan, @chantastic
“
Enforcing best practices?
styled-components
Glen Maddern
frontend.center
Remove the mapping between
styles and components
import styled from 'styled-components';
const Title = styled.h1`
font-size: 1.5em;
text-align: center;
color: palevioletred;
`;
const Wrapper = styled.section`
color: palevioletred;
padding: 4em;
width: 100%;
height: 100%;
background: papayawhip;
`;
import styled from 'styled-components';
const Title = styled.h1`
font-size: 1.5em;
text-align: center;
color: palevioletred;
`;
const Wrapper = styled.section`
color: palevioletred;
padding: 4em;
width: 100%;
height: 100%;
background: papayawhip;
`;
import styled from 'styled-components';
const Title = styled.h1`
font-size: 1.5em;
text-align: center;
color: palevioletred;
`;
const Wrapper = styled.section`
color: palevioletred;
padding: 4em;
width: 100%;
height: 100%;
background: papayawhip;
`;
styled.h1
import styled from 'styled-components';
const Title = styled.h1`
font-size: 1.5em;
text-align: center;
color: palevioletred;
`;
const Wrapper = styled.section`
color: palevioletred;
padding: 4em;
width: 100%;
height: 100%;
background: papayawhip;
`;
import styled from 'styled-components';
const Title = styled.h1`
font-size: 1.5em;
text-align: center;
color: palevioletred;
`;
const Wrapper = styled.section`
color: palevioletred;
padding: 4em;
width: 100%;
height: 100%;
background: papayawhip;
`;
const App = () => (
<Wrapper>
<Title>
Hello World, this is my first styled component!
</Title>
</Wrapper>
);
ReactDOM.render(
<App />,
document.getElementById(‘#app')
);
styled-components
Write actual CSS
import styled from 'styled-components';
const ColorChanger = styled.section`
background: papayawhip;
> h2 {
color: palevioletred;
}
@media (min-width: 875px) {
background: mediumseagreen;
> h2 {
color: papayawhip;
}
}
`;
import styled from 'styled-components';
const ColorChanger = styled.section`
background: papayawhip;
> h2 {
color: palevioletred;
}
@media (min-width: 875px) {
background: mediumseagreen;
> h2 {
color: papayawhip;
}
}
`;
import styled from 'styled-components';
const ColorChanger = styled.section`
background: papayawhip;
> h2 {
color: palevioletred;
}
@media (min-width: 875px) {
background: mediumseagreen;
> h2 {
color: papayawhip;
}
}
`;
color-changer
Adapting based on props
<Button>Normal</Button>
<Button primary>Primary</Button>
const Button = styled.button`
/* Adapt the colors based on primary prop */
background: ${(props) =>
props.primary ? 'palevioletred' : 'white'
};
color: ${(props) =>
props.primary ? 'white' : 'palevioletred'
};
font-size: 1em;
margin: 1em;
padding: 0.25em 1em;
border: 2px solid palevioletred;
border-radius: 3px;
`;
export default Button;
<Button>Normal</Button>
<Button primary>Primary</Button>
styled-components
Theming Built In
import { ThemeProvider } from 'styled-components';
const theme = {
primary: 'palevioletred',
};
const App = () => (
<ThemeProvider theme={theme}>
<Root />
</ThemeProvider>
);
import { ThemeProvider } from 'styled-components';
const theme = {
primary: 'palevioletred',
};
const App = () => (
<ThemeProvider theme={theme}>
<Root />
</ThemeProvider>
);
import { ThemeProvider } from 'styled-components';
const theme = {
primary: 'palevioletred',
};
const App = () => (
<ThemeProvider theme={theme}>
<Root />
</ThemeProvider>
);
import styled from 'styled-components';
const Button = styled.button`
/* Adjust background based on the theme */
background: ${props => props.theme.primary};
color: white;
`;
styled-components
const redTheme = {
primary: 'palevioletred',
};
const greenTheme = {
primary: 'mediumseagreen',
};
// …
<ThemeProvider theme={redTheme}>
<Button>I'm red!</Button>
</ThemeProvider>
<ThemeProvider
theme={greenTheme}>
<Button>I'm green!</Button>
</ThemeProvider>
styled-components
<ThemeProvider theme={redTheme}>
<Button>I'm red!</Button>
</ThemeProvider>
<ThemeProvider theme={redTheme}>
<div>
<Button>I'm still red!</Button>
</div>
</ThemeProvider>
<ThemeProvider theme={redTheme}>
<div>
<Container>
<Button>I'm still red!</Button>
</Container>
</div>
</ThemeProvider>
<ThemeProvider theme={redTheme}>
<div>
<Container>
<div>
<Button>I'm still red!</Button>
</div>
</Container>
</div>
</ThemeProvider>
<ThemeProvider theme={redTheme}>
<div>
<Container>
<div>
<SidebarContainer>
<Button>I'm still red!</Button>
</SidebarContainer>
</div>
</Container>
</div>
</ThemeProvider>
<ThemeProvider theme={redTheme}>
<div>
<Container>
<div>
<SidebarContainer>
<Sidebar>
<Button>I'm still red!</Button>
</Sidebar>
</SidebarContainer>
</div>
</Container>
</div>
</ThemeProvider>
<ThemeProvider theme={redTheme}>
<div>
<Container>
<div>
<SidebarContainer>
<Sidebar>
<SidebarItem>
<Button>I'm still red!</Button>
</SidebarItem>
</Sidebar>
</SidebarContainer>
</div>
</Container>
</div>
</ThemeProvider>
<ThemeProvider theme={redTheme}>
<div>
<Container>
<div>
<SidebarContainer>
<Sidebar>
<SidebarItem>
<div>
<Button>I'm still red!</Button>
</div>
</SidebarItem>
</Sidebar>
</SidebarContainer>
</div>
</Container>
</div>
</ThemeProvider>
<ThemeProvider theme={redTheme}>
<div>
<Container>
<div>
<SidebarContainer>
<Sidebar>
<SidebarItem>
<div>
<span>
<Button>I'm still red!</Button>
</span>
</div>
</SidebarItem>
</Sidebar>
</SidebarContainer>
</div>
</Container>
</div>
</ThemeProvider>
Full ReactNative Support
import styled from 'styled-components/native';
const Wrapper = styled.View`
background-color: papayawhip;
flex: 1;
justify-content: center;
align-items: center;
`;
const Title = styled.Text`
font-size: 20;
text-align: center;
margin: 10;
color: palevioletred;
font-weight: bold;
`;
import styled from 'styled-components/native';
const Wrapper = styled.View`
background-color: papayawhip;
flex: 1;
justify-content: center;
align-items: center;
`;
const Title = styled.Text`
font-size: 20;
text-align: center;
margin: 10;
color: palevioletred;
font-weight: bold;
`;
import styled from 'styled-components/native';
const Wrapper = styled.View`
background-color: papayawhip;
flex: 1;
justify-content: center;
align-items: center;
`;
const Title = styled.Text`
font-size: 20;
text-align: center;
margin: 10;
color: palevioletred;
font-weight: bold;
`;
import styled from 'styled-components/native';
const Wrapper = styled.View`
background-color: papayawhip;
flex: 1;
justify-content: center;
align-items: center;
`;
const Title = styled.Text`
font-size: 20;
text-align: center;
margin: 10;
color: palevioletred;
font-weight: bold;
`;
import styled from 'styled-components/native';
const Wrapper = styled.View`
background-color: papayawhip;
flex: 1;
justify-content: center;
align-items: center;
`;
const Title = styled.Text`
font-size: 20;
text-align: center;
margin: 10;
color: palevioletred;
font-weight: bold;
`;
class StyledComponentsNative extends Component {
render() {
return (
<Wrapper>
<Title>
Hello World, this is my first native styled component!
</Title>
</Wrapper>
);
}
}
$ yarn add styled-components
github.com/ styled-components/styled-components
$ npm install styled-components
@mixin tone($property, $color, $lighten, $desaturate: $lighten) {
#{$property}: desaturate(lighten($color, $lighten), $desaturate);
}
?????
@mixin tone($property, $color, $lighten, $desaturate: $lighten) {
#{$property}: desaturate(lighten($color, $lighten), $desaturate);
}
@mixin tone($property, $color, $lighten, $desaturate: $lighten) {
#{$property}: desaturate(lighten($color, $lighten), $desaturate);
}
Function?
function tone(property, color, lighten, desaturate = lighten) {
#{$property}: desaturate(lighten(color, lighten), desaturate);
}
function tone(property, color, lighten, desaturate = lighten) {
#{$property}: desaturate(lighten(color, lighten), desaturate);
} return?
function tone(property, color, lighten, desaturate = lighten) {
return `${property}: ${
desaturate(lighten(color, lighten), desaturate)
}`;
}
function tone(property, color, lighten, desaturate = lighten) {
return `${property}: ${
desaturate(lighten(color, lighten), desaturate)
}`;
}
??????
A lightweight toolset for writing styles in JavaScript
polished.js.org
by @nikgraf, @bhough and @mxstbr
function tone(property, color, lighten, desaturate = lighten) {
return `${property}: ${
desaturate(lighten(color, lighten), desaturate)
}`;
}
function tone(property, color, lighten, desaturate = lighten) {
return `${property}: ${
desaturate(desaturate, lighten(lighten, color))
}`;
}
Mixins
clearFix
ellipsis
fontFace
hiDPI
hideText
normalize
placeholder
radialGradient
retinaImage
selection
timingFunctions
wordWrap
Color
adjustHue
complement
darken
desaturate
grayscale
hsl
hsla
invert
lighten
mix
opacify
parseToHsl
parseToRgb
rgb
rgba
saturate
setHue
setLightness
setSaturation
shade
tint
transparentize
Shorthands
animation
backgroundImages
backgrounds
borderColor
borderRadius
borderStyle
borderWidth
buttons
margin
padding
position
size
textInputs
transitions
Helpers
directionalProperty
em
modularScale
rem
stripUnit
polished.js.org
by @nikgraf, @bhough and @mxstbr
$ yarn add polished
github.com/ styled-components/polished
Come get some 💅 styled-components stickers!

Weitere ähnliche Inhalte

Was ist angesagt?

Dealing with Continuous Data Processing, ConFoo 2012
Dealing with Continuous Data Processing, ConFoo 2012Dealing with Continuous Data Processing, ConFoo 2012
Dealing with Continuous Data Processing, ConFoo 2012
Michael Peacock
 
Rails 3 overview
Rails 3 overviewRails 3 overview
Rails 3 overview
Yehuda Katz
 
Introducing Assetic (NYPHP)
Introducing Assetic (NYPHP)Introducing Assetic (NYPHP)
Introducing Assetic (NYPHP)
Kris Wallsmith
 

Was ist angesagt? (20)

Getting Started-with-Laravel
Getting Started-with-LaravelGetting Started-with-Laravel
Getting Started-with-Laravel
 
Mojolicious
MojoliciousMojolicious
Mojolicious
 
Dutch PHP Conference - PHPSpec 2 - The only Design Tool you need
Dutch PHP Conference - PHPSpec 2 - The only Design Tool you needDutch PHP Conference - PHPSpec 2 - The only Design Tool you need
Dutch PHP Conference - PHPSpec 2 - The only Design Tool you need
 
Synapseindia reviews sharing intro cakephp
Synapseindia reviews sharing intro cakephpSynapseindia reviews sharing intro cakephp
Synapseindia reviews sharing intro cakephp
 
Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)
Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)
Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)
 
Symfony2 revealed
Symfony2 revealedSymfony2 revealed
Symfony2 revealed
 
Apache Click
Apache ClickApache Click
Apache Click
 
Advanced symfony Techniques
Advanced symfony TechniquesAdvanced symfony Techniques
Advanced symfony Techniques
 
Dealing with Continuous Data Processing, ConFoo 2012
Dealing with Continuous Data Processing, ConFoo 2012Dealing with Continuous Data Processing, ConFoo 2012
Dealing with Continuous Data Processing, ConFoo 2012
 
Rails 3 overview
Rails 3 overviewRails 3 overview
Rails 3 overview
 
Intoduction to php restful web service
Intoduction to php  restful web serviceIntoduction to php  restful web service
Intoduction to php restful web service
 
Wordpress plugin development from Scratch
Wordpress plugin development from ScratchWordpress plugin development from Scratch
Wordpress plugin development from Scratch
 
Scaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Scaling Symfony2 apps with RabbitMQ - Symfony UK MeetupScaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Scaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
 
Gaelyk: Lightweight Groovy on the Google App Engine
Gaelyk: Lightweight Groovy on the Google App EngineGaelyk: Lightweight Groovy on the Google App Engine
Gaelyk: Lightweight Groovy on the Google App Engine
 
Introducing Assetic (NYPHP)
Introducing Assetic (NYPHP)Introducing Assetic (NYPHP)
Introducing Assetic (NYPHP)
 
Perl Web Client
Perl Web ClientPerl Web Client
Perl Web Client
 
CakePHP workshop
CakePHP workshopCakePHP workshop
CakePHP workshop
 
Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8
 
Power shell voor developers
Power shell voor developersPower shell voor developers
Power shell voor developers
 
Using Geeklog as a Web Application Framework
Using Geeklog as a Web Application FrameworkUsing Geeklog as a Web Application Framework
Using Geeklog as a Web Application Framework
 

Ähnlich wie The road to &lt;> styled-components: CSS in component-based systems by Max Stoiber

I have these files in picture I wrote most the codes but I stuck wit.pdf
I have these files in picture I wrote most the codes but I stuck wit.pdfI have these files in picture I wrote most the codes but I stuck wit.pdf
I have these files in picture I wrote most the codes but I stuck wit.pdf
mail931892
 
Pgm2_UpgradeReport_FilesUpgradeReport.cssBODY{BACKGRO.docx
Pgm2_UpgradeReport_FilesUpgradeReport.cssBODY{BACKGRO.docxPgm2_UpgradeReport_FilesUpgradeReport.cssBODY{BACKGRO.docx
Pgm2_UpgradeReport_FilesUpgradeReport.cssBODY{BACKGRO.docx
mattjtoni51554
 

Ähnlich wie The road to &lt;> styled-components: CSS in component-based systems by Max Stoiber (20)

CSS in React - Will Change Transform
CSS in React - Will Change TransformCSS in React - Will Change Transform
CSS in React - Will Change Transform
 
Componentization css angular
Componentization css angularComponentization css angular
Componentization css angular
 
CSS for Developers
CSS for DevelopersCSS for Developers
CSS for Developers
 
CSS selectors
CSS selectorsCSS selectors
CSS selectors
 
Python Code Camp for Professionals 1/4
Python Code Camp for Professionals 1/4Python Code Camp for Professionals 1/4
Python Code Camp for Professionals 1/4
 
Worth the hype - styled components
Worth the hype - styled componentsWorth the hype - styled components
Worth the hype - styled components
 
Your first website in under a minute with Dancer
Your first website in under a minute with DancerYour first website in under a minute with Dancer
Your first website in under a minute with Dancer
 
Day of code
Day of codeDay of code
Day of code
 
Building a theming system with React - Matteo Ronchi - Codemotion Amsterdam 2017
Building a theming system with React - Matteo Ronchi - Codemotion Amsterdam 2017Building a theming system with React - Matteo Ronchi - Codemotion Amsterdam 2017
Building a theming system with React - Matteo Ronchi - Codemotion Amsterdam 2017
 
CSS Basics
CSS BasicsCSS Basics
CSS Basics
 
Html advance
Html advanceHtml advance
Html advance
 
HTML-Advance.pptx
HTML-Advance.pptxHTML-Advance.pptx
HTML-Advance.pptx
 
Start your app the better way with Styled System
Start your app the better way with Styled SystemStart your app the better way with Styled System
Start your app the better way with Styled System
 
HTML and CSS part 2
HTML and CSS part 2HTML and CSS part 2
HTML and CSS part 2
 
React outbox
React outboxReact outbox
React outbox
 
Blog Hacks 2011
Blog Hacks 2011Blog Hacks 2011
Blog Hacks 2011
 
I have these files in picture I wrote most the codes but I stuck wit.pdf
I have these files in picture I wrote most the codes but I stuck wit.pdfI have these files in picture I wrote most the codes but I stuck wit.pdf
I have these files in picture I wrote most the codes but I stuck wit.pdf
 
Pgm2_UpgradeReport_FilesUpgradeReport.cssBODY{BACKGRO.docx
Pgm2_UpgradeReport_FilesUpgradeReport.cssBODY{BACKGRO.docxPgm2_UpgradeReport_FilesUpgradeReport.cssBODY{BACKGRO.docx
Pgm2_UpgradeReport_FilesUpgradeReport.cssBODY{BACKGRO.docx
 
Flask – Python
Flask – PythonFlask – Python
Flask – Python
 
basics of css
basics of cssbasics of css
basics of css
 

Mehr von React London 2017

Mehr von React London 2017 (9)

A Tiny Fiber Renderer by Dustan Kasten
A Tiny Fiber Renderer by Dustan Kasten A Tiny Fiber Renderer by Dustan Kasten
A Tiny Fiber Renderer by Dustan Kasten
 
Snapshot testing by Anna Doubkova
Snapshot testing by Anna Doubkova Snapshot testing by Anna Doubkova
Snapshot testing by Anna Doubkova
 
Next.js in production by Jasdeep Lalli
Next.js in production by Jasdeep Lalli Next.js in production by Jasdeep Lalli
Next.js in production by Jasdeep Lalli
 
Logux, a new approach to client-server communication by Andrey Sitnik
Logux, a new approach to client-server communication by Andrey SitnikLogux, a new approach to client-server communication by Andrey Sitnik
Logux, a new approach to client-server communication by Andrey Sitnik
 
Weapons grade React by Ken Wheeler
Weapons grade React by Ken Wheeler Weapons grade React by Ken Wheeler
Weapons grade React by Ken Wheeler
 
Offline For The Greater Good by Jani Eväkallio
Offline For The Greater Good by Jani EväkallioOffline For The Greater Good by Jani Eväkallio
Offline For The Greater Good by Jani Eväkallio
 
Realtime Webpack - Pushing on-demand bundling to the limits by Oliver Woodings
Realtime Webpack - Pushing on-demand bundling to the limits by Oliver Woodings Realtime Webpack - Pushing on-demand bundling to the limits by Oliver Woodings
Realtime Webpack - Pushing on-demand bundling to the limits by Oliver Woodings
 
What's in a language? By Cheng Lou
What's in a language? By Cheng Lou What's in a language? By Cheng Lou
What's in a language? By Cheng Lou
 
JavaScript Code Formatting With Prettier by Christopher Chedeau
JavaScript Code Formatting With Prettier by Christopher ChedeauJavaScript Code Formatting With Prettier by Christopher Chedeau
JavaScript Code Formatting With Prettier by Christopher Chedeau
 

Kürzlich hochgeladen

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

The road to &lt;> styled-components: CSS in component-based systems by Max Stoiber