Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Chen-Zhe/photo-grid.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraerohub <aerohub@users.noreply.github.com>2016-08-17 20:02:51 +0300
committeraerohub <aerohub@users.noreply.github.com>2016-08-17 20:02:51 +0300
commit990df552565018bba985aae9e6bffb4a24e4d9ea (patch)
tree1e939d5f3f4682953ba75f884b86bb0053f75211
Initial commit
-rw-r--r--LICENSE.md20
-rw-r--r--README.md85
-rw-r--r--archetypes/default.md2
-rw-r--r--exampleSite/archetypes/.gitkeep0
-rw-r--r--exampleSite/config.toml29
-rw-r--r--exampleSite/content/.gitkeep0
-rw-r--r--exampleSite/data/items.toml105
-rw-r--r--images/screenshot.pngbin0 -> 41244 bytes
-rw-r--r--images/tn.pngbin0 -> 48089 bytes
-rw-r--r--layouts/_default/list.html0
-rw-r--r--layouts/_default/single.html0
-rw-r--r--layouts/index.html25
-rw-r--r--layouts/partials/footer.html1
-rw-r--r--layouts/partials/head.html17
-rw-r--r--layouts/partials/header.html3
-rw-r--r--layouts/partials/scripts.html430
-rw-r--r--static/css/component.css195
-rw-r--r--static/css/default.css80
-rw-r--r--static/images/full/1.pngbin0 -> 11582 bytes
-rw-r--r--static/images/full/2.pngbin0 -> 11363 bytes
-rw-r--r--static/images/full/3.pngbin0 -> 11523 bytes
-rw-r--r--static/images/full/4.pngbin0 -> 11479 bytes
-rw-r--r--static/images/full/5.pngbin0 -> 11543 bytes
-rw-r--r--static/images/thumbs/1.pngbin0 -> 6104 bytes
-rw-r--r--static/images/thumbs/2.pngbin0 -> 5912 bytes
-rw-r--r--static/images/thumbs/3.pngbin0 -> 6082 bytes
-rw-r--r--static/images/thumbs/4.pngbin0 -> 5999 bytes
-rw-r--r--static/images/thumbs/5.pngbin0 -> 6132 bytes
-rw-r--r--static/js/modernizr.custom.js4
-rw-r--r--theme.toml17
30 files changed, 1013 insertions, 0 deletions
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..569bec5
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 [Pavel Kanyshev](https://github.com/aerohub)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..2fa3d61
--- /dev/null
+++ b/README.md
@@ -0,0 +1,85 @@
+# Hugrid
+
+Hugrid (Hugo+grid) is a simple grid theme for Hugo. It's a kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on.
+
+# Origin
+
+Hugrid is based on Codrops' [Thumbnail Grid with Expanding Preview](http://tympanus.net/codrops/?p=14530).
+
+## Demo
+
+[Demo on themes.gohugo.io](http://themes.gohugo.io/theme/hugrid/)
+[Original demo from Codrops](http://tympanus.net/Tutorials/ThumbnailGridExpandingPreview/)
+
+## Features
+
+- Responsive design
+- Google Analytics
+
+## Screenshot
+
+![Hugrid screenshot](https://raw.githubusercontent.com/aerohub/hugrid/master/images/screenshot.png)
+
+
+## Contents
+
+- [Installation](#installation)
+- [Getting started](#getting-started)
+ - [The config file](#the-config-file)
+ - [Data file](#data-file)
+ - [Nearly finished](#nearly-finished)
+- [Contributing](#contributing)
+- [License](#license)
+- [Annotations](#annotations)
+
+
+## Installation
+
+Inside the folder of your new Hugo site run:
+
+ $ mkdir themes
+ $ cd themes
+ $ git clone https://github.com/aerohub/hugrid
+
+For more information read the official [setup guide](//gohugo.io/overview/installing/) of Hugo.
+
+
+## Getting started
+
+After installing the Identity Theme successfully it requires a just a few more steps to get your site running.
+
+
+### The config file
+
+Take a look inside the [`exampleSite`](//github.com/aerohub/hugrid/tree/master/exampleSite) folder of this theme. You'll find a file called [`config.toml`](//github.com/aerohub/hugrid/blob/master/exampleSite/config.toml). To use it, copy the [`config.toml`](//github.com/aerohub/hugrid/blob/master/exampleSite/config.toml) in the root folder of your Hugo site. Feel free to change the strings in this theme.
+
+### Data file
+
+Take a look inside the [`exampleSite/data`](//github.com/aerohub/hugrid/tree/master/exampleSite/data) folder of this theme. You'll find a file called [`items.toml`](//github.com/aerohub/hugrid/blob/master/exampleSite/items.toml). To use it, copy the [`exampleSite/data`](//github.com/aerohub/hugrid/tree/master/exampleSite/data) folder in the root folder of your Hugo site. Change the strings in the `items.toml` with your data.
+
+### Nearly finished
+
+In order to see your site in action, run Hugo's built-in local server.
+
+ $ hugo server -w
+
+Now enter `localhost:1313` in the address bar of your browser.
+
+
+## Contributing
+
+Did you found a bug or got an idea for a new feature? Feel free to use the [issue tracker](//github.com/aerohub/hugrid/issues) to let me know. Or make directly a [pull request](//github.com/aerohub/hugrid/pulls).
+
+
+## License
+
+This work is licensed under the MIT License. For more information read the [License](//github.com/aerohub/hugrid/blob/master/LICENSE.md).
+
+
+## Annotations
+
+Thanks
+
+- to [spf13](//github.com/spf13) for creating Hugo and the awesome community around the project
+- to [digitalcraftsman](//github.com/digitalcraftsman) for creating Hugo themes and writing nice READMEs
+- to Codrops for original [Thumbnail Grid with Expanding Preview](http://tympanus.net/codrops/?p=14530). \ No newline at end of file
diff --git a/archetypes/default.md b/archetypes/default.md
new file mode 100644
index 0000000..f7ba421
--- /dev/null
+++ b/archetypes/default.md
@@ -0,0 +1,2 @@
++++
++++ \ No newline at end of file
diff --git a/exampleSite/archetypes/.gitkeep b/exampleSite/archetypes/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/exampleSite/archetypes/.gitkeep
diff --git a/exampleSite/config.toml b/exampleSite/config.toml
new file mode 100644
index 0000000..4bfe81f
--- /dev/null
+++ b/exampleSite/config.toml
@@ -0,0 +1,29 @@
+# Site settings
+baseurl = "http://replace-this-with-your-hugo-site.com/"
+languageCode = "en-us"
+title = "Hugrid - Grid Theme For Hugo"
+theme = "hugrid"
+# Enter your tracking code to enable Google Analytics
+googleAnalytics = "UA-XXXXXXXX-Y"
+
+contentdir = "content"
+datadir = "data"
+layoutdir = "layouts"
+publishdir = "public"
+
+[params]
+ # Meta
+ title = "Hugrid - a simple grid theme for Hugo"
+ subtitle = "A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on."
+ author = "Pavel Kanyshev"
+ description = "Hugrid - grid theme for Hugo with an expanding image preview."
+ keywords = "Hugo, Hugo theme, grid theme, portfolio, bookmarks, collection, contacts"
+
+ # Body background color
+ bodybgcolor = "#f9f9f9"
+
+ # Preview container button text
+ buttontext = "Get the theme"
+
+ # Footer text
+ footertext = "Made by [Codrops](http://tympanus.net/codrops/2013/03/19/thumbnail-grid-with-expanding-preview/), [Hugo](http://gohugo.io) and [me](https://github.com/aerohub)" \ No newline at end of file
diff --git a/exampleSite/content/.gitkeep b/exampleSite/content/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/exampleSite/content/.gitkeep
diff --git a/exampleSite/data/items.toml b/exampleSite/data/items.toml
new file mode 100644
index 0000000..ec3c755
--- /dev/null
+++ b/exampleSite/data/items.toml
@@ -0,0 +1,105 @@
+[[items]]
+title = "Hugrid Theme"
+image = "images/full/1.png"
+thumb = "images/thumbs/1.png"
+alt = "Hugrid Theme"
+description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on."
+url = "https://github.com/aerohub/hugrid"
+[[items]]
+title = "Hugrid Theme"
+image = "images/full/2.png"
+thumb = "images/thumbs/2.png"
+alt = "Hugrid Theme"
+description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on."
+url = "https://github.com/aerohub/hugrid"
+[[items]]
+title = "Hugrid Theme"
+image = "images/full/3.png"
+thumb = "images/thumbs/3.png"
+alt = "Hugrid Theme"
+description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on."
+url = "https://github.com/aerohub/hugrid"
+[[items]]
+title = "Hugrid Theme"
+image = "images/full/4.png"
+thumb = "images/thumbs/4.png"
+alt = "Hugrid Theme"
+description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on."
+url = "https://github.com/aerohub/hugrid"
+[[items]]
+title = "Hugrid Theme"
+image = "images/full/5.png"
+thumb = "images/thumbs/5.png"
+alt = "Hugrid Theme"
+description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on."
+url = "https://github.com/aerohub/hugrid"
+[[items]]
+title = "Hugrid Theme"
+image = "images/full/3.png"
+thumb = "images/thumbs/3.png"
+alt = "Hugrid Theme"
+description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on."
+url = "https://github.com/aerohub/hugrid"
+[[items]]
+title = "Hugrid Theme"
+image = "images/full/4.png"
+thumb = "images/thumbs/4.png"
+alt = "Hugrid Theme"
+description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on."
+url = "https://github.com/aerohub/hugrid"
+[[items]]
+title = "Hugrid Theme"
+image = "images/full/1.png"
+thumb = "images/thumbs/1.png"
+alt = "Hugrid Theme"
+description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on."
+url = "https://github.com/aerohub/hugrid"
+[[items]]
+title = "Hugrid Theme"
+image = "images/full/2.png"
+thumb = "images/thumbs/2.png"
+alt = "Hugrid Theme"
+description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on."
+url = "https://github.com/aerohub/hugrid"
+[[items]]
+title = "Hugrid Theme"
+image = "images/full/3.png"
+thumb = "images/thumbs/3.png"
+alt = "Hugrid Theme"
+description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on."
+url = "https://github.com/aerohub/hugrid"
+[[items]]
+title = "Hugrid Theme"
+image = "images/full/4.png"
+thumb = "images/thumbs/4.png"
+alt = "Hugrid Theme"
+description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on."
+url = "https://github.com/aerohub/hugrid"
+[[items]]
+title = "Hugrid Theme"
+image = "images/full/5.png"
+thumb = "images/thumbs/5.png"
+alt = "Hugrid Theme"
+description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on."
+url = "https://github.com/aerohub/hugrid"
+[[items]]
+title = "Hugrid Theme"
+image = "images/full/2.png"
+thumb = "images/thumbs/2.png"
+alt = "Hugrid Theme"
+description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on."
+url = "https://github.com/aerohub/hugrid"
+[[items]]
+title = "Hugrid Theme"
+image = "images/full/3.png"
+thumb = "images/thumbs/3.png"
+alt = "Hugrid Theme"
+description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on."
+url = "https://github.com/aerohub/hugrid"
+[[items]]
+title = "Hugrid Theme"
+image = "images/full/1.png"
+thumb = "images/thumbs/1.png"
+alt = "Hugrid Theme"
+description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly. Portfolio, collection, bookmarks, contacts and so on."
+url = "https://github.com/aerohub/hugrid" \ No newline at end of file
diff --git a/images/screenshot.png b/images/screenshot.png
new file mode 100644
index 0000000..01c7a1f
--- /dev/null
+++ b/images/screenshot.png
Binary files differ
diff --git a/images/tn.png b/images/tn.png
new file mode 100644
index 0000000..145c3d0
--- /dev/null
+++ b/images/tn.png
Binary files differ
diff --git a/layouts/_default/list.html b/layouts/_default/list.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/layouts/_default/list.html
diff --git a/layouts/_default/single.html b/layouts/_default/single.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/layouts/_default/single.html
diff --git a/layouts/index.html b/layouts/index.html
new file mode 100644
index 0000000..99aa127
--- /dev/null
+++ b/layouts/index.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="{{ with .Site.LanguageCode }}{{ . }}{{ else }}en-US{{ end }}">
+ <head>
+ {{ partial "head.html" . }}
+ </head>
+ {{ template "_internal/google_analytics.html" . }}
+ <body>
+ <div class="container">
+ {{ partial "header.html" . }}
+ <div class="main">
+ <ul id="og-grid" class="og-grid">
+ {{ range $.Site.Data.items.items }}
+ <li>
+ <a href="{{.url}}" data-largesrc="{{.image}}" data-title="{{.title}}" data-description="{{.description }}">
+ <img src="{{.thumb}}" alt="{{.alt}}"/>
+ </a>
+ </li>
+ {{ end }}
+ </ul>
+ {{ partial "footer.html" . }}
+ </div>
+ </div>
+ {{ partial "scripts.html" . }}
+ </body>
+</html> \ No newline at end of file
diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html
new file mode 100644
index 0000000..35cad37
--- /dev/null
+++ b/layouts/partials/footer.html
@@ -0,0 +1 @@
+ <p>{{ with .Site.Params.footertext }}{{ . | markdownify }}{{ end }}</p> \ No newline at end of file
diff --git a/layouts/partials/head.html b/layouts/partials/head.html
new file mode 100644
index 0000000..56aba86
--- /dev/null
+++ b/layouts/partials/head.html
@@ -0,0 +1,17 @@
+ <meta charset="UTF-8" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>{{ .Site.Title }}</title>
+ <meta name="description" content="{{ with .Site.Params.description }}{{ . }}{{ end }}" />
+ <meta name="keywords" content="{{ with .Site.Params.keywords }}{{ . }}{{ end }}" />
+ <meta name="author" content="{{ with .Site.Params.author }}{{ . }}{{ end }}" />
+ {{ .Hugo.Generator }}
+ <style>
+ body {
+ background: {{ .Site.Params.bodybgcolor }};
+ color: {{ .Site.Params.bodytextcolor }};
+ }
+ </style>
+ <link rel="stylesheet" type="text/css" href="{{ .Site.BaseURL }}css/default.css" />
+ <link rel="stylesheet" type="text/css" href="{{ .Site.BaseURL }}css/component.css" />
+ <script src="{{ .Site.BaseURL }}js/modernizr.custom.js"></script> \ No newline at end of file
diff --git a/layouts/partials/header.html b/layouts/partials/header.html
new file mode 100644
index 0000000..0ebed2d
--- /dev/null
+++ b/layouts/partials/header.html
@@ -0,0 +1,3 @@
+ <header class="clearfix">
+ <h1>{{ with .Site.Params.title }}{{ . | markdownify }}{{ end }}<span>{{ with .Site.Params.subtitle }}{{ . | markdownify }}{{ end }}</span></h1>
+ </header> \ No newline at end of file
diff --git a/layouts/partials/scripts.html b/layouts/partials/scripts.html
new file mode 100644
index 0000000..b2c5fa4
--- /dev/null
+++ b/layouts/partials/scripts.html
@@ -0,0 +1,430 @@
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
+ <script>
+ var $event = $.event,
+ $special,
+ resizeTimeout;
+
+ $special = $event.special.debouncedresize = {
+ setup: function() {
+ $( this ).on( "resize", $special.handler );
+ },
+ teardown: function() {
+ $( this ).off( "resize", $special.handler );
+ },
+ handler: function( event, execAsap ) {
+ var context = this,
+ args = arguments,
+ dispatch = function() {
+ event.type = "debouncedresize";
+ $event.dispatch.apply( context, args );
+ };
+
+ if ( resizeTimeout ) {
+ clearTimeout( resizeTimeout );
+ }
+
+ execAsap ?
+ dispatch() :
+ resizeTimeout = setTimeout( dispatch, $special.threshold );
+ },
+ threshold: 250
+ };
+
+ var BLANK = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==';
+
+ $.fn.imagesLoaded = function( callback ) {
+ var $this = this,
+ deferred = $.isFunction($.Deferred) ? $.Deferred() : 0,
+ hasNotify = $.isFunction(deferred.notify),
+ $images = $this.find('img').add( $this.filter('img') ),
+ loaded = [],
+ proper = [],
+ broken = [];
+
+ if ($.isPlainObject(callback)) {
+ $.each(callback, function (key, value) {
+ if (key === 'callback') {
+ callback = value;
+ } else if (deferred) {
+ deferred[key](value);
+ }
+ });
+ }
+
+ function doneLoading() {
+ var $proper = $(proper),
+ $broken = $(broken);
+
+ if ( deferred ) {
+ if ( broken.length ) {
+ deferred.reject( $images, $proper, $broken );
+ } else {
+ deferred.resolve( $images );
+ }
+ }
+
+ if ( $.isFunction( callback ) ) {
+ callback.call( $this, $images, $proper, $broken );
+ }
+ }
+
+ function imgLoaded( img, isBroken ) {
+ if ( img.src === BLANK || $.inArray( img, loaded ) !== -1 ) {
+ return;
+ }
+
+ loaded.push( img );
+
+ if ( isBroken ) {
+ broken.push( img );
+ } else {
+ proper.push( img );
+ }
+
+ $.data( img, 'imagesLoaded', { isBroken: isBroken, src: img.src } );
+
+ if ( hasNotify ) {
+ deferred.notifyWith( $(img), [ isBroken, $images, $(proper), $(broken) ] );
+ }
+
+ if ( $images.length === loaded.length ){
+ setTimeout( doneLoading );
+ $images.unbind( '.imagesLoaded' );
+ }
+ }
+
+ if ( !$images.length ) {
+ doneLoading();
+ } else {
+ $images.bind( 'load.imagesLoaded error.imagesLoaded', function( event ){
+ imgLoaded( event.target, event.type === 'error' );
+ }).each( function( i, el ) {
+ var src = el.src;
+
+ var cached = $.data( el, 'imagesLoaded' );
+ if ( cached && cached.src === src ) {
+ imgLoaded( el, cached.isBroken );
+ return;
+ }
+
+ if ( el.complete && el.naturalWidth !== undefined ) {
+ imgLoaded( el, el.naturalWidth === 0 || el.naturalHeight === 0 );
+ return;
+ }
+
+ if ( el.readyState || el.complete ) {
+ el.src = BLANK;
+ el.src = src;
+ }
+ });
+ }
+
+ return deferred ? deferred.promise( $this ) : $this;
+ };
+
+ var Grid = (function() {
+
+ var $grid = $( '#og-grid' ),
+ $items = $grid.children( 'li' ),
+ current = -1,
+ previewPos = -1,
+ scrollExtra = 0,
+ marginExpanded = 10,
+ $window = $( window ), winsize,
+ $body = $( 'html, body' ),
+ transEndEventNames = {
+ 'WebkitTransition' : 'webkitTransitionEnd',
+ 'MozTransition' : 'transitionend',
+ 'OTransition' : 'oTransitionEnd',
+ 'msTransition' : 'MSTransitionEnd',
+ 'transition' : 'transitionend'
+ },
+ transEndEventName = transEndEventNames[ Modernizr.prefixed( 'transition' ) ],
+ support = Modernizr.csstransitions,
+ settings = {
+ minHeight : 500,
+ speed : 350,
+ easing : 'ease'
+ };
+
+ function init( config ) {
+
+ settings = $.extend( true, {}, settings, config );
+
+ $grid.imagesLoaded( function() {
+
+ saveItemInfo( true );
+ getWinSize();
+ initEvents();
+
+ } );
+
+ }
+
+ function addItems( $newitems ) {
+
+ $items = $items.add( $newitems );
+
+ $newitems.each( function() {
+ var $item = $( this );
+ $item.data( {
+ offsetTop : $item.offset().top,
+ height : $item.height()
+ } );
+ } );
+
+ initItemsEvents( $newitems );
+
+ }
+
+ function saveItemInfo( saveheight ) {
+ $items.each( function() {
+ var $item = $( this );
+ $item.data( 'offsetTop', $item.offset().top );
+ if( saveheight ) {
+ $item.data( 'height', $item.height() );
+ }
+ } );
+ }
+
+ function initEvents() {
+
+ initItemsEvents( $items );
+
+ $window.on( 'debouncedresize', function() {
+
+ scrollExtra = 0;
+ previewPos = -1;
+ saveItemInfo();
+ getWinSize();
+ var preview = $.data( this, 'preview' );
+ if( typeof preview != 'undefined' ) {
+ hidePreview();
+ }
+
+ } );
+
+ }
+
+ function initItemsEvents( $items ) {
+ $items.on( 'click', 'span.og-close', function() {
+ hidePreview();
+ return false;
+ } ).children( 'a' ).on( 'click', function(e) {
+
+ var $item = $( this ).parent();
+ current === $item.index() ? hidePreview() : showPreview( $item );
+ return false;
+
+ } );
+ }
+
+ function getWinSize() {
+ winsize = { width : $window.width(), height : $window.height() };
+ }
+
+ function showPreview( $item ) {
+
+ var preview = $.data( this, 'preview' ),
+ position = $item.data( 'offsetTop' );
+
+ scrollExtra = 0;
+
+ if( typeof preview != 'undefined' ) {
+
+ if( previewPos !== position ) {
+ if( position > previewPos ) {
+ scrollExtra = preview.height;
+ }
+ hidePreview();
+ }
+ else {
+ preview.update( $item );
+ return false;
+ }
+
+ }
+
+ previewPos = position;
+ preview = $.data( this, 'preview', new Preview( $item ) );
+ preview.open();
+
+ }
+
+ function hidePreview() {
+ current = -1;
+ var preview = $.data( this, 'preview' );
+ preview.close();
+ $.removeData( this, 'preview' );
+ }
+
+ function Preview( $item ) {
+ this.$item = $item;
+ this.expandedIdx = this.$item.index();
+ this.create();
+ this.update();
+ }
+
+ Preview.prototype = {
+ create : function() {
+ this.$title = $( '<h3></h3>' );
+ this.$description = $( '<p></p>' );
+ this.$href = $( '<a href="#">{{ .Site.Params.buttontext }}</a>' );
+ this.$details = $( '<div class="og-details"></div>' ).append( this.$title, this.$description, this.$href );
+ this.$loading = $( '<div class="og-loading"></div>' );
+ this.$fullimage = $( '<div class="og-fullimg"></div>' ).append( this.$loading );
+ this.$closePreview = $( '<span class="og-close"></span>' );
+ this.$previewInner = $( '<div class="og-expander-inner"></div>' ).append( this.$closePreview, this.$fullimage, this.$details );
+ this.$previewEl = $( '<div class="og-expander"></div>' ).append( this.$previewInner );
+ this.$item.append( this.getEl() );
+ if( support ) {
+ this.setTransition();
+ }
+ },
+ update : function( $item ) {
+
+ if( $item ) {
+ this.$item = $item;
+ }
+
+ if( current !== -1 ) {
+ var $currentItem = $items.eq( current );
+ $currentItem.removeClass( 'og-expanded' );
+ this.$item.addClass( 'og-expanded' );
+ this.positionPreview();
+ }
+
+ current = this.$item.index();
+
+ var $itemEl = this.$item.children( 'a' ),
+ eldata = {
+ href : $itemEl.attr( 'href' ),
+ largesrc : $itemEl.data( 'largesrc' ),
+ title : $itemEl.data( 'title' ),
+ description : $itemEl.data( 'description' )
+ };
+
+ this.$title.html( eldata.title );
+ this.$description.html( eldata.description );
+ this.$href.attr( 'href', eldata.href );
+
+ var self = this;
+
+ if( typeof self.$largeImg != 'undefined' ) {
+ self.$largeImg.remove();
+ }
+
+ if( self.$fullimage.is( ':visible' ) ) {
+ this.$loading.show();
+ $( '<img/>' ).load( function() {
+ var $img = $( this );
+ if( $img.attr( 'src' ) === self.$item.children('a').data( 'largesrc' ) ) {
+ self.$loading.hide();
+ self.$fullimage.find( 'img' ).remove();
+ self.$largeImg = $img.fadeIn( 350 );
+ self.$fullimage.append( self.$largeImg );
+ }
+ } ).attr( 'src', eldata.largesrc );
+ }
+
+ },
+ open : function() {
+
+ setTimeout( $.proxy( function() {
+ this.setHeights();
+ this.positionPreview();
+ }, this ), 25 );
+
+ },
+ close : function() {
+
+ var self = this,
+ onEndFn = function() {
+ if( support ) {
+ $( this ).off( transEndEventName );
+ }
+ self.$item.removeClass( 'og-expanded' );
+ self.$previewEl.remove();
+ };
+
+ setTimeout( $.proxy( function() {
+
+ if( typeof this.$largeImg !== 'undefined' ) {
+ this.$largeImg.fadeOut( 'fast' );
+ }
+ this.$previewEl.css( 'height', 0 );
+ var $expandedItem = $items.eq( this.expandedIdx );
+ $expandedItem.css( 'height', $expandedItem.data( 'height' ) ).on( transEndEventName, onEndFn );
+
+ if( !support ) {
+ onEndFn.call();
+ }
+
+ }, this ), 25 );
+
+ return false;
+
+ },
+ calcHeight : function() {
+
+ var heightPreview = winsize.height - this.$item.data( 'height' ) - marginExpanded,
+ itemHeight = winsize.height;
+
+ if( heightPreview < settings.minHeight ) {
+ heightPreview = settings.minHeight;
+ itemHeight = settings.minHeight + this.$item.data( 'height' ) + marginExpanded;
+ }
+
+ this.height = heightPreview;
+ this.itemHeight = itemHeight;
+
+ },
+ setHeights : function() {
+
+ var self = this,
+ onEndFn = function() {
+ if( support ) {
+ self.$item.off( transEndEventName );
+ }
+ self.$item.addClass( 'og-expanded' );
+ };
+
+ this.calcHeight();
+ this.$previewEl.css( 'height', this.height );
+ this.$item.css( 'height', this.itemHeight ).on( transEndEventName, onEndFn );
+
+ if( !support ) {
+ onEndFn.call();
+ }
+
+ },
+ positionPreview : function() {
+
+ var position = this.$item.data( 'offsetTop' ),
+ previewOffsetT = this.$previewEl.offset().top - scrollExtra,
+ scrollVal = this.height + this.$item.data( 'height' ) + marginExpanded <= winsize.height ? position : this.height < winsize.height ? previewOffsetT - ( winsize.height - this.height ) : previewOffsetT;
+
+ $body.animate( { scrollTop : scrollVal }, settings.speed );
+
+ },
+ setTransition : function() {
+ this.$previewEl.css( 'transition', 'height ' + settings.speed + 'ms ' + settings.easing );
+ this.$item.css( 'transition', 'height ' + settings.speed + 'ms ' + settings.easing );
+ },
+ getEl : function() {
+ return this.$previewEl;
+ }
+ }
+
+ return {
+ init : init,
+ addItems : addItems
+ };
+
+ })();
+ </script>
+ <script>
+ $(function() {
+ Grid.init();
+ });
+ </script> \ No newline at end of file
diff --git a/static/css/component.css b/static/css/component.css
new file mode 100644
index 0000000..8f21f49
--- /dev/null
+++ b/static/css/component.css
@@ -0,0 +1,195 @@
+.og-grid {
+ list-style: none;
+ padding: 20px 0;
+ margin: 0 auto;
+ text-align: center;
+ width: 100%;
+}
+
+.og-grid li {
+ display: inline-block;
+ margin: 10px 5px 0 5px;
+ vertical-align: top;
+ height: 250px;
+}
+
+.og-grid li > a,
+.og-grid li > a img {
+ border: none;
+ outline: none;
+ display: block;
+ position: relative;
+}
+
+.og-grid li.og-expanded > a::after {
+ top: auto;
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+ pointer-events: none;
+ border-bottom-color: #ddd;
+ border-width: 15px;
+ left: 50%;
+ margin: -20px 0 0 -15px;
+}
+
+.og-expander {
+ position: absolute;
+ background: #ddd;
+ top: auto;
+ left: 0;
+ width: 100%;
+ margin-top: 10px;
+ text-align: left;
+ height: 0;
+ overflow: hidden;
+}
+
+.og-expander-inner {
+ padding: 50px 30px;
+ height: 100%;
+}
+
+.og-close {
+ position: absolute;
+ width: 40px;
+ height: 40px;
+ top: 20px;
+ right: 20px;
+ cursor: pointer;
+}
+
+.og-close::before,
+.og-close::after {
+ content: '';
+ position: absolute;
+ width: 100%;
+ top: 50%;
+ height: 1px;
+ background: #888;
+ -webkit-transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ transform: rotate(45deg);
+}
+
+.og-close::after {
+ -webkit-transform: rotate(-45deg);
+ -moz-transform: rotate(-45deg);
+ transform: rotate(-45deg);
+}
+
+.og-close:hover::before,
+.og-close:hover::after {
+ background: #333;
+}
+
+.og-fullimg,
+.og-details {
+ width: 50%;
+ float: left;
+ height: 100%;
+ overflow: hidden;
+ position: relative;
+}
+
+.og-details {
+ padding: 0 40px 0 20px;
+}
+
+.og-fullimg {
+ text-align: center;
+}
+
+.og-fullimg img {
+ display: inline-block;
+ max-height: 100%;
+ max-width: 100%;
+}
+
+.og-details h3 {
+ font-weight: 300;
+ font-size: 52px;
+ padding: 40px 0 10px;
+ margin-bottom: 10px;
+}
+
+.og-details p {
+ font-weight: 400;
+ font-size: 16px;
+ line-height: 22px;
+ color: #999;
+}
+
+.og-details a {
+ font-weight: 700;
+ font-size: 16px;
+ color: #333;
+ text-transform: uppercase;
+ letter-spacing: 2px;
+ padding: 10px 20px;
+ border: 3px solid #333;
+ display: inline-block;
+ margin: 30px 0 0;
+ outline: none;
+}
+
+.og-details a::before {
+ content: '\2192';
+ display: inline-block;
+ margin-right: 10px;
+}
+
+.og-details a:hover {
+ border-color: #999;
+ color: #999;
+}
+
+.og-loading {
+ width: 20px;
+ height: 20px;
+ border-radius: 50%;
+ background: #ddd;
+ box-shadow: 0 0 1px #ccc, 15px 30px 1px #ccc, -15px 30px 1px #ccc;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ margin: -25px 0 0 -25px;
+ -webkit-animation: loader 0.5s infinite ease-in-out both;
+ -moz-animation: loader 0.5s infinite ease-in-out both;
+ animation: loader 0.5s infinite ease-in-out both;
+}
+
+@-webkit-keyframes loader {
+ 0% { background: #ddd; }
+ 33% { background: #ccc; box-shadow: 0 0 1px #ccc, 15px 30px 1px #ccc, -15px 30px 1px #ddd; }
+ 66% { background: #ccc; box-shadow: 0 0 1px #ccc, 15px 30px 1px #ddd, -15px 30px 1px #ccc; }
+}
+
+@-moz-keyframes loader {
+ 0% { background: #ddd; }
+ 33% { background: #ccc; box-shadow: 0 0 1px #ccc, 15px 30px 1px #ccc, -15px 30px 1px #ddd; }
+ 66% { background: #ccc; box-shadow: 0 0 1px #ccc, 15px 30px 1px #ddd, -15px 30px 1px #ccc; }
+}
+
+@keyframes loader {
+ 0% { background: #ddd; }
+ 33% { background: #ccc; box-shadow: 0 0 1px #ccc, 15px 30px 1px #ccc, -15px 30px 1px #ddd; }
+ 66% { background: #ccc; box-shadow: 0 0 1px #ccc, 15px 30px 1px #ddd, -15px 30px 1px #ccc; }
+}
+
+@media screen and (max-width: 830px) {
+
+ .og-expander h3 { font-size: 32px; }
+ .og-expander p { font-size: 13px; }
+ .og-expander a { font-size: 12px; }
+
+}
+
+@media screen and (max-width: 650px) {
+
+ .og-fullimg { display: none; }
+ .og-details { float: none; width: 100%; }
+
+} \ No newline at end of file
diff --git a/static/css/default.css b/static/css/default.css
new file mode 100644
index 0000000..e68894b
--- /dev/null
+++ b/static/css/default.css
@@ -0,0 +1,80 @@
+/* General Demo Style */
+@import url(http://fonts.googleapis.com/css?family=Lato:300,400,700);
+
+html { height: 100%; }
+
+*,
+*:after,
+*:before {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 0;
+ margin: 0;
+}
+
+/* Clearfix hack by Nicolas Gallagher: http://nicolasgallagher.com/micro-clearfix-hack/ */
+.clearfix:before,
+.clearfix:after {
+ content: " ";
+ display: table;
+}
+
+.clearfix:after {
+ clear: both;
+}
+
+.clearfix {
+ *zoom: 1;
+}
+
+body {
+ font-family: 'Lato', Calibri, Arial, sans-serif;
+ font-weight: 300;
+ font-size: 15px;
+ color: #333;
+ overflow: scroll;
+ overflow-x: hidden;
+}
+
+a {
+ color: #555;
+ text-decoration: none;
+}
+
+.container {
+ width: 100%;
+ position: relative;
+}
+
+.container > header {
+ width: 90%;
+ max-width: 1240px;
+ margin: 0 auto;
+ position: relative;
+ padding: 0 30px 50px 30px;
+}
+
+.container > header {
+ padding: 60px 30px 50px;
+ text-align: center;
+}
+
+.container > header h1 {
+ font-size: 34px;
+ line-height: 38px;
+ margin: 0 auto;
+ font-weight: 700;
+ color: #333;
+}
+
+.container > header h1 span {
+ display: block;
+ font-size: 20px;
+ font-weight: 300;
+}
+
+.main > p {
+ text-align: center;
+ padding: 50px 20px;
+}
diff --git a/static/images/full/1.png b/static/images/full/1.png
new file mode 100644
index 0000000..9decf64
--- /dev/null
+++ b/static/images/full/1.png
Binary files differ
diff --git a/static/images/full/2.png b/static/images/full/2.png
new file mode 100644
index 0000000..d8dfeb6
--- /dev/null
+++ b/static/images/full/2.png
Binary files differ
diff --git a/static/images/full/3.png b/static/images/full/3.png
new file mode 100644
index 0000000..14b21c0
--- /dev/null
+++ b/static/images/full/3.png
Binary files differ
diff --git a/static/images/full/4.png b/static/images/full/4.png
new file mode 100644
index 0000000..dfd50fd
--- /dev/null
+++ b/static/images/full/4.png
Binary files differ
diff --git a/static/images/full/5.png b/static/images/full/5.png
new file mode 100644
index 0000000..e0760c9
--- /dev/null
+++ b/static/images/full/5.png
Binary files differ
diff --git a/static/images/thumbs/1.png b/static/images/thumbs/1.png
new file mode 100644
index 0000000..d539c0a
--- /dev/null
+++ b/static/images/thumbs/1.png
Binary files differ
diff --git a/static/images/thumbs/2.png b/static/images/thumbs/2.png
new file mode 100644
index 0000000..a34f4b1
--- /dev/null
+++ b/static/images/thumbs/2.png
Binary files differ
diff --git a/static/images/thumbs/3.png b/static/images/thumbs/3.png
new file mode 100644
index 0000000..aafc4a0
--- /dev/null
+++ b/static/images/thumbs/3.png
Binary files differ
diff --git a/static/images/thumbs/4.png b/static/images/thumbs/4.png
new file mode 100644
index 0000000..fb14b44
--- /dev/null
+++ b/static/images/thumbs/4.png
Binary files differ
diff --git a/static/images/thumbs/5.png b/static/images/thumbs/5.png
new file mode 100644
index 0000000..1964c23
--- /dev/null
+++ b/static/images/thumbs/5.png
Binary files differ
diff --git a/static/js/modernizr.custom.js b/static/js/modernizr.custom.js
new file mode 100644
index 0000000..fb55d0f
--- /dev/null
+++ b/static/js/modernizr.custom.js
@@ -0,0 +1,4 @@
+/* Modernizr 2.6.2 (Custom Build) | MIT & BSD
+ * Build: http://modernizr.com/download/#-csstransitions-shiv-cssclasses-prefixed-testprop-testallprops-domprefixes-load
+ */
+;window.Modernizr=function(a,b,c){function x(a){j.cssText=a}function y(a,b){return x(prefixes.join(a+";")+(b||""))}function z(a,b){return typeof a===b}function A(a,b){return!!~(""+a).indexOf(b)}function B(a,b){for(var d in a){var e=a[d];if(!A(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function C(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:z(f,"function")?f.bind(d||b):f}return!1}function D(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+n.join(d+" ")+d).split(" ");return z(b,"string")||z(b,"undefined")?B(e,b):(e=(a+" "+o.join(d+" ")+d).split(" "),C(e,b,c))}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m="Webkit Moz O ms",n=m.split(" "),o=m.toLowerCase().split(" "),p={},q={},r={},s=[],t=s.slice,u,v={}.hasOwnProperty,w;!z(v,"undefined")&&!z(v.call,"undefined")?w=function(a,b){return v.call(a,b)}:w=function(a,b){return b in a&&z(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=t.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(t.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(t.call(arguments)))};return e}),p.csstransitions=function(){return D("transition")};for(var E in p)w(p,E)&&(u=E.toLowerCase(),e[u]=p[E](),s.push((e[u]?"":"no-")+u));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)w(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},x(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._domPrefixes=o,e._cssomPrefixes=n,e.testProp=function(a){return B([a])},e.testAllProps=D,e.prefixed=function(a,b,c){return b?D(a,b,c):D(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+s.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))}; \ No newline at end of file
diff --git a/theme.toml b/theme.toml
new file mode 100644
index 0000000..d8a41f1
--- /dev/null
+++ b/theme.toml
@@ -0,0 +1,17 @@
+name = "Hugrid"
+license = "MIT License" #original Codrops Lisense is here http://tympanus.net/codrops/licensing/
+licenselink = "//github.com/aerohub/hugrid/blob/master/LICENSE.md"
+description = "A simple grid theme for Hugo. A kind of boilerplate to perform anyone or anything quickly."
+homepage = "//github.com/aerohub/hugrid"
+tags = ["responsive", "grid", "portfolio", "cards", "simple", "collections", "google analytics"]
+min_version = 0.15
+
+[author]
+ name = "Pavel Kanyshev"
+ homepage = "//github.com/aerohub/hugrid"
+
+# If porting an existing theme
+[original]
+ name = "Codrops' Thumbnail Grid with Expanding Preview"
+ homepage = "http://tympanus.net/codrops/2013/03/19/thumbnail-grid-with-expanding-preview/"
+ repo = "//github.com/codrops/ThumbnailGridExpandingPreview" \ No newline at end of file