diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..5760be5
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,12 @@
+# http://editorconfig.org
+root = true
+
+[*]
+indent_style = space
+indent_size = 2
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.md]
+trim_trailing_whitespace = false
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..176a458
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+* text=auto
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a5199f6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+node_modules/
+.idea
\ No newline at end of file
diff --git a/.jshintrc b/.jshintrc
new file mode 100644
index 0000000..8a7bbed
--- /dev/null
+++ b/.jshintrc
@@ -0,0 +1,17 @@
+{
+ "node": true,
+ "esnext": true,
+ "bitwise": true,
+ "camelcase": true,
+ "curly": true,
+ "eqeqeq": true,
+ "immed": true,
+ "indent": 2,
+ "latedef": true,
+ "newcap": true,
+ "noarg": true,
+ "quotmark": "single",
+ "undef": true,
+ "unused": true,
+ "strict": true
+}
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..d63d54f
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,6 @@
+language: node_js
+node_js:
+ - '0.10'
+before_install:
+ - currentfolder=${PWD##*/}
+ - if [ "$currentfolder" != 'generator-drupal-gulp' ]; then cd .. && eval "mv $currentfolder generator-drupal-gulp" && cd generator-drupal-gulp; fi
diff --git a/.yo-rc.json b/.yo-rc.json
new file mode 100644
index 0000000..01d1070
--- /dev/null
+++ b/.yo-rc.json
@@ -0,0 +1,3 @@
+{
+ "generator-generator": {}
+}
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..80f014f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,47 @@
+# generator-drupal-gulp [![Build Status](https://secure.travis-ci.org/lasseyls/generator-drupal-gulp.png?branch=master)](https://travis-ci.org/lasseyls/generator-drupal-gulp)
+
+> [Yeoman](http://yeoman.io) generator
+
+
+## Getting Started
+
+### What is Yeoman?
+
+Trick question. It's not a thing. It's this guy:
+
+![](http://i.imgur.com/JHaAlBJ.png)
+
+Basically, he wears a top hat, lives in your computer, and waits for you to tell him what kind of application you wish to create.
+
+Not every new computer comes with a Yeoman pre-installed. He lives in the [npm](https://npmjs.org) package repository. You only have to ask for him once, then he packs up and moves into your hard drive. *Make sure you clean up, he likes new and shiny things.*
+
+```bash
+npm install -g yo
+```
+
+### Yeoman Generators
+
+Yeoman travels light. He didn't pack any generators when he moved in. You can think of a generator like a plug-in. You get to choose what type of application you wish to create, such as a Backbone application or even a Chrome extension.
+
+To install generator-drupal-gulp from npm, run:
+
+```bash
+npm install -g generator-drupal-gulp
+```
+
+Finally, initiate the generator:
+
+```bash
+yo drupal-gulp
+```
+
+### Getting To Know Yeoman
+
+Yeoman has a heart of gold. He's a person with feelings and opinions, but he's very easy to work with. If you think he's too opinionated, he can be easily convinced.
+
+If you'd like to get to know Yeoman better and meet some of his friends, [Grunt](http://gruntjs.com) and [Bower](http://bower.io), check out the complete [Getting Started Guide](https://github.com/yeoman/yeoman/wiki/Getting-Started).
+
+
+## License
+
+MIT
diff --git a/app/index.js b/app/index.js
new file mode 100644
index 0000000..249d813
--- /dev/null
+++ b/app/index.js
@@ -0,0 +1,161 @@
+'use strict';
+var yeoman = require('yeoman-generator');
+var chalk = require('chalk');
+var yosay = require('yosay');
+var path = require('path');
+var _ = require('lodash');
+_.str = require('underscore.string');
+
+_.mixin(_.str.exports());
+
+module.exports = yeoman.generators.Base.extend({
+ initializing: function () {
+ // determine theme name from cwd and form a theme name according to Drupal standards
+ this.dirName = path.basename(process.cwd());
+ this.themeName = _(_.slugify(this.dirName)).underscored();
+
+
+ this.pkg = require('../package.json');
+ },
+
+ prompting: function () {
+ var done = this.async();
+
+ // Have Yeoman greet the user.
+ this.log(yosay(
+ 'Welcome to the superior' + chalk.red('DrupalGulp') + ' generator!'
+ ));
+
+ this.themeDesc = 'nameless theme description';
+ this.themeMachineName = 'nameless';
+
+ var prompts = [
+ {
+ type: 'input',
+ name: 'themeName',
+ message: 'Name your theme:',
+ default: this.themeName // Default to current folder name
+ },
+ {
+ type: 'input',
+ name: 'themeDesc',
+ message: 'Describe your theme:',
+ default: 'No description'
+ },
+ {
+ type: 'input',
+ name: 'browserSyncProxy',
+ message: 'What is the URL of your local drupal dev setup:',
+ default: 'http://localhost:8888'
+ },
+ {
+ type: 'confirm',
+ name: 'TypeScript',
+ message: 'Would you like to enable TypeScript to JavaScript compilation instead of just using JavaScript?',
+ default: true
+ }
+ ];
+
+ this.prompt(prompts, function (props) {
+ this.TypeScript = props.TypeScript;
+ this.themeName = props.themeName;
+ this.themeDesc = props.themeDesc;
+ this.browserSyncProxy = props.browserSyncProxy;
+ this.themeMachineName = _.underscored((_.slugify(this.themeName)));
+ // set destination path according to destination path + theme name
+ // this.destinationRoot(this.themeMachineName);
+
+ done();
+ }.bind(this));
+ },
+
+ writing: {
+ app: function () {
+ this.packageInfo = {
+ "name": this.themeMachineName,
+ "version": "0.0.0"
+ };
+ this.template('_package.json', 'package.json');
+ this.fs.copy(
+ this.templatePath('_bower.json'),
+ this.destinationPath('bower.json')
+ );
+
+ this.template('_theme.info', this.themeMachineName + '.info');
+ this.template('template.php', 'template.php');
+ this.template('gulpfile.js', 'gulpfile.js');
+ this.template('theme-settings.php', 'theme-settings.php');
+ this.fs.copy(
+ this.templatePath('src'),
+ this.destinationPath('src')
+ );
+ this.log("Typescript: "+this.TypeScript);
+ if (!this.TypeScript) {
+ this.fs.copy(
+ this.templatePath('_js'),
+ this.destinationPath('src/scripts/js')
+ );
+ } else {
+ this.fs.copy(
+ this.templatePath('_ts'),
+ this.destinationPath('src/scripts/ts')
+ );
+ }
+ },
+
+ projectfiles: function () {
+ this.fs.copy(
+ this.templatePath('editorconfig'),
+ this.destinationPath('.editorconfig')
+ );
+ this.fs.copy(
+ this.templatePath('jshintrc'),
+ this.destinationPath('.jshintrc')
+ );
+ this.fs.copy(
+ this.templatePath('gitignore'),
+ this.destinationPath('.gitignore')
+ );
+ this.fs.copy(
+ this.templatePath('browserconfig.xml'),
+ this.destinationPath('browserconfig.xml')
+ );
+ this.fs.copy(
+ this.templatePath('crossdomain.xml'),
+ this.destinationPath('crossdomain.xml')
+ );
+ this.fs.copy(
+ this.templatePath('screenshot.png'),
+ this.destinationPath('screenshot.png')
+ );
+ this.directory('templates', 'templates');
+
+ }
+ },
+
+ install: function () {
+ this.installDependencies({
+ skipInstall: this.options['skip-install']
+ });
+ this.on('end', function () {
+ this.spawnCommand('gulp').on('close', function (code) {
+ var succesMessage =
+ '----------------------------------------------------' +
+ chalk.green.bold('\nYay it worked, now try running:\n') +
+ chalk.yellow.bold('gulp watch') +
+ '\nand open the BrowserSync url provided in the' +
+ '\nterminal output, in your preferred browser.'+
+ '\n----------------------------------------------------';
+ if (code === 0) {
+ this.log(succesMessage);
+ } else {
+ this.log(chalk.red.bold('Ooops, something went wrong, please check for specific errors above.'));
+ this.log(chalk.red.bold('If you see errors above like: ENOENT LSTAT NPM, try running:'));
+ this.log(chalk.yellow.bold('npm cache clean'));
+ }
+
+ }.bind(this));
+ }.bind(this));
+ }
+
+});
diff --git a/app/templates/_bower.json b/app/templates/_bower.json
new file mode 100644
index 0000000..2b4eb38
--- /dev/null
+++ b/app/templates/_bower.json
@@ -0,0 +1,6 @@
+{
+ "name": "package",
+ "version": "0.0.0",
+ "dependencies": {}
+}
+
diff --git a/app/templates/_js/main.js b/app/templates/_js/main.js
new file mode 100755
index 0000000..ffee567
--- /dev/null
+++ b/app/templates/_js/main.js
@@ -0,0 +1,5 @@
+(function($) {
+
+ // all Javascript code goes here
+
+})(jQuery);
diff --git a/app/templates/_package.json b/app/templates/_package.json
new file mode 100644
index 0000000..d08c71c
--- /dev/null
+++ b/app/templates/_package.json
@@ -0,0 +1,26 @@
+{
+ "name": "<%= packageInfo.name %>",
+ "version": "<%= packageInfo.version %>",
+ "dependencies": {},
+ "devDependencies": {
+ "autoprefixer-core": "^5.1.4",
+ "browser-sync": "^2.0.0-rc9",
+ "del": "^1.1.1",
+ "event-stream": "^3.2.2",
+ "gulp": "^3.8.10",
+ "gulp-cache": "^0.2.4",
+ "gulp-concat": "^2.4.3",
+ "gulp-filter": "^2.0.1",
+ "gulp-imagemin": "^2.1.0",
+ "gulp-load-plugins": "^0.8.0",
+ "gulp-postcss": "^4.0.3",
+ "gulp-sass": "^1.3.2",
+ "gulp-shell": "^0.2.11",
+ "gulp-size": "^1.2.0",<% if (TypeScript) { %>
+ "gulp-typescript": "^2.4.2",<% } %>
+ "gulp-sourcemaps": "^1.3.0"
+ },
+ "scripts": {
+ "postinstall": "find node_modules/ -name '*.info' -type f -delete"
+ }
+}
diff --git a/app/templates/_theme.info b/app/templates/_theme.info
new file mode 100644
index 0000000..5e11e69
--- /dev/null
+++ b/app/templates/_theme.info
@@ -0,0 +1,60 @@
+name = <%= themeName %>
+description = <%= themeDesc %>
+version = 1.0
+core = 7.x
+
+; ========================================
+; Stylesheets
+; ========================================
+
+stylesheets[all][0] = build/css/style.css
+
+; ========================================
+; Scripts
+; ========================================
+
+scripts[0] = build/scripts/vendor/modernizr-2.8.3.min.js
+scripts[1] = build/scripts/main.js
+
+; ========================================
+; Regions
+; ========================================
+
+regions[header] = Header
+regions[help] = Help
+regions[page_top] = Page top
+regions[page_bottom] = Page bottom
+regions[highlighted] = Highlighted
+regions[featured] = Featured
+regions[content] = Content
+regions[sidebar_first] = Sidebar first
+regions[sidebar_second] = Sidebar second
+regions[footer] = Footer
+
+; ========================================
+; Settings
+; ========================================
+
+settings[toggle_logo] = 1
+settings[toggle_name] = 1
+settings[toggle_slogan] = 1
+settings[toggle_node_user_picture] = 1
+settings[toggle_comment_user_picture] = 1
+settings[toggle_comment_user_verification] = 1
+settings[toggle_favicon] = 0
+settings[toggle_main_menu] = 1
+settings[toggle_secondary_menu] = 1
+settings[default_logo] = 1
+settings[logo_path] =
+settings[logo_upload] =
+settings[default_favicon] = 1
+settings[favicon_path] =
+settings[favicon_upload] =
+settings[magic_css_excludes] = :core
+settings[magic_footer_js] = 0
+settings[magic_library_head] = 0
+settings[magic_experimental_js] = 0
+settings[magic_js_excludes] =
+settings[magic_rebuild_registry] = 1
+settings[magic_viewport_indicator] = 0
+settings[magic_modernizr_debug] =
diff --git a/app/templates/_ts/main.ts b/app/templates/_ts/main.ts
new file mode 100644
index 0000000..d1167fe
--- /dev/null
+++ b/app/templates/_ts/main.ts
@@ -0,0 +1,4 @@
+/**
+ * Created by Lasse on 09/02/15.
+ */
+console.log("hello from main.ts");
\ No newline at end of file
diff --git a/app/templates/browserconfig.xml b/app/templates/browserconfig.xml
new file mode 100755
index 0000000..30aa240
--- /dev/null
+++ b/app/templates/browserconfig.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/templates/crossdomain.xml b/app/templates/crossdomain.xml
new file mode 100755
index 0000000..818b822
--- /dev/null
+++ b/app/templates/crossdomain.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/templates/editorconfig b/app/templates/editorconfig
new file mode 100644
index 0000000..88c825d
--- /dev/null
+++ b/app/templates/editorconfig
@@ -0,0 +1,13 @@
+# editorconfig.org
+
+root = true
+
+[*]
+charset = utf-8
+indent_size = 4
+indent_style = space
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.md]
+trim_trailing_whitespace = false
\ No newline at end of file
diff --git a/app/templates/gitignore b/app/templates/gitignore
new file mode 100644
index 0000000..b6da8e3
--- /dev/null
+++ b/app/templates/gitignore
@@ -0,0 +1,5 @@
+.DS_Store
+node_modules
+.sass-cache
+.idea
+.tmp
\ No newline at end of file
diff --git a/app/templates/gulpfile.js b/app/templates/gulpfile.js
new file mode 100644
index 0000000..c7a326d
--- /dev/null
+++ b/app/templates/gulpfile.js
@@ -0,0 +1,135 @@
+/*global -$ */
+'use strict';
+// generated on <%= (new Date).toISOString().split('T')[0] %> using <%= pkg.name %> <%= pkg.version %>
+var gulp = require('gulp');
+var $ = require('gulp-load-plugins')();
+var browserSync = require('browser-sync');
+var reload = browserSync.reload;
+<% if (TypeScript) { %>
+var eventStream = require('event-stream');
+
+var tsProject = $.typescript.createProject({
+ declarationFiles: false,
+ noExternalResolve: true,
+ sortOutput: true
+});
+<% } %>
+gulp.task('scripts', function() {<% if (TypeScript) { %>
+ var tsResult = gulp.src('src/scripts/ts/**/*.ts')
+ .pipe($.sourcemaps.init()) // This means sourcemaps will be generated
+ .pipe($.typescript(tsProject));
+
+ return eventStream.merge( // Merge the two output streams, so this task is finished when the IO of both operations are done.
+ tsResult.dts.pipe(gulp.dest('src/scripts/ts/definitions')),
+ tsResult.js.pipe(
+ $.concat('main.js')) // You can use other plugins that also support gulp-sourcemaps
+ .pipe($.sourcemaps.write()) // Now the sourcemaps are added to the .js file
+ .pipe(gulp.dest('build/scripts')
+ )
+ );<% } else { %>
+ return gulp.src([
+ 'src/scripts/js/**/*'
+ ], {
+ base: 'src/scripts'
+ }).pipe(gulp.dest('build/scripts'));<% } %>
+});
+
+// styles task, will run when any SCSS files change & BrowserSync
+// will auto-update browsers
+gulp.task('styles', function () {
+ return gulp.src('src/scss/**/*.scss')
+ .pipe($.sourcemaps.init())
+ .pipe($.sass({
+ outputStyle: 'nested', // libsass doesn't support expanded yet
+ precision: 10,
+ includePaths: ['.'],
+ onError: function (err) { notify().write(err); console.error.bind(console, 'Sass error:'+err);}
+ }))
+ .pipe($.postcss([
+ require('autoprefixer-core')({browsers: ['last 2 version']})
+ ]))
+ .pipe($.sourcemaps.write())
+ .pipe(gulp.dest('build/css'))
+ .pipe($.filter('scss**/*.css'))
+ .pipe(browserSync.reload({stream:true}));
+});
+
+gulp.task('jshint', function () {
+ return gulp.src('build/scripts/**/*.js')
+ .pipe(reload({stream: true, once: true}))
+ .pipe($.jshint())
+ .pipe($.jshint.reporter('jshint-stylish'))
+ .pipe($.if(!browserSync.active, $.jshint.reporter('fail')));
+});
+
+
+gulp.task('images', function () {
+ return gulp.src('src/images/*')
+ .pipe($.cache($.imagemin({
+ progressive: true,
+ interlaced: true,
+ svgoPlugins: [{removeViewBox: false}]
+ })))
+ .pipe(gulp.dest('build/images'));
+});
+
+gulp.task('fonts', function () {
+ return gulp.src('src/fonts/**/*')
+ .pipe($.filter('**/*.{eot,svg,ttf,woff}'))
+ .pipe(gulp.dest('build/fonts'));
+});
+
+gulp.task('extras', function () {
+ return gulp.src([
+ 'src/*.*',
+ 'src/scripts/vendor/**/*'
+ ], {
+ base: 'src/',
+ dot: true
+ }).pipe(gulp.dest('build'));
+});
+
+gulp.task('bs-reload', function (){
+ browserSync.reload();
+});
+
+gulp.task('browser-sync', function(){
+ //watch files
+ var files = [
+ 'build/css/**/*.css',
+ 'build/scripts/**/*js',
+ 'build/images/**/*',
+ 'templates/*.tpl.php'
+ ];
+
+ return browserSync.init(files, {
+ proxy: "<%= browserSyncProxy %>", //change this to whatever your local development URL is.
+ open: false,
+ injectChanges: true
+ });
+});
+
+gulp.task('watch', ['images', 'fonts', 'styles', 'scripts', 'extras', 'browser-sync'],function () {
+
+ gulp.watch('src/scripts/ts/**/*.ts', ['scripts']);
+ gulp.watch('src/scss/**/*.scss', ['styles']);
+ gulp.watch('images/**/*', ['images']);
+ gulp.watch('src/scripts/vendor/**/*', ['extras']);
+ gulp.watch('src/fonts/*', ['fonts']);
+});
+
+gulp.task('clearimages', function (done) {
+ return $.cache.clearAll(done);
+});
+
+gulp.task('cleanFonts', require('del').bind(null, ['build/fonts']));
+
+gulp.task('clean', require('del').bind(null, ['.tmp', 'build']));
+
+gulp.task('build', ['images', 'fonts', 'styles', 'scripts', 'extras'], function () {
+ return gulp.src('build/**/*').pipe($.size({title: 'build', gzip: true}));
+});
+
+gulp.task('default', ['clearimages', 'clean'], function () {
+ gulp.start('build');
+});
diff --git a/app/templates/jshintrc b/app/templates/jshintrc
new file mode 100644
index 0000000..7ad16b0
--- /dev/null
+++ b/app/templates/jshintrc
@@ -0,0 +1,23 @@
+{
+ "bitwise": true,
+ "eqeqeq": true,
+ "eqnull": true,
+ "immed": true,
+ "newcap": true,
+ "esnext": true,
+ "camelcase": true,
+ "latedef": true,
+ "noarg": true,
+ "node": true,
+ "undef": true,
+ "browser": true,
+ "trailing": true,
+ "jquery": true,
+ "curly": true,
+ "supernew": true,
+ "globals": {
+ "Backbone": true,
+ "_": true,
+ "jQuery": true
+ }
+}
diff --git a/app/templates/screenshot.png b/app/templates/screenshot.png
new file mode 100755
index 0000000..d8b2d24
Binary files /dev/null and b/app/templates/screenshot.png differ
diff --git a/app/templates/src/images/apple-touch-icon.png b/app/templates/src/images/apple-touch-icon.png
new file mode 100644
index 0000000..bee3e36
Binary files /dev/null and b/app/templates/src/images/apple-touch-icon.png differ
diff --git a/app/templates/src/images/favicon.ico b/app/templates/src/images/favicon.ico
new file mode 100755
index 0000000..be74abd
Binary files /dev/null and b/app/templates/src/images/favicon.ico differ
diff --git a/app/templates/src/images/icons/blockquote.png b/app/templates/src/images/icons/blockquote.png
new file mode 100644
index 0000000..97ac32c
Binary files /dev/null and b/app/templates/src/images/icons/blockquote.png differ
diff --git a/app/templates/src/images/tile-wide.png b/app/templates/src/images/tile-wide.png
new file mode 100755
index 0000000..ccd739c
Binary files /dev/null and b/app/templates/src/images/tile-wide.png differ
diff --git a/app/templates/src/images/tile.png b/app/templates/src/images/tile.png
new file mode 100755
index 0000000..f820f61
Binary files /dev/null and b/app/templates/src/images/tile.png differ
diff --git a/app/templates/src/scripts/vendor/modernizr-2.8.3.min.js b/app/templates/src/scripts/vendor/modernizr-2.8.3.min.js
new file mode 100644
index 0000000..fcc1be4
--- /dev/null
+++ b/app/templates/src/scripts/vendor/modernizr-2.8.3.min.js
@@ -0,0 +1,957 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ html5-boilerplate/modernizr-2.8.3.min.js at master ยท h5bp/html5-boilerplate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to content
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Something went wrong with that request. Please try again.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/templates/src/scss/partials/_blocks.scss b/app/templates/src/scss/partials/_blocks.scss
new file mode 100644
index 0000000..0c943ea
--- /dev/null
+++ b/app/templates/src/scss/partials/_blocks.scss
@@ -0,0 +1,3 @@
+/* BLOCKS */
+
+.block { }
diff --git a/app/templates/src/scss/partials/_forms.scss b/app/templates/src/scss/partials/_forms.scss
new file mode 100644
index 0000000..528b150
--- /dev/null
+++ b/app/templates/src/scss/partials/_forms.scss
@@ -0,0 +1,3 @@
+/* FORMS */
+
+form { }
diff --git a/app/templates/src/scss/partials/_global.scss b/app/templates/src/scss/partials/_global.scss
new file mode 100644
index 0000000..cb03e50
--- /dev/null
+++ b/app/templates/src/scss/partials/_global.scss
@@ -0,0 +1,134 @@
+/*! HTML5 Boilerplate v4.3.0 | MIT License | http://h5bp.com/ */
+
+/*
+ * What follows is the result of much research on cross-browser styling.
+ * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
+ * Kroc Camen, and the H5BP dev community and team.
+ */
+
+/* ==========================================================================
+ Base styles: opinionated defaults
+ ========================================================================== */
+
+html {
+ color: #222;
+ font-size: 1em;
+ line-height: 1.4;
+}
+
+/*
+ * Remove text-shadow in selection highlight: h5bp.com/i
+ * These selection rule sets have to be separate.
+ * Customize the background color to match your design.
+ */
+
+::-moz-selection {
+ background: #b3d4fc;
+ text-shadow: none;
+}
+
+::selection {
+ background: #b3d4fc;
+ text-shadow: none;
+}
+
+/*
+ * A better looking default horizontal rule
+ */
+
+hr {
+ display: block;
+ height: 1px;
+ border: 0;
+ border-top: 1px solid #ccc;
+ margin: 1em 0;
+ padding: 0;
+}
+
+/*
+ * Remove the gap between images, videos, audio and canvas and the bottom of
+ * their containers: h5bp.com/i/440
+ */
+
+audio,
+canvas,
+img,
+svg,
+video {
+ vertical-align: middle;
+}
+
+/*
+ * Remove default fieldset styles.
+ */
+
+fieldset {
+ border: 0;
+ margin: 0;
+ padding: 0;
+}
+
+/*
+ * Allow only vertical resizing of textareas.
+ */
+
+textarea {
+ resize: vertical;
+}
+
+/* ==========================================================================
+ Browse Happy prompt
+ ========================================================================== */
+
+.browsehappy {
+ margin: 0.2em 0;
+ background: #ccc;
+ color: #000;
+ padding: 0.2em 0;
+}
+
+/* ==========================================================================
+ Author's custom styles
+ ========================================================================== */
+
+
+
+/* Alignment */
+.alignleft {
+ display: inline;
+ float: left;
+ margin-right: 1.5em;
+}
+.alignright {
+ display: inline;
+ float: right;
+ margin-left: 1.5em;
+}
+.aligncenter {
+ clear: both;
+ display: block;
+ margin: 0 auto;
+}
+
+/* Text meant only for screen readers */
+.assistive-text {
+ clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
+ clip: rect(1px, 1px, 1px, 1px);
+ position: absolute !important;
+}
+
+
+/*
+ * Box Sizing
+ *
+ * Set that shit to border-box, yo. And fix those pesky pseudo elements
+ */
+
+/* ==========================================================================
+ Border-box all the things!
+ ========================================================================== */
+*,
+:before,
+:after {
+ box-sizing: border-box;
+}
diff --git a/app/templates/src/scss/partials/_grid.scss b/app/templates/src/scss/partials/_grid.scss
new file mode 100644
index 0000000..06688c4
--- /dev/null
+++ b/app/templates/src/scss/partials/_grid.scss
@@ -0,0 +1,51 @@
+$pad: 20px;
+
+.grid {
+ margin: 0 0 $pad 0;
+ @include microclearfix();
+}
+
+[class*='col-'] {
+ float: left;
+ padding-right: $pad;
+ .grid &:last-of-type {
+ padding-right: 0;
+ }
+}
+
+.col-1-2 {
+ width: 50%;
+}
+
+.col-1-3 {
+ width: 33.33%;
+}
+.col-2-3 {
+ width: 66.66%;
+}
+
+.col-1-4 {
+ width: 25%;
+}
+.col-3-4 {
+ width: 75%;
+}
+
+.col-1-8 {
+ width: 12.5%;
+}
+.col-7-8 {
+ width: 87.5%;
+}
+
+.module {
+ padding: $pad;
+}
+
+/* Opt-in outside padding */
+.grid-pad {
+ padding: $pad 0 $pad $pad;
+ [class*='col-']:last-of-type {
+ padding-right: $pad;
+ }
+}
diff --git a/app/templates/src/scss/partials/_helpers.scss b/app/templates/src/scss/partials/_helpers.scss
new file mode 100644
index 0000000..0efdc17
--- /dev/null
+++ b/app/templates/src/scss/partials/_helpers.scss
@@ -0,0 +1,100 @@
+/* ==========================================================================
+ Helper classes
+ ========================================================================== */
+
+/*
+ * Image replacement
+ */
+
+.ir {
+ background-color: transparent;
+ border: 0;
+ overflow: hidden;
+ /* IE 6/7 fallback */
+ *text-indent: -9999px;
+}
+
+.ir:before {
+ content: "";
+ display: block;
+ width: 0;
+ height: 150%;
+}
+
+/*
+ * Hide from both screenreaders and browsers: h5bp.com/u
+ */
+
+.hidden {
+ display: none !important;
+ visibility: hidden;
+}
+
+/*
+ * Hide only visually, but have it available for screenreaders: h5bp.com/v
+ */
+
+.visuallyhidden {
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+}
+
+/*
+ * Extends the .visuallyhidden class to allow the element to be focusable
+ * when navigated to via the keyboard: h5bp.com/p
+ */
+
+.visuallyhidden.focusable:active,
+.visuallyhidden.focusable:focus {
+ clip: auto;
+ height: auto;
+ margin: 0;
+ overflow: visible;
+ position: static;
+ width: auto;
+}
+
+/*
+ * Hide visually and from screenreaders, but maintain layout
+ */
+
+.invisible {
+ visibility: hidden;
+}
+
+/*
+ * Clearfix: contain floats
+ *
+ * For modern browsers
+ * 1. The space content is one way to avoid an Opera bug when the
+ * `contenteditable` attribute is included anywhere else in the document.
+ * Otherwise it causes space to appear at the top and bottom of elements
+ * that receive the `clearfix` class.
+ * 2. The use of `table` rather than `block` is only necessary if using
+ * `:before` to contain the top-margins of child elements.
+ */
+
+.clearfix:before,
+.clearfix:after {
+ content: " "; /* 1 */
+ display: table; /* 2 */
+}
+
+.clearfix:after {
+ clear: both;
+}
+
+/*
+ * For IE 6/7 only
+ * Include this rule to trigger hasLayout and contain floats.
+ */
+
+.clearfix {
+ *zoom: 1;
+}
diff --git a/app/templates/src/scss/partials/_mixins.scss b/app/templates/src/scss/partials/_mixins.scss
new file mode 100644
index 0000000..5937865
--- /dev/null
+++ b/app/templates/src/scss/partials/_mixins.scss
@@ -0,0 +1,81 @@
+/*
+ * Mixin for easy media queries
+ * @include bp(tablet) { SCSS here };
+*/
+@mixin bp($point) {
+ @if $point == biggie {
+ @media (max-width : 1600px) { @content; }
+ }
+ @if $point == tablet {
+ @media (max-width : 1024px) { @content; }
+ }
+ @else if $point == phone {
+ @media (max-width : 768px) { @content; }
+ }
+}
+
+/*
+ * Mixin for micro clearfix
+ * @include microclearfix;
+*/
+@mixin microclearfix {
+ &:before, &:after { content: ""; display: table; }
+ &:after { clear: both; }
+ *zoom: 1;
+}
+
+/*
+ * Mixin for basic CSS triangles
+ * @include triangle(up, #000, 50px)
+*/
+@mixin triangle($direction:up, $color:#000, $size:100px) {
+ @if($direction == up) {
+ border-color: transparent transparent $color;
+ border-style: solid;
+ border-width: 0 $size $size;
+ height: 0;
+ width: 0;
+ }
+ @if($direction == down) {
+ border-color: $color transparent transparent transparent;
+ border-style: solid;
+ border-width: $size;
+ height:0;
+ width:0;
+ }
+ @if($direction == left) {
+ border-color: transparent $color transparent transparent;
+ border-style: solid;
+ border-width: $size $size $size 0;
+ height: 0;
+ width: 0;
+ }
+ @if($direction == right) {
+ border-color: transparent transparent transparent $color;
+ border-style: solid;
+ border-width: $size 0 $size $size;
+ height:0;
+ width:0;
+ }
+}
+
+/*
+ * @font-face mixin
+ * Bulletproof font-face via Font Squirrel
+ * @include fontface('family', 'assets/fonts/', 'myfontname');
+ */
+
+@mixin fontface($font-family, $font-url, $font-name) {
+ @font-face {
+ font: {
+ family: $font-family;
+ style: normal;
+ weight: normal;
+ }
+ src: url($font-url + '/' + $font-name + '.eot');
+ src: url($font-url + '/' + $font-name + '.eot#iefix') format('embedded-opentype'),
+ url($font-url + '/' + $font-name + '.woff') format('woff'),
+ url($font-url + '/' + $font-name + '.ttf') format('truetype'),
+ url($font-url + '/' + $font-name + '.svg#' + $font-name) format('svg');
+ }
+}
diff --git a/app/templates/src/scss/partials/_normalize.scss b/app/templates/src/scss/partials/_normalize.scss
new file mode 100644
index 0000000..81c6f31
--- /dev/null
+++ b/app/templates/src/scss/partials/_normalize.scss
@@ -0,0 +1,427 @@
+/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
+
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ * user zoom.
+ */
+
+html {
+ font-family: sans-serif; /* 1 */
+ -ms-text-size-adjust: 100%; /* 2 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Remove default margin.
+ */
+
+body {
+ margin: 0;
+}
+
+/* HTML5 display definitions
+ ========================================================================== */
+
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11
+ * and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
+
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
+
+audio,
+canvas,
+progress,
+video {
+ display: inline-block; /* 1 */
+ vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
+ */
+
+[hidden],
+template {
+ display: none;
+}
+
+/* Links
+ ========================================================================== */
+
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+
+b,
+strong {
+ font-weight: bold;
+}
+
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+mark {
+ background: #ff0;
+ color: #000;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+
+img {
+ border: 0;
+}
+
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+
+figure {
+ margin: 1em 40px;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+
+hr {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+}
+
+/**
+ * Contain overflow in all browsers.
+ */
+
+pre {
+ overflow: auto;
+}
+
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+
+/**
+ * 1. Correct color not being inherited.
+ * Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit; /* 1 */
+ font: inherit; /* 2 */
+ margin: 0; /* 3 */
+}
+
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+
+button {
+ overflow: visible;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+
+button,
+select {
+ text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ * and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ * `input` and others.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button; /* 2 */
+ cursor: pointer; /* 3 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+input {
+ line-height: normal;
+}
+
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
+ * (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box; /* 2 */
+ box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+
+legend {
+ border: 0; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+
+optgroup {
+ font-weight: bold;
+}
+
+/* Tables
+ ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+td,
+th {
+ padding: 0;
+}
\ No newline at end of file
diff --git a/app/templates/src/scss/partials/_page.scss b/app/templates/src/scss/partials/_page.scss
new file mode 100644
index 0000000..448f50b
--- /dev/null
+++ b/app/templates/src/scss/partials/_page.scss
@@ -0,0 +1,65 @@
+/* GENERAL */
+body { }
+
+a,
+a:visited {
+ color: $linkColor;
+}
+a:hover {
+ color: $linkHoverColor;
+}
+
+::-moz-selection {
+ background: $selectionColor;
+ text-shadow: none;
+}
+
+::selection {
+ background: $selectionColor;
+ text-shadow: none;
+}
+
+/* HEADINGS / TYPOGRAPHY */
+h1,
+h2,
+h3,
+h4 {
+ font-weight: normal;
+ margin: 0 0 10px 0;
+}
+h1 { }
+h2 { }
+h3 { }
+h4 { }
+
+/* STRUCTURE */
+#container {
+ max-width: $pageWidth;
+ margin: 20px auto;
+}
+
+/* HEADER */
+header { }
+#logo { }
+
+/* NAV */
+nav { }
+
+/* MAIN */
+#main { }
+
+/* SIDEBAR */
+aside { }
+
+/* FOOTER */
+footer { }
+
+/****************************************
+PAGE TEMPLATES
+*****************************************/
+
+/* Home Page */
+.home { }
+
+/* Blog Page */
+.blog { }
diff --git a/app/templates/src/scss/partials/_posts.scss b/app/templates/src/scss/partials/_posts.scss
new file mode 100644
index 0000000..fb2e986
--- /dev/null
+++ b/app/templates/src/scss/partials/_posts.scss
@@ -0,0 +1,73 @@
+/* POSTS */
+
+article {
+ clear: both;
+ margin: 0 0 35px 0;
+}
+
+blockquote {
+ background: url(assets/images/icons/blockquote.png) no-repeat 0 12px;
+ padding: 10px 20px 10px 50px;
+ font-style: italic;
+}
+blockquote p { }
+
+.post { }
+
+.alignleft {
+ float: left;
+ width: auto;
+ margin: 5px 15px 15px 0;
+}
+.alignright {
+ float: right;
+ width: auto;
+ margin: 5px 0 15px 15px;
+}
+.aligncenter {
+ text-align: center;
+ margin-bottom: 5px;
+}
+img.aligncenter {
+ margin-left: auto;
+ margin-right: auto;
+ display: block;
+}
+
+pre { }
+code, tt { }
+
+.meta { }
+.postmetadata { }
+
+/* SHARING */
+
+.sharing h4 {
+ margin-bottom: 0;
+ padding-bottom: 0;
+}
+.sharing ul {
+ list-style: none;
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-top: 5px;
+ padding-bottom: 0;
+}
+.sharing li {
+ float: left;
+}
+.sharing li:first-child {
+ padding-left: 0;
+}
+.sharing .share-twitter {
+ padding-top: 1px;
+}
+.sharing .share-facebook {
+ padding-top: 1px;
+}
+.sharing .share-googleplus {
+ margin-left: 30px;
+}
+
+/* POST NAVIGATION */
+
diff --git a/app/templates/src/scss/partials/_print.scss b/app/templates/src/scss/partials/_print.scss
new file mode 100644
index 0000000..e926bf7
--- /dev/null
+++ b/app/templates/src/scss/partials/_print.scss
@@ -0,0 +1,67 @@
+/* ==========================================================================
+ Print styles.
+ Inlined to avoid required HTTP connection: h5bp.com/r
+ ========================================================================== */
+
+@media print {
+ * {
+ background: transparent !important;
+ color: #000 !important; /* Black prints faster: h5bp.com/s */
+ box-shadow: none !important;
+ text-shadow: none !important;
+ }
+
+ a,
+ a:visited {
+ text-decoration: underline;
+ }
+
+ a[href]:after {
+ content: " (" attr(href) ")";
+ }
+
+ abbr[title]:after {
+ content: " (" attr(title) ")";
+ }
+
+ /*
+ * Don't show links for images, or javascript/internal links
+ */
+
+ .ir a:after,
+ a[href^="javascript:"]:after,
+ a[href^="#"]:after {
+ content: "";
+ }
+
+ pre,
+ blockquote {
+ border: 1px solid #999;
+ page-break-inside: avoid;
+ }
+
+ thead {
+ display: table-header-group; /* h5bp.com/t */
+ }
+
+ tr,
+ img {
+ page-break-inside: avoid;
+ }
+
+ img {
+ max-width: 100% !important;
+ }
+
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3;
+ }
+
+ h2,
+ h3 {
+ page-break-after: avoid;
+ }
+}
\ No newline at end of file
diff --git a/app/templates/src/scss/partials/_search.scss b/app/templates/src/scss/partials/_search.scss
new file mode 100644
index 0000000..44a0692
--- /dev/null
+++ b/app/templates/src/scss/partials/_search.scss
@@ -0,0 +1,7 @@
+/* SEARCH */
+
+#searchform label { }
+#searchform div { }
+#searchform div input { }
+#searchform div input#s { }
+#searchform div input#searchsubmit { }
\ No newline at end of file
diff --git a/app/templates/src/scss/partials/_variables.scss b/app/templates/src/scss/partials/_variables.scss
new file mode 100644
index 0000000..d3acc29
--- /dev/null
+++ b/app/templates/src/scss/partials/_variables.scss
@@ -0,0 +1,14 @@
+// Font Face
+// @include fontface('FONT_NAME', 'assets/fonts/', 'FONT_FAMILY');
+
+// Structure
+$pageWidth: 1000px;
+
+// Text Selection
+$selectionColor: orange;
+
+// Links
+$linkColor: blue;
+$linkHoverColor: blue;
+
+// Other
diff --git a/app/templates/src/scss/style.scss b/app/templates/src/scss/style.scss
new file mode 100755
index 0000000..00daf0a
--- /dev/null
+++ b/app/templates/src/scss/style.scss
@@ -0,0 +1,33 @@
+/*
+Theme Name: Drupal 7 Gulp Starter Theme
+Theme URI: https://github.com/lasseyls/Drupal-7-Starter-Theme
+Description: Drupal 7 Gulp Starter Theme for use as a starting template for building custom themes.
+Author: Lasse Moos
+Author URI: http://www.yourlocalstudio.dk
+License: GNU General Public License v2.0
+License URI: http://www.gnu.org/licenses/gpl-2.0.html
+Version: 1.0
+*/
+
+// Reset, Variables, Mixins, Etc
+// DO NOT EDIT ORDER OF FILES
+@import "partials/mixins";
+@import "partials/variables";
+@import "partials/normalize";
+
+// Globals
+@import "partials/global";
+
+// The grid
+@import "partials/grid";
+
+// Page and Site Styles
+@import "partials/page";
+@import "partials/posts";
+@import "partials/blocks";
+@import "partials/search";
+@import "partials/forms";
+
+// Helper Classes, Print, Etc
+@import "partials/helpers";
+@import "partials/print";
diff --git a/app/templates/template.php b/app/templates/template.php
new file mode 100644
index 0000000..613a329
--- /dev/null
+++ b/app/templates/template.php
@@ -0,0 +1,28 @@
+ tag instead of drupals default @import
+ * - because browserSync doesn't support @import.
+ * Code from: https://www.drupal.org/project/link_css
+ */
+
+function <%= themeMachineName %>_css_alter(&$css) {
+ $count = 0;
+
+ foreach ($css as $key => $value) {
+ // Skip core files.
+ $is_core = (strpos($value['data'], 'misc/') === 0 || strpos($value['data'], 'modules/') === 0);
+ if (!$is_core) {
+ // This option forces embeding with a link element.
+ $css[$key]['preprocess'] = FALSE;
+ $count++;
+ }
+ }
+
+}
+
+// Add functions here
+
+
+?>
diff --git a/app/templates/templates/block.tpl.php b/app/templates/templates/block.tpl.php
new file mode 100644
index 0000000..66dfcd3
--- /dev/null
+++ b/app/templates/templates/block.tpl.php
@@ -0,0 +1,15 @@
+>
+
+
+
+ subject): ?>
+
>subject ?>
+
+
+
+
+
>
+
+
+
+
diff --git a/app/templates/templates/comment.tpl.php b/app/templates/templates/comment.tpl.php
new file mode 100644
index 0000000..00f6614
--- /dev/null
+++ b/app/templates/templates/comment.tpl.php
@@ -0,0 +1,33 @@
+>
+
+
+
+
+
+
+
+
+
>
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/templates/templates/field.tpl.php b/app/templates/templates/field.tpl.php
new file mode 100644
index 0000000..29a0b74
--- /dev/null
+++ b/app/templates/templates/field.tpl.php
@@ -0,0 +1,11 @@
+
diff --git a/app/templates/templates/html.tpl.php b/app/templates/templates/html.tpl.php
new file mode 100644
index 0000000..f4cd19c
--- /dev/null
+++ b/app/templates/templates/html.tpl.php
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+>
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/templates/templates/node.tpl.php b/app/templates/templates/node.tpl.php
new file mode 100644
index 0000000..623b62f
--- /dev/null
+++ b/app/templates/templates/node.tpl.php
@@ -0,0 +1,32 @@
+>
+
+
+
+
+
+
+ >
+
+
+
+
+
+
+
+
+
+
+ >
+
+
+
+
+
+
+
+
diff --git a/app/templates/templates/page.tpl.php b/app/templates/templates/page.tpl.php
new file mode 100644
index 0000000..e1dc07d
--- /dev/null
+++ b/app/templates/templates/page.tpl.php
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/templates/templates/region.tpl.php b/app/templates/templates/region.tpl.php
new file mode 100644
index 0000000..fef8500
--- /dev/null
+++ b/app/templates/templates/region.tpl.php
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/templates/templates/search-result.tpl.php b/app/templates/templates/search-result.tpl.php
new file mode 100644
index 0000000..10d99a0
--- /dev/null
+++ b/app/templates/templates/search-result.tpl.php
@@ -0,0 +1,17 @@
+>
+
+
+ >
+
+
+
+
+
diff --git a/app/templates/templates/search-results.tpl.php b/app/templates/templates/search-results.tpl.php
new file mode 100644
index 0000000..d148fb0
--- /dev/null
+++ b/app/templates/templates/search-results.tpl.php
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/templates/templates/taxonomy-term.tpl.php b/app/templates/templates/taxonomy-term.tpl.php
new file mode 100644
index 0000000..4515b79
--- /dev/null
+++ b/app/templates/templates/taxonomy-term.tpl.php
@@ -0,0 +1,11 @@
+
diff --git a/app/templates/theme-settings.php b/app/templates/theme-settings.php
new file mode 100644
index 0000000..007717f
--- /dev/null
+++ b/app/templates/theme-settings.php
@@ -0,0 +1,25 @@
+_form_system_theme_settings_alter(&$form, &$form_state, $form_id = NULL) {
+
+
+ //////////////////////////////
+ // Remove a bunch of useless theme settings
+ //////////////////////////////
+
+ unset($form['theme_settings']['toggle_favicon']);
+ //////////////////////////////
+ // Logo and Favicon
+ //////////////////////////////
+
+ unset($form['logo']);
+ unset($form['favicon']); //These are defined in templates/html.tpl.php
+}
\ No newline at end of file
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..fd5e5ab
--- /dev/null
+++ b/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "generator-drupal-gulp",
+ "version": "0.0.0",
+ "description": "Drupal 7 Gulp Starter Theme for use as a starting template for building custom themes. Uses SCSS/SASS (with libsass compiler), HTML5 Boilerplate 5 with Modernizr and Normalize.css, and Gulp for all tasks.",
+ "license": "MIT",
+ "main": "app/index.js",
+ "repository": "lasseyls/generator-drupal-gulp",
+ "author": {
+ "name": "Lasse Moos",
+ "email": "lasse@yourlocalstudio.dk",
+ "url": "https://github.com/lasseyls"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
+ "files": [
+ "app"
+ ],
+ "keywords": [
+ "yeoman-generator",
+ "Drupal",
+ "gulp",
+ "theme",
+ "frontend",
+ "boilerplate",
+ "h5bp",
+ 'libsass'
+ ],
+ "dependencies": {
+ "yeoman-generator": "^0.18.0",
+ "chalk": "^0.5.0",
+ "lodash": "~1.3.1",
+ "underscore.string": "~2.3.3",
+ "yosay": "^0.3.0"
+ },
+ "devDependencies": {
+ "mocha": "*"
+ },
+ "peerDependencies": {
+ "yo": ">=1.0.0"
+ }
+}
diff --git a/test/test-app.js b/test/test-app.js
new file mode 100644
index 0000000..620df67
--- /dev/null
+++ b/test/test-app.js
@@ -0,0 +1,27 @@
+'use strict';
+
+var path = require('path');
+var assert = require('yeoman-generator').assert;
+var helpers = require('yeoman-generator').test;
+var os = require('os');
+
+describe('drupal-gulp:app', function () {
+ before(function (done) {
+ helpers.run(path.join(__dirname, '../app'))
+ .inDir(path.join(os.tmpdir(), './temp-test'))
+ .withOptions({ 'skip-install': true })
+ .withPrompt({
+ someOption: true
+ })
+ .on('end', done);
+ });
+
+ it('creates files', function () {
+ assert.file([
+ 'bower.json',
+ 'package.json',
+ '.editorconfig',
+ '.jshintrc'
+ ]);
+ });
+});