├── assets ├── js │ └── theme.js └── sass │ ├── forms │ ├── _forms.scss │ ├── _buttons.scss │ └── _fields.scss │ ├── elements │ ├── _tables.scss │ ├── _lists.scss │ └── _elements.scss │ ├── typography │ ├── _headings.scss │ ├── _typography.scss │ └── _copy.scss │ ├── variables-site │ ├── _structure.scss │ ├── _variables-site.scss │ ├── _columns.scss │ ├── _typography.scss │ └── _colors.scss │ ├── site │ ├── primary │ │ ├── _comments.scss │ │ └── _posts-and-pages.scss │ ├── secondary │ │ └── _widgets.scss │ └── _site.scss │ ├── layout │ ├── _no-sidebar.scss │ ├── _content-sidebar.scss │ └── _sidebar-content.scss │ ├── modules │ ├── _alignments.scss │ ├── _infinite-scroll.scss │ ├── _clearings.scss │ └── _accessibility.scss │ ├── media │ ├── _captions.scss │ ├── _galleries.scss │ └── _media.scss │ ├── navigation │ ├── _links.scss │ ├── _navigation.scss │ └── _menus.scss │ ├── shop │ ├── _checkout.scss │ ├── _products.scss │ ├── _widgets.scss │ ├── _tables.scss │ ├── _single-product.scss │ └── _components.scss │ ├── mixins │ └── _mixins-master.scss │ ├── woocommerce.scss │ ├── style.scss │ └── _normalize.scss ├── screenshot.png ├── .gitignore ├── routes.php ├── views ├── comments │ ├── template.php │ └── list.blade.php ├── pages │ ├── default.blade.php │ ├── search.blade.php │ └── front.blade.php ├── blog │ ├── single.blade.php │ └── archive.blade.php ├── parts │ ├── content-search.blade.php │ ├── content-none.blade.php │ ├── content-page.blade.php │ └── content.blade.php ├── errors │ └── 404.blade.php └── layouts │ └── main.blade.php ├── config ├── menus.php ├── templates.php ├── sidebars.php ├── images.php ├── theme.php └── support.php ├── languages ├── readme.txt └── themosis.pot ├── style.css ├── index.php ├── composer.json ├── webpack.mix.js ├── resources └── Providers │ ├── RouteServiceProvider.php │ └── AssetServiceProvider.php ├── dist ├── js │ └── theme.min.js └── css │ ├── woocommerce.css │ └── theme.css ├── inc ├── template-functions.php └── template-tags.php ├── package.json ├── README.md ├── .php_cs.dist ├── functions.php └── license.txt /assets/js/theme.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/themosis/theme/HEAD/screenshot.png -------------------------------------------------------------------------------- /assets/sass/forms/_forms.scss: -------------------------------------------------------------------------------- 1 | @import "buttons"; 2 | 3 | @import "fields"; 4 | -------------------------------------------------------------------------------- /assets/sass/elements/_tables.scss: -------------------------------------------------------------------------------- 1 | table { 2 | margin: 0 0 1.5em; 3 | width: 100%; 4 | } 5 | -------------------------------------------------------------------------------- /assets/sass/typography/_headings.scss: -------------------------------------------------------------------------------- 1 | h1, h2, h3, h4, h5, h6 { 2 | clear: both; 3 | } 4 | -------------------------------------------------------------------------------- /assets/sass/variables-site/_structure.scss: -------------------------------------------------------------------------------- 1 | $size__site-main: 100%; 2 | $size__site-sidebar: 25%; 3 | -------------------------------------------------------------------------------- /assets/sass/variables-site/_variables-site.scss: -------------------------------------------------------------------------------- 1 | @import "colors"; 2 | @import "typography"; 3 | @import "structure"; 4 | @import "columns"; 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | .DS_Store 3 | Thumbs.db 4 | .idea/ 5 | .php_cs.cache 6 | 7 | # Theme 8 | node_modules/ 9 | vendor/ 10 | -------------------------------------------------------------------------------- /assets/sass/site/primary/_comments.scss: -------------------------------------------------------------------------------- 1 | .comment-content a { 2 | word-wrap: break-word; 3 | } 4 | .bypostauthor { 5 | display: block; 6 | } 7 | -------------------------------------------------------------------------------- /assets/sass/site/secondary/_widgets.scss: -------------------------------------------------------------------------------- 1 | .widget { 2 | margin: 0 0 1.5em; 3 | 4 | /* Make sure select elements fit in widgets. */ 5 | select { 6 | max-width: 100%; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /routes.php: -------------------------------------------------------------------------------- 1 | __('Header Navigation', THEME_TD), 11 | ]; 12 | -------------------------------------------------------------------------------- /languages/readme.txt: -------------------------------------------------------------------------------- 1 | Place your theme language files in this directory. 2 | 3 | Please visit the following links to learn more about translating WordPress themes: 4 | 5 | https://make.wordpress.org/polyglots/teams/ 6 | https://developer.wordpress.org/themes/functionality/localization/ 7 | https://developer.wordpress.org/reference/functions/load_theme_textdomain/ -------------------------------------------------------------------------------- /assets/sass/elements/_lists.scss: -------------------------------------------------------------------------------- 1 | ul, ol { 2 | margin: 0 0 1.5em 3em; 3 | } 4 | 5 | ul { 6 | list-style: disc; 7 | } 8 | 9 | ol { 10 | list-style: decimal; 11 | } 12 | 13 | li > ul, 14 | li > ol { 15 | margin-bottom: 0; 16 | margin-left: 1.5em; 17 | } 18 | 19 | dt { 20 | font-weight: bold; 21 | } 22 | 23 | dd { 24 | margin: 0 1.5em 1.5em; 25 | } 26 | -------------------------------------------------------------------------------- /assets/sass/site/primary/_posts-and-pages.scss: -------------------------------------------------------------------------------- 1 | .sticky { 2 | display: block; 3 | } 4 | 5 | .hentry { 6 | margin: 0 0 1.5em; 7 | } 8 | 9 | .updated:not(.published) { 10 | display: none; 11 | } 12 | 13 | .page-content, 14 | .entry-content, 15 | .entry-summary { 16 | margin: 1.5em 0 0; 17 | } 18 | 19 | .page-links { 20 | clear: both; 21 | margin: 0 0 1.5em; 22 | } 23 | -------------------------------------------------------------------------------- /assets/sass/navigation/_navigation.scss: -------------------------------------------------------------------------------- 1 | /*-------------------------------------------------------------- 2 | ## Links 3 | --------------------------------------------------------------*/ 4 | @import "links"; 5 | 6 | /*-------------------------------------------------------------- 7 | ## Menus 8 | --------------------------------------------------------------*/ 9 | @import "menus"; 10 | -------------------------------------------------------------------------------- /views/blog/single.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.main') 2 | 3 | @section('content') 4 | @loop 5 | @template('parts.content', get_post_type()) 6 | 7 | {!! get_the_post_navigation() !!} 8 | 9 | @if(comments_open() || get_comments_number()) 10 | @php(comments_template('/views/comments/template.php')) 11 | @endif 12 | @endloop 13 | @endsection -------------------------------------------------------------------------------- /assets/sass/shop/_checkout.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Checkout 3 | */ 4 | @media screen and (min-width: 768px) { 5 | .col2-set { 6 | .form-row-first { 7 | float: left; 8 | margin-right: $columns__margin; 9 | } 10 | 11 | .form-row-last { 12 | float: right; 13 | margin-right: 0; 14 | } 15 | 16 | .form-row-first, 17 | .form-row-last { 18 | @include column-width(2); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | /* 2 | Theme Name: Themosis 3 | Theme URI: https://framework.themosis.com/ 4 | Author: Themosis 5 | Author URI: https://www.themosis.com/ 6 | Description: The Themosis framework base theme. 7 | Version: 2.0.0 8 | License: GPL-2.0-or-later 9 | License URI: http://www.gnu.org/licenses/gpl-2.0.html 10 | Tags: easy, organized, expressive. 11 | Text Domain: themosis 12 | Domain Path: languages 13 | */ 14 | -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | manage(Kernel::class, $app['request']); 16 | -------------------------------------------------------------------------------- /assets/sass/layout/_content-sidebar.scss: -------------------------------------------------------------------------------- 1 | .content-area { 2 | float: left; 3 | margin: 0 (-$size__site-sidebar) 0 0; 4 | width: $size__site-main; 5 | } 6 | 7 | .site-main { 8 | margin: 0 $size__site-sidebar 0 0; 9 | } 10 | 11 | .site-content .widget-area { 12 | float: right; 13 | overflow: hidden; 14 | width: $size__site-sidebar; 15 | } 16 | 17 | .site-footer { 18 | clear: both; 19 | width: $size__site-main; 20 | } 21 | 22 | @import "no-sidebar"; 23 | -------------------------------------------------------------------------------- /assets/sass/layout/_sidebar-content.scss: -------------------------------------------------------------------------------- 1 | .content-area { 2 | float: right; 3 | margin: 0 0 0 (-$size__site-sidebar); 4 | width: $size__site-main; 5 | } 6 | 7 | .site-main { 8 | margin: 0 0 0 $size__site-sidebar; 9 | } 10 | 11 | .site-content .widget-area { 12 | float: left; 13 | overflow: hidden; 14 | width: $size__site-sidebar; 15 | } 16 | 17 | .site-footer { 18 | clear: both; 19 | width: $size__site-main; 20 | } 21 | 22 | @import "no-sidebar"; 23 | -------------------------------------------------------------------------------- /assets/sass/media/_galleries.scss: -------------------------------------------------------------------------------- 1 | .gallery { 2 | margin-bottom: 1.5em; 3 | } 4 | 5 | .gallery-item { 6 | display: inline-block; 7 | text-align: center; 8 | vertical-align: top; 9 | width: 100%; 10 | 11 | // Loops to enumerate the classes for gallery columns. 12 | @for $i from 2 through 9 { 13 | .gallery-columns-#{$i} & { 14 | max-width: map-get( $columns, $i ); 15 | } 16 | } 17 | } 18 | 19 | .gallery-caption { 20 | display: block; 21 | } 22 | -------------------------------------------------------------------------------- /config/templates.php: -------------------------------------------------------------------------------- 1 | [__('Custom Template', THEME_TD), ['page']], 13 | ]; 14 | -------------------------------------------------------------------------------- /assets/sass/site/_site.scss: -------------------------------------------------------------------------------- 1 | // @import "../layout/content-sidebar"; 2 | // @import "../layout/sidebar-content"; 3 | 4 | /*-------------------------------------------------------------- 5 | ## Posts and pages 6 | --------------------------------------------------------------*/ 7 | @import "primary/posts-and-pages"; 8 | 9 | /*-------------------------------------------------------------- 10 | ## Comments 11 | --------------------------------------------------------------*/ 12 | @import "primary/comments"; 13 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "themosis/theme", 3 | "description": "The Themosis framework boilerplate theme.", 4 | "keywords": ["themosis", "framework", "WordPress", "theme"], 5 | "license": "GPL-2.0-or-later", 6 | "authors":[ 7 | { 8 | "name": "Julien Lambé", 9 | "email": "julien@themosis.com", 10 | "homepage": "https://www.themosis.com/" 11 | } 12 | ], 13 | "type": "wordpress-theme", 14 | "require": { 15 | "php": ">=7.1.0", 16 | "composer/installers" : "~1.2" 17 | } 18 | } -------------------------------------------------------------------------------- /assets/sass/modules/_infinite-scroll.scss: -------------------------------------------------------------------------------- 1 | /* Globally hidden elements when Infinite Scroll is supported and in use. */ 2 | .infinite-scroll .posts-navigation, /* Older / Newer Posts Navigation (always hidden) */ 3 | .infinite-scroll.neverending .site-footer { /* Theme Footer (when set to scrolling) */ 4 | display: none; 5 | } 6 | 7 | /* When Infinite Scroll has reached its end we need to re-display elements that were hidden (via .neverending) before. */ 8 | .infinity-end.neverending .site-footer { 9 | display: block; 10 | } 11 | -------------------------------------------------------------------------------- /assets/sass/forms/_buttons.scss: -------------------------------------------------------------------------------- 1 | button, 2 | input[type="button"], 3 | input[type="reset"], 4 | input[type="submit"] { 5 | border: 1px solid; 6 | border-color: $color__border-button; 7 | border-radius: 3px; 8 | background: $color__background-button; 9 | color: rgba(0, 0, 0, .8); 10 | @include font-size(0.75); 11 | line-height: 1; 12 | padding: .6em 1em .4em; 13 | 14 | &:hover { 15 | border-color: $color__border-button-hover; 16 | } 17 | 18 | &:active, 19 | &:focus { 20 | border-color: $color__border-button-focus; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /assets/sass/modules/_clearings.scss: -------------------------------------------------------------------------------- 1 | .clear:before, 2 | .clear:after, 3 | .entry-content:before, 4 | .entry-content:after, 5 | .comment-content:before, 6 | .comment-content:after, 7 | .site-header:before, 8 | .site-header:after, 9 | .site-content:before, 10 | .site-content:after, 11 | .site-footer:before, 12 | .site-footer:after { 13 | @include clearfix; 14 | } 15 | 16 | .clear:after, 17 | .entry-content:after, 18 | .comment-content:after, 19 | .site-header:after, 20 | .site-content:after, 21 | .site-footer:after { 22 | @include clearfix-after; 23 | } 24 | -------------------------------------------------------------------------------- /views/pages/search.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.main') 2 | 3 | @section('content') 4 | @if(have_posts()) 5 | 8 | @while(have_posts()) 9 | @php(the_post()) 10 | @template('parts.content', 'search') 11 | @endwhile 12 | {!! get_the_posts_navigation() !!} 13 | @else 14 | @template('parts.content', 'none') 15 | @endif 16 | @endsection -------------------------------------------------------------------------------- /config/sidebars.php: -------------------------------------------------------------------------------- 1 | __('First sidebar', THEME_TD), 11 | 'id' => 'sidebar-1', 12 | 'description' => __('Area of first sidebar', THEME_TD), 13 | 'class' => 'custom', 14 | 'before_widget' => '
', 15 | 'after_widget' => '
', 16 | 'before_title' => '

