SlideShare uma empresa Scribd logo
1 de 75
Baixar para ler offline
Future-proof styling 

in Drupal (8)
by Tamás Hajas
There is NO
One Right Way!
There is NO
One Right Way!
Team
Team » Communication
Coding Standards
Drupal
CSS Coding Standards
https://www.drupal.org/node/1886770
CSS formatting guidelines
CSS file organization (for Drupal 8)
CSS architecture (for Drupal 8)
CSS formatting guidelines
CSS file organization (for Drupal 8)
CSS architecture (for Drupal 8)
Comment your code!
Team » Communication
“Don’t make me think!”
“code should be 

self-documenting”
/**
* Grid container
* Must only contain '.cell' children.
*/
.grid {
height: 100%;
!
font-size: 0;
!
white-space: nowrap;
}
/**
* Grid container
* Must only contain '.cell' children.
*/
.grid {
height: 100%;
/* Remove inter-cell whitespace */
font-size: 0;
/* Prevent inline-block cells wrapping */
white-space: nowrap;
}
Formatting tools:
CSScomb
.editorconfig
CSS formatting guidelines
CSS file organization (for Drupal 8)
CSS architecture (for Drupal 8)
[META] Architect our CSS – http://drupal.org/node/1921610
SMACSS
See purecss.io for kind of an implementation
SMACSS structure
• Base
!
!
!
SMACSS structure
• Base
• Layout
!
!
!
SMACSS structure
• Base
• Layout
• Module
!
SMACSS structure
• Base
• Layout
• Module
• State
SMACSS structure
• Base
• Layout
• Module
• State
• Theme
SMACSS-like
SMACSS structure
• Base
• Layout
• Module
• State
• Theme
SMACSS-like categories of Drupal 8
• Base
• Layout
• Component Module
• State
• Theme
CSS files for Drupal 8
modules
• module_name.module.css 

(layout, component, state)
!


CSS files for Drupal 8 modules
• module_name.module.css 

(layout, component, state)
• module_name.theme.css


CSS files for Drupal 8 modules
• module_name.module.css 

(layout, component, state)
• module_name.theme.css
• module_name.admin.css 

(layout, component, state)
CSS files for Drupal 8 modules
• module_name.module.css 

(layout, component, state)
• module_name.theme.css
• module_name.admin.css 

(layout, component, state)
• module_name.admin.theme.css
CSS files for Drupal 8 modules
• module_name.module.css 

(layout, component, state)
• module_name.theme.css
• module_name.admin.css 

(layout, component, state)
• module_name.admin.theme.css
• module_name.base.css
CSS files for Drupal 8 modules
# Stylesheets override
!
!
# Remove not used stylesheets
Change record: https://drupal.org/node/1876600
stylesheets-override:
- system.theme.css
!
!
stylesheets-remove:
- node.module.css
mysubtheme.info.yml
CSS files for Drupal 8
themes
• base.css
• layout.css
• components.css

(components, -state, -theme)
CSS files for Drupal 8 themes
base
• normalize.css
• elements.css
layout
• layout.css
• layout--rtl.css
• …
components
• button.css
• tabs.css
• …
(theme)
• theme--light.css
• theme--dark.css
CSS files for Drupal 8 themes
base
layout
components
shame.scss
no-query.scss
style.scss
Possible Sass file structure
config
• _extendables.scss
• _functions.scss
• _mixins.scss
• _variables.scss
Tip: use Sass Globbing
@import
"config/**/*",
"base/**/*",
"layout/**/*",
"components/**/*";
https://github.com/chriseppstein/sass-globbing
CSS formatting guidelines
CSS file organization (for Drupal 8)
CSS architecture (for Drupal 8)
Overly
complex
selectors
CSS pitfalls:
Relying on HTML structure
div.block .title a:link {
#sidebar-first & {
.node-19 & {}
}
}
Qualified
selectors
CSS pitfalls:
Relying on HTML structure
div.block .title a:link {
#sidebar-first & {
.node-19 & {}
}
}
Context
based
selector
modification
CSS pitfalls:
div.block .title a:link {
#sidebar-first & {
.node-19 & {}
}
}
Descendant
selectors
with too
generic
classnames
CSS pitfalls:
div.block .title a:link {
#sidebar-first & {
.node-19 & {}
}
}
Using ID
selector
for styling
CSS pitfalls:
div.block .title a:link {
#sidebar-first & {
.node-19 & {}
}
}
Using
!important
CSS pitfalls:
div.block .title a:link {
#sidebar-first & {
.node-19 & {
…!important;
}
}
}
Keep specificity low!
body #content .data img:hover {}
!
!
!
!
#content .data img
:hover body
0*1000 + 1*100 + 2*10 + 2*1 = 122
0 1 2 2 » 122
Specificity example
• Base
• Layout
• Component
• State
• Theme
SMACSS-like categories of Drupal 8
Component
UI Pattern
Module
SMACSS
Object
OOCSS
Block
BEM
Object Oriented
Programming
See @crell’s OOP intro: http://drupalwatchdog.com/volume-3/issue-1/object-oriented-programming-101
DRY
http://vicvapor.com/cracked-desert-background
Don’t Repeat Yourself!
http://vicvapor.com/cracked-desert-background
Reusable
Repeatable
Component
Reusable
Repeatable
Component
less lines 

