This is the Gray Materials design system document.
Colors
Color CSS Convention
Colors are defined in css/colors.css
Colors differ project to project, but color classes should be declared similarly throughout projects.
All color variables should be defined with a variable inside of :root, plus a class outside of root with _background following the variable name.
This allows easy color and background-color assignments throughout if needed, in both CSS and HTML.
:root {
--orange-peel: #f49b02;
}
.orange-peel {
color: var(--orange-peel);
}
.orange-peel_background {
background-color: var(--orange-peel);
}
Color Variable Swatches
These are the example color variables used in this project.
Monotone Colors
Tint Colors
Brand Colors
Buttons
Buttons Folder Convention
Button CSS is situated in the theme folder location css/buttons.
Button icons are situated in the theme folder location css/buttons/assets.
Button icons have their own folders with their own icon files, e.g. css/buttons/assets/tertiary/blue_arrow.svg.
This keeps all of the icons close to the buttons CSS for easy editing.
Buttons ACF Function
The buttons function is defined in the theme folder location lib/elements.php.
The fields need to be cloned from Elements - Buttons in ACF.
The field prefix needs to be added to the cloned field in the block and inside the brackets in the get_buttons(); function.
<?php get_buttons('branding_testing_buttons');?>
Export Buttons ACF Fields
ACF Clone Function Buttons
These buttons are defined in the ACF clone function for use over multiple blocks.
Extra Buttons Styles
These are extra modifying classes for hardcoded buttons you may use in the site.
Default System Buttons
These buttons styles are the default, when no modifying classes are applied.
These will inherit primary button styles.
This is a garden variety hyperlink in a paragraph/wysiwyg.
Body Styles
Font Declarations
Fonts are preferred to be declared in the <head> tag for speed reasons.
Please add the font weights in comments in the top of the fonts.css file, so developers can easily add weights throughout the project.
/*** Rigid Square - Font Weights ***/ /* font-family: rigid-square, sans-serif; Thin - 100 Extra Light - 200 Light - 300 Regular - 400 Semi Bold - 600 Bold - 700 Extra Bold - 800 */ /*** Auger Mono - Font Weights ***/ /* font-family: auger-mono, monospace; Extra Light - 200 Light - 300 Regular - 400 Medium - 500 Bold - 700 Black - 900 */
Heading 1 – Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque ligula nisl, condimentum id gravida sit amet, sagittis id justo. In volutpat elit at egestas pretium. Quisque sagittis quam sed sem pharetra rhoncus. Donec vestibulum at risus vel laoreet. Mauris sit amet sapien sit amet augue mattis suscipit. Mauris facilisis venenatis libero, convallis viverra massa vestibulum eu. In eu ex enim. Mauris ut lectus auctor, euismod purus vitae, molestie arcu. Duis sit amet elementum diam. Quisque vitae massa eget quam egestas accumsan.
Heading 2 – Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque ligula nisl, condimentum id gravida sit amet, sagittis id justo. In volutpat elit at egestas pretium. Quisque sagittis quam sed sem pharetra rhoncus. Donec vestibulum at risus vel laoreet. Mauris sit amet sapien sit amet augue mattis suscipit. Mauris facilisis venenatis libero, convallis viverra massa vestibulum eu. In eu ex enim. Mauris ut lectus auctor, euismod purus vitae, molestie arcu. Duis sit amet elementum diam. Quisque vitae massa eget quam egestas accumsan.
Heading 3 – Lorem ipsum dolor sit amet, consetetur sadipscing elitr
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque ligula nisl, condimentum id gravida sit amet, sagittis id justo. In volutpat elit at egestas pretium. Quisque sagittis quam sed sem pharetra rhoncus. Donec vestibulum at risus vel laoreet. Mauris sit amet sapien sit amet augue mattis suscipit. Mauris facilisis venenatis libero, convallis viverra massa vestibulum eu. In eu ex enim. Mauris ut lectus auctor, euismod purus vitae, molestie arcu. Duis sit amet elementum diam. Quisque vitae massa eget quam egestas accumsan.
Heading 4 – Lorem ipsum dolor sit amet, consetetur sadipscing elitr
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque ligula nisl, condimentum id gravida sit amet, sagittis id justo. In volutpat elit at egestas pretium. Quisque sagittis quam sed sem pharetra rhoncus. Donec vestibulum at risus vel laoreet. Mauris sit amet sapien sit amet augue mattis suscipit. Mauris facilisis venenatis libero, convallis viverra massa vestibulum eu. In eu ex enim. Mauris ut lectus auctor, euismod purus vitae, molestie arcu. Duis sit amet elementum diam. Quisque vitae massa eget quam egestas accumsan.
Heading 5 – Lorem ipsum dolor sit amet, consetetur sadipscing elitr
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque ligula nisl, condimentum id gravida sit amet, sagittis id justo. In volutpat elit at egestas pretium. Quisque sagittis quam sed sem pharetra rhoncus. Donec vestibulum at risus vel laoreet. Mauris sit amet sapien sit amet augue mattis suscipit. Mauris facilisis venenatis libero, convallis viverra massa vestibulum eu. In eu ex enim. Mauris ut lectus auctor, euismod purus vitae, molestie arcu. Duis sit amet elementum diam. Quisque vitae massa eget quam egestas accumsan.
Normal body text – Lorem ipsum dolor sit amet, consetetur sadipscing elitr Normal hyperlink
Italic <em> body text – Lorem ipsum dolor sit amet, consetetur sadipscing elitr Normal hyperlink
Bold <bold> body text – Lorem ipsum dolor sit amet, consetetur sadipscing elitr Normal hyperlink
Strong <strong> body text – Lorem ipsum dolor sit amet, consetetur sadipscing elitr Normal hyperlink
p.quote-text
p.fine-print
p.subheading
p.subheading.uppercase
h3.hire-title
h3.hire-title.alt
- Unordered list item 1
- Unordered list item 2
- Unordered list item 3
- Unordered list item 4
- Unordered list item 5
- Unordered list item 6
- Ordered list item 1
- Ordered list item 2
- Ordered list item 3
- Ordered list item 4
- Ordered list item 5
- Ordered list item 6
Form Styles
Gutenburg Blocks
<div id="<?php echo $block['id']?>" class="relevant_name block">
<div class="container-fluid">
<div class="container container-padding">
<div class="row">
<div class="col-12 col-lg-10 offset-lg-1">
</div>
</div>
</div>
</div>
</div>
if( function_exists('acf_register_block_type') ) {
acf_register_block_type(
array(
'name' => 'branding-testing',
'title' => __('Branding Testing'),
'description' => __('Branding Testing'),
'render_callback' => 'my_acf_block_render_callback',
'category' => 'block-testing',
'align' => 'wide',
'mode' => 'preview',
'icon' => '',
'keywords' => array('Branding Testing'),
'render_template' => array('blocks/branding-testing/branding-testing.php'),
)
);
}
function enqueue_block_styles() {
$template_url = get_template_directory_uri();
wp_enqueue_style( 'branding-testing-style', $template_url . '/blocks/branding-testing/branding-testing.css' );
}
/*** Enabling only blocks needed ***/
add_filter( 'allowed_block_types', 'disable_default_gutenberg_blocks' );
function disable_default_gutenberg_blocks( $allowed_blocks ) {
return array(
'acf/branding-testing',
);
}
Grid System
Container Conventions
Between projects we have three types of containers: .container, .container-fluid and .container-padding.
Container values are defined in css/main.css.
.container-fluid
Container fluid is a parent class assigned to a div inside all blocks.
It is usually either set to a max-width of 1920px or 100% for each project by default, but can be changed to anything.
This ensures all of the web elements are constrained to a specified max-width and easily changed.
.container
Container is usually set to 1366px max-width.
Inside this container, usually blocks adhere to a col setting/offset of col-12 col-lg-10 offset-lg-1.
This ensures blocks do not touch the sides of the viewport on larger screens.
.container-padding
Container padding kicks in on at @media(max-width: 991.98px). This ensures the gutter size for text for blocks underneath large viewports.
<div class="container-fluid">
<div class="container container-padding">
<div class="row">
<div class="col-12 col-lg-10 offset-lg-1">
</div>
</div>
</div>
</div>
Responsive Breakpoints
Bootstrap breakpoints are used for responsive and deviation from these is to be avoided much as possible.
@media(max-width) Breakpoints:
/* XX-Large devices (larger desktops) */
@media(max-width: 1399.98px) {
/* xl breakpoint */
/* X-Large devices (large desktops, less than 1400px) */
}
@media(max-width: 1199.98px) {
/* lg breakpoint */
/* Large devices (desktops, less than 1200px) */
}
@media(max-width: 991.98px) {
/* md breakpoint */
/* Medium devices (tablets, less than 992px) */
}
@media(max-width: 767.98px) {
/* sm breakpoint */
/* Small devices (landscape phones, less than 768px) */
}
@media(max-width: 575px) {
/* xs breakpoint */
/* X-Small devices (portrait phones, less than 576px) */
}
@media(min-width) Breakpoints:
/* XS-Small devices (mobile phones) */
@media(min-width: 576px) {
/* sm breakpoint */
/* Small devices (landscape phones, less than 768px) */
}
@media(min-width: 768px) {
/* md breakpoint */
/* Medium devices (tablets, less than 992px) */
}
@media(min-width: 992px) {
/* lg breakpoint */
/* Large devices (desktops, less than 1200px) */
}
@media(min-width: 1200px) {
/* xl breakpoint */
/* X-Large devices (large desktops, less than 1400px) */
}
@media(min-width: 1400px) {
/* xxl breakpoint */
/* XX-Large devices (larger desktops) */
}