Browse Source

Merge branch 'dev' into mix

pull/9/head
Ned Zimmerman 9 years ago
parent
commit
11c2589530
No known key found for this signature in database
GPG Key ID: FF56334A013120CA
  1. 1
      .gitignore
  2. 70
      app/activation.php
  3. 81
      app/admin.php
  4. 10
      app/controllers/About.php
  5. 93
      app/controllers/App.php
  6. 66
      app/controllers/FrontPage.php
  7. 111
      app/controllers/PageCatalog.php
  8. 15
      app/filters.php
  9. 59
      app/helpers.php
  10. 38
      app/intervention.php
  11. 132
      app/setup.php
  12. 24
      app/widgets.php
  13. 86
      app/widgets/linkbutton.php
  14. 95
      app/widgets/pagebutton.php
  15. 3
      composer.json
  16. 51
      composer.lock
  17. 3
      package.json
  18. 4
      resources/assets/build/webpack.config.js
  19. BIN
      resources/assets/images/banner-desktop.jpg
  20. BIN
      resources/assets/images/banner-mobile.jpg
  21. BIN
      resources/assets/images/banner-two.jpg
  22. BIN
      resources/assets/images/banner.jpg
  23. BIN
      resources/assets/images/catalog-header.jpg
  24. BIN
      resources/assets/images/header.jpg
  25. 1
      resources/assets/images/left-arrow.svg
  26. BIN
      resources/assets/images/logo.png
  27. 1
      resources/assets/images/logo.svg
  28. BIN
      resources/assets/images/logo@2x.png
  29. BIN
      resources/assets/images/pb.png
  30. BIN
      resources/assets/images/pb@2x.png
  31. 1
      resources/assets/images/right-arrow.svg
  32. 7
      resources/assets/scripts/main.js
  33. 5
      resources/assets/scripts/routes/about.js
  34. 101
      resources/assets/scripts/routes/catalog.js
  35. 58
      resources/assets/scripts/routes/home.js
  36. 8
      resources/assets/styles/common/_functions.scss
  37. 56
      resources/assets/styles/common/_global.scss
  38. 7
      resources/assets/styles/common/_variables.scss
  39. 60
      resources/assets/styles/components/_buttons.scss
  40. 93
      resources/assets/styles/components/_forms.scss
  41. 1
      resources/assets/styles/components/_grid.scss
  42. 20
      resources/assets/styles/layouts/_footer.scss
  43. 61
      resources/assets/styles/layouts/_header.scss
  44. 266
      resources/assets/styles/layouts/_pages.scss
  45. 514
      resources/assets/styles/layouts/pages/_catalog.scss
  46. 404
      resources/assets/styles/layouts/pages/_front-page.scss
  47. 1
      resources/assets/styles/main.scss
  48. 5
      resources/functions.php
  49. 71
      resources/views/front-page.blade.php
  50. 67
      resources/views/page-catalog.blade.php
  51. 17
      resources/views/partials/book.blade.php
  52. 22
      resources/views/partials/contact-form.blade.php
  53. 11
      resources/views/partials/footer.blade.php
  54. 7
      resources/views/partials/front-page-block.blade.php
  55. 27
      resources/views/partials/front-page-catalog.blade.php
  56. 20
      resources/views/partials/header.blade.php
  57. 364
      yarn.lock

1
.gitignore vendored

@ -1,6 +1,7 @@
# Include your project-specific ignores in this file # Include your project-specific ignores in this file
# Read about how to use .gitignore: https://help.github.com/articles/ignoring-files # Read about how to use .gitignore: https://help.github.com/articles/ignoring-files
.cache-loader .cache-loader
.sass-cache
dist dist
node_modules node_modules
npm-debug.log npm-debug.log

70
app/activation.php

@ -0,0 +1,70 @@
<?php
namespace Aldine;
add_action('after_switch_theme', function () {
$default_pages = [
'about' => [
'post_title' => __('About', 'aldine'),
// @codingStandardsIgnoreStart
'post_content' => apply_filters('pb_root_about_page_content', __('Pressbooks is simple book production software. You can use Pressbooks to publish textbooks, scholarly monographs, syllabi, fiction and non-fiction books, white papers, and more in multiple formats including:
<ul><li>MOBI (for Kindle ebooks)</li>
<li>EPUB (for all other ebookstores)</li>
<li>designed PDF (for print-on-demand and digital distribution)</li></ul>
Pressbooks is used by educational institutions around the world as well as authors and publishers.
For more information about Pressbooks, see <a href="https://pressbooks.com/about">here</a>.', 'aldine'))
// @codingstandardsIgnoreEnd
],
'help' => [
'post_title' => __('Help', 'aldine'),
// @codingStandardsIgnoreStart
'post_content' => apply_filters('pb_root_help_page_content', __('The easiest way to get started with Pressbooks is to follow our <a href="https://pressbooks.com/how-to-make-a-book-with-pressbooks">4 Step Guide to Making a Book on Pressbooks</a>. Or, you can review our <a href="https://guide.pressbooks.com/">Guide to Using Pressbooks</a>.
If you require further assistance, please contact your network manager.', 'aldine'))
// @codingstandardsIgnoreEnd
],
'catalog' => [
'post_title' => __('Catalog', 'aldine'),
'post_content' => ''
],
'home' => [
'post_title' => __('Home', 'aldine'),
'post_content' => ''
],
];
if (! get_site_option('pb_aldine_activated')) {
// Add our pages
$pages = [];
foreach ($default_pages as $slug => $page) {
$check = get_page_by_path($slug);
if (empty($check)) {
$pages[$slug] = wp_insert_post(array_merge($page, ['post_type' => 'page', 'post_status' => 'publish']));
} else {
$pages[$slug] = $check->ID;
}
}
// Set front page to Home
update_option('show_on_front', 'page');
update_option('page_on_front', $pages['home']);
// Remove content generated by wp_install_defaults
if (! wp_delete_post(1, true)) {
return;
}
if (! wp_delete_post(2, true)) {
return;
}
if (! wp_delete_comment(1, true)) {
return;
}
// Add "pb_aldine_activated" site option to enable check above
add_site_option('pb_aldine_activated', true);
}
});

81
app/admin.php

@ -14,6 +14,49 @@ add_action('customize_register', function (\WP_Customize_Manager $wp_customize)
bloginfo('name'); bloginfo('name');
} }
]); ]);
// Add settings
foreach ([
[
'slug' => 'primary',
'hex' => '#b01109',
'label' => __('Primary Color', 'aldine'),
'description' => __('Primary color, used for links and other primary elements.', 'aldine'),
],
[
'slug' => 'accent',
'hex' => '#015d75',
'label' => __('Accent Color', 'aldine'),
'description' => __('Accent color, used for flourishes and secondary elements.', 'aldine'),
],
[
'slug' => 'primary_fg',
'hex' => '#ffffff',
'label' => __('Primary Foreground Color', 'aldine'),
'description' => __('Used for text on a primary background.', 'aldine'),
],
[
'slug' => 'accent_fg',
'hex' => '#ffffff',
'label' => __('Accent Foreground Color', 'aldine'),
'description' => __('Used for text on an accent color background.', 'aldine'),
],
] as $color) {
$wp_customize->add_setting("pb_network_color_{$color['slug']}", [
'type' => 'option',
'default' => $color['hex'],
]);
$wp_customize->add_control(new \WP_Customize_Color_Control(
$wp_customize,
"pb_network_color_{$color['slug']}",
[
'label' => $color['label'],
'section' => 'colors',
'description' => $color['description'],
'settings' => "pb_network_color_{$color['slug']}",
]
));
}
$wp_customize->add_section('pb_network_social', [ $wp_customize->add_section('pb_network_social', [
'title' => __('Social Media', 'aldine'), 'title' => __('Social Media', 'aldine'),
'priority' => 30, 'priority' => 30,
@ -36,25 +79,50 @@ add_action('customize_register', function (\WP_Customize_Manager $wp_customize)
'section' => 'pb_network_social', 'section' => 'pb_network_social',
'settings' => 'pb_network_twitter', 'settings' => 'pb_network_twitter',
]); ]);
$wp_customize->add_section('pb_network_catalog', [ $wp_customize->add_section('pb_front_page_catalog', [
'title' => __('Catalog', 'aldine'), 'title' => __('Front Page Catalog', 'aldine'),
'priority' => 20, 'priority' => 25,
]);
$wp_customize->add_setting('pb_front_page_catalog', [
'type' => 'option',
]); ]);
$wp_customize->add_setting('pb_front_page_catalog');
$wp_customize->add_control('pb_front_page_catalog', [ $wp_customize->add_control('pb_front_page_catalog', [
'label' => __('Show Front Page Catalog', 'aldine'), 'label' => __('Show Front Page Catalog', 'aldine'),
'section' => 'pb_network_catalog', 'section' => 'pb_front_page_catalog',
'settings' => 'pb_front_page_catalog', 'settings' => 'pb_front_page_catalog',
'type' => 'checkbox' 'type' => 'checkbox'
]); ]);
$wp_customize->add_setting('pb_front_page_catalog_title', [ $wp_customize->add_setting('pb_front_page_catalog_title', [
'type' => 'option',
'sanitize_callback' => 'sanitize_text_field' 'sanitize_callback' => 'sanitize_text_field'
]); ]);
$wp_customize->add_control('pb_front_page_catalog_title', [ $wp_customize->add_control('pb_front_page_catalog_title', [
'label' => __('Front Page Catalog Title', 'aldine'), 'label' => __('Front Page Catalog Title', 'aldine'),
'section' => 'pb_network_catalog', 'section' => 'pb_front_page_catalog',
'settings' => 'pb_front_page_catalog_title', 'settings' => 'pb_front_page_catalog_title',
]); ]);
$wp_customize->add_section('pb_network_contact_form', [
'title' => __('Contact Form', 'aldine'),
'priority' => 25,
]);
$wp_customize->add_setting('pb_network_contact_form', [
'type' => 'option',
]);
$wp_customize->add_control('pb_network_contact_form', [
'label' => __('Show Contact Form', 'aldine'),
'section' => 'pb_network_contact_form',
'settings' => 'pb_network_contact_form',
'type' => 'checkbox'
]);
$wp_customize->add_setting('pb_network_contact_form_title', [
'type' => 'option',
'sanitize_callback' => 'sanitize_text_field'
]);
$wp_customize->add_control('pb_network_contact_form_title', [
'label' => __('Contact Form Title', 'aldine'),
'section' => 'pb_network_contact_form',
'settings' => 'pb_network_contact_form_title',
]);
}); });
/** /**
@ -62,4 +130,5 @@ add_action('customize_register', function (\WP_Customize_Manager $wp_customize)
*/ */
add_action('customize_preview_init', function () { add_action('customize_preview_init', function () {
wp_enqueue_script('aldine/customizer.js', asset_path('scripts/customizer.js'), ['customize-preview'], null, true); wp_enqueue_script('aldine/customizer.js', asset_path('scripts/customizer.js'), ['customize-preview'], null, true);
wp_localize_script('aldine/customizer.js', 'SAGE_DIST_PATH', get_theme_file_uri() . '/dist/');
}); });

10
app/controllers/About.php

@ -1,10 +0,0 @@
<?php
namespace Aldine;
use Sober\Controller\Controller;
class About extends Controller
{
}

93
app/controllers/App.php

@ -6,6 +6,16 @@ use Sober\Controller\Controller;
class App extends Controller class App extends Controller
{ {
public function siteLogo()
{
$custom_logo_id = get_theme_mod('custom_logo');
if (has_custom_logo()) {
return wp_get_attachment_image($custom_logo_id, 'original');
} else {
return file_get_contents(get_theme_file_path() . '/dist/' . svg_path('images/logo.svg'));
}
}
public function siteName() public function siteName()
{ {
return get_bloginfo('name'); return get_bloginfo('name');
@ -55,4 +65,87 @@ class App extends Controller
} }
return get_the_title(); return get_the_title();
} }
public function contactFormTitle()
{
$title = get_option('pb_network_contact_form_title');
if ($title) {
return $title;
}
return __('Contact Us', 'aldine');
}
public function currentPage()
{
if (is_front_page()) {
return (get_query_var('page')) ? get_query_var('page') : 1;
} else {
return (get_query_var('paged')) ? get_query_var('paged') : 1;
}
}
public function currentSubject()
{
return (get_query_var('subject')) ? get_query_var('subject') : '';
}
public function currentLicense()
{
return (get_query_var('license')) ? get_query_var('license') : '';
}
public function currentOrderBy()
{
return (get_query_var('orderby')) ? get_query_var('orderby') : 'title';
}
public function previousPage()
{
if (is_front_page()) {
$page = (get_query_var('page')) ? get_query_var('page') : 1;
} else {
$page = (get_query_var('paged')) ? get_query_var('paged') : 1;
}
return ($page > 1) ? $page - 1 : 0;
}
public function nextPage()
{
if (is_front_page()) {
$page = (get_query_var('page')) ? get_query_var('page') : 1;
} else {
$page = (get_query_var('paged')) ? get_query_var('paged') : 1;
}
return $page + 1;
}
public static function catalogData($page = 1, $per_page = 10, $orderby = 'title', $license = '', $subject = '')
{
$request = new \WP_REST_Request('GET', '/pressbooks/v2/books');
$request->set_query_params([
'page' => $page,
'per_page' => $per_page,
]);
$response = rest_do_request($request);
$pages = $response->headers['X-WP-TotalPages'];
$data = rest_get_server()->response_to_data($response, true);
$books = [];
foreach ($data as $key => $book) {
$book['title'] = $book['metadata']['name'];
$book['date-published'] = (isset($book['metadata']['datePublished'])) ?
$book['metadata']['datePublished'] :
'';
$book['subject'] = (isset($book['metadata']['keywords'])) ? $book['metadata']['keywords'] : '';
$books[] = $book;
}
if ($orderby === 'latest') {
$books = wp_list_sort($books, $orderby, 'desc');
} else {
$books = wp_list_sort($books, $orderby);
}
return ['pages' => $pages, 'books' => $books];
}
} }

66
app/controllers/FrontPage.php

@ -8,64 +8,30 @@ class FrontPage extends Controller
{ {
public function blockCount() public function blockCount()
{ {
$c = 0; global $_wp_sidebars_widgets;
foreach ([ if (empty($_wp_sidebars_widgets)) {
'home-block-1', $_wp_sidebars_widgets = get_option('sidebars_widgets', []);
'home-block-2',
'home-block-3',
'home-block-4'
] as $block) {
if (is_active_sidebar($block)) {
$c++;
}
} }
return $c; $sidebars_widgets_count = $_wp_sidebars_widgets;
} if (isset($sidebars_widgets_count['front-page-block'])) {
return count($sidebars_widgets_count['front-page-block']);
public function blocks()
{
$blocks = [];
for ($i = 0; $i < 4; $i++) {
if (is_active_sidebar("home-block-$i")) {
$blocks[] = "home-block-$i";
}
} }
return 1;
return $blocks;
}
public function totalPages()
{
$books = wp_remote_get(network_home_url('/wp-json/pressbooks/v2/books?per_page=3'));
return $books['headers']['x-wp-totalpages'];
}
public function currentPage()
{
return get_query_var('page', 1);
}
public function previousPage()
{
return (get_query_var('page', 1) > 1) ? get_query_var('page') - 1 : 0;
}
public function nextPage()
{
return (get_query_var('page', 1) < FrontPage::totalPages()) ? get_query_var('page', 1) + 1 : 0;
} }
public function latestBooksTitle() public function latestBooksTitle()
{ {
return (empty(get_theme_mod('pb_front_page_catalog_title'))) ? $title = get_option('pb_front_page_catalog_title');
__('Our Latest Titles', 'aldine') : if ($title) {
get_theme_mod('pb_front_page_catalog_title'); return $title;
}
return __('Our Latest Titles', 'aldine');
} }
public static function latestBooks($page = 1, $per_page = 3) public function catalogData()
{ {
$books = wp_remote_get(network_home_url("/wp-json/pressbooks/v2/books?per_page=$per_page&page=$page")); $page = (get_query_var('page')) ? get_query_var('page') : 1;
$books = json_decode($books['body'], true); return App::catalogData($page, 3);
return $books;
} }
} }

111
app/controllers/PageCatalog.php

@ -0,0 +1,111 @@
<?php
namespace Aldine;
use Sober\Controller\Controller;
class PageCatalog extends Controller
{
public function licenses()
{
$licenses = (new \Pressbooks\Licensing())->getSupportedTypes();
foreach ($licenses as $key => $value) {
$licenses[$key] = preg_replace("/\([^)]+\)/", '', $value['desc']);
}
return $licenses;
}
public function subjectGroups()
{
return [
'business-finance' => [
'title' => __('Business and Finance', 'aldine'),
'subjects' => [
'accounting' => 'Accounting',
'finance' => 'Finance',
'information-systems' => 'Information Systems',
'management' => 'Management',
'marketing' => 'Marketing',
'economics' => 'Economics',
],
],
'engineering-technology' => [
'title' => __('Engineering &amp; Technology', 'aldine'),
'subjects' => [
'architecture' => 'Architecture',
'bioengineering' => 'Bioengineering',
'chemical' => 'Chemical',
'civil' => 'Civil',
'electrical' => 'Electrical',
'mechanical' => 'Mechanical',
'mining-and-materials' => 'Mining and Materials',
'urban-planning' => 'Urban Planning',
'computer-science' => 'Computer Science',
],
],
'health-sciences' => [
'title' => __('Health Sciences', 'aldine'),
'subjects' => [
'nursing' => 'Nursing',
'dentistry' => 'Dentistry',
'medicine' => 'Medicine',
],
],
'humanities-arts' => [
'title' => __('Humanities &amp; Arts', 'aldine'),
'subjects' => [
'archaeology' => 'Archaeology',
'art' => 'Art',
'classics' => 'Classics',
'literature' => 'Literature',
'history' => 'History',
'media' => 'Media',
'music' => 'Music',
'philosophy' => 'Philosophy',
'religion' => 'Religion',
'language' => 'Language',
],
],
'reference' => [
'title' => __('Reference', 'aldine'),
'subjects' => [
'student-guides' => 'Student Guides',
'teaching-guides' => 'Teaching Guides',
],
],
'science' => [
'title' => __('Sciences', 'aldine'),
'subjects' => [
'biology' => 'Biology',
'chemistry' => 'Chemistry',
'environent-and-earth-sciences' => 'Environment and Earth Sciences',
'geography' => 'Geography',
'mathematics' => 'Mathematics',
'physics' => 'Physics',
],
],
'social-sciences' => [
'title' => __('Social Sciences', 'aldine'),
'subjects' => [
'anthropology' => 'Anthropology',
'gender-studies' => 'Gender Studies',
'linguistics' => 'Linguistics',
'museums-libraries-and-information-sciences' => 'Museums, Libraries, and Information Sciences',
'political-science' => 'Political Science',
'psychology' => 'Psychology',
'social-work' => 'Social Work',
'sociology' => 'Sociology',
],
],
];
}
public function catalogData()
{
$page = (get_query_var('paged')) ? get_query_var('paged') : 1;
$orderby = (get_query_var('orderby')) ? get_query_var('orderby') : 'title';
$subject = (get_query_var('subject')) ? get_query_var('subject') : '';
$license = (get_query_var('license')) ? get_query_var('license') : '';
return App::catalogData($page, 9, $orderby, $license, $subject);
}
}

15
app/filters.php

@ -70,18 +70,3 @@ add_filter('comments_template', function ($comments_template) {
add_action('admin_bar_init', function () { add_action('admin_bar_init', function () {
remove_action('wp_head', '_admin_bar_bump_cb'); remove_action('wp_head', '_admin_bar_bump_cb');
}); });
/**
* Remove Emoji
* @see https://wordpress.stackexchange.com/questions/185577/disable-emojicons-introduced-with-wp-4-2
*/
add_action('init', function () {
remove_action('admin_print_styles', 'print_emoji_styles');
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('wp_print_styles', 'print_emoji_styles');
remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
remove_filter('the_content_feed', 'wp_staticize_emoji');
remove_filter('comment_text_rss', 'wp_staticize_emoji');
add_filter('emoji_svg_url', '__return_false');
});

59
app/helpers.php

@ -136,3 +136,62 @@ function locate_template($templates)
{ {
return \locate_template(filter_templates($templates)); return \locate_template(filter_templates($templates));
} }
/**
*
* Catch a contact form submission.
*
* @return false | array
*/
function contact_form_submission()
{
if (isset($_POST['submitted'])) {
$output = [];
$name = (isset($_POST['visitor_name'])) ? $_POST['visitor_name'] : false;
$email = (isset($_POST['visitor_email'])) ? $_POST['visitor_email'] : false;
$institution = (isset($_POST['visitor_institution'])) ? $_POST['visitor_institution'] : false;
$message = (isset($_POST['message'])) ? $_POST['message'] : false;
if (!$name) {
$output['message'] = __('Name is required.', 'aldine');
$output['status'] = 'error';
$output['field'] = 'visitor_name';
} elseif (!$email) {
$output['message'] = __('Email is required.', 'aldine');
$output['status'] = 'error';
$output['field'] = 'visitor_email';
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$output['message'] = __('Email is invalid.', 'aldine');
$output['status'] = 'error';
$output['field'] = 'visitor_email';
} elseif (!$institution) {
$output['message'] = __('Institution is required.', 'aldine');
$output['status'] = 'error';
$output['field'] = 'visitor_institution';
} elseif (!$message) {
$output['message'] = __('Message is required.', 'aldine');
$output['status'] = 'error';
$output['field'] = 'message';
} else {
$sent = wp_mail(
get_option('admin_email'),
sprintf(__('Contact Form Submission from %s', 'aldine'), $name),
sprintf(
"From: %1\$s <%2\$s>\n%3\$s",
$name,
$email,
strip_tags($message)
),
"From: ${email}\r\nReply-To: ${email}\r\n"
);
if ($sent) {
$output['message'] = __('Your message was sent!', 'aldine');
$output['status'] = 'success';
} else {
$output['message'] = __('Your message could not be sent.', 'aldine');
$output['status'] = 'error';
}
}
return $output;
}
return false;
}

38
app/intervention.php

@ -0,0 +1,38 @@
<?php
namespace Aldine;
use function \Sober\Intervention\intervention;
if (function_exists('\Sober\Intervention\intervention')) {
intervention('remove-customizer-items', 'static-front-page', 'all');
intervention('remove-emoji');
intervention('remove-howdy', __('Hello,', 'aldine'));
intervention('remove-dashboard-items', ['activity', 'quick-draft']);
intervention('remove-menu-items', [
'posts',
'tools',
'setting-writing',
'setting-reading',
'setting-permalink'
], 'all');
intervention('remove-widgets', [
'pages',
'calendar',
'archives',
'links',
'media-audio',
'meta',
'search',
'categories',
'recent-posts',
'recent-comments',
'rss',
'tag-cloud',
'custom-menu',
'custom-html',
'media-video',
'akismet',
], 'all');
intervention('remove-toolbar-frontend', 'all');
}

132
app/setup.php

@ -11,45 +11,9 @@ use Roots\Sage\Template\BladeProvider;
* Theme assets * Theme assets
*/ */
add_action('wp_enqueue_scripts', function () { add_action('wp_enqueue_scripts', function () {
wp_enqueue_style( $webfonts = 'https://fonts.googleapis.com/css?family=Karla:400,400i,700|Spectral:400,400i,600';
'aldine/webfonts', wp_enqueue_style('aldine/webfonts', $webfonts, false, null);
'https://fonts.googleapis.com/css?family=Karla:400,400i,700|Spectral:400,400i,600',
false,
null
);
wp_enqueue_style('aldine/main.css', asset_path('styles/main.css'), false, null); wp_enqueue_style('aldine/main.css', asset_path('styles/main.css'), false, null);
/* wp_enqueue_style(
'uio/normalize.css',
get_theme_file_uri() . '/lib/infusion/src/lib/normalize/css/normalize.css',
false,
null
);
wp_enqueue_style(
'uio/fluid.css',
get_theme_file_uri() . '/lib/infusion/src/framework/core/css/fluid.css',
false,
null
);
wp_enqueue_style(
'uio/enactors.css',
get_theme_file_uri() . '/lib/infusion/src/framework/preferences/css/Enactors.css',
false,
null
);
wp_enqueue_style(
'uio/prefseditor.css',
get_theme_file_uri() . '/lib/infusion/src/framework/preferences/css/PrefsEditor.css',
false,
null
);
wp_enqueue_style(
'uio/separatedpanelprefseditor.css',
get_theme_file_uri() . '/lib/infusion/src/framework/preferences/css/SeparatedPanelPrefsEditor.css',
false,
null
);
wp_enqueue_script('uio.js', get_theme_file_uri() . '/lib/infusion/infusion-uiOptions.js', ['jquery'], null, true);
*/
wp_enqueue_script('aldine/main.js', asset_path('scripts/main.js'), ['jquery'], null, true); wp_enqueue_script('aldine/main.js', asset_path('scripts/main.js'), ['jquery'], null, true);
wp_localize_script('aldine/main.js', 'SAGE_DIST_PATH', get_theme_file_uri() . '/dist/'); wp_localize_script('aldine/main.js', 'SAGE_DIST_PATH', get_theme_file_uri() . '/dist/');
}, 100); }, 100);
@ -72,6 +36,28 @@ add_action('after_setup_theme', function () {
'network-footer-menu' => __('Network Footer Menu', 'aldine') 'network-footer-menu' => __('Network Footer Menu', 'aldine')
]); ]);
/**
* Enable custom headers
* @link https://developer.wordpress.org/themes/functionality/custom-headers/
*/
add_theme_support('custom-header', [
'default-image' => asset_path('images/header.jpg'),
'width' => 1920,
'height' => 884,
'default-text-color' => '#000',
]);
/**
* Enable custom logos
* @link https://developer.wordpress.org/themes/functionality/custom-logo/
*/
add_theme_support('custom-logo', [
'height' => 40,
'width' => 265,
'flex-width' => true,
'flex-height' => true,
]);
/** /**
* Enable post thumbnails * Enable post thumbnails
* @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/ * @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/
@ -108,27 +94,35 @@ add_action('widgets_init', function () {
'after_title' => '</h3>' 'after_title' => '</h3>'
]; ];
register_sidebar([ register_sidebar([
'name' => __('Home Block 1', 'aldine'), 'name' => __('Front Page Content', 'aldine'),
'id' => 'home-block-1' 'description' => __(
] + $config); 'Add content for your network&rsquo;s front page here. Currently, only text widgets are supported.',
register_sidebar([ 'aldine'
'name' => __('Home Block 2', 'aldine'), ),
'id' => 'home-block-2' 'id' => 'front-page-block',
] + $config); 'before_widget' => '<section class="block %1$s %2$s">',
register_sidebar([ 'after_widget' => '</section>',
'name' => __('Home Block 3', 'aldine'), 'before_title' => '<h3 class="tc ttu">',
'id' => 'home-block-3' 'after_title' => '</h3>'
] + $config); ]);
register_sidebar([
'name' => __('Home Block 4', 'aldine'),
'id' => 'home-block-4'
] + $config);
register_sidebar([ register_sidebar([
'name' => __('Network Footer Block 1', 'aldine'), 'name' => __('Network Footer Block 1', 'aldine'),
'description' => __(
'Add content for your network&rsquo;s customizeable footer here.
Currently, only text and image widgets are supported.
Content in this widget area will appear in the first row (on mobile) or the first column (on desktops).',
'aldine'
),
'id' => 'network-footer-block-1' 'id' => 'network-footer-block-1'
] + $config); ] + $config);
register_sidebar([ register_sidebar([
'name' => __('Network Footer Block 2', 'aldine'), 'name' => __('Network Footer Block 2', 'aldine'),
'description' => __(
'Add content for your network&rsquo;s customizeable footer here.
Currently, only text and image widgets are supported.
Content in this widget area will appear in the second row (on mobile) or the middle column (on desktop).',
'aldine'
),
'id' => 'network-footer-block-2' 'id' => 'network-footer-block-2'
] + $config); ] + $config);
}); });
@ -171,3 +165,35 @@ add_action('after_setup_theme', function () {
return "<?= " . __NAMESPACE__ . "\\asset_path({$asset}); ?>"; return "<?= " . __NAMESPACE__ . "\\asset_path({$asset}); ?>";
}); });
}); });
add_action('wp_head', function () {
$primary = get_option('pb_network_color_primary');
$accent = get_option('pb_network_color_accent');
$primary_fg = get_option('pb_network_color_primary_fg');
$accent_fg = get_option('pb_network_color_accent_fg');
$header_text = get_header_textcolor();
if ($primary || $accent || $primary_fg || $accent_fg || $header_text) { ?>
<style type="text/css">:root {
<?php if ($primary) { ?>
--primary: <?= $primary ?>;
<?php }
if ($accent) { ?>
--accent: <?= $accent ?>;
<?php }
if ($primary_fg) { ?>
--primary-fg: <?= $primary_fg ?>;
<?php }
if ($accent_fg) { ?>
--accent-fg: <?= $accent_fg ?>;
<?php }
if ($header_text) { ?>
--header-text: <?= $header_text ?>;
<?php } ?>
}</style>
<?php }
});
add_action('wp_head', function () {
$response = contact_form_submission();
sage('blade')->share('contact_form_response', $response);
});

24
app/widgets.php

@ -1,24 +0,0 @@
<?php
namespace Aldine;
add_action('widgets_init', function () {
foreach ([
'WP_Widget_Pages',
'WP_Widget_Calendar',
'WP_Widget_Archives',
'WP_Widget_Links',
'WP_Widget_Media_Audio',
'WP_Widget_Meta',
'WP_Widget_Search',
'WP_Widget_Categories',
'WP_Widget_Recent_Posts',
'WP_Widget_Recent_Comments',
'WP_Widget_RSS',
'WP_Widget_Tag_Cloud'
] as $widget) {
unregister_widget($widget);
}
register_widget('Aldine\LinkButton');
register_widget('Aldine\PageButton');
});

86
app/widgets/linkbutton.php

@ -1,86 +0,0 @@
<?php
namespace Aldine;
class LinkButton extends \WP_Widget
{
/**
* Constructor.
*
* @see WP_Widget::__construct()
*
*/
public function __construct()
{
parent::__construct('linkbutton', __('Link Button', 'aldine'), [
'description' => esc_html__('Add a styled button which links to a custom URL.', 'aldine')
]);
}
/**
* Front-end display of widget.
*
* @see WP_Widget::widget()
*
* @param array $args Widget arguments.
* @param array $instance Saved values from database.
*/
public function widget($args, $instance)
{
echo $args['before_widget'];
if (! empty($instance['url']) && ! empty($instance['title'])) {
printf(
'<a class="button" href="%1$s">%2$s</a>',
$instance['url'],
apply_filters('widget_title', $instance['title'])
);
}
echo $args['after_widget'];
}
/**
* Back-end widget form.
*
* @see WP_Widget::form()
*
* @param array $instance Previously saved values from database.
*/
public function form($instance)
{
$title = ! empty($instance['title']) ? $instance['title'] : '';
$url = ! empty($instance['url']) ? $instance['url'] : ''; ?>
<p><label for="<?= esc_attr($this->get_field_id('title')); ?>"><?php _e('Title:', 'aldine'); ?></label>
<input
class="widefat"
id="<?= esc_attr($this->get_field_id('title')); ?>"
name="<?= esc_attr($this->get_field_name('title')); ?>"
type="text"
value="<?= esc_attr($title); ?>"></p>
<p><label for="<?= esc_attr($this->get_field_id('url')); ?>"><?php _e('URL:', 'aldine'); ?></label>
<input
class="widefat code"
id="<?= esc_attr($this->get_field_id('url')); ?>"
name="<?= esc_attr($this->get_field_name('url')); ?>"
type="text"
value="<?= esc_attr($url); ?>"></p>
<?php
}
/**
* Sanitize widget form values as they are saved.
*
* @see WP_Widget::update()
*
* @param array $new_instance Values just sent to be saved.
* @param array $old_instance Previously saved values from database.
*
* @return array Updated safe values to be saved.
*/
public function update($new_instance, $old_instance)
{
$instance = [];
$instance['title'] = ( ! empty($new_instance['title']) ) ? strip_tags($new_instance['title']) : '';
$instance['url'] = ( ! empty($new_instance['url']) ) ? esc_url($new_instance['url']) : '';
return $instance;
}
}

95
app/widgets/pagebutton.php

@ -1,95 +0,0 @@
<?php
namespace Aldine;
class PageButton extends \WP_Widget
{
/**
* Constructor.
*
* @see WP_Widget::__construct()
*
*/
public function __construct()
{
parent::__construct('pagebutton', __('Page Button', 'aldine'), [
'description' => esc_html__('Add a styled button which links to a page.', 'aldine')
]);
}
/**
* Front-end display of widget.
*
* @see WP_Widget::widget()
*
* @param array $args Widget arguments.
* @param array $instance Saved values from database.
*/
public function widget($args, $instance)
{
echo $args['before_widget'];
if (! empty($instance['page_id'])) {
if (empty($instance['title'])) {
$instance['title'] = get_the_title($instance['page_id']);
}
printf(
'<a class="button" href="%1$s">%2$s</a>',
get_permalink($instance['page_id']),
apply_filters('widget_title', $instance['title'])
);
}
echo $args['after_widget'];
}
/**
* Back-end widget form.
*
* @see WP_Widget::form()
*
* @param array $instance Previously saved values from database.
*/
public function form($instance)
{
$title = ! empty($instance['title']) ? $instance['title'] : '';
$page_id = ! empty($instance['page_id']) ? $instance['page_id'] : ''; ?>
<p><label for="<?= esc_attr($this->get_field_id('title')); ?>"><?php _e('Title:', 'aldine'); ?></label>
<input
class="widefat"
id="<?= esc_attr($this->get_field_id('title')); ?>"
name="<?= esc_attr($this->get_field_name('title')); ?>"
type="text"
value="<?= esc_attr($title); ?>"></p>
<p><label for="<?= esc_attr($this->get_field_id('page_id')); ?>"><?php _e('Page:', 'aldine'); ?></label>
<select
id="<?= esc_attr($this->get_field_id('page_id')); ?>"
name="<?= esc_attr($this->get_field_name('page_id')); ?>">
<option value="" <?php selected($page_id, ''); ?>> -- </a>
<?php $pages = get_pages();
foreach ($pages as $page) { ?>
<option value="<?= $page->ID; ?>"
<?php selected($page_id, $page->ID); ?>>
<?= $page->post_title; ?>
</option>
<?php } ?>
</select></p>
<?php
}
/**
* Sanitize widget form values as they are saved.
*
* @see WP_Widget::update()
*
* @param array $new_instance Values just sent to be saved.
* @param array $old_instance Previously saved values from database.
*
* @return array Updated safe values to be saved.
*/
public function update($new_instance, $old_instance)
{
$instance = [];
$instance['title'] = ( ! empty($new_instance['title']) ) ? strip_tags($new_instance['title']) : '';
$instance['page_id'] = ( ! empty($new_instance['page_id']) ) ? absint($new_instance['page_id']) : '';
return $instance;
}
}

3
composer.json

@ -31,7 +31,8 @@
"composer/installers": "~1.0", "composer/installers": "~1.0",
"illuminate/support": "~5.4", "illuminate/support": "~5.4",
"roots/sage-lib": "~9.0.0-beta.4", "roots/sage-lib": "~9.0.0-beta.4",
"soberwp/controller": "~9.0.0-beta.4" "soberwp/controller": "~9.0.0-beta.4",
"soberwp/intervention": "1.2.0-p"
}, },
"require-dev": { "require-dev": {
"squizlabs/php_codesniffer": "^2.8.0" "squizlabs/php_codesniffer": "^2.8.0"

51
composer.lock generated

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "20e6a6348254da7e1d66757d1a89fc01", "content-hash": "b64704b574ef5a22a123a59ab6fbc069",
"packages": [ "packages": [
{ {
"name": "brain/hierarchy", "name": "brain/hierarchy",
@ -831,6 +831,55 @@
], ],
"time": "2017-08-22T17:35:30+00:00" "time": "2017-08-22T17:35:30+00:00"
}, },
{
"name": "soberwp/intervention",
"version": "1.2.0-p",
"source": {
"type": "git",
"url": "https://github.com/soberwp/intervention.git",
"reference": "1698e51efe696c5867fb78ef7c5d2efff9b79260"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/soberwp/intervention/zipball/1698e51efe696c5867fb78ef7c5d2efff9b79260",
"reference": "1698e51efe696c5867fb78ef7c5d2efff9b79260",
"shasum": ""
},
"require": {
"composer/installers": "~1.0",
"php": ">=5.4.0"
},
"require-dev": {
"squizlabs/php_codesniffer": "2.*"
},
"type": "package",
"autoload": {
"psr-4": {
"Sober\\Intervention\\": "src/",
"Sober\\Intervention\\Module\\": "src/modules/"
},
"files": [
"intervention.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Darren Jacoby",
"email": "darren@jacoby.co.za",
"homepage": "https://twitter.com/withjacoby"
}
],
"description": "WordPress plugin containing modules to cleanup and customize wp-admin.",
"homepage": "https://github.com/soberwp",
"keywords": [
"wordpress"
],
"time": "2017-08-26T12:21:27+00:00"
},
{ {
"name": "symfony/debug", "name": "symfony/debug",
"version": "v3.3.6", "version": "v3.3.6",

3
package.json

@ -102,8 +102,9 @@
"stylelint-webpack-plugin": "^0.8.0" "stylelint-webpack-plugin": "^0.8.0"
}, },
"dependencies": { "dependencies": {
"isotope-layout": "^3.0.4",
"jquery": "1.12.4 - 3", "jquery": "1.12.4 - 3",
"slick-carousel": "^1.7.1", "jquery-bridget": "^2.0.1",
"tachyons-sass": "~4.7", "tachyons-sass": "~4.7",
"wpapi": "^1.1.2" "wpapi": "^1.1.2"
} }

4
resources/assets/build/webpack.config.js

@ -120,6 +120,10 @@ let webpackConfig = {
'node_modules', 'node_modules',
'bower_components', 'bower_components',
], ],
alias: {
'masonry': 'masonry-layout',
'isotope': 'isotope-layout',
},
enforceExtension: false, enforceExtension: false,
}, },
resolveLoader: { resolveLoader: {

BIN
resources/assets/images/banner-desktop.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 568 KiB

BIN
resources/assets/images/banner-mobile.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

BIN
resources/assets/images/banner-two.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

BIN
resources/assets/images/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 KiB

BIN
resources/assets/images/catalog-header.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
resources/assets/images/header.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

1
resources/assets/images/left-arrow.svg

@ -0,0 +1 @@
<svg width="25" height="19" viewBox="0 0 25 19" xmlns="http://www.w3.org/2000/svg"><path d="M10.68 16.286l-6.13-6.148h18.82a1.08 1.08 0 0 0 1.075-1.078A1.08 1.08 0 0 0 23.37 7.98H4.55l6.13-6.147c.216-.216.323-.486.323-.755 0-.27-.107-.54-.323-.755a1.037 1.037 0 0 0-1.505 0l-7.958 7.98a1.045 1.045 0 0 0 0 1.51l7.958 8.036c.43.431 1.075.431 1.505 0 .216-.216.323-.485.323-.81 0-.269-.107-.538-.323-.754z" fill="#0B5B75" fill-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 447 B

BIN
resources/assets/images/logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

1
resources/assets/images/logo.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.6 KiB

BIN
resources/assets/images/logo@2x.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

BIN
resources/assets/images/pb.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 813 B

BIN
resources/assets/images/pb@2x.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

1
resources/assets/images/right-arrow.svg

@ -0,0 +1 @@
<svg width="25" height="19" viewBox="0 0 25 19" xmlns="http://www.w3.org/2000/svg"><path d="M14.66 1.887l6.129 6.148H1.969A1.08 1.08 0 0 0 .896 9.114a1.08 1.08 0 0 0 1.075 1.078h18.819l-6.13 6.148a1.065 1.065 0 0 0-.322.755c0 .27.107.54.323.755.43.431 1.075.431 1.505 0l7.958-7.981c.43-.432.43-1.079 0-1.51L16.165.324a1.037 1.037 0 0 0-1.505 0 1.098 1.098 0 0 0-.323.808c0 .27.107.54.323.755z" fill="#0B5B75" fill-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 436 B

7
resources/assets/scripts/main.js

@ -1,12 +1,11 @@
// import external dependencies // import external dependencies
import 'jquery'; import 'jquery';
import 'slick-carousel';
// import local dependencies // import local dependencies
import Router from './util/Router'; import Router from './util/Router';
import common from './routes/common'; import common from './routes/common';
import home from './routes/home'; import home from './routes/home';
import aboutUs from './routes/about'; import catalog from './routes/catalog';
/** Populate Router instance with DOM routes */ /** Populate Router instance with DOM routes */
const routes = new Router({ const routes = new Router({
@ -14,8 +13,8 @@ const routes = new Router({
common, common,
// Home page // Home page
home, home,
// About Us page, note the change from about-us to aboutUs. // Catalog page
aboutUs, catalog,
}); });
// Load Events // Load Events

5
resources/assets/scripts/routes/about.js

@ -1,5 +0,0 @@
export default {
init() {
// JavaScript to be fired on the about us page
},
};

101
resources/assets/scripts/routes/catalog.js

@ -0,0 +1,101 @@
const jQueryBridget = require('jquery-bridget');
const Isotope = require('isotope-layout');
export default {
init() {
// JavaScript to be fired on the catalog page
jQueryBridget('isotope', Isotope, $);
let $grid = $('.books');
$grid.isotope({
itemSelector: '.book',
getSortData: {
title: '.title a',
subject: '[data-subject]',
latest: '[data-date-published]',
},
sortAscending: {
title: true,
subject: true,
latest: false,
},
});
$('.filters > a').click((e) => {
e.preventDefault();
$('.filters').toggleClass('is-active');
$('.filter-groups > div').removeClass('is-active');
})
$('.filter-groups .subjects > a').click((e) => {
e.preventDefault();
let id = $(e.currentTarget).attr('href');
$(`.filter-groups .subjects:not(${id})`).removeClass('is-active');
$(`.filter-groups ${id}`).toggleClass('is-active');
})
$('.licenses > a').click((e) => {
e.preventDefault();
let id = $(e.currentTarget).attr('href');
$(id).toggleClass('is-active');
})
$('.subjects .filter-list a').click((e) => {
e.preventDefault();
if ($(e.currentTarget).hasClass('is-active')) {
$('.subjects .filter-list a').removeClass('is-active');
$('.subjects').removeClass('has-active-child');
} else {
$('.subjects .filter-list a').removeClass('is-active');
$(e.currentTarget).addClass('is-active');
$('.subjects').removeClass('has-active-child');
$(e.currentTarget).parent().parent().parent('.subjects').addClass('has-active-child');
}
let subjectValue = $('.subjects .filter-list a.is-active').attr('data-filter');
let licenseValue = $('.licenses .filter-list a.is-active').attr('data-filter');
if(typeof licenseValue === "undefined") {
licenseValue = '';
} else {
licenseValue = `[data-license="${licenseValue}"]`;
}
if(typeof subjectValue === "undefined") {
subjectValue = '';
} else {
subjectValue = `[data-subject="${subjectValue}"]`;
}
$grid.isotope({ filter: `${subjectValue}${licenseValue}` });
});
$('.licenses .filter-list a').click((e) => {
e.preventDefault();
if ($(e.currentTarget).hasClass('is-active')) {
$('.licenses .filter-list a').removeClass('is-active');
$('.licenses').removeClass('has-active-child');
} else {
$('.licenses .filter-list a').removeClass('is-active');
$(e.currentTarget).addClass('is-active');
$('.licenses').addClass('has-active-child');
}
let subjectValue = $('.subjects .filter-list a.is-active').attr('data-filter');
let licenseValue = $('.licenses .filter-list a.is-active').attr('data-filter');
if(typeof licenseValue === "undefined") {
licenseValue = '';
} else {
licenseValue = `[data-license="${licenseValue}"]`;
}
if(typeof subjectValue === "undefined") {
subjectValue = '';
} else {
subjectValue = `[data-subject="${subjectValue}"]`;
}
$grid.isotope({ filter: `${subjectValue}${licenseValue}` });
});
$('.sort > a').click((e) => {
e.preventDefault();
$('.sort').toggleClass('is-active');
})
$('.sorts a').click((e) => {
e.preventDefault();
let sortBy = $(e.currentTarget).attr('data-sort');
$('.sorts a').removeClass('is-active');
$(e.currentTarget).addClass('is-active');
$grid.isotope({sortBy: sortBy});
});
},
finalize() {
},
};

58
resources/assets/scripts/routes/home.js

@ -1,64 +1,6 @@
const WPAPI = require( 'wpapi' );
export default { export default {
init() { init() {
// JavaScript to be fired on the home page // JavaScript to be fired on the home page
let books = $('.books');
let pb = new WPAPI({ endpoint: 'http://pressbooks.dev/wp-json' });
pb.books = pb.registerRoute( 'pressbooks/v2', '/books/' );
function loadNextPage() {
let nextpage = books.attr('data-next-page');
if (typeof nextpage !== typeof undefined && nextpage !== false) {
const total = parseInt($('.books').attr('data-total-pages'));
const page = parseInt($('.books').attr('data-next-page'));
pb.books().perPage(3).page(page).then(function(data) {
data.forEach((book) => {
books.slick('slickAdd', `<div class="book w-100">
<p class="subject tc ma0"><a href="">Fiction</a></p>
<p class="title tc ma0"><a href="${book.link}">${book.metadata.name}</a></p>
<p class="read-more tl ma0"><a href="${book.link}">About this book &rarr;</a></p>
</div>`); // TODO Localize
});
if (page < total) {
books.attr('data-next-page', page + 1);
} else {
books.removeAttr('data-next-page');
}
}).catch(function(err) { // TODO handle error
console.error(err); // eslint-disable-line
});
}
}
books.on('init', () => {
loadNextPage();
})
books.slick({
slidesToShow: 1,
slidesToScroll: 1,
infinite: false,
mobileFirst: true,
prevArrow: '.latest-books .navigation .previous',
nextArrow: '.latest-books .navigation .next',
responsive: [
{
breakpoint: 960,
settings: {
slidesToShow: 3,
slidesToScroll: 3,
},
},
],
variableWidth: true,
});
books.on('afterChange', (slick, currentSlide) => {
if((parseInt($('.slick-active:last').attr('data-slick-index')) + 1) === currentSlide.slideCount) {
loadNextPage(true);
}
})
}, },
finalize() { finalize() {
}, },

8
resources/assets/styles/common/_functions.scss

@ -1,3 +1,7 @@
@function em($pixels, $context: $base-font-size) { @function rem($pixels, $context: $base-font-size) {
@return #{$pixels / $context}em; @return #{$pixels / $context}rem;
}
@function percent($target, $context) {
@return ($target / $context) * 100%;
} }

56
resources/assets/styles/common/_global.scss

@ -1,3 +1,7 @@
html {
-webkit-font-smoothing: antialiased;
}
* { * {
box-sizing: border-box; box-sizing: border-box;
} }
@ -5,7 +9,8 @@
body { body {
margin: 0; margin: 0;
font-family: $font-family-serif; font-family: $font-family-serif;
font-size: #{$base-font-size}px; font-size: rem(18);
background: #fff;
} }
h1, h1,
@ -18,22 +23,61 @@ h6 {
} }
h1 { h1 {
font-size: em(30); font-size: rem(30);
font-weight: 600; font-weight: 600;
text-transform: uppercase; letter-spacing: rem(2);
letter-spacing: em(2);
line-height: (36/30); line-height: (36/30);
margin: 0; margin: 0;
} }
h2 { h2 {
font-size: em(16); font-size: rem(16);
font-weight: normal; font-weight: normal;
line-height: (30/16); line-height: (30/16);
margin: 0; margin: 0;
} }
.ml-auto {
margin-left: auto;
}
.mr-auto {
margin-right: auto;
}
:root {
--primary: $brand-primary;
--accent: $brand-accent;
--primary-fg: $white;
--accent-fg: $white;
--header-text: $black;
}
a { a {
color: $brand-primary; color: var(--primary, $brand-primary);
text-decoration: none; text-decoration: none;
} }
.primary {
color: var(--brand-primary, $brand-primary);
}
.bg-primary {
background-color: var(--brand-primary, $brand-primary);
}
.b--primary {
border-color: var(--brand-primary, $brand-primary);
}
.accent {
color: var(--brand-secondary, $brand-accent);
}
.bg-accent {
background-color: var(--brand-secondary, $brand-accent);
}
.b--accent {
border-color: var(--brand-secondary, $brand-accent);
}

7
resources/assets/styles/common/_variables.scss

@ -1,6 +1,7 @@
/** Colors */ /** Colors */
$brand-primary: #b01109; $brand-primary: #b01109;
$brand-secondary: #015d75; $brand-accent: #015d75;
$light-gray: #ececec;
$dark-grey: #444; $dark-grey: #444;
$black: #000; $black: #000;
$white: #fff; $white: #fff;
@ -17,4 +18,4 @@ $extra-large: 1650px;
/** Fonts */ /** Fonts */
$font-family-sans-serif: 'Karla', sans-serif; $font-family-sans-serif: 'Karla', sans-serif;
$font-family-serif: 'Spectral', serif; $font-family-serif: 'Spectral', serif;
$base-font-size: 18; $base-font-size: 16;

60
resources/assets/styles/components/_buttons.scss

@ -1,63 +1,47 @@
.button { .button {
display: inline-block; display: inline-block;
width: 250px; width: rem(250);
height: 60px; height: rem(60);
margin-top: 2em; padding: rem(19);
padding: 1.25em; border: 2px solid var(--primary, $brand-primary);
border: 2px solid $brand-primary;
border-radius: 3px; border-radius: 3px;
background: $brand-primary; background: var(--primary, $brand-primary);
font-family: $font-family-sans-serif; font-family: $font-family-sans-serif;
font-size: em(16); font-size: 1rem;
font-weight: 600; font-weight: 600;
color: $white; color: var(--primary-fg, $white);
letter-spacing: 2px; line-height: normal;
letter-spacing: rem(2);
text-align: center; text-align: center;
text-decoration: none; text-decoration: none;
text-transform: uppercase; text-transform: uppercase;
transition: all 0.5s; transition: all 0.5s;
vertical-align: middle;
&:hover, &:hover,
&:focus { &:focus {
background: $white; background: $white;
color: $brand-primary; color: var(--primary, $brand-primary);
} }
&.button-wide { &.button--small {
width: 305px; width: rem(150);
height: rem(40);
padding: rem(6.5);
} }
&.button-outline { &.button--wide {
background: $white; width: 19.0625rem;
color: $brand-primary;
&:hover,
&:focus {
background: $brand-primary;
color: $white;
}
} }
&.button-secondary { &.button--outline {
border: 2px solid $brand-secondary; background: $white;
background: $brand-secondary; color: var(--primary, $brand-primary);
color: $white;
&:hover, &:hover,
&:focus { &:focus {
background: $white; color: var(--primary-fg, $white);
color: $brand-secondary; background: var(--primary, $brand-primary);
}
&.button-outline {
background: $white;
color: $brand-secondary;
&:hover,
&:focus {
background: $brand-secondary;
color: $white;
}
} }
} }
} }

93
resources/assets/styles/components/_forms.scss

@ -3,3 +3,96 @@
// TODO: .search-form label {} // TODO: .search-form label {}
// TODO: .search-form .search-field {} // TODO: .search-form .search-field {}
// TODO: .search-form .search-submit {} // TODO: .search-form .search-submit {}
::placeholder {
color: $black;
}
.contact {
background: #f6f6f6;
padding: rem(65) 0 rem(120);
h3 {
color: var(--primary, $brand-primary);
&::before {
content: '';
display: block;
margin: 0 auto 1rem;
width: rem(46);
height: rem(5);
background: var(--accent, $brand-accent);
}
}
p {
font-size: 0.875rem;
font-weight: 600;
font-family: $font-family-sans-serif;
&:last-child {
margin-top: rem(47);
}
}
.success {
color: $dark-green;
}
.error {
color: $dark-red;
}
form {
width: 22.125rem;
.error > input[type="text"],
.error > input[type="email"],
.error > textarea {
border-bottom: solid 2px $dark-red;
}
.error > ::placeholder {
color: $dark-red;
}
}
label {
margin-bottom: 1rem;
}
label,
input[type="text"],
input[type="email"],
textarea {
font-size: 0.875rem;
font-weight: 600;
font-family: $font-family-sans-serif;
background: transparent;
}
.button {
background: transparent;
}
textarea {
height: 7.5em; // TODO
resize: none;
}
input[type="text"],
input[type="email"],
textarea {
flex-grow: 1;
border-top: 0;
border-right: 0;
border-left: 0;
border-bottom: solid 2px $black;
padding: 0 0 1em;
&:focus {
outline: none;
border-bottom: solid 2px var(--accent, $brand-accent);
}
}
}

1
resources/assets/styles/components/_grid.scss

@ -3,5 +3,4 @@
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
width: 100%; width: 100%;
padding: 0 7.5px;
} }

20
resources/assets/styles/layouts/_footer.scss

@ -1,11 +1,11 @@
.content-info { .content-info {
.network-footer { .network-footer {
background: $brand-secondary;
margin-bottom: 0; margin-bottom: 0;
padding: 60px 42.5px 40px; padding: 60px 42.5px 40px;
font-family: $font-family-sans-serif; font-family: $font-family-sans-serif;
font-size: em(16); font-size: rem(16);
color: $white; color: var(--accent-fg, $white);
background: var(--accent, $brand-accent);
ul { ul {
margin: 0; margin: 0;
@ -17,13 +17,13 @@
} }
a { a {
color: $white; color: var(--accent-fg, $white);
text-decoration: none; text-decoration: none;
border-bottom: solid 1px transparent; border-bottom: solid 1px transparent;
&:hover, &:hover,
&:focus { &:focus {
border-bottom: solid 1px $white; border-bottom: solid 1px var(--accent-fg, $white);
} }
} }
@ -36,7 +36,7 @@
} }
.network-footer-block { .network-footer-block {
border-top: solid 1px $white; border-top: solid 1px var(--accent-fg, $white);
} }
.network-footer-block-1 { .network-footer-block-1 {
@ -76,7 +76,7 @@
margin-top: 1em; margin-top: 1em;
a { a {
font-size: em(32); font-size: rem(32);
margin: 0 0.25em; margin: 0 0.25em;
transition: all 0.4s; transition: all 0.4s;
} }
@ -103,7 +103,7 @@
} }
h1 { h1 {
font-size: em(16); font-size: rem(16);
font-weight: normal; font-weight: normal;
margin-bottom: 0; margin-bottom: 0;
@ -125,7 +125,7 @@
ul { ul {
display: none; display: none;
margin: 0; margin: 0;
font-size: em(14); font-size: rem(14);
} }
.pressbooks-icon { .pressbooks-icon {
@ -175,7 +175,7 @@
.social-media { .social-media {
a { a {
font-size: em(24); font-size: rem(24);
margin: 0 0.5em 0 0; margin: 0 0.5em 0 0;
} }
} }

61
resources/assets/styles/layouts/_header.scss

@ -1,6 +1,4 @@
.banner { .banner {
background-image: url('../images/banner-mobile.jpg');
.container { .container {
height: 560px; height: 560px;
max-width: 1440px; max-width: 1440px;
@ -18,14 +16,14 @@
top: 7px; top: 7px;
width: 25px; width: 25px;
height: 3px; height: 3px;
background: $brand-primary; background: var(--primary, $brand-primary);
&::before, &::before,
&::after { &::after {
width: 25px; width: 25px;
height: 3px; height: 3px;
content: ''; content: '';
background: $brand-primary; background: var(--primary, $brand-primary);
} }
&::before { &::before {
@ -43,21 +41,26 @@
&.is-active .icon { &.is-active .icon {
// TODO // TODO
background: $white; background: var(--primary-fg, $white);
&::before, &::before,
&::after { &::after {
background: $white; background: var(--primary-fg, $white);
} }
} }
} }
.brand { .brand {
width: 109px; width: 6.5625rem;
height: 17px; height: auto;
margin: 30px 0 0 17px; margin: 30px 0 0 17px;
background-image: url('../images/logo.png');
background-size: 109px 17px; svg,
img {
width: auto;
max-width: 100%;
height: auto;
}
} }
.primary-navigation { .primary-navigation {
@ -68,9 +71,9 @@
a { a {
display: none; display: none;
font-family: $font-family-sans-serif; font-family: $font-family-sans-serif;
font-size: em(24); font-size: rem(24);
line-height: (80/24); line-height: (80/24);
color: $white; color: var(--primary-fg, $white);
letter-spacing: 0; letter-spacing: 0;
} }
@ -82,12 +85,12 @@
margin: 0; margin: 0;
padding: 0 52px; padding: 0 52px;
z-index: 1; z-index: 1;
background: $brand-primary; background: var(--primary, $brand-primary);
a { a {
display: block; display: block;
width: 100%; width: 100%;
border-bottom: solid 1px $white; border-bottom: solid 1px var(--primary-fg, $white);
&:last-child { &:last-child {
border-bottom: 0; border-bottom: 0;
@ -105,21 +108,21 @@
} }
} }
.page:not(.home) .banner .branding {
display: none;
}
@media #{$breakpoint-large} { @media #{$breakpoint-large} {
.banner { .banner {
background-image: url('../images/banner-desktop.jpg');
.container { .container {
height: 880px; height: 880px;
margin: 0 auto; margin: 0 auto;
} }
.brand { .brand {
width: 265px; width: 16.5625rem;
height: 40px; height: auto;
margin-top: 40px; margin-top: 40px;
background-image: url('../images/logo@2x.png');
background-size: 265px 40px;
} }
.primary-navigation { .primary-navigation {
@ -130,20 +133,20 @@
a { a {
display: inline-block; display: inline-block;
font-size: em(18); font-size: rem(18);
color: $black; color: var(--header-text, $black);
line-height: normal; line-height: normal;
&:hover, &:hover,
&:focus { &:focus {
color: $brand-primary; color: var(--primary, $brand-primary);
} }
&.catalog { &:nth-child(1) {
margin-right: auto; margin-right: auto;
} }
&.contact { &:nth-child(2) {
margin: 0 1em 0 auto; margin: 0 1em 0 auto;
} }
} }
@ -158,17 +161,17 @@
height: 576px; height: 576px;
p { p {
font-size: em(30); font-size: rem(30);
letter-spacing: 0.75px; letter-spacing: 0.75px;
line-height: (40/30); line-height: (40/30);
} }
} }
h1 { h1 {
margin-bottom: 0.5em; margin-bottom: rem(32);
font-size: em(72); font-size: rem(72);
line-height: (40/72); line-height: (40/72);
letter-spacing: 1.8px; letter-spacing: rem(1.8);
} }
} }
} }

266
resources/assets/styles/layouts/_pages.scss

@ -1,264 +1,2 @@
.home { @import 'pages/front-page';
.block { @import 'pages/catalog';
height: 445px;
background-color: $white;
h3 {
font-size: em(30);
font-weight: 600;
letter-spacing: 2px;
line-height: (36/30);
color: $brand-primary;
margin: 0;
&::before {
content: "";
display: block;
margin: 0 auto 1em;
width: 46px;
height: 5px;
background-color: $brand-secondary;
}
}
.widget p {
font-size: em(16);
line-height: (32/16);
}
&.latest-books {
box-shadow: unset;
height: auto;
padding-bottom: 50px;
h3 {
margin-top: 70px;
}
.inside {
padding: 0;
}
.navigation {
a {
color: $brand-secondary;
&.slick-disabled {
opacity: 0;
}
}
}
}
.books {
.book,
.slick-slide {
width: 100vw;
height: 386px;
margin: 45px 0 0;
padding: 0 29.5px;
border: solid 2px $brand-secondary;
background-color: $brand-secondary;
a {
font-family: $font-family-sans-serif;
color: $white;
text-decoration: none;
}
.subject {
height: 91px;
margin-top: 24px;
font-size: em(24);
}
.title {
height: 329px - 115px;
font-size: em(30);
font-weight: 500;
}
.read-more {
font-size: em(18);
}
}
}
}
.one-two {
width: 100%;
display: flex;
flex-direction: column;
.block-2 {
background: $brand-secondary;
p,
h3 {
color: $white;
}
h3::before {
background-color: $white;
}
}
}
.main > .block-2,
.one-two + .block {
background: transparent;
border: solid 2px $brand-primary;
// margin-bottom: 401px;
&::after {
position: absolute;
left: 0;
top: 1840px;
content: "";
display: block;
display: none;
width: 100vw;
height: 600px;
z-index: -1;
background: url('../images/banner-two.jpg');
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
}
}
@media (min-width: $medium) {
.home {
.wrap {
margin-top: -366px;
}
.block {
width: 775px;
margin-bottom: 119px;
box-shadow: -3px 5px 4px 2px rgba(135, 135, 135, 0.09);
h3 {
font-size: em(48);
line-height: (56/48);
&::before {
width: 74px;
}
}
p {
font-size: em(18);
line-height: (32/18);
}
.inside {
width: 595px;
}
}
.one-two {
align-items: center;
}
.main > .block-2,
.one-two + .block {
border: solid 2px $brand-primary;
box-shadow: unset;
&::after {
top: 2020px;
}
}
.block.latest-books {
width: 100%;
.inside {
width: 100%;
}
.books {
flex-direction: row;
justify-content: space-between;
}
.book,
.slick-slide {
width: 300px;
margin-right: 30px;
&:last-child {
margin-right: 0;
}
}
}
}
}
@media (min-width: $large) {
.home {
.block {
width: 1115px;
height: 494px;
}
.main > .block-2,
.one-two + .block {
&::after {
top: 2150px;
}
}
.block.latest-books {
width: 1200px;
margin-bottom: 0;
.inside {
width: 100%;
}
.book,
.slick-slide {
width: 367px;
margin-right: 50px;
&:last-child {
margin-right: 0;
}
}
}
}
}
@media (min-width: $extra-large) {
.home {
.block {
width: 1115px;
box-shadow: -3px 5px 4px 2px rgba(135, 135, 135, 0.09);
}
.one-two {
flex-direction: row;
justify-content: space-between;
width: 1615px;
.block {
border-radius: 4px;
width: 775px;
.inside {
width: 595px;
}
}
}
.main > .block-2,
.one-two + .block {
&::after {
top: 1550px;
}
}
}
}

514
resources/assets/styles/layouts/pages/_catalog.scss

@ -0,0 +1,514 @@
.catalog {
.banner .container {
height: rem(381);
}
.banner .primary-navigation {
height: rem(381);
}
.page-header {
display: flex;
flex-direction: column;
justify-content: center;
height: rem(381);
margin-top: rem(-381);
h1 {
color: var(--primary, $brand-primary);
margin-bottom: 2rem;
font-size: rem(36);
line-height: 0.55556;
letter-spacing: 0.1125rem;
}
}
.network-catalog {
width: 100%;
padding-bottom: rem(152);
}
.controls {
width: 100%;
}
.filters,
.search,
.sort {
width: 100%;
border-top: solid 2px var(--accent, $brand-accent);
background: $white;
a {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
width: 100%;
padding: rem(16) rem(19);
font-size: rem(16);
font-weight: 600;
font-family: $font-family-sans-serif;
letter-spacing: rem(0.67);
color: $black;
&:hover,
&:focus {
background: #fafdff;
color: var(--primary, $brand-primary);
}
}
.has-active-child > a {
color: var(--primary, $brand-primary);
}
ul {
margin: 0;
padding: 0;
list-style: none;
li {
font-size: rem(16);
font-family: $font-family-sans-serif;
letter-spacing: rem(0.67);
a {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
font-weight: normal;
cursor: pointer;
.close {
display: inline-block;
float: right;
margin-top: rem(-2);
font-size: rem(20);
opacity: 0;
transition: opacity 0.5s;
}
}
a.is-active {
font-weight: 600;
color: var(--primary, $brand-primary);
.close {
opacity: 1;
}
}
}
}
}
.arrow {
path {
fill: var(--primary, $brand-primary);
}
}
.is-active > a .arrow {
transform: rotate(180deg);
}
.filters {
.filter-groups {
display: none;
border-top: solid 2px var(--accent, $brand-accent);
h3 {
margin: 0;
border-top: solid 1px $light-gray;
}
h3:first-of-type {
border-top: none;
}
}
.licenses {
display: none;
}
.filter-list {
display: none;
}
&.is-active {
.filter-groups,
.licenses {
display: block;
}
}
.is-active ul {
display: block;
}
}
.search {
display: none;
}
.sort {
border-bottom: solid 2px var(--accent, $brand-accent);
.sorts {
display: none;
border-top: solid 2px var(--accent, $brand-accent);
}
&.is-active {
.sorts {
display: block;
}
}
}
.books {
align-self: flex-start;
width: percent(358, 360);
margin: rem(32) 0 0 percent(10.5, 360);
padding: 0;
}
.book {
display: flex;
flex-direction: column;
justify-content: flex-end;
width: percent(165, 358);
margin: 0 percent(9, 358) rem(8) 0;
height: rem(230);
float: left;
padding: 1.5rem rem(8) rem(26);
border: solid 2px var(--accent, $brand-accent);
background: var(--accent, $brand-accent);
p {
margin: 0;
}
a {
font-family: $font-family-sans-serif;
color: var(--accent-fg, $white);
text-decoration: none;
}
.subject {
height: rem(44);
font-size: rem(14);
}
.title {
height: rem(118);
font-size: rem(16);
font-weight: 600;
line-height: (20/16);
}
.read-more {
font-size: rem(14);
}
}
.catalog-navigation {
display: flex;
flex-direction: row;
justify-content: center;
width: 100%;
margin-top: rem(83);
align-items: baseline;
font-family: $font-family-sans-serif;
a {
color: $black;
&:hover,
&:focus {
color: var(--primary, $brand-primary);
}
}
.previous,
.next {
display: block;
margin: 0 rem(26);
font-family: $font-family-sans-serif;
font-size: rem(16);
svg {
width: rem(16.2);
height: rem(12.5);
margin: 0 rem(6);
path {
fill: var(--primary, $brand-primary);
}
}
}
.pages {
display: inline-block;
border-bottom: solid 2px #ececec;
a,
span {
display: inline-block;
width: rem(41);
padding: rem(8) 0;
font-size: rem(24);
text-align: center;
}
.current {
border-bottom: solid rem(6) var(--primary, $brand-primary);
}
}
}
}
@media (min-width: 768px) {
.catalog {
.controls {
width: percent(706, 768);
height: rem(52);
margin: rem(60) percent(29, 768) rem(20) percent(33, 768);
.filters,
.search,
.sort {
position: relative;
border-top: 0;
border-bottom: solid 2px var(--accent, $brand-accent);
z-index: 99;
}
.filters {
float: left;
width: rem(360);
.filter-groups {
border-right: solid 1px #ececec;
border-left: solid 1px #ececec;
}
}
.sort {
float: right;
width: rem(160);
.sorts {
border-right: solid 1px #ececec;
border-bottom: solid 1px #ececec;
border-left: solid 1px #ececec;
}
}
}
.books {
align-self: flex-start;
width: percent(735, 768);
margin-bottom: rem(15);
margin-left: percent(24, 768);
}
.book {
width: percent(230, 735);
height: rem(260);
margin: 0 percent(15, 735) 2rem 0;
padding: 0 rem(14) rem(21.35);
.subject {
height: rem(45.85);
font-size: rem(18);
}
.title {
height: rem(147.65);
font-size: rem(22);
font-weight: 600;
line-height: (40/30);
}
.read-more {
font-size: rem(16);
}
}
}
}
@media (min-width: $medium) {
.catalog {
.page-header {
h1 {
font-size: rem(72);
}
}
}
}
@media #{$breakpoint-large} {
.catalog {
.banner {
.container {
height: rem(450);
}
.primary-navigation {
height: 40px;
}
.brand {
text-align: center;
img {
max-height: rem(60);
}
}
}
.page-header {
height: rem(360);
margin-top: rem(-360);
}
}
}
@media (min-width: $extra-large) {
.catalog {
.main {
width: rem(1535);
margin: 0 auto;
}
.network-catalog {
margin-top: rem(205);
}
.controls {
width: 100%;
margin: 0 0 rem(64);
.filters {
width: rem(286);
border-bottom: 0;
> a {
border-bottom: solid 3px var(--accent, $brand-accent);
&:hover,
&:focus {
color: $black;
background: $white;
cursor: default;
}
.arrow {
display: none;
}
}
.filter-groups {
display: block;
border-right: 0;
border-top: 0;
border-left: 0;
.subjects {
border-bottom: solid 1px #ececec;
}
}
.licenses {
display: block;
margin-top: rem(60);
> a {
background: var(--primary, $brand-primary);
color: var(--primary-fg, $white);
.arrow {
path {
fill: var(--primary-fg, $white);
}
}
}
}
ul li {
a {
padding-top: 0;
padding-bottom: 0;
line-height: 2;
}
&:last-child a {
padding-bottom: 1rem;
}
}
}
.sort {
.sorts {
border-top: solid 3px var(--accent, $brand-accent);
border-right: 0;
border-left: 0;
}
}
}
.books {
width: percent(1221.5, 1535);
margin: 0 0 0 percent(316, 1535);
}
.book {
width: percent(367, 1221.5);
height: rem(386);
margin: 0 0 2rem percent(39.5, 1221.5);
padding: 1.5rem 1.85rem 2.1875rem;
.subject {
height: 4.625rem;
font-size: rem(24);
}
.title {
height: 13rem;
font-size: rem(30);
font-weight: 500;
line-height: (40/30);
}
.read-more {
font-size: rem(18);
}
}
}
}
.catalog.no-js {
.filters {
.arrow {
display: none;
}
.filter-groups,
.licenses,
.filter-list {
display: block;
}
}
.sort {
.arrow {
display: none;
}
.sorts {
display: block;
}
}
}

404
resources/assets/styles/layouts/pages/_front-page.scss

@ -0,0 +1,404 @@
.home {
.block {
flex-direction: column;
justify-content: center;
align-items: center;
padding: 0 0.78125rem;
display: flex;
height: rem(445);
background-color: $white;
margin-left: auto;
margin-right: auto;
text-align: center;
p {
font-size: rem(18);
line-height: (32/16);
}
}
.blocks.blocks-2,
.blocks.blocks-3 {
.widget_text:nth-child(2) {
margin-right: 0.5rem;
margin-left: 0.5rem;
border: solid 2px var(--primary, $brand-primary);
box-shadow: unset;
}
}
.blocks.blocks-4 {
.widget_text:nth-child(2) {
color: var(--accent-fg, $white);
background: var(--accent, $brand-accent);
h3 {
color: var(--accent-fg, $white);
&::before {
background: var(--accent-fg, $white);
}
}
.button {
color: var(--accent-fg, $white);
border-color: var(--accent-fg, $white);
background: transparent;
&:hover,
&:focus {
color: var(--accent, $brand-accent);
background: var(--accent-fg, $white);
}
}
}
.widget_text:nth-child(3) {
margin-top: 2rem;
margin-right: 0.5rem;
margin-left: 0.5rem;
border: solid 2px var(--primary, $brand-primary);
box-shadow: unset;
}
}
.blocks.blocks-2 .widget_text:nth-child(2),
.blocks.blocks-3 .widget_text:nth-child(2),
.blocks.blocks-4 .widget_text:nth-child(3) {
background: transparent;
margin-bottom: rem(400);
&::after {
z-index: -1;
content: "";
display: block;
width: 100vw;
height: rem(444);
background-image: url('../images/banner.jpg');
background-position: center;
background-size: cover;
position: absolute;
top: rem(1410);
left: 0;
}
}
.blocks.blocks-4 .widget_text:nth-child(3) {
&::after {
top: rem(1880);
}
}
.block,
.latest-books {
h3 {
font-size: rem(30);
font-weight: 600;
color: var(--primary, $brand-primary);
letter-spacing: 2px;
line-height: (36/30);
margin: 0;
&::before {
content: "";
display: block;
margin: 0 auto 1em;
width: 46px;
height: 5px;
background: var(--accent, $brand-accent);
}
}
}
.latest-books {
height: auto;
padding: 0 0 rem(154);
h3 {
text-align: center;
text-transform: uppercase;
margin-top: 4.375rem;
margin-bottom: 2.8125rem;
}
.track {
display: flex;
flex-flow: row wrap;
justify-content: center;
align-items: center;
max-width: 22.9375rem;
margin-left: auto;
margin-right: auto;
margin-bottom: 2rem;
padding: 0 0.46875rem;
position: relative;
}
.books {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
order: 0;
padding: 0;
width: 100%;
margin-bottom: rem(34);
}
.book {
display: flex;
flex-direction: column;
justify-content: flex-end;
width: 100%;
max-width: 22.9375rem;
height: 24.125rem;
margin: 0 0 2rem;
padding: 1.5rem 1.85rem 2.1875rem;
border: solid 2px var(--accent, $brand-accent);
background: var(--accent, $brand-accent);
a {
margin: 0;
font-family: $font-family-sans-serif;
color: var(--accent-fg, $white);
text-decoration: none;
text-align: center;
}
.subject {
height: 4.625rem;
margin: 0;
font-size: rem(24);
text-align: center;
}
.title {
height: 13rem;
margin: 0;
font-size: rem(30);
font-weight: 500;
line-height: (40/30);
text-align: left;
}
.read-more {
margin: 0;
font-size: rem(18);
text-align: left;
}
&:last-child {
margin-bottom: 0;
}
}
.previous,
.next {
display: block;
width: auto;
height: auto;
svg {
path {
fill: var(--primary, $brand-primary);
}
}
}
.previous {
order: 1;
margin-right: auto;
}
.next {
order: 2;
margin-left: auto;
}
.catalog-link {
text-align: center;
}
}
}
@media (min-width: $medium) {
.home {
.wrap {
margin-top: rem(-366);
}
.block {
width: rem(775);
height: rem(494);
margin-bottom: rem(119);
padding: 0 90px;
box-shadow: -3px 5px 4px 2px rgba(135, 135, 135, 0.09);
&:last-child {
margin-bottom: 4.0625rem;
}
h3 {
font-size: rem(48);
line-height: (56/48);
&::before {
width: 74px;
}
}
p {
font-size: rem(18);
line-height: (32/18);
}
}
.blocks.blocks-2 .widget_text:nth-child(2),
.blocks.blocks-3 .widget_text:nth-child(2),
.blocks.blocks-4 .widget_text:nth-child(3) {
margin-left: auto;
margin-right: auto;
}
.blocks.blocks-2 .widget_text:nth-child(2),
.blocks.blocks-3 .widget_text:nth-child(2),
.blocks.blocks-4 .widget_text:nth-child(3) {
margin-bottom: rem(119);
&::after {
height: rem(600);
top: rem(1547);
}
}
.blocks.blocks-4 .widget_text:nth-child(3) {
&::after {
top: rem(2177);
}
}
.latest-books {
width: 100%;
margin-left: auto;
margin-right: auto;
h3 {
margin-bottom: 4.375rem;
}
.track {
display: flex;
flex-flow: row nowrap;
width: 100%;
max-width: 100%;
margin: 0;
padding: 0;
}
.next,
.previous {
position: absolute;
top: rem(165.5);
svg {
width: 2.4375rem;
height: 1.875rem;
}
}
.next {
margin-right: 0.9375rem;
right: 0;
}
.previous {
order: 0;
margin-left: 0.9375rem;
left: 0;
}
.books {
width: auto;
min-width: 50rem;
flex-direction: row;
order: 1;
justify-content: space-between;
margin-bottom: 2rem;
}
.book {
width: 30%;
max-width: 19.54rem;
&:last-child {
margin-bottom: 2rem;
}
}
}
}
}
@media (min-width: $large) {
.home {
.block {
width: rem(1115);
}
.latest-books {
width: 100%;
margin-bottom: 0;
.track {
width: 100%;
margin: 0 auto;
max-width: 87rem;
}
.books {
width: 100%;
max-width: 75rem;
}
.book {
min-width: 19.54rem;
max-width: 22.9375rem;
}
}
}
}
@media (min-width: $extra-large) {
.home {
.block {
width: 1115px;
box-shadow: -3px 5px 4px 2px rgba(135, 135, 135, 0.09);
}
.blocks.blocks-4 {
display: flex;
flex-flow: row wrap;
width: 1615px;
.widget_text {
width: 1115px;
margin-right: auto;
margin-left: auto;
}
.widget_text:nth-child(1),
.widget_text:nth-child(2) {
width: 775px;
}
.widget_text:nth-child(1) {
margin-right: 65px;
}
}
.blocks.blocks-4 .widget_text:nth-child(3) {
&::after {
top: rem(1596);
}
}
}
}

1
resources/assets/styles/main.scss

@ -7,7 +7,6 @@
* @see https://github.com/webpack-contrib/sass-loader#imports * @see https://github.com/webpack-contrib/sass-loader#imports
*/ */
@import "~tachyons-sass/tachyons"; @import "~tachyons-sass/tachyons";
@import "~slick-carousel/slick/slick";
/** Import theme styles */ /** Import theme styles */
@import "common/functions"; @import "common/functions";

5
resources/functions.php

@ -65,10 +65,9 @@ array_map(function ($file) use ($sage_error) {
'helpers', 'helpers',
'setup', 'setup',
'filters', 'filters',
'intervention',
'activation',
'admin', 'admin',
'widgets',
'widgets/linkbutton',
'widgets/pagebutton'
]); ]);
/** /**

71
resources/views/front-page.blade.php

@ -1,40 +1,47 @@
@extends('layouts.app') @extends('layouts.app')
@section('content') @section('content')
@if($block_count === 0) <section class="blocks blocks-{{ $block_count }} w-100">
<div class="block block-1 flex flex-column items-center justify-center p-0 w-100"> @if(is_active_sidebar('front-page-block'))
<div class="inside"> @php(dynamic_sidebar('front-page-block'))
<h3>{{ __('About Pressbooks', 'aldine') }}</h3> @else
<p>{{ __('Pressbooks is easy-to-use book writing software that lets you create a book in all the formats you need to publish.', 'aldine')}}</p> @component('front-page-block')
</div> @slot('title')
</div> {{ __('About Pressbooks', 'aldine') }}
@elseif($block_count < 4) @endslot
@for($i = 0; $i < $block_count; $i++) <p>{{ __('Pressbooks is easy-to-use book writing software that lets you create a book in all the formats you need to publish.', 'aldine')}}</p>
<div class="block block-{{ $i + 1 }} flex flex-column items-center justify-center p-0 w-100"> @slot('button_title')
<div class="inside tc"> {{ __('Learn More', 'aldine') }}
@php(dynamic_sidebar($blocks[$i])) @endslot
@slot('button_url')
{{ network_home_url('/about/') }}
@endslot
@endcomponent
@endif
@if(get_option('pb_front_page_catalog'))
<div id="latest-titles" class="latest-books">
<h3>{{ $latest_books_title }}</h3>
<div class="track">
<div class="books" data-total-pages="{{ $catalog_data['pages'] }}" @if($next_page <= $catalog_data['pages'])data-next-page="{{ $next_page }}"@endif>
@foreach($catalog_data['books'] as $book)
@include('partials.book', ['book' => $book])
@endforeach
</div> </div>
@if($previous_page)
<a class="previous" data-page="{{ $previous_page }}" href="{{ network_home_url("/page/$previous_page/#latest-titles") }}">
@php(include get_theme_file_path() . '/dist/' . Aldine\svg_path('images/left-arrow.svg'))
</a>
@endif
@if($next_page <= $catalog_data['pages'])
<a class="next" data-page="{{ $next_page }}" href="{{ network_home_url("/page/$next_page/#latest-titles") }}">
@php(include get_theme_file_path() . '/dist/' . Aldine\svg_path('images/right-arrow.svg'))
</a>
@endif
</div> </div>
@endfor <div class="catalog-link">
@elseif($block_count === 4) <a class="button button--outline button--wide" href="{{ network_home_url('/catalog/') }}">{{ __('View Complete Catalog', 'aldine') }}</a>
<div class="one-two">
@for($i = 0; $i < 2; $i++)
<div class="block block-{{ $i + 1 }} flex flex-column items-center justify-center p-0 w-100">
<div class="inside tc">
@php(dynamic_sidebar($blocks[$i]))
</div>
</div>
@endfor
</div>
@for($i = 2; $i < $block_count; $i++)
<div class="block block-{{ $i + 1 }} flex flex-column items-center justify-center p-0 w-100">
<div class="inside tc">
@php(dynamic_sidebar($blocks[$i]))
</div>
</div> </div>
@endfor </div>
@endif
@if(get_theme_mod('pb_front_page_catalog'))
@include('partials.front-page-catalog')
@endif @endif
</section>
@endsection @endsection

67
resources/views/page-catalog.blade.php

@ -0,0 +1,67 @@
{{--
Template Name: Catalog
--}}
@extends('layouts.app')
@section('content')
@include('partials.page-header')
<section class="network-catalog">
<div class="controls">
<div class="search">
<h2><a href="#search">{{ __('Search by titles or keyword', 'aldine') }} <svg class="arrow" width="13" height="8" viewBox="0 0 13 8" xmlns="http://www.w3.org/2000/svg"><path d="M6.255 8L0 0h12.51z" fill="#b01109" fill-rule="evenodd"/></svg></a></h2>
</div>
<div class="filters">
<a href="#filter">{{ __('Filter by', 'aldine') }} <svg class="arrow" width="13" height="8" viewBox="0 0 13 8" xmlns="http://www.w3.org/2000/svg"><path d="M6.255 8L0 0h12.51z" fill="#b01109" fill-rule="evenodd"/></svg></a>
<div id="filter" class="filter-groups">
@foreach($subject_groups as $key => $val)
<div class="{{ $key }} subjects" id="{{ $key }}">
<a href="#{{ $key }}">{{ $val['title'] }} <svg class="arrow" width="13" height="8" viewBox="0 0 13 8" xmlns="http://www.w3.org/2000/svg"><path d="M6.255 8L0 0h12.51z" fill="#b01109" fill-rule="evenodd"/></svg></a>
<ul class="filter-list">
@foreach($val['subjects'] as $k => $v)
<li><a data-filter="{{ $k }}">{{ $v }}<span class="close">&times;</span></a></li>
@endforeach
</ul>
</div>
@endforeach
</div>
<div class="licenses" id="licenses">
<a href="#licenses">{{ __('Licenses', 'aldine' ) }}<svg class="arrow" width="13" height="8" viewBox="0 0 13 8" xmlns="http://www.w3.org/2000/svg"><path d="M6.255 8L0 0h12.51z" fill="#b01109" fill-rule="evenodd"/></svg></a>
<ul class="filter-list">
@foreach($licenses as $key => $value)
<li><a data-filter="{{ $key }}">{{ $value }}<span class="close">&times;</span></a></li>
@endforeach
</ul>
</div>
</div>
<div class="sort">
<a href="#sort">{{ __('Sort by', 'aldine') }} <svg class="arrow" width="13" height="8" viewBox="0 0 13 8" xmlns="http://www.w3.org/2000/svg"><path d="M6.255 8L0 0h12.51z" fill="#b01109" fill-rule="evenodd"/></svg></a>
<ul id="sort" class="sorts">
<li><a data-sort="title" href="{{ "/catalog/page/$current_page/?orderby=title" }}">{{ __('Title', 'aldine') }}</a></li>
<li><a data-sort="subject" href="{{ "/catalog/page/$current_page/?orderby=subject" }}">{{ __('Subject', 'aldine') }}</a></li>
<li><a data-sort="latest" href="{{ "/catalog/page/$current_page/?orderby=latest" }}">{{ __('Latest', 'aldine') }}</a></li>
</ul>
</div>
</div>
<div class="books">
@foreach($catalog_data['books'] as $book)
@include('partials.book', ['book' => $book])
@endforeach
</div>
@if($catalog_data['pages'] > 1)
<nav class="catalog-navigation">
@if($previous_page)<a class="previous" data-page="{{ $previous_page }}" href="{{ network_home_url("/catalog/page/$previous_page/") }}">@php(include get_theme_file_path() . '/dist/' . Aldine\svg_path('images/left-arrow.svg')) {{ __('Previous', 'aldine') }}</a>@endif
<div class="pages">
@for($i = 1; $i <= $catalog_data['pages']; $i++)
@if($i === $current_page)
<span class="current">{{ $i }}</span>
@else
<a href="{{ network_home_url("/catalog/page/$i/") }}">{{ $i }}</a>
@endif
@endfor
</div>
@if($next_page <= $catalog_data['pages'])<a class="next" data-page="{{ $next_page }}" href="{{ network_home_url("/catalog/page/$next_page/") }}">{{ __('Next', 'aldine') }} @php(include get_theme_file_path() . '/dist/' . Aldine\svg_path('images/right-arrow.svg'))</a>@endif
</nav>
@endif
</section>
@endsection

17
resources/views/partials/book.blade.php

@ -0,0 +1,17 @@
<div class="book"
data-date-published="{{ str_replace('-', '', @$book['metadata']['datePublished']) }}"
data-license="{{ (new \Pressbooks\Licensing())->getLicenseFromUrl($book['metadata']['license']) }}"
data-subject="{{ sanitize_title(@$book['metadata']['keywords']) }}"
>
@if(isset($book['metadata']['keywords']))
<p class="subject">
<a href="{{ network_home_url('/catalog/#') . $book['metadata']['keywords'] }}">{{ $book['metadata']['keywords'] }}</a>
</p>
@endif
<p class="title">
<a href="{{ $book['link'] }}">{{ $book['metadata']['name'] }}</a>
</p>
<p class="read-more">
<a href="{{ $book['link'] }}">{{ __('About this book &rarr;', 'aldine') }}</a>
</p>
</div>

22
resources/views/partials/contact-form.blade.php

@ -0,0 +1,22 @@
<section class="contact flex flex-column justify-center items-center w-100" id="contact">
<h3 class="tc ttu">{{ $contact_form_title }}</h3>
<form action="{{ network_home_url('/#contact') }}" method="post">
@if($contact_form_response)
<p class="tl mb4 w-100 {{ $contact_form_response['status'] }}">{{ $contact_form_response['message'] }}</p>
@endif
<input type="hidden" name="submitted" value="1">
<p class="flex flex-row items-center @if(@$contact_form_response['field'] === 'visitor_name'){{ 'error' }}@endif">
<label class="clip" for="visitor_name">{{ __('Your name*', 'aldine' ) }}</label>
<input class="input-reset" type="text" placeholder="{{ __('Your name*', 'aldine' ) }}" name="visitor_name" value="@if($contact_form_response['status'] === 'error'){{ @esc_attr($_POST['visitor_name']) }}@endif"></p>
<p class="flex flex-row items-center @if(@$contact_form_response['field'] === 'visitor_email'){{ 'error' }}@endif">
<label class="clip" for="visitor_email">{{ __('Your email*', 'aldine' ) }}</label>
<input class="input-reset" type="email" placeholder="{{ __('Your email*', 'aldine' ) }}" name="visitor_email" value="@if($contact_form_response['status'] === 'error'){{ @esc_attr($_POST['visitor_email']) }}@endif"></p>
<p class="flex flex-row items-center @if(@$contact_form_response['field'] === 'visitor_institution'){{ 'error' }}@endif">
<label class="clip" for="visitor_institution">{{ __('Your institution*', 'aldine' ) }}</label>
<input class="input-reset" type="text" placeholder="{{ __('Your institution*', 'aldine' ) }}" name="visitor_institution" value="@if($contact_form_response['status'] === 'error'){{ @esc_attr($_POST['visitor_institution']) }}@endif"></p>
<p class="flex flex-row items-center @if(@$contact_form_response['field'] === 'message'){{ 'error' }}@endif">
<label class="clip" for="message">{{ __('Your message here', 'aldine' ) }}</label>
<textarea class="input-reset" type="text" placeholder="{{ __('Your message here', 'aldine' ) }}" name="message">@if($contact_form_response['status'] === 'error'){{ @esc_textarea($_POST['message']) }}@endif</textarea></p>
<p class="tc"><input class="button-reset button button--small button--outline input-reset pointer" type="submit" value="{{ __('Send', 'aldine' ) }}" /></p>
</form>
</section>

11
resources/views/partials/footer.blade.php

@ -1,5 +1,8 @@
<footer class="content-info"> <footer class="content-info">
<div class="container"> <div class="container">
@if(get_option('pb_network_contact_form'))
@include('partials.contact-form')
@endif
<section class="network-footer"> <section class="network-footer">
<div class="network-footer-block {{ App::networkFooter(1) }}"> <div class="network-footer-block {{ App::networkFooter(1) }}">
@if(App::networkFooter(1) !== 'empty') @if(App::networkFooter(1) !== 'empty')
@ -32,10 +35,10 @@
<div class="pressbooks-links"> <div class="pressbooks-links">
<h1><a href="https://pressbooks.com">{!! sprintf(__('Powered by %s', 'aldine'), '<span class="pressbooks">Pressbooks</span>') !!}</a></h1> <h1><a href="https://pressbooks.com">{!! sprintf(__('Powered by %s', 'aldine'), '<span class="pressbooks">Pressbooks</span>') !!}</a></h1>
<ul> <ul>
<li>{{ __('Open Source', 'aldine') }}</li> <li><a href="https://pressbooks.org">{{ __('Open Source', 'aldine') }}</a></li>
<li>{{ __('Open Textbooks', 'aldine') }}</li> <li><a href="https://pressbooks.com/for-academia">{{ __('Open Textbooks', 'aldine') }}</a></li>
<li>{{ __('Open Book Publishing', 'aldine') }}</li> <li><a href="https://pressbooks.com">{{ __('Open Book Publishing', 'aldine') }}</a></li>
<li>{{ __('Learn More', 'aldine') }}</li> <li><a href="https://pressbooks.com/about">{{ __('Learn More', 'aldine') }}</a></li>
</ul> </ul>
</div> </div>
<div class="social-media"> <div class="social-media">

7
resources/views/partials/front-page-block.blade.php

@ -0,0 +1,7 @@
<div class="block flex flex-column items-center justify-center p-0 w-100">
<div class="inside tc">
<h3 class="tc ttu">{{ $title }}</h3>
{{ $slot }}
<a class="button" href="{{ $button_url }}">{{ $button_title }}</a>
</div>
</div>

27
resources/views/partials/front-page-catalog.blade.php

@ -1,27 +0,0 @@
<div class="block latest-books w-100">
<div class="inside">
<h3 class="tc ttu">{{ $latest_books_title }}</h3>
<div class="books flex flex-column justify-center flex-row-m justify-between-m" data-total-pages="{{ $total_pages }}" data-next-page="2">
@foreach(FrontPage::latestBooks( $current_page, 3 ) as $book)
<div class="book w-100">
<p class="subject tc ma0">
<a href="">Fiction</a>
</p>
<p class="title tc ma0">
<a href="{{ $book['link'] }}">{{ $book['metadata']['name'] }}</a>
</p>
<p class="read-more tl ma0">
<a href="{{ $book['link'] }}">{{ __('About this book &rarr;', 'aldine') }}</a>
</p>
</div>
@endforeach
</div>
<nav class="navigation flex flex-row justify-between mt2 tr" data-total="{{ $total_pages }}">
<a class="previous f1 @if(!$previous_page) slick-disabled @endif" data-page="{{ $previous_page }}" href="{{ network_home_url("/page/$previous_page/") }}">&larr;</a>
<a class="next f1" data-page="{{ $next_page }}" href="{{ network_home_url("/page/$next_page/") }}">&rarr;</a>
</nav>
<div class="catalog-link tc">
<a class="button button-outline button-wide" href="{{ network_home_url('/catalog/') }}">{{ __('View Complete Catalog', 'aldine') }}</a>
</div>
</div>
</div>

20
resources/views/partials/header.blade.php

@ -1,18 +1,22 @@
<section class="banner bg-bottom cover"> <section class="banner bg-bottom cover" style="background-image: url(@if(is_front_page())
@php(header_image())
@else
@asset('images/catalog-header.jpg')
@endif);">
<div class="container flex flex-column justify-between items-center w-100 mw-100"> <div class="container flex flex-column justify-between items-center w-100 mw-100">
<a class="toggle-menu db dn-l absolute" href="#primary-navigation">{{ __('Toggle menu', 'aldine') }}<span class="icon db absolute"></span></a> <a class="toggle-menu db dn-l absolute" href="#primary-navigation">{{ __('Toggle menu', 'aldine') }}<span class="icon db absolute"></span></a>
<a class="brand db self-start self-center-l" href="{{ home_url('/') }}"><span class="clip>"{{ get_bloginfo('name', 'display') }}</a></a> <a class="brand db self-start self-center-l" href="{{ home_url('/') }}"><span class="clip">{{ get_bloginfo('name', 'display') }}</span>{!! $site_logo !!}</a>
<nav id="primary-navigation" class="primary-navigation absolute flex flex-column justify-center items-start top-0 w-100 bg-transparent bg-animate flex-row-l justify-start-l items-center-l"> <nav id="primary-navigation" class="primary-navigation absolute flex flex-column justify-center items-start top-0 w-100 bg-transparent bg-animate flex-row-l justify-start-l items-center-l">
<a class="catalog" href="{{ home_url('/catalog') }}">Catalog</a> <a href="{{ home_url('/catalog') }}">Catalog</a>
<a class="contact" href="#contact">Contact</a> <a href="#contact">Contact</a>
@if(!is_user_logged_in()) @if(!is_user_logged_in())
<a class="signin" href="{{ wp_login_url() }}">{{ __('Sign in', 'aldine') }}</a> <a href="{{ wp_login_url() }}">{{ __('Sign in', 'aldine') }}</a>
<span class="sep">/</span> <span class="sep">/</span>
<a class="signup" href="{{ network_home_url('/wp-signup.php') }}">{{ __('Sign up', 'aldine') }}</a> <a href="{{ network_home_url('/wp-signup.php') }}">{{ __('Sign up', 'aldine') }}</a>
@else @else
<a class="admin" href="{{ admin_url() }}">{{ __('Admin', 'aldine') }}</a> <a href="{{ admin_url() }}">{{ __('Admin', 'aldine') }}</a>
<span class="sep">/</span> <span class="sep">/</span>
<a class="signin" href="{{ wp_logout_url() }}">{{ __('Sign out', 'aldine') }}</a> <a href="{{ wp_logout_url() }}">{{ __('Sign out', 'aldine') }}</a>
@endif @endif
</nav> </nav>
<header class="branding flex flex-column justify-start items-center tc"> <header class="branding flex flex-column justify-start items-center tc">

364
yarn.lock

@ -48,8 +48,8 @@ acorn@^4.0.3:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
acorn@^5.0.0, acorn@^5.1.1: acorn@^5.0.0, acorn@^5.1.1:
version "5.1.1" version "5.1.2"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7"
adjust-sourcemap-loader@^1.1.0: adjust-sourcemap-loader@^1.1.0:
version "1.1.0" version "1.1.0"
@ -291,14 +291,14 @@ autoprefixer@^6.0.0, autoprefixer@^6.3.1:
postcss-value-parser "^3.2.3" postcss-value-parser "^3.2.3"
autoprefixer@^7.1.1: autoprefixer@^7.1.1:
version "7.1.3" version "7.1.4"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.3.tgz#0e8d337976d6f13644db9f8813b4c42f3d1ccc34" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.4.tgz#960847dbaa4016bc8e8e52ec891cbf8f1257a748"
dependencies: dependencies:
browserslist "^2.4.0" browserslist "^2.4.0"
caniuse-lite "^1.0.30000718" caniuse-lite "^1.0.30000726"
normalize-range "^0.1.2" normalize-range "^0.1.2"
num2fraction "^1.2.2" num2fraction "^1.2.2"
postcss "^6.0.10" postcss "^6.0.11"
postcss-value-parser "^3.2.3" postcss-value-parser "^3.2.3"
aws-sign2@~0.6.0: aws-sign2@~0.6.0:
@ -991,14 +991,15 @@ browser-sync@^2.18.13:
yargs "6.4.0" yargs "6.4.0"
browserify-aes@^1.0.0, browserify-aes@^1.0.4: browserify-aes@^1.0.0, browserify-aes@^1.0.4:
version "1.0.6" version "1.0.8"
resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.8.tgz#c8fa3b1b7585bb7ba77c5560b60996ddec6d5309"
dependencies: dependencies:
buffer-xor "^1.0.2" buffer-xor "^1.0.3"
cipher-base "^1.0.0" cipher-base "^1.0.0"
create-hash "^1.1.0" create-hash "^1.1.0"
evp_bytestokey "^1.0.0" evp_bytestokey "^1.0.3"
inherits "^2.0.1" inherits "^2.0.1"
safe-buffer "^5.0.1"
browserify-cipher@^1.0.0: browserify-cipher@^1.0.0:
version "1.0.0" version "1.0.0"
@ -1076,7 +1077,7 @@ buffer-to-vinyl@^1.0.0:
uuid "^2.0.1" uuid "^2.0.1"
vinyl "^1.0.0" vinyl "^1.0.0"
buffer-xor@^1.0.2: buffer-xor@^1.0.3:
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
@ -1154,12 +1155,12 @@ caniuse-api@^1.5.2:
lodash.uniq "^4.5.0" lodash.uniq "^4.5.0"
caniuse-db@^1.0.30000187, caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: caniuse-db@^1.0.30000187, caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
version "1.0.30000718" version "1.0.30000727"
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000718.tgz#86cdd97987302554934c61e106f4e470f16f993c" resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000727.tgz#4e22593089b0f35c1b2adcfc28234493a21a4b2e"
caniuse-lite@^1.0.30000718: caniuse-lite@^1.0.30000718, caniuse-lite@^1.0.30000726:
version "1.0.30000718" version "1.0.30000727"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000718.tgz#0dd24290beb11310b2d80f6b70a823c2a65a6fad" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000727.tgz#20c895768398ded5f98a4beab4a76c285def41d2"
capture-stack-trace@^1.0.0: capture-stack-trace@^1.0.0:
version "1.0.0" version "1.0.0"
@ -1247,8 +1248,8 @@ clap@^1.0.9:
chalk "^1.1.3" chalk "^1.1.3"
clean-css@4.1.x, clean-css@^4.1.3: clean-css@4.1.x, clean-css@^4.1.3:
version "4.1.7" version "4.1.8"
resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.7.tgz#b9aea4f85679889cf3eae8b40349ec4ebdfdd032" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.8.tgz#061455b2494a750ac98f46d8d5ebb17c679ea9d1"
dependencies: dependencies:
source-map "0.5.x" source-map "0.5.x"
@ -1529,8 +1530,8 @@ content-disposition@0.5.2:
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
content-type@~1.0.2: content-type@~1.0.2:
version "1.0.2" version "1.0.4"
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
convert-source-map@^0.3.3: convert-source-map@^0.3.3:
version "0.3.5" version "0.3.5"
@ -1553,8 +1554,8 @@ cookiejar@^2.1.0:
resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.1.tgz#41ad57b1b555951ec171412a81942b1e8200d34a" resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.1.tgz#41ad57b1b555951ec171412a81942b1e8200d34a"
core-js@^2.4.0, core-js@^2.5.0: core-js@^2.4.0, core-js@^2.5.0:
version "2.5.0" version "2.5.1"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.0.tgz#569c050918be6486b3837552028ae0466b717086" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b"
core-util-is@1.0.2, core-util-is@~1.0.0: core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2" version "1.0.2"
@ -1654,8 +1655,8 @@ css-color-names@0.0.4:
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
css-loader@^0.28.3: css-loader@^0.28.3:
version "0.28.5" version "0.28.7"
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.5.tgz#dd02bb91b94545710212ef7f6aaa66663113d754" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.7.tgz#5f2ee989dd32edd907717f953317656160999c1b"
dependencies: dependencies:
babel-code-frame "^6.11.0" babel-code-frame "^6.11.0"
css-selector-tokenizer "^0.7.0" css-selector-tokenizer "^0.7.0"
@ -1871,7 +1872,7 @@ decompress@^3.0.0:
vinyl-assign "^1.0.1" vinyl-assign "^1.0.1"
vinyl-fs "^2.2.0" vinyl-fs "^2.2.0"
deep-equal@^1.0.1: deep-equal@^1.0.1, deep-equal@~1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
@ -1883,7 +1884,14 @@ deep-is@~0.1.3:
version "0.1.3" version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
defined@^1.0.0: define-properties@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
dependencies:
foreach "^2.0.5"
object-keys "^1.0.8"
defined@^1.0.0, defined@~1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
@ -1929,6 +1937,10 @@ des.js@^1.0.0:
inherits "^2.0.1" inherits "^2.0.1"
minimalistic-assert "^1.0.0" minimalistic-assert "^1.0.0"
desandro-matches-selector@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz#717beed4dc13e7d8f3762f707a6d58a6774218e1"
destroy@~1.0.4: destroy@~1.0.4:
version "1.0.4" version "1.0.4"
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
@ -2100,8 +2112,8 @@ ee-first@1.1.1:
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.18: electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.18:
version "1.3.18" version "1.3.21"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.18.tgz#3dcc99da3e6b665f6abbc71c28ad51a2cd731a9c" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.21.tgz#a967ebdcfe8ed0083fc244d1894022a8e8113ea2"
elliptic@^6.0.0: elliptic@^6.0.0:
version "6.4.0" version "6.4.0"
@ -2199,6 +2211,24 @@ error-stack-parser@^2.0.0:
dependencies: dependencies:
stackframe "^1.0.3" stackframe "^1.0.3"
es-abstract@^1.5.0:
version "1.8.2"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.8.2.tgz#25103263dc4decbda60e0c737ca32313518027ee"
dependencies:
es-to-primitive "^1.1.1"
function-bind "^1.1.1"
has "^1.0.1"
is-callable "^1.1.3"
is-regex "^1.0.4"
es-to-primitive@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
dependencies:
is-callable "^1.1.1"
is-date-object "^1.0.1"
is-symbol "^1.0.1"
es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14:
version "0.10.30" version "0.10.30"
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.30.tgz#7141a16836697dbabfaaaeee41495ce29f52c939" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.30.tgz#7141a16836697dbabfaaaeee41495ce29f52c939"
@ -2411,6 +2441,10 @@ etag@^1.7.0, etag@~1.8.0:
version "1.8.0" version "1.8.0"
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051"
ev-emitter@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ev-emitter/-/ev-emitter-1.1.1.tgz#8f18b0ce5c76a5d18017f71c0a795c65b9138f2a"
event-emitter@~0.3.5: event-emitter@~0.3.5:
version "0.3.5" version "0.3.5"
resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
@ -2432,9 +2466,9 @@ eventsource@0.1.6:
dependencies: dependencies:
original ">=0.0.5" original ">=0.0.5"
evp_bytestokey@^1.0.0: evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
version "1.0.2" version "1.0.3"
resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.2.tgz#f66bb88ecd57f71a766821e20283ea38c68bf80a" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
dependencies: dependencies:
md5.js "^1.3.4" md5.js "^1.3.4"
safe-buffer "^5.1.1" safe-buffer "^5.1.1"
@ -2732,6 +2766,12 @@ first-chunk-stream@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e"
fizzy-ui-utils@^2.0.0, fizzy-ui-utils@^2.0.4:
version "2.0.5"
resolved "https://registry.yarnpkg.com/fizzy-ui-utils/-/fizzy-ui-utils-2.0.5.tgz#d72debc74d2c9d272dbcbb7b001707897f6c3210"
dependencies:
desandro-matches-selector "^2.0.0"
flat-cache@^1.2.1: flat-cache@^1.2.1:
version "1.2.2" version "1.2.2"
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96"
@ -2745,6 +2785,12 @@ flatten@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
for-each@~0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.2.tgz#2c40450b9348e97f281322593ba96704b9abd4d4"
dependencies:
is-function "~1.0.0"
for-in@^0.1.3: for-in@^0.1.3:
version "0.1.8" version "0.1.8"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
@ -2765,6 +2811,10 @@ for-own@^1.0.0:
dependencies: dependencies:
for-in "^1.0.1" for-in "^1.0.1"
foreach@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
forever-agent@~0.6.1: forever-agent@~0.6.1:
version "0.6.1" version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
@ -2794,8 +2844,8 @@ formidable@^1.1.1:
resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.1.1.tgz#96b8886f7c3c3508b932d6bd70c4d3a88f35f1a9" resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.1.1.tgz#96b8886f7c3c3508b932d6bd70c4d3a88f35f1a9"
forwarded@~0.1.0: forwarded@~0.1.0:
version "0.1.0" version "0.1.1"
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.1.tgz#8a4e30c640b05395399a3549c730257728048961"
fresh@0.5.0: fresh@0.5.0:
version "0.5.0" version "0.5.0"
@ -2849,7 +2899,7 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
mkdirp ">=0.5 0" mkdirp ">=0.5 0"
rimraf "2" rimraf "2"
function-bind@^1.0.2: function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.0:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
@ -2886,6 +2936,10 @@ get-proxy@^1.0.1:
dependencies: dependencies:
rc "^1.1.2" rc "^1.1.2"
get-size@^2.0.0, get-size@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/get-size/-/get-size-2.0.2.tgz#555ea98ab8732e0c021e9e23e2219adcbe398e98"
get-stdin@^4.0.1: get-stdin@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
@ -2955,7 +3009,7 @@ glob@^5.0.3:
once "^1.3.0" once "^1.3.0"
path-is-absolute "^1.0.0" path-is-absolute "^1.0.0"
glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1, glob@~7.1.2:
version "7.1.2" version "7.1.2"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
dependencies: dependencies:
@ -3154,7 +3208,7 @@ has-unicode@^2.0.0:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
has@^1.0.1: has@^1.0.1, has@~1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
dependencies: dependencies:
@ -3248,8 +3302,8 @@ html-loader@^0.4.5:
object-assign "^4.1.0" object-assign "^4.1.0"
html-minifier@^3.0.1: html-minifier@^3.0.1:
version "3.5.3" version "3.5.4"
resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.3.tgz#4a275e3b1a16639abb79b4c11191ff0d0fcf1ab9" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.4.tgz#e9bbcca964a6815617ed7c31f1f20b476b50b807"
dependencies: dependencies:
camel-case "3.0.x" camel-case "3.0.x"
clean-css "4.1.x" clean-css "4.1.x"
@ -3258,7 +3312,7 @@ html-minifier@^3.0.1:
ncname "1.0.x" ncname "1.0.x"
param-case "2.1.x" param-case "2.1.x"
relateurl "0.2.x" relateurl "0.2.x"
uglify-js "3.0.x" uglify-js "3.1.x"
html-tags@^2.0.0: html-tags@^2.0.0:
version "2.0.0" version "2.0.0"
@ -3285,6 +3339,10 @@ http-errors@~1.6.1, http-errors@~1.6.2:
setprototypeof "1.0.3" setprototypeof "1.0.3"
statuses ">= 1.3.1 < 2" statuses ">= 1.3.1 < 2"
http-parser-js@>=0.4.0:
version "0.4.5"
resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.5.tgz#a3ecf39a667481a38ca60882ab57a2db578b9970"
http-proxy-middleware@~0.17.4: http-proxy-middleware@~0.17.4:
version "0.17.4" version "0.17.4"
resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833"
@ -3321,8 +3379,8 @@ https-browserify@0.0.1:
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
iconv-lite@^0.4.17: iconv-lite@^0.4.17:
version "0.4.18" version "0.4.19"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
icss-replace-symbols@^1.1.0: icss-replace-symbols@^1.1.0:
version "1.1.0" version "1.1.0"
@ -3450,8 +3508,8 @@ ini@^1.3.4, ini@~1.3.0:
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
inquirer@^3.0.6: inquirer@^3.0.6:
version "3.2.2" version "3.2.3"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.2.2.tgz#c2aaede1507cc54d826818737742d621bef2e823" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.2.3.tgz#1c7b1731cf77b934ec47d22c9ac5aa8fe7fbe095"
dependencies: dependencies:
ansi-escapes "^2.0.0" ansi-escapes "^2.0.0"
chalk "^2.0.0" chalk "^2.0.0"
@ -3538,6 +3596,14 @@ is-bzip2@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/is-bzip2/-/is-bzip2-1.0.0.tgz#5ee58eaa5a2e9c80e21407bedf23ae5ac091b3fc" resolved "https://registry.yarnpkg.com/is-bzip2/-/is-bzip2-1.0.0.tgz#5ee58eaa5a2e9c80e21407bedf23ae5ac091b3fc"
is-callable@^1.1.1, is-callable@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
is-date-object@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
is-directory@^0.3.1: is-directory@^0.3.1:
version "0.3.1" version "0.3.1"
resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
@ -3580,6 +3646,10 @@ is-fullwidth-code-point@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
is-function@~1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5"
is-gif@^1.0.0: is-gif@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/is-gif/-/is-gif-1.0.0.tgz#a6d2ae98893007bffa97a1d8c01d63205832097e" resolved "https://registry.yarnpkg.com/is-gif/-/is-gif-1.0.0.tgz#a6d2ae98893007bffa97a1d8c01d63205832097e"
@ -3676,6 +3746,12 @@ is-redirect@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
is-regex@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
dependencies:
has "^1.0.1"
is-regexp@^1.0.0: is-regexp@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
@ -3708,6 +3784,10 @@ is-svg@^2.0.0:
dependencies: dependencies:
html-comment-regex "^1.1.0" html-comment-regex "^1.1.0"
is-symbol@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
is-tar@^1.0.0: is-tar@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/is-tar/-/is-tar-1.0.0.tgz#2f6b2e1792c1f5bb36519acaa9d65c0d26fe853d" resolved "https://registry.yarnpkg.com/is-tar/-/is-tar-1.0.0.tgz#2f6b2e1792c1f5bb36519acaa9d65c0d26fe853d"
@ -3758,17 +3838,33 @@ isobject@^3.0.1:
version "3.0.1" version "3.0.1"
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
isotope-layout@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/isotope-layout/-/isotope-layout-3.0.4.tgz#f3ed8d15f8cfb3850b11777f1ca76e0a8bb5b73a"
dependencies:
desandro-matches-selector "^2.0.0"
fizzy-ui-utils "^2.0.4"
get-size "^2.0.0"
masonry-layout "^4.1.0"
outlayer "^2.1.0"
isstream@~0.1.2: isstream@~0.1.2:
version "0.1.2" version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
"jquery@1.12.4 - 3", jquery@>=1.7.2: jquery-bridget@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/jquery-bridget/-/jquery-bridget-2.0.1.tgz#784d17a85e641780c5d89ac3f8a7eb47b0bce1fc"
dependencies:
jquery ">=1.4.2 <4"
"jquery@1.12.4 - 3", "jquery@>=1.4.2 <4":
version "3.2.1" version "3.2.1"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.2.1.tgz#5c4d9de652af6cd0a770154a631bba12b015c787" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.2.1.tgz#5c4d9de652af6cd0a770154a631bba12b015c787"
js-base64@^2.1.8, js-base64@^2.1.9: js-base64@^2.1.8, js-base64@^2.1.9:
version "2.1.9" version "2.3.1"
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.3.1.tgz#3705897c35fce0e202132630e750d8a17cd220ec"
js-beautify@^1.6.3: js-beautify@^1.6.3:
version "1.6.14" version "1.6.14"
@ -3784,8 +3880,8 @@ js-tokens@^3.0.0, js-tokens@^3.0.2:
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
js-yaml@^3.4.3, js-yaml@^3.8.4: js-yaml@^3.4.3, js-yaml@^3.8.4:
version "3.9.1" version "3.10.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.1.tgz#08775cebdfdd359209f0d2acd383c8f86a6904a0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
dependencies: dependencies:
argparse "^1.0.7" argparse "^1.0.7"
esprima "^4.0.0" esprima "^4.0.0"
@ -3898,8 +3994,8 @@ known-css-properties@^0.2.0:
resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.2.0.tgz#899c94be368e55b42d7db8d5be7d73a4a4a41454" resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.2.0.tgz#899c94be368e55b42d7db8d5be7d73a4a4a41454"
laravel-mix@~1.4: laravel-mix@~1.4:
version "1.4.2" version "1.4.3"
resolved "https://registry.yarnpkg.com/laravel-mix/-/laravel-mix-1.4.2.tgz#5fff0434c98c027e68ffb28c3f54bac95d7e2d1f" resolved "https://registry.yarnpkg.com/laravel-mix/-/laravel-mix-1.4.3.tgz#7e42888bb1663026a3cea57af4dc5dcae2ffab3b"
dependencies: dependencies:
autoprefixer "^7.1.1" autoprefixer "^7.1.1"
babel-core "^6.24.1" babel-core "^6.24.1"
@ -3928,8 +4024,8 @@ laravel-mix@~1.4:
uglify-js "^2.8.28" uglify-js "^2.8.28"
uglifyjs-webpack-plugin "^0.4.6" uglifyjs-webpack-plugin "^0.4.6"
vue-loader "^12.1.1" vue-loader "^12.1.1"
vue-template-compiler "^2.3.3" vue-template-compiler "^2.4.2"
webpack "^3.4.0" webpack "^3.5.0"
webpack-chunk-hash "^0.4.0" webpack-chunk-hash "^0.4.0"
webpack-dev-server "^2.5.1" webpack-dev-server "^2.5.1"
webpack-merge "^4.1.0" webpack-merge "^4.1.0"
@ -4253,8 +4349,8 @@ logalot@^2.0.0:
squeak "^1.0.0" squeak "^1.0.0"
loglevel@^1.4.1: loglevel@^1.4.1:
version "1.4.1" version "1.5.0"
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.4.1.tgz#95b383f91a3c2756fd4ab093667e4309161f2bcd" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.5.0.tgz#3863984a2c326b986fbb965f378758a6dc8a4324"
longest@^1.0.0, longest@^1.0.1: longest@^1.0.0, longest@^1.0.1:
version "1.0.1" version "1.0.1"
@ -4331,6 +4427,13 @@ marked@^0.3.6:
version "0.3.6" version "0.3.6"
resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7" resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7"
masonry-layout@^4.1.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/masonry-layout/-/masonry-layout-4.2.0.tgz#43835c6b6e0d72eff2c31a118c8000cccc4ab965"
dependencies:
get-size "^2.0.2"
outlayer "^2.1.0"
math-expression-evaluator@^1.2.14: math-expression-evaluator@^1.2.14:
version "1.2.17" version "1.2.17"
resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
@ -4425,19 +4528,15 @@ miller-rabin@^4.0.0:
bn.js "^4.0.0" bn.js "^4.0.0"
brorand "^1.0.1" brorand "^1.0.1"
"mime-db@>= 1.29.0 < 2": "mime-db@>= 1.29.0 < 2", mime-db@~1.30.0:
version "1.30.0" version "1.30.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
mime-db@~1.29.0:
version "1.29.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878"
mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.7: mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.7:
version "2.1.16" version "2.1.17"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
dependencies: dependencies:
mime-db "~1.29.0" mime-db "~1.30.0"
mime@1.2.4: mime@1.2.4:
version "1.2.4" version "1.2.4"
@ -4473,7 +4572,7 @@ minimist@0.0.8:
version "0.0.8" version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@~1.2.0:
version "1.2.0" version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
@ -4553,8 +4652,8 @@ mute-stream@0.0.7:
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
nan@^2.3.0, nan@^2.3.2: nan@^2.3.0, nan@^2.3.2:
version "2.6.2" version "2.7.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46"
natural-compare@^1.4.0: natural-compare@^1.4.0:
version "1.4.0" version "1.4.0"
@ -4571,8 +4670,8 @@ negotiator@0.6.1:
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
no-case@^2.2.0: no-case@^2.2.0:
version "2.3.1" version "2.3.2"
resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081" resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
dependencies: dependencies:
lower-case "^1.1.1" lower-case "^1.1.1"
@ -4645,8 +4744,8 @@ node-notifier@^4.1.0:
which "^1.0.5" which "^1.0.5"
node-pre-gyp@^0.6.36: node-pre-gyp@^0.6.36:
version "0.6.36" version "0.6.37"
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.37.tgz#3c872b236b2e266e4140578fe1ee88f693323a05"
dependencies: dependencies:
mkdirp "^0.5.1" mkdirp "^0.5.1"
nopt "^4.0.1" nopt "^4.0.1"
@ -4655,6 +4754,7 @@ node-pre-gyp@^0.6.36:
request "^2.81.0" request "^2.81.0"
rimraf "^2.6.1" rimraf "^2.6.1"
semver "^5.3.0" semver "^5.3.0"
tape "^4.6.3"
tar "^2.2.1" tar "^2.2.1"
tar-pack "^3.4.0" tar-pack "^3.4.0"
@ -4787,6 +4887,14 @@ object-hash@^1.1.4:
version "1.1.8" version "1.1.8"
resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.1.8.tgz#28a659cf987d96a4dabe7860289f3b5326c4a03c" resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.1.8.tgz#28a659cf987d96a4dabe7860289f3b5326c4a03c"
object-inspect@~1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.3.0.tgz#5b1eb8e6742e2ee83342a637034d844928ba2f6d"
object-keys@^1.0.8:
version "1.0.11"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
object-path@^0.9.0, object-path@^0.9.2: object-path@^0.9.0, object-path@^0.9.2:
version "0.9.2" version "0.9.2"
resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5" resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5"
@ -4916,6 +5024,14 @@ osenv@0, osenv@^0.1.4:
os-homedir "^1.0.0" os-homedir "^1.0.0"
os-tmpdir "^1.0.0" os-tmpdir "^1.0.0"
outlayer@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/outlayer/-/outlayer-2.1.1.tgz#29863b6de10ea5dadfffcadfa0d728907387e9a2"
dependencies:
ev-emitter "^1.0.0"
fizzy-ui-utils "^2.0.0"
get-size "^2.0.2"
p-finally@^1.0.0: p-finally@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
@ -4998,8 +5114,8 @@ parseuri@0.0.5:
better-assert "~1.0.0" better-assert "~1.0.0"
parseurl@~1.3.1: parseurl@~1.3.1:
version "1.3.1" version "1.3.2"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
path-browserify@0.0.0: path-browserify@0.0.0:
version "0.0.0" version "0.0.0"
@ -5054,8 +5170,8 @@ path-type@^2.0.0:
pify "^2.0.0" pify "^2.0.0"
pbkdf2@^3.0.3: pbkdf2@^3.0.3:
version "3.0.13" version "3.0.14"
resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.13.tgz#c37d295531e786b1da3e3eadc840426accb0ae25" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade"
dependencies: dependencies:
create-hash "^1.1.2" create-hash "^1.1.2"
create-hmac "^1.1.4" create-hmac "^1.1.4"
@ -5449,13 +5565,13 @@ postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.
source-map "^0.5.6" source-map "^0.5.6"
supports-color "^3.2.3" supports-color "^3.2.3"
postcss@^6.0.1, postcss@^6.0.10, postcss@^6.0.2: postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.2:
version "6.0.10" version "6.0.11"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.10.tgz#c311b89734483d87a91a56dc9e53f15f4e6e84e4" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.11.tgz#f48db210b1d37a7f7ab6499b7a54982997ab6f72"
dependencies: dependencies:
chalk "^2.1.0" chalk "^2.1.0"
source-map "^0.5.7" source-map "^0.5.7"
supports-color "^4.2.1" supports-color "^4.4.0"
prelude-ls@~1.1.2: prelude-ls@~1.1.2:
version "1.1.2" version "1.1.2"
@ -5534,10 +5650,14 @@ qs@6.2.1:
version "6.2.1" version "6.2.1"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625" resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625"
qs@6.5.0, "qs@>= 0.4.0", qs@^6.2.0, qs@^6.4.0: qs@6.5.0:
version "6.5.0" version "6.5.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49"
"qs@>= 0.4.0", qs@^6.2.0, qs@^6.4.0:
version "6.5.1"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
qs@~6.4.0: qs@~6.4.0:
version "6.4.0" version "6.4.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
@ -5730,15 +5850,14 @@ regenerator-transform@^0.10.0:
private "^0.1.6" private "^0.1.6"
regex-cache@^0.4.2: regex-cache@^0.4.2:
version "0.4.3" version "0.4.4"
resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
dependencies: dependencies:
is-equal-shallow "^0.1.3" is-equal-shallow "^0.1.3"
is-primitive "^2.0.0"
regex-parser@^2.2.1: regex-parser@^2.2.1:
version "2.2.7" version "2.2.8"
resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.7.tgz#bd090e09181849acc45457e765f7be2a63f50ef1" resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.8.tgz#da4c0cda5a828559094168930f455f532b6ffbac"
regexpu-core@^1.0.0: regexpu-core@^1.0.0:
version "1.0.0" version "1.0.0"
@ -5872,7 +5991,7 @@ resolve-url@~0.2.1:
version "0.2.1" version "0.2.1"
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
resolve@^1.2.0, resolve@^1.3.3: resolve@^1.2.0, resolve@^1.3.3, resolve@~1.4.0:
version "1.4.0" version "1.4.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86"
dependencies: dependencies:
@ -5892,6 +6011,12 @@ restore-cursor@^2.0.0:
onetime "^2.0.0" onetime "^2.0.0"
signal-exit "^3.0.2" signal-exit "^3.0.2"
resumer@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759"
dependencies:
through "~2.3.4"
rework-visit@^1.0.0: rework-visit@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a"
@ -5910,8 +6035,8 @@ right-align@^0.1.1:
align-text "^0.1.1" align-text "^0.1.1"
rimraf@2, rimraf@^2.2.6, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@~2.6: rimraf@2, rimraf@^2.2.6, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@~2.6:
version "2.6.1" version "2.6.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
dependencies: dependencies:
glob "^7.0.5" glob "^7.0.5"
@ -6171,12 +6296,6 @@ slice-ansi@0.0.4:
version "0.0.4" version "0.0.4"
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
slick-carousel@^1.7.1:
version "1.7.1"
resolved "https://registry.yarnpkg.com/slick-carousel/-/slick-carousel-1.7.1.tgz#51f5489bbb52212542ccbe9f42689f818bd29ed2"
dependencies:
jquery ">=1.7.2"
sntp@1.x.x: sntp@1.x.x:
version "1.0.9" version "1.0.9"
resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
@ -6265,8 +6384,8 @@ source-map-resolve@^0.3.0:
urix "~0.1.0" urix "~0.1.0"
source-map-support@^0.4.15: source-map-support@^0.4.15:
version "0.4.16" version "0.4.18"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.16.tgz#16fecf98212467d017d586a2af68d628b9421cd8" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
dependencies: dependencies:
source-map "^0.5.6" source-map "^0.5.6"
@ -6452,6 +6571,14 @@ string-width@^2.0.0, string-width@^2.1.0:
is-fullwidth-code-point "^2.0.0" is-fullwidth-code-point "^2.0.0"
strip-ansi "^4.0.0" strip-ansi "^4.0.0"
string.prototype.trim@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea"
dependencies:
define-properties "^1.1.2"
es-abstract "^1.5.0"
function-bind "^1.0.2"
string_decoder@^0.10.25, string_decoder@~0.10.x: string_decoder@^0.10.25, string_decoder@~0.10.x:
version "0.10.31" version "0.10.31"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
@ -6692,9 +6819,9 @@ supports-color@^3.1.1, supports-color@^3.2.3:
dependencies: dependencies:
has-flag "^1.0.0" has-flag "^1.0.0"
supports-color@^4.0.0, supports-color@^4.2.1: supports-color@^4.0.0, supports-color@^4.2.1, supports-color@^4.4.0:
version "4.2.1" version "4.4.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e"
dependencies: dependencies:
has-flag "^2.0.0" has-flag "^2.0.0"
@ -6745,6 +6872,24 @@ tapable@^0.2.7:
version "0.2.8" version "0.2.8"
resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22"
tape@^4.6.3:
version "4.8.0"
resolved "https://registry.yarnpkg.com/tape/-/tape-4.8.0.tgz#f6a9fec41cc50a1de50fa33603ab580991f6068e"
dependencies:
deep-equal "~1.0.1"
defined "~1.0.0"
for-each "~0.3.2"
function-bind "~1.1.0"
glob "~7.1.2"
has "~1.0.1"
inherits "~2.0.3"
minimist "~1.2.0"
object-inspect "~1.3.0"
resolve "~1.4.0"
resumer "~0.0.0"
string.prototype.trim "~1.1.2"
through "~2.3.8"
tar-pack@^3.4.0: tar-pack@^3.4.0:
version "3.4.0" version "3.4.0"
resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984"
@ -6825,7 +6970,7 @@ through2@^2.0.0, through2@~2.0.0:
readable-stream "^2.1.5" readable-stream "^2.1.5"
xtend "~4.0.1" xtend "~4.0.1"
"through@>=2.2.7 <3", through@^2.3.6, through@~2.3.4, through@~2.3.6: "through@>=2.2.7 <3", through@^2.3.6, through@~2.3.4, through@~2.3.6, through@~2.3.8:
version "2.3.8" version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
@ -6938,9 +7083,9 @@ ua-parser-js@0.7.12:
version "0.7.12" version "0.7.12"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb"
uglify-js@3.0.x: uglify-js@3.1.x:
version "3.0.28" version "3.1.0"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.28.tgz#96b8495f0272944787b5843a1679aa326640d5f7" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.1.0.tgz#92fae17b88dfbc3c394175a935044cdbcf4085ae"
dependencies: dependencies:
commander "~2.11.0" commander "~2.11.0"
source-map "~0.5.1" source-map "~0.5.1"
@ -7188,7 +7333,7 @@ vue-style-loader@^3.0.0:
hash-sum "^1.0.2" hash-sum "^1.0.2"
loader-utils "^1.0.2" loader-utils "^1.0.2"
vue-template-compiler@^2.3.3: vue-template-compiler@^2.4.2:
version "2.4.2" version "2.4.2"
resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.4.2.tgz#5a45d843f148b098f6c1d1e35ac20c4956d30ad1" resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.4.2.tgz#5a45d843f148b098f6c1d1e35ac20c4956d30ad1"
dependencies: dependencies:
@ -7282,9 +7427,9 @@ webpack-sources@^1.0.1:
source-list-map "^2.0.0" source-list-map "^2.0.0"
source-map "~0.5.3" source-map "~0.5.3"
webpack@^3.4.0: webpack@^3.5.0:
version "3.5.5" version "3.5.6"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.5.5.tgz#3226f09fc8b3e435ff781e7af34f82b68b26996c" resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.5.6.tgz#a492fb6c1ed7f573816f90e00c8fbb5a20cc5c36"
dependencies: dependencies:
acorn "^5.0.0" acorn "^5.0.0"
acorn-dynamic-import "^2.0.0" acorn-dynamic-import "^2.0.0"
@ -7310,14 +7455,15 @@ webpack@^3.4.0:
yargs "^8.0.2" yargs "^8.0.2"
websocket-driver@>=0.5.1: websocket-driver@>=0.5.1:
version "0.6.5" version "0.7.0"
resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb"
dependencies: dependencies:
http-parser-js ">=0.4.0"
websocket-extensions ">=0.1.1" websocket-extensions ">=0.1.1"
websocket-extensions@>=0.1.1: websocket-extensions@>=0.1.1:
version "0.1.1" version "0.1.2"
resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7" resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.2.tgz#0e18781de629a18308ce1481650f67ffa2693a5d"
weinre@^2.0.0-pre-I0Z7U9OV: weinre@^2.0.0-pre-I0Z7U9OV:
version "2.0.0-pre-I0Z7U9OV" version "2.0.0-pre-I0Z7U9OV"

Loading…
Cancel
Save