of code
Reusable
Repeatable
Component
less lines 

of code
more 

maintainable
„Class names should communicate
useful information to developers.” 

– Nicolas Gallagher
About HTML Semantics and Front-End Architecture
.red-box {}
!
.message--error {}
BEM
• Base
• Layout
• Component
• Block

• Element

• Modifier

• State

• Theme
John Albin: Managing complex projects with design components
<div class="flower__bed">
<div class="flower">
<div class="flower__petals">
<div class="flower__face"></div>
</div>
<div class="flower__stem">
<div class="flower__leaves"></div>
</div>
</div>
</div>
John Albin: Managing complex projects with design components
Component
• Block
<div class="flower__bed">
<div class="flower">
<div class="flower__petals">
<div class="flower__face"></div>
</div>
<div class="flower__stem">
<div class="flower__leaves"></div>
</div>
</div>
</div>
John Albin: Managing complex projects with design components
Component
• Element
<div class="flower__bed">
<div class="flower flower--tulip">
<div class="flower__petals">
<div class="flower__face"></div>
</div>
<div class="flower__stem">
<div class="flower__leaves"></div>
</div>
</div>
</div>
John Albin: Managing complex projects with design components
Component
• Modifier
<div class="flower__bed">
<div class="flower is-pollinating">
<div class="flower__petals">
<div class="flower__face"></div>
</div>
<div class="flower__stem">
<div class="flower__leaves"></div>
</div>
</div>
</div>
John Albin: Managing complex projects with design components
Component
• State
John Albin: Managing complex projects with design components
Component
• State
.flover:hover {}
@media "print" {
.flover {}
}
John Albin: Managing complex projects with design components
Component
• State
Proposal: A Style Guide for Seven
Progress bar component
CSS architecture (for Drupal 8)
Progress bar component
<div class="progress progress--small">
<label class="label label--small">Uploading sunset.jpg</label>
<div class="progress__track">
<div class="progress__bar" style="width: 29%"></div>
</div>
<div class="progress__description">
<div class="layout-pull">Uploaded 221 of 762KB</div>
<strong class="layout-push">29%</strong>
</div>
<a class="progress__cancel" href="#" title="cancel">
<span class="visually-hidden">cancel</span>
</a>
</div>
CSS architecture (for Drupal 8)
Progress bar component
/**
* Progress Bar component
*/
.progress {}
.progress__track {}
.progress__bar {}
.progress__description {}
.progress__cancel {}
.progress__cancel:focus,
.progress__cancel:hover {}
/**
* Progress Bar small variant
*/
.progress--small .progress__track {}
.progress--small .progress__bar {}
.progress--small .progress__cancel {}
Classicitis?!
<div class="media attribution">
<a href="http://twitter.com/stubbornella" class="img">
<img src="http://stubbornella.com/profile_image.jpg"
alt="me" />
</a>
<div class="bd">
@Stubbornella 14 minutes ago
</div>
</div>
/* ====== media ====== */
.media {margin:10px;}
.media, .bd {overflow:hidden; _overflow:visible; zoom:1;}
.media .img {float:left; margin-right: 10px;}
.media .img img{display:block;}
.media .imgExt{float:right; margin-left: 10px;}
http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code/
%media {
overflow: hidden;
&:first-child {
float: left;
}
&:last-child {
overflow: hidden;
}
}
.status {
@extend %media
// ...
}
!
.profile {
@extend %media
// ...
}
http://ianstormtaylor.com/oocss-plus-sass-is-the-best-way-to-css
• Base
• Layout
• Component
• State
• Theme
SMACSS-like categories of Drupal 8
„Layouts where you put your
components.” 

