├── .bowerrc ├── .gitignore ├── lib ├── theme-views.php ├── theme-helpers.php ├── theme-defaults.php ├── customize.php ├── output.php ├── child-theme-settings.php ├── theme-require-plugins.php └── theme-functions.php ├── screenshot.png ├── assets ├── styles │ ├── partials │ │ ├── _widgets.scss │ │ ├── _search.scss │ │ ├── _posts.scss │ │ ├── _forms.scss │ │ ├── _variables.scss │ │ ├── _comments.scss │ │ ├── _page.scss │ │ ├── _accessibility.scss │ │ ├── _mixins.scss │ │ ├── _helpers.scss │ │ ├── _media.scss │ │ ├── _animate.scss │ │ └── _genesis.scss │ └── style.scss ├── images │ ├── logo.png │ ├── rss.png │ ├── favicon.ico │ ├── favicon.png │ ├── src │ │ ├── rss.png │ │ ├── favicon.ico │ │ ├── favicon.png │ │ ├── twitter-nav.png │ │ └── post-comments.png │ ├── twitter-nav.png │ └── post-comments.png └── js │ ├── source │ ├── main.js │ └── plugins.js │ ├── responsive-menu.js │ ├── vendor │ ├── wow.min.js │ └── modernizr-2.6.2.min.js │ └── main.min.js ├── front-page.php ├── templates ├── portfolio.php └── partials │ └── inc-socialbuttons.php ├── .jshintrc ├── bower.json ├── config.rb ├── package.json ├── editor-style.css ├── page_landing.php ├── languages └── genesis-sample.pot ├── gulpfile.js ├── README.md └── functions.php /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "assets/js/vendor" 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | .sass-cache 4 | style.css 5 | style.css.map -------------------------------------------------------------------------------- /lib/theme-views.php: -------------------------------------------------------------------------------- 1 | " 7 | ], 8 | "description": "Genesis child theme using Bourbon.io SCSS", 9 | "moduleType": [ 10 | "node" 11 | ], 12 | "keywords": [ 13 | "genesis", 14 | "theme", 15 | "child" 16 | ], 17 | "license": "MIT", 18 | "ignore": [ 19 | "**/.*", 20 | "node_modules", 21 | "bower_components", 22 | "assets/js/vendor", 23 | "test", 24 | "tests" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /config.rb: -------------------------------------------------------------------------------- 1 | # Require any additional compass plugins here. 2 | 3 | # Set this to the root of your project when deployed: 4 | http_path = "/" 5 | css_dir = "/" 6 | sass_dir = "assets/styles/source" 7 | images_dir = "assets/images" 8 | javascripts_dir = "assets/js" 9 | fonts_dir = "assets/fonts" 10 | 11 | output_style = :compressed 12 | 13 | relative_assets = true 14 | 15 | line_comments = false 16 | color_output = false 17 | 18 | 19 | # If you prefer the indented syntax, you might want to regenerate this 20 | # project again passing --syntax sass, or you can uncomment this: 21 | # preferred_syntax = :sass 22 | # and then run: 23 | # sass-convert -R --from scss --to sass assets/scss scss && rm -rf sass && mv scss sass 24 | preferred_syntax = :scss 25 | -------------------------------------------------------------------------------- /assets/js/source/plugins.js: -------------------------------------------------------------------------------- 1 | // Avoid `console` errors in browsers that lack a console. 2 | (function() { 3 | var method; 4 | var noop = function () {}; 5 | var methods = [ 6 | 'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error', 7 | 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log', 8 | 'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd', 9 | 'timeStamp', 'trace', 'warn' 10 | ]; 11 | var length = methods.length; 12 | var console = (window.console = window.console || {}); 13 | 14 | while (length--) { 15 | method = methods[length]; 16 | 17 | // Only stub undefined methods. 18 | if (!console[method]) { 19 | console[method] = noop; 20 | } 21 | } 22 | }()); 23 | 24 | // Place any jQuery/helper plugins in here. 25 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bpx-global-us-theme", 3 | "version": "1.0.0", 4 | "repository": { 5 | "type": "git", 6 | "url": "https://github.com/JohnLauber/bourbon-genesis.git" 7 | }, 8 | "license": "GPL-3.0", 9 | "dependencies": { 10 | "load-grunt-tasks": "~0.4.0", 11 | "normalize.css": "~3.0.1" 12 | }, 13 | "devDependencies": { 14 | "autoprefixer": "^6.7.7", 15 | "browser-sync": "^2.18.12", 16 | "gulp": "^3.9.1", 17 | "gulp-concat": "^2.6.1", 18 | "gulp-imagemin": "^3.3.0", 19 | "gulp-jshint": "^2.0.4", 20 | "gulp-livereload": "^3.8.1", 21 | "gulp-newer": "^1.3.0", 22 | "gulp-ng-annotate": "^2.0.0", 23 | "gulp-notify": "^3.0.0", 24 | "gulp-postcss": "^7.0.0", 25 | "gulp-rename": "^1.2.2", 26 | "gulp-sass": "^3.1.0", 27 | "gulp-uglify": "^3.0.0", 28 | "jshint": "^2.9.5", 29 | "node-bourbon": "*", 30 | "postcss-flexboxfixer": "^0.0.3", 31 | "postcss-flexibility": "^1.0.0", 32 | "postcss-gradientfixer": "^0.0.3" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /assets/styles/style.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | Theme Name: Genesis Child Theme 3 | Theme URI: http://www.bpxglobal.com 4 | Description: Child Theme of the Genesis Framework made with Bourbon.io 5 | Author: John Lauber 6 | Author URI: http://www.littlelauberdesigns.com 7 | License: GNU General Public License v2.0 8 | License URI: http://www.gnu.org/licenses/gpl-2.0.html 9 | Version: 1.0 10 | 11 | Template: genesis 12 | */ 13 | 14 | // Bourbon and Bitters imports 15 | @import "bourbon"; 16 | //@import "base/base"; //uncomment to include Bitters variables/mixins 17 | 18 | // Reset, Variables, Mixins, Etc 19 | // DO NOT EDIT ORDER OF FILES 20 | @import "partials/mixins"; 21 | @import "partials/variables"; 22 | 23 | // Genesis 24 | @import "partials/genesis"; 25 | 26 | // Page and Site Styles 27 | @import "partials/page"; 28 | @import "partials/posts"; 29 | @import "partials/accessibility"; 30 | @import "partials/widgets"; 31 | @import "partials/search"; 32 | @import "partials/comments"; 33 | @import "partials/forms"; 34 | @import "partials/media"; 35 | 36 | // Helper Classes 37 | @import "partials/helpers"; 38 | @import "partials/animate"; 39 | -------------------------------------------------------------------------------- /lib/theme-helpers.php: -------------------------------------------------------------------------------- 1 | add_cap( 'edit_' . $posttype . 's' ); 16 | $role->add_cap( 'edit_others_' . $posttype . 's' ); 17 | $role->add_cap( 'publish_' . $posttype . 's' ); 18 | $role->add_cap( 'read_private_' . $posttype . 's' ); 19 | $role->add_cap( 'delete_' . $posttype . 's' ); 20 | $role->add_cap( 'delete_private_' . $posttype . 's' ); 21 | $role->add_cap( 'delete_published_' . $posttype . 's' ); 22 | $role->add_cap( 'delete_others_' . $posttype . 's' ); 23 | $role->add_cap( 'edit_private_' . $posttype . 's' ); 24 | $role->add_cap( 'edit_published_' . $posttype . 's' ); 25 | } 26 | 27 | /** 28 | * Shortcode to display current year and company name for copyright 29 | */ 30 | function mb_shortcode_copyright() { 31 | $copyright = '© ' . date( 'Y' ) . ' ' . get_bloginfo( 'name' ); 32 | return $copyright; 33 | } 34 | add_shortcode( 'copyright', 'mb_shortcode_copyright' ); 35 | -------------------------------------------------------------------------------- /editor-style.css: -------------------------------------------------------------------------------- 1 | /* Column Classes 2 | ------------------------------------------------------------ */ 3 | 4 | .five-sixths, 5 | .four-fifths, 6 | .four-sixths, 7 | .one-fifth, 8 | .one-fourth, 9 | .one-half, 10 | .one-sixth, 11 | .one-third, 12 | .three-fifths, 13 | .three-fourths, 14 | .three-sixths, 15 | .two-fifths, 16 | .two-fourths, 17 | .two-sixths, 18 | .two-thirds { 19 | float: left; 20 | margin: 0 0 20px; 21 | padding-left: 3%; 22 | } 23 | 24 | .one-half, 25 | .three-sixths, 26 | .two-fourths { 27 | width: 48%; 28 | } 29 | 30 | .one-third, 31 | .two-sixths { 32 | width: 31%; 33 | } 34 | 35 | .four-sixths, 36 | .two-thirds { 37 | width: 65%; 38 | } 39 | 40 | .one-fourth { 41 | width: 22.5%; 42 | } 43 | 44 | .three-fourths { 45 | width: 73.5%; 46 | } 47 | 48 | .one-fifth { 49 | width: 17.4%; 50 | } 51 | 52 | .two-fifths { 53 | width: 37.8%; 54 | } 55 | 56 | .three-fifths { 57 | width: 58.2%; 58 | } 59 | 60 | .four-fifths { 61 | width: 78.6%; 62 | } 63 | 64 | .one-sixth { 65 | width: 14%; 66 | } 67 | 68 | .five-sixths { 69 | width: 82%; 70 | } 71 | 72 | .first { 73 | clear: both; 74 | padding-left: 0; 75 | } 76 | 77 | /* Images 78 | ------------------------------------------------------------ */ 79 | 80 | img { 81 | max-width: 100%; 82 | height: auto; 83 | } 84 | -------------------------------------------------------------------------------- /assets/styles/partials/_page.scss: -------------------------------------------------------------------------------- 1 | /* GENERAL */ 2 | body { 3 | background: white; 4 | font-family: 'Open Sans', sans-serif; 5 | } 6 | 7 | a, 8 | a:visited { 9 | color: $linkColor; 10 | } 11 | 12 | a:hover { 13 | color: $linkHoverColor; 14 | } 15 | 16 | ::-moz-selection { 17 | background: $selectionColor; 18 | text-shadow: none; 19 | } 20 | 21 | ::selection { 22 | background: $selectionColor; 23 | text-shadow: none; 24 | } 25 | /* HEADINGS / TYPOGRAPHY */ 26 | h1, 27 | h2, 28 | h3, 29 | h4 { 30 | font-family: 'Open Sans', sans-serif; 31 | } 32 | 33 | h1 {} 34 | 35 | h2 {} 36 | 37 | h3 {} 38 | 39 | h4 {} 40 | /* STRUCTURE */ 41 | // .site-container { max-width: $pageWidth; } 42 | 43 | .site-container {} 44 | 45 | .wrap {} 46 | /* HEADER */ 47 | .site-header {} 48 | 49 | .title-area {} 50 | 51 | .site-title {} 52 | 53 | .site-description {} 54 | 55 | .header-widget-area {} 56 | 57 | /* NAV */ 58 | .nav-primary {} 59 | 60 | .nav-secondary {} 61 | 62 | /* MAIN */ 63 | .home .site-inner {} 64 | 65 | .site-inner { 66 | 67 | } 68 | .content-sidebar-wrap {} 69 | 70 | .content {} 71 | /* SIDEBAR */ 72 | .sidebar-primary {} 73 | /* FOOTER */ 74 | .footer-widgets {} 75 | 76 | .site-footer {} 77 | /**************************************** 78 | PAGE TEMPLATES 79 | *****************************************/ 80 | /* Home Page */ 81 | .home {} 82 | /* Blog Page */ 83 | .blog {} 84 | -------------------------------------------------------------------------------- /assets/styles/partials/_accessibility.scss: -------------------------------------------------------------------------------- 1 | /* ## Screen reader text 2 | --------------------------------------------- */ 3 | .screen-reader-text, 4 | .screen-reader-text span, 5 | .screen-reader-shortcut { 6 | position: absolute !important; 7 | clip: rect(0, 0, 0, 0); 8 | height: 1px; 9 | width: 1px; 10 | border: 0; 11 | overflow: hidden; 12 | } 13 | 14 | .screen-reader-text:focus, 15 | .screen-reader-shortcut:focus, 16 | .genesis-nav-menu .search input[type="submit"]:focus, 17 | .widget_search input[type="submit"]:focus { 18 | clip: auto !important; 19 | height: auto; 20 | width: auto; 21 | display: block; 22 | font-size: 1em; 23 | font-weight: bold; 24 | padding: 15px 23px 14px; 25 | color: #333; 26 | background: #fff; 27 | z-index: 100000; /* Above WP toolbar. */ 28 | text-decoration: none; 29 | box-shadow: 0 0 2px 2px rgba(0,0,0,.6); 30 | } 31 | 32 | .more-link { 33 | position: relative; 34 | } 35 | 36 | /* # Skip Links 37 | ---------------------------------------------------------------------------------------------------- */ 38 | .genesis-skip-link { 39 | margin: 0; 40 | } 41 | .genesis-skip-link li { 42 | height: 0; 43 | width: 0; 44 | list-style: none; 45 | } 46 | /* Display outline on focus */ 47 | :focus { 48 | color: #333; 49 | outline: #ccc solid 1px; 50 | } 51 | 52 | /* ## Accessible Menu 53 | --------------------------------------------- */ 54 | .menu .menu-item:focus { 55 | position: static; 56 | } 57 | .menu .menu-item > a:focus + ul.sub-menu, 58 | .menu .menu-item.sfHover > ul.sub-menu { 59 | left: auto; 60 | opacity: 1; 61 | } 62 | -------------------------------------------------------------------------------- /lib/theme-defaults.php: -------------------------------------------------------------------------------- 1 | 6, 44 | 'content_archive' => 'full', 45 | 'content_archive_limit' => 0, 46 | 'content_archive_thumbnail' => 0, 47 | 'posts_nav' => 'numeric', 48 | 'site_layout' => 'content-sidebar', 49 | ) ); 50 | 51 | } 52 | 53 | update_option( 'posts_per_page', 6 ); 54 | 55 | } -------------------------------------------------------------------------------- /page_landing.php: -------------------------------------------------------------------------------- 1 | \n" 9 | "Language-Team: StudioPress \n" 10 | "MIME-Version: 1.0\n" 11 | "Content-Type: text/plain; charset=UTF-8\n" 12 | "Content-Transfer-Encoding: 8bit\n" 13 | "X-Generator: Poedit 1.8.7\n" 14 | "X-Poedit-Basepath: ..\n" 15 | "X-Poedit-WPHeader: style.css\n" 16 | "X-Poedit-SourceCharset: UTF-8\n" 17 | "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" 18 | "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" 19 | "_nx_noop:3c,1,2;__ngettext_noop:1,2\n" 20 | "X-Poedit-SearchPath-0: .\n" 21 | "X-Poedit-SearchPathExcluded-0: *.js\n" 22 | 23 | #: functions.php:42 functions.php:43 24 | msgid "Menu" 25 | msgstr "" 26 | 27 | #: functions.php:80 28 | msgid "After Header Menu" 29 | msgstr "" 30 | 31 | #: functions.php:80 32 | msgid "Footer Menu" 33 | msgstr "" 34 | 35 | #: lib/customize.php:64 36 | msgid "" 37 | "Change the default color for linked titles, menu links, post info links and " 38 | "more." 39 | msgstr "" 40 | 41 | #: lib/customize.php:65 42 | msgid "Link Color" 43 | msgstr "" 44 | 45 | #: lib/customize.php:85 46 | msgid "Change the default color for button hovers." 47 | msgstr "" 48 | 49 | #: lib/customize.php:86 50 | msgid "Accent Color" 51 | msgstr "" 52 | 53 | #. Theme Name of the plugin/theme 54 | msgid "Genesis Sample" 55 | msgstr "" 56 | 57 | #. Theme URI of the plugin/theme 58 | #. Author URI of the plugin/theme 59 | msgid "http://www.studiopress.com/" 60 | msgstr "" 61 | 62 | #. Description of the plugin/theme 63 | msgid "This is the sample theme created for the Genesis Framework." 64 | msgstr "" 65 | 66 | #. Author of the plugin/theme 67 | msgid "StudioPress" 68 | msgstr "" 69 | -------------------------------------------------------------------------------- /templates/partials/inc-socialbuttons.php: -------------------------------------------------------------------------------- 1 | 9 | 10 |
11 | 18 | 19 | 20 |
21 |

Share This

22 | 48 |
49 | -------------------------------------------------------------------------------- /assets/styles/partials/_mixins.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * Mixin for easy media queries 3 | * @include bp(tablet) { SCSS here }; 4 | */ 5 | @mixin bp($point) { 6 | @if $point == biggie { 7 | @media (max-width : 1600px) { @content; } 8 | } 9 | @if $point == tablet { 10 | @media (max-width : 1024px) { @content; } 11 | } 12 | @else if $point == phone { 13 | @media (max-width : 768px) { @content; } 14 | } 15 | } 16 | 17 | /* 18 | * Mixin for micro clearfix 19 | * @include microclearfix; 20 | */ 21 | @mixin microclearfix { 22 | &:before, &:after { content: ""; display: table; } 23 | &:after { clear: both; } 24 | *zoom: 1; 25 | } 26 | 27 | /* 28 | * Mixin for basic CSS triangles 29 | * @include triangle(up, #000, 50px) 30 | */ 31 | @mixin triangle($direction:up, $color:#000, $size:100px) { 32 | @if($direction == up) { 33 | border-color: transparent transparent $color; 34 | border-style: solid; 35 | border-width: 0 $size $size; 36 | height: 0; 37 | width: 0; 38 | } 39 | @if($direction == down) { 40 | border-color: $color transparent transparent transparent; 41 | border-style: solid; 42 | border-width: $size; 43 | height:0; 44 | width:0; 45 | } 46 | @if($direction == left) { 47 | border-color: transparent $color transparent transparent; 48 | border-style: solid; 49 | border-width: $size $size $size 0; 50 | height: 0; 51 | width: 0; 52 | } 53 | @if($direction == right) { 54 | border-color: transparent transparent transparent $color; 55 | border-style: solid; 56 | border-width: $size 0 $size $size; 57 | height:0; 58 | width:0; 59 | } 60 | } 61 | 62 | /* 63 | * @font-face mixin 64 | * Bulletproof font-face via Font Squirrel 65 | * @include fontface('family', 'assets/fonts/', 'myfontname'); 66 | */ 67 | 68 | @mixin fontface($font-family, $font-url, $font-name) { 69 | @font-face { 70 | font: { 71 | family: $font-family; 72 | style: normal; 73 | weight: normal; 74 | } 75 | src: url($font-url + '/' + $font-name + '.eot'); 76 | src: url($font-url + '/' + $font-name + '.eot#iefix') format('embedded-opentype'), 77 | url($font-url + '/' + $font-name + '.woff') format('woff'), 78 | url($font-url + '/' + $font-name + '.ttf') format('truetype'), 79 | url($font-url + '/' + $font-name + '.svg#' + $font-name) format('svg'); 80 | } 81 | } 82 | 83 | @mixin opacity($opacity) { 84 | opacity: $opacity; 85 | $opacity-ie: $opacity * 100; 86 | filter: progid:DXImageTransform.Microsoft.Alpha(opacity=$opacity-ie); //IE8 87 | } 88 | 89 | @mixin opaque { 90 | opacity: 1; 91 | } 92 | 93 | @mixin transparent { 94 | opacity: 0; 95 | filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0); //IE8 96 | } -------------------------------------------------------------------------------- /lib/customize.php: -------------------------------------------------------------------------------- 1 | add_setting( 52 | 'genesis_sample_link_color', 53 | array( 54 | 'default' => genesis_sample_customizer_get_default_link_color(), 55 | 'sanitize_callback' => 'sanitize_hex_color', 56 | ) 57 | ); 58 | 59 | $wp_customize->add_control( 60 | new WP_Customize_Color_Control( 61 | $wp_customize, 62 | 'genesis_sample_link_color', 63 | array( 64 | 'description' => __( 'Change the default color for linked titles, menu links, post info links and more.', 'genesis-sample' ), 65 | 'label' => __( 'Link Color', 'genesis-sample' ), 66 | 'section' => 'colors', 67 | 'settings' => 'genesis_sample_link_color', 68 | ) 69 | ) 70 | ); 71 | 72 | $wp_customize->add_setting( 73 | 'genesis_sample_accent_color', 74 | array( 75 | 'default' => genesis_sample_customizer_get_default_accent_color(), 76 | 'sanitize_callback' => 'sanitize_hex_color', 77 | ) 78 | ); 79 | 80 | $wp_customize->add_control( 81 | new WP_Customize_Color_Control( 82 | $wp_customize, 83 | 'genesis_sample_accent_color', 84 | array( 85 | 'description' => __( 'Change the default color for button hovers.', 'genesis-sample' ), 86 | 'label' => __( 'Accent Color', 'genesis-sample' ), 87 | 'section' => 'colors', 88 | 'settings' => 'genesis_sample_accent_color', 89 | ) 90 | ) 91 | ); 92 | 93 | } 94 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var sass = require('gulp-sass'); 3 | var rename = require('gulp-rename'); 4 | var browserSync = require('browser-sync'); 5 | var imagemin = require('gulp-imagemin'); 6 | var jshint = require('gulp-jshint'); 7 | var uglify = require('gulp-uglify'); 8 | var ngAnnotate = require('gulp-ng-annotate'); 9 | var concatit = require('gulp-concat'); 10 | var sourcemaps = require('gulp-sourcemaps'); 11 | var postcss = require('gulp-postcss'); 12 | var autoprefixer = require('autoprefixer'); 13 | var bourbon = require('node-bourbon').includePaths; 14 | var livereload = require('gulp-livereload'); 15 | var notify = require('gulp-notify'); 16 | 17 | var paths = { 18 | scss: './assets/styles/**/*.scss', 19 | jsFiles: './assets/js/source/*.js', 20 | jsVend: './assets/js/vendor/*.js', 21 | jsDest: './assets/js/', 22 | images: '' 23 | }; 24 | 25 | gulp.task('watch', function() { 26 | livereload.listen(); 27 | gulp.watch('./assets/images/src/**/*.{png,jpg,gif}', [ 'imagemin' ]); 28 | gulp.watch( paths.jsFiles, [ 'jshint', 'uglify' ]); 29 | gulp.watch( paths.scss, [ 'sass' ]); 30 | gulp.watch('build/style.css', [ 'postcss']); 31 | 32 | }); 33 | 34 | gulp.task('sass', function() { 35 | return gulp.src(paths.scss) 36 | .pipe(sass({ 37 | includePaths: ['styles'].concat(bourbon) 38 | })) 39 | .pipe(gulp.dest('build/')); 40 | }); 41 | 42 | gulp.task('postcss', function() { 43 | var plugins = [ 44 | autoprefixer({browsers: ['> 1%'], cascade: false}) 45 | ]; 46 | gulp.src('build/*.css') 47 | .pipe(postcss(plugins)) 48 | .pipe(gulp.dest('.')) 49 | .pipe(livereload()); 50 | }); 51 | 52 | gulp.task('jshint', function () { 53 | return gulp 54 | .src( paths.jsFiles ) 55 | .pipe( jshint() ) 56 | .pipe( jshint.reporter('default') ) 57 | ; 58 | }); 59 | 60 | 61 | gulp.task('uglify', function () { 62 | return gulp 63 | .src( [paths.jsFiles, paths.jsVend ] ) 64 | // .pipe(sourcemaps.init()) 65 | .pipe(concatit('main')) 66 | .pipe(ngAnnotate()) 67 | .on('error', notify.onError("Error: <%= error.message %>")) 68 | .pipe(uglify()) 69 | .on('error', notify.onError("Error: <%= error.message %>")) 70 | .pipe(rename({ 71 | extname: ".min.js" 72 | })) 73 | // .pipe(sourcemaps.write("./")) 74 | .pipe(gulp.dest(paths.jsDest)) 75 | // .pipe(notify('Uglified JavaScript (' + moment().format('MMM Do h:mm:ss A') + ')')); 76 | }); 77 | 78 | // gulp.task('deploy', function () { 79 | // return gulp 80 | // .src('[object Object]') 81 | // .pipe(gulp.dest('staging')) 82 | // ; 83 | // }); 84 | 85 | gulp.task('imagemin', () => 86 | gulp.src('assets/images/src/*') 87 | .pipe(imagemin()) 88 | .pipe(gulp.dest('assets/images/')) 89 | ); 90 | 91 | gulp.task('browserSync', function () { 92 | browserSync.init({ 93 | proxy: "local.testing.dev" 94 | }); 95 | }); 96 | 97 | gulp.task('default', ["sass", "postcss", "jshint", "uglify", "imagemin", "watch"]); 98 | -------------------------------------------------------------------------------- /lib/output.php: -------------------------------------------------------------------------------- 1 | 128 ) ? '#333333' : '#ffffff'; 41 | 42 | } 43 | 44 | //* Calculate Color Brightness 45 | function genesis_sample_color_brightness( $color, $change ) { 46 | 47 | $hexcolor = str_replace( '#', '', $color ); 48 | 49 | $red = hexdec( substr( $hexcolor, 0, 2 ) ); 50 | $green = hexdec( substr( $hexcolor, 2, 2 ) ); 51 | $blue = hexdec( substr( $hexcolor, 4, 2 ) ); 52 | 53 | $red = max( 0, min( 255, $red + $change ) ); 54 | $green = max( 0, min( 255, $green + $change ) ); 55 | $blue = max( 0, min( 255, $blue + $change ) ); 56 | 57 | return '#'.dechex( $red ).dechex( $green ).dechex( $blue ); 58 | 59 | } 60 | 61 | $css .= ( genesis_sample_customizer_get_default_link_color() !== $color_link ) ? sprintf( ' 62 | 63 | a, 64 | .entry-title a:focus, 65 | .entry-title a:hover, 66 | .genesis-nav-menu a:focus, 67 | .genesis-nav-menu a:hover, 68 | .genesis-nav-menu .current-menu-item > a, 69 | .genesis-nav-menu .sub-menu .current-menu-item > a:focus, 70 | .genesis-nav-menu .sub-menu .current-menu-item > a:hover, 71 | .js nav button:focus, 72 | .js .menu-toggle:focus { 73 | color: %s; 74 | } 75 | ', $color_link ) : ''; 76 | 77 | $css .= ( genesis_sample_customizer_get_default_accent_color() !== $color_accent ) ? sprintf( ' 78 | 79 | button:focus, 80 | button:hover, 81 | input:focus[type="button"], 82 | input:focus[type="reset"], 83 | input:focus[type="submit"], 84 | input:hover[type="button"], 85 | input:hover[type="reset"], 86 | input:hover[type="submit"], 87 | .archive-pagination li a:focus, 88 | .archive-pagination li a:hover, 89 | .archive-pagination .active a, 90 | .button:focus, 91 | .button:hover, 92 | .sidebar .enews-widget input[type="submit"] { 93 | background-color: %s; 94 | color: %s; 95 | } 96 | ', $color_accent, genesis_sample_color_contrast( $color_accent ) ) : ''; 97 | 98 | if ( $css ) { 99 | wp_add_inline_style( $handle, $css ); 100 | } 101 | 102 | } -------------------------------------------------------------------------------- /lib/child-theme-settings.php: -------------------------------------------------------------------------------- 1 | Child Theme Settings. 7 | * 8 | * @package BE_Genesis_Child 9 | * @since 1.0.0 10 | * @link https://github.com/billerickson/BE-Genesis-Child 11 | * @author Bill Erickson 12 | * @copyright Copyright (c) 2011, Bill Erickson 13 | * @license http://www.opensource.org/licenses/gpl-license.php GPL v2.0 (or later) 14 | * @link https://github.com/billerickson/BE-Genesis-Child 15 | */ 16 | 17 | /** 18 | * Registers a new admin page, providing content and corresponding menu item 19 | * for the Child Theme Settings page. 20 | * 21 | * @since 1.0.0 22 | * 23 | * @package BE_Genesis_Child 24 | * @subpackage Child_Theme_Settings 25 | */ 26 | class Child_Theme_Settings extends Genesis_Admin_Boxes { 27 | 28 | /** 29 | * Create an admin menu item and settings page. 30 | * @since 1.0.0 31 | */ 32 | function __construct() { 33 | 34 | // Specify a unique page ID. 35 | $page_id = 'child'; 36 | 37 | // Set it as a child to genesis, and define the menu and page titles 38 | $menu_ops = array( 39 | 'submenu' => array( 40 | 'parent_slug' => 'genesis', 41 | 'page_title' => 'Theme Footer Settings', 42 | 'menu_title' => 'Theme Footer Settings', 43 | ) 44 | ); 45 | 46 | // Set up page options. These are optional, so only uncomment if you want to change the defaults 47 | $page_ops = array( 48 | // 'screen_icon' => 'options-general', 49 | // 'save_button_text' => 'Save Settings', 50 | // 'reset_button_text' => 'Reset Settings', 51 | // 'save_notice_text' => 'Settings saved.', 52 | // 'reset_notice_text' => 'Settings reset.', 53 | ); 54 | 55 | // Give it a unique settings field. 56 | // You'll access them from genesis_get_option( 'option_name', 'child-settings' ); 57 | $settings_field = 'child-settings'; 58 | 59 | // Set the default values 60 | $default_settings = array( 61 | 'footer-left' => 'Copyright © ' . date( 'Y' ) . ' All Rights Reserved', 62 | 'footer-right' => 'Site by Little Lauber Designs', 63 | ); 64 | 65 | // Create the Admin Page 66 | $this->create( $page_id, $menu_ops, $page_ops, $settings_field, $default_settings ); 67 | 68 | // Initialize the Sanitization Filter 69 | add_action( 'genesis_settings_sanitizer_init', array( $this, 'sanitization_filters' ) ); 70 | 71 | } 72 | 73 | /** 74 | * Set up Sanitization Filters 75 | * @since 1.0.0 76 | * 77 | * See /lib/classes/sanitization.php for all available filters. 78 | */ 79 | function sanitization_filters() { 80 | 81 | genesis_add_option_filter( 'safe_html', $this->settings_field, 82 | array( 83 | 'footer-left', 84 | 'footer-right', 85 | ) ); 86 | } 87 | 88 | /** 89 | * Set up Help Tab 90 | * @since 1.0.0 91 | * 92 | * Genesis automatically looks for a help() function, and if provided uses it for the help tabs 93 | * @link http://wpdevel.wordpress.com/2011/12/06/help-and-screen-api-changes-in-3-3/ 94 | */ 95 | function help() { 96 | $screen = get_current_screen(); 97 | 98 | $screen->add_help_tab( array( 99 | 'id' => 'sample-help', 100 | 'title' => 'Sample Help', 101 | 'content' => '

Help content goes here.

', 102 | ) ); 103 | } 104 | 105 | /** 106 | * Register metaboxes on Child Theme Settings page 107 | * @since 1.0.0 108 | */ 109 | function metaboxes() { 110 | 111 | add_meta_box('footer_metabox', 'Footer', array( $this, 'footer_metabox' ), $this->pagehook, 'main', 'high'); 112 | 113 | } 114 | 115 | /** 116 | * Footer Metabox 117 | * @since 1.0.0 118 | */ 119 | function footer_metabox() { 120 | 121 | echo '

Footer Left:

'; 122 | wp_editor( $this->get_field_value( 'footer-left' ), $this->get_field_id( 'footer-left' ), array( 'textarea_rows' => 5 ) ); 123 | 124 | echo '

Footer Right:

'; 125 | wp_editor( $this->get_field_value( 'footer-right' ), $this->get_field_id( 'footer-right' ), array( 'textarea_rows' => 5 ) ); 126 | } 127 | 128 | 129 | } 130 | 131 | /** 132 | * Add the Theme Settings Page 133 | * @since 1.0.0 134 | */ 135 | function be_add_child_theme_settings() { 136 | global $_child_theme_settings; 137 | $_child_theme_settings = new Child_Theme_Settings; 138 | } 139 | add_action( 'genesis_admin_menu', 'be_add_child_theme_settings' ); 140 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # WordPress Genesis Starter Child Theme with Bourbon 2 | 3 | Version: 1.4 4 | 5 | ## Contributors: 6 | 7 | John Lauber ( [@johnlauber](http://twitter.com/johnlauber) / [littlelauberdesigns.com](http://littlelauberdesigns.com)) 8 | 9 | ## Summary 10 | 11 | WordPress Starter Theme for use as Child Theme of the Genesis Framework for building custom themes, using Bourbon/SCSS and Grunt. Tested with WordPress 3.9.2 (and now 4.0) and Genesis 2.1.2. This is a fork of [Matt Banks Starter](https://github.com/mattbanks/WordPress-Starter-Theme) theme that's using Compass/SCSS. 12 | 13 | ## Usage 14 | 15 | The theme is setup to use [Gulp](http://gulpjs.com/) to compile Bourbon/SCSS, lint, concatenate and minify JavaScript (with source maps), optimize images, and [LiveReload](http://livereload.com/) the browser (with extension), with flexibility to add any additional tasks via the Gruntfile. Alternatively, you can use [CodeKit](http://incident57.com/codekit/) or whatever else you prefer to compile the SCSS and manage the JavaScript. 16 | 17 | Rename folder to your theme name, change the `assets/styles/source/style.scss` intro block to your theme information. Open the theme directory in terminal and run `npm install` to pull in all Gulp dependencies. Run `gulp` to execute tasks. Change theme as you will. If you have the LiveReload browser extension, it will reload after any SCSS or JS changes. 18 | 19 | - Compile `assets/styles/source/style.scss` to `style.css` 20 | - Compile `assets/styles/source/editor-style.scss` to `editor-style.css` 21 | - Concatenate and minify plugins in `assets/js/vendor` and `assets/js/source/plugins.js` to `assets/js/plugins.min.js` 22 | - Minify `assets/js/source/main.js` to `assets/js/main.min.js` 23 | - Publish and enjoy the fruits of your labor. 24 | 25 | In the gulp.js file, be sure to change the BrowserSync line "local.testing.dev" to your local web address you want to sync. 26 | 27 | Bourbon gets loaded as a dependency in package.json and gulp.js. There may be a better way to do this, but I haven’t found it yet. 28 | 29 | ### Bower 30 | 31 | Supports [bower](https://github.com/bower/bower) to install and manage JavaScript dependencies in the `assets/js/vendor` folder. 32 | 33 | 34 | ### Features 35 | 36 | 1. Bourbon & SCSS with easy-to-use of mixins ready to go 37 | 2. Easy to customize 38 | 3. Grunt and LiveReload to make it more gooder 39 | 4. Child theme tweaks 40 | 5. Utilizes PostCSS for browser backwards compatibility 41 | 6. Utilizes BrowserSync for testing across devices 42 | 43 | ### Suggested Plugins 44 | 45 | * [WordPress SEO by Yoast](http://wordpress.org/extend/plugins/wordpress-seo/) 46 | * [Gravity Forms](http://www.gravityforms.com/) 47 | 48 | Requires: [bourbon.io](http://bourbon.io/) 49 | 50 | ### Changelog 51 | #### Version 2.1 52 | Now with Gulp. I noticed Grunt was starting to fall out of favor, through various blogs and decided I should switchover. So ignore anything that references Grunt and learn to use Gulp. 53 | 54 | #### Version 2.0 55 | Updated the theme to utilize the latest changes in the Genesis Sample theme. Cut out any "old stuff". Calling it version 2.0 since I reworked the SCSS files. 56 | 57 | #### Version 1.5.1 58 | Removing the required plugin functionality. SEO plugin is now optional as I'm moving towards SEO Framework and not using Yoast SEO. 59 | 60 | #### Version 1.5 61 | Removed some older PostCSS plugins. Added in new dependencies for minimizing and packing the stylesheet. 62 | 63 | #### Version 1.4 64 | Moved the Google Font enqueue to the functions file and removed the static resource filter on the CSS files. This was not allowing the enqueueing of the Google fonts. Just replace the string from Google Fonts if using different fonts and change SCSS appropriately. 65 | 66 | #### Version 1.3 67 | * With the release Genesis 2.2, I added the accessibility features to the functions and created a new scss partial to hold the latest Genesis Sample additions. 68 | 69 | #### Version 1.2.2 70 | * Minor change to tasks order in GruntFile. BrowserSync starts last instead of first in case there's an error in the other tasks. PostCSS runs immediately after SASS, which seems more logical too. 71 | 72 | #### Version 1.2.1 73 | * Moved all media queries (out of the _genesis.scss partial) to the correct _media.scss partial. It should 74 | have been there in the first place. 75 | 76 | #### Version 1.2 77 | * Updated plugin activation code with the latest version of TGM Plugin Activation. 78 | 79 | #### Version 1.1 80 | * Updated package.json and gruntfile to use new autoprefixer (PostCSS) with flexbox fixer. 81 | * Removed some of the includes from bourbon as they're deprecated. 82 | 83 | #### Verson 1.0 84 | * Thanks to Matt for the starter 85 | * Changed the grunt file and main style sheet to use Bourbon mixins 86 | * initial version 87 | 88 | ### Credits 89 | 90 | Without these projects, this WordPress Genesis Starter Child Theme wouldn't be where it is today. 91 | 92 | * [Matt Banks Starter](https://github.com/mattbanks/WordPress-Starter-Theme) 93 | * [SASS / SCSS](http://sass-lang.com/) 94 | * [Bourbon](http://bourbon.io) 95 | * [BrowserSync](http://www.browsersync.io) 96 | * [Genesis Framework](http://my.studiopress.com/themes/genesis/) 97 | * [Bill Erickson's Genesis Child Theme](https://github.com/billerickson/BE-Genesis-Child) 98 | * [HTML5 Boilerplate](http://html5boilerplate.com) 99 | * [Grunt](http://gruntjs.com/) 100 | * [Bower](https://github.com/bower/bower) 101 | -------------------------------------------------------------------------------- /lib/theme-require-plugins.php: -------------------------------------------------------------------------------- 1 | 'WordPress SEO by Yoast', 12 | 'slug' => 'wordpress-seo', 13 | 'required' => true, 14 | 'force_activation' => true, 15 | 'is_callable' => 'wpseo_init', 16 | ), 17 | 18 | // array( 19 | // 'name' => 'Use Google Libraries', 20 | // 'slug' => 'use-google-libraries', 21 | // 'required' => true, 22 | // 'force_activation' => true 23 | // ), 24 | 25 | // array( 26 | // 'name' => 'Google Analytics for WordPress', 27 | // 'slug' => 'google-analytics-for-wordpress', 28 | // 'required' => true, 29 | // 'force_activation' => true 30 | // ), 31 | 32 | ); 33 | 34 | // Change this to your theme text domain, used for internationalising strings 35 | $theme_text_domain = 'bourbon-genesis'; 36 | 37 | /** 38 | * Array of configuration settings. Amend each line as needed. 39 | * If you want the default strings to be available under your own theme domain, 40 | * leave the strings uncommented. 41 | * Some of the strings are added into a sprintf, so see the comments at the 42 | * end of each line for what each argument will be. 43 | */ 44 | $config = array( 45 | 'domain' => $theme_text_domain, // Text domain - likely want to be the same as your theme. 46 | 'default_path' => '', // Default absolute path to pre-packaged plugins 47 | 'parent_slug' => 'themes.php', // Default parent menu slug 48 | 'capability' => 'edit_theme_options', // Capability needed to view plugin install page, should be a capability associated with the parent menu used. 49 | 'menu' => 'install-required-plugins', // Menu slug 50 | 'has_notices' => true, // Show admin notices or not 51 | 'is_automatic' => false, // Automatically activate plugins after installation or not 52 | 'message' => '', // Message to output right before the plugins table 53 | 'strings' => array( 54 | 'page_title' => __( 'Install Required Plugins', $theme_text_domain ), 55 | 'menu_title' => __( 'Install Plugins', $theme_text_domain ), 56 | 'installing' => __( 'Installing Plugin: %s', $theme_text_domain ), // %1$s = plugin name 57 | 'oops' => __( 'Something went wrong with the plugin API.', $theme_text_domain ), 58 | 'notice_can_install_required' => _n_noop( 'This theme requires the following plugin: %1$s.', 'This theme requires the following plugins: %1$s.' ), // %1$s = plugin name(s) 59 | 'notice_can_install_recommended' => _n_noop( 'This theme recommends the following plugin: %1$s.', 'This theme recommends the following plugins: %1$s.' ), // %1$s = plugin name(s) 60 | 'notice_cannot_install' => _n_noop( 'Sorry, but you do not have the correct permissions to install the %s plugin. Contact the administrator of this site for help on getting the plugin installed.', 'Sorry, but you do not have the correct permissions to install the %s plugins. Contact the administrator of this site for help on getting the plugins installed.' ), // %1$s = plugin name(s) 61 | 'notice_can_activate_required' => _n_noop( 'The following required plugin is currently inactive: %1$s.', 'The following required plugins are currently inactive: %1$s.' ), // %1$s = plugin name(s) 62 | 'notice_can_activate_recommended' => _n_noop( 'The following recommended plugin is currently inactive: %1$s.', 'The following recommended plugins are currently inactive: %1$s.' ), // %1$s = plugin name(s) 63 | 'notice_cannot_activate' => _n_noop( 'Sorry, but you do not have the correct permissions to activate the %s plugin. Contact the administrator of this site for help on getting the plugin activated.', 'Sorry, but you do not have the correct permissions to activate the %s plugins. Contact the administrator of this site for help on getting the plugins activated.' ), // %1$s = plugin name(s) 64 | 'notice_ask_to_update' => _n_noop( 'The following plugin needs to be updated to its latest version to ensure maximum compatibility with this theme: %1$s.', 'The following plugins need to be updated to their latest version to ensure maximum compatibility with this theme: %1$s.' ), // %1$s = plugin name(s) 65 | 'notice_cannot_update' => _n_noop( 'Sorry, but you do not have the correct permissions to update the %s plugin. Contact the administrator of this site for help on getting the plugin updated.', 'Sorry, but you do not have the correct permissions to update the %s plugins. Contact the administrator of this site for help on getting the plugins updated.' ), // %1$s = plugin name(s) 66 | 'install_link' => _n_noop( 'Begin installing plugin', 'Begin installing plugins' ), 67 | 'activate_link' => _n_noop( 'Activate installed plugin', 'Activate installed plugins' ), 68 | 'return' => __( 'Return to Required Plugins Installer', $theme_text_domain ), 69 | 'plugin_activated' => __( 'Plugin activated successfully.', $theme_text_domain ), 70 | 'complete' => __( 'All plugins installed and activated successfully. %s', $theme_text_domain ), // %1$s = dashboard link 71 | 'nag_type' => 'updated' // Determines admin notice type - can only be 'updated' or 'error' 72 | ) 73 | ); 74 | 75 | tgmpa( $plugins, $config ); 76 | 77 | } 78 | -------------------------------------------------------------------------------- /assets/styles/partials/_helpers.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Chrome Frame prompt 3 | ========================================================================== */ 4 | 5 | .chromeframe { 6 | margin: 0.2em 0; 7 | background: #ccc; 8 | color: #000; 9 | padding: 0.2em 0; 10 | } 11 | 12 | 13 | /* ========================================================================== 14 | Helper classes 15 | ========================================================================== */ 16 | 17 | /* 18 | * Image replacement 19 | */ 20 | 21 | .ir { 22 | background-color: transparent; 23 | border: 0; 24 | overflow: hidden; 25 | /* IE 6/7 fallback */ 26 | *text-indent: -9999px; 27 | } 28 | 29 | .ir:before { 30 | content: ""; 31 | display: block; 32 | width: 0; 33 | height: 100%; 34 | } 35 | 36 | /* 37 | * Hide from both screenreaders and browsers: h5bp.com/u 38 | */ 39 | 40 | .hidden { 41 | display: none !important; 42 | visibility: hidden; 43 | } 44 | 45 | /* 46 | * Hide only visually, but have it available for screenreaders: h5bp.com/v 47 | */ 48 | 49 | .visuallyhidden { 50 | border: 0; 51 | clip: rect(0 0 0 0); 52 | height: 1px; 53 | margin: -1px; 54 | overflow: hidden; 55 | padding: 0; 56 | position: absolute; 57 | width: 1px; 58 | } 59 | 60 | /* 61 | * Extends the .visuallyhidden class to allow the element to be focusable 62 | * when navigated to via the keyboard: h5bp.com/p 63 | */ 64 | 65 | .visuallyhidden.focusable:active, 66 | .visuallyhidden.focusable:focus { 67 | clip: auto; 68 | height: auto; 69 | margin: 0; 70 | overflow: visible; 71 | position: static; 72 | width: auto; 73 | } 74 | 75 | /* 76 | * Hide visually and from screenreaders, but maintain layout 77 | */ 78 | 79 | .invisible { 80 | visibility: hidden; 81 | } 82 | 83 | /* 84 | * Clearfix: contain floats 85 | * 86 | * For modern browsers 87 | * 1. The space content is one way to avoid an Opera bug when the 88 | * `contenteditable` attribute is included anywhere else in the document. 89 | * Otherwise it causes space to appear at the top and bottom of elements 90 | * that receive the `clearfix` class. 91 | * 2. The use of `table` rather than `block` is only necessary if using 92 | * `:before` to contain the top-margins of child elements. 93 | */ 94 | 95 | .clearfix:before, 96 | .clearfix:after { 97 | content: " "; /* 1 */ 98 | display: table; /* 2 */ 99 | } 100 | 101 | .clearfix:after { 102 | clear: both; 103 | } 104 | 105 | /* 106 | * For IE 6/7 only 107 | * Include this rule to trigger hasLayout and contain floats. 108 | */ 109 | 110 | .clearfix { 111 | *zoom: 1; 112 | } 113 | 114 | /* Content Boxes 115 | ------------------------------------------------------------ */ 116 | .content-box-blue, 117 | .content-box-gray, 118 | .content-box-green, 119 | .content-box-purple, 120 | .content-box-red, 121 | .content-box-yellow { 122 | margin: 0 0 25px; 123 | overflow: hidden; 124 | padding: 20px; 125 | } 126 | 127 | .content-box-blue { 128 | background-color: #d8ecf7; 129 | border: 1px solid #afcde3; 130 | } 131 | 132 | .content-box-gray { 133 | background-color: #e2e2e2; 134 | border: 1px solid #bdbdbd; 135 | } 136 | 137 | .content-box-green { 138 | background-color: #d9edc2; 139 | border: 1px solid #b2ce96; 140 | } 141 | 142 | .content-box-purple { 143 | background-color: #e2e2f9; 144 | border: 1px solid #bebde9; 145 | } 146 | 147 | .content-box-red { 148 | background-color: #f9dbdb; 149 | border: 1px solid #e9b3b3; 150 | } 151 | 152 | .content-box-yellow { 153 | background-color: #fef5c4; 154 | border: 1px solid #fadf98; 155 | } 156 | 157 | /* Color Buttons 158 | ------------------------------------------------------------ */ 159 | .button-blue, 160 | .button-gray, 161 | .button-green, 162 | .button-purple, 163 | .button-red, 164 | .button-yellow { 165 | color: #fff; 166 | padding: 5px 10px; 167 | } 168 | 169 | .button-blue:hover, 170 | .button-gray:hover, 171 | .button-green:hover, 172 | .button-purple:hover, 173 | .button-red:hover, 174 | .button-yellow:hover { 175 | text-decoration: none; 176 | } 177 | 178 | .button-blue { 179 | background-color: #afcde3; 180 | border: 1px solid #afcde3; 181 | } 182 | 183 | .button-blue:hover { 184 | background-color: #83a2be; 185 | border: 1px solid #83a2be; 186 | } 187 | 188 | .button-gray { 189 | background-color: #bdbdbd; 190 | border: 1px solid #bdbdbd; 191 | } 192 | 193 | .button-gray:hover { 194 | background-color: #919191; 195 | border: 1px solid #919191; 196 | } 197 | 198 | .button-green { 199 | background-color: #b2ce96; 200 | border: 1px solid #b2ce96; 201 | } 202 | 203 | .button-green:hover { 204 | background-color: #86a36e; 205 | border: 1px solid #86a36e; 206 | } 207 | 208 | .button-purple { 209 | background-color: #bebde9; 210 | border: 1px solid #bebde9; 211 | } 212 | 213 | .button-purple:hover { 214 | background-color: #9291c7; 215 | border: 1px solid #9291c7; 216 | } 217 | 218 | .button-red { 219 | background-color: #e9b3b3; 220 | border: 1px solid #e9b3b3; 221 | } 222 | 223 | .button-red:hover { 224 | background-color: #c78787; 225 | border: 1px solid #c78787; 226 | } 227 | 228 | .button-yellow { 229 | background-color: #fadf98; 230 | border: 1px solid #fadf98; 231 | } 232 | 233 | .button-yellow:hover { 234 | background-color: #ecb870; 235 | border: 1px solid #ecb870; 236 | } 237 | -------------------------------------------------------------------------------- /assets/js/responsive-menu.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Accessibility-ready responsive menu. 3 | */ 4 | 5 | ( function ( document, $, undefined ) { 6 | 7 | $( 'body' ).addClass( 'js' ); 8 | 9 | 'use strict'; 10 | 11 | var genesisSample = {}, 12 | mainMenuButtonClass = 'menu-toggle', 13 | subMenuButtonClass = 'sub-menu-toggle'; 14 | 15 | genesisSample.init = function() { 16 | var toggleButtons = { 17 | menu : $( '