From 61ce6fca2d017f3d6a20be4f6e729c47ff56ba89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?benjamin=20melan=C3=A7on?= Date: Sat, 20 Apr 2024 14:40:26 -0400 Subject: [PATCH] Initial commit after running Zurb Foundation subtheme from STARTER script --- .babelrc | 4 + .gitattributes | 2 + .gitignore | 1 + .sass-lint.yml | 338 +++++++ README.txt | 135 +++ config.js | 34 + config.yml | 22 + config/install/README.txt | 8 + config/install/peceful.settings.yml | 2 + css/peceful.css | 0 gulpfile.babel.js | 161 ++++ images/foundation/misc/required.svg | 1 + images/foundation/orbit/bullets.jpg | Bin 0 -> 657 bytes images/foundation/orbit/left-arrow-small.png | Bin 0 -> 3163 bytes images/foundation/orbit/left-arrow.png | Bin 0 -> 522 bytes images/foundation/orbit/loading.gif | Bin 0 -> 2608 bytes images/foundation/orbit/mask-black.png | Bin 0 -> 526 bytes images/foundation/orbit/pause-black.png | Bin 0 -> 288 bytes images/foundation/orbit/right-arrow-small.png | Bin 0 -> 3169 bytes images/foundation/orbit/right-arrow.png | Bin 0 -> 3242 bytes images/foundation/orbit/rotator-black.png | Bin 0 -> 536 bytes images/foundation/orbit/timer-black.png | Bin 0 -> 526 bytes js/foundation_init.js | 17 + js/peceful.js | 17 + logo.svg | 1 + package.json | 53 ++ peceful.info.yml | 45 + peceful.libraries.yml | 14 + peceful.theme | 48 + scss/_settings.scss | 894 ++++++++++++++++++ scss/base/_common.scss | 7 + scss/base/_drupal.scss | 130 +++ scss/base/_elements.scss | 58 ++ scss/base/_init.scss | 0 scss/base/_mixins.scss | 2 + scss/layout/_aside.scss | 1 + scss/layout/_footer.scss | 1 + scss/layout/_header.scss | 1 + scss/layout/_main.scss | 1 + scss/modules/_block.scss | 0 scss/modules/_button.scss | 0 scss/modules/_menu_block.scss | 0 scss/modules/_topbar.scss | 0 scss/modules/_views.scss | 0 scss/peceful.scss | 152 +++ scss/states/_collapse.scss | 0 scss/theme/_sidebar_menu.scss | 0 templates/README.txt | 1 + theme-settings.php | 15 + 49 files changed, 2166 insertions(+) create mode 100644 .babelrc create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .sass-lint.yml create mode 100644 README.txt create mode 100644 config.js create mode 100644 config.yml create mode 100644 config/install/README.txt create mode 100644 config/install/peceful.settings.yml create mode 100644 css/peceful.css create mode 100644 gulpfile.babel.js create mode 100644 images/foundation/misc/required.svg create mode 100644 images/foundation/orbit/bullets.jpg create mode 100644 images/foundation/orbit/left-arrow-small.png create mode 100644 images/foundation/orbit/left-arrow.png create mode 100644 images/foundation/orbit/loading.gif create mode 100644 images/foundation/orbit/mask-black.png create mode 100644 images/foundation/orbit/pause-black.png create mode 100644 images/foundation/orbit/right-arrow-small.png create mode 100644 images/foundation/orbit/right-arrow.png create mode 100644 images/foundation/orbit/rotator-black.png create mode 100644 images/foundation/orbit/timer-black.png create mode 100644 js/foundation_init.js create mode 100644 js/peceful.js create mode 100644 logo.svg create mode 100644 package.json create mode 100644 peceful.info.yml create mode 100644 peceful.libraries.yml create mode 100644 peceful.theme create mode 100644 scss/_settings.scss create mode 100755 scss/base/_common.scss create mode 100755 scss/base/_drupal.scss create mode 100755 scss/base/_elements.scss create mode 100755 scss/base/_init.scss create mode 100755 scss/base/_mixins.scss create mode 100755 scss/layout/_aside.scss create mode 100755 scss/layout/_footer.scss create mode 100755 scss/layout/_header.scss create mode 100755 scss/layout/_main.scss create mode 100644 scss/modules/_block.scss create mode 100644 scss/modules/_button.scss create mode 100644 scss/modules/_menu_block.scss create mode 100644 scss/modules/_topbar.scss create mode 100644 scss/modules/_views.scss create mode 100644 scss/peceful.scss create mode 100644 scss/states/_collapse.scss create mode 100644 scss/theme/_sidebar_menu.scss create mode 100644 templates/README.txt create mode 100644 theme-settings.php diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..fbb903a --- /dev/null +++ b/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": [ "@babel/preset-env" ], + "compact": false +} diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..7909990 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# treat sourcemaps as binary file, since we don't care about their diff. +css/*.css.map binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/.sass-lint.yml b/.sass-lint.yml new file mode 100644 index 0000000..8038557 --- /dev/null +++ b/.sass-lint.yml @@ -0,0 +1,338 @@ +# Note: This is not directly taken from the sass-lint from zurb foundation code: +# https://github.com/zurb/foundation-sites/blob/develop/.scss-lint.yml +# This should align as closely as possible with Drupal code standards: +# https://www.drupal.org/docs/develop/standards/css/csscomb-settings-for-drupal-css-formatting-and-sort-tool + +options: + formatter: stylish +files: + include: 'scss/**/*.scss' +rules: + # Extends + extends-before-mixins: 1 + extends-before-declarations: 1 + placeholder-in-extend: 1 + + # Mixins + mixins-before-declarations: 1 + + # Line Spacing + one-declaration-per-line: 1 + empty-line-between-blocks: 1 + single-line-per-selector: 1 + + # Disallows + no-attribute-selectors: 0 + no-color-hex: 0 + no-color-keywords: 1 + no-color-literals: 1 + no-combinators: 0 + no-css-comments: 0 + no-debug: 1 + no-disallowed-properties: 0 + no-duplicate-properties: 0 + no-empty-rulesets: 1 + no-extends: 0 + no-ids: 0 + no-important: 1 + no-invalid-hex: 1 + no-mergeable-selectors: 1 + no-misspelled-properties: 1 + no-qualifying-elements: 1 + no-trailing-whitespace: 1 + no-trailing-zero: 1 + no-transition-all: 1 + no-universal-selectors: 0 + no-url-domains: 1 + no-url-protocols: 1 + no-vendor-prefixes: 0 + no-warn: 1 + property-units: 0 + + # Nesting + declarations-before-nesting: 1 + force-attribute-nesting: 1 + force-element-nesting: 1 + force-pseudo-nesting: 1 + + # Name Formats + class-name-format: + - 1 + - convention: hyphenatedbem + function-name-format: 1 + id-name-format: 0 + mixin-name-format: 1 + placeholder-name-format: 1 + variable-name-format: 1 + + # Style Guide + attribute-quotes: 1 + bem-depth: 0 + border-zero: 1 + brace-style: 1 + clean-import-paths: 1 + empty-args: 1 + hex-length: 1 + hex-notation: 1 + indentation: 1 + leading-zero: 1 + max-line-length: 0 + max-file-line-count: 0 + nesting-depth: 1 + property-sort-order: + - 1 + - + ignore-custom-properties: true + order: + # Specific - CSS property order + # https://www.drupal.org/docs/develop/standards/css/csscomb-settings-for-drupal-css-formatting-and-sort-tool + - '$charset' + - '$import' + - '$namespace' + - '$extend' + - '$variable' + - '$include' + + # Position + - 'position' + - 'z-index' + - 'top' + - 'right' + - 'bottom' + - 'left' + + # Disposition + - 'display' + + - 'flex' + - 'flex-basis' + - 'flex-direction' + - 'flex-flow' + - 'flex-grow' + - 'flex-shrink' + - 'flex-wrap' + - 'justify-content' + - 'order' + + - 'box-align' + - 'box-flex' + - 'box-orient' + - 'box-pack' + + - 'align-content' + - 'align-items' + - 'align-self' + + - 'columns' + - 'column-gap' + - 'column-fill' + - 'column-rule' + - 'column-span' + - 'column-count' + - 'column-width' + + - 'vertical-align' + - 'float' + - 'clear' + + # Dimension + - 'box-sizing' + + - 'width' + - 'min-width' + - 'max-width' + + - 'height' + - 'min-height' + - 'max-height' + + - 'margin' + - 'margin-top' + - 'margin-right' + - 'margin-bottom' + - 'margin-left' + - 'margin-collapse' + - 'margin-top-collapse' + - 'margin-right-collapse' + - 'margin-bottom-collapse' + - 'margin-left-collapse' + + - 'padding' + - 'padding-top' + - 'padding-right' + - 'padding-bottom' + - 'padding-left' + + + # Global appearance + - 'appearance' + - 'opacity' + - 'filter' + - 'visibility' + + - 'size' + - 'resize' + - 'zoom' + + - 'transform' + - 'transform-box' + - 'transform-origin' + - 'transform-style' + + # Border + - 'outline' + - 'outline-color' + - 'outline-offset' + - 'outline-style' + - 'outline-width' + + - 'border' + - 'border-top' + - 'border-right' + - 'border-bottom' + - 'border-left' + - 'border-width' + - 'border-top-width' + - 'border-right-width' + - 'border-bottom-width' + - 'border-left-width' + + - 'border-style' + - 'border-top-style' + - 'border-right-style' + - 'border-bottom-style' + - 'border-left-style' + + - 'border-radius' + - 'border-top-left-radius' + - 'border-top-right-radius' + - 'border-bottom-right-radius' + - 'border-bottom-left-radius' + - 'border-radius-topleft' + - 'border-radius-topright' + - 'border-radius-bottomright' + - 'border-radius-bottomleft' + + - 'border-color' + - 'border-top-color' + - 'border-right-color' + - 'border-bottom-color' + - 'border-left-color' + + - 'border-collapse' + - 'border-spacing' + + # Background + - 'background' + - 'background-image' + - 'background-color' + - 'background-attachment' + - 'background-clip' + - 'background-origin' + - 'background-position' + - 'background-repeat' + - 'background-size' + + # Shadow + - 'box-shadow' + + # Animation + - 'animation' + - 'animation-delay' + - 'animation-duration' + - 'animation-iteration-count' + - 'animation-name' + - 'animation-play-state' + - 'animation-timing-function' + - 'animation-fill-mode' + + - 'transition' + - 'transition-delay' + - 'transition-duration' + - 'transition-property' + - 'transition-timing-function' + + + # Content + - 'content' + + - 'list-style' + - 'list-style-image' + - 'list-style-position' + - 'list-style-type' + + - 'overflow' + - 'overflow-x' + - 'overflow-y' + - 'clip' + + # Text + - 'font' + - 'font-family' + - 'font-size' + - 'font-smoothing' + - 'osx-font-smoothing' + - 'font-style' + - 'font-variant' + - 'font-weight' + - 'src' + + - 'word-spacing' + - 'letter-spacing' + - 'line-height' + + - 'color' + - 'direction' + - 'text-align' + - 'text-decoration' + - 'text-indent' + - 'text-overflow' + - 'text-rendering' + - 'text-size-adjust' + - 'text-shadow' + - 'text-transform' + + - 'white-space' + - 'word-break' + - 'word-wrap' + - 'hyphens' + - 'quotes' + + # Divers + - 'pointer-events' + - 'cursor' + + - 'backface-visibility' + - 'caption-side' + - 'empty-cells' + - 'table-layout' + - 'user-select' + + - 'interpolation-mode' + - 'marks' + - 'page' + - 'set-link-source' + - 'unicode-bidi' + - 'speak' + pseudo-element: 0 + quotes: + - 1 + - style: double + shorthand-values: 1 + url-quotes: 1 + variable-for-property: 1 + zero-unit: 1 + + # Inner Spacing + space-after-comma: 0 + space-before-colon: 1 + space-after-colon: 1 + space-before-brace: 1 + space-before-bang: 1 + space-after-bang: 1 + space-between-parens: 1 + space-around-operator: 1 + + # Final Items + trailing-semicolon: 1 + final-newline: 1 diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..40d6355 --- /dev/null +++ b/README.txt @@ -0,0 +1,135 @@ +BUILD A CHILD THEME WITH ZURB FOUNDATION +---------------------------------------- + +The base Foundation theme is designed to be easily extended by its sub-themes. +You shouldn't modify any of the CSS or PHP files in the zurb_foundation/ folder; +but instead you should create a sub-theme of zurb_foundation which is located in +a folder outside of the root zurb_foundation/ folder. The examples below assume +zurb_foundation and your sub-theme will be installed in themes/, +but any valid theme directory is acceptable. Read the +sites/default/default.settings.php for more info. + +This theme does not support IE7. If you need it downgrade to Foundation 2 see +http://foundation.zurb.com/docs/faq.php or use the script in the starter +template.php THEMENAME_preprocess_html function. + +*** IMPORTANT NOTE *** +* After adding a new theme in Drupal 8, you'll need to clear the theme +registry's cache, which you can do by clearing all cache in the UI or running +`drush cr` , if you have Drush installed. + +Using Drush +------------------------------- + +**Automatic drush sub-theme setup** + +To create a sub-theme, simply run the Drush command `drush fst sub_theme`, where +"sub_theme" is the desired machine name of your sub-theme. Once a sub-theme is +created, you can enable it at /admin/appearance . + +Then follow step 6 below to generate the necessary Foundation files that are not +included in the repository by default. + +**Drush and Gulp** + +The `gulpfile.babel.js` includes drush commands that can be run every time scss/css +is updated. To use drush, edit the `config.js` file. In the `drush` option: + +1. Set `enabled: false` to `enabled: true` +1. (Optional) Set the `drush_alias` variable. + + +Manual sub-theme setup +---------------------- + + 1. Setup the location for your new sub-theme. + + Copy the peceful folder out of the zurb_foundation/ folder and rename it to + be your new sub-theme. IMPORTANT: The name of your sub-theme must start with + an alphabetic character and can only contain lowercase letters, numbers and + underscores. + + For example, copy the themes/zurb_foundation/peceful folder and + rename it as themes/foo. + + Why? Each theme should reside in its own folder. To make it easier to + upgrade Foundation, sub-themes should reside in a folder separate from the + base theme. + + 2. Setup the basic information for your sub-theme. + + In your new sub-theme folder, rename the peceful.info.yml.txt file to + include the name of your new sub-theme and remove the ".txt" extension. Then + edit the .info file by editing the name and description field. + + For example, rename the foo/peceful.info.yml.txt file to foo/foo.info.yml. + Edit the foo.info.yml file and change "name: Foundation Sub-theme Starter" + to "name: Foo" and "description: Read..." to "description: A sub-theme". + + Why? The .info.yml file describes the basic things about your theme: its + name, description, features, template regions, and libraries. + See the Drupal 8 Theme Guide for more info: https://www.drupal.org/theme-guide/8 + + Then, visit your site's Appearance page at admin/appearance to refresh + Drupal 8's cache of .info file data. + + 3. Edit your sub-theme to use the proper function names. + + First, rename peceful.theme to include the name of your new sub-theme. In + this example we'll assume that it's renamed foo.theme. + + Edit the foo.theme and theme-settings.php files in your sub-theme's + folder; replace ALL occurrences of "peceful" with the name of your + sub-theme. + + For example, edit foo/foo.theme and foo/theme-settings.php and replace + every occurrence of "peceful" with "foo". + + It is recommended to use a text editing application with search and + "replace all" functionality. + + 5. Set your website's default theme. + + Log in as an administrator on your Drupal site, go to the Appearance page at + admin/appearance and click the "Enable and set default" link next to your + new sub-theme. + + 6. This theme uses npm which you will need to install as a prerequisite for + developing your theme, although once in production it is not necessary for + general use. + + Once you have ensured npm is installed, run this command at the root of + your sub theme: + - `npm install` + + Finally, run `gulp` to run the Sass compiler, or 'gulp watch' which + will re-run every time you save a Sass file. Press Ctrl-C to break out of + watching files. + + +Optional steps: + + 7. Modify the markup in Foundation core theme's template files. + + If you decide you want to modify any of the .html.twig template files in the + zurb_foundation folder, copy them to your sub-theme's folder before + making any changes.And then rebuild the theme registry. + + For example, copy zurb_foundation/templates/page.html.twig to + THEMENAME/templates/page.html.twig. + + 8. Optionally override existing Drupal core *.html.twig templates in your + sub-theme. + + 9. Add custom css and js files to your sub-theme + + Rename peceful.libraries.yml to the name of your sub-theme, un-commenting + lines and making name changes as needed. + + You'll also need to edit your info.yml file to include your new library. + There are instructions in the info.yml file to help you do this. + + 9. Further extend your sub-theme. + + Discover further ways to extend your sub-theme by reading + Drupal 8's Theme Guide online at: https://www.drupal.org/theme-guide/8 diff --git a/config.js b/config.js new file mode 100644 index 0000000..3731ddd --- /dev/null +++ b/config.js @@ -0,0 +1,34 @@ +// Override gulp options here rather than in gulpfile.js. + +// Set a drush alias if required to run locally, i.e.: +// '@multisite.local --uri=multisitename' +var drush_alias = ''; + +module.exports = { + // set 'enabled: true' to run drush commands as a part of 'gulp watch'. + drush: { + enabled: false, + alias: { + css_js: 'drush ' + drush_alias + ' cc css-js', + cr: 'drush ' + drush_alias + ' cr' + } + }, + + // Override sass compile options. + /* + scss: { + outputStyle: 'expanded', + lintIgnore: '', + }, + */ + + // If your files are on a network share, you may want to turn on polling for + // Gulp watch. Since polling is less efficient, we disable polling by default. + /* + gulpWatchOptions: { + interval: 1000, + mode: 'poll' + }, + */ + +}; diff --git a/config.yml b/config.yml new file mode 100644 index 0000000..2879a7d --- /dev/null +++ b/config.yml @@ -0,0 +1,22 @@ +# The URL of your server (e.g. http://localhost:49871 or foobar.lndo.site) for browersync +BROWSERSYNC: 'https://foobar.lndo.site' + +# Gulp will reference these paths when it copies files +PATHS: + # Path to built css folder + dist: "css" + # Path to main scss files and settings for subtheme + scss: "scss/*.scss" + # Path to subtheme scss files + componentScss: "scss/**/*.scss" + # Paths to Sass libraries, which can then be loaded with @import + foundationScss: + - "node_modules/foundation-sites/scss" + - "node_modules/motion-ui/src" + # Path to custom JS + js: + "js/*.js" + # Paths to Foundation JavaScript for webpack to bundle modules + foundationJs: + - "node_modules/foundation-sites/dist/js/*.js" + - "node_modules/motion-ui/dist/*.js" diff --git a/config/install/README.txt b/config/install/README.txt new file mode 100644 index 0000000..e9b0737 --- /dev/null +++ b/config/install/README.txt @@ -0,0 +1,8 @@ +DEFAULT INSTALL SETTINGS +---------------------------------- + +Before installing your theme, change the name of peceful.settings.yml to use +your theme name. This will ensure that base css and js are turned off by default on +install. You can add additional settings in that file if you need as well. + +See zurb-foundation/config/install/zurb_foundation.settings.yml for example. diff --git a/config/install/peceful.settings.yml b/config/install/peceful.settings.yml new file mode 100644 index 0000000..7858d7c --- /dev/null +++ b/config/install/peceful.settings.yml @@ -0,0 +1,2 @@ +zurb_foundation_disable_base_css: 1 +zurb_foundation_disable_base_js: 1 diff --git a/css/peceful.css b/css/peceful.css new file mode 100644 index 0000000..e69de29 diff --git a/gulpfile.babel.js b/gulpfile.babel.js new file mode 100644 index 0000000..da609f4 --- /dev/null +++ b/gulpfile.babel.js @@ -0,0 +1,161 @@ +// The Theme build process is based off of the Foundation Zurb +// Template: https://github.com/foundation/foundation-zurb-template +// Update the config.yml file with your peceful URI, and any +// file paths that are different from the default. + +import plugins from 'gulp-load-plugins'; +import yargs from 'yargs'; +import browser from 'browser-sync'; +import gulp from 'gulp'; +import rimraf from 'rimraf'; +import yaml from 'js-yaml'; +import fs from 'fs'; +import webpackStream from 'webpack-stream'; +import webpack2 from 'webpack'; +import named from 'vinyl-named'; +import autoprefixer from 'autoprefixer'; +import imagemin from 'gulp-imagemin'; + +const sass = require('gulp-sass'); +const postcss = require('gulp-postcss'); +const sassLint = require('gulp-sass-lint'); + +// Load all Gulp plugins into one variable. +const $ = plugins(); + +// Check for --production flag. +const PRODUCTION = !!(yargs.argv.production); + +// Load settings from config.yml. +function loadConfig() { + const unsafe = require('js-yaml-js-types').all; + const schema = yaml.DEFAULT_SCHEMA.extend(unsafe); + const ymlFile = fs.readFileSync('config.yml', 'utf8'); + return yaml.load(ymlFile, {schema}); +} + +const { BROWSERSYNC, PATHS } = loadConfig(); + +// Build the compiled js and css by running all of the below tasks. +// Sass must be run later so UnCSS can search for used classes in the others assets. +gulp.task('build', + gulp.series(clean, gulp.parallel(javascript, images), sassBuild, lintSass) +); + +// Build the site, run the server, and watch for file changes. +gulp.task('default', + gulp.series('build', server, watch) +); + +// Delete the compiled js and css. +// This happens every time a build starts. +function clean(done) { + rimraf(PATHS.dist, done); +} + +// Compile Sass into CSS +// In production, the CSS is compressed +function sassBuild() { + + const postCssPlugins = [ + // Autoprefixer + autoprefixer(), + ].filter(Boolean); + + return gulp.src(PATHS.scss) + .pipe($.sourcemaps.init()) + .pipe(sass({ + includePaths: PATHS.foundationScss + }) + .on('error', $.sass.logError)) + .pipe(postcss(postCssPlugins)) + .pipe($.if(PRODUCTION, $.cleanCss({ compatibility: 'ie11' }))) + .pipe($.if(!PRODUCTION, $.sourcemaps.write())) + .pipe(gulp.dest(PATHS.dist)) + .pipe(browser.reload({ stream: true })); +} + +function lintSass() { + return gulp.src(PATHS.componentScss) + .pipe(sassLint({ + config: 'sass-lint.yml' + })) + .pipe(sassLint.format()); +} + +let webpackConfig = { + mode: (PRODUCTION ? 'production' : 'development'), + externals: { + jquery: 'jQuery' + }, + module: { + rules: [ + { + test: /\.js$/, + use: { + loader: 'babel-loader', + options: { + presets: [ "@babel/preset-env" ], + compact: false + } + } + } + ] + }, + devtool: !PRODUCTION && 'source-map' +} + +// Load/copy Foundation JavaScript +// In production, the file is minified +function javascript() { + return gulp.src(PATHS.foundationJs) + .pipe(named()) + .pipe($.sourcemaps.init()) + .pipe(webpackStream(webpackConfig, webpack2)) + .pipe($.if(PRODUCTION, $.terser() + .on('error', e => { console.log(e); }) + )) + .pipe($.if(!PRODUCTION, $.sourcemaps.write())) + .pipe(gulp.dest('js/')); +} + +// If using image optimization, copy them to image folder. +// In production, the images are compressed. +function images() { + return gulp.src('images-source/**/*') + .pipe($.if(PRODUCTION, imagemin([ + imagemin.gifsicle({interlaced: true}), + imagemin.mozjpeg({quality: 85, progressive: true}), + imagemin.optipng({optimizationLevel: 5}), + imagemin.svgo({ + plugins: [ + {removeViewBox: true}, + {cleanupIDs: false} + ] + }) + ]))) + .pipe(gulp.dest('images/')); +} + +// Start a server with BrowserSync to preview the site in +function server(done) { + browser.init({ + proxy: { + target: BROWSERSYNC + }, + }, done); +} + +// Reload the browser with BrowserSync +function reload(done) { + browser.reload(); + done(); +} + + +// Watch for changes to SCSS and JavaScript +function watch() { + gulp.watch(PATHS.componentScss).on('all', sassBuild); + gulp.watch(PATHS.js).on('all', gulp.series(browser.reload)); + gulp.watch('images-source').on('all', gulp.series(images, browser.reload)); +} diff --git a/images/foundation/misc/required.svg b/images/foundation/misc/required.svg new file mode 100644 index 0000000..f7882d6 --- /dev/null +++ b/images/foundation/misc/required.svg @@ -0,0 +1 @@ + diff --git a/images/foundation/orbit/bullets.jpg b/images/foundation/orbit/bullets.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f3c734f0b3d2aecb59957d8abdfbf5bb7a8a0abb GIT binary patch literal 657 zcmex=C5UDGKfoZ!!N9{H%FHOpz$D1XEXer(2tz8! zVL(SB04E0vng~!%fPsODgN2QW8K#zromrTLl}(&Ol2KHQlR-#CRZT)r$x+#rOAw|6 zZsh-43_L)MOoGgU4E7Ai-u`EZxH{$P?jWubKPNGXpv$r0Ofvx1#%#3@^2e&FO7Z2n6nAoQGhDl`a;fAEBQ;WGPZ4Yf{)bh((wvvf!%D10= z+({<8mRBX1-0G}oIclJ^Lm{xmt6WyldTHaz{|o|Fvw}N(KAaZ6+M^+$`e5b z)b=}HCw*CYI6o#8t%9c6Q~>zr;O1eWh4YrsjTwU5x9W{1bV8dgrvF zpF#WQ<)3HpdiQgYp0q%8+QaYeQv}Mlnti_T=}}PK&hocQ4u81Wzx-#({^JFwf2ICs zh}qvTEB4x%?JCJr?`AzH=hEGJ-ecRl>DtqlZCQE#>W_0RQ+A!!h`wR+FJ<+9y$AOH GZvp_rbGwrO literal 0 HcmV?d00001 diff --git a/images/foundation/orbit/left-arrow-small.png b/images/foundation/orbit/left-arrow-small.png new file mode 100644 index 0000000000000000000000000000000000000000..b3ff033150dff204a48a69835b0ffbd08806e426 GIT binary patch literal 3163 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 BlyPu}X zr$a+S!=J=6GFm)nVD4jJmnk^F=-$B02jnUrU<7hkMe2yX&D&o6>i56gtxV^QL)$g=d3cmIBQwu6RG9>&)C(Qp0TR8JY!aGd&a2Vv5a56YZj{<2-cn&YV9dq5Bv@O&0bz<}TRg#Gg5^Sj!0B^`iq%;4$j K=d#Wzp$PyAmD(Es literal 0 HcmV?d00001 diff --git a/images/foundation/orbit/loading.gif b/images/foundation/orbit/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..969f50597a35944c2b347a1a3c1786915b7f85f6 GIT binary patch literal 2608 zcmdVcYfw{H0tfI*ZgP`cW8OC;H#`CcWRTZVr4ii@g+BXC~aqF_uFn~+VkOj zIA6}0-<Uy#$g#LwFPH-F?NB>NFPX~8)J;h5sYDsHJ-b9 z));53u>nk@{PUZTeQrhvktXKgJMXGSZMWVBhv%$1kkD_l7zsd+>O$rGgwH}zXSOD+ zAN{myeC_X�xnl(rspR>h;YP7ve1?`vn|B#q%T0{*kGusPQ1VElyHoH}5X5vB<-4 zV*k0aF$Kbq1hWQT>WSs-H;GTDsDu?Zm;Y`ws1(tN-x~qnR7keG4}Z!#>%Nv!@ukrc zlJ#fmh;+4KkfYo8;F5jrZ+gIsmI&|2S1+AWRQgU&& zDZ8bGE=^IhI3~=){R6}eAm~qhgh71>1H}I{hzZfYESzyIO3=qA;hp1vYab87k4;_f zo#m2l%(%|Y@)}fE?1F~~AMCda(Wlgp z@Q(+er^uB~mFgeQ$1Lt-FS4vpK6$I5+H_?7?&riow^9ZM_giWVi7hdfo_uiLOYRwg zE9J1|-cfgnfA^EbA;{Nl<0`Mr(2@~VJ-rUUXl&UdzE#2SC7Wzm4TUEI+??1mud3LA&3n8` zN@2ch`WbE;BO*?KWpcl|LU#kavC`8+54G}25#J0yfOK-&;vZfY;IFJ9GsvE1L1gox zgCrWYqT`2mM*PJa6?=5OhdYhx+N5Mq_=)MI$;VbLC9R9KRnHT+G1cO2OGZGs2qU0t z9{;AS+An73R7lGc}37fCwI0)tO(QLc2u;GQL3W4qU`f8x40YL%}Ls?_wNeyt^(5 zSH6{THU6lt;uLTgz3(y{7E#XIu>a7PoHjq26hJ@Ry0s*7>yyFka^2f#*emnag8cF} zA#43e=eKo-;U<MDh?J$blat+ZjnxPkve1Z@-Id zH4&pXH31FFx#ZT4xOznXgZHmPc-4L80tr7mF{6&h84qo(AWnZcs!Gtm7AFjYD(VASzJ5a+^sYr<(Y<17 z-8}^Om6n}P@cBzZ$BrE`O{(p2qWFM!V07yFNA&2>)s(ny@R6hb*Ex3Ep*2@i_?%aR z$79cWx1WjLA*=S&+!xO@h*q4)|Kap|aR?7yX}08VcN_gx0V0dTn?Bh=t_|FEY1={X z&DtVo`!{xHfYN8?%hQzLmj$U=g;Zemo+y}>2Ix?Mt8%H`3|X}87_k9yhlCn7>#%`{ zkqZHjy}KcVUda9!V;2&@Jh~<7xB+~}z_^CV-XrBTj>CB*D33WV zW#&P1<1>cYxp~8uI}1~W_`I>X$?Oq>b?(Ntgn{v)ywju7q;;yGjhBJeng^Y?*KOO5R%vm`A9ZIv91KsJ^Y@9bximKooxR5xV4(uf@x55fTM@eL^?|8ej>d(KaA8C e+Qgee&ab)=ys&@6bg#4GHaRP9)6)NFdHf4M2#AmX literal 0 HcmV?d00001 diff --git a/images/foundation/orbit/mask-black.png b/images/foundation/orbit/mask-black.png new file mode 100644 index 0000000000000000000000000000000000000000..02f3fbab28597dfc981bb8a5ba787c6e09630cb8 GIT binary patch literal 526 zcmV+p0`dKcP) zlkLppW%4q~Z1VUn@y)kil9!jfC6rPkaER6*-2-6a2AiL=NTnY-uv&w%rfN|B9CRT_ z9Yhh|;LHIc!4j#CXzY>bh(c|JC2H5PJsB-=#)%&~;wg3=*PK{%5id=XBF7Np&UHlm zO0^LQdIyo4CFhNypooZ}1VoFzf^ho(;m%etmP9QDvzFk_Mlc1Yd}bDX1; zJlW*oj$zI)BFcTo3#vsNoRnABf&y1VoaN^sibG~o9P-YJ)AOVxfZ)Qm+T`d9&7yoc z7ff6Wj$I3mYy>0MYuLW1N*lp1z+Gx8IAM5EoRW1A7rkE0Qt;hHfn7FAm5pG}nJoE6 zPD$Sw*dTlseJmFO*<9*Z0z+}ZeAKIWQs&4BCX>{zvVBP2z zagZWk2Fbon_-}GmSokyuHA_@#o=hGL0~j2ka?zu~3xvVMr@@)V+^5eR%n_@1@55l+ z`14SWw`119h+ktRvPc)9-o+JeLwzjFLwwC_7;Zv(4{mt!r@mj*6XGy_0WId(;lKp# QI{*Lx07*qoM6N<$f;iXnYXATM literal 0 HcmV?d00001 diff --git a/images/foundation/orbit/pause-black.png b/images/foundation/orbit/pause-black.png new file mode 100644 index 0000000000000000000000000000000000000000..5fb087545b00210e8f8198829d2ebd120eebcab0 GIT binary patch literal 288 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 literal 0 HcmV?d00001 diff --git a/images/foundation/orbit/rotator-black.png b/images/foundation/orbit/rotator-black.png new file mode 100644 index 0000000000000000000000000000000000000000..8df4d31af3b7fbc573ac4d75b233de4a2ded79b1 GIT binary patch literal 536 zcmV+z0_XjSP)f4_gm_6NZp+vde& z6y)3b8Qb=zaB2wABs3l0TtYHaO+o-TbqQ6QSvLyT+*$tBTpwt?ifq2dC- zv!r1iS*YO|fUVS&w~{$jU7uxd!;&!Bxyo*v;_x1FQf{Ts@~dT5h8o&*6KTUF)bPtP z%tH-Vmf{RSP#<=g^eLHb z0Y}6QTM;+zxogvQ1z0-ZHhL0>0XSrokDObNx&WLq_FWPaFl7KvVgkZ$SH!c54S2)I zVi6ONy1c3bpDbxCKu) a8t@y-y4ghe)oPjm0000 zlkLppW%4q~Z1VUn@y)kil9!jfC6rPkaER6*-2-6a2AiL=NTnY-uv&w%rfN|B9CRT_ z9Yhh|;LHIc!4j#CXzY>bh(c|JC2H5PJsB-=#)%&~;wg3=*PK{%5id=XBF7Np&UHlm zO0^LQdIyo4CFhNypooZ}1VoFzf^ho(;m%etmP9QDvzFk_Mlc1Yd}bDX1; zJlW*oj$zI)BFcTo3#vsNoRnABf&y1VoaN^sibG~o9P-YJ)AOVxfZ)Qm+T`d9&7yoc z7ff6Wj$I3mYy>0MYuLW1N*lp1z+Gx8IAM5EoRW1A7rkE0Qt;hHfn7FAm5pG}nJoE6 zPD$Sw*dTlseJmFO*<9*Z0z+}ZeAKIWQs&4BCX>{zvVBP2z zagZWk2Fbon_-}GmSokyuHA_@#o=hGL0~j2ka?zu~3xvVMr@@)V+^5eR%n_@1@55l+ z`14SWw`119h+ktRvPc)9-o+JeLwzjFLwwC_7;Zv(4{mt!r@mj*6XGy_0WId(;lKp# QI{*Lx07*qoM6N<$f;iXnYXATM literal 0 HcmV?d00001 diff --git a/js/foundation_init.js b/js/foundation_init.js new file mode 100644 index 0000000..71545ab --- /dev/null +++ b/js/foundation_init.js @@ -0,0 +1,17 @@ +/** + * @file + * Initializes foundation's JavaScript. + * + */ +(function ($, Drupal) { + + /** + * Initializes foundation's JavaScript for new content added to the page. + */ + Drupal.behaviors.foundationInit = { + attach: function (context, settings) { + $(context).foundation(); + } + }; + +})(jQuery, Drupal); diff --git a/js/peceful.js b/js/peceful.js new file mode 100644 index 0000000..5fa57cb --- /dev/null +++ b/js/peceful.js @@ -0,0 +1,17 @@ +/** + * @file + * Placeholder file for custom sub-theme behaviors. + * + */ +(function ($, Drupal) { + + /** + * Use this behavior as a template for custom Javascript. + */ + Drupal.behaviors.exampleBehavior = { + attach: function (context, settings) { + //alert("I'm alive!"); + } + }; + +})(jQuery, Drupal); diff --git a/logo.svg b/logo.svg new file mode 100644 index 0000000..7d7cf7c --- /dev/null +++ b/logo.svg @@ -0,0 +1 @@ + diff --git a/package.json b/package.json new file mode 100644 index 0000000..c58f8ee --- /dev/null +++ b/package.json @@ -0,0 +1,53 @@ +{ + "name": "peceful", + "version": "1.0.0", + "main": "gulpfile.babel.js", + "scripts": { + "start": "gulp", + "watch": "gulp", + "build": "gulp build --production", + "postinstall": "node_modules/.bin/rimraf ./node_modules/**/*.info" + }, + "dependencies": { + "foundation-sites": "6.7.4", + "motion-ui": "~2.0.3", + "what-input": "^5.2.10" + }, + "devDependencies": { + "@babel/core": "^7.15.5", + "@babel/preset-env": "^7.15.6", + "@babel/register": "^7.15.3", + "autoprefixer": "^10.3.4", + "babel-loader": "^8.2.2", + "browser-sync": "^2.27.5", + "fs": "^0.0.1-security", + "gulp": "^4.0.2", + "gulp-babel": "^8.0.0", + "gulp-clean-css": "^4.3.0", + "gulp-cli": "^2.3.0", + "gulp-concat": "^2.6.1", + "gulp-extname": "^0.2.2", + "gulp-if": "^3.0.0", + "gulp-imagemin": "^7.1.0", + "gulp-load-plugins": "^2.0.7", + "gulp-postcss": "^9.0.1", + "gulp-sass": "^4.1.1", + "gulp-sass-lint": "^1.4.0", + "gulp-sourcemaps": "^3.0.0", + "gulp-terser": "^2.0.1", + "js-yaml": "^4.1.0", + "js-yaml-js-types": "^1.0.0", + "node-sass": "^6.0.1", + "postcss": "^8.3.11", + "rimraf": "^3.0.2", + "uncss": "^0.17.3", + "vinyl-named": "^1.1.0", + "webpack": "^5.52.1", + "webpack-stream": "^7.0.0", + "yargs": "^17.1.1" + }, + "private": true, + "browserslist": [ + "last 2 versions" + ] +} diff --git a/peceful.info.yml b/peceful.info.yml new file mode 100644 index 0000000..7e2d949 --- /dev/null +++ b/peceful.info.yml @@ -0,0 +1,45 @@ +name: ZURB Foundation Sub-theme Starter +description: "Custom sub-theme, inherits from the Foundation base theme read framework documentation" +core: 8.x +core_version_requirement: ^8 || ^9 +type: theme +base theme: zurb_foundation + +# Image appears on admin/appearance +# screenshot: images/screenshot.jpg + +# Uncomment these lines and change "peceful" to your theme name if you +# need to add custom CSS or JS +libraries: + - peceful/global + +# Regions are output in the page.html.twig + +regions: + meta_header: 'Meta header' + header: Header + help: Help + page_top: 'Page top' + page_bottom: 'Page bottom' + highlighted: Highlighted + content: Content + sidebar_first: 'Left sidebar' + sidebar_second: 'Right sidebar' + footer_first: 'Footer first column' + footer_middle: 'Footer middle column' + footer_last: 'Footer last column' + left_off_canvas: 'Left off canvas' + right_off_canvas: 'Right off canvas' +regions_hidden: + page_top: 'Page top' + page_bottom: 'Page bottom' + +# Hidden regions +# regions_hidden[]: Page top +# regions_hidden[]: Page bottom + +features: + - slogan + - favicon + - comment_user_picture + - node_user_picture diff --git a/peceful.libraries.yml b/peceful.libraries.yml new file mode 100644 index 0000000..bf49c40 --- /dev/null +++ b/peceful.libraries.yml @@ -0,0 +1,14 @@ +global: + version: VERSION + css: + base: + css/peceful.css: {} + js: + js/peceful.js: { } + js/foundation.min.js: {minified: true} + js/foundation_init.js: {} + js/motion-ui.min.js: {minified: true} + dependencies: + - core/drupal + - core/jquery + - core/once diff --git a/peceful.theme b/peceful.theme new file mode 100644 index 0000000..f99b877 --- /dev/null +++ b/peceful.theme @@ -0,0 +1,48 @@ +