– John Ferris
https://austin2014.drupal.org/session/layout-design-patterns
There is NO
One Right Way!
Tamás Hajas
Drupal consultant
Integral Vision Ltd
integralvision.hu
about.me/tamashajas

Mais conteúdo relacionado

Mais procurados

Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Erin M. Kidwell
 
Basics of Front End Web Dev PowerPoint
Basics of Front End Web Dev PowerPointBasics of Front End Web Dev PowerPoint
Basics of Front End Web Dev PowerPoint
Sahil Gandhi
 
Web Design Bootcamp - Day1
Web Design Bootcamp - Day1Web Design Bootcamp - Day1
Web Design Bootcamp - Day1
Aslam Najeebdeen
 

Mais procurados (20)

Drupal Theme Development - DrupalCon Chicago 2011
Drupal Theme Development - DrupalCon Chicago 2011Drupal Theme Development - DrupalCon Chicago 2011
Drupal Theme Development - DrupalCon Chicago 2011
 
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
 
About Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JSAbout Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JS
 
Yuicss R7
Yuicss R7Yuicss R7
Yuicss R7
 
TOSSUG HTML5 讀書會 新標籤與表單
TOSSUG HTML5 讀書會 新標籤與表單TOSSUG HTML5 讀書會 新標籤與表單
TOSSUG HTML5 讀書會 新標籤與表單
 
Grok Drupal (7) Theming
Grok Drupal (7) ThemingGrok Drupal (7) Theming
Grok Drupal (7) Theming
 
Efficient theming in Drupal
Efficient theming in DrupalEfficient theming in Drupal
Efficient theming in Drupal
 
Creating Responsive Drupal Sites with Zen Grids and the Zen 5 Theme
Creating Responsive Drupal Sites with Zen Grids and the Zen 5 ThemeCreating Responsive Drupal Sites with Zen Grids and the Zen 5 Theme
Creating Responsive Drupal Sites with Zen Grids and the Zen 5 Theme
 
Take Your Markup to 11
Take Your Markup to 11Take Your Markup to 11
Take Your Markup to 11
 
Using Core Themes in Drupal 8
Using Core Themes in Drupal 8Using Core Themes in Drupal 8
Using Core Themes in Drupal 8
 
Drupal distributions - how to build them
Drupal distributions - how to build themDrupal distributions - how to build them
Drupal distributions - how to build them
 
Basics of Front End Web Dev PowerPoint
Basics of Front End Web Dev PowerPointBasics of Front End Web Dev PowerPoint
Basics of Front End Web Dev PowerPoint
 
HTML5 & CSS3 Flag
HTML5 & CSS3 FlagHTML5 & CSS3 Flag
HTML5 & CSS3 Flag
 
Drupal Camp Manila 2014 - Theming with Zen
Drupal Camp Manila 2014 - Theming with ZenDrupal Camp Manila 2014 - Theming with Zen
Drupal Camp Manila 2014 - Theming with Zen
 
Joomla! Day Chicago 2011 - Templating the right way - Jonathan Shroyer
Joomla! Day Chicago 2011 - Templating the right way - Jonathan ShroyerJoomla! Day Chicago 2011 - Templating the right way - Jonathan Shroyer
Joomla! Day Chicago 2011 - Templating the right way - Jonathan Shroyer
 
WAI-ARIA is More Than Accessibility
WAI-ARIA is More Than AccessibilityWAI-ARIA is More Than Accessibility
WAI-ARIA is More Than Accessibility
 
Introduction to Custom WordPress Themeing
Introduction to Custom WordPress ThemeingIntroduction to Custom WordPress Themeing
Introduction to Custom WordPress Themeing
 
Joomla! Template for Beginners
Joomla! Template for BeginnersJoomla! Template for Beginners
Joomla! Template for Beginners
 
The Way to Theme Enlightenment 2017
The Way to Theme Enlightenment 2017The Way to Theme Enlightenment 2017
The Way to Theme Enlightenment 2017
 
Web Design Bootcamp - Day1
Web Design Bootcamp - Day1Web Design Bootcamp - Day1
Web Design Bootcamp - Day1
 

Destaque

Destaque (13)

#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)
#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)
#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)
 
Your first d8 module
Your first d8 moduleYour first d8 module
Your first d8 module
 
Faster and Smarter Development with Drupal Console
Faster and Smarter Development with Drupal ConsoleFaster and Smarter Development with Drupal Console
Faster and Smarter Development with Drupal Console
 
Drupal 8 Configuration Management
Drupal 8 Configuration ManagementDrupal 8 Configuration Management
Drupal 8 Configuration Management
 
A New Theme Layer for Drupal 8
A New Theme Layer for Drupal 8A New Theme Layer for Drupal 8
A New Theme Layer for Drupal 8
 
Paragraphs at drupal 8.
Paragraphs at drupal 8.Paragraphs at drupal 8.
Paragraphs at drupal 8.
 
Made with drupal 8
Made with drupal 8Made with drupal 8
Made with drupal 8
 
How Drupal 8 Reaches Its Full Potential on Pantheon
How Drupal 8 Reaches Its Full Potential on PantheonHow Drupal 8 Reaches Its Full Potential on Pantheon
How Drupal 8 Reaches Its Full Potential on Pantheon
 
Create rich web stories with Drupal 8 and paragraphs
Create rich web stories with Drupal 8 and paragraphsCreate rich web stories with Drupal 8 and paragraphs
Create rich web stories with Drupal 8 and paragraphs
 
Drupal 8 Sample Module
Drupal 8 Sample ModuleDrupal 8 Sample Module
Drupal 8 Sample Module
 
Drupal 8 Vocabulary Lesson
Drupal 8 Vocabulary LessonDrupal 8 Vocabulary Lesson
Drupal 8 Vocabulary Lesson
 
Getting started with Drupal 8
Getting started with Drupal 8Getting started with Drupal 8
Getting started with Drupal 8
 
Drupal 8, tricks and tips learned from the first 6 months
Drupal 8, tricks and tips learned from the first 6 monthsDrupal 8, tricks and tips learned from the first 6 months
Drupal 8, tricks and tips learned from the first 6 months
 

Semelhante a Future-proof styling in Drupal (8)

Css for Development
Css for DevelopmentCss for Development
Css for Development
tsengsite
 
Display Suite: A Themers Perspective
Display Suite: A Themers PerspectiveDisplay Suite: A Themers Perspective
Display Suite: A Themers Perspective
Mediacurrent
 
Highly Maintainable, Efficient, and Optimized CSS
Highly Maintainable, Efficient, and Optimized CSSHighly Maintainable, Efficient, and Optimized CSS
Highly Maintainable, Efficient, and Optimized CSS
Zoe Gillenwater
 
How to create a basic template
How to create a basic templateHow to create a basic template
How to create a basic template
vathur
 
How to develop a CSS Framework
How to develop a CSS FrameworkHow to develop a CSS Framework
How to develop a CSS Framework
Olivier Besson
 

Semelhante a Future-proof styling in Drupal (8) (20)

Css for Development
Css for DevelopmentCss for Development
Css for Development
 
Design Systems, Pattern Libraries & WordPress
Design Systems, Pattern Libraries & WordPressDesign Systems, Pattern Libraries & WordPress
Design Systems, Pattern Libraries & WordPress
 
ViA Bootstrap 4
ViA Bootstrap 4ViA Bootstrap 4
ViA Bootstrap 4
 
Class15
Class15Class15
Class15
 
Object-Oriented CSS 從 OOCSS, SMACSS, BEM 到 AMCSS
Object-Oriented CSS 從 OOCSS, SMACSS, BEM 到 AMCSSObject-Oriented CSS 從 OOCSS, SMACSS, BEM 到 AMCSS
Object-Oriented CSS 從 OOCSS, SMACSS, BEM 到 AMCSS
 
Advanced Front End Architecture in D8: Sass, Gulp, & Living Style Guides
Advanced Front End Architecture in D8: Sass, Gulp, & Living Style GuidesAdvanced Front End Architecture in D8: Sass, Gulp, & Living Style Guides
Advanced Front End Architecture in D8: Sass, Gulp, & Living Style Guides
 
SMACSS Workshop
SMACSS WorkshopSMACSS Workshop
SMACSS Workshop
 
Fewd week2 slides
Fewd week2 slidesFewd week2 slides
Fewd week2 slides
 
Display Suite: A Themers Perspective
Display Suite: A Themers PerspectiveDisplay Suite: A Themers Perspective
Display Suite: A Themers Perspective
 
Material design
Material designMaterial design
Material design
 
Highly Maintainable, Efficient, and Optimized CSS
Highly Maintainable, Efficient, and Optimized CSSHighly Maintainable, Efficient, and Optimized CSS
Highly Maintainable, Efficient, and Optimized CSS
 
Modular HTML & CSS
Modular HTML & CSSModular HTML & CSS
Modular HTML & CSS
 
Artdm171 Week4 Tags
Artdm171 Week4 TagsArtdm171 Week4 Tags
Artdm171 Week4 Tags
 
How to create a basic template
How to create a basic templateHow to create a basic template
How to create a basic template
 
Modular HTML & CSS Workshop
Modular HTML & CSS WorkshopModular HTML & CSS Workshop
Modular HTML & CSS Workshop
 
Source Ordered Templates - - Joomla!Days NL 2009 #jd09nl
Source Ordered Templates - - Joomla!Days NL 2009 #jd09nlSource Ordered Templates - - Joomla!Days NL 2009 #jd09nl
Source Ordered Templates - - Joomla!Days NL 2009 #jd09nl
 
Slow kinda sucks
Slow kinda sucksSlow kinda sucks
Slow kinda sucks
 
Css framework
Css frameworkCss framework
Css framework
 
Css framework
Css frameworkCss framework
Css framework
 
How to develop a CSS Framework
How to develop a CSS FrameworkHow to develop a CSS Framework
How to develop a CSS Framework
 

Mais de Hajas Tamás

Mais de Hajas Tamás (7)

Szépségszalon a Vertikális Végtelenhez – Drupal 8 sminkelés
Szépségszalon a Vertikális Végtelenhez – Drupal 8 sminkelésSzépségszalon a Vertikális Végtelenhez – Drupal 8 sminkelés
Szépségszalon a Vertikális Végtelenhez – Drupal 8 sminkelés
 
Hogyan írjunk fenntartható CSS-t?
Hogyan írjunk fenntartható CSS-t?Hogyan írjunk fenntartható CSS-t?
Hogyan írjunk fenntartható CSS-t?
 
Drupal sminkelés korszerű eszközökkel
Drupal sminkelés korszerű eszközökkelDrupal sminkelés korszerű eszközökkel
Drupal sminkelés korszerű eszközökkel
 
Legyél Drupal 8 core contributor! Könnyebb, mint hinnéd!
Legyél Drupal 8 core contributor! Könnyebb, mint hinnéd!Legyél Drupal 8 core contributor! Könnyebb, mint hinnéd!
Legyél Drupal 8 core contributor! Könnyebb, mint hinnéd!
 
Responsive Webdesign Drupallal
Responsive Webdesign Drupallal Responsive Webdesign Drupallal
Responsive Webdesign Drupallal
 
Drupal Commons bemutató
Drupal Commons bemutatóDrupal Commons bemutató
Drupal Commons bemutató
 
Drupal Gardens bemutató
Drupal Gardens bemutatóDrupal Gardens bemutató
Drupal Gardens bemutató
 

Último

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
 

Último (20)

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
 
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...
 
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
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.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
 
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...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
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
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
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
 

Future-proof styling in Drupal (8)