', 17 | 'after_title' => '

', 18 | ] 19 | ]; 20 | -------------------------------------------------------------------------------- /views/pages/front.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.main') 2 | 3 | @section('content') 4 | @if(have_posts()) 5 | @if(is_home() && ! is_front_page()) 6 |
7 |

{{ single_post_title('', false) }}

8 |
9 | @endif 10 | @while(have_posts()) 11 | @php(the_post()) 12 | @template('parts.content', get_post_type()) 13 | @endwhile 14 | {!! get_the_posts_navigation() !!} 15 | @else 16 | @template('parts.content', 'none') 17 | @endif 18 | @endsection -------------------------------------------------------------------------------- /views/blog/archive.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.main') 2 | 3 | @section('content') 4 | @if(have_posts()) 5 | 9 | @while(have_posts()) 10 | @php(the_post()) 11 | @template('parts.content', get_post_type()) 12 | @endwhile 13 | {!! get_the_posts_navigation() !!} 14 | @else 15 | @template('parts.content', 'none') 16 | @endif 17 | @endsection -------------------------------------------------------------------------------- /assets/sass/variables-site/_colors.scss: -------------------------------------------------------------------------------- 1 | $color__background-body: #fff; 2 | $color__background-screen: #f1f1f1; 3 | $color__background-hr: #ccc; 4 | $color__background-button: #e6e6e6; 5 | $color__background-pre: #eee; 6 | $color__background-ins: #fff9c0; 7 | 8 | $color__text-screen: #21759b; 9 | $color__text-input: #666; 10 | $color__text-input-focus: #111; 11 | $color__link: royalblue; 12 | $color__link-visited: purple; 13 | $color__link-hover: midnightblue; 14 | $color__text-main: #404040; 15 | 16 | $color__border-button: #ccc #ccc #bbb; 17 | $color__border-button-hover: #ccc #bbb #aaa; 18 | $color__border-button-focus: #aaa #bbb #bbb; 19 | $color__border-input: #ccc; 20 | $color__border-abbr: #666; 21 | -------------------------------------------------------------------------------- /webpack.mix.js: -------------------------------------------------------------------------------- 1 | let mix = require('laravel-mix'); 2 | 3 | /* 4 | |-------------------------------------------------------------------------- 5 | | Mix Asset Management 6 | |-------------------------------------------------------------------------- 7 | | 8 | | Mix provides a clean, fluent API for defining some Webpack build steps 9 | | for your Laravel application. By default, we are compiling the Sass 10 | | file for your application, as well as bundling up your JS files. 11 | | 12 | */ 13 | mix.setPublicPath('dist'); 14 | 15 | mix.js('assets/js/theme.js', 'dist/js/theme.min.js') 16 | .sass('assets/sass/style.scss', 'dist/css/theme.css') 17 | .sass('assets/sass/woocommerce.scss', 'dist/css'); 18 | -------------------------------------------------------------------------------- /config/images.php: -------------------------------------------------------------------------------- 1 | [200, 125, false], 19 | ]; 20 | -------------------------------------------------------------------------------- /assets/sass/forms/_fields.scss: -------------------------------------------------------------------------------- 1 | input[type="text"], 2 | input[type="email"], 3 | input[type="url"], 4 | input[type="password"], 5 | input[type="search"], 6 | input[type="number"], 7 | input[type="tel"], 8 | input[type="range"], 9 | input[type="date"], 10 | input[type="month"], 11 | input[type="week"], 12 | input[type="time"], 13 | input[type="datetime"], 14 | input[type="datetime-local"], 15 | input[type="color"], 16 | textarea { 17 | color: $color__text-input; 18 | border: 1px solid $color__border-input; 19 | border-radius: 3px; 20 | padding: 3px; 21 | 22 | &:focus { 23 | color: $color__text-input-focus; 24 | } 25 | } 26 | 27 | select { 28 | border: 1px solid $color__border-input; 29 | } 30 | 31 | textarea { 32 | width: 100%; 33 | } 34 | -------------------------------------------------------------------------------- /views/comments/list.blade.php: -------------------------------------------------------------------------------- 1 |
2 | @if(have_comments()) 3 |

{!! comments_title(get_comments_number()) !!}

4 | {!! get_the_comments_navigation() !!} 5 |
    6 | {!! wp_list_comments([ 7 | 'style' => 'ol', 8 | 'short_ping' => true, 9 | 'echo' => false 10 | ]) !!} 11 |
12 | {!! get_the_comments_navigation() !!} 13 | 14 | @unless(comments_open()) 15 |

{{ esc_html__('Comments are closed.', THEME_TD) }}

16 | @endunless 17 | @endif 18 | @php(comment_form()) 19 |
20 | -------------------------------------------------------------------------------- /assets/sass/mixins/_mixins-master.scss: -------------------------------------------------------------------------------- 1 | // Rem output with px fallback 2 | @mixin font-size($sizeValue: 1) { 3 | font-size: ($sizeValue * 16) * 1px; 4 | font-size: $sizeValue * 1rem; 5 | } 6 | 7 | // Center block 8 | @mixin center-block { 9 | display: block; 10 | margin-left: auto; 11 | margin-right: auto; 12 | } 13 | 14 | // Clearfix 15 | @mixin clearfix() { 16 | content: ""; 17 | display: table; 18 | table-layout: fixed; 19 | } 20 | 21 | // Clear after (not all clearfix need this also) 22 | @mixin clearfix-after() { 23 | clear: both; 24 | } 25 | 26 | // Column width with margin 27 | @mixin column-width($numberColumns: 3) { 28 | width: map-get( $columns, $numberColumns ) - ( ( $columns__margin * ( $numberColumns - 1 ) ) / $numberColumns ); 29 | } 30 | -------------------------------------------------------------------------------- /views/parts/content-search.blade.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |

4 | {!! Loop::title() !!} 5 |

6 | @if('post' === get_post_type()) 7 | 11 | @endif 12 |
13 | {!! post_thumbnail() !!} 14 |
15 | {!! Loop::excerpt() !!} 16 |
17 | 20 |
21 | -------------------------------------------------------------------------------- /assets/sass/media/_media.scss: -------------------------------------------------------------------------------- 1 | .page-content .wp-smiley, 2 | .entry-content .wp-smiley, 3 | .comment-content .wp-smiley { 4 | border: none; 5 | margin-bottom: 0; 6 | margin-top: 0; 7 | padding: 0; 8 | } 9 | 10 | /* Make sure embeds and iframes fit their containers. */ 11 | embed, 12 | iframe, 13 | object { 14 | max-width: 100%; 15 | } 16 | 17 | /* Make sure logo link wraps around logo image. */ 18 | .custom-logo-link { 19 | display: inline-block; 20 | } 21 | 22 | /*-------------------------------------------------------------- 23 | ## Captions 24 | --------------------------------------------------------------*/ 25 | @import "captions"; 26 | 27 | /*-------------------------------------------------------------- 28 | ## Galleries 29 | --------------------------------------------------------------*/ 30 | @import "galleries"; 31 | -------------------------------------------------------------------------------- /assets/sass/typography/_copy.scss: -------------------------------------------------------------------------------- 1 | p { 2 | margin-bottom: 1.5em; 3 | } 4 | 5 | dfn, cite, em, i { 6 | font-style: italic; 7 | } 8 | 9 | blockquote { 10 | margin: 0 1.5em; 11 | } 12 | 13 | address { 14 | margin: 0 0 1.5em; 15 | } 16 | 17 | pre { 18 | background: $color__background-pre; 19 | font-family: $font__pre; 20 | @include font-size(0.9375); 21 | line-height: $font__line-height-pre; 22 | margin-bottom: 1.6em; 23 | max-width: 100%; 24 | overflow: auto; 25 | padding: 1.6em; 26 | } 27 | 28 | code, kbd, tt, var { 29 | font-family: $font__code; 30 | @include font-size(0.9375); 31 | } 32 | 33 | abbr, acronym { 34 | border-bottom: 1px dotted $color__border-abbr; 35 | cursor: help; 36 | } 37 | 38 | mark, ins { 39 | background: $color__background-ins; 40 | text-decoration: none; 41 | } 42 | 43 | big { 44 | font-size: 125%; 45 | } 46 | -------------------------------------------------------------------------------- /assets/sass/woocommerce.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Theme Name: _s 3 | 4 | WooCommerce styles override 5 | */ 6 | 7 | /** 8 | * WooCommerce color variables 9 | */ 10 | $woocommerce__color-error: #e2401c; 11 | $woocommerce__color-success: #0f834d; 12 | $woocommerce__color-info: #3D9CD2; 13 | 14 | /** 15 | * Imports 16 | */ 17 | @import "variables-site/variables-site"; 18 | @import "mixins/mixins-master"; 19 | 20 | /** 21 | * Shop tables 22 | */ 23 | @import "shop/tables"; 24 | 25 | /** 26 | * Products 27 | */ 28 | @import "shop/products"; 29 | 30 | /** 31 | * Single product 32 | */ 33 | @import "shop/single-product"; 34 | 35 | /** 36 | * Checkout 37 | */ 38 | @import "shop/checkout"; 39 | 40 | /** 41 | * General WooCommerce components 42 | */ 43 | @import "shop/components"; 44 | 45 | /** 46 | * WooCommerce widgets 47 | */ 48 | @import "shop/widgets"; 49 | -------------------------------------------------------------------------------- /assets/sass/elements/_elements.scss: -------------------------------------------------------------------------------- 1 | html { 2 | box-sizing: border-box; 3 | } 4 | 5 | *, 6 | *:before, 7 | *:after { /* Inherit box-sizing to make it easier to change the property for components that leverage other behavior; see https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */ 8 | box-sizing: inherit; 9 | } 10 | 11 | body { 12 | background: $color__background-body; /* Fallback for when there is no custom background color defined. */ 13 | } 14 | 15 | hr { 16 | background-color: $color__background-hr; 17 | border: 0; 18 | height: 1px; 19 | margin-bottom: 1.5em; 20 | } 21 | 22 | @import "lists"; 23 | 24 | img { 25 | height: auto; /* Make sure images are scaled correctly. */ 26 | max-width: 100%; /* Adhere to container width. */ 27 | } 28 | 29 | figure { 30 | margin: 1em 0; /* Extra wide images within figure tags don't overflow the content area. */ 31 | } 32 | 33 | @import "tables"; 34 | -------------------------------------------------------------------------------- /resources/Providers/RouteServiceProvider.php: -------------------------------------------------------------------------------- 1 | namespace($this->namespace) 34 | ->group(themes_path($themeName.'/routes.php')); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /dist/js/theme.min.js: -------------------------------------------------------------------------------- 1 | !function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=0)}([function(e,t,n){n(1),n(2),e.exports=n(7)},function(e,t){},function(e,t){},,,,,function(e,t){}]); -------------------------------------------------------------------------------- /assets/sass/shop/_products.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Products 3 | */ 4 | ul.products { 5 | @include clearfix; 6 | margin: 0; 7 | padding: 0; 8 | 9 | li.product { 10 | list-style: none; 11 | position: relative; 12 | margin-bottom: 2em; 13 | 14 | .woocommerce-loop-product__title { 15 | font-size: 1rem; 16 | } 17 | 18 | img { 19 | display: block; 20 | } 21 | 22 | .button { 23 | display: block; 24 | } 25 | } 26 | } 27 | 28 | @media screen and (min-width: 48em) { 29 | ul.products { 30 | li.product { 31 | @include column-width(3); 32 | float: left; 33 | margin-right: $columns__margin; 34 | 35 | &.first { 36 | clear: both; 37 | } 38 | 39 | &.last { 40 | margin-right: 0; 41 | } 42 | } 43 | } 44 | 45 | .columns-1 { 46 | ul.products { 47 | li.product { 48 | float: none; 49 | width: 100%; 50 | } 51 | } 52 | } 53 | 54 | @for $i from 2 through 6 { 55 | .columns-#{$i} { 56 | ul.products { 57 | li.product { 58 | @include column-width( $i ); 59 | } 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /assets/sass/modules/_accessibility.scss: -------------------------------------------------------------------------------- 1 | /* Text meant only for screen readers. */ 2 | .screen-reader-text { 3 | border: 0; 4 | clip: rect(1px, 1px, 1px, 1px); 5 | clip-path: inset(50%); 6 | height: 1px; 7 | margin: -1px; 8 | overflow: hidden; 9 | padding: 0; 10 | position: absolute !important; 11 | width: 1px; 12 | word-wrap: normal !important; /* Many screen reader and browser combinations announce broken words as they would appear visually. */ 13 | 14 | &:focus { 15 | background-color: $color__background-screen; 16 | border-radius: 3px; 17 | box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); 18 | clip: auto !important; 19 | clip-path: none; 20 | color: $color__text-screen; 21 | display: block; 22 | @include font-size(0.875); 23 | font-weight: bold; 24 | height: auto; 25 | left: 5px; 26 | line-height: normal; 27 | padding: 15px 23px 14px; 28 | text-decoration: none; 29 | top: 5px; 30 | width: auto; 31 | z-index: 100000; /* Above WP toolbar. */ 32 | } 33 | } 34 | 35 | /* Do not show the outline on the skip link target. */ 36 | #content[tabindex="-1"]:focus { 37 | outline: 0; 38 | } 39 | -------------------------------------------------------------------------------- /resources/Providers/AssetServiceProvider.php: -------------------------------------------------------------------------------- 1 | app->make('wp.theme'); 25 | 26 | Asset::add('theme_styles', 'css/theme.css', [], $theme->getHeader('version'))->to('front'); 27 | Asset::add('theme_woo', 'css/woocommerce.css', ['theme_styles'], $theme->getHeader('version'))->to('front'); 28 | Asset::add('theme_js', 'js/theme.min.js', [], $theme->getHeader('version'))->to('front'); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /inc/template-functions.php: -------------------------------------------------------------------------------- 1 | '; 33 | } 34 | }); 35 | 36 | /** 37 | * Set the content width in pixels, based on the theme's design and stylesheet. 38 | */ 39 | Action::add('after_setup_theme', function () { 40 | $GLOBALS['content_width'] = 640; 41 | }, 0); 42 | -------------------------------------------------------------------------------- /assets/sass/shop/_widgets.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * WooCommerce Price Filter 3 | */ 4 | .widget_price_filter { 5 | .price_slider { 6 | margin-bottom: 1.5em; 7 | } 8 | 9 | .price_slider_amount { 10 | text-align: right; 11 | line-height: 2.4em; 12 | 13 | .button { 14 | float: left; 15 | } 16 | } 17 | 18 | .ui-slider { 19 | position: relative; 20 | text-align: left; 21 | } 22 | 23 | .ui-slider .ui-slider-handle { 24 | position: absolute; 25 | z-index: 2; 26 | width: 1em; 27 | height: 1em; 28 | cursor: ew-resize; 29 | outline: none; 30 | background: $color__link; 31 | box-sizing: border-box; 32 | margin-top: -.25em; 33 | opacity: 1; 34 | 35 | &:last-child { 36 | margin-left: -1em; 37 | } 38 | 39 | &:hover, 40 | &.ui-state-active { 41 | box-shadow: 0 0 0 .25em rgba(#000, 0.1); 42 | } 43 | } 44 | 45 | .ui-slider .ui-slider-range { 46 | position: absolute; 47 | z-index: 1; 48 | display: block; 49 | border: 0; 50 | background: $color__link; 51 | } 52 | 53 | .price_slider_wrapper .ui-widget-content { 54 | background: rgba(0,0,0,0.1); 55 | } 56 | 57 | .ui-slider-horizontal { 58 | height: .5em; 59 | } 60 | 61 | .ui-slider-horizontal .ui-slider-range { 62 | height: 100%; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /assets/sass/shop/_tables.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Shop tables 3 | */ 4 | table.shop_table_responsive { 5 | thead { 6 | display: none; 7 | } 8 | 9 | tbody { 10 | th { 11 | display: none; 12 | } 13 | } 14 | 15 | tr { 16 | td { 17 | display: block; 18 | text-align: right; 19 | clear: both; 20 | 21 | &:before { 22 | content: attr(data-title) ': '; 23 | float: left; 24 | } 25 | 26 | &.product-remove { 27 | a { 28 | text-align: left; 29 | } 30 | 31 | &:before { 32 | display: none; 33 | } 34 | } 35 | 36 | &.actions, 37 | &.download-actions { 38 | &:before { 39 | display: none; 40 | } 41 | } 42 | 43 | &.download-actions { 44 | .button { 45 | display: block; 46 | text-align: center; 47 | } 48 | } 49 | } 50 | } 51 | } 52 | 53 | @media screen and (min-width: 48em) { 54 | table.shop_table_responsive { 55 | thead { 56 | display: table-header-group; 57 | } 58 | 59 | tbody { 60 | th { 61 | display: table-cell; 62 | } 63 | } 64 | 65 | tr { 66 | th, td { 67 | text-align: left; 68 | } 69 | 70 | td { 71 | display: table-cell; 72 | 73 | &:before { 74 | display: none; 75 | } 76 | } 77 | } 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "themosis-theme", 3 | "version": "2.0.0", 4 | "description": "Themosis framework boilerplate theme.", 5 | "scripts": { 6 | "dev": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", 7 | "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", 8 | "hot": "cross-env NODE_ENV=development webpack-dev-server --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", 9 | "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" 10 | }, 11 | "author": "Themosis", 12 | "license": "GPL-2.0-or-later", 13 | "bugs": { 14 | "url": "https://github.com/themosis/theme/issues" 15 | }, 16 | "homepage": "https://github.com/themosis/theme#readme", 17 | "devDependencies": { 18 | "cross-env": "^5.2.0", 19 | "laravel-mix": "^4.0.0", 20 | "resolve-url-loader": "2.3.1", 21 | "sass": "^1.17.3", 22 | "sass-loader": "7.*", 23 | "vue-template-compiler": "^2.6.10" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Themosis framework - Theme 2 | ========================== 3 | 4 | The Themosis framework is a tool aimed to WordPress developers of any levels. But the better WordPress and PHP knowledge you have the easier it is to work with. 5 | 6 | Themosis framework is a tool to help you develop websites and web applications faster using [WordPress](https://wordpress.org/). Using an elegant and simple code syntax, Themosis framework helps you structure and organize your code and allows you to better manage and scale your WordPress websites and applications. 7 | 8 | Development team 9 | ---------------- 10 | The framework was created by [Julien Lambé](http://www.themosis.com/), who continues to lead the development. 11 | 12 | Contributing 13 | ------------ 14 | Any help is appreciated. The project is open-source and we encourage you to participate. You can contribute to the project in multiple ways by: 15 | 16 | - Reporting a bug issue 17 | - Suggesting features 18 | - Sending a pull request with code fix or feature 19 | - Following the projects on [GitHub](https://github.com/themosis) 20 | - Following us on Twitter: [@Themosis](https://twitter.com/Themosis) 21 | - Sharing the project around your community 22 | 23 | For details about contributing to the framework, please check the [contribution guide](http://framework.themosis.com/docs/1.3/contributing/). -------------------------------------------------------------------------------- /views/parts/content-none.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 5 |
6 | @if(is_home() && current_user_can('publish_posts')) 7 |

8 | {!! sprintf( 9 | wp_kses( 10 | __('Ready to publish your first post? Get started here.', THEME_TD), 11 | [ 12 | 'a' => [ 13 | 'href' => [] 14 | ] 15 | ] 16 | ), 17 | esc_url(admin_url('post-new.php')) 18 | ) !!} 19 |

20 | @elseif(is_search()) 21 |

{{ esc_html__('Sorry, but nothing matched your search terms. Please try again with some different keywords.', THEME_TD) }}

22 | {!! get_search_form(false) !!} 23 | @else 24 |

{{ esc_html__('It seems we can’t find what you’re looking for. Perhaps searching can help.', THEME_TD) }}

25 | {!! get_search_form(false) !!} 26 | @endif 27 |
28 |
-------------------------------------------------------------------------------- /views/parts/content-page.blade.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |

{!! Loop::title() !!}

4 |
5 | 6 | {!! post_thumbnail() !!} 7 | 8 |
9 | {!! Loop::content() !!} 10 | {!! wp_link_pages([ 11 | 'before' => '', 13 | 'echo' => false 14 | ]) !!} 15 |
16 | 17 | @if(get_edit_post_link()) 18 | 36 | @endif 37 |
38 | -------------------------------------------------------------------------------- /views/errors/404.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.main') 2 | 3 | @section('content') 4 |
5 | 8 |
9 |

{{ esc_html__('It looks like nothing was found at this location. Maybe try one of the links below or a search?', THEME_TD) }}

10 | {!! get_search_form(false) !!} 11 | @php(the_widget('WP_Widget_Recent_Posts')) 12 |
13 |

{{ esc_html__('Most Used Categories', THEME_TD) }}

14 |
    15 | {!! wp_list_categories([ 16 | 'orderby' => 'count', 17 | 'order' => 'DESC', 18 | 'show_count' => 1, 19 | 'title_li' => '', 20 | 'number' => 10, 21 | 'echo' => false 22 | ]) !!} 23 |
24 |
25 | @php(the_widget('WP_Widget_Archives', 'dropdown=1', 'after_title='.archive_content_message())) 26 | @php(the_widget('WP_Widget_Tag_Cloud')) 27 |
28 |
29 | @endsection -------------------------------------------------------------------------------- /views/parts/content.blade.php: -------------------------------------------------------------------------------- 1 |
2 |
3 | @if(is_singular()) 4 |

{!! Loop::title() !!}

5 | @else 6 |

7 | {!! Loop::title() !!} 8 |

9 | @endif 10 | 11 | @if('post' === get_post_type()) 12 | 16 | @endif 17 |
18 | {!! post_thumbnail() !!} 19 |
20 | {!! Loop::content(sprintf( 21 | wp_kses( 22 | __('Continue reading "%s"', THEME_TD), 23 | [ 24 | 'span' => [ 25 | 'class' => [] 26 | ] 27 | ] 28 | ), 29 | Loop::title() 30 | )) !!} 31 | {!! 32 | wp_link_pages([ 33 | 'before' => '', 35 | 'echo' => false 36 | ]); 37 | !!} 38 |
39 | 42 |
43 | -------------------------------------------------------------------------------- /assets/sass/shop/_single-product.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Single Product 3 | */ 4 | .single-product { 5 | div.product { 6 | @include clearfix; 7 | position: relative; 8 | 9 | .woocommerce-product-gallery { 10 | position: relative; 11 | 12 | .woocommerce-product-gallery__trigger { 13 | position: absolute; 14 | top: 1em; 15 | right: 1em; 16 | display: block; 17 | z-index: 99; 18 | } 19 | 20 | .flex-viewport { 21 | margin-bottom: 1em; 22 | } 23 | 24 | .flex-control-thumbs { 25 | @include clearfix; 26 | margin: 0; 27 | padding: 0; 28 | 29 | li { 30 | list-style: none; 31 | cursor: pointer; 32 | float: left; 33 | 34 | img { 35 | opacity: .5; 36 | 37 | &.flex-active { 38 | opacity: 1; 39 | } 40 | } 41 | 42 | &:hover { 43 | img { 44 | opacity: 1; 45 | } 46 | } 47 | } 48 | } 49 | 50 | @for $i from 2 through 5 { 51 | &.woocommerce-product-gallery--columns-#{$i} { 52 | .flex-control-thumbs { 53 | li { 54 | @include column-width($i); 55 | 56 | &:nth-child(#{$i}n) { 57 | margin-right: 0; 58 | } 59 | 60 | &:nth-child(#{$i}n+1) { 61 | clear: both; 62 | } 63 | } 64 | } 65 | } 66 | } 67 | } 68 | } 69 | } 70 | 71 | .stock { 72 | &:empty:before { 73 | display: none; 74 | } 75 | 76 | &.in-stock { 77 | color: $woocommerce__color-success; 78 | } 79 | 80 | &.out-of-stock { 81 | color: $woocommerce__color-error; 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /config/theme.php: -------------------------------------------------------------------------------- 1 | [ 15 | 'Theme\\' => 'resources' 16 | ], 17 | 18 | /* 19 | |-------------------------------------------------------------------------- 20 | | Theme Service Providers 21 | |-------------------------------------------------------------------------- 22 | | 23 | | The service providers listed here will be automatically loaded on the 24 | | request to your application. Feel free to add your own services to 25 | | this array to grant expanded functionality to your applications. 26 | | 27 | */ 28 | 'providers' => [ 29 | Theme\Providers\AssetServiceProvider::class, 30 | Theme\Providers\RouteServiceProvider::class 31 | ], 32 | 33 | /* 34 | |-------------------------------------------------------------------------- 35 | | Theme views directories path. 36 | |-------------------------------------------------------------------------- 37 | | 38 | | You can define a list of directories paths for the views of your theme. 39 | | Paths are relatives to the theme base directory. 40 | | 41 | */ 42 | 'views' => [ 43 | 'views' 44 | ] 45 | ]; 46 | -------------------------------------------------------------------------------- /languages/themosis.pot: -------------------------------------------------------------------------------- 1 | #, fuzzy 2 | msgid "" 3 | msgstr "" 4 | "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" 5 | "Project-Id-Version: Themosis\n" 6 | "POT-Creation-Date: 2018-08-28 17:31+0200\n" 7 | "PO-Revision-Date: 2018-08-28 17:29+0200\n" 8 | "Last-Translator: \n" 9 | "Language-Team: \n" 10 | "MIME-Version: 1.0\n" 11 | "Content-Type: text/plain; charset=UTF-8\n" 12 | "Content-Transfer-Encoding: 8bit\n" 13 | "X-Generator: Poedit 2.0.9\n" 14 | "X-Poedit-Basepath: ..\n" 15 | "X-Poedit-Flags-xgettext: --add-comments=translators:\n" 16 | "X-Poedit-WPHeader: style.css\n" 17 | "X-Poedit-SourceCharset: UTF-8\n" 18 | "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" 19 | "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" 20 | "_nx_noop:3c,1,2;__ngettext_noop:1,2\n" 21 | "X-Poedit-SearchPath-0: .\n" 22 | "X-Poedit-SearchPathExcluded-0: *.js\n" 23 | 24 | #: config/menus.php:10 25 | msgid "Header Navigation" 26 | msgstr "" 27 | 28 | #: config/sidebars.php:10 29 | msgid "First sidebar" 30 | msgstr "" 31 | 32 | #: config/sidebars.php:12 33 | msgid "Area of first sidebar" 34 | msgstr "" 35 | 36 | #: config/templates.php:12 37 | msgid "Custom Template" 38 | msgstr "" 39 | 40 | #. Theme Name of the plugin/theme 41 | msgid "Themosis" 42 | msgstr "" 43 | 44 | #. Theme URI of the plugin/theme 45 | msgid "https://framework.themosis.com/" 46 | msgstr "" 47 | 48 | #. Description of the plugin/theme 49 | msgid "The Themosis framework base theme." 50 | msgstr "" 51 | 52 | #. Author of the plugin/theme 53 | msgid "Themosis Team" 54 | msgstr "" 55 | 56 | #. Author URI of the plugin/theme 57 | msgid "https://www.themosis.com/" 58 | msgstr "" 59 | -------------------------------------------------------------------------------- /assets/sass/navigation/_menus.scss: -------------------------------------------------------------------------------- 1 | .main-navigation { 2 | clear: both; 3 | display: block; 4 | float: left; 5 | width: 100%; 6 | 7 | ul { 8 | display: none; 9 | list-style: none; 10 | margin: 0; 11 | padding-left: 0; 12 | 13 | ul { 14 | box-shadow: 0 3px 3px rgba(0, 0, 0, 0.2); 15 | float: left; 16 | position: absolute; 17 | top: 100%; 18 | left: -999em; 19 | z-index: 99999; 20 | 21 | ul { 22 | left: -999em; 23 | top: 0; 24 | } 25 | 26 | li { 27 | &:hover > ul, 28 | &.focus > ul { 29 | left: 100%; 30 | } 31 | } 32 | 33 | a { 34 | width: 200px; 35 | } 36 | 37 | :hover > a, 38 | .focus > a { 39 | } 40 | 41 | a:hover, 42 | a.focus { 43 | } 44 | } 45 | 46 | li:hover > ul, 47 | li.focus > ul { 48 | left: auto; 49 | } 50 | } 51 | 52 | li { 53 | float: left; 54 | position: relative; 55 | 56 | &:hover > a, 57 | &.focus > a { 58 | } 59 | } 60 | 61 | a { 62 | display: block; 63 | text-decoration: none; 64 | } 65 | 66 | .current_page_item > a, 67 | .current-menu-item > a, 68 | .current_page_ancestor > a, 69 | .current-menu-ancestor > a { 70 | } 71 | } 72 | 73 | /* Small menu. */ 74 | .menu-toggle, 75 | .main-navigation.toggled ul { 76 | display: block; 77 | } 78 | 79 | @media screen and (min-width: 37.5em) { 80 | .menu-toggle { 81 | display: none; 82 | } 83 | .main-navigation ul { 84 | display: block; 85 | } 86 | } 87 | 88 | .comment-navigation, 89 | .posts-navigation, 90 | .post-navigation { 91 | 92 | .site-main & { 93 | margin: 0 0 1.5em; 94 | overflow: hidden; 95 | } 96 | 97 | .nav-previous { 98 | float: left; 99 | width: 50%; 100 | } 101 | 102 | .nav-next { 103 | float: right; 104 | text-align: right; 105 | width: 50%; 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /.php_cs.dist: -------------------------------------------------------------------------------- 1 | in([ 11 | 'config', 12 | 'inc', 13 | 'resources' 14 | ]) 15 | ->exclude([ 16 | 'views', 17 | 'node_modules' 18 | ]); 19 | 20 | return Config::create() 21 | ->setFinder($finder) 22 | ->setRules([ 23 | '@PSR2' => true, 24 | 'strict_param' => false, 25 | 'array_syntax' => [ 26 | 'syntax' => 'short' 27 | ], 28 | 'cast_spaces' => [ 29 | 'space' => 'single' 30 | ], 31 | 'concat_space' => [ 32 | 'spacing' => 'none' 33 | ], 34 | 'ordered_imports' => true, 35 | 'no_unused_imports' => true, 36 | 'no_whitespace_before_comma_in_array' => true, 37 | 'blank_line_before_return' => true, 38 | 'no_whitespace_in_blank_line' => true, 39 | 'blank_line_after_namespace' => true, 40 | 'single_blank_line_before_namespace' => true, 41 | 'single_line_after_imports' => true, 42 | 'blank_line_after_opening_tag' => true, 43 | 'no_empty_statement' => true, 44 | 'trailing_comma_in_multiline_array' => false, 45 | 'no_blank_lines_after_class_opening' => true, 46 | 'no_blank_lines_after_phpdoc' => true, 47 | 'phpdoc_trim' => true, 48 | 'phpdoc_add_missing_param_annotation' => true, 49 | 'phpdoc_align' => true, 50 | 'phpdoc_no_empty_return' => true, 51 | 'phpdoc_order' => true, 52 | 'phpdoc_return_self_reference' => true, 53 | 'phpdoc_scalar' => true, 54 | 'phpdoc_separation' => true, 55 | 'phpdoc_single_line_var_spacing' => true, 56 | 'phpdoc_var_without_name' => true, 57 | 'not_operator_with_successor_space' => true, 58 | 'return_type_declaration' => [ 59 | 'space_before' => 'none' 60 | ], 61 | 'semicolon_after_instruction' => true, 62 | 'trim_array_spaces' => true, 63 | 'ternary_operator_spaces' => true 64 | ]); 65 | -------------------------------------------------------------------------------- /views/layouts/main.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | @head 8 | 9 | 10 |
11 | 12 | 13 | 36 | 37 |
38 |
39 |
40 | @yield('content') 41 |
42 |
43 | 44 | @if(is_active_sidebar('sidebar-1')) 45 | 48 | @endif 49 | 50 |
51 | 52 | 61 |
62 | 63 | @footer 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /assets/sass/style.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | Themosis boilerplate is based on Underscores https://underscores.me/. 3 | Underscores is distributed under the terms of the GNU GPL v2 or later. 4 | 5 | Normalizing styles have been helped along thanks to the fine work of 6 | Nicolas Gallagher and Jonathan Neal https://necolas.github.io/normalize.css/ 7 | */ 8 | 9 | /*-------------------------------------------------------------- 10 | >>> TABLE OF CONTENTS: 11 | ---------------------------------------------------------------- 12 | # Normalize 13 | # Typography 14 | # Elements 15 | # Forms 16 | # Navigation 17 | ## Links 18 | ## Menus 19 | # Accessibility 20 | # Alignments 21 | # Clearings 22 | # Widgets 23 | # Content 24 | ## Posts and pages 25 | ## Comments 26 | # Infinite scroll 27 | # Media 28 | ## Captions 29 | ## Galleries 30 | --------------------------------------------------------------*/ 31 | @import "variables-site/variables-site"; 32 | @import "mixins/mixins-master"; 33 | 34 | /*-------------------------------------------------------------- 35 | # Normalize 36 | --------------------------------------------------------------*/ 37 | @import "normalize"; 38 | 39 | /*-------------------------------------------------------------- 40 | # Typography 41 | --------------------------------------------------------------*/ 42 | @import "typography/typography"; 43 | 44 | /*-------------------------------------------------------------- 45 | # Elements 46 | --------------------------------------------------------------*/ 47 | @import "elements/elements"; 48 | 49 | /*-------------------------------------------------------------- 50 | # Forms 51 | --------------------------------------------------------------*/ 52 | @import "forms/forms"; 53 | 54 | /*-------------------------------------------------------------- 55 | # Navigation 56 | --------------------------------------------------------------*/ 57 | @import "navigation/navigation"; 58 | 59 | /*-------------------------------------------------------------- 60 | # Accessibility 61 | --------------------------------------------------------------*/ 62 | @import "modules/accessibility"; 63 | 64 | /*-------------------------------------------------------------- 65 | # Alignments 66 | --------------------------------------------------------------*/ 67 | @import "modules/alignments"; 68 | 69 | /*-------------------------------------------------------------- 70 | # Clearings 71 | --------------------------------------------------------------*/ 72 | @import "modules/clearings"; 73 | 74 | /*-------------------------------------------------------------- 75 | # Widgets 76 | --------------------------------------------------------------*/ 77 | @import "site/secondary/widgets"; 78 | 79 | /*-------------------------------------------------------------- 80 | # Content 81 | --------------------------------------------------------------*/ 82 | @import "site/site"; 83 | 84 | /*-------------------------------------------------------------- 85 | # Infinite scroll 86 | --------------------------------------------------------------*/ 87 | @import "modules/infinite-scroll"; 88 | 89 | /*-------------------------------------------------------------- 90 | # Media 91 | --------------------------------------------------------------*/ 92 | @import "media/media"; 93 | -------------------------------------------------------------------------------- /config/support.php: -------------------------------------------------------------------------------- 1 | ['post', 'page'], 14 | 15 | /* ----------------------------------------------------------------------------------------------- */ 16 | // Post Formats 17 | // @see https://developer.wordpress.org/themes/functionality/post-formats/ 18 | /* ----------------------------------------------------------------------------------------------- */ 19 | 'post-formats' => [], 20 | 21 | /* ----------------------------------------------------------------------------------------------- */ 22 | // Title Tag 23 | /* ----------------------------------------------------------------------------------------------- */ 24 | 'title-tag', 25 | 26 | /* ----------------------------------------------------------------------------------------------- */ 27 | // HTML 5 28 | /* ----------------------------------------------------------------------------------------------- */ 29 | 'html5' => ['comment-list', 'comment-form', 'search-form', 'gallery', 'caption'], 30 | 31 | /* ----------------------------------------------------------------------------------------------- */ 32 | // Custom logo 33 | // @see https://developer.wordpress.org/themes/functionality/custom-logo/ 34 | /* ----------------------------------------------------------------------------------------------- */ 35 | 'custom-logo' => [ 36 | 'height' => 250, 37 | 'width' => 250, 38 | 'flex-width' => true, 39 | 'flex-height' => true 40 | ], 41 | 42 | /* ----------------------------------------------------------------------------------------------- */ 43 | // Feed Links 44 | /* ----------------------------------------------------------------------------------------------- */ 45 | 'automatic-feed-links', 46 | 47 | /* ----------------------------------------------------------------------------------------------- */ 48 | // Customize Selective Refresh For Widgets 49 | /* ----------------------------------------------------------------------------------------------- */ 50 | 'customize-selective-refresh-widgets', 51 | 52 | /* ----------------------------------------------------------------------------------------------- */ 53 | // Starter Content 54 | // @see https://make.wordpress.org/core/2016/11/30/starter-content-for-themes-in-4-7/ 55 | /* ----------------------------------------------------------------------------------------------- */ 56 | //'starter-content' => [], 57 | 58 | /* ----------------------------------------------------------------------------------------------- */ 59 | // Custom Background 60 | /* ----------------------------------------------------------------------------------------------- */ 61 | 'custom-background' => [ 62 | 'default-color' => 'ffffff', 63 | 'default-image' => '', 64 | // 'wp-head-callback' => '_custom_background_cb', 65 | // 'admin-head-callback' => '', 66 | // 'admin-preview-callback' => '' 67 | ], 68 | 69 | /* ----------------------------------------------------------------------------------------------- */ 70 | // Custom Header 71 | // @see https://developer.wordpress.org/themes/functionality/custom-headers/ 72 | /* ----------------------------------------------------------------------------------------------- */ 73 | //'custom-header' => [ 74 | // 'default-image' => '', 75 | // 'random-default' => false, 76 | // 'width' => 0, 77 | // 'height' => 0, 78 | // 'flex-height' => false, 79 | // 'flex-width' => false, 80 | // 'default-text-color' => '', 81 | // 'header-text' => true, 82 | // 'uploads' => true, 83 | // 'wp-head-callback' => '', 84 | // 'admin-head-callback' => '', 85 | // 'admin-preview-callback' => '', 86 | //] 87 | ]; 88 | -------------------------------------------------------------------------------- /functions.php: -------------------------------------------------------------------------------- 1 | loadTheme(__DIR__, 'config'); 16 | 17 | /* 18 | |-------------------------------------------------------------------------- 19 | | Theme i18n | l10n 20 | |-------------------------------------------------------------------------- 21 | | 22 | | Registers the "languages" directory for storing the theme translations. 23 | | 24 | | The "THEME_TD" constant is defined during bootstrap and its value is 25 | | set based on the "style.css" [Text Domain] property located into 26 | | the file header. 27 | | 28 | */ 29 | load_theme_textdomain( 30 | THEME_TD, 31 | $theme->getPath($theme->getHeader('domain_path')) 32 | ); 33 | 34 | /* 35 | |-------------------------------------------------------------------------- 36 | | Theme assets locations 37 | |-------------------------------------------------------------------------- 38 | | 39 | | You can define your theme assets paths and URLs. You can add as many 40 | | locations as you want. The key is your asset directory path and 41 | | the value is its public URL. 42 | | 43 | */ 44 | $theme->assets([ 45 | $theme->getPath('dist') => $theme->getUrl('dist') 46 | ]); 47 | 48 | /* 49 | |-------------------------------------------------------------------------- 50 | | Theme Views 51 | |-------------------------------------------------------------------------- 52 | | 53 | | Register theme view paths. By default, the theme is registering 54 | | the "views" directory but you can add as many directories as you want 55 | | from the theme.php configuration file. 56 | | 57 | */ 58 | $theme->views($theme->config('theme.views', [])); 59 | 60 | /* 61 | |-------------------------------------------------------------------------- 62 | | Theme Service Providers 63 | |-------------------------------------------------------------------------- 64 | | 65 | | Register theme service providers. You can manage the list of 66 | | services providers through the theme.php configuration file. 67 | | 68 | */ 69 | $theme->providers($theme->config('theme.providers', [])); 70 | 71 | /* 72 | |-------------------------------------------------------------------------- 73 | | Theme includes 74 | |-------------------------------------------------------------------------- 75 | | 76 | | Auto includes files by providing one or more paths. By default, we setup 77 | | an "inc" directory within the theme. Use that "inc" directory to extend 78 | | your theme features. Nested files are also included. 79 | | 80 | */ 81 | $theme->includes([ 82 | $theme->getPath('inc') 83 | ]); 84 | 85 | /* 86 | |-------------------------------------------------------------------------- 87 | | Theme Image Sizes 88 | |-------------------------------------------------------------------------- 89 | | 90 | | Register theme image sizes. Image sizes are configured in your theme 91 | | images.php configuration file. 92 | | 93 | */ 94 | $theme->images($theme->config('images')); 95 | 96 | /* 97 | |-------------------------------------------------------------------------- 98 | | Theme Menu Locations 99 | |-------------------------------------------------------------------------- 100 | | 101 | | Register theme menu locations. Menu locations are configured in your theme 102 | | menus.php configuration file. 103 | | 104 | */ 105 | $theme->menus($theme->config('menus')); 106 | 107 | /* 108 | |-------------------------------------------------------------------------- 109 | | Theme Sidebars 110 | |-------------------------------------------------------------------------- 111 | | 112 | | Register theme sidebars. Sidebars are configured in your theme 113 | | sidebars.php configuration file. 114 | | 115 | */ 116 | $theme->sidebars($theme->config('sidebars')); 117 | 118 | /* 119 | |-------------------------------------------------------------------------- 120 | | Theme Support 121 | |-------------------------------------------------------------------------- 122 | | 123 | | Register theme support. Support features are configured in your theme 124 | | support.php configuration file. 125 | | 126 | */ 127 | $theme->support($theme->config('support', [])); 128 | 129 | /* 130 | |-------------------------------------------------------------------------- 131 | | Theme Templates 132 | |-------------------------------------------------------------------------- 133 | | 134 | | Register theme templates. Templates are configured in your theme 135 | | templates.php configuration file. 136 | | 137 | */ 138 | $theme->templates($theme->config('templates', [])); 139 | -------------------------------------------------------------------------------- /assets/sass/shop/_components.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Header cart 3 | */ 4 | .site-header-cart { 5 | position: relative; 6 | margin: 0; 7 | padding: 0; 8 | @include clearfix; 9 | 10 | .cart-contents { 11 | text-decoration: none; 12 | } 13 | 14 | .widget_shopping_cart { 15 | display: none; 16 | } 17 | 18 | .product_list_widget { 19 | margin: 0; 20 | padding: 0; 21 | } 22 | } 23 | 24 | /** 25 | * Star rating 26 | */ 27 | .star-rating { 28 | overflow: hidden; 29 | position: relative; 30 | height: 1.618em; 31 | line-height: 1.618; 32 | font-size: 1em; 33 | width: 5.3em; 34 | font-family: 'star'; 35 | font-weight: 400; 36 | 37 | &:before { 38 | content: "\53\53\53\53\53"; 39 | opacity: .25; 40 | float: left; 41 | top: 0; 42 | left: 0; 43 | position: absolute; 44 | } 45 | 46 | span { 47 | overflow: hidden; 48 | float: left; 49 | top: 0; 50 | left: 0; 51 | position: absolute; 52 | padding-top: 1.5em; 53 | } 54 | 55 | span:before { 56 | content: "\53\53\53\53\53"; 57 | top: 0; 58 | position: absolute; 59 | left: 0; 60 | color: $color__link; 61 | } 62 | } 63 | 64 | p.stars { 65 | a { 66 | position: relative; 67 | height: 1em; 68 | width: 1em; 69 | text-indent: -999em; 70 | display: inline-block; 71 | text-decoration: none; 72 | margin-right: 1px; 73 | font-weight: 400; 74 | 75 | &:before { 76 | display: block; 77 | position: absolute; 78 | top: 0; 79 | left: 0; 80 | width: 1em; 81 | height: 1em; 82 | line-height: 1; 83 | font-family: "star"; 84 | content: "\53"; 85 | color: $color__text-main; 86 | text-indent: 0; 87 | opacity: .25; 88 | } 89 | 90 | &:hover { 91 | ~ a:before { 92 | content: "\53"; 93 | color: $color__text-main; 94 | opacity: .25; 95 | } 96 | } 97 | } 98 | 99 | &:hover { 100 | a { 101 | &:before { 102 | content: "\53"; 103 | color: $color__link; 104 | opacity: 1; 105 | } 106 | } 107 | } 108 | 109 | &.selected { 110 | a.active { 111 | &:before { 112 | content: "\53"; 113 | color: $color__link; 114 | opacity: 1; 115 | } 116 | 117 | ~ a:before { 118 | content: "\53"; 119 | color: $color__text-main; 120 | opacity: .25; 121 | } 122 | } 123 | 124 | a:not(.active) { 125 | &:before { 126 | content: "\53"; 127 | color: $color__link; 128 | opacity: 1; 129 | } 130 | } 131 | } 132 | } 133 | 134 | /** 135 | * Tabs 136 | */ 137 | .woocommerce-tabs { 138 | ul.tabs { 139 | list-style: none; 140 | margin: 0; 141 | padding: 0; 142 | text-align: left; 143 | 144 | li { 145 | display: block; 146 | margin: 0; 147 | position: relative; 148 | 149 | a { 150 | padding: 1em 0; 151 | display: block; 152 | } 153 | } 154 | } 155 | 156 | .panel { 157 | h2:first-of-type { 158 | margin-bottom: 1em; 159 | } 160 | } 161 | } 162 | 163 | /** 164 | * Password strength meter 165 | */ 166 | .woocommerce-password-strength { 167 | text-align: right; 168 | 169 | &.strong { 170 | color: $woocommerce__color-success; 171 | } 172 | 173 | &.short { 174 | color: $woocommerce__color-error; 175 | } 176 | 177 | &.bad { 178 | color: $woocommerce__color-error; 179 | } 180 | 181 | &.good { 182 | color: $woocommerce__color-info; 183 | } 184 | } 185 | 186 | /** 187 | * Forms 188 | */ 189 | .form-row { 190 | &.woocommerce-validated { 191 | input.input-text { 192 | box-shadow: inset 2px 0 0 $woocommerce__color-success; 193 | } 194 | } 195 | 196 | &.woocommerce-invalid { 197 | input.input-text { 198 | box-shadow: inset 2px 0 0 $woocommerce__color-error; 199 | } 200 | } 201 | } 202 | 203 | .required { 204 | color: red; 205 | } 206 | 207 | /** 208 | * Notices 209 | */ 210 | .woocommerce-message, 211 | .woocommerce-info, 212 | .woocommerce-error, 213 | .woocommerce-noreviews, 214 | p.no-comments { 215 | @include clearfix; 216 | background-color: $woocommerce__color-success; 217 | clear: both; 218 | } 219 | 220 | .woocommerce-info, 221 | .woocommerce-noreviews, 222 | p.no-comments { 223 | background-color: $woocommerce__color-info; 224 | } 225 | 226 | .woocommerce-error { 227 | background-color: $woocommerce__color-error; 228 | } 229 | 230 | .demo_store { 231 | position: fixed; 232 | left: 0; 233 | bottom: 0; 234 | right: 0; 235 | margin: 0; 236 | padding: 1em; 237 | background-color: $woocommerce__color-info; 238 | z-index: 9999; 239 | } 240 | 241 | @media screen and (min-width: 48em) { 242 | /** 243 | * Header cart 244 | */ 245 | .site-header-cart { 246 | .widget_shopping_cart { 247 | position: absolute; 248 | top: 100%; 249 | width: 100%; 250 | z-index: 999999; 251 | left: -999em; 252 | display: block; 253 | box-shadow: 0 3px 3px rgba(0, 0, 0, 0.2); 254 | } 255 | 256 | &:hover, 257 | &.focus { 258 | .widget_shopping_cart { 259 | left: 0; 260 | display: block; 261 | } 262 | } 263 | } 264 | } 265 | -------------------------------------------------------------------------------- /inc/template-tags.php: -------------------------------------------------------------------------------- 1 | %2$s'; 10 | 11 | if (get_the_time('U') !== get_the_modified_time('U')) { 12 | $time_string = ''; 13 | } 14 | 15 | $time_string = sprintf( 16 | $time_string, 17 | esc_attr(get_the_date(DATE_W3C)), 18 | esc_html(get_the_date()), 19 | esc_attr(get_the_modified_date(DATE_W3C)), 20 | esc_html(get_the_modified_date()) 21 | ); 22 | 23 | /* translators: %s: post date. */ 24 | $posted_on = sprintf( 25 | esc_html_x('Posted on %s', 'post date', THEME_TD), 26 | ''.$time_string.'' 27 | ); 28 | 29 | return ''.$posted_on.''; 30 | } 31 | } 32 | 33 | if (! function_exists('posted_by')) { 34 | /** 35 | * Prints HTML with meta information for the current author. 36 | */ 37 | function posted_by() 38 | { 39 | /* translators: %s: post author. */ 40 | $byline = sprintf( 41 | esc_html_x('by %s', 'post author', THEME_TD), 42 | ''.esc_html(get_the_author()).'' 43 | ); 44 | 45 | return ''.$byline.''; 46 | } 47 | } 48 | 49 | if (! function_exists('post_thumbnail')) { 50 | /** 51 | * Displays an optional post thumbnail. 52 | * 53 | * Wraps the post thumbnail in an anchor element on index views, or a div 54 | * element when on single views. 55 | */ 56 | function post_thumbnail() 57 | { 58 | if (post_password_required() || is_attachment() || ! has_post_thumbnail()) { 59 | return; 60 | } 61 | 62 | if (is_singular()) { 63 | return sprintf( 64 | '
%s
', 65 | get_the_post_thumbnail() 66 | ); 67 | } else { 68 | return sprintf( 69 | '', 70 | get_permalink(), 71 | get_the_post_thumbnail(null, 'post-thumbnail', [ 72 | 'alt' => the_title_attribute(['echo' => false]) 73 | ]) 74 | ); 75 | } 76 | } 77 | } 78 | 79 | if (! function_exists('entry_footer')) { 80 | /** 81 | * Prints HTML with meta information for the categories, tags and comments. 82 | */ 83 | function entry_footer() 84 | { 85 | // Hide category and tag text for pages. 86 | if ('post' === get_post_type()) { 87 | /* translators: used between list items, there is a space after the comma */ 88 | $categories_list = get_the_category_list(esc_html__(', ', THEME_TD)); 89 | 90 | if ($categories_list) { 91 | /* translators: 1: list of categories. */ 92 | printf( 93 | ''.esc_html__('Posted in %1$s', THEME_TD).'', 94 | $categories_list 95 | ); 96 | } 97 | 98 | /* translators: used between list items, there is a space after the comma */ 99 | $tags_list = get_the_tag_list('', esc_html_x(', ', 'list item separator', THEME_TD)); 100 | 101 | if ($tags_list) { 102 | /* translators: 1: list of tags. */ 103 | printf( 104 | ''.esc_html__('Tagged %1$s', THEME_TD).'', 105 | $tags_list 106 | ); 107 | } 108 | } 109 | 110 | if (! is_single() && ! post_password_required() && (comments_open() || get_comments_number())) { 111 | echo ''; 112 | comments_popup_link( 113 | sprintf( 114 | wp_kses( 115 | /* translators: %s: post title */ 116 | __('Leave a Comment on %s', THEME_TD), 117 | [ 118 | 'span' => [ 119 | 'class' => [] 120 | ] 121 | ] 122 | ), 123 | get_the_title() 124 | ) 125 | ); 126 | echo ''; 127 | } 128 | 129 | edit_post_link( 130 | sprintf( 131 | wp_kses( 132 | /* translators: %s: Name of current post. Only visible to screen readers */ 133 | __('Edit %s', THEME_TD), 134 | [ 135 | 'span' => [ 136 | 'class' => [] 137 | ] 138 | ] 139 | ), 140 | get_the_title() 141 | ), 142 | '', 143 | '' 144 | ); 145 | } 146 | } 147 | 148 | if (! function_exists('comments_title')) { 149 | /** 150 | * Return the comments title. 151 | * 152 | * @param int $count The number of comments. 153 | * 154 | * @return string 155 | */ 156 | function comments_title($count) 157 | { 158 | if (1 === $count) { 159 | return sprintf( 160 | esc_html__('One thought on “%1$s”', THEME_TD), 161 | ''.get_the_title().'' 162 | ); 163 | } 164 | 165 | return sprintf( 166 | esc_html(_nx('%1$s thought on “%2$s”', '%1$s thoughts on “%2$s”', $count, 'comments title', THEME_TD)), 167 | number_format_i18n($count), 168 | ''.get_the_title().'' 169 | ); 170 | } 171 | } 172 | 173 | if (! function_exists('archive_content_message')) { 174 | /** 175 | * Return an archive content message. 176 | * 177 | * @return string 178 | */ 179 | function archive_content_message() 180 | { 181 | return sprintf( 182 | '

'.esc_html__('Try looking in the monthly archives. %1$s', THEME_TD).'

', 183 | convert_smilies(':)') 184 | ); 185 | } 186 | } 187 | -------------------------------------------------------------------------------- /assets/sass/_normalize.scss: -------------------------------------------------------------------------------- 1 | /*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ 2 | 3 | /* Document 4 | ========================================================================== */ 5 | 6 | /** 7 | * 1. Correct the line height in all browsers. 8 | * 2. Prevent adjustments of font size after orientation changes in iOS. 9 | */ 10 | 11 | html { 12 | line-height: 1.15; /* 1 */ 13 | -webkit-text-size-adjust: 100%; /* 2 */ 14 | } 15 | 16 | /* Sections 17 | ========================================================================== */ 18 | 19 | /** 20 | * Remove the margin in all browsers. 21 | */ 22 | 23 | body { 24 | margin: 0; 25 | } 26 | 27 | /** 28 | * Correct the font size and margin on `h1` elements within `section` and 29 | * `article` contexts in Chrome, Firefox, and Safari. 30 | */ 31 | 32 | h1 { 33 | font-size: 2em; 34 | margin: 0.67em 0; 35 | } 36 | 37 | /* Grouping content 38 | ========================================================================== */ 39 | 40 | /** 41 | * 1. Add the correct box sizing in Firefox. 42 | * 2. Show the overflow in Edge and IE. 43 | */ 44 | 45 | hr { 46 | box-sizing: content-box; /* 1 */ 47 | height: 0; /* 1 */ 48 | overflow: visible; /* 2 */ 49 | } 50 | 51 | /** 52 | * 1. Correct the inheritance and scaling of font size in all browsers. 53 | * 2. Correct the odd `em` font sizing in all browsers. 54 | */ 55 | 56 | pre { 57 | font-family: monospace, monospace; /* 1 */ 58 | font-size: 1em; /* 2 */ 59 | } 60 | 61 | /* Text-level semantics 62 | ========================================================================== */ 63 | 64 | /** 65 | * Remove the gray background on active links in IE 10. 66 | */ 67 | 68 | a { 69 | background-color: transparent; 70 | } 71 | 72 | /** 73 | * 1. Remove the bottom border in Chrome 57- 74 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. 75 | */ 76 | 77 | abbr[title] { 78 | border-bottom: none; /* 1 */ 79 | text-decoration: underline; /* 2 */ 80 | text-decoration: underline dotted; /* 2 */ 81 | } 82 | 83 | /** 84 | * Add the correct font weight in Chrome, Edge, and Safari. 85 | */ 86 | 87 | b, 88 | strong { 89 | font-weight: bolder; 90 | } 91 | 92 | /** 93 | * 1. Correct the inheritance and scaling of font size in all browsers. 94 | * 2. Correct the odd `em` font sizing in all browsers. 95 | */ 96 | 97 | code, 98 | kbd, 99 | samp { 100 | font-family: monospace, monospace; /* 1 */ 101 | font-size: 1em; /* 2 */ 102 | } 103 | 104 | /** 105 | * Add the correct font size in all browsers. 106 | */ 107 | 108 | small { 109 | font-size: 80%; 110 | } 111 | 112 | /** 113 | * Prevent `sub` and `sup` elements from affecting the line height in 114 | * all browsers. 115 | */ 116 | 117 | sub, 118 | sup { 119 | font-size: 75%; 120 | line-height: 0; 121 | position: relative; 122 | vertical-align: baseline; 123 | } 124 | 125 | sub { 126 | bottom: -0.25em; 127 | } 128 | 129 | sup { 130 | top: -0.5em; 131 | } 132 | 133 | /* Embedded content 134 | ========================================================================== */ 135 | 136 | /** 137 | * Remove the border on images inside links in IE 10. 138 | */ 139 | 140 | img { 141 | border-style: none; 142 | } 143 | 144 | /* Forms 145 | ========================================================================== */ 146 | 147 | /** 148 | * 1. Change the font styles in all browsers. 149 | * 2. Remove the margin in Firefox and Safari. 150 | */ 151 | 152 | button, 153 | input, 154 | optgroup, 155 | select, 156 | textarea { 157 | font-family: inherit; /* 1 */ 158 | font-size: 100%; /* 1 */ 159 | line-height: 1.15; /* 1 */ 160 | margin: 0; /* 2 */ 161 | } 162 | 163 | /** 164 | * Show the overflow in IE. 165 | * 1. Show the overflow in Edge. 166 | */ 167 | 168 | button, 169 | input { /* 1 */ 170 | overflow: visible; 171 | } 172 | 173 | /** 174 | * Remove the inheritance of text transform in Edge, Firefox, and IE. 175 | * 1. Remove the inheritance of text transform in Firefox. 176 | */ 177 | 178 | button, 179 | select { /* 1 */ 180 | text-transform: none; 181 | } 182 | 183 | /** 184 | * Correct the inability to style clickable types in iOS and Safari. 185 | */ 186 | 187 | button, 188 | [type="button"], 189 | [type="reset"], 190 | [type="submit"] { 191 | -webkit-appearance: button; 192 | } 193 | 194 | /** 195 | * Remove the inner border and padding in Firefox. 196 | */ 197 | 198 | button::-moz-focus-inner, 199 | [type="button"]::-moz-focus-inner, 200 | [type="reset"]::-moz-focus-inner, 201 | [type="submit"]::-moz-focus-inner { 202 | border-style: none; 203 | padding: 0; 204 | } 205 | 206 | /** 207 | * Restore the focus styles unset by the previous rule. 208 | */ 209 | 210 | button:-moz-focusring, 211 | [type="button"]:-moz-focusring, 212 | [type="reset"]:-moz-focusring, 213 | [type="submit"]:-moz-focusring { 214 | outline: 1px dotted ButtonText; 215 | } 216 | 217 | /** 218 | * Correct the padding in Firefox. 219 | */ 220 | 221 | fieldset { 222 | padding: 0.35em 0.75em 0.625em; 223 | } 224 | 225 | /** 226 | * 1. Correct the text wrapping in Edge and IE. 227 | * 2. Correct the color inheritance from `fieldset` elements in IE. 228 | * 3. Remove the padding so developers are not caught out when they zero out 229 | * `fieldset` elements in all browsers. 230 | */ 231 | 232 | legend { 233 | box-sizing: border-box; /* 1 */ 234 | color: inherit; /* 2 */ 235 | display: table; /* 1 */ 236 | max-width: 100%; /* 1 */ 237 | padding: 0; /* 3 */ 238 | white-space: normal; /* 1 */ 239 | } 240 | 241 | /** 242 | * Add the correct vertical alignment in Chrome, Firefox, and Opera. 243 | */ 244 | 245 | progress { 246 | vertical-align: baseline; 247 | } 248 | 249 | /** 250 | * Remove the default vertical scrollbar in IE 10+. 251 | */ 252 | 253 | textarea { 254 | overflow: auto; 255 | } 256 | 257 | /** 258 | * 1. Add the correct box sizing in IE 10. 259 | * 2. Remove the padding in IE 10. 260 | */ 261 | 262 | [type="checkbox"], 263 | [type="radio"] { 264 | box-sizing: border-box; /* 1 */ 265 | padding: 0; /* 2 */ 266 | } 267 | 268 | /** 269 | * Correct the cursor style of increment and decrement buttons in Chrome. 270 | */ 271 | 272 | [type="number"]::-webkit-inner-spin-button, 273 | [type="number"]::-webkit-outer-spin-button { 274 | height: auto; 275 | } 276 | 277 | /** 278 | * 1. Correct the odd appearance in Chrome and Safari. 279 | * 2. Correct the outline style in Safari. 280 | */ 281 | 282 | [type="search"] { 283 | -webkit-appearance: textfield; /* 1 */ 284 | outline-offset: -2px; /* 2 */ 285 | } 286 | 287 | /** 288 | * Remove the inner padding in Chrome and Safari on macOS. 289 | */ 290 | 291 | [type="search"]::-webkit-search-decoration { 292 | -webkit-appearance: none; 293 | } 294 | 295 | /** 296 | * 1. Correct the inability to style clickable types in iOS and Safari. 297 | * 2. Change font properties to `inherit` in Safari. 298 | */ 299 | 300 | ::-webkit-file-upload-button { 301 | -webkit-appearance: button; /* 1 */ 302 | font: inherit; /* 2 */ 303 | } 304 | 305 | /* Interactive 306 | ========================================================================== */ 307 | 308 | /* 309 | * Add the correct display in Edge, IE 10+, and Firefox. 310 | */ 311 | 312 | details { 313 | display: block; 314 | } 315 | 316 | /* 317 | * Add the correct display in all browsers. 318 | */ 319 | 320 | summary { 321 | display: list-item; 322 | } 323 | 324 | /* Misc 325 | ========================================================================== */ 326 | 327 | /** 328 | * Add the correct display in IE 10+. 329 | */ 330 | 331 | template { 332 | display: none; 333 | } 334 | 335 | /** 336 | * Add the correct display in IE 10. 337 | */ 338 | 339 | [hidden] { 340 | display: none; 341 | } 342 | -------------------------------------------------------------------------------- /dist/css/woocommerce.css: -------------------------------------------------------------------------------- 1 | table.shop_table_responsive tbody th,table.shop_table_responsive thead{display:none}table.shop_table_responsive tr td{display:block;text-align:right;clear:both}table.shop_table_responsive tr td:before{content:attr(data-title) ": ";float:left}table.shop_table_responsive tr td.product-remove a{text-align:left}table.shop_table_responsive tr td.actions:before,table.shop_table_responsive tr td.download-actions:before,table.shop_table_responsive tr td.product-remove:before{display:none}table.shop_table_responsive tr td.download-actions .button{display:block;text-align:center}@media screen and (min-width:48em){table.shop_table_responsive thead{display:table-header-group}table.shop_table_responsive tbody th{display:table-cell}table.shop_table_responsive tr td,table.shop_table_responsive tr th{text-align:left}table.shop_table_responsive tr td{display:table-cell}table.shop_table_responsive tr td:before{display:none}}ul.products{content:"";display:table;table-layout:fixed;margin:0;padding:0}ul.products li.product{list-style:none;position:relative;margin-bottom:2em}ul.products li.product .woocommerce-loop-product__title{font-size:1rem}ul.products li.product .button,ul.products li.product img{display:block}@media screen and (min-width:48em){ul.products li.product{width:30.7966666667%;float:left;margin-right:3.8%}ul.products li.product.first{clear:both}ul.products li.product.last{margin-right:0}.columns-1 ul.products li.product{float:none;width:100%}.columns-2 ul.products li.product{width:48.1%}.columns-3 ul.products li.product{width:30.7966666667%}.columns-4 ul.products li.product{width:22.15%}.columns-5 ul.products li.product{width:16.96%}.columns-6 ul.products li.product{width:13.4933333333%}}.single-product div.product{content:"";display:table;table-layout:fixed;position:relative}.single-product div.product .woocommerce-product-gallery{position:relative}.single-product div.product .woocommerce-product-gallery .woocommerce-product-gallery__trigger{position:absolute;top:1em;right:1em;display:block;z-index:99}.single-product div.product .woocommerce-product-gallery .flex-viewport{margin-bottom:1em}.single-product div.product .woocommerce-product-gallery .flex-control-thumbs{content:"";display:table;table-layout:fixed;margin:0;padding:0}.single-product div.product .woocommerce-product-gallery .flex-control-thumbs li{list-style:none;cursor:pointer;float:left}.single-product div.product .woocommerce-product-gallery .flex-control-thumbs li img{opacity:.5}.single-product div.product .woocommerce-product-gallery .flex-control-thumbs li:hover img,.single-product div.product .woocommerce-product-gallery .flex-control-thumbs li img.flex-active{opacity:1}.single-product div.product .woocommerce-product-gallery.woocommerce-product-gallery--columns-2 .flex-control-thumbs li{width:48.1%}.single-product div.product .woocommerce-product-gallery.woocommerce-product-gallery--columns-2 .flex-control-thumbs li:nth-child(2n){margin-right:0}.single-product div.product .woocommerce-product-gallery.woocommerce-product-gallery--columns-2 .flex-control-thumbs li:nth-child(odd){clear:both}.single-product div.product .woocommerce-product-gallery.woocommerce-product-gallery--columns-3 .flex-control-thumbs li{width:30.7966666667%}.single-product div.product .woocommerce-product-gallery.woocommerce-product-gallery--columns-3 .flex-control-thumbs li:nth-child(3n){margin-right:0}.single-product div.product .woocommerce-product-gallery.woocommerce-product-gallery--columns-3 .flex-control-thumbs li:nth-child(3n+1){clear:both}.single-product div.product .woocommerce-product-gallery.woocommerce-product-gallery--columns-4 .flex-control-thumbs li{width:22.15%}.single-product div.product .woocommerce-product-gallery.woocommerce-product-gallery--columns-4 .flex-control-thumbs li:nth-child(4n){margin-right:0}.single-product div.product .woocommerce-product-gallery.woocommerce-product-gallery--columns-4 .flex-control-thumbs li:nth-child(4n+1){clear:both}.single-product div.product .woocommerce-product-gallery.woocommerce-product-gallery--columns-5 .flex-control-thumbs li{width:16.96%}.single-product div.product .woocommerce-product-gallery.woocommerce-product-gallery--columns-5 .flex-control-thumbs li:nth-child(5n){margin-right:0}.single-product div.product .woocommerce-product-gallery.woocommerce-product-gallery--columns-5 .flex-control-thumbs li:nth-child(5n+1){clear:both}.stock:empty:before{display:none}.stock.in-stock{color:#0f834d}.stock.out-of-stock{color:#e2401c}@media screen and (min-width:768px){.col2-set .form-row-first{float:left;margin-right:3.8%}.col2-set .form-row-last{float:right;margin-right:0}.col2-set .form-row-first,.col2-set .form-row-last{width:48.1%}}.site-header-cart{position:relative;margin:0;padding:0;content:"";display:table;table-layout:fixed}.site-header-cart .cart-contents{text-decoration:none}.site-header-cart .widget_shopping_cart{display:none}.site-header-cart .product_list_widget{margin:0;padding:0}.star-rating{overflow:hidden;position:relative;height:1.618em;line-height:1.618;font-size:1em;width:5.3em;font-family:star;font-weight:400}.star-rating:before{content:"SSSSS";opacity:.25}.star-rating:before,.star-rating span{float:left;top:0;left:0;position:absolute}.star-rating span{overflow:hidden;padding-top:1.5em}.star-rating span:before{content:"SSSSS";top:0;position:absolute;left:0;color:#4169e1}p.stars a{position:relative;height:1em;width:1em;text-indent:-999em;display:inline-block;text-decoration:none;margin-right:1px;font-weight:400}p.stars a:before{display:block;position:absolute;top:0;left:0;width:1em;height:1em;line-height:1;font-family:star;text-indent:0}p.stars a:before,p.stars a:hover~a:before{content:"S";color:#404040;opacity:.25}p.stars.selected a.active:before,p.stars:hover a:before{content:"S";color:#4169e1;opacity:1}p.stars.selected a.active~a:before{content:"S";color:#404040;opacity:.25}p.stars.selected a:not(.active):before{content:"S";color:#4169e1;opacity:1}.woocommerce-tabs ul.tabs{list-style:none;margin:0;padding:0;text-align:left}.woocommerce-tabs ul.tabs li{display:block;margin:0;position:relative}.woocommerce-tabs ul.tabs li a{padding:1em 0;display:block}.woocommerce-tabs .panel h2:first-of-type{margin-bottom:1em}.woocommerce-password-strength{text-align:right}.woocommerce-password-strength.strong{color:#0f834d}.woocommerce-password-strength.bad,.woocommerce-password-strength.short{color:#e2401c}.woocommerce-password-strength.good{color:#3d9cd2}.form-row.woocommerce-validated input.input-text{box-shadow:inset 2px 0 0 #0f834d}.form-row.woocommerce-invalid input.input-text{box-shadow:inset 2px 0 0 #e2401c}.required{color:red}.woocommerce-error,.woocommerce-info,.woocommerce-message,.woocommerce-noreviews,p.no-comments{content:"";display:table;table-layout:fixed;background-color:#0f834d;clear:both}.woocommerce-info,.woocommerce-noreviews,p.no-comments{background-color:#3d9cd2}.woocommerce-error{background-color:#e2401c}.demo_store{position:fixed;left:0;bottom:0;right:0;margin:0;padding:1em;background-color:#3d9cd2;z-index:9999}@media screen and (min-width:48em){.site-header-cart .widget_shopping_cart{position:absolute;top:100%;width:100%;z-index:999999;left:-999em;display:block;box-shadow:0 3px 3px rgba(0,0,0,.2)}.site-header-cart.focus .widget_shopping_cart,.site-header-cart:hover .widget_shopping_cart{left:0;display:block}}.widget_price_filter .price_slider{margin-bottom:1.5em}.widget_price_filter .price_slider_amount{text-align:right;line-height:2.4em}.widget_price_filter .price_slider_amount .button{float:left}.widget_price_filter .ui-slider{position:relative;text-align:left}.widget_price_filter .ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1em;height:1em;cursor:ew-resize;outline:none;background:#4169e1;box-sizing:border-box;margin-top:-.25em;opacity:1}.widget_price_filter .ui-slider .ui-slider-handle:last-child{margin-left:-1em}.widget_price_filter .ui-slider .ui-slider-handle.ui-state-active,.widget_price_filter .ui-slider .ui-slider-handle:hover{box-shadow:0 0 0 .25em rgba(0,0,0,.1)}.widget_price_filter .ui-slider .ui-slider-range{position:absolute;z-index:1;display:block;border:0;background:#4169e1}.widget_price_filter .price_slider_wrapper .ui-widget-content{background:rgba(0,0,0,.1)}.widget_price_filter .ui-slider-horizontal{height:.5em}.widget_price_filter .ui-slider-horizontal .ui-slider-range{height:100%} -------------------------------------------------------------------------------- /dist/css/theme.css: -------------------------------------------------------------------------------- 1 | /*! 2 | Themosis boilerplate is based on Underscores https://underscores.me/. 3 | Underscores is distributed under the terms of the GNU GPL v2 or later. 4 | 5 | Normalizing styles have been helped along thanks to the fine work of 6 | Nicolas Gallagher and Jonathan Neal https://necolas.github.io/normalize.css/ 7 | */ 8 | 9 | /*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}body,button,input,optgroup,select,textarea{color:#404040;font-family:sans-serif;font-size:16px;font-size:1rem;line-height:1.5}h1,h2,h3,h4,h5,h6{clear:both}p{margin-bottom:1.5em}cite,dfn,em,i{font-style:italic}blockquote{margin:0 1.5em}address{margin:0 0 1.5em}pre{background:#eee;font-family:Courier\ 10 Pitch,Courier,monospace;line-height:1.6;margin-bottom:1.6em;max-width:100%;overflow:auto;padding:1.6em}code,kbd,pre,tt,var{font-size:15px;font-size:.9375rem}code,kbd,tt,var{font-family:Monaco,Consolas,Andale Mono,DejaVu Sans Mono,monospace}abbr,acronym{border-bottom:1px dotted #666;cursor:help}ins,mark{background:#fff9c0;text-decoration:none}big{font-size:125%}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{background:#fff}hr{background-color:#ccc;border:0;height:1px;margin-bottom:1.5em}ol,ul{margin:0 0 1.5em 3em}ul{list-style:disc}ol{list-style:decimal}li>ol,li>ul{margin-bottom:0;margin-left:1.5em}dt{font-weight:700}dd{margin:0 1.5em 1.5em}img{height:auto;max-width:100%}figure{margin:1em 0}table{margin:0 0 1.5em;width:100%}button,input[type=button],input[type=reset],input[type=submit]{border:1px solid;border-color:#ccc #ccc #bbb;border-radius:3px;background:#e6e6e6;color:rgba(0,0,0,.8);font-size:12px;font-size:.75rem;line-height:1;padding:.6em 1em .4em}button:hover,input[type=button]:hover,input[type=reset]:hover,input[type=submit]:hover{border-color:#ccc #bbb #aaa}button:active,button:focus,input[type=button]:active,input[type=button]:focus,input[type=reset]:active,input[type=reset]:focus,input[type=submit]:active,input[type=submit]:focus{border-color:#aaa #bbb #bbb}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=range],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{color:#666;border:1px solid #ccc;border-radius:3px;padding:3px}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=range]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,textarea:focus{color:#111}select{border:1px solid #ccc}textarea{width:100%}a{color:#4169e1}a:visited{color:purple}a:active,a:focus,a:hover{color:#191970}a:focus{outline:thin dotted}a:active,a:hover{outline:0}.main-navigation{clear:both;display:block;float:left;width:100%}.main-navigation ul{display:none;list-style:none;margin:0;padding-left:0}.main-navigation ul ul{box-shadow:0 3px 3px rgba(0,0,0,.2);float:left;position:absolute;top:100%;left:-999em;z-index:99999}.main-navigation ul ul ul{left:-999em;top:0}.main-navigation ul ul li.focus>ul,.main-navigation ul ul li:hover>ul{left:100%}.main-navigation ul ul a{width:200px}.main-navigation ul li.focus>ul,.main-navigation ul li:hover>ul{left:auto}.main-navigation li{float:left;position:relative}.main-navigation a{display:block;text-decoration:none}.main-navigation.toggled ul,.menu-toggle{display:block}@media screen and (min-width:37.5em){.menu-toggle{display:none}.main-navigation ul{display:block}}.site-main .comment-navigation,.site-main .post-navigation,.site-main .posts-navigation{margin:0 0 1.5em;overflow:hidden}.comment-navigation .nav-previous,.post-navigation .nav-previous,.posts-navigation .nav-previous{float:left;width:50%}.comment-navigation .nav-next,.post-navigation .nav-next,.posts-navigation .nav-next{float:right;text-align:right;width:50%}.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;width:1px;word-wrap:normal!important}.screen-reader-text:focus{background-color:#f1f1f1;border-radius:3px;box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto!important;-webkit-clip-path:none;clip-path:none;color:#21759b;display:block;font-size:14px;font-size:.875rem;font-weight:700;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}#content[tabindex="-1"]:focus{outline:0}.alignleft{display:inline;float:left;margin-right:1.5em}.alignright{display:inline;float:right;margin-left:1.5em}.aligncenter{clear:both;display:block;margin-left:auto;margin-right:auto}.clear:after,.clear:before,.comment-content:after,.comment-content:before,.entry-content:after,.entry-content:before,.site-content:after,.site-content:before,.site-footer:after,.site-footer:before,.site-header:after,.site-header:before{content:"";display:table;table-layout:fixed}.clear:after,.comment-content:after,.entry-content:after,.site-content:after,.site-footer:after,.site-header:after{clear:both}.widget{margin:0 0 1.5em}.widget select{max-width:100%}.sticky{display:block}.hentry{margin:0 0 1.5em}.updated:not(.published){display:none}.entry-content,.entry-summary,.page-content{margin:1.5em 0 0}.page-links{clear:both;margin:0 0 1.5em}.comment-content a{word-wrap:break-word}.bypostauthor{display:block}.infinite-scroll.neverending .site-footer,.infinite-scroll .posts-navigation{display:none}.infinity-end.neverending .site-footer{display:block}.comment-content .wp-smiley,.entry-content .wp-smiley,.page-content .wp-smiley{border:none;margin-bottom:0;margin-top:0;padding:0}embed,iframe,object{max-width:100%}.custom-logo-link{display:inline-block}.wp-caption{margin-bottom:1.5em;max-width:100%}.wp-caption img[class*=wp-image-]{display:block;margin-left:auto;margin-right:auto}.wp-caption .wp-caption-text{margin:.8075em 0}.wp-caption-text{text-align:center}.gallery{margin-bottom:1.5em}.gallery-item{display:inline-block;text-align:center;vertical-align:top;width:100%}.gallery-columns-2 .gallery-item{max-width:50%}.gallery-columns-3 .gallery-item{max-width:33.33%}.gallery-columns-4 .gallery-item{max-width:25%}.gallery-columns-5 .gallery-item{max-width:20%}.gallery-columns-6 .gallery-item{max-width:16.66%}.gallery-columns-7 .gallery-item{max-width:14.28%}.gallery-columns-8 .gallery-item{max-width:12.5%}.gallery-columns-9 .gallery-item{max-width:11.11%}.gallery-caption{display:block} -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 2, June 1991 3 | 4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | Preamble 10 | 11 | The licenses for most software are designed to take away your 12 | freedom to share and change it. By contrast, the GNU General Public 13 | License is intended to guarantee your freedom to share and change free 14 | software--to make sure the software is free for all its users. This 15 | General Public License applies to most of the Free Software 16 | Foundation's software and to any other program whose authors commit to 17 | using it. (Some other Free Software Foundation software is covered by 18 | the GNU Lesser General Public License instead.) You can apply it to 19 | your programs, too. 20 | 21 | When we speak of free software, we are referring to freedom, not 22 | price. Our General Public Licenses are designed to make sure that you 23 | have the freedom to distribute copies of free software (and charge for 24 | this service if you wish), that you receive source code or can get it 25 | if you want it, that you can change the software or use pieces of it 26 | in new free programs; and that you know you can do these things. 27 | 28 | To protect your rights, we need to make restrictions that forbid 29 | anyone to deny you these rights or to ask you to surrender the rights. 30 | These restrictions translate to certain responsibilities for you if you 31 | distribute copies of the software, or if you modify it. 32 | 33 | For example, if you distribute copies of such a program, whether 34 | gratis or for a fee, you must give the recipients all the rights that 35 | you have. You must make sure that they, too, receive or can get the 36 | source code. And you must show them these terms so they know their 37 | rights. 38 | 39 | We protect your rights with two steps: (1) copyright the software, and 40 | (2) offer you this license which gives you legal permission to copy, 41 | distribute and/or modify the software. 42 | 43 | Also, for each author's protection and ours, we want to make certain 44 | that everyone understands that there is no warranty for this free 45 | software. If the software is modified by someone else and passed on, we 46 | want its recipients to know that what they have is not the original, so 47 | that any problems introduced by others will not reflect on the original 48 | authors' reputations. 49 | 50 | Finally, any free program is threatened constantly by software 51 | patents. We wish to avoid the danger that redistributors of a free 52 | program will individually obtain patent licenses, in effect making the 53 | program proprietary. To prevent this, we have made it clear that any 54 | patent must be licensed for everyone's free use or not licensed at all. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | GNU GENERAL PUBLIC LICENSE 60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 61 | 62 | 0. This License applies to any program or other work which contains 63 | a notice placed by the copyright holder saying it may be distributed 64 | under the terms of this General Public License. The "Program", below, 65 | refers to any such program or work, and a "work based on the Program" 66 | means either the Program or any derivative work under copyright law: 67 | that is to say, a work containing the Program or a portion of it, 68 | either verbatim or with modifications and/or translated into another 69 | language. (Hereinafter, translation is included without limitation in 70 | the term "modification".) Each licensee is addressed as "you". 71 | 72 | Activities other than copying, distribution and modification are not 73 | covered by this License; they are outside its scope. The act of 74 | running the Program is not restricted, and the output from the Program 75 | is covered only if its contents constitute a work based on the 76 | Program (independent of having been made by running the Program). 77 | Whether that is true depends on what the Program does. 78 | 79 | 1. You may copy and distribute verbatim copies of the Program's 80 | source code as you receive it, in any medium, provided that you 81 | conspicuously and appropriately publish on each copy an appropriate 82 | copyright notice and disclaimer of warranty; keep intact all the 83 | notices that refer to this License and to the absence of any warranty; 84 | and give any other recipients of the Program a copy of this License 85 | along with the Program. 86 | 87 | You may charge a fee for the physical act of transferring a copy, and 88 | you may at your option offer warranty protection in exchange for a fee. 89 | 90 | 2. You may modify your copy or copies of the Program or any portion 91 | of it, thus forming a work based on the Program, and copy and 92 | distribute such modifications or work under the terms of Section 1 93 | above, provided that you also meet all of these conditions: 94 | 95 | a) You must cause the modified files to carry prominent notices 96 | stating that you changed the files and the date of any change. 97 | 98 | b) You must cause any work that you distribute or publish, that in 99 | whole or in part contains or is derived from the Program or any 100 | part thereof, to be licensed as a whole at no charge to all third 101 | parties under the terms of this License. 102 | 103 | c) If the modified program normally reads commands interactively 104 | when run, you must cause it, when started running for such 105 | interactive use in the most ordinary way, to print or display an 106 | announcement including an appropriate copyright notice and a 107 | notice that there is no warranty (or else, saying that you provide 108 | a warranty) and that users may redistribute the program under 109 | these conditions, and telling the user how to view a copy of this 110 | License. (Exception: if the Program itself is interactive but 111 | does not normally print such an announcement, your work based on 112 | the Program is not required to print an announcement.) 113 | 114 | These requirements apply to the modified work as a whole. If 115 | identifiable sections of that work are not derived from the Program, 116 | and can be reasonably considered independent and separate works in 117 | themselves, then this License, and its terms, do not apply to those 118 | sections when you distribute them as separate works. But when you 119 | distribute the same sections as part of a whole which is a work based 120 | on the Program, the distribution of the whole must be on the terms of 121 | this License, whose permissions for other licensees extend to the 122 | entire whole, and thus to each and every part regardless of who wrote it. 123 | 124 | Thus, it is not the intent of this section to claim rights or contest 125 | your rights to work written entirely by you; rather, the intent is to 126 | exercise the right to control the distribution of derivative or 127 | collective works based on the Program. 128 | 129 | In addition, mere aggregation of another work not based on the Program 130 | with the Program (or with a work based on the Program) on a volume of 131 | a storage or distribution medium does not bring the other work under 132 | the scope of this License. 133 | 134 | 3. You may copy and distribute the Program (or a work based on it, 135 | under Section 2) in object code or executable form under the terms of 136 | Sections 1 and 2 above provided that you also do one of the following: 137 | 138 | a) Accompany it with the complete corresponding machine-readable 139 | source code, which must be distributed under the terms of Sections 140 | 1 and 2 above on a medium customarily used for software interchange; or, 141 | 142 | b) Accompany it with a written offer, valid for at least three 143 | years, to give any third party, for a charge no more than your 144 | cost of physically performing source distribution, a complete 145 | machine-readable copy of the corresponding source code, to be 146 | distributed under the terms of Sections 1 and 2 above on a medium 147 | customarily used for software interchange; or, 148 | 149 | c) Accompany it with the information you received as to the offer 150 | to distribute corresponding source code. (This alternative is 151 | allowed only for noncommercial distribution and only if you 152 | received the program in object code or executable form with such 153 | an offer, in accord with Subsection b above.) 154 | 155 | The source code for a work means the preferred form of the work for 156 | making modifications to it. For an executable work, complete source 157 | code means all the source code for all modules it contains, plus any 158 | associated interface definition files, plus the scripts used to 159 | control compilation and installation of the executable. However, as a 160 | special exception, the source code distributed need not include 161 | anything that is normally distributed (in either source or binary 162 | form) with the major components (compiler, kernel, and so on) of the 163 | operating system on which the executable runs, unless that component 164 | itself accompanies the executable. 165 | 166 | If distribution of executable or object code is made by offering 167 | access to copy from a designated place, then offering equivalent 168 | access to copy the source code from the same place counts as 169 | distribution of the source code, even though third parties are not 170 | compelled to copy the source along with the object code. 171 | 172 | 4. You may not copy, modify, sublicense, or distribute the Program 173 | except as expressly provided under this License. Any attempt 174 | otherwise to copy, modify, sublicense or distribute the Program is 175 | void, and will automatically terminate your rights under this License. 176 | However, parties who have received copies, or rights, from you under 177 | this License will not have their licenses terminated so long as such 178 | parties remain in full compliance. 179 | 180 | 5. You are not required to accept this License, since you have not 181 | signed it. However, nothing else grants you permission to modify or 182 | distribute the Program or its derivative works. These actions are 183 | prohibited by law if you do not accept this License. Therefore, by 184 | modifying or distributing the Program (or any work based on the 185 | Program), you indicate your acceptance of this License to do so, and 186 | all its terms and conditions for copying, distributing or modifying 187 | the Program or works based on it. 188 | 189 | 6. Each time you redistribute the Program (or any work based on the 190 | Program), the recipient automatically receives a license from the 191 | original licensor to copy, distribute or modify the Program subject to 192 | these terms and conditions. You may not impose any further 193 | restrictions on the recipients' exercise of the rights granted herein. 194 | You are not responsible for enforcing compliance by third parties to 195 | this License. 196 | 197 | 7. If, as a consequence of a court judgment or allegation of patent 198 | infringement or for any other reason (not limited to patent issues), 199 | conditions are imposed on you (whether by court order, agreement or 200 | otherwise) that contradict the conditions of this License, they do not 201 | excuse you from the conditions of this License. If you cannot 202 | distribute so as to satisfy simultaneously your obligations under this 203 | License and any other pertinent obligations, then as a consequence you 204 | may not distribute the Program at all. For example, if a patent 205 | license would not permit royalty-free redistribution of the Program by 206 | all those who receive copies directly or indirectly through you, then 207 | the only way you could satisfy both it and this License would be to 208 | refrain entirely from distribution of the Program. 209 | 210 | If any portion of this section is held invalid or unenforceable under 211 | any particular circumstance, the balance of the section is intended to 212 | apply and the section as a whole is intended to apply in other 213 | circumstances. 214 | 215 | It is not the purpose of this section to induce you to infringe any 216 | patents or other property right claims or to contest validity of any 217 | such claims; this section has the sole purpose of protecting the 218 | integrity of the free software distribution system, which is 219 | implemented by public license practices. Many people have made 220 | generous contributions to the wide range of software distributed 221 | through that system in reliance on consistent application of that 222 | system; it is up to the author/donor to decide if he or she is willing 223 | to distribute software through any other system and a licensee cannot 224 | impose that choice. 225 | 226 | This section is intended to make thoroughly clear what is believed to 227 | be a consequence of the rest of this License. 228 | 229 | 8. If the distribution and/or use of the Program is restricted in 230 | certain countries either by patents or by copyrighted interfaces, the 231 | original copyright holder who places the Program under this License 232 | may add an explicit geographical distribution limitation excluding 233 | those countries, so that distribution is permitted only in or among 234 | countries not thus excluded. In such case, this License incorporates 235 | the limitation as if written in the body of this License. 236 | 237 | 9. The Free Software Foundation may publish revised and/or new versions 238 | of the General Public License from time to time. Such new versions will 239 | be similar in spirit to the present version, but may differ in detail to 240 | address new problems or concerns. 241 | 242 | Each version is given a distinguishing version number. If the Program 243 | specifies a version number of this License which applies to it and "any 244 | later version", you have the option of following the terms and conditions 245 | either of that version or of any later version published by the Free 246 | Software Foundation. If the Program does not specify a version number of 247 | this License, you may choose any version ever published by the Free Software 248 | Foundation. 249 | 250 | 10. If you wish to incorporate parts of the Program into other free 251 | programs whose distribution conditions are different, write to the author 252 | to ask for permission. For software which is copyrighted by the Free 253 | Software Foundation, write to the Free Software Foundation; we sometimes 254 | make exceptions for this. Our decision will be guided by the two goals 255 | of preserving the free status of all derivatives of our free software and 256 | of promoting the sharing and reuse of software generally. 257 | 258 | NO WARRANTY 259 | 260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 268 | REPAIR OR CORRECTION. 269 | 270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 278 | POSSIBILITY OF SUCH DAMAGES. 279 | 280 | END OF TERMS AND CONDITIONS 281 | 282 | How to Apply These Terms to Your New Programs 283 | 284 | If you develop a new program, and you want it to be of the greatest 285 | possible use to the public, the best way to achieve this is to make it 286 | free software which everyone can redistribute and change under these terms. 287 | 288 | To do so, attach the following notices to the program. It is safest 289 | to attach them to the start of each source file to most effectively 290 | convey the exclusion of warranty; and each file should have at least 291 | the "copyright" line and a pointer to where the full notice is found. 292 | 293 | Themosis framework, a framework for WordPress developers. 294 | Copyright (C) 2012 Julien Lambé 295 | 296 | This program is free software; you can redistribute it and/or modify 297 | it under the terms of the GNU General Public License as published by 298 | the Free Software Foundation; either version 2 of the License, or 299 | (at your option) any later version. 300 | 301 | This program is distributed in the hope that it will be useful, 302 | but WITHOUT ANY WARRANTY; without even the implied warranty of 303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 304 | GNU General Public License for more details. 305 | 306 | You should have received a copy of the GNU General Public License along 307 | with this program; if not, write to the Free Software Foundation, Inc., 308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 309 | 310 | Also add information on how to contact you by electronic and paper mail. 311 | 312 | If the program is interactive, make it output a short notice like this 313 | when it starts in an interactive mode: 314 | 315 | Gnomovision version 69, Copyright (C) year name of author 316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 | This is free software, and you are welcome to redistribute it 318 | under certain conditions; type `show c' for details. 319 | 320 | The hypothetical commands `show w' and `show c' should show the appropriate 321 | parts of the General Public License. Of course, the commands you use may 322 | be called something other than `show w' and `show c'; they could even be 323 | mouse-clicks or menu items--whatever suits your program. 324 | 325 | You should also get your employer (if you work as a programmer) or your 326 | school, if any, to sign a "copyright disclaimer" for the program, if 327 | necessary. Here is a sample; alter the names: 328 | 329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 330 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 331 | 332 | , 1 April 1989 333 | Ty Coon, President of Vice 334 | 335 | This General Public License does not permit incorporating your program into 336 | proprietary programs. If your program is a subroutine library, you may 337 | consider it more useful to permit linking proprietary applications with the 338 | library. If this is what you want to do, use the GNU Lesser General 339 | Public License instead of this License. --------------------------------------------------------------------------------