Making WordPress.org

Changeset 11003


Ignore:
Timestamp:
05/28/2021 04:02:47 PM (5 years ago)
Author:
ryelle
Message:

Pattern Directory: Sync with git WordPress/pattern-directory@c8d13bcb9b73ace35d18e07cc2030f16a2eb3c6e

Location:
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns
Files:
6 added
2 deleted
19 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/build/index.asset.php

    r10991 r11003  
    1 <?php return array('dependencies' => array('react', 'wp-a11y', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-data-controls', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-polyfill', 'wp-primitives', 'wp-url', 'wp-viewport'), 'version' => '24afdf9f3de263bddc9d6acd1a6346df');
     1<?php return array('dependencies' => array('react', 'wp-a11y', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-data-controls', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-polyfill', 'wp-primitives', 'wp-url', 'wp-viewport'), 'version' => '69bda82262cba00648d616539b4b3950');
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/build/index.js

    r10991 r11003  
    74367436/***/ }),
    74377437
     7438/***/ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js":
     7439/*!*****************************************************************!*\
     7440  !*** ./node_modules/@babel/runtime/helpers/asyncToGenerator.js ***!
     7441  \*****************************************************************/
     7442/*! no static exports found */
     7443/***/ (function(module, exports) {
     7444
     7445function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
     7446  try {
     7447    var info = gen[key](arg);
     7448    var value = info.value;
     7449  } catch (error) {
     7450    reject(error);
     7451    return;
     7452  }
     7453
     7454  if (info.done) {
     7455    resolve(value);
     7456  } else {
     7457    Promise.resolve(value).then(_next, _throw);
     7458  }
     7459}
     7460
     7461function _asyncToGenerator(fn) {
     7462  return function () {
     7463    var self = this,
     7464        args = arguments;
     7465    return new Promise(function (resolve, reject) {
     7466      var gen = fn.apply(self, args);
     7467
     7468      function _next(value) {
     7469        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
     7470      }
     7471
     7472      function _throw(err) {
     7473        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
     7474      }
     7475
     7476      _next(undefined);
     7477    });
     7478  };
     7479}
     7480
     7481module.exports = _asyncToGenerator;
     7482module.exports["default"] = module.exports, module.exports.__esModule = true;
     7483
     7484/***/ }),
     7485
    74387486/***/ "./node_modules/@babel/runtime/helpers/defineProperty.js":
    74397487/*!***************************************************************!*\
    … …  
    1092410972/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
    1092510973/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
    10926 /* harmony import */ var _wordpress_viewport__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/viewport */ "@wordpress/viewport");
    10927 /* harmony import */ var _wordpress_viewport__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_viewport__WEBPACK_IMPORTED_MODULE_1__);
     10974/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");
     10975/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
     10976/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     10977/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__);
     10978/* harmony import */ var _wordpress_viewport__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/viewport */ "@wordpress/viewport");
     10979/* harmony import */ var _wordpress_viewport__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_viewport__WEBPACK_IMPORTED_MODULE_3__);
    1092810980
    1092910981
    … …  
    1093210984 */
    1093310985
     10986/**
     10987 * WordPress dependencies
     10988 */
     10989
     10990
     10991
    1093410992
    1093510993var DefaultMenu = function DefaultMenu(_ref) {
    10936   var path = _ref.path,
     10994  var currentCategory = _ref.currentCategory,
    1093710995      options = _ref.options,
    1093810996      onClick = _ref.onClick,
    … …  
    1094311001  }
    1094411002
    10945   return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("ul", {
    10946     className: "category-menu ".concat(isLoading ? 'category-menu--is-loading' : '', " ")
     11003  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("h2", {
     11004    className: "screen-reader-text"
     11005  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__["__"])('Main Menu', 'wporg-patterns')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("ul", {
     11006    className: classnames__WEBPACK_IMPORTED_MODULE_1___default()({
     11007      'category-menu': true,
     11008      'category-menu--is-loading': isLoading
     11009    })
    1094711010  }, options.map(function (i) {
    1094811011    return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("li", {
    1094911012      key: i.value
    1095011013    }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("a", {
    10951       className: path === i.value ? 'category-menu--is-active' : '',
     11014      className: classnames__WEBPACK_IMPORTED_MODULE_1___default()({
     11015        'category-menu--is-active': currentCategory === i.slug
     11016      }),
    1095211017      href: i.value,
    10953       onClick: onClick
     11018      onClick: onClick,
     11019      "aria-current": currentCategory === i.slug ? 'page' : undefined
    1095411020    }, i.label));
    10955   }));
     11021  })));
    1095611022}; // Will only render if the viewport is >= medium
    1095711023
    1095811024
    10959 /* harmony default export */ __webpack_exports__["default"] = (Object(_wordpress_viewport__WEBPACK_IMPORTED_MODULE_1__["ifViewportMatches"])('>= medium')(DefaultMenu));
     11025/* harmony default export */ __webpack_exports__["default"] = (Object(_wordpress_viewport__WEBPACK_IMPORTED_MODULE_3__["ifViewportMatches"])('>= medium')(DefaultMenu));
    1096011026
    1096111027/***/ }),
    … …  
    1156411630/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
    1156511631/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
    11566 /* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/compose */ "@wordpress/compose");
    11567 /* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_compose__WEBPACK_IMPORTED_MODULE_1__);
    11568 /* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/data */ "@wordpress/data");
    11569 /* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_data__WEBPACK_IMPORTED_MODULE_2__);
    11570 /* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/url */ "@wordpress/url");
    11571 /* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_url__WEBPACK_IMPORTED_MODULE_3__);
     11632/* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/url */ "@wordpress/url");
     11633/* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_url__WEBPACK_IMPORTED_MODULE_1__);
     11634/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/compose */ "@wordpress/compose");
     11635/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_compose__WEBPACK_IMPORTED_MODULE_2__);
     11636/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/data */ "@wordpress/data");
     11637/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_data__WEBPACK_IMPORTED_MODULE_3__);
    1157211638/* harmony import */ var _category_menu__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../category-menu */ "./src/components/category-menu/index.js");
    1157311639/* harmony import */ var _category_search__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../category-search */ "./src/components/category-search/index.js");
    1157411640/* harmony import */ var _category_context_bar__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../category-context-bar */ "./src/components/category-context-bar/index.js");
    11575 /* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../store */ "./src/store/index.js");
    11576 /* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../hooks */ "./src/hooks/index.js");
    11577 /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
     11641/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
     11642/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../store */ "./src/store/index.js");
     11643/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../hooks */ "./src/hooks/index.js");
    1157811644
    1157911645
    … …  
    1160111667
    1160211668var PatternGridMenu = function PatternGridMenu() {
    11603   var _useRoute = Object(_hooks__WEBPACK_IMPORTED_MODULE_8__["useRoute"])(),
     11669  var _useRoute = Object(_hooks__WEBPACK_IMPORTED_MODULE_9__["useRoute"])(),
    1160411670      path = _useRoute.path,
    1160511671      updatePath = _useRoute.update;
    1160611672
    11607   var _useSelect = Object(_wordpress_data__WEBPACK_IMPORTED_MODULE_2__["useSelect"])(function (select) {
    11608     var _select = select(_store__WEBPACK_IMPORTED_MODULE_7__["store"]),
     11673  var categorySlug = Object(_utils__WEBPACK_IMPORTED_MODULE_7__["getCategoryFromPath"])(path);
     11674
     11675  var _useSelect = Object(_wordpress_data__WEBPACK_IMPORTED_MODULE_3__["useSelect"])(function (select) {
     11676    var _select = select(_store__WEBPACK_IMPORTED_MODULE_8__["store"]),
    1160911677        getCategories = _select.getCategories,
    1161011678        isLoadingCategories = _select.isLoadingCategories,
    … …  
    1162211690
    1162311691  var handleUpdatePath = function handleUpdatePath(value) {
    11624     var updatedPath = Object(_wordpress_url__WEBPACK_IMPORTED_MODULE_3__["addQueryArgs"])(path, {
     11692    var updatedPath = Object(_wordpress_url__WEBPACK_IMPORTED_MODULE_1__["addQueryArgs"])(path, {
    1162511693      search: value
    1162611694    });
    … …  
    1162811696  };
    1162911697
    11630   var debouncedHandleUpdate = Object(_wordpress_compose__WEBPACK_IMPORTED_MODULE_1__["useDebounce"])(handleUpdatePath, DEBOUNCE_MS);
     11698  var debouncedHandleUpdate = Object(_wordpress_compose__WEBPACK_IMPORTED_MODULE_2__["useDebounce"])(handleUpdatePath, DEBOUNCE_MS);
    1163111699  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("nav", {
    1163211700    className: "pattern-grid-menu"
    1163311701  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_category_menu__WEBPACK_IMPORTED_MODULE_4__["default"], {
    11634     path: Object(_utils__WEBPACK_IMPORTED_MODULE_9__["removeQueryString"])(path),
     11702    currentCategory: categorySlug,
    1163511703    options: categories ? categories.map(function (record) {
    1163611704      return {
    11637         value: "/".concat(Object(_wordpress_url__WEBPACK_IMPORTED_MODULE_3__["getPath"])(record.link) || ''),
     11705        value: "/".concat(Object(_wordpress_url__WEBPACK_IMPORTED_MODULE_1__["getPath"])(record.link) || ''),
     11706        slug: record.slug,
    1163811707        label: record.name
    1163911708      };
    … …  
    1164711716    isLoading: isLoading,
    1164811717    isVisible: hasLoaded,
    11649     defaultValue: Object(_wordpress_url__WEBPACK_IMPORTED_MODULE_3__["getQueryArg"])(window.location.href, 'search'),
     11718    defaultValue: Object(_wordpress_url__WEBPACK_IMPORTED_MODULE_1__["getQueryArg"])(window.location.href, 'search'),
    1165011719    onUpdate: function onUpdate(event) {
    1165111720      event.preventDefault();
    … …  
    1167811747/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/data */ "@wordpress/data");
    1167911748/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_data__WEBPACK_IMPORTED_MODULE_2__);
    11680 /* harmony import */ var _pattern_thumbnail__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../pattern-thumbnail */ "./src/components/pattern-thumbnail/index.js");
    11681 /* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../store */ "./src/store/index.js");
     11749/* harmony import */ var _pagination__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pagination */ "./src/components/pattern-grid/pagination.js");
     11750/* harmony import */ var _pattern_thumbnail__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../pattern-thumbnail */ "./src/components/pattern-thumbnail/index.js");
     11751/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../store */ "./src/store/index.js");
    1168211752
    1168311753
    … …  
    1169411764
    1169511765
    11696 function PatternGrid() {
     11766
     11767function PatternGrid(_ref) {
     11768  var query = _ref.query;
     11769
    1169711770  var _useSelect = Object(_wordpress_data__WEBPACK_IMPORTED_MODULE_2__["useSelect"])(function (select) {
    11698     var _select = select(_store__WEBPACK_IMPORTED_MODULE_4__["store"]),
     11771    var _select = select(_store__WEBPACK_IMPORTED_MODULE_5__["store"]),
     11772        getPatternTotalPagesByQuery = _select.getPatternTotalPagesByQuery,
    1169911773        getPatternsByQuery = _select.getPatternsByQuery,
    11700         isLoadingPatternsByQuery = _select.isLoadingPatternsByQuery,
    11701         getCurrentQuery = _select.getCurrentQuery;
    11702 
    11703     var query = getCurrentQuery();
     11774        isLoadingPatternsByQuery = _select.isLoadingPatternsByQuery;
     11775
    1170411776    return {
     11777      isLoading: query && isLoadingPatternsByQuery(query),
    1170511778      posts: query ? getPatternsByQuery(query) : [],
    11706       isLoading: query && isLoadingPatternsByQuery(query)
     11779      totalPages: query ? getPatternTotalPagesByQuery(query) : 0
    1170711780    };
    1170811781  }),
     11782      isLoading = _useSelect.isLoading,
    1170911783      posts = _useSelect.posts,
    11710       isLoading = _useSelect.isLoading;
    11711 
    11712   return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
     11784      totalPages = _useSelect.totalPages;
     11785
     11786  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
    1171311787    className: "pattern-grid"
    1171411788  }, isLoading ? Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Spinner"], null) : posts.map(function (post) {
    11715     return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_pattern_thumbnail__WEBPACK_IMPORTED_MODULE_3__["default"], {
     11789    return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_pattern_thumbnail__WEBPACK_IMPORTED_MODULE_4__["default"], {
    1171611790      key: post.id,
    1171711791      pattern: post
    1171811792    });
     11793  })), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_pagination__WEBPACK_IMPORTED_MODULE_3__["default"], {
     11794    totalPages: totalPages,
     11795    currentPage: query === null || query === void 0 ? void 0 : query.page
    1171911796  }));
    1172011797}
    1172111798
    1172211799/* harmony default export */ __webpack_exports__["default"] = (PatternGrid);
     11800
     11801/***/ }),
     11802
     11803/***/ "./src/components/pattern-grid/pagination.js":
     11804/*!***************************************************!*\
     11805  !*** ./src/components/pattern-grid/pagination.js ***!
     11806  \***************************************************/
     11807/*! exports provided: default */
     11808/***/ (function(module, __webpack_exports__, __webpack_require__) {
     11809
     11810"use strict";
     11811__webpack_require__.r(__webpack_exports__);
     11812/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Pagination; });
     11813/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     11814/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
     11815/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     11816/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
     11817/* harmony import */ var _utils_get_pagination_list__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/get-pagination-list */ "./src/utils/get-pagination-list.js");
     11818/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks */ "./src/hooks/index.js");
     11819
     11820
     11821/**
     11822 * WordPress dependencies
     11823 */
     11824
     11825/**
     11826 * Internal dependencies
     11827 */
     11828
     11829
     11830
     11831function Pagination(_ref) {
     11832  var _ref$currentPage = _ref.currentPage,
     11833      currentPage = _ref$currentPage === void 0 ? 1 : _ref$currentPage,
     11834      totalPages = _ref.totalPages;
     11835
     11836  var _useRoute = Object(_hooks__WEBPACK_IMPORTED_MODULE_3__["useRoute"])(),
     11837      path = _useRoute.path,
     11838      updatePath = _useRoute.update;
     11839
     11840  if (!totalPages || totalPages <= 1) {
     11841    return null;
     11842  }
     11843
     11844  var hasPrevious = currentPage > 1;
     11845  var hasNext = currentPage < totalPages;
     11846  var basePath = path.replace(/page\/\d+\/?$/, '');
     11847  var pages = Object(_utils_get_pagination_list__WEBPACK_IMPORTED_MODULE_2__["default"])(totalPages, currentPage);
     11848
     11849  var _onClick = function onClick(event, page) {
     11850    event.preventDefault();
     11851
     11852    if (page === 1) {
     11853      updatePath("".concat(basePath));
     11854    }
     11855
     11856    updatePath("".concat(basePath, "page/").concat(page, "/"));
     11857  };
     11858
     11859  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("nav", {
     11860    className: "pagination",
     11861    "aria-label": Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__["__"])('Pagination', 'wporg-patterns')
     11862  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("ul", {
     11863    className: "pagination__list"
     11864  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("li", {
     11865    className: "pagination__item pagination__item-previous-page"
     11866  }, hasPrevious && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("a", {
     11867    className: "pagination__link",
     11868    href: "".concat(basePath, "page/").concat(currentPage - 1),
     11869    onClick: function onClick(event) {
     11870      return _onClick(event, currentPage - 1);
     11871    }
     11872  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
     11873    className: "screen-reader-text"
     11874  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__["__"])('Previous page', 'wporg-patterns')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
     11875    "aria-hidden": true
     11876  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__["_x"])('Previous', 'previous page link label', 'wporg-patterns')))), pages.map(function (page, index) {
     11877    if ('…' === page) {
     11878      return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("li", {
     11879        className: "pagination__item",
     11880        key: "".concat(index, "-").concat(page)
     11881      }, page);
     11882    }
     11883
     11884    return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("li", {
     11885      className: "pagination__item",
     11886      key: page
     11887    }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("a", {
     11888      className: "pagination__link",
     11889      href: "".concat(basePath, "page/").concat(page),
     11890      "aria-current": page === currentPage ? 'page' : undefined,
     11891      onClick: function onClick(event) {
     11892        return _onClick(event, page);
     11893      }
     11894    }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
     11895      className: "screen-reader-text"
     11896    }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__["sprintf"])( // translators: %s is the page number.
     11897    Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__["__"])('Page %s', 'wporg-patterns'), page)), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
     11898      "aria-hidden": true
     11899    }, page)));
     11900  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("li", {
     11901    className: "pagination__item pagination__item-next-page"
     11902  }, hasNext && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("a", {
     11903    className: "pagination__link",
     11904    href: "".concat(basePath, "page/").concat(currentPage + 1),
     11905    onClick: function onClick(event) {
     11906      return _onClick(event, currentPage + 1);
     11907    }
     11908  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
     11909    className: "screen-reader-text"
     11910  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__["__"])('Next page', 'wporg-patterns')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", {
     11911    "aria-hidden": true
     11912  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__["_x"])('Next', 'next page link label', 'wporg-patterns'))))));
     11913}
    1172311914
    1172411915/***/ }),
    … …  
    1229612487/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
    1229712488/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
    12298 /* harmony import */ var _pattern_grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../pattern-grid */ "./src/components/pattern-grid/index.js");
    12299 /* harmony import */ var _pattern_grid_menu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../pattern-grid-menu */ "./src/components/pattern-grid-menu/index.js");
    12300 /* harmony import */ var _query_monitor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../query-monitor */ "./src/components/query-monitor/index.js");
    12301 /* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../hooks */ "./src/hooks/index.js");
    12302 
     12489/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/data */ "@wordpress/data");
     12490/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_data__WEBPACK_IMPORTED_MODULE_1__);
     12491/* harmony import */ var _pattern_grid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../pattern-grid */ "./src/components/pattern-grid/index.js");
     12492/* harmony import */ var _pattern_grid_menu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../pattern-grid-menu */ "./src/components/pattern-grid-menu/index.js");
     12493/* harmony import */ var _query_monitor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../query-monitor */ "./src/components/query-monitor/index.js");
     12494/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../hooks */ "./src/hooks/index.js");
     12495/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../store */ "./src/store/index.js");
     12496
     12497
     12498/**
     12499 * WordPress dependencies
     12500 */
    1230312501
    1230412502/**
    … …  
    1231012508
    1231112509
     12510
     12511
    1231212512var Patterns = function Patterns() {
    12313   return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_hooks__WEBPACK_IMPORTED_MODULE_4__["RouteProvider"], null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_query_monitor__WEBPACK_IMPORTED_MODULE_3__["default"], null), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_pattern_grid_menu__WEBPACK_IMPORTED_MODULE_2__["default"], null), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_pattern_grid__WEBPACK_IMPORTED_MODULE_1__["default"], null));
     12513  var query = Object(_wordpress_data__WEBPACK_IMPORTED_MODULE_1__["useSelect"])(function (select) {
     12514    return select(_store__WEBPACK_IMPORTED_MODULE_6__["store"]).getCurrentQuery();
     12515  });
     12516  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_hooks__WEBPACK_IMPORTED_MODULE_5__["RouteProvider"], null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_query_monitor__WEBPACK_IMPORTED_MODULE_4__["default"], null), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_pattern_grid_menu__WEBPACK_IMPORTED_MODULE_3__["default"], null), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_pattern_grid__WEBPACK_IMPORTED_MODULE_2__["default"], {
     12517    query: query
     12518  }));
    1231412519};
    1231512520
    … …  
    1238512590        'pattern-categories': category.id
    1238612591      });
     12592    }
     12593
     12594    var page = Object(_utils__WEBPACK_IMPORTED_MODULE_6__["getPageFromPath"])(path);
     12595
     12596    if (page > 1) {
     12597      _query.page = page;
    1238712598    }
    1238812599
    … …  
    1291413125  !*** ./src/store/actions.js ***!
    1291513126  \******************************/
    12916 /*! exports provided: fetchPatterns, loadPatterns, setCurrentQuery, fetchCategories, loadCategories, fetchPatternFlagReasons, loadPatternFlagReasons, loadFavorites, addFavorite, removeFavorite */
     13127/*! exports provided: fetchPatterns, loadPatterns, setErrorPatterns, setCurrentQuery, fetchCategories, loadCategories, fetchPatternFlagReasons, loadPatternFlagReasons, loadFavorites, addFavorite, removeFavorite */
    1291713128/***/ (function(module, __webpack_exports__, __webpack_require__) {
    1291813129
    … …  
    1292113132/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fetchPatterns", function() { return fetchPatterns; });
    1292213133/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadPatterns", function() { return loadPatterns; });
     13134/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setErrorPatterns", function() { return setErrorPatterns; });
    1292313135/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setCurrentQuery", function() { return setCurrentQuery; });
    1292413136/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fetchCategories", function() { return fetchCategories; });
    … …  
    1296013172 *
    1296113173 * @param {string} query Search string.
    12962  * @param {Array} patterns A list of patterns.
     13174 * @param {Object} response
     13175 * @param {Array} response.page The current page.
     13176 * @param {Array} response.patterns A list of patterns.
     13177 * @param {number} response.total The total number of patterns.
     13178 * @param {number} response.totalPages The total number of pages.
    1296313179 *
    1296413180 * @return {Object} Action object.
    1296513181 */
    1296613182
    12967 function loadPatterns(query, patterns) {
     13183function loadPatterns(query, _ref) {
     13184  var page = _ref.page,
     13185      patterns = _ref.patterns,
     13186      total = _ref.total,
     13187      totalPages = _ref.totalPages;
    1296813188  return {
    1296913189    type: 'LOAD_BLOCK_PATTERNS',
    1297013190    query: query,
    12971     patterns: patterns
     13191    page: page,
     13192    patterns: patterns,
     13193    total: total,
     13194    totalPages: totalPages
     13195  };
     13196}
     13197/**
     13198 * Get the action object signalling that patterns have been loaded.
     13199 *
     13200 * @param {string} query Search string.
     13201 * @param {Object} response
     13202 * @param {Array} response.page The current page.
     13203 * @param {Object} response.error The error message, as reported from the API.
     13204 *
     13205 * @return {Object} Action object.
     13206 */
     13207
     13208function setErrorPatterns(query, _ref2) {
     13209  var page = _ref2.page,
     13210      error = _ref2.error;
     13211  return {
     13212    type: 'ERROR_BLOCK_PATTERNS',
     13213    query: query,
     13214    page: page,
     13215    error: error
    1297213216  };
    1297313217}
    … …  
    1326813512    return id;
    1326913513  });
     13514  var page = action.page,
     13515      total = action.total,
     13516      totalPages = action.totalPages;
    1327013517
    1327113518  switch (action.type) {
    1327213519    case 'LOAD_BLOCK_PATTERNS':
    13273       return _objectSpread(_objectSpread({}, state), {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()({}, action.query, [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(state[action.query] || []), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(patternIds))));
     13520      {
     13521        var _queryState = _objectSpread(_objectSpread({}, state[action.query] || {}), {}, {
     13522          total: total,
     13523          totalPages: totalPages
     13524        });
     13525
     13526        _queryState[page] = patternIds;
     13527        return _objectSpread(_objectSpread({}, state), {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()({}, action.query, _queryState));
     13528      }
     13529
     13530    case 'ERROR_BLOCK_PATTERNS':
     13531      {
     13532        var _queryState2 = state[action.query] || {};
     13533
     13534        _queryState2[page] = [];
     13535        return _objectSpread(_objectSpread({}, state), {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()({}, action.query, _queryState2));
     13536      }
    1327413537
    1327513538    default:
    … …  
    1340113664/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "@babel/runtime/regenerator");
    1340213665/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);
    13403 /* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/url */ "@wordpress/url");
    13404 /* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_url__WEBPACK_IMPORTED_MODULE_1__);
    13405 /* harmony import */ var _wordpress_data_controls__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/data-controls */ "@wordpress/data-controls");
    13406 /* harmony import */ var _wordpress_data_controls__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_data_controls__WEBPACK_IMPORTED_MODULE_2__);
    13407 /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./actions */ "./src/store/actions.js");
    13408 /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils */ "./src/store/utils.js");
     13666/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js");
     13667/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);
     13668/* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/url */ "@wordpress/url");
     13669/* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_url__WEBPACK_IMPORTED_MODULE_2__);
     13670/* harmony import */ var _wordpress_data_controls__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/data-controls */ "@wordpress/data-controls");
     13671/* harmony import */ var _wordpress_data_controls__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_data_controls__WEBPACK_IMPORTED_MODULE_3__);
     13672/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./actions */ "./src/store/actions.js");
     13673/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils */ "./src/store/utils.js");
     13674
    1340913675
    1341013676
    … …  
    1341713683 * WordPress dependencies
    1341813684 */
     13685 // eslint-disable-next-line @wordpress/no-unsafe-wp-apis
    1341913686
    1342013687
    … …  
    1342513692
    1342613693
     13694
     13695function parseResponse(_x) {
     13696  return _parseResponse.apply(this, arguments);
     13697}
     13698
     13699function _parseResponse() {
     13700  _parseResponse = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(response) {
     13701    var _response$headers, _response$headers2;
     13702
     13703    return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context5) {
     13704      while (1) {
     13705        switch (_context5.prev = _context5.next) {
     13706          case 0:
     13707            _context5.prev = 0;
     13708            _context5.t0 = Number(((_response$headers = response.headers) === null || _response$headers === void 0 ? void 0 : _response$headers.get('X-WP-Total')) || 0);
     13709            _context5.t1 = Number(((_response$headers2 = response.headers) === null || _response$headers2 === void 0 ? void 0 : _response$headers2.get('X-WP-TotalPages')) || 0);
     13710            _context5.next = 5;
     13711            return response.json();
     13712
     13713          case 5:
     13714            _context5.t2 = _context5.sent;
     13715            return _context5.abrupt("return", {
     13716              total: _context5.t0,
     13717              totalPages: _context5.t1,
     13718              results: _context5.t2
     13719            });
     13720
     13721          case 9:
     13722            _context5.prev = 9;
     13723            _context5.t3 = _context5["catch"](0);
     13724            return _context5.abrupt("return", {});
     13725
     13726          case 12:
     13727          case "end":
     13728            return _context5.stop();
     13729        }
     13730      }
     13731    }, _callee, null, [[0, 9]]);
     13732  }));
     13733  return _parseResponse.apply(this, arguments);
     13734}
     13735
     13736function parseError(_x2) {
     13737  return _parseError.apply(this, arguments);
     13738}
     13739
     13740function _parseError() {
     13741  _parseError = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(response) {
     13742    return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context6) {
     13743      while (1) {
     13744        switch (_context6.prev = _context6.next) {
     13745          case 0:
     13746            _context6.prev = 0;
     13747            _context6.next = 3;
     13748            return response.json();
     13749
     13750          case 3:
     13751            return _context6.abrupt("return", _context6.sent);
     13752
     13753          case 6:
     13754            _context6.prev = 6;
     13755            _context6.t0 = _context6["catch"](0);
     13756            return _context6.abrupt("return", {});
     13757
     13758          case 9:
     13759          case "end":
     13760            return _context6.stop();
     13761        }
     13762      }
     13763    }, _callee2, null, [[0, 6]]);
     13764  }));
     13765  return _parseError.apply(this, arguments);
     13766}
     13767
    1342713768function getPatternsByQuery(query) {
    13428   var queryString, results;
     13769  var queryString, response, _yield$__unstableAwai, total, totalPages, results, parsedError;
     13770
    1342913771  return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function getPatternsByQuery$(_context) {
    1343013772    while (1) {
    1343113773      switch (_context.prev = _context.next) {
    1343213774        case 0:
    13433           queryString = Object(_utils__WEBPACK_IMPORTED_MODULE_4__["getQueryString"])(query);
     13775          queryString = Object(_utils__WEBPACK_IMPORTED_MODULE_5__["getQueryString"])(query);
    1343413776          _context.prev = 1;
    1343513777          _context.next = 4;
    13436           return Object(_actions__WEBPACK_IMPORTED_MODULE_3__["fetchPatterns"])(queryString);
     13778          return Object(_actions__WEBPACK_IMPORTED_MODULE_4__["fetchPatterns"])(queryString);
    1343713779
    1343813780        case 4:
    1343913781          _context.next = 6;
    13440           return Object(_wordpress_data_controls__WEBPACK_IMPORTED_MODULE_2__["apiFetch"])({
    13441             path: Object(_wordpress_url__WEBPACK_IMPORTED_MODULE_1__["addQueryArgs"])('/wp/v2/wporg-pattern', query)
     13782          return Object(_wordpress_data_controls__WEBPACK_IMPORTED_MODULE_3__["apiFetch"])({
     13783            path: Object(_wordpress_url__WEBPACK_IMPORTED_MODULE_2__["addQueryArgs"])('/wp/v2/wporg-pattern', query),
     13784            parse: false
    1344213785          });
    1344313786
    1344413787        case 6:
    13445           results = _context.sent;
     13788          response = _context.sent;
    1344613789          _context.next = 9;
    13447           return Object(_actions__WEBPACK_IMPORTED_MODULE_3__["loadPatterns"])(queryString, results);
     13790          return Object(_wordpress_data_controls__WEBPACK_IMPORTED_MODULE_3__["__unstableAwaitPromise"])(parseResponse(response));
    1344813791
    1344913792        case 9:
    13450           _context.next = 13;
     13793          _yield$__unstableAwai = _context.sent;
     13794          total = _yield$__unstableAwai.total;
     13795          totalPages = _yield$__unstableAwai.totalPages;
     13796          results = _yield$__unstableAwai.results;
     13797          _context.next = 15;
     13798          return Object(_actions__WEBPACK_IMPORTED_MODULE_4__["loadPatterns"])(queryString, {
     13799            page: query.page || 1,
     13800            patterns: results,
     13801            total: total,
     13802            totalPages: totalPages
     13803          });
     13804
     13805        case 15:
     13806          _context.next = 24;
    1345113807          break;
    1345213808
    13453         case 11:
    13454           _context.prev = 11;
     13809        case 17:
     13810          _context.prev = 17;
    1345513811          _context.t0 = _context["catch"](1);
    13456 
    13457         case 13:
     13812          _context.next = 21;
     13813          return Object(_wordpress_data_controls__WEBPACK_IMPORTED_MODULE_3__["__unstableAwaitPromise"])(parseError(_context.t0));
     13814
     13815        case 21:
     13816          parsedError = _context.sent;
     13817          _context.next = 24;
     13818          return Object(_actions__WEBPACK_IMPORTED_MODULE_4__["setErrorPatterns"])(queryString, {
     13819            page: query.page || 1,
     13820            error: parsedError
     13821          });
     13822
     13823        case 24:
    1345813824        case "end":
    1345913825          return _context.stop();
    1346013826      }
    1346113827    }
    13462   }, _marked, null, [[1, 11]]);
     13828  }, _marked, null, [[1, 17]]);
    1346313829}
    1346413830function getCategories() {
    … …  
    1347013836          _context2.prev = 0;
    1347113837          _context2.next = 3;
    13472           return Object(_actions__WEBPACK_IMPORTED_MODULE_3__["fetchCategories"])();
     13838          return Object(_actions__WEBPACK_IMPORTED_MODULE_4__["fetchCategories"])();
    1347313839
    1347413840        case 3:
    1347513841          _context2.next = 5;
    13476           return Object(_wordpress_data_controls__WEBPACK_IMPORTED_MODULE_2__["apiFetch"])({
    13477             path: Object(_wordpress_url__WEBPACK_IMPORTED_MODULE_1__["addQueryArgs"])('/wp/v2/pattern-categories')
     13842          return Object(_wordpress_data_controls__WEBPACK_IMPORTED_MODULE_3__["apiFetch"])({
     13843            path: Object(_wordpress_url__WEBPACK_IMPORTED_MODULE_2__["addQueryArgs"])('/wp/v2/pattern-categories')
    1347813844          });
    1347913845
    … …  
    1348113847          results = _context2.sent;
    1348213848          _context2.next = 8;
    13483           return Object(_actions__WEBPACK_IMPORTED_MODULE_3__["loadCategories"])(results);
     13849          return Object(_actions__WEBPACK_IMPORTED_MODULE_4__["loadCategories"])(results);
    1348413850
    1348513851        case 8:
    … …  
    1350613872          _context3.prev = 0;
    1350713873          _context3.next = 3;
    13508           return Object(_actions__WEBPACK_IMPORTED_MODULE_3__["fetchPatternFlagReasons"])();
     13874          return Object(_actions__WEBPACK_IMPORTED_MODULE_4__["fetchPatternFlagReasons"])();
    1350913875
    1351013876        case 3:
    1351113877          _context3.next = 5;
    13512           return Object(_wordpress_data_controls__WEBPACK_IMPORTED_MODULE_2__["apiFetch"])({
    13513             path: Object(_wordpress_url__WEBPACK_IMPORTED_MODULE_1__["addQueryArgs"])('/wp/v2/wporg-pattern-flag-reason')
     13878          return Object(_wordpress_data_controls__WEBPACK_IMPORTED_MODULE_3__["apiFetch"])({
     13879            path: Object(_wordpress_url__WEBPACK_IMPORTED_MODULE_2__["addQueryArgs"])('/wp/v2/wporg-pattern-flag-reason')
    1351413880          });
    1351513881
    … …  
    1351713883          results = _context3.sent;
    1351813884          _context3.next = 8;
    13519           return Object(_actions__WEBPACK_IMPORTED_MODULE_3__["loadPatternFlagReasons"])(results);
     13885          return Object(_actions__WEBPACK_IMPORTED_MODULE_4__["loadPatternFlagReasons"])(results);
    1352013886
    1352113887        case 8:
    … …  
    1354213908          _context4.prev = 0;
    1354313909          _context4.next = 3;
    13544           return Object(_wordpress_data_controls__WEBPACK_IMPORTED_MODULE_2__["apiFetch"])({
     13910          return Object(_wordpress_data_controls__WEBPACK_IMPORTED_MODULE_3__["apiFetch"])({
    1354513911            path: '/wporg/v1/pattern-favorites'
    1354613912          });
    … …  
    1354913915          results = _context4.sent;
    1355013916          _context4.next = 6;
    13551           return Object(_actions__WEBPACK_IMPORTED_MODULE_3__["loadFavorites"])(results);
     13917          return Object(_actions__WEBPACK_IMPORTED_MODULE_4__["loadFavorites"])(results);
    1355213918
    1355313919        case 6:
    … …  
    1357313939  !*** ./src/store/selectors.js ***!
    1357413940  \********************************/
    13575 /*! exports provided: isLoadingPatternsByQuery, getPatterns, getPatternsByQuery, getPattern, getCurrentQuery, isLoadingCategories, hasLoadedCategories, getCategories, getCategoryBySlug, getPatternFlagReasons, isLoadingPatternFlagReasons, getFavorites, isFavorite */
     13941/*! exports provided: isLoadingPatternsByQuery, getPatterns, getPatternsByQuery, getPatternTotalsByQuery, getPatternTotalPagesByQuery, getPattern, getCurrentQuery, isLoadingCategories, hasLoadedCategories, getCategories, getCategoryBySlug, getPatternFlagReasons, isLoadingPatternFlagReasons, getFavorites, isFavorite */
    1357613942/***/ (function(module, __webpack_exports__, __webpack_require__) {
    1357713943
    … …  
    1358113947/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getPatterns", function() { return getPatterns; });
    1358213948/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getPatternsByQuery", function() { return getPatternsByQuery; });
     13949/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getPatternTotalsByQuery", function() { return getPatternTotalsByQuery; });
     13950/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getPatternTotalPagesByQuery", function() { return getPatternTotalPagesByQuery; });
    1358313951/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getPattern", function() { return getPattern; });
    1358413952/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getCurrentQuery", function() { return getCurrentQuery; });
    … …  
    1361013978
    1361113979function isLoadingPatternsByQuery(state, query) {
     13980  var _state$patterns$queri, _state$patterns$queri2;
     13981
    1361213982  var queryString = Object(_utils__WEBPACK_IMPORTED_MODULE_1__["getQueryString"])(query);
    13613   return !Array.isArray(state.patterns.queries[queryString]);
     13983  var page = (query === null || query === void 0 ? void 0 : query.page) || 1;
     13984  return !Array.isArray((_state$patterns$queri = state.patterns.queries) === null || _state$patterns$queri === void 0 ? void 0 : (_state$patterns$queri2 = _state$patterns$queri[queryString]) === null || _state$patterns$queri2 === void 0 ? void 0 : _state$patterns$queri2[page]);
    1361413985}
    1361513986/**
    … …  
    1363414005
    1363514006function getPatternsByQuery(state, query) {
     14007  var _state$patterns$queri3, _state$patterns$queri4;
     14008
    1363614009  var queryString = Object(_utils__WEBPACK_IMPORTED_MODULE_1__["getQueryString"])(query);
    13637   return (state.patterns.queries[queryString] || []).map(function (id) {
     14010  var page = (query === null || query === void 0 ? void 0 : query.page) || 1;
     14011  var patternIds = (_state$patterns$queri3 = state.patterns.queries) === null || _state$patterns$queri3 === void 0 ? void 0 : (_state$patterns$queri4 = _state$patterns$queri3[queryString]) === null || _state$patterns$queri4 === void 0 ? void 0 : _state$patterns$queri4[page];
     14012  return (patternIds || []).map(function (id) {
    1363814013    return state.patterns.byId[id];
    1363914014  });
     14015}
     14016/**
     14017 * Get the count of all patterns for a given query.
     14018 *
     14019 * @param {Object} state Global application state.
     14020 * @param {Object} query Query parameters.
     14021 *
     14022 * @return {number} The count of all patterns matching this query.
     14023 */
     14024
     14025function getPatternTotalsByQuery(state, query) {
     14026  var _state$patterns$queri5, _state$patterns$queri6;
     14027
     14028  var queryString = Object(_utils__WEBPACK_IMPORTED_MODULE_1__["getQueryString"])(query);
     14029  return ((_state$patterns$queri5 = state.patterns.queries) === null || _state$patterns$queri5 === void 0 ? void 0 : (_state$patterns$queri6 = _state$patterns$queri5[queryString]) === null || _state$patterns$queri6 === void 0 ? void 0 : _state$patterns$queri6.total) || 0;
     14030}
     14031/**
     14032 * Get the number of pages of patterns for a given query.
     14033 *
     14034 * @param {Object} state Global application state.
     14035 * @param {Object} query Query parameters.
     14036 *
     14037 * @return {number} The count of pages.
     14038 */
     14039
     14040function getPatternTotalPagesByQuery(state, query) {
     14041  var _state$patterns$queri7, _state$patterns$queri8;
     14042
     14043  var queryString = Object(_utils__WEBPACK_IMPORTED_MODULE_1__["getQueryString"])(query);
     14044  return ((_state$patterns$queri7 = state.patterns.queries) === null || _state$patterns$queri7 === void 0 ? void 0 : (_state$patterns$queri8 = _state$patterns$queri7[queryString]) === null || _state$patterns$queri8 === void 0 ? void 0 : _state$patterns$queri8.totalPages) || 0;
    1364014045}
    1364114046/**
    … …  
    1384514250  };
    1384614251}
    13847 
    13848 /***/ }),
    13849 
    13850 /***/ "./src/utils/category.js":
    13851 /*!*******************************!*\
    13852   !*** ./src/utils/category.js ***!
    13853   \*******************************/
    13854 /*! exports provided: removeEmptyArgs, removeQueryString, getCategoryFromPath */
    13855 /***/ (function(module, __webpack_exports__, __webpack_require__) {
    13856 
    13857 "use strict";
    13858 __webpack_require__.r(__webpack_exports__);
    13859 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeEmptyArgs", function() { return removeEmptyArgs; });
    13860 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeQueryString", function() { return removeQueryString; });
    13861 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getCategoryFromPath", function() { return getCategoryFromPath; });
    13862 /**
    13863  * Remove the last '/' from a string if it exists.
    13864  *
    13865  * @param {string} str Url or url part
    13866  * @return {string}
    13867  */
    13868 var removeTrailingSlash = function removeTrailingSlash(str) {
    13869   return str.replace(/\/$/, '');
    13870 };
    13871 /**
    13872  * Removes any empty properties or empty strings.
    13873  *
    13874  * @param {Object} obj
    13875  * @return {Object} Object with keys that are defined and not empty
    13876  */
    13877 
    13878 
    13879 var removeEmptyArgs = function removeEmptyArgs(obj) {
    13880   var cleaned = {};
    13881   Object.keys(obj).forEach(function (key) {
    13882     var arg = obj[key]; // If it's not undefined or null convert it to string and check that it is not empty.
    13883     // It's a bit of a "trick" to handle non-strings and strings without checking type explicitly.
    13884 
    13885     if (arg !== undefined && arg !== null && arg.toString().length > 0) {
    13886       cleaned[key] = arg;
    13887     }
    13888   });
    13889   return cleaned;
    13890 };
    13891 /**
    13892  * Splits a string at ? and returns the first part.
    13893  *
    13894  * @param {string} path Url or url part
    13895  * @return {string} Returns string or string before ? character.
    13896  */
    13897 
    13898 var removeQueryString = function removeQueryString(path) {
    13899   return path.split('?')[0];
    13900 };
    13901 /**
    13902  * Retrieves the category from a url path without query string params.
    13903  *
    13904  * @param {string} path
    13905  * @return {string} The category slug.
    13906  */
    13907 
    13908 var getCategoryFromPath = function getCategoryFromPath(path) {
    13909   var _path = removeQueryString(path);
    13910 
    13911   _path = removeTrailingSlash(_path);
    13912   return _path.substring(_path.lastIndexOf('/') + 1);
    13913 };
    1391414252
    1391514253/***/ }),
    … …  
    1395014288/***/ }),
    1395114289
     14290/***/ "./src/utils/get-pagination-list.js":
     14291/*!******************************************!*\
     14292  !*** ./src/utils/get-pagination-list.js ***!
     14293  \******************************************/
     14294/*! exports provided: default */
     14295/***/ (function(module, __webpack_exports__, __webpack_require__) {
     14296
     14297"use strict";
     14298__webpack_require__.r(__webpack_exports__);
     14299/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getPaginationList; });
     14300/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "./node_modules/@babel/runtime/helpers/toConsumableArray.js");
     14301/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);
     14302
     14303
     14304/**
     14305 * Get the collapsed list of page numbers for a given range of pages, used to paginate queries.
     14306 *
     14307 * This will return an array of page numbers (1, 2, 3, etc) for a given length (number of pages). If there are
     14308 * less than 5 pages (inclusive), it will return 1 through 5. If there are more, it will collapse between the
     14309 * start and end with an ellipsis. If the current page is in the middle, it will add pages to the middle.
     14310 *
     14311 * See test/get-pagination-list.js for examples.
     14312 *
     14313 * @param {number} length The total number of pages.
     14314 * @param {?number} current The current page, used to output extra pages if necessary. Default 1.
     14315 * @return {Array.<number|string>} Array of numbers and … used to display pagination links.
     14316 */
     14317function getPaginationList(length) {
     14318  var current = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
     14319  var range = Array.from({
     14320    length: length
     14321  }, function (val, i) {
     14322    return i + 1;
     14323  });
     14324  var list = [];
     14325
     14326  if (length <= 5) {
     14327    return range;
     14328  }
     14329
     14330  list.push.apply(list, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(range.slice(0, 2)));
     14331
     14332  if (current > 2 && current <= length - 1) {
     14333    list.push.apply(list, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(range.slice(current - 2, current + 1)));
     14334  }
     14335
     14336  list.push.apply(list, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(range.slice(-2)));
     14337  return list // Remove duplicates.
     14338  .filter(function (value, i, a) {
     14339    return a.indexOf(value) === i;
     14340  }) // Add in … where there's a jump larger than 1.
     14341  .reduce(function (acc, value, i, a) {
     14342    if (i === 0) {
     14343      acc.push(value);
     14344      return acc;
     14345    }
     14346
     14347    var diff = Math.abs(a[i] - a[i - 1]);
     14348
     14349    if (diff === 0) {
     14350      return acc;
     14351    }
     14352
     14353    if (diff > 1) {
     14354      acc.push('…');
     14355    }
     14356
     14357    acc.push(value);
     14358    return acc;
     14359  }, []);
     14360}
     14361
     14362/***/ }),
     14363
    1395214364/***/ "./src/utils/index.js":
    1395314365/*!****************************!*\
    1395414366  !*** ./src/utils/index.js ***!
    1395514367  \****************************/
    13956 /*! exports provided: getCategoryFromPath, removeQueryString, removeEmptyArgs, copyToClipboard */
    13957 /***/ (function(module, __webpack_exports__, __webpack_require__) {
    13958 
    13959 "use strict";
    13960 __webpack_require__.r(__webpack_exports__);
    13961 /* harmony import */ var _category__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./category */ "./src/utils/category.js");
    13962 /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getCategoryFromPath", function() { return _category__WEBPACK_IMPORTED_MODULE_0__["getCategoryFromPath"]; });
    13963 
    13964 /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeQueryString", function() { return _category__WEBPACK_IMPORTED_MODULE_0__["removeQueryString"]; });
    13965 
    13966 /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeEmptyArgs", function() { return _category__WEBPACK_IMPORTED_MODULE_0__["removeEmptyArgs"]; });
     14368/*! exports provided: getCategoryFromPath, getPageFromPath, getValueFromPath, removeQueryString, removeEmptyArgs, copyToClipboard */
     14369/***/ (function(module, __webpack_exports__, __webpack_require__) {
     14370
     14371"use strict";
     14372__webpack_require__.r(__webpack_exports__);
     14373/* harmony import */ var _query__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./query */ "./src/utils/query.js");
     14374/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getCategoryFromPath", function() { return _query__WEBPACK_IMPORTED_MODULE_0__["getCategoryFromPath"]; });
     14375
     14376/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getPageFromPath", function() { return _query__WEBPACK_IMPORTED_MODULE_0__["getPageFromPath"]; });
     14377
     14378/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getValueFromPath", function() { return _query__WEBPACK_IMPORTED_MODULE_0__["getValueFromPath"]; });
     14379
     14380/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeQueryString", function() { return _query__WEBPACK_IMPORTED_MODULE_0__["removeQueryString"]; });
     14381
     14382/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeEmptyArgs", function() { return _query__WEBPACK_IMPORTED_MODULE_0__["removeEmptyArgs"]; });
    1396714383
    1396814384/* harmony import */ var _copy_to_clipboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./copy-to-clipboard */ "./src/utils/copy-to-clipboard.js");
    … …  
    1397114387
    1397214388
     14389
     14390/***/ }),
     14391
     14392/***/ "./src/utils/query.js":
     14393/*!****************************!*\
     14394  !*** ./src/utils/query.js ***!
     14395  \****************************/
     14396/*! exports provided: removeEmptyArgs, removeQueryString, getValueFromPath, getCategoryFromPath, getPageFromPath */
     14397/***/ (function(module, __webpack_exports__, __webpack_require__) {
     14398
     14399"use strict";
     14400__webpack_require__.r(__webpack_exports__);
     14401/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeEmptyArgs", function() { return removeEmptyArgs; });
     14402/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeQueryString", function() { return removeQueryString; });
     14403/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getValueFromPath", function() { return getValueFromPath; });
     14404/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getCategoryFromPath", function() { return getCategoryFromPath; });
     14405/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getPageFromPath", function() { return getPageFromPath; });
     14406/* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/url */ "@wordpress/url");
     14407/* harmony import */ var _wordpress_url__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_url__WEBPACK_IMPORTED_MODULE_0__);
     14408/**
     14409 * WordPress dependencies
     14410 */
     14411
     14412/**
     14413 * Remove the last '/' from a string if it exists.
     14414 *
     14415 * @param {string} str Url or url part
     14416 * @return {string}
     14417 */
     14418
     14419var removeTrailingSlash = function removeTrailingSlash(str) {
     14420  return str.replace(/\/$/, '');
     14421};
     14422/**
     14423 * Remove the first '/' from a string if it exists.
     14424 *
     14425 * @param {string} str Url or url part
     14426 * @return {string}
     14427 */
     14428
     14429
     14430var removeLeadingSlash = function removeLeadingSlash(str) {
     14431  return str.replace(/^\//, '');
     14432};
     14433/**
     14434 * Removes any empty properties or empty strings.
     14435 *
     14436 * @param {Object} obj
     14437 * @return {Object} Object with keys that are defined and not empty
     14438 */
     14439
     14440
     14441var removeEmptyArgs = function removeEmptyArgs(obj) {
     14442  var cleaned = {};
     14443  Object.keys(obj).forEach(function (key) {
     14444    var arg = obj[key]; // If it's not undefined or null convert it to string and check that it is not empty.
     14445    // It's a bit of a "trick" to handle non-strings and strings without checking type explicitly.
     14446
     14447    if (arg !== undefined && arg !== null && arg.toString().length > 0) {
     14448      cleaned[key] = arg;
     14449    }
     14450  });
     14451  return cleaned;
     14452};
     14453/**
     14454 * Splits a string at ? and returns the first part.
     14455 *
     14456 * @param {string} path Url or url part
     14457 * @return {string} Returns string or string before ? character.
     14458 */
     14459
     14460var removeQueryString = function removeQueryString(path) {
     14461  return path.split('?')[0];
     14462};
     14463/**
     14464 * Retrieve a given key from a url path.
     14465 * A query string will take precedence, otherwise will fall back to the value in the path, for example
     14466 * in '/category/blog/page/2', the value for category is blog, and page is 2. This could also be written
     14467 * as `?category=blog&page=2`, or `/category/blog/?page=2`.
     14468 *
     14469 * @param {string} path A URL path and query string.
     14470 * @param {string} key  The query var to extract, ex: `pattern-categories`, `page`.
     14471 * @return {string} The value of the requested key.
     14472 */
     14473
     14474var getValueFromPath = function getValueFromPath(path, key) {
     14475  if (!key || !path) {
     14476    return '';
     14477  }
     14478
     14479  var query = Object(_wordpress_url__WEBPACK_IMPORTED_MODULE_0__["getQueryArgs"])(path);
     14480
     14481  if (query[key]) {
     14482    return query[key];
     14483  }
     14484
     14485  var _path = removeLeadingSlash(removeTrailingSlash(removeQueryString(path)));
     14486
     14487  var parts = _path.split('/'); // Find the key section, if it exists. The next part of the URL is the value.
     14488
     14489
     14490  var index = parts.indexOf(key);
     14491
     14492  if (-1 === index) {
     14493    return '';
     14494  }
     14495
     14496  return parts[index + 1] || '';
     14497};
     14498/**
     14499 * Retrieve the category from a url path.
     14500 *
     14501 * @param {string} path
     14502 * @return {string} The category slug.
     14503 */
     14504
     14505var getCategoryFromPath = function getCategoryFromPath(path) {
     14506  return getValueFromPath(path, 'pattern-categories');
     14507};
     14508/**
     14509 * Retrieve the page from a url path.
     14510 *
     14511 * @param {string} path
     14512 * @return {number} The page number.
     14513 */
     14514
     14515var getPageFromPath = function getPageFromPath(path) {
     14516  return Number(getValueFromPath(path, 'page') || 1);
     14517};
    1397314518
    1397414519/***/ }),
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/css/components/_components.scss

    r10983 r11003  
    3030@import "pattern-grid-menu";
    3131@import "pattern-grid";
     32@import "pattern-pagination";
    3233@import "pattern-preview";
    3334@import "pattern-report-button";
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/css/style.css

    r10991 r11003  
    1 @charset "UTF-8";[class*=col-]{margin:inherit}.row{display:flex;flex-direction:row;flex-wrap:wrap}@media (max-width:768px){.row{flex-direction:column;flex-wrap:nowrap}}.row.gutters>.row{margin-left:-2%}@media (max-width:768px){.row.gutters>.row{margin-left:0}}.row.gutters>.row>[class*=col-]{margin-left:2%}@media (max-width:768px){.row.gutters>.row>[class*=col-]{margin-left:0}}.row.around{justify-content:space-around}.row.between{justify-content:space-between}.row.auto .col{flex-grow:1}.col-1{width:8.3333333333%}.offset-1{margin-left:8.3333333333%}.col-2{width:16.6666666667%}.offset-2{margin-left:16.6666666667%}.col-3{width:25%}.offset-3{margin-left:25%}.col-4{width:33.3333333333%}.offset-4{margin-left:33.3333333333%}.col-5{width:41.6666666667%}.offset-5{margin-left:41.6666666667%}.col-6{width:50%}.offset-6{margin-left:50%}.col-7{width:58.3333333333%}.offset-7{margin-left:58.3333333333%}.col-8{width:66.6666666667%}.offset-8{margin-left:66.6666666667%}.col-9{width:75%}.offset-9{margin-left:75%}.col-10{width:83.3333333333%}.offset-10{margin-left:83.3333333333%}.col-11{width:91.6666666667%}.offset-11{margin-left:91.6666666667%}.col-12{width:100%}.offset-12{margin-left:100%}.gutters>.col-1{width:6.33333%}.gutters>.col-1:nth-child(n+13){margin-top:2%}.gutters>.offset-1{margin-left:10.33333%!important}.gutters>.col-2{width:14.66667%}.gutters>.col-2:nth-child(n+7){margin-top:2%}.gutters>.offset-2{margin-left:18.66667%!important}.gutters>.col-3{width:23%}.gutters>.col-3:nth-child(n+5){margin-top:2%}.gutters>.offset-3{margin-left:27%!important}.gutters>.col-4{width:31.33333%}.gutters>.col-4:nth-child(n+4){margin-top:2%}.gutters>.offset-4{margin-left:35.33333%!important}.gutters>.col-5{width:39.66667%}.gutters>.offset-5{margin-left:43.66667%!important}.gutters>.col-6{width:48%}.gutters>.col-6:nth-child(n+3){margin-top:2%}.gutters>.offset-6{margin-left:52%!important}.gutters>.col-7{width:56.33333%}.gutters>.offset-7{margin-left:60.33333%!important}.gutters>.col-8{width:64.66667%}.gutters>.offset-8{margin-left:68.66667%!important}.gutters>.col-9{width:73%}.gutters>.offset-9{margin-left:77%!important}.gutters>.col-10{width:81.33333%}.gutters>.offset-10{margin-left:85.33333%!important}.gutters>.col-11{width:89.66667%}.gutters>.offset-11{margin-left:93.66667%!important}.gutters>.col-12{width:98%}.gutters>.offset-12{margin-left:102%!important}@media (max-width:768px){[class*=" offset-"],[class^=offset-]{margin-left:0}}.first{order:-1}.last{order:1}@media (max-width:768px){.row [class*=col-]{margin-left:0;width:100%}.row.gutters [class*=col-]{margin-bottom:16px}.first-sm{order:-1}.last-sm{order:1}}.gutters .column.push-left,.push-left{margin-right:auto}.gutters .column.push-right,.push-right{margin-left:auto}.gutters .column.push-center,.push-center{margin-left:auto;margin-right:auto}.gutters .column.push-middle,.push-middle{margin-top:auto;margin-bottom:auto}.push-bottom{margin-top:auto}@media (max-width:768px){.gutters .column.push-left-sm,.push-left-sm{margin-left:0}.gutters .column.push-center-sm,.push-center-sm{margin-left:auto;margin-right:auto}.push-top-sm{margin-top:0}}.align-middle{align-items:center}.align-right{justify-content:flex-end}.align-center{justify-content:center}@media (max-width:768px){.align-left-sm{justify-content:flex-start}}.float-right{float:right}.float-left{float:left}@media (max-width:768px){.float-left,.float-right{float:none}}.fixed{position:fixed;top:0;left:0;z-index:100;width:100%}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}optgroup{font-weight:700}table{border-spacing:0}td,th{padding:0}p{margin:1rem 0}cite,dfn,em,i{font-style:italic}blockquote{margin:0 1.5rem}address{margin:0 0 1.5rem}pre{background:#eee;font-family:Courier\ 10 Pitch,Courier,monospace;font-size:.9375rem;line-height:1.6;margin-bottom:1.6rem;max-width:100%;overflow:auto;padding:1.6rem}code,kbd,tt,var{font-family:Monaco,Consolas,Andale Mono,DejaVu Sans Mono,monospace;font-size:.9375rem}abbr,acronym{border-bottom:1px dotted #666;cursor:help}ins,mark{background:#fff9c0;text-decoration:none}big{font-size:125%}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{background:#fff}blockquote,q{quotes:"" ""}blockquote:after,blockquote:before,q:after,q:before{content:""}blockquote{border-left:2px solid #767676;color:#767676;margin:1rem 0;padding-left:.8rem}blockquote cite{font-size:.8rem}figure{margin:0}hr{background-color:#eee;border:0;height:2px;margin:5rem auto}img{height:auto;max-width:100%}h1,h2,h3,h4,h5,h6{font-family:Open Sans,sans-serif;clear:both;line-height:1.5;margin:2rem 0 1rem}.h1,h1{font-size:2.44140625rem}.h1,.h2,h1,h2{font-weight:300}.h2,h2{font-size:1.953125rem}.h3,h3{font-size:1.5625rem;font-weight:400}.h4,h4{font-size:1.25rem;color:#32373c;font-weight:600;padding:0}.h5,h5{font-size:1rem;letter-spacing:.01rem}.h5,.h6,h5,h6{font-weight:600;text-transform:uppercase}.h6,h6{font-size:.8rem;letter-spacing:.8px}a{color:#0073aa;text-decoration:none}a:active,a:focus,a:hover{text-decoration:underline}a:focus{outline:thin dotted}a:active,a:hover{outline:0}li>a,p a{text-decoration:underline}li>a:hover,p a:hover{color:#d54e21}ol,ul{margin:0 0 1.5em 1.5em;padding:0}ul{list-style:square}ol{list-style:decimal}ol.unmarked-list,ul.unmarked-list{list-style:none;padding-left:0}li>ol,li>ul{margin-bottom:0}dt{font-weight:700}dd{margin:0 1.5em 1.5em}table{border:1px solid #eee;border-collapse:collapse;font-size:.8rem;margin:0 0 1rem;padding:0;width:100%}table thead{background:#32373c;color:#fff}table td,table th{border:1px solid #eee;font-weight:400;margin:0;padding:.4rem;text-align:left;vertical-align:top}table tbody tr:nth-child(2n){background:#f7f7f7}html{font-size:100%}body,button,input,select,textarea{color:#32373c;font-family:Open Sans,sans-serif;font-size:100%;line-height:1.5}@media screen and (min-width:737px){html{font-size:1.125rem}}.custom-select{display:inline-block;box-sizing:border-box;padding:.5rem 2rem .5rem .8rem;width:auto;font-size:1em;line-height:1.3;border:1px solid #6c7782;box-shadow:none;border-radius:.5em;-moz-appearance:none;-webkit-appearance:none;appearance:none;background-color:transparent;background-image:url('data:image/svg+xml;charset=US-ASCII,%3Csvg width="14" height="8" xmlns="http://www.w3.org/2000/svg"%3E%3Cpath d="M2 0L7 5L12 0L14 1L7 8L0 1L2 0Z" fill="%23555D66"/%3E%3C/svg%3E%0A');background-repeat:no-repeat;background-position:right .7em top 50%;background-size:.65em auto}.custom-select::-ms-expand{display:none}.custom-select:focus{box-shadow:0 0 1px 3px rgba(59,153,252,.7);box-shadow:0 0 0 3px -moz-mac-focusring;color:#222;outline:none}.custom-select option{font-weight:400}html{font-size:1rem}@media screen and (min-width:737px){html{font-size:1rem}}.screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute!important;width:1px}.screen-reader-text:focus{background-color:#f1f1f1;border-radius:3px;box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto!important;color:#21759b;display:block;font-size:.875rem;font-weight:700;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}.site-content[tabindex="-1"]:focus{outline:0}.no-js .hide-if-no-js{display:none}.alignleft{display:inline;float:left;margin-right:1.5em}.alignright{display:inline;float:right;margin-left:1.5em}.aligncenter{clear:both;display:block;margin-left:auto;margin-right:auto}@media screen and (max-width:480px){.alignleft,.alignright{display:block;float:none;margin-left:auto;margin-right:auto}}.button,.button-primary,.button-secondary,.plugin-upload-form .button-primary{border:1px solid;border-radius:3px;box-sizing:border-box;cursor:pointer;display:inline-block;font-size:.8rem;height:1.5625rem;line-height:1;margin:0;padding:0 .8rem;text-decoration:none;white-space:nowrap;-webkit-appearance:none}button::-moz-focus-inner,input[type=button]::-moz-focus-inner,input[type=reset]::-moz-focus-inner,input[type=submit]::-moz-focus-inner{border:0;padding:0}.button-group.button-xl .button,.button.button-xl{font-size:1rem;height:2.44140625rem;line-height:1;padding:0 1.5rem}.button-group.button-large .button,.button.button-large{height:1.953125rem;line-height:1;padding:0 1rem}.button-group.button-small .button,.button.button-small{font-size:.64rem;height:1.25rem;line-height:1;padding:0 .5rem}a.button,a.button-primary,a.button-secondary{line-height:1.5625rem}.button-group.button-large a.button,a.button.button-large{line-height:1.953125rem}.button-group.button-xl a.button,a.button.button-xl{line-height:2.44140625rem}.button-group.button-small a.button,a.button.button-small{line-height:1.25rem}.button:active,.button:focus{outline:none}.button.hidden{display:none}input[type=reset],input[type=reset]:active,input[type=reset]:focus,input[type=reset]:hover{background:none;border:none;box-shadow:none;padding:0 2px 1px;width:auto}.button,.button-secondary,.button:visited{background:#f7f7f7;border-color:#ccc;box-shadow:0 1px 0 #ccc;color:#555;vertical-align:top}p .button{vertical-align:baseline}.button-secondary:focus,.button-secondary:hover,.button.focus,.button.hover,.button:focus,.button:hover{background:#fafafa;border-color:#999;color:#23282d}.button-link:focus,.button-secondary:focus,.button.focus,.button:focus{border-color:#5b9dd9;box-shadow:0 0 3px rgba(0,115,170,.8)}.button-secondary:active,.button.active,.button.active:hover,.button:active{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.button.active:focus{border-color:#5b9dd9;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(0,115,170,.8)}.button-disabled,.button-secondary.disabled,.button-secondary:disabled,.button-secondary[disabled],.button.disabled,.button:disabled,.button[disabled]{background:#f7f7f7!important;border-color:#ddd!important;box-shadow:none!important;color:#a0a5aa!important;cursor:default;text-shadow:0 1px 0 #fff!important;transform:none!important}.button-link,input[type=submit].button-link{background:none;border:0;border-radius:0;box-shadow:none;cursor:pointer;margin:0;outline:none;padding:0}.button-link:focus{outline:1px solid #5b9dd9}.button-primary,.download-button,.plugin-upload-form .button-primary{text-decoration:none;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.button-primary,.button-primary:visited,.download-button,.download-button:visited,.plugin-upload-form .button-primary,.plugin-upload-form .button-primary:visited{background:#0085ba;border-color:#0073aa #006799 #006799;box-shadow:0 1px 0 #006799;color:#fff}.button-primary.focus,.button-primary.hover,.button-primary:focus,.button-primary:hover,.download-button.focus,.download-button.hover,.download-button:focus,.download-button:hover,.plugin-upload-form .button-primary.focus,.plugin-upload-form .button-primary.hover,.plugin-upload-form .button-primary:focus,.plugin-upload-form .button-primary:hover{background:#008ec2;border-color:#006799;box-shadow:0 1px 0 #006799;color:#fff}.button-primary.focus,.button-primary:focus,.download-button.focus,.download-button:focus,.plugin-upload-form .button-primary.focus,.plugin-upload-form .button-primary:focus{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.button-primary.active,.button-primary.active:focus,.button-primary.active:hover,.button-primary:active,.download-button.active,.download-button.active:focus,.download-button.active:hover,.download-button:active,.plugin-upload-form .button-primary.active,.plugin-upload-form .button-primary.active:focus,.plugin-upload-form .button-primary.active:hover,.plugin-upload-form .button-primary:active{background:#0073aa;border-color:#006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.button-primary.disabled,.button-primary:disabled,.button-primary[disabled],.download-button.disabled,.download-button:disabled,.download-button[disabled],.plugin-upload-form .button-primary.disabled,.plugin-upload-form .button-primary:disabled,.plugin-upload-form .button-primary[disabled]{background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;color:#66c6e4!important;cursor:default;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}.button-primary.button.button-hero,.download-button.button.button-hero,.plugin-upload-form .button-primary.button.button-hero{box-shadow:0 2px 0 #006799}.button-primary.button.button-hero.active,.button-primary.button.button-hero.active:focus,.button-primary.button.button-hero.active:hover,.button-primary.button.button-hero:active,.download-button.button.button-hero.active,.download-button.button.button-hero.active:focus,.download-button.button.button-hero.active:hover,.download-button.button.button-hero:active,.plugin-upload-form .button-primary.button.button-hero.active,.plugin-upload-form .button-primary.button.button-hero.active:focus,.plugin-upload-form .button-primary.button.button-hero.active:hover,.plugin-upload-form .button-primary.button.button-hero:active{box-shadow:inset 0 3px 0 #006799}.button-primary-disabled{background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;color:#66c6e4!important;cursor:default;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}.button-group{display:inline-block;font-size:0;position:relative;vertical-align:middle;white-space:nowrap}.button-group>.button{border-radius:0;display:inline-block;margin-right:-1px;z-index:10}.button-group>.button-primary{z-index:100}.button-group>.button:hover{z-index:20}.button-group>.button:first-child{border-radius:3px 0 0 3px}.button-group>.button:last-child{border-radius:0 3px 3px 0}.button-group>.button:focus{position:relative;z-index:1}@media screen and (max-width:737px){.button,.button.button-large,.button.button-small,.plugin-upload-form .button-primary{font-size:14px;height:auto;line-height:normal;margin-bottom:4px;padding:6px 14px;vertical-align:middle}}.clear:after,.clear:before,.comment-content:after,.comment-content:before,.entry-content:after,.entry-content:before,.home-below:after,.home-below:before,.site-content:after,.site-content:before,.site-footer:after,.site-footer:before,.site-header:after,.site-header:before{content:"";display:table;table-layout:fixed}.clear:after,.comment-content:after,.entry-content:after,.home-below:after,.site-content:after,.site-footer:after,.site-header:after{clear:both}p.subheading{color:#82878c;font-weight:300;margin:-.4rem auto 2rem;text-align:center}p.intro,p.subheading{font-size:1.25rem}p.aside{font-size:.8rem}p.note{font-size:.64rem;letter-spacing:.01rem;max-width:18.1898940355rem}input,textarea{box-sizing:border-box}input[type=checkbox],input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=radio],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{background-color:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);color:#32373c;outline:none;transition:border-color .05s ease-in-out}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=email],input[type=url]{direction:ltr}input[type=number]{height:28px;line-height:inherit}input[type=checkbox],input[type=radio]{background:#fff;border:1px solid #b4b9be;box-shadow:inset 0 1px 2px rgba(0,0,0,.1);clear:none;color:#555;cursor:pointer;display:inline-block;height:16px;line-height:0;margin:-4px 4px 0 0;min-width:16px;outline:0;padding:0!important;text-align:center;transition:border-color .05s ease-in-out;vertical-align:middle;width:16px;-webkit-appearance:none}input[type=checkbox]:checked:before,input[type=radio]:checked:before{display:inline-block;float:left;font:normal 21px/1 dashicons;vertical-align:middle;width:16px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}input[type=checkbox]:checked:before{color:#1e8cbe;content:"";margin:-3px 0 0 -4px}input[type=radio]{border-radius:50%;line-height:10px;margin-right:4px}input[type=radio]:checked+label:before{color:#82878c}input[type=radio]:checked:before{background-color:#1e8cbe;border-radius:50px;content:"•";font-size:24px;height:6px;line-height:16px;margin:4px;text-indent:-9999px;width:6px}input[type=reset]:active,input[type=reset]:hover{color:#00a0d2}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{border-radius:0;font-size:14px;padding:3px 5px}textarea{line-height:1.4;overflow:auto;padding:2px 6px;resize:vertical}textarea.code{line-height:1.4;padding:4px 6px 1px}label{cursor:pointer;vertical-align:middle}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:hsla(0,0%,100%,.5);border-color:hsla(0,0%,87.1%,.75);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(51,51,51,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:none;box-shadow:none}input.large-text,textarea.large-text{width:99%}input.regular-text{width:25em}input.small-text{padding:1px 6px;width:50px}input[type=number].small-text{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text]{-webkit-appearance:none;padding:6px 10px}input[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}input[type=checkbox]{-webkit-appearance:none;padding:10px}input[type=checkbox]:checked:before{font:normal 30px/1 dashicons;margin:-3px -5px}input[type=checkbox],input[type=radio]{height:25px;width:25px}input[type=radio]:checked:before{vertical-align:middle;width:9px;height:9px;margin:7px;line-height:16px}input,textarea{font-size:16px}input[type=number].small-text,input[type=password].small-text,input[type=search].small-text,input[type=text].small-text{width:auto;max-width:55px;display:inline;padding:3px 6px;margin:0 3px}input.regular-text{width:100%}label{font-size:14px}fieldset label{display:block}}a.button:active,a.button:focus,a.button:hover{text-decoration:none}.notice{background:#fff;border-left:4px solid #fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:1em 0;padding:1px 12px}.notice p{font-size:.8rem;margin:.5em 0;padding:2px}.notice.notice-alt{box-shadow:none}.notice.notice-large{padding:10px 20px}.notice.notice-success{border-left-color:#46b450}.notice.notice-success.notice-alt{background-color:#ecf7ed}.notice.notice-warning{border-left-color:#ffb900}.notice.notice-warning.notice-alt{background-color:#fff8e5}.notice.notice-error{border-left-color:#dc3232}.notice.notice-error.notice-alt{background-color:#fbeaea}.notice.notice-info{border-left-color:#00a0d2}.notice.notice-info.notice-alt{background-color:#e5f5fa}.error-404 .page-content,.error-404 .page-title{text-align:center}.error-404 .page-content .logo-swing{height:10rem;margin:6rem auto;position:relative;text-align:center;width:10rem}.error-404 .page-content .logo-swing .wp-logo{left:0;max-width:none;position:absolute;top:0;width:10rem}@keyframes hinge{10%{width:180px;height:180px;transform:rotate(0deg)}15%{width:185px;height:185px;transform:rotate(0deg)}20%{width:180px;height:180px;transform:rotate(5deg)}40%{transform-origin:top left;animation-timing-function:ease-in-out}60%{transform:rotate(40deg);transform-origin:top left;animation-timing-function:ease-in-out}40%,80%{transform:rotate(60deg);transform-origin:top left;animation-timing-function:ease-in-out;opacity:1}to{transform:translate3d(0,700px,0);opacity:0}}.hinge{animation-duration:2s;animation-name:hinge}.comments-area{margin-top:5em}.comments-area>:last-child{margin-bottom:0}.comments-area .comment-list+.comment-respond{border-top:1px solid #eaeaea}.comments-area .comment-list+.comment-respond,.comments-area .comment-navigation+.comment-respond{padding-top:1.6em}.comments-area .comments-title{margin-bottom:1.3333em}.comments-area .comment-list{list-style:none;margin:0}.comments-area .comment-list .pingback,.comments-area .comment-list .trackback,.comments-area .comment-list article{border-top:1px solid #eaeaea;padding:1.6em 0}.comments-area .comment-list article:not(:only-child){padding-bottom:0}.comments-area .comment-list article+.comment-respond{padding-bottom:1.6em}.comments-area .comment-list .children{list-style:none;margin:0}.comments-area .comment-list .children>li{padding-left:.8em}.comments-area .comment-list .alt{background:none}.comments-area .comment-author{color:#999;margin-bottom:.4em}.comments-area .comment-author .avatar{float:left;height:24px;margin-right:.8em;width:24px}.comments-area .comment-metadata,.comments-area .pingback .edit-link{color:#999;line-height:1.5}.comments-area .comment-metadata a,.comments-area .pingback .edit-link a{color:#777}.comments-area .comment-metadata{font-size:.8rem;margin-bottom:1.6em}.comments-area .comment-metadata .edit-link,.comments-area .pingback .edit-link{margin-left:1em}.comments-area .pingback .edit-link:before{top:5px}.comments-area .comment-content ol,.comments-area .comment-content ul{margin:0 0 1.6em 1.3333em}.comments-area .comment-content>:last-child,.comments-area .comment-content li>ol,.comments-area .comment-content li>ul{margin-bottom:0}.comments-area .comment-content .reply{font-size:12px}.comments-area .comment-content .reply a{border:1px solid #eaeaea;color:#707070;display:inline-block;font-weight:700;line-height:1;margin-top:2em;padding:.4167em .8333em;text-transform:uppercase}.comments-area .comment-content .reply a:focus,.comments-area .comment-content .reply a:hover{border-color:#333;color:#333;outline:0}.comments-area .comment-reply-title a{font-weight:inherit}.comments-area .comment-form label{font-size:.8rem;font-weight:700;display:block;letter-spacing:.04em;line-height:1.5}.comments-area .comment-form input[type=email],.comments-area .comment-form input[type=text],.comments-area .comment-form input[type=url],.comments-area .comment-form textarea{width:100%}.comments-area .comment-awaiting-moderation,.comments-area .comment-notes,.comments-area .form-allowed-tags,.comments-area .logged-in-as{font-size:1rem;line-height:1.5;margin-bottom:2em}.comments-area .no-comments{border-top:1px solid #eaeaea;color:#999;font-weight:700;padding-top:1.6em}.comments-area .comment-navigation+.no-comments{border-top:0}.comments-area .form-allowed-tags code{font-family:Inconsolata,monospace}.comments-area .form-submit{margin-bottom:0}.comments-area .required{color:#c0392b}.entry-content{hyphens:auto;word-wrap:break-word}.entry-content>p:first-child{margin-top:0}.entry-content [class*=col-]~h1,.entry-content [class*=col-]~h2,.entry-content [class*=col-]~h3,.entry-content [class*=col-]~h4,.entry-content [class*=col-]~h5,.entry-content [class*=col-]~h6{clear:none}.entry-header{position:relative}.entry-header .sticky-post{color:#999;font-size:.8rem;font-style:italic;position:absolute;top:-.8rem}.entry-meta{color:#999;font-size:.8rem;margin-bottom:1rem}.entry-meta a{color:#777}.entry-meta>span{margin-right:1rem}.entry-meta>span :last-of-type{margin:0}.entry-meta .byline,.entry-meta .updated:not(.published),.sticky .entry-meta .posted-on{display:none}.group-blog .entry-meta .byline,.single .entry-meta .byline{display:inline}.entry-summary{hyphens:auto;word-wrap:break-word}body:not(.single):not(.search) .site-main .post{margin-bottom:3.0517578125rem;max-width:40em}.gallery{margin-bottom:1.5rem}.gallery .gallery-item{display:inline-block;margin:0;text-align:center;vertical-align:top;width:100%}.gallery.gallery-columns-2 .gallery-item{max-width:50%}.gallery.gallery-columns-3 .gallery-item{max-width:33.33%}.gallery.gallery-columns-4 .gallery-item{max-width:25%}.gallery.gallery-columns-5 .gallery-item{max-width:20%}.gallery.gallery-columns-6 .gallery-item{max-width:16.66%}.gallery.gallery-columns-7 .gallery-item{max-width:14.28%}.gallery.gallery-columns-8 .gallery-item{max-width:12.5%}.gallery.gallery-columns-9 .gallery-item{max-width:11.11%}.gallery .gallery-caption{display:block}.main-navigation{background:#0073aa;clear:both;left:0;position:absolute;top:60px;width:100%}.main-navigation ul{display:none;list-style:none;margin:0;padding-left:0}.main-navigation ul ul{box-shadow:0 3px 3px rgba(0,0,0,.2);float:left;left:-999em;position:absolute;top:1.5em;z-index:99999}.main-navigation ul ul ul{left:-999em;top:0}.main-navigation ul ul li.focus>ul,.main-navigation ul ul li:hover>ul{left:100%}.main-navigation ul ul a{width:200px}.main-navigation ul li.focus>ul,.main-navigation ul li:hover>ul{left:auto}.main-navigation li{border-top:1px solid hsla(0,0%,100%,.2);padding:1rem}.main-navigation a{color:hsla(0,0%,100%,.8);display:block;font-size:.8rem;text-decoration:none}.main-navigation a.active,.main-navigation a:hover{color:#fff}@media screen and (min-width:737px){.main-navigation a.active{border-bottom:1px solid}}.main-navigation.toggled{z-index:1}.main-navigation.toggled ul{display:block}.menu-toggle{background:transparent;border:none;color:#fff;height:3.5rem;position:absolute;right:1rem;top:-58px;width:3.5rem}.toggled .menu-toggle:before{content:""}@media screen and (min-width:737px){.menu-toggle{display:none}.main-navigation{float:right;position:static;width:auto}.main-navigation.toggled{padding:1px 0}.main-navigation ul{display:inline-block;font-size:0}.main-navigation ul li{border:0;display:inline-block;font-size:1rem;margin-right:1rem;padding:0}.main-navigation ul li:last-of-type{margin-right:0}}.comment-content .wp-smiley,.entry-content .wp-smiley,.page-content .wp-smiley{border:none;margin-bottom:0;margin-top:0;padding:0}embed,iframe,object{max-width:100%}body.page .gutters .col-12{width:100%}body.page .entry-header{background:#0073aa;padding:1rem 0}body.page .entry-header .entry-title{color:#fff;font-size:1.5625rem;font-weight:300;line-height:1;margin:0 auto;padding:0 1.5625rem}body.page .entry-header.home{padding:1.5625rem 1.143rem;text-align:center}@media screen and (min-width:737px){body.page .site-header+.site-main .entry-title{padding:initial}}body.page .entry-content,body.page .entry-footer{margin:0 auto;max-width:960px;padding:3.0517578125rem 1.5625rem}.post-navigation{margin:5em auto;padding:0}.post-navigation a{border-bottom:1px solid #eaeaea;color:#444;display:block;font-weight:600;padding:11px 0 12px;text-transform:none;width:100%}.post-navigation a:hover{color:#21759b}.post-navigation .nav-links{border-top:1px solid #eaeaea;hyphens:auto;word-wrap:break-word}.post-navigation .meta-nav{color:#777;display:block;font-size:13px;line-height:2;text-transform:uppercase}.post-navigation .nav-next{text-align:right}.pagination .nav-links{text-align:center}.pagination .nav-links .page-numbers{background-color:#f9f9f9;cursor:hand;display:inline-block;min-width:2em;padding:8px}.pagination .nav-links .page-numbers.dots,.pagination .nav-links .page-numbers.next,.pagination .nav-links .page-numbers.prev{background:none;font-size:.9em;width:auto}.pagination .nav-links .page-numbers.dots{cursor:inherit}@media screen and (max-width:737px){.pagination .nav-links .page-numbers.next,.pagination .nav-links .page-numbers.prev{font-size:0;min-width:0;padding:0}.pagination .nav-links .page-numbers.next:after,.pagination .nav-links .page-numbers.prev:before{background-color:#f9f9f9;display:inline-block;font-size:1rem;line-height:1.5;min-width:2em;padding:8px}.pagination .nav-links .page-numbers.prev:before{content:"‹"}.pagination .nav-links .page-numbers.next:after{content:"›"}}.pagination .nav-links span.page-numbers{background-color:#f7f7f7;font-weight:700}.search-form .search-field{line-height:normal;margin:0;padding:4px 5px;vertical-align:text-bottom}body.search .gutters .col-12{width:100%}body.search .site-main{margin:0 auto;max-width:960px;padding:0 1.5625rem 3.0517578125rem}.site-content{max-width:960px;padding:0 1.5625rem}@media screen and (min-width:737px){.site-content{padding:0 10px 3.0517578125rem}}@media screen and (max-width:737px){.site-content .site-main{float:none;margin:0;width:auto}}.home .site-content,.page .site-content,.site-content.page{margin:auto;max-width:none;padding:0}.site-content .page-title{font-size:1.25rem;font-weight:400}.site-content .no-results{margin:0 auto 3.0517578125rem;max-width:40em;padding:0 2rem}.site-description{color:hsla(0,0%,100%,.8);font-size:1.25rem;font-weight:300;margin:-.4rem auto 2rem;text-align:center}.site-header{background:#0073aa;padding:1rem 0;position:relative}.site-header .site-branding{margin:0 auto;max-width:960px;padding:0 1.5625rem}@media screen and (min-width:737px){.site-header .site-branding{padding:0 10px}}.site-header.home{padding:1.5625rem 1.143rem;text-align:center}.site-title{display:inline-block;font-size:1.5625rem;font-weight:300;line-height:1;margin:0 2rem 0 0;max-width:none}.site-title a{color:#fff;font-weight:300}.site-title a:active,.site-title a:focus,.site-title a:hover{text-decoration:none}.site-header.home .site-title{display:inherit;font-size:3.8146972656rem;margin:2rem 0 1rem}.widget-area{font-size:.8rem}@media screen and (min-width:480px) and (max-width:768px){.widget-area{display:flex}.widget-area .widget{width:48%}}#wporg-footer{background-color:#f7f7f7;border-top:1px solid #dfdfdf;padding:22px 14px 65px}#wporg-footer,#wporg-footer .wrapper{clear:both;margin:0 auto;overflow:auto}#wporg-footer .wrapper{max-width:930px}#wporg-footer ul{float:left;margin-bottom:20px;margin-left:24px;overflow:auto;padding-left:0;width:135px}@media screen and (min-width:960px){#wporg-footer ul:first-child{margin-left:0}}#wporg-footer ul li{color:#bbb;font-size:14px;list-style-type:none;margin-bottom:1px}#wporg-footer ul li a{text-decoration:none;text-decoration-skip-ink:none}#wporg-footer ul li a:hover{color:#0073aa;text-decoration:underline}#wporg-footer .cip{clear:both;color:#ccc;float:none;font-size:.8rem;letter-spacing:.3em;margin:35px auto 0;text-align:center;text-transform:uppercase}#wporg-footer .cip.cip-image{background:url(//s.w.org/style/images/codeispoetry.png?1=) 50% no-repeat;background-size:190px 15px;height:15px;text-indent:-9999px;width:190px}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:1.5dppx),only screen and (min-resolution:144dpi){#wporg-footer .cip.cip-image{background-image:url(//s.w.org/style/images/codeispoetry-2x.png?1=)}}@media screen and (min-width:561px) and (max-width:959px){#wporg-footer .wrapper{max-width:600px}#wporg-footer ul{margin-left:2%;width:32%}#wporg-footer ul:nth-child(3n+1){margin-left:0}#wporg-footer ul:nth-child(4n){clear:both}}@media screen and (max-width:560px){#wporg-footer .wrapper{max-width:360px}#wporg-footer ul{margin-left:4%;width:48%}#wporg-footer ul:nth-child(odd){margin-left:0;clear:both}}#wporg-header{background:#23282d;height:140px;position:relative;text-align:center;width:100%}#wporg-header .wrapper{margin:0 auto;max-width:960px}#wporg-header h1{display:inline-block;margin:auto;width:303px}#wporg-header h1 a{background:url(//s.w.org/style/images/wporg-logo.svg?3=) 0 no-repeat;background-size:290px 46px;display:block;height:88px;text-indent:-9999px}#wporg-header h2.rosetta{clear:none;color:#dfdfdf;font-family:Georgia,Times New Roman,serif;font-size:30px;margin:0 0 0 60px}#wporg-header h2.rosetta a{border-bottom:none;color:#dfdfdf;display:block;height:52px;line-height:22px;padding:0}#wporg-header h2.rosetta a:hover{text-decoration:none}#wporg-header #wporg-header-menu{background:#23282d;left:-75%;list-style:none;margin:0;max-width:75%;min-width:200px;position:absolute;text-align:left;top:100%;transition:left .3s;z-index:100000}#wporg-header #wporg-header-menu.toggled{left:0}#wporg-header ul li{list-style-type:none;position:relative}#wporg-header ul li a{color:#eee;display:block;font-family:Open Sans,Helvetica,Arial,Liberation Sans,sans-serif;font-size:13px;font-weight:600;height:34px;line-height:34px;margin:0 4px;padding:10px 30px;text-decoration:none}#wporg-header ul li a.subcurrent{font-weight:700}@media (max-width:768px){#wporg-header ul li a{height:auto}}#wporg-header ul li.current-menu-item a,#wporg-header ul li.current_page_parent a,#wporg-header ul li a.current,#wporg-header ul li a:hover{color:#00a0d2}#wporg-header ul li#download,#wporg-header ul li.download{float:right;height:34px;margin-right:14px;overflow:hidden;padding:0 0 34px}@media screen and (max-width:767px){#wporg-header ul li#download,#wporg-header ul li.download{display:block;float:none;margin:10px 20px 20px;padding-bottom:0;height:auto}#wporg-header ul li#download a,#wporg-header ul li.download a{padding:4px 10px;text-align:center}}#wporg-header ul li#download a,#wporg-header ul li.download a{margin:0;padding:0 16px}#wporg-header ul li#download a:hover,#wporg-header ul li.download a:hover{color:#eee}#wporg-header ul li#download.current,#wporg-header ul li#download.current-menu-item,#wporg-header ul li#download .uparrow,#wporg-header ul li.download.current,#wporg-header ul li.download.current-menu-item,#wporg-header ul li.download .uparrow{display:none}#wporg-header ul li .nav-submenu{clip:rect(1px,1px,1px,1px);height:1px;left:-2px;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;z-index:99999}#wporg-header ul li .nav-submenu li a{display:inline-block;height:24px;line-height:24px;margin:0;white-space:nowrap}@media screen and (min-width:768px){#wporg-header #head-search{float:right;margin-right:14px;padding-top:30px}}#wporg-header #head-search form{border-bottom:1px solid #3f3f3f;display:inline-block;margin-left:60px;width:288px}#wporg-header #head-search form input.text{background:#191e23;border:0;border-radius:0;box-sizing:content-box;color:#b4b9be;float:left;font-family:Open Sans,sans-serif;font-size:12px;height:24px;margin:0;outline:none;padding:3px;vertical-align:top;width:256px}#wporg-header #head-search form input.text::-moz-placeholder{color:#eee}@media screen and (max-width:480px){#wporg-header #head-search form input.text{width:216px}}#wporg-header #head-search form .button{background:#191e23 url(//s.w.org/wp-includes/images/admin-bar-sprite.png?d=20120831) no-repeat 2px 5px;border:none;border-radius:0;box-shadow:none;float:left;height:30px;margin:0;padding:0;text-shadow:none!important;width:26px}@media screen and (max-width:480px){#wporg-header #head-search form{width:248px}}@media screen and (min-width:480px){#wporg-header #head-search form{margin-left:0}}@media screen and (min-width:768px){#wporg-header{height:120px;text-align:inherit}#wporg-header h1{float:left;padding-left:10px}#wporg-header h2.rosetta{float:left;margin-left:0;padding:36px 27px 0}#wporg-header #headline h2{text-rendering:optimizeLegibility}#wporg-header #wporg-header-menu{float:left;height:46px;list-style:none;margin:-15px 0 0;max-width:inherit;min-width:0;padding:0;position:static;width:100%}#wporg-header ul li{float:left;position:relative}#wporg-header ul li a{height:46px;padding:0 6px}#wporg-header ul li a.current~.uparrow{border-bottom:9px solid #f7f7f7;border-left:9px solid transparent;border-right:9px solid transparent;height:0;margin:-8px auto 0;width:0}#wporg-header ul li.current-menu-item:after,#wporg-header ul li.current_page_parent:after{border-bottom:9px solid #f7f7f7;border-left:9px solid transparent;border-right:9px solid transparent;content:"";height:0;left:50%;margin:-8px 0 0 -9px;position:absolute;width:0}#wporg-header ul li .nav-submenu:hover~.uparrow,#wporg-header ul li:hover .nav-submenu~.uparrow{border-bottom:9px solid #32373c;border-left:9px solid transparent;border-right:9px solid transparent;height:0;margin:-10px auto 0;width:0}#wporg-header ul li .nav-submenu{background:#32373c;border:1px solid #32373c;border-top:0;margin-top:-1px;min-width:0}#wporg-header ul li .nav-submenu li{float:none}#wporg-header ul li .nav-submenu li a{height:34px;line-height:34px}#wporg-header .nav-menu .focus>ul,#wporg-header .nav-menu ul li:hover>ul,#wporg-header ul.nav-menu .focus>ul,#wporg-header ul.nav-menu li:hover>ul{clip:inherit;height:inherit;overflow:inherit;width:inherit}#wporg-header ul li.current-menu-item:after,#wporg-header ul li.current_page_parent:after,#wporg-header ul li a.current~.uparrow{border-bottom-color:#0073aa}}.page-download #wporg-header #download,.page-parent-download #wporg-header #download{display:none}#mobile-menu-button{background:none;border:none;box-shadow:none;display:block;float:left;font-family:dashicons;font-size:16px;font-style:normal;font-weight:400;left:10px;line-height:1;padding:1px;position:absolute;text-align:center;text-decoration:inherit;text-shadow:none;top:75px;transition:color .1s ease-in;vertical-align:top;-webkit-font-smoothing:antialiased}#mobile-menu-button:before{border:none;box-sizing:border-box;color:#888;content:"";display:inline-block;float:left;font:normal 50px/1 Dashicons;margin:0;outline:none;padding:3px;text-decoration:none;vertical-align:middle;-webkit-font-smoothing:antialiased}@media screen and (min-width:768px){#mobile-menu-button{display:none}}#download-mobile{background:#f7f7f7;border-bottom:1px solid #ddd}#download-mobile .wrapper{padding:20px 0;text-align:center}#download-mobile span.download-ready{font-size:1.6em;margin:0 .25em}#download-mobile a.download-button{font-size:1.6em;height:inherit;margin:10px .25em;padding:10px 15px}.category-context-bar{margin:0 1.5rem;background:#edeff0;border-radius:2px;font-size:.8125rem;overflow:auto;transition:all .3s ease-out}@media (prefers-reduced-motion){.category-context-bar{transition:none}}.category-context-bar>div{display:flex;align-items:center;justify-content:space-between}@media only screen and (min-width:782px){.category-context-bar{margin:0 1.5rem}}@media only screen and (min-width:960px){.category-context-bar{margin:0 auto;max-width:960px}}.category-context-bar ul{margin:0;padding:0;display:flex;justify-content:space-between}.category-context-bar ul li{list-style:none;font-size:.8125rem}.category-context-bar ul li a{display:block;padding:1.125rem .75rem;text-decoration:none}.category-context-bar ul li:last-child a{padding-right:1.5rem}.category-context-bar__copy{display:flex;align-items:center;margin:0;padding:1.125rem 1.5rem;font-size:.8125rem;font-weight:400}.category-context-bar__title{margin:0;padding-right:1.5rem;color:#555d66;font-size:.75rem;font-weight:400;text-transform:uppercase}.category-context-bar__links{display:flex;align-items:center}@media only screen and (max-width:782px){.category-context-bar__links{display:none}}.category-context-bar__spinner{display:flex;width:28px;margin:0;transition:transform .1s linear,width .15s ease-out,opacity 50ms linear 50ms;transform:scale(1)}@media (prefers-reduced-motion){.category-context-bar__spinner{transition:none}}.category-context-bar__spinner .components-spinner{margin:0}.category-context-bar__spinner--is-hidden{overflow:hidden;width:0;opacity:0;transform:scale(0)}.category-menu{margin:0;padding:0;position:relative}.category-menu li{display:inline-block;margin:0;list-style:none}.category-menu a{display:block;padding:.5rem .75rem;color:#40464d;font-size:.875rem;text-decoration:none}.category-menu a:active,.category-menu a:focus,.category-menu a:hover{color:#000}li .category-menu--is-active{color:#fff;background:#0073aa;border-radius:2px}li .category-menu--is-active:focus,li .category-menu--is-active:hover{color:#fff}.category-menu__mobile{padding:0!important;border-top:none!important}.category-menu__mobile ul{margin:0;padding:0;background:#23282d}.category-menu__mobile li{list-style:none;border-top:1px solid #32373c}.category-menu__mobile li a{display:block;padding:1rem 1.5rem;font-size:.875rem;text-decoration:none;color:#ccd0d4}.category-menu__mobile>.components-panel__body-title{margin:0!important}.category-menu__mobile>.components-panel__body-title>button{padding:1.5rem}.category-menu--is-loading{height:24px;position:relative}.category-menu--is-loading:after{content:"";position:absolute;background:#f3f4f5;border-radius:4px;width:80%;height:24px;left:0;top:calc(50% - 12px);transition:none}.category-search{display:flex;align-items:center;background:#fff;border:1px solid #6c7782;border-radius:2px}.category-search input[type=search]{flex-grow:1;margin:0;padding:.25rem .5rem;border:none;box-shadow:none;font-size:.8125rem}.category-search input[type=search]:focus{outline:1px auto #0073aa}.category-search__button{display:flex;background:transparent;border:none;color:#6c7782}.category-search__button:active{background:#d7dade}.category-search__button:focus{outline:1px auto #0073aa}.category-search--is-loading{display:block;height:24px;min-width:100%;background:#f3f4f5;border-radius:4px}@media only screen and (min-width:480px){.category-search--is-loading{width:224px!important;min-width:auto!important}}.pattern__copy-button{transition:all 75ms ease-in-out}.pattern__copy-button.is-small{font-size:.75rem;padding:.75rem;height:auto}.pattern__favorite-button{position:relative;font-size:.875rem;height:2.25rem;width:2.25rem;border-radius:2px;color:#606a74}.pattern__favorite-button svg{position:absolute;top:calc(50% - .75rem);left:calc(50% - .75rem);height:1.5rem;width:1.5rem;transition:all .15s ease-out}.pattern__favorite-button svg path{fill:#6c7782}.pattern__favorite-button .pattern__favorite-filled{opacity:0}.pattern__favorite-button:hover{color:#555d66;background:transparent}.pattern__favorite-button:hover svg path{fill:#555d66}.pattern__favorite-button:active{background:transparent;box-shadow:none;transform:none}.pattern__favorite-button.is-favorited{color:#555d66}.pattern__favorite-button.is-favorited svg path{fill:#d94f4f}.pattern__favorite-button.is-favorited .pattern__favorite-outline{opacity:0;transform:scale(2.8)}.pattern__favorite-button.is-favorited .pattern__favorite-filled{opacity:1}.pattern__favorite-button.is-favorited:hover .pattern__favorite-filled{animation:HeartBeat .9s infinite}@media (prefers-reduced-motion){.pattern__favorite-button.is-favorited:hover .pattern__favorite-filled{animation:none}}.pattern__favorite-button.has-label{padding:12px 18px 12px 38px;height:auto;width:auto}.pattern__favorite-button.has-label svg{top:calc(50% - 12px);left:9px}.pattern__favorite-button[disabled]{background:transparent!important;text-shadow:none!important;color:#606a74!important}@keyframes HeartBeat{0%{transform:scale(1)}25%{transform:scale(1.2)}40%{transform:scale(1)}60%{transform:scale(1.2)}to{transform:scale(1)}}.main-navigation{float:none;position:static;width:auto}.main-navigation a{font-size:.8125rem}.main-navigation.toggled div.menu{position:absolute;top:57px;right:0;width:100%;background:#0073aa}.menu-toggle{position:static;height:auto;width:auto;font-size:1.5625rem;overflow:hidden;-webkit-appearance:none}body.page .entry-header{background:none;padding:0}body.page .entry-header .entry-title{color:inherit;margin:2rem auto 1rem;max-width:960px}@media screen and (min-width:737px){body.page .entry-header .entry-title{padding:0 10px}}.pattern-grid-menu{margin:0 auto;max-width:960px;display:flex;flex-direction:column;justify-content:space-between;align-items:center}.pattern-grid-menu>:first-child,.pattern-grid-menu>:last-child{width:100%}.pattern-grid-menu>:last-child{margin:1.5rem;width:calc(100% - 3rem)}@media only screen and (min-width:782px){.pattern-grid-menu{margin:1.5rem;flex-direction:row}.pattern-grid-menu>:last-child{margin:0;width:auto}}@media only screen and (min-width:960px){.pattern-grid-menu{margin:1.5rem auto}}.pattern-grid{max-width:960px;margin:1.5rem}@media screen and (min-width:600px){.pattern-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem}.pattern-grid>*{align-self:baseline}}@media screen and (min-width:960px){.pattern-grid{margin-left:auto;margin-right:auto}}.pattern-grid__pattern{position:relative;margin:0 0 1.5rem;border:1px solid #d7dade;border-radius:2px;transition:all 75ms ease-in-out}@media screen and (min-width:600px){.pattern-grid__pattern{display:inline-block;margin:0}}.pattern-grid__pattern .pattern-grid__preview{overflow:hidden}.pattern-grid__pattern .pattern-grid__actions{position:absolute;right:0;bottom:0;left:0;display:flex;align-items:center;padding:.375rem;background:hsla(0,0%,100%,.8);backdrop-filter:blur(3px);opacity:0;transform:translateY(6px);transition:all 75ms ease-in-out}.pattern-grid__pattern .pattern-grid__actions .pattern-grid__title{flex-grow:1;margin:0;padding:0 .375rem 0 .75rem;font-size:.75rem;pointer-events:none}.pattern-grid__pattern .pattern-grid__actions .pattern__copy-button,.pattern-grid__pattern .pattern-grid__actions .pattern__favorite-button{flex-shrink:0}.pattern-grid__pattern .pattern-grid__actions .button+.button{margin-left:.375rem}.pattern-grid__pattern:focus-within .pattern-grid__actions,.pattern-grid__pattern:hover .pattern-grid__actions{opacity:1;transform:translateY(0)}.pattern-preview__container{padding:2rem 0 0;background:#f3f4f5}.pattern-preview__viewport{position:relative;margin:0 auto;padding:0 20px;max-width:100vw;min-width:320px}.pattern-preview__viewport .pattern-preview__viewport-iframe{background:#fff;border:1px solid #e8eaeb;vertical-align:middle;max-width:100vw}.pattern-preview__viewport:focus-within .pattern-preview__resize-help{clip:auto;clip-path:none;height:auto;margin:initial;overflow:initial;width:auto;bottom:-1rem;left:20px;right:20px;padding:8px 16px;background:#fff;border-radius:2px;border:1px solid #d7dade;text-align:center}.pattern-preview__drag-handle{position:absolute;top:0;bottom:0;width:20px}.pattern-preview__drag-handle.is-left{left:0}.pattern-preview__drag-handle.is-right{right:0}.pattern-preview__drag-handle-button{position:absolute;top:calc(50% - 50px);left:6px;padding:0;width:8px;height:100px;appearance:none;cursor:grab;outline:none;background:#7e8993;border-radius:99999px;border:none}.pattern-preview__drag-handle-button:hover{background:#6c7782}.pattern-preview__drag-handle-button:active{cursor:grabbing;background:#606a74}.pattern-preview__drag-handle-button:focus{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.pattern-report-button{color:#23282d!important}.pattern-report-button__copy{margin:0;display:flex;justify-content:center;align-items:center}.pattern-report-button__copy svg{margin-right:.375rem}.pattern-report-modal{max-width:400px;width:100%}@media screen and (min-width:600px){.pattern-report-modal{width:400px}}.pattern-report-modal form>:first-child{padding-bottom:1.5rem}.pattern-report-modal__has-fixed-height{min-height:400px}.pattern-report-modal__copy{text-align:center;line-height:1.5}.pattern-report-modal__actions{margin-top:1.5rem;display:grid;grid-template-columns:48% 48%;column-gap:4%}.pattern-report-modal__actions button{justify-content:center}.pattern-report-modal__radio .components-radio-control__option{margin-top:.75rem}body.single-wporg-pattern{box-sizing:border-box;font-size:14px;font-weight:400;line-height:1.2}body.single-wporg-pattern .site-content{margin:auto;max-width:none;padding:0}body.single-wporg-pattern .entry-header{max-width:960px;padding:1.5rem;margin-left:auto;margin-right:auto}@media only screen and (min-width:960px){body.single-wporg-pattern .entry-header{padding:1.5rem 0}}body.single-wporg-pattern .entry-header .entry-title{margin-top:0;line-height:1.2}body.single-wporg-pattern .pattern-actions{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap;gap:.5em 2em}body.single-wporg-pattern .pattern-actions button{margin:0}@media (max-width:480px){body.single-wporg-pattern .pattern-actions{justify-content:center}}body.single-wporg-pattern .pattern-actions__notice{margin:1.5rem 0 0;height:auto;flex-basis:100%}body.single-wporg-pattern .pattern-actions__notice>*{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;margin:0}body.single-wporg-pattern .pattern-actions__notice>* button{margin-top:.75rem}@media only screen and (min-width:600px){body.single-wporg-pattern .pattern-actions__notice>*{align-items:center;flex-direction:row}body.single-wporg-pattern .pattern-actions__notice>* button{margin-top:0}}body.single-wporg-pattern .pattern-actions__guide{max-width:384px;height:auto;max-height:none}body.single-wporg-pattern .pattern-actions__guide-content{padding:1.5rem;line-height:1.5}body.single-wporg-pattern .pattern-actions__guide-title{margin:0}body.single-wporg-pattern .pattern-actions__guide-shortcut{background:#edeff0;box-shadow:0 0 0 1px #ccd0d4;padding:1px;font-weight:600;min-width:20px;display:inline-block;text-align:center;border-radius:2px}body.single-wporg-pattern .entry-content{max-width:960px;margin-left:auto;margin-right:auto}body.single-wporg-pattern .pattern__meta{padding:2rem 0;background:#f3f4f5}body.single-wporg-pattern .pattern__meta>div{max-width:960px;margin-left:auto;margin-right:auto;display:flex;justify-content:space-between}body.single-wporg-pattern .pattern__meta .pattern-preview__report{text-align:right}.site-header:not(.home) .search-form{display:flex;align-items:center}.site-header:not(.home) .search-form>input{flex:1;border:0;border-radius:2px 0 0 2px;display:inline-block;font-size:12px;padding:5px 10px;position:relative;width:auto;height:100%}.site-header:not(.home) .search-form button{margin:0;border-radius:0 2px 2px 0;padding:3px 12px;height:unset}.search-form--is-inline .search-form{display:flex;justify-content:space-between;background:#fff}.search-form--is-inline .search-form>label{flex:1}.search-form--is-inline .search-form input{padding:.5rem;background:transparent;border:none;box-shadow:none;width:100%;font-size:14px}@media only screen and (min-width:768px){.search-form--is-inline .search-form input{font-size:16px}}.search-form--is-inline .search-form button{background:transparent;margin-bottom:0;border:0;box-shadow:none;height:inherit;text-shadow:none;color:#32373c}.search-form--is-inline .search-form button:focus{-webkit-box-shadow:0 0 2px 1px #0073aa;box-shadow:0 0 2px 1px #0073aa}.search-form--is-centered .search-form{margin:0 auto}.search-form--is-constrained .search-form{max-width:36rem}.search-form--is-muted .search-form{border-color:#d7dade!important}.search-form--is-muted .search-form button,.search-form--is-muted .search-form input{background:#f8f9f9;color:#7e8993}.search-form--has-medium-text .search-form input{font-size:14px}.search-form--has-border .search-form{border:1px solid #7e8993}.section-heading_link,.section-heading_title{margin-bottom:0}.section-heading_title{font-weight:300}.section-heading_title .archive-title-prefix{display:block;font-size:1rem}.section-heading_link{text-decoration:underline;font-weight:600;margin-top:1.5rem!important}@media only screen and (min-width:768px){.section-heading_link{margin-top:0!important}}.section-heading_description{margin:1rem 0 0}.section-heading_description :last-child{margin-bottom:0}.section-heading--with-space{padding-bottom:16px}.site-content{margin:0 auto;max-width:none;padding:0}body.home .site-header{padding:3.75rem 1rem;text-align:left}body.home .site-branding{display:grid;grid-template-rows:auto 1fr;grid-template-columns:1fr 22rem}body.home .site-branding>*{align-self:center}@media screen and (max-width:736px){body.home .site-branding{display:block}}body.home .site-title.site-title{grid-column-start:1;grid-row-start:1;margin-top:0;text-align:left;font-size:3rem;line-height:1.25}body.home .site-description{grid-column-start:1;grid-row-start:2;margin:0;font-size:1.25rem;line-height:1.6;text-align:left;color:#fff}body.home .site-callout{grid-column-start:2;grid-row-start:1;grid-row-end:span 2;margin-left:4rem;padding:1.125rem 1.5rem 1.5rem;font-size:.875rem;line-height:1.6;background:#fff;box-shadow:.75rem .75rem 0 rgba(0,0,0,.15)}body.home .site-callout h2{margin-top:0;font-size:1.125rem;line-height:1.25;font-weight:600}body.home .site-callout p:last-child{margin-bottom:0}@media screen and (max-width:736px){body.home .site-callout{margin:2rem auto 0;max-width:24rem}}body:not(.home) .site-branding{display:flex;align-items:center;justify-content:space-between;font-size:.8125rem;color:#fff}body:not(.home) .site-branding a{color:#fff}body:not(.home) .site-branding .sep{margin-left:.5rem;margin-right:.5rem}body:not(.home) .site-branding .is-current-page{font-weight:600}.site-title a{text-decoration:none}.site-title a:active,.site-title a:focus,.site-title a:hover{color:#fff}.has-wporg-blue-color{color:#1e8cbe}.has-wporg-blue-background-color{background-color:#1e8cbe}.has-wporg-purple-color{color:#826eb4}.has-wporg-purple-background-color{background-color:#826eb4}.has-wporg-white-color{color:#fff}.has-wporg-white-background-color{background-color:#fff}.home-page .shapes{position:relative;margin:0 auto}.home-page .shapes .parallelogram p:before{font-size:64px;height:64px;left:-16px;position:relative}.home-page .shapes .parallelogram{color:#fff;display:block;margin:0 auto;opacity:.9;padding:60px 40px;text-align:center;text-decoration:none}.home-page .shapes strong{display:block;font-size:28px;font-weight:300;padding-bottom:15px;padding-top:15px}.home-page .shapes p{color:#fff;font-size:16px;font-weight:300;margin:0}.home-page .shapes u{display:block;font-size:18px;padding-top:15px}@media only screen and (min-width:768px){.home-page .shapes{height:400px}.home-page .shapes .parallelogram{width:50%;position:absolute;padding:50px 90px}}@media only screen and (min-width:960px){.home-page .shapes .parallelogram{-webkit-transform:skew(-15deg);-ms-transform:skew(-15deg);transform:skew(-15deg)}.home-page .shapes .parallelogram:before,.home-page .shapes p{-webkit-transform:skew(15deg);-ms-transform:skew(15deg);transform:skew(15deg)}}@media only screen and (min-width:1200px){.home-page .shapes{margin:0 -60px}}.terms{font-style:italic;font-size:14px}
     1@charset "UTF-8";[class*=col-]{margin:inherit}.row{display:flex;flex-direction:row;flex-wrap:wrap}@media (max-width:768px){.row{flex-direction:column;flex-wrap:nowrap}}.row.gutters>.row{margin-left:-2%}@media (max-width:768px){.row.gutters>.row{margin-left:0}}.row.gutters>.row>[class*=col-]{margin-left:2%}@media (max-width:768px){.row.gutters>.row>[class*=col-]{margin-left:0}}.row.around{justify-content:space-around}.row.between{justify-content:space-between}.row.auto .col{flex-grow:1}.col-1{width:8.3333333333%}.offset-1{margin-left:8.3333333333%}.col-2{width:16.6666666667%}.offset-2{margin-left:16.6666666667%}.col-3{width:25%}.offset-3{margin-left:25%}.col-4{width:33.3333333333%}.offset-4{margin-left:33.3333333333%}.col-5{width:41.6666666667%}.offset-5{margin-left:41.6666666667%}.col-6{width:50%}.offset-6{margin-left:50%}.col-7{width:58.3333333333%}.offset-7{margin-left:58.3333333333%}.col-8{width:66.6666666667%}.offset-8{margin-left:66.6666666667%}.col-9{width:75%}.offset-9{margin-left:75%}.col-10{width:83.3333333333%}.offset-10{margin-left:83.3333333333%}.col-11{width:91.6666666667%}.offset-11{margin-left:91.6666666667%}.col-12{width:100%}.offset-12{margin-left:100%}.gutters>.col-1{width:6.33333%}.gutters>.col-1:nth-child(n+13){margin-top:2%}.gutters>.offset-1{margin-left:10.33333%!important}.gutters>.col-2{width:14.66667%}.gutters>.col-2:nth-child(n+7){margin-top:2%}.gutters>.offset-2{margin-left:18.66667%!important}.gutters>.col-3{width:23%}.gutters>.col-3:nth-child(n+5){margin-top:2%}.gutters>.offset-3{margin-left:27%!important}.gutters>.col-4{width:31.33333%}.gutters>.col-4:nth-child(n+4){margin-top:2%}.gutters>.offset-4{margin-left:35.33333%!important}.gutters>.col-5{width:39.66667%}.gutters>.offset-5{margin-left:43.66667%!important}.gutters>.col-6{width:48%}.gutters>.col-6:nth-child(n+3){margin-top:2%}.gutters>.offset-6{margin-left:52%!important}.gutters>.col-7{width:56.33333%}.gutters>.offset-7{margin-left:60.33333%!important}.gutters>.col-8{width:64.66667%}.gutters>.offset-8{margin-left:68.66667%!important}.gutters>.col-9{width:73%}.gutters>.offset-9{margin-left:77%!important}.gutters>.col-10{width:81.33333%}.gutters>.offset-10{margin-left:85.33333%!important}.gutters>.col-11{width:89.66667%}.gutters>.offset-11{margin-left:93.66667%!important}.gutters>.col-12{width:98%}.gutters>.offset-12{margin-left:102%!important}@media (max-width:768px){[class*=" offset-"],[class^=offset-]{margin-left:0}}.first{order:-1}.last{order:1}@media (max-width:768px){.row [class*=col-]{margin-left:0;width:100%}.row.gutters [class*=col-]{margin-bottom:16px}.first-sm{order:-1}.last-sm{order:1}}.gutters .column.push-left,.push-left{margin-right:auto}.gutters .column.push-right,.push-right{margin-left:auto}.gutters .column.push-center,.push-center{margin-left:auto;margin-right:auto}.gutters .column.push-middle,.push-middle{margin-top:auto;margin-bottom:auto}.push-bottom{margin-top:auto}@media (max-width:768px){.gutters .column.push-left-sm,.push-left-sm{margin-left:0}.gutters .column.push-center-sm,.push-center-sm{margin-left:auto;margin-right:auto}.push-top-sm{margin-top:0}}.align-middle{align-items:center}.align-right{justify-content:flex-end}.align-center{justify-content:center}@media (max-width:768px){.align-left-sm{justify-content:flex-start}}.float-right{float:right}.float-left{float:left}@media (max-width:768px){.float-left,.float-right{float:none}}.fixed{position:fixed;top:0;left:0;z-index:100;width:100%}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}optgroup{font-weight:700}table{border-spacing:0}td,th{padding:0}p{margin:1rem 0}cite,dfn,em,i{font-style:italic}blockquote{margin:0 1.5rem}address{margin:0 0 1.5rem}pre{background:#eee;font-family:Courier\ 10 Pitch,Courier,monospace;font-size:.9375rem;line-height:1.6;margin-bottom:1.6rem;max-width:100%;overflow:auto;padding:1.6rem}code,kbd,tt,var{font-family:Monaco,Consolas,Andale Mono,DejaVu Sans Mono,monospace;font-size:.9375rem}abbr,acronym{border-bottom:1px dotted #666;cursor:help}ins,mark{background:#fff9c0;text-decoration:none}big{font-size:125%}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{background:#fff}blockquote,q{quotes:"" ""}blockquote:after,blockquote:before,q:after,q:before{content:""}blockquote{border-left:2px solid #767676;color:#767676;margin:1rem 0;padding-left:.8rem}blockquote cite{font-size:.8rem}figure{margin:0}hr{background-color:#eee;border:0;height:2px;margin:5rem auto}img{height:auto;max-width:100%}h1,h2,h3,h4,h5,h6{font-family:Open Sans,sans-serif;clear:both;line-height:1.5;margin:2rem 0 1rem}.h1,h1{font-size:2.44140625rem}.h1,.h2,h1,h2{font-weight:300}.h2,h2{font-size:1.953125rem}.h3,h3{font-size:1.5625rem;font-weight:400}.h4,h4{font-size:1.25rem;color:#32373c;font-weight:600;padding:0}.h5,h5{font-size:1rem;letter-spacing:.01rem}.h5,.h6,h5,h6{font-weight:600;text-transform:uppercase}.h6,h6{font-size:.8rem;letter-spacing:.8px}a{color:#0073aa;text-decoration:none}a:active,a:focus,a:hover{text-decoration:underline}a:focus{outline:thin dotted}a:active,a:hover{outline:0}li>a,p a{text-decoration:underline}li>a:hover,p a:hover{color:#d54e21}ol,ul{margin:0 0 1.5em 1.5em;padding:0}ul{list-style:square}ol{list-style:decimal}ol.unmarked-list,ul.unmarked-list{list-style:none;padding-left:0}li>ol,li>ul{margin-bottom:0}dt{font-weight:700}dd{margin:0 1.5em 1.5em}table{border:1px solid #eee;border-collapse:collapse;font-size:.8rem;margin:0 0 1rem;padding:0;width:100%}table thead{background:#32373c;color:#fff}table td,table th{border:1px solid #eee;font-weight:400;margin:0;padding:.4rem;text-align:left;vertical-align:top}table tbody tr:nth-child(2n){background:#f7f7f7}html{font-size:100%}body,button,input,select,textarea{color:#32373c;font-family:Open Sans,sans-serif;font-size:100%;line-height:1.5}@media screen and (min-width:737px){html{font-size:1.125rem}}.custom-select{display:inline-block;box-sizing:border-box;padding:.5rem 2rem .5rem .8rem;width:auto;font-size:1em;line-height:1.3;border:1px solid #6c7782;box-shadow:none;border-radius:.5em;-moz-appearance:none;-webkit-appearance:none;appearance:none;background-color:transparent;background-image:url('data:image/svg+xml;charset=US-ASCII,%3Csvg width="14" height="8" xmlns="http://www.w3.org/2000/svg"%3E%3Cpath d="M2 0L7 5L12 0L14 1L7 8L0 1L2 0Z" fill="%23555D66"/%3E%3C/svg%3E%0A');background-repeat:no-repeat;background-position:right .7em top 50%;background-size:.65em auto}.custom-select::-ms-expand{display:none}.custom-select:focus{box-shadow:0 0 1px 3px rgba(59,153,252,.7);box-shadow:0 0 0 3px -moz-mac-focusring;color:#222;outline:none}.custom-select option{font-weight:400}html{font-size:1rem}@media screen and (min-width:737px){html{font-size:1rem}}.screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute!important;width:1px}.screen-reader-text:focus{background-color:#f1f1f1;border-radius:3px;box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto!important;color:#21759b;display:block;font-size:.875rem;font-weight:700;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}.site-content[tabindex="-1"]:focus{outline:0}.no-js .hide-if-no-js{display:none}.alignleft{display:inline;float:left;margin-right:1.5em}.alignright{display:inline;float:right;margin-left:1.5em}.aligncenter{clear:both;display:block;margin-left:auto;margin-right:auto}@media screen and (max-width:480px){.alignleft,.alignright{display:block;float:none;margin-left:auto;margin-right:auto}}.button,.button-primary,.button-secondary,.plugin-upload-form .button-primary{border:1px solid;border-radius:3px;box-sizing:border-box;cursor:pointer;display:inline-block;font-size:.8rem;height:1.5625rem;line-height:1;margin:0;padding:0 .8rem;text-decoration:none;white-space:nowrap;-webkit-appearance:none}button::-moz-focus-inner,input[type=button]::-moz-focus-inner,input[type=reset]::-moz-focus-inner,input[type=submit]::-moz-focus-inner{border:0;padding:0}.button-group.button-xl .button,.button.button-xl{font-size:1rem;height:2.44140625rem;line-height:1;padding:0 1.5rem}.button-group.button-large .button,.button.button-large{height:1.953125rem;line-height:1;padding:0 1rem}.button-group.button-small .button,.button.button-small{font-size:.64rem;height:1.25rem;line-height:1;padding:0 .5rem}a.button,a.button-primary,a.button-secondary{line-height:1.5625rem}.button-group.button-large a.button,a.button.button-large{line-height:1.953125rem}.button-group.button-xl a.button,a.button.button-xl{line-height:2.44140625rem}.button-group.button-small a.button,a.button.button-small{line-height:1.25rem}.button:active,.button:focus{outline:none}.button.hidden{display:none}input[type=reset],input[type=reset]:active,input[type=reset]:focus,input[type=reset]:hover{background:none;border:none;box-shadow:none;padding:0 2px 1px;width:auto}.button,.button-secondary,.button:visited{background:#f7f7f7;border-color:#ccc;box-shadow:0 1px 0 #ccc;color:#555;vertical-align:top}p .button{vertical-align:baseline}.button-secondary:focus,.button-secondary:hover,.button.focus,.button.hover,.button:focus,.button:hover{background:#fafafa;border-color:#999;color:#23282d}.button-link:focus,.button-secondary:focus,.button.focus,.button:focus{border-color:#5b9dd9;box-shadow:0 0 3px rgba(0,115,170,.8)}.button-secondary:active,.button.active,.button.active:hover,.button:active{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.button.active:focus{border-color:#5b9dd9;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(0,115,170,.8)}.button-disabled,.button-secondary.disabled,.button-secondary:disabled,.button-secondary[disabled],.button.disabled,.button:disabled,.button[disabled]{background:#f7f7f7!important;border-color:#ddd!important;box-shadow:none!important;color:#a0a5aa!important;cursor:default;text-shadow:0 1px 0 #fff!important;transform:none!important}.button-link,input[type=submit].button-link{background:none;border:0;border-radius:0;box-shadow:none;cursor:pointer;margin:0;outline:none;padding:0}.button-link:focus{outline:1px solid #5b9dd9}.button-primary,.download-button,.plugin-upload-form .button-primary{text-decoration:none;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.button-primary,.button-primary:visited,.download-button,.download-button:visited,.plugin-upload-form .button-primary,.plugin-upload-form .button-primary:visited{background:#0085ba;border-color:#0073aa #006799 #006799;box-shadow:0 1px 0 #006799;color:#fff}.button-primary.focus,.button-primary.hover,.button-primary:focus,.button-primary:hover,.download-button.focus,.download-button.hover,.download-button:focus,.download-button:hover,.plugin-upload-form .button-primary.focus,.plugin-upload-form .button-primary.hover,.plugin-upload-form .button-primary:focus,.plugin-upload-form .button-primary:hover{background:#008ec2;border-color:#006799;box-shadow:0 1px 0 #006799;color:#fff}.button-primary.focus,.button-primary:focus,.download-button.focus,.download-button:focus,.plugin-upload-form .button-primary.focus,.plugin-upload-form .button-primary:focus{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.button-primary.active,.button-primary.active:focus,.button-primary.active:hover,.button-primary:active,.download-button.active,.download-button.active:focus,.download-button.active:hover,.download-button:active,.plugin-upload-form .button-primary.active,.plugin-upload-form .button-primary.active:focus,.plugin-upload-form .button-primary.active:hover,.plugin-upload-form .button-primary:active{background:#0073aa;border-color:#006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.button-primary.disabled,.button-primary:disabled,.button-primary[disabled],.download-button.disabled,.download-button:disabled,.download-button[disabled],.plugin-upload-form .button-primary.disabled,.plugin-upload-form .button-primary:disabled,.plugin-upload-form .button-primary[disabled]{background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;color:#66c6e4!important;cursor:default;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}.button-primary.button.button-hero,.download-button.button.button-hero,.plugin-upload-form .button-primary.button.button-hero{box-shadow:0 2px 0 #006799}.button-primary.button.button-hero.active,.button-primary.button.button-hero.active:focus,.button-primary.button.button-hero.active:hover,.button-primary.button.button-hero:active,.download-button.button.button-hero.active,.download-button.button.button-hero.active:focus,.download-button.button.button-hero.active:hover,.download-button.button.button-hero:active,.plugin-upload-form .button-primary.button.button-hero.active,.plugin-upload-form .button-primary.button.button-hero.active:focus,.plugin-upload-form .button-primary.button.button-hero.active:hover,.plugin-upload-form .button-primary.button.button-hero:active{box-shadow:inset 0 3px 0 #006799}.button-primary-disabled{background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;color:#66c6e4!important;cursor:default;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}.button-group{display:inline-block;font-size:0;position:relative;vertical-align:middle;white-space:nowrap}.button-group>.button{border-radius:0;display:inline-block;margin-right:-1px;z-index:10}.button-group>.button-primary{z-index:100}.button-group>.button:hover{z-index:20}.button-group>.button:first-child{border-radius:3px 0 0 3px}.button-group>.button:last-child{border-radius:0 3px 3px 0}.button-group>.button:focus{position:relative;z-index:1}@media screen and (max-width:737px){.button,.button.button-large,.button.button-small,.plugin-upload-form .button-primary{font-size:14px;height:auto;line-height:normal;margin-bottom:4px;padding:6px 14px;vertical-align:middle}}.clear:after,.clear:before,.comment-content:after,.comment-content:before,.entry-content:after,.entry-content:before,.home-below:after,.home-below:before,.site-content:after,.site-content:before,.site-footer:after,.site-footer:before,.site-header:after,.site-header:before{content:"";display:table;table-layout:fixed}.clear:after,.comment-content:after,.entry-content:after,.home-below:after,.site-content:after,.site-footer:after,.site-header:after{clear:both}p.subheading{color:#82878c;font-weight:300;margin:-.4rem auto 2rem;text-align:center}p.intro,p.subheading{font-size:1.25rem}p.aside{font-size:.8rem}p.note{font-size:.64rem;letter-spacing:.01rem;max-width:18.1898940355rem}input,textarea{box-sizing:border-box}input[type=checkbox],input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=radio],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{background-color:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);color:#32373c;outline:none;transition:border-color .05s ease-in-out}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=email],input[type=url]{direction:ltr}input[type=number]{height:28px;line-height:inherit}input[type=checkbox],input[type=radio]{background:#fff;border:1px solid #b4b9be;box-shadow:inset 0 1px 2px rgba(0,0,0,.1);clear:none;color:#555;cursor:pointer;display:inline-block;height:16px;line-height:0;margin:-4px 4px 0 0;min-width:16px;outline:0;padding:0!important;text-align:center;transition:border-color .05s ease-in-out;vertical-align:middle;width:16px;-webkit-appearance:none}input[type=checkbox]:checked:before,input[type=radio]:checked:before{display:inline-block;float:left;font:normal 21px/1 dashicons;vertical-align:middle;width:16px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}input[type=checkbox]:checked:before{color:#1e8cbe;content:"";margin:-3px 0 0 -4px}input[type=radio]{border-radius:50%;line-height:10px;margin-right:4px}input[type=radio]:checked+label:before{color:#82878c}input[type=radio]:checked:before{background-color:#1e8cbe;border-radius:50px;content:"•";font-size:24px;height:6px;line-height:16px;margin:4px;text-indent:-9999px;width:6px}input[type=reset]:active,input[type=reset]:hover{color:#00a0d2}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{border-radius:0;font-size:14px;padding:3px 5px}textarea{line-height:1.4;overflow:auto;padding:2px 6px;resize:vertical}textarea.code{line-height:1.4;padding:4px 6px 1px}label{cursor:pointer;vertical-align:middle}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:hsla(0,0%,100%,.5);border-color:hsla(0,0%,87.1%,.75);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(51,51,51,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:none;box-shadow:none}input.large-text,textarea.large-text{width:99%}input.regular-text{width:25em}input.small-text{padding:1px 6px;width:50px}input[type=number].small-text{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text]{-webkit-appearance:none;padding:6px 10px}input[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}input[type=checkbox]{-webkit-appearance:none;padding:10px}input[type=checkbox]:checked:before{font:normal 30px/1 dashicons;margin:-3px -5px}input[type=checkbox],input[type=radio]{height:25px;width:25px}input[type=radio]:checked:before{vertical-align:middle;width:9px;height:9px;margin:7px;line-height:16px}input,textarea{font-size:16px}input[type=number].small-text,input[type=password].small-text,input[type=search].small-text,input[type=text].small-text{width:auto;max-width:55px;display:inline;padding:3px 6px;margin:0 3px}input.regular-text{width:100%}label{font-size:14px}fieldset label{display:block}}a.button:active,a.button:focus,a.button:hover{text-decoration:none}.notice{background:#fff;border-left:4px solid #fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:1em 0;padding:1px 12px}.notice p{font-size:.8rem;margin:.5em 0;padding:2px}.notice.notice-alt{box-shadow:none}.notice.notice-large{padding:10px 20px}.notice.notice-success{border-left-color:#46b450}.notice.notice-success.notice-alt{background-color:#ecf7ed}.notice.notice-warning{border-left-color:#ffb900}.notice.notice-warning.notice-alt{background-color:#fff8e5}.notice.notice-error{border-left-color:#dc3232}.notice.notice-error.notice-alt{background-color:#fbeaea}.notice.notice-info{border-left-color:#00a0d2}.notice.notice-info.notice-alt{background-color:#e5f5fa}.error-404 .page-content,.error-404 .page-title{text-align:center}.error-404 .page-content .logo-swing{height:10rem;margin:6rem auto;position:relative;text-align:center;width:10rem}.error-404 .page-content .logo-swing .wp-logo{left:0;max-width:none;position:absolute;top:0;width:10rem}@keyframes hinge{10%{width:180px;height:180px;transform:rotate(0deg)}15%{width:185px;height:185px;transform:rotate(0deg)}20%{width:180px;height:180px;transform:rotate(5deg)}40%{transform-origin:top left;animation-timing-function:ease-in-out}60%{transform:rotate(40deg);transform-origin:top left;animation-timing-function:ease-in-out}40%,80%{transform:rotate(60deg);transform-origin:top left;animation-timing-function:ease-in-out;opacity:1}to{transform:translate3d(0,700px,0);opacity:0}}.hinge{animation-duration:2s;animation-name:hinge}.comments-area{margin-top:5em}.comments-area>:last-child{margin-bottom:0}.comments-area .comment-list+.comment-respond{border-top:1px solid #eaeaea}.comments-area .comment-list+.comment-respond,.comments-area .comment-navigation+.comment-respond{padding-top:1.6em}.comments-area .comments-title{margin-bottom:1.3333em}.comments-area .comment-list{list-style:none;margin:0}.comments-area .comment-list .pingback,.comments-area .comment-list .trackback,.comments-area .comment-list article{border-top:1px solid #eaeaea;padding:1.6em 0}.comments-area .comment-list article:not(:only-child){padding-bottom:0}.comments-area .comment-list article+.comment-respond{padding-bottom:1.6em}.comments-area .comment-list .children{list-style:none;margin:0}.comments-area .comment-list .children>li{padding-left:.8em}.comments-area .comment-list .alt{background:none}.comments-area .comment-author{color:#999;margin-bottom:.4em}.comments-area .comment-author .avatar{float:left;height:24px;margin-right:.8em;width:24px}.comments-area .comment-metadata,.comments-area .pingback .edit-link{color:#999;line-height:1.5}.comments-area .comment-metadata a,.comments-area .pingback .edit-link a{color:#777}.comments-area .comment-metadata{font-size:.8rem;margin-bottom:1.6em}.comments-area .comment-metadata .edit-link,.comments-area .pingback .edit-link{margin-left:1em}.comments-area .pingback .edit-link:before{top:5px}.comments-area .comment-content ol,.comments-area .comment-content ul{margin:0 0 1.6em 1.3333em}.comments-area .comment-content>:last-child,.comments-area .comment-content li>ol,.comments-area .comment-content li>ul{margin-bottom:0}.comments-area .comment-content .reply{font-size:12px}.comments-area .comment-content .reply a{border:1px solid #eaeaea;color:#707070;display:inline-block;font-weight:700;line-height:1;margin-top:2em;padding:.4167em .8333em;text-transform:uppercase}.comments-area .comment-content .reply a:focus,.comments-area .comment-content .reply a:hover{border-color:#333;color:#333;outline:0}.comments-area .comment-reply-title a{font-weight:inherit}.comments-area .comment-form label{font-size:.8rem;font-weight:700;display:block;letter-spacing:.04em;line-height:1.5}.comments-area .comment-form input[type=email],.comments-area .comment-form input[type=text],.comments-area .comment-form input[type=url],.comments-area .comment-form textarea{width:100%}.comments-area .comment-awaiting-moderation,.comments-area .comment-notes,.comments-area .form-allowed-tags,.comments-area .logged-in-as{font-size:1rem;line-height:1.5;margin-bottom:2em}.comments-area .no-comments{border-top:1px solid #eaeaea;color:#999;font-weight:700;padding-top:1.6em}.comments-area .comment-navigation+.no-comments{border-top:0}.comments-area .form-allowed-tags code{font-family:Inconsolata,monospace}.comments-area .form-submit{margin-bottom:0}.comments-area .required{color:#c0392b}.entry-content{hyphens:auto;word-wrap:break-word}.entry-content>p:first-child{margin-top:0}.entry-content [class*=col-]~h1,.entry-content [class*=col-]~h2,.entry-content [class*=col-]~h3,.entry-content [class*=col-]~h4,.entry-content [class*=col-]~h5,.entry-content [class*=col-]~h6{clear:none}.entry-header{position:relative}.entry-header .sticky-post{color:#999;font-size:.8rem;font-style:italic;position:absolute;top:-.8rem}.entry-meta{color:#999;font-size:.8rem;margin-bottom:1rem}.entry-meta a{color:#777}.entry-meta>span{margin-right:1rem}.entry-meta>span :last-of-type{margin:0}.entry-meta .byline,.entry-meta .updated:not(.published),.sticky .entry-meta .posted-on{display:none}.group-blog .entry-meta .byline,.single .entry-meta .byline{display:inline}.entry-summary{hyphens:auto;word-wrap:break-word}body:not(.single):not(.search) .site-main .post{margin-bottom:3.0517578125rem;max-width:40em}.gallery{margin-bottom:1.5rem}.gallery .gallery-item{display:inline-block;margin:0;text-align:center;vertical-align:top;width:100%}.gallery.gallery-columns-2 .gallery-item{max-width:50%}.gallery.gallery-columns-3 .gallery-item{max-width:33.33%}.gallery.gallery-columns-4 .gallery-item{max-width:25%}.gallery.gallery-columns-5 .gallery-item{max-width:20%}.gallery.gallery-columns-6 .gallery-item{max-width:16.66%}.gallery.gallery-columns-7 .gallery-item{max-width:14.28%}.gallery.gallery-columns-8 .gallery-item{max-width:12.5%}.gallery.gallery-columns-9 .gallery-item{max-width:11.11%}.gallery .gallery-caption{display:block}.main-navigation{background:#0073aa;clear:both;left:0;position:absolute;top:60px;width:100%}.main-navigation ul{display:none;list-style:none;margin:0;padding-left:0}.main-navigation ul ul{box-shadow:0 3px 3px rgba(0,0,0,.2);float:left;left:-999em;position:absolute;top:1.5em;z-index:99999}.main-navigation ul ul ul{left:-999em;top:0}.main-navigation ul ul li.focus>ul,.main-navigation ul ul li:hover>ul{left:100%}.main-navigation ul ul a{width:200px}.main-navigation ul li.focus>ul,.main-navigation ul li:hover>ul{left:auto}.main-navigation li{border-top:1px solid hsla(0,0%,100%,.2);padding:1rem}.main-navigation a{color:hsla(0,0%,100%,.8);display:block;font-size:.8rem;text-decoration:none}.main-navigation a.active,.main-navigation a:hover{color:#fff}@media screen and (min-width:737px){.main-navigation a.active{border-bottom:1px solid}}.main-navigation.toggled{z-index:1}.main-navigation.toggled ul{display:block}.menu-toggle{background:transparent;border:none;color:#fff;height:3.5rem;position:absolute;right:1rem;top:-58px;width:3.5rem}.toggled .menu-toggle:before{content:""}@media screen and (min-width:737px){.menu-toggle{display:none}.main-navigation{float:right;position:static;width:auto}.main-navigation.toggled{padding:1px 0}.main-navigation ul{display:inline-block;font-size:0}.main-navigation ul li{border:0;display:inline-block;font-size:1rem;margin-right:1rem;padding:0}.main-navigation ul li:last-of-type{margin-right:0}}.comment-content .wp-smiley,.entry-content .wp-smiley,.page-content .wp-smiley{border:none;margin-bottom:0;margin-top:0;padding:0}embed,iframe,object{max-width:100%}body.page .gutters .col-12{width:100%}body.page .entry-header{background:#0073aa;padding:1rem 0}body.page .entry-header .entry-title{color:#fff;font-size:1.5625rem;font-weight:300;line-height:1;margin:0 auto;padding:0 1.5625rem}body.page .entry-header.home{padding:1.5625rem 1.143rem;text-align:center}@media screen and (min-width:737px){body.page .site-header+.site-main .entry-title{padding:initial}}body.page .entry-content,body.page .entry-footer{margin:0 auto;max-width:960px;padding:3.0517578125rem 1.5625rem}.post-navigation{margin:5em auto;padding:0}.post-navigation a{border-bottom:1px solid #eaeaea;color:#444;display:block;font-weight:600;padding:11px 0 12px;text-transform:none;width:100%}.post-navigation a:hover{color:#21759b}.post-navigation .nav-links{border-top:1px solid #eaeaea;hyphens:auto;word-wrap:break-word}.post-navigation .meta-nav{color:#777;display:block;font-size:13px;line-height:2;text-transform:uppercase}.post-navigation .nav-next{text-align:right}.pagination .nav-links{text-align:center}.pagination .nav-links .page-numbers{background-color:#f9f9f9;cursor:hand;display:inline-block;min-width:2em;padding:8px}.pagination .nav-links .page-numbers.dots,.pagination .nav-links .page-numbers.next,.pagination .nav-links .page-numbers.prev{background:none;font-size:.9em;width:auto}.pagination .nav-links .page-numbers.dots{cursor:inherit}@media screen and (max-width:737px){.pagination .nav-links .page-numbers.next,.pagination .nav-links .page-numbers.prev{font-size:0;min-width:0;padding:0}.pagination .nav-links .page-numbers.next:after,.pagination .nav-links .page-numbers.prev:before{background-color:#f9f9f9;display:inline-block;font-size:1rem;line-height:1.5;min-width:2em;padding:8px}.pagination .nav-links .page-numbers.prev:before{content:"‹"}.pagination .nav-links .page-numbers.next:after{content:"›"}}.pagination .nav-links span.page-numbers{background-color:#f7f7f7;font-weight:700}.search-form .search-field{line-height:normal;margin:0;padding:4px 5px;vertical-align:text-bottom}body.search .gutters .col-12{width:100%}body.search .site-main{margin:0 auto;max-width:960px;padding:0 1.5625rem 3.0517578125rem}.site-content{max-width:960px;padding:0 1.5625rem}@media screen and (min-width:737px){.site-content{padding:0 10px 3.0517578125rem}}@media screen and (max-width:737px){.site-content .site-main{float:none;margin:0;width:auto}}.home .site-content,.page .site-content,.site-content.page{margin:auto;max-width:none;padding:0}.site-content .page-title{font-size:1.25rem;font-weight:400}.site-content .no-results{margin:0 auto 3.0517578125rem;max-width:40em;padding:0 2rem}.site-description{color:hsla(0,0%,100%,.8);font-size:1.25rem;font-weight:300;margin:-.4rem auto 2rem;text-align:center}.site-header{background:#0073aa;padding:1rem 0;position:relative}.site-header .site-branding{margin:0 auto;max-width:960px;padding:0 1.5625rem}@media screen and (min-width:737px){.site-header .site-branding{padding:0 10px}}.site-header.home{padding:1.5625rem 1.143rem;text-align:center}.site-title{display:inline-block;font-size:1.5625rem;font-weight:300;line-height:1;margin:0 2rem 0 0;max-width:none}.site-title a{color:#fff;font-weight:300}.site-title a:active,.site-title a:focus,.site-title a:hover{text-decoration:none}.site-header.home .site-title{display:inherit;font-size:3.8146972656rem;margin:2rem 0 1rem}.widget-area{font-size:.8rem}@media screen and (min-width:480px) and (max-width:768px){.widget-area{display:flex}.widget-area .widget{width:48%}}#wporg-footer{background-color:#f7f7f7;border-top:1px solid #dfdfdf;padding:22px 14px 65px}#wporg-footer,#wporg-footer .wrapper{clear:both;margin:0 auto;overflow:auto}#wporg-footer .wrapper{max-width:930px}#wporg-footer ul{float:left;margin-bottom:20px;margin-left:24px;overflow:auto;padding-left:0;width:135px}@media screen and (min-width:960px){#wporg-footer ul:first-child{margin-left:0}}#wporg-footer ul li{color:#bbb;font-size:14px;list-style-type:none;margin-bottom:1px}#wporg-footer ul li a{text-decoration:none;text-decoration-skip-ink:none}#wporg-footer ul li a:hover{color:#0073aa;text-decoration:underline}#wporg-footer .cip{clear:both;color:#ccc;float:none;font-size:.8rem;letter-spacing:.3em;margin:35px auto 0;text-align:center;text-transform:uppercase}#wporg-footer .cip.cip-image{background:url(//s.w.org/style/images/codeispoetry.png?1=) 50% no-repeat;background-size:190px 15px;height:15px;text-indent:-9999px;width:190px}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:1.5dppx),only screen and (min-resolution:144dpi){#wporg-footer .cip.cip-image{background-image:url(//s.w.org/style/images/codeispoetry-2x.png?1=)}}@media screen and (min-width:561px) and (max-width:959px){#wporg-footer .wrapper{max-width:600px}#wporg-footer ul{margin-left:2%;width:32%}#wporg-footer ul:nth-child(3n+1){margin-left:0}#wporg-footer ul:nth-child(4n){clear:both}}@media screen and (max-width:560px){#wporg-footer .wrapper{max-width:360px}#wporg-footer ul{margin-left:4%;width:48%}#wporg-footer ul:nth-child(odd){margin-left:0;clear:both}}#wporg-header{background:#23282d;height:140px;position:relative;text-align:center;width:100%}#wporg-header .wrapper{margin:0 auto;max-width:960px}#wporg-header h1{display:inline-block;margin:auto;width:303px}#wporg-header h1 a{background:url(//s.w.org/style/images/wporg-logo.svg?3=) 0 no-repeat;background-size:290px 46px;display:block;height:88px;text-indent:-9999px}#wporg-header h2.rosetta{clear:none;color:#dfdfdf;font-family:Georgia,Times New Roman,serif;font-size:30px;margin:0 0 0 60px}#wporg-header h2.rosetta a{border-bottom:none;color:#dfdfdf;display:block;height:52px;line-height:22px;padding:0}#wporg-header h2.rosetta a:hover{text-decoration:none}#wporg-header #wporg-header-menu{background:#23282d;left:-75%;list-style:none;margin:0;max-width:75%;min-width:200px;position:absolute;text-align:left;top:100%;transition:left .3s;z-index:100000}#wporg-header #wporg-header-menu.toggled{left:0}#wporg-header ul li{list-style-type:none;position:relative}#wporg-header ul li a{color:#eee;display:block;font-family:Open Sans,Helvetica,Arial,Liberation Sans,sans-serif;font-size:13px;font-weight:600;height:34px;line-height:34px;margin:0 4px;padding:10px 30px;text-decoration:none}#wporg-header ul li a.subcurrent{font-weight:700}@media (max-width:768px){#wporg-header ul li a{height:auto}}#wporg-header ul li.current-menu-item a,#wporg-header ul li.current_page_parent a,#wporg-header ul li a.current,#wporg-header ul li a:hover{color:#00a0d2}#wporg-header ul li#download,#wporg-header ul li.download{float:right;height:34px;margin-right:14px;overflow:hidden;padding:0 0 34px}@media screen and (max-width:767px){#wporg-header ul li#download,#wporg-header ul li.download{display:block;float:none;margin:10px 20px 20px;padding-bottom:0;height:auto}#wporg-header ul li#download a,#wporg-header ul li.download a{padding:4px 10px;text-align:center}}#wporg-header ul li#download a,#wporg-header ul li.download a{margin:0;padding:0 16px}#wporg-header ul li#download a:hover,#wporg-header ul li.download a:hover{color:#eee}#wporg-header ul li#download.current,#wporg-header ul li#download.current-menu-item,#wporg-header ul li#download .uparrow,#wporg-header ul li.download.current,#wporg-header ul li.download.current-menu-item,#wporg-header ul li.download .uparrow{display:none}#wporg-header ul li .nav-submenu{clip:rect(1px,1px,1px,1px);height:1px;left:-2px;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;z-index:99999}#wporg-header ul li .nav-submenu li a{display:inline-block;height:24px;line-height:24px;margin:0;white-space:nowrap}@media screen and (min-width:768px){#wporg-header #head-search{float:right;margin-right:14px;padding-top:30px}}#wporg-header #head-search form{border-bottom:1px solid #3f3f3f;display:inline-block;margin-left:60px;width:288px}#wporg-header #head-search form input.text{background:#191e23;border:0;border-radius:0;box-sizing:content-box;color:#b4b9be;float:left;font-family:Open Sans,sans-serif;font-size:12px;height:24px;margin:0;outline:none;padding:3px;vertical-align:top;width:256px}#wporg-header #head-search form input.text::-moz-placeholder{color:#eee}@media screen and (max-width:480px){#wporg-header #head-search form input.text{width:216px}}#wporg-header #head-search form .button{background:#191e23 url(//s.w.org/wp-includes/images/admin-bar-sprite.png?d=20120831) no-repeat 2px 5px;border:none;border-radius:0;box-shadow:none;float:left;height:30px;margin:0;padding:0;text-shadow:none!important;width:26px}@media screen and (max-width:480px){#wporg-header #head-search form{width:248px}}@media screen and (min-width:480px){#wporg-header #head-search form{margin-left:0}}@media screen and (min-width:768px){#wporg-header{height:120px;text-align:inherit}#wporg-header h1{float:left;padding-left:10px}#wporg-header h2.rosetta{float:left;margin-left:0;padding:36px 27px 0}#wporg-header #headline h2{text-rendering:optimizeLegibility}#wporg-header #wporg-header-menu{float:left;height:46px;list-style:none;margin:-15px 0 0;max-width:inherit;min-width:0;padding:0;position:static;width:100%}#wporg-header ul li{float:left;position:relative}#wporg-header ul li a{height:46px;padding:0 6px}#wporg-header ul li a.current~.uparrow{border-bottom:9px solid #f7f7f7;border-left:9px solid transparent;border-right:9px solid transparent;height:0;margin:-8px auto 0;width:0}#wporg-header ul li.current-menu-item:after,#wporg-header ul li.current_page_parent:after{border-bottom:9px solid #f7f7f7;border-left:9px solid transparent;border-right:9px solid transparent;content:"";height:0;left:50%;margin:-8px 0 0 -9px;position:absolute;width:0}#wporg-header ul li .nav-submenu:hover~.uparrow,#wporg-header ul li:hover .nav-submenu~.uparrow{border-bottom:9px solid #32373c;border-left:9px solid transparent;border-right:9px solid transparent;height:0;margin:-10px auto 0;width:0}#wporg-header ul li .nav-submenu{background:#32373c;border:1px solid #32373c;border-top:0;margin-top:-1px;min-width:0}#wporg-header ul li .nav-submenu li{float:none}#wporg-header ul li .nav-submenu li a{height:34px;line-height:34px}#wporg-header .nav-menu .focus>ul,#wporg-header .nav-menu ul li:hover>ul,#wporg-header ul.nav-menu .focus>ul,#wporg-header ul.nav-menu li:hover>ul{clip:inherit;height:inherit;overflow:inherit;width:inherit}#wporg-header ul li.current-menu-item:after,#wporg-header ul li.current_page_parent:after,#wporg-header ul li a.current~.uparrow{border-bottom-color:#0073aa}}.page-download #wporg-header #download,.page-parent-download #wporg-header #download{display:none}#mobile-menu-button{background:none;border:none;box-shadow:none;display:block;float:left;font-family:dashicons;font-size:16px;font-style:normal;font-weight:400;left:10px;line-height:1;padding:1px;position:absolute;text-align:center;text-decoration:inherit;text-shadow:none;top:75px;transition:color .1s ease-in;vertical-align:top;-webkit-font-smoothing:antialiased}#mobile-menu-button:before{border:none;box-sizing:border-box;color:#888;content:"";display:inline-block;float:left;font:normal 50px/1 Dashicons;margin:0;outline:none;padding:3px;text-decoration:none;vertical-align:middle;-webkit-font-smoothing:antialiased}@media screen and (min-width:768px){#mobile-menu-button{display:none}}#download-mobile{background:#f7f7f7;border-bottom:1px solid #ddd}#download-mobile .wrapper{padding:20px 0;text-align:center}#download-mobile span.download-ready{font-size:1.6em;margin:0 .25em}#download-mobile a.download-button{font-size:1.6em;height:inherit;margin:10px .25em;padding:10px 15px}.category-context-bar{margin:0 1.5rem;background:#edeff0;border-radius:2px;font-size:.8125rem;overflow:auto;transition:all .3s ease-out}@media (prefers-reduced-motion){.category-context-bar{transition:none}}.category-context-bar>div{display:flex;align-items:center;justify-content:space-between}@media only screen and (min-width:782px){.category-context-bar{margin:0 1.5rem}}@media only screen and (min-width:960px){.category-context-bar{margin:0 auto;max-width:960px}}.category-context-bar ul{margin:0;padding:0;display:flex;justify-content:space-between}.category-context-bar ul li{list-style:none;font-size:.8125rem}.category-context-bar ul li a{display:block;padding:1.125rem .75rem;text-decoration:none}.category-context-bar ul li:last-child a{padding-right:1.5rem}.category-context-bar__copy{display:flex;align-items:center;margin:0;padding:1.125rem 1.5rem;font-size:.8125rem;font-weight:400}.category-context-bar__title{margin:0;padding-right:1.5rem;color:#555d66;font-size:.75rem;font-weight:400;text-transform:uppercase}.category-context-bar__links{display:flex;align-items:center}@media only screen and (max-width:782px){.category-context-bar__links{display:none}}.category-context-bar__spinner{display:flex;width:28px;margin:0;transition:transform .1s linear,width .15s ease-out,opacity 50ms linear 50ms;transform:scale(1)}@media (prefers-reduced-motion){.category-context-bar__spinner{transition:none}}.category-context-bar__spinner .components-spinner{margin:0}.category-context-bar__spinner--is-hidden{overflow:hidden;width:0;opacity:0;transform:scale(0)}.category-menu{margin:0;padding:0;position:relative}.category-menu li{display:inline-block;margin:0;list-style:none}.category-menu a{display:block;padding:.5rem .75rem;color:#40464d;font-size:.875rem;text-decoration:none}.category-menu a:active,.category-menu a:focus,.category-menu a:hover{color:#000}li .category-menu--is-active{color:#fff;background:#0073aa;border-radius:2px}li .category-menu--is-active:focus,li .category-menu--is-active:hover{color:#fff}.category-menu__mobile{padding:0!important;border-top:none!important}.category-menu__mobile ul{margin:0;padding:0;background:#23282d}.category-menu__mobile li{list-style:none;border-top:1px solid #32373c}.category-menu__mobile li a{display:block;padding:1rem 1.5rem;font-size:.875rem;text-decoration:none;color:#ccd0d4}.category-menu__mobile>.components-panel__body-title{margin:0!important}.category-menu__mobile>.components-panel__body-title>button{padding:1.5rem}.category-menu--is-loading{height:24px;position:relative}.category-menu--is-loading:after{content:"";position:absolute;background:#f3f4f5;border-radius:4px;width:80%;height:24px;left:0;top:calc(50% - 12px);transition:none}.category-search{display:flex;align-items:center;background:#fff;border:1px solid #6c7782;border-radius:2px}.category-search input[type=search]{flex-grow:1;margin:0;padding:.25rem .5rem;border:none;box-shadow:none;font-size:.8125rem}.category-search input[type=search]:focus{outline:1px auto #0073aa}.category-search__button{display:flex;background:transparent;border:none;color:#6c7782}.category-search__button:active{background:#d7dade}.category-search__button:focus{outline:1px auto #0073aa}.category-search--is-loading{display:block;height:24px;min-width:100%;background:#f3f4f5;border-radius:4px}@media only screen and (min-width:480px){.category-search--is-loading{width:224px!important;min-width:auto!important}}.pattern__copy-button{transition:all 75ms ease-in-out}.pattern__copy-button.is-small{font-size:.75rem;padding:.75rem;height:auto}.pattern__favorite-button{position:relative;font-size:.875rem;height:2.25rem;width:2.25rem;border-radius:2px;color:#606a74}.pattern__favorite-button svg{position:absolute;top:calc(50% - .75rem);left:calc(50% - .75rem);height:1.5rem;width:1.5rem;transition:all .15s ease-out}.pattern__favorite-button svg path{fill:#6c7782}.pattern__favorite-button .pattern__favorite-filled{opacity:0}.pattern__favorite-button:hover{color:#555d66;background:transparent}.pattern__favorite-button:hover svg path{fill:#555d66}.pattern__favorite-button:active{background:transparent;box-shadow:none;transform:none}.pattern__favorite-button.is-favorited{color:#555d66}.pattern__favorite-button.is-favorited svg path{fill:#d94f4f}.pattern__favorite-button.is-favorited .pattern__favorite-outline{opacity:0;transform:scale(2.8)}.pattern__favorite-button.is-favorited .pattern__favorite-filled{opacity:1}.pattern__favorite-button.is-favorited:hover .pattern__favorite-filled{animation:HeartBeat .9s infinite}@media (prefers-reduced-motion){.pattern__favorite-button.is-favorited:hover .pattern__favorite-filled{animation:none}}.pattern__favorite-button.has-label{padding:12px 18px 12px 38px;height:auto;width:auto}.pattern__favorite-button.has-label svg{top:calc(50% - 12px);left:9px}.pattern__favorite-button[disabled]{background:transparent!important;text-shadow:none!important;color:#606a74!important}@keyframes HeartBeat{0%{transform:scale(1)}25%{transform:scale(1.2)}40%{transform:scale(1)}60%{transform:scale(1.2)}to{transform:scale(1)}}.main-navigation{float:none;position:static;width:auto}.main-navigation a{font-size:.8125rem}.main-navigation.toggled div.menu{position:absolute;top:57px;right:0;width:100%;background:#0073aa}.menu-toggle{position:static;height:auto;width:auto;font-size:1.5625rem;overflow:hidden;-webkit-appearance:none}body.page .entry-header{background:none;padding:0}body.page .entry-header .entry-title{color:inherit;margin:2rem auto 1rem;max-width:960px}@media screen and (min-width:737px){body.page .entry-header .entry-title{padding:0 10px}}.pattern-grid-menu{margin:0 auto;max-width:960px;display:flex;flex-direction:column;justify-content:space-between;align-items:center}.pattern-grid-menu>:first-child,.pattern-grid-menu>:last-child{width:100%}.pattern-grid-menu>:last-child{margin:1.5rem;width:calc(100% - 3rem)}@media only screen and (min-width:782px){.pattern-grid-menu{margin:1.5rem;flex-direction:row}.pattern-grid-menu>:last-child{margin:0;width:auto}}@media only screen and (min-width:960px){.pattern-grid-menu{margin:1.5rem auto}}.pattern-grid{max-width:960px;margin:1.5rem}@media screen and (min-width:600px){.pattern-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem}.pattern-grid>*{align-self:baseline}}@media screen and (min-width:960px){.pattern-grid{margin-left:auto;margin-right:auto}}.pattern-grid__pattern{position:relative;margin:0 0 1.5rem;border:1px solid #d7dade;border-radius:2px;transition:all 75ms ease-in-out}@media screen and (min-width:600px){.pattern-grid__pattern{display:inline-block;margin:0}}.pattern-grid__pattern .pattern-grid__preview{overflow:hidden}.pattern-grid__pattern .pattern-grid__actions{position:absolute;right:0;bottom:0;left:0;display:flex;align-items:center;padding:.375rem;background:hsla(0,0%,100%,.8);backdrop-filter:blur(3px);opacity:0;transform:translateY(6px);transition:all 75ms ease-in-out}.pattern-grid__pattern .pattern-grid__actions .pattern-grid__title{flex-grow:1;margin:0;padding:0 .375rem 0 .75rem;font-size:.75rem;pointer-events:none}.pattern-grid__pattern .pattern-grid__actions .pattern__copy-button,.pattern-grid__pattern .pattern-grid__actions .pattern__favorite-button{flex-shrink:0}.pattern-grid__pattern .pattern-grid__actions .button+.button{margin-left:.375rem}.pattern-grid__pattern:focus-within .pattern-grid__actions,.pattern-grid__pattern:hover .pattern-grid__actions{opacity:1;transform:translateY(0)}.pagination{max-width:960px;margin:1.5rem}@media screen and (min-width:960px){.pagination{margin-left:auto;margin-right:auto}}.pagination__list{display:flex;margin:0;list-style:none;justify-content:center;align-items:center;gap:.75rem}@media (max-width:480px){.pagination__list{gap:.25rem}}.pagination__item,.pagination__link{display:inline-block}.pagination__link{padding:.75rem;background:#fff;border:1px solid #d7dade;border-radius:2px;line-height:1}.pagination__link,.pagination__link:active,.pagination__link:hover{text-decoration:none}.pagination__link[aria-current=page]{border:1px solid #191e23;background:#191e23;color:#fff}@media (max-width:480px){.pagination__link{padding:.5rem}}@media (max-width:600px){.pagination__item-next-page .pagination__link span[aria-hidden],.pagination__item-previous-page .pagination__link span[aria-hidden]{display:none}.pagination__item-previous-page .pagination__link:before{content:"<"}.pagination__item-next-page .pagination__link:before{content:">"}}.pattern-preview__container{padding:2rem 0 0;background:#f3f4f5}.pattern-preview__viewport{position:relative;margin:0 auto;padding:0 20px;max-width:100vw;min-width:320px}.pattern-preview__viewport .pattern-preview__viewport-iframe{background:#fff;border:1px solid #e8eaeb;vertical-align:middle;max-width:100vw}.pattern-preview__viewport:focus-within .pattern-preview__resize-help{clip:auto;clip-path:none;height:auto;margin:initial;overflow:initial;width:auto;bottom:-1rem;left:20px;right:20px;padding:8px 16px;background:#fff;border-radius:2px;border:1px solid #d7dade;text-align:center}.pattern-preview__drag-handle{position:absolute;top:0;bottom:0;width:20px}.pattern-preview__drag-handle.is-left{left:0}.pattern-preview__drag-handle.is-right{right:0}.pattern-preview__drag-handle-button{position:absolute;top:calc(50% - 50px);left:6px;padding:0;width:8px;height:100px;appearance:none;cursor:grab;outline:none;background:#7e8993;border-radius:99999px;border:none}.pattern-preview__drag-handle-button:hover{background:#6c7782}.pattern-preview__drag-handle-button:active{cursor:grabbing;background:#606a74}.pattern-preview__drag-handle-button:focus{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.pattern-report-button{color:#23282d!important}.pattern-report-button__copy{margin:0;display:flex;justify-content:center;align-items:center}.pattern-report-button__copy svg{margin-right:.375rem}.pattern-report-modal{max-width:400px;width:100%}@media screen and (min-width:600px){.pattern-report-modal{width:400px}}.pattern-report-modal form>:first-child{padding-bottom:1.5rem}.pattern-report-modal__has-fixed-height{min-height:400px}.pattern-report-modal__copy{text-align:center;line-height:1.5}.pattern-report-modal__actions{margin-top:1.5rem;display:grid;grid-template-columns:48% 48%;column-gap:4%}.pattern-report-modal__actions button{justify-content:center}.pattern-report-modal__radio .components-radio-control__option{margin-top:.75rem}body.single-wporg-pattern{box-sizing:border-box;font-size:14px;font-weight:400;line-height:1.2}body.single-wporg-pattern .site-content{margin:auto;max-width:none;padding:0}body.single-wporg-pattern .entry-header{max-width:960px;padding:1.5rem;margin-left:auto;margin-right:auto}@media only screen and (min-width:960px){body.single-wporg-pattern .entry-header{padding:1.5rem 0}}body.single-wporg-pattern .entry-header .entry-title{margin-top:0;line-height:1.2}body.single-wporg-pattern .pattern-actions{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap;gap:.5em 2em}body.single-wporg-pattern .pattern-actions button{margin:0}@media (max-width:480px){body.single-wporg-pattern .pattern-actions{justify-content:center}}body.single-wporg-pattern .pattern-actions__notice{margin:1.5rem 0 0;height:auto;flex-basis:100%}body.single-wporg-pattern .pattern-actions__notice>*{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;margin:0}body.single-wporg-pattern .pattern-actions__notice>* button{margin-top:.75rem}@media only screen and (min-width:600px){body.single-wporg-pattern .pattern-actions__notice>*{align-items:center;flex-direction:row}body.single-wporg-pattern .pattern-actions__notice>* button{margin-top:0}}body.single-wporg-pattern .pattern-actions__guide{max-width:384px;height:auto;max-height:none}body.single-wporg-pattern .pattern-actions__guide-content{padding:1.5rem;line-height:1.5}body.single-wporg-pattern .pattern-actions__guide-title{margin:0}body.single-wporg-pattern .pattern-actions__guide-shortcut{background:#edeff0;box-shadow:0 0 0 1px #ccd0d4;padding:1px;font-weight:600;min-width:20px;display:inline-block;text-align:center;border-radius:2px}body.single-wporg-pattern .entry-content{max-width:960px;margin-left:auto;margin-right:auto}body.single-wporg-pattern .pattern__meta{padding:2rem 0;background:#f3f4f5}body.single-wporg-pattern .pattern__meta>div{max-width:960px;margin-left:auto;margin-right:auto;display:flex;justify-content:space-between}body.single-wporg-pattern .pattern__meta .pattern-preview__report{text-align:right}.site-header:not(.home) .search-form{display:flex;align-items:center}.site-header:not(.home) .search-form>input{flex:1;border:0;border-radius:2px 0 0 2px;display:inline-block;font-size:12px;padding:5px 10px;position:relative;width:auto;height:100%}.site-header:not(.home) .search-form button{margin:0;border-radius:0 2px 2px 0;padding:3px 12px;height:unset}.search-form--is-inline .search-form{display:flex;justify-content:space-between;background:#fff}.search-form--is-inline .search-form>label{flex:1}.search-form--is-inline .search-form input{padding:.5rem;background:transparent;border:none;box-shadow:none;width:100%;font-size:14px}@media only screen and (min-width:768px){.search-form--is-inline .search-form input{font-size:16px}}.search-form--is-inline .search-form button{background:transparent;margin-bottom:0;border:0;box-shadow:none;height:inherit;text-shadow:none;color:#32373c}.search-form--is-inline .search-form button:focus{-webkit-box-shadow:0 0 2px 1px #0073aa;box-shadow:0 0 2px 1px #0073aa}.search-form--is-centered .search-form{margin:0 auto}.search-form--is-constrained .search-form{max-width:36rem}.search-form--is-muted .search-form{border-color:#d7dade!important}.search-form--is-muted .search-form button,.search-form--is-muted .search-form input{background:#f8f9f9;color:#7e8993}.search-form--has-medium-text .search-form input{font-size:14px}.search-form--has-border .search-form{border:1px solid #7e8993}.section-heading_link,.section-heading_title{margin-bottom:0}.section-heading_title{font-weight:300}.section-heading_title .archive-title-prefix{display:block;font-size:1rem}.section-heading_link{text-decoration:underline;font-weight:600;margin-top:1.5rem!important}@media only screen and (min-width:768px){.section-heading_link{margin-top:0!important}}.section-heading_description{margin:1rem 0 0}.section-heading_description :last-child{margin-bottom:0}.section-heading--with-space{padding-bottom:16px}.site-content{margin:0 auto;max-width:none;padding:0}body.home .site-header{padding:3.75rem 1rem;text-align:left}body.home .site-branding{display:grid;grid-template-rows:auto 1fr;grid-template-columns:1fr 22rem}body.home .site-branding>*{align-self:center}@media screen and (max-width:736px){body.home .site-branding{display:block}}body.home .site-title.site-title{grid-column-start:1;grid-row-start:1;margin-top:0;text-align:left;font-size:3rem;line-height:1.25}body.home .site-description{grid-column-start:1;grid-row-start:2;margin:0;font-size:1.25rem;line-height:1.6;text-align:left;color:#fff}body.home .site-callout{grid-column-start:2;grid-row-start:1;grid-row-end:span 2;margin-left:4rem;padding:1.125rem 1.5rem 1.5rem;font-size:.875rem;line-height:1.6;background:#fff;box-shadow:.75rem .75rem 0 rgba(0,0,0,.15)}body.home .site-callout h2{margin-top:0;font-size:1.125rem;line-height:1.25;font-weight:600}body.home .site-callout p:last-child{margin-bottom:0}@media screen and (max-width:736px){body.home .site-callout{margin:2rem auto 0;max-width:24rem}}body:not(.home) .site-branding{display:flex;align-items:center;justify-content:space-between;font-size:.8125rem;color:#fff}body:not(.home) .site-branding a{color:#fff}body:not(.home) .site-branding .sep{margin-left:.5rem;margin-right:.5rem}body:not(.home) .site-branding .is-current-page{font-weight:600}.site-title a{text-decoration:none}.site-title a:active,.site-title a:focus,.site-title a:hover{color:#fff}.has-wporg-blue-color{color:#1e8cbe}.has-wporg-blue-background-color{background-color:#1e8cbe}.has-wporg-purple-color{color:#826eb4}.has-wporg-purple-background-color{background-color:#826eb4}.has-wporg-white-color{color:#fff}.has-wporg-white-background-color{background-color:#fff}.home-page .shapes{position:relative;margin:0 auto}.home-page .shapes .parallelogram p:before{font-size:64px;height:64px;left:-16px;position:relative}.home-page .shapes .parallelogram{color:#fff;display:block;margin:0 auto;opacity:.9;padding:60px 40px;text-align:center;text-decoration:none}.home-page .shapes strong{display:block;font-size:28px;font-weight:300;padding-bottom:15px;padding-top:15px}.home-page .shapes p{color:#fff;font-size:16px;font-weight:300;margin:0}.home-page .shapes u{display:block;font-size:18px;padding-top:15px}@media only screen and (min-width:768px){.home-page .shapes{height:400px}.home-page .shapes .parallelogram{width:50%;position:absolute;padding:50px 90px}}@media only screen and (min-width:960px){.home-page .shapes .parallelogram{-webkit-transform:skew(-15deg);-ms-transform:skew(-15deg);transform:skew(-15deg)}.home-page .shapes .parallelogram:before,.home-page .shapes p{-webkit-transform:skew(15deg);-ms-transform:skew(15deg);transform:skew(15deg)}}@media only screen and (min-width:1200px){.home-page .shapes{margin:0 -60px}}.terms{font-style:italic;font-size:14px}
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/functions.php

    r10983 r11003  
    1313add_filter( 'search_template', __NAMESPACE__ . '\use_index_php_as_template' );
    1414add_filter( 'archive_template', __NAMESPACE__ . '\use_index_php_as_template' );
     15
     16add_filter( 'pre_handle_404', __NAMESPACE__ . '\bypass_404_page', 10, 2 );
    1517
    1618/**
    … …  
    156158        return $items->have_posts();
    157159}
     160
     161/**
     162 * Handle a possible 404 page when viewing patterns, which might happen if the JS pagination is
     163 * different than the WP default.
     164 *
     165 * @param bool     $preempt  Whether to short-circuit default header status handling. Default false.
     166 * @param WP_Query $wp_query WordPress Query object.
     167 * @return bool
     168 */
     169function bypass_404_page( $preempt, $wp_query ) {
     170        if ( isset( $wp_query->query_vars['post_type'][0] ) && POST_TYPE === $wp_query->query_vars['post_type'][0] ) {
     171                return true;
     172        }
     173        return $preempt;
     174}
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/index.php

    r10952 r11003  
    3131                                                get_template_part( 'template-parts/content', 'grid' );
    3232                                        endwhile;
    33                                 else :
    34                                         get_template_part( 'template-parts/content', 'none' );
    3533                                endif;
    3634                                ?>
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/components/category-menu/default.js

    r10983 r11003  
    22 * External dependencies
    33 */
     4import classnames from 'classnames';
     5
     6/**
     7 * WordPress dependencies
     8 */
     9import { __ } from '@wordpress/i18n';
    410import { ifViewportMatches } from '@wordpress/viewport';
    511
    6 const DefaultMenu = ( { path, options, onClick, isLoading } ) => {
     12const DefaultMenu = ( { currentCategory, options, onClick, isLoading } ) => {
    713        if ( ! isLoading && ! options.length ) {
    814                return null;
    … …  
    1016
    1117        return (
    12                 <ul className={ `category-menu ${ isLoading ? 'category-menu--is-loading' : '' } ` }>
    13                         { options.map( ( i ) => (
    14                                 <li key={ i.value }>
    15                                         <a
    16                                                 className={ path === i.value ? 'category-menu--is-active' : '' }
    17                                                 href={ i.value }
    18                                                 onClick={ onClick }
    19                                         >
    20                                                 { i.label }
    21                                         </a>
    22                                 </li>
    23                         ) ) }
    24                 </ul>
     18                <>
     19                        <h2 className="screen-reader-text">{ __( 'Main Menu', 'wporg-patterns' ) }</h2>
     20                        <ul className={ classnames( { 'category-menu': true, 'category-menu--is-loading': isLoading } ) }>
     21                                { options.map( ( i ) => (
     22                                        <li key={ i.value }>
     23                                                <a
     24                                                        className={ classnames( { 'category-menu--is-active': currentCategory === i.slug } ) }
     25                                                        href={ i.value }
     26                                                        onClick={ onClick }
     27                                                        aria-current={ currentCategory === i.slug ? 'page' : undefined }
     28                                                >
     29                                                        { i.label }
     30                                                </a>
     31                                        </li>
     32                                ) ) }
     33                        </ul>
     34                </>
    2535        );
    2636};
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/components/pattern-grid-menu/index.js

    r10924 r11003  
    22 * WordPress dependencies
    33 */
     4import { addQueryArgs, getPath, getQueryArg } from '@wordpress/url';
    45import { useDebounce } from '@wordpress/compose';
    56import { useSelect } from '@wordpress/data';
    6 import { addQueryArgs, getPath, getQueryArg } from '@wordpress/url';
    77
    88/**
    … …  
    1212import CategorySearch from '../category-search';
    1313import CategoryContextBar from '../category-context-bar';
     14import { getCategoryFromPath } from '../../utils';
    1415import { store as patternStore } from '../../store';
    1516import { useRoute } from '../../hooks';
    16 import { removeQueryString } from '../../utils';
    1717
    1818/**
    … …  
    2323const PatternGridMenu = () => {
    2424        const { path, update: updatePath } = useRoute();
     25        const categorySlug = getCategoryFromPath( path );
    2526
    2627        const { categories, isLoading, hasLoaded } = useSelect( ( select ) => {
    … …  
    4748                        <nav className="pattern-grid-menu">
    4849                                <CategoryMenu
    49                                         path={ removeQueryString( path ) }
     50                                        currentCategory={ categorySlug }
    5051                                        options={
    5152                                                categories
    … …  
    5354                                                                return {
    5455                                                                        value: `/${ getPath( record.link ) || '' }`,
     56                                                                        slug: record.slug,
    5557                                                                        label: record.name,
    5658                                                                };
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/components/pattern-grid/index.js

    r10924 r11003  
    88 * Internal dependencies
    99 */
     10import Pagination from './pagination';
    1011import PatternThumbnail from '../pattern-thumbnail';
    1112import { store as patternStore } from '../../store';
    1213
    13 function PatternGrid() {
    14         const { posts, isLoading } = useSelect( ( select ) => {
    15                 const { getPatternsByQuery, isLoadingPatternsByQuery, getCurrentQuery } = select( patternStore );
    16                 const query = getCurrentQuery();
     14function PatternGrid( { query } ) {
     15        const { isLoading, posts, totalPages } = useSelect( ( select ) => {
     16                const { getPatternTotalPagesByQuery, getPatternsByQuery, isLoadingPatternsByQuery } = select(
     17                        patternStore
     18                );
    1719
    1820                return {
     21                        isLoading: query && isLoadingPatternsByQuery( query ),
    1922                        posts: query ? getPatternsByQuery( query ) : [],
    20                         isLoading: query && isLoadingPatternsByQuery( query ),
     23                        totalPages: query ? getPatternTotalPagesByQuery( query ) : 0,
    2124                };
    2225        } );
    2326
    2427        return (
    25                 <div className="pattern-grid">
    26                         { isLoading ? (
    27                                 <Spinner />
    28                         ) : (
    29                                 posts.map( ( post ) => <PatternThumbnail key={ post.id } pattern={ post } /> )
    30                         ) }
    31                 </div>
     28                <>
     29                        <div className="pattern-grid">
     30                                { isLoading ? (
     31                                        <Spinner />
     32                                ) : (
     33                                        posts.map( ( post ) => <PatternThumbnail key={ post.id } pattern={ post } /> )
     34                                ) }
     35                        </div>
     36                        <Pagination totalPages={ totalPages } currentPage={ query?.page } />
     37                </>
    3238        );
    3339}
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/components/patterns/index.js

    r10924 r11003  
     1/**
     2 * WordPress dependencies
     3 */
     4import { useSelect } from '@wordpress/data';
     5
    16/**
    27 * Internal dependencies
    … …  
    611import QueryMonitor from '../query-monitor';
    712import { RouteProvider } from '../../hooks';
     13import { store as patternStore } from '../../store';
    814
    915const Patterns = () => {
     16        const query = useSelect( ( select ) => select( patternStore ).getCurrentQuery() );
     17
    1018        return (
    1119                <RouteProvider>
    1220                        <QueryMonitor />
    1321                        <PatternGridMenu />
    14                         <PatternGrid />
     22                        <PatternGrid query={ query } />
    1523                </RouteProvider>
    1624        );
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/components/query-monitor/index.js

    r10924 r11003  
    1111import { store as patternStore } from '../../store';
    1212import { useRoute } from '../../hooks';
    13 import { getCategoryFromPath } from '../../utils';
     13import { getCategoryFromPath, getPageFromPath } from '../../utils';
    1414
    1515/**
    … …  
    4444                        }
    4545
     46                        const page = getPageFromPath( path );
     47                        if ( page > 1 ) {
     48                                _query.page = page;
     49                        }
     50
    4651                        return _query;
    4752                },
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/store/actions.js

    r10983 r11003  
    1919 *
    2020 * @param {string} query Search string.
    21  * @param {Array} patterns A list of patterns.
     21 * @param {Object} response
     22 * @param {Array} response.page The current page.
     23 * @param {Array} response.patterns A list of patterns.
     24 * @param {number} response.total The total number of patterns.
     25 * @param {number} response.totalPages The total number of pages.
    2226 *
    2327 * @return {Object} Action object.
    2428 */
    25 export function loadPatterns( query, patterns ) {
    26         return { type: 'LOAD_BLOCK_PATTERNS', query: query, patterns: patterns };
     29export function loadPatterns( query, { page, patterns, total, totalPages } ) {
     30        return {
     31                type: 'LOAD_BLOCK_PATTERNS',
     32                query: query,
     33                page: page,
     34                patterns: patterns,
     35                total: total,
     36                totalPages: totalPages,
     37        };
     38}
     39
     40/**
     41 * Get the action object signalling that patterns have been loaded.
     42 *
     43 * @param {string} query Search string.
     44 * @param {Object} response
     45 * @param {Array} response.page The current page.
     46 * @param {Object} response.error The error message, as reported from the API.
     47 *
     48 * @return {Object} Action object.
     49 */
     50export function setErrorPatterns( query, { page, error } ) {
     51        return {
     52                type: 'ERROR_BLOCK_PATTERNS',
     53                query: query,
     54                page: page,
     55                error: error,
     56        };
    2757}
    2858
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/store/reducer.js

    r10983 r11003  
    3535function queries( state = {}, action ) {
    3636        const patternIds = ( action.patterns || [] ).map( ( { id } ) => id );
     37        const { page, total, totalPages } = action;
    3738        switch ( action.type ) {
    38                 case 'LOAD_BLOCK_PATTERNS':
    39                         return { ...state, [ action.query ]: [ ...( state[ action.query ] || [] ), ...patternIds ] };
     39                case 'LOAD_BLOCK_PATTERNS': {
     40                        const _queryState = { ...( state[ action.query ] || {} ), total, totalPages };
     41                        _queryState[ page ] = patternIds;
     42                        return { ...state, [ action.query ]: _queryState };
     43                }
     44                case 'ERROR_BLOCK_PATTERNS': {
     45                        const _queryState = state[ action.query ] || {};
     46                        _queryState[ page ] = [];
     47                        return { ...state, [ action.query ]: _queryState };
     48                }
    4049                default:
    4150                        return state;
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/store/resolvers.js

    r10983 r11003  
    33 */
    44import { addQueryArgs } from '@wordpress/url';
    5 import { apiFetch } from '@wordpress/data-controls';
     5// eslint-disable-next-line @wordpress/no-unsafe-wp-apis
     6import { __unstableAwaitPromise, apiFetch } from '@wordpress/data-controls';
    67
    78/**
    … …  
    1617        loadPatternFlagReasons,
    1718        loadPatterns,
     19        setErrorPatterns,
    1820} from './actions';
    1921import { getQueryString } from './utils';
     22
     23async function parseResponse( response ) {
     24        try {
     25                return {
     26                        total: Number( response.headers?.get( 'X-WP-Total' ) || 0 ),
     27                        totalPages: Number( response.headers?.get( 'X-WP-TotalPages' ) || 0 ),
     28                        results: await response.json(),
     29                };
     30        } catch ( error ) {
     31                return {};
     32        }
     33}
     34
     35async function parseError( response ) {
     36        try {
     37                return await response.json();
     38        } catch ( error ) {
     39                return {};
     40        }
     41}
    2042
    2143export function* getPatternsByQuery( query ) {
    … …  
    2345        try {
    2446                yield fetchPatterns( queryString );
    25                 const results = yield apiFetch( {
     47                const response = yield apiFetch( {
    2648                        path: addQueryArgs( '/wp/v2/wporg-pattern', query ),
     49                        parse: false,
    2750                } );
    28                 yield loadPatterns( queryString, results );
    29         } catch ( error ) {}
     51                const { total, totalPages, results } = yield __unstableAwaitPromise( parseResponse( response ) );
     52                yield loadPatterns( queryString, {
     53                        page: query.page || 1,
     54                        patterns: results,
     55                        total: total,
     56                        totalPages: totalPages,
     57                } );
     58        } catch ( error ) {
     59                const parsedError = yield __unstableAwaitPromise( parseError( error ) );
     60                // @todo Do something with this error message.
     61                yield setErrorPatterns( queryString, {
     62                        page: query.page || 1,
     63                        error: parsedError,
     64                } );
     65        }
    3066}
    3167
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/store/selectors.js

    r10983 r11003  
    1414export function isLoadingPatternsByQuery( state, query ) {
    1515        const queryString = getQueryString( query );
    16         return ! Array.isArray( state.patterns.queries[ queryString ] );
     16        const page = query?.page || 1;
     17        return ! Array.isArray( state.patterns.queries?.[ queryString ]?.[ page ] );
    1718}
    1819
    … …  
    3839export function getPatternsByQuery( state, query ) {
    3940        const queryString = getQueryString( query );
    40         return ( state.patterns.queries[ queryString ] || [] ).map( ( id ) => state.patterns.byId[ id ] );
     41        const page = query?.page || 1;
     42        const patternIds = state.patterns.queries?.[ queryString ]?.[ page ];
     43        return ( patternIds || [] ).map( ( id ) => state.patterns.byId[ id ] );
     44}
     45
     46/**
     47 * Get the count of all patterns for a given query.
     48 *
     49 * @param {Object} state Global application state.
     50 * @param {Object} query Query parameters.
     51 *
     52 * @return {number} The count of all patterns matching this query.
     53 */
     54export function getPatternTotalsByQuery( state, query ) {
     55        const queryString = getQueryString( query );
     56        return state.patterns.queries?.[ queryString ]?.total || 0;
     57}
     58
     59/**
     60 * Get the number of pages of patterns for a given query.
     61 *
     62 * @param {Object} state Global application state.
     63 * @param {Object} query Query parameters.
     64 *
     65 * @return {number} The count of pages.
     66 */
     67export function getPatternTotalPagesByQuery( state, query ) {
     68        const queryString = getQueryString( query );
     69        return state.patterns.queries?.[ queryString ]?.totalPages || 0;
    4170}
    4271
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/store/test/reducer.js

    r10983 r11003  
    1515                                {
    1616                                        type: 'LOAD_BLOCK_PATTERNS',
     17                                        page: 1,
     18                                        patterns: apiPatterns,
    1719                                        query: '',
    18                                         patterns: apiPatterns,
    19                                 }
    20                         );
    21 
    22                         expect( state.queries[ '' ] ).toHaveLength( 5 );
     20                                        total: 10,
     21                                        totalPages: 2,
     22                                }
     23                        );
     24
     25                        expect( state.queries[ '' ].total ).toBe( 10 );
     26                        expect( state.queries[ '' ].totalPages ).toBe( 2 );
     27                        expect( state.queries[ '' ][ '1' ] ).toHaveLength( 5 );
    2328                        expect( state.byId ).toHaveProperty( '31' );
    2429                } );
    … …  
    2732                        const state = patterns(
    2833                                {
    29                                         queries: { '': [ 31, 25, 26, 27, 28 ] },
     34                                        queries: {
     35                                                '': {
     36                                                        total: 10,
     37                                                        totalPages: 2,
     38                                                        1: [ 31, 25, 26, 27, 28 ],
     39                                                },
     40                                        },
    3041                                        byId: apiPatterns.reduce( ( acc, cur ) => ( { ...acc, [ cur.id ]: cur } ), {} ),
    3142                                },
    3243                                {
    3344                                        type: 'LOAD_BLOCK_PATTERNS',
     45                                        page: 2,
     46                                        patterns: apiPatternsPage2,
    3447                                        query: '',
    35                                         patterns: apiPatternsPage2,
    36                                 }
    37                         );
    38 
    39                         expect( state.queries[ '' ] ).toHaveLength( 10 );
     48                                        total: 10,
     49                                        totalPages: 2,
     50                                }
     51                        );
     52
     53                        expect( state.queries[ '' ].total ).toBe( 10 );
     54                        expect( state.queries[ '' ].totalPages ).toBe( 2 );
     55                        expect( state.queries[ '' ][ '1' ] ).toHaveLength( 5 );
     56                        expect( state.queries[ '' ][ '2' ] ).toHaveLength( 5 );
    4057                        expect( state.byId ).toHaveProperty( '31' );
    4158                        expect( state.byId ).toHaveProperty( '15' );
    … …  
    4562                        const state = patterns(
    4663                                {
    47                                         queries: { '': [ 31, 25, 26, 27, 28 ] },
     64                                        queries: {
     65                                                '': {
     66                                                        total: 10,
     67                                                        totalPages: 2,
     68                                                        1: [ 31, 25, 26, 27, 28 ],
     69                                                },
     70                                        },
    4871                                        byId: apiPatterns.reduce( ( acc, cur ) => ( { ...acc, [ cur.id ]: cur } ), {} ),
    4972                                },
    5073                                {
    5174                                        type: 'LOAD_BLOCK_PATTERNS',
     75                                        page: 1,
     76                                        patterns: apiPatternsPage2,
    5277                                        query: 'pattern-categories=3',
    53                                         patterns: apiPatternsPage2,
    54                                 }
    55                         );
    56 
    57                         expect( state.queries[ '' ] ).toHaveLength( 5 );
    58                         expect( state.queries[ 'pattern-categories=3' ] ).toHaveLength( 5 );
     78                                        total: 5,
     79                                        totalPages: 1,
     80                                }
     81                        );
     82
     83                        expect( state.queries[ '' ].total ).toBe( 10 );
     84                        expect( state.queries[ '' ].totalPages ).toBe( 2 );
     85                        expect( state.queries[ '' ][ '1' ] ).toHaveLength( 5 );
     86                        expect( state.queries[ 'pattern-categories=3' ].total ).toBe( 5 );
     87                        expect( state.queries[ 'pattern-categories=3' ].totalPages ).toBe( 1 );
     88                        expect( state.queries[ 'pattern-categories=3' ][ '1' ] ).toHaveLength( 5 );
    5989                        expect( state.byId ).toHaveProperty( '31' );
    6090                        expect( state.byId ).toHaveProperty( '15' );
     91                } );
     92
     93                it( 'should handle an error', () => {
     94                        const state = patterns(
     95                                {
     96                                        queries: {
     97                                                '': {
     98                                                        total: 10,
     99                                                        totalPages: 2,
     100                                                        1: [ 31, 25, 26, 27, 28 ],
     101                                                },
     102                                        },
     103                                        byId: apiPatterns.reduce( ( acc, cur ) => ( { ...acc, [ cur.id ]: cur } ), {} ),
     104                                },
     105                                {
     106                                        type: 'ERROR_BLOCK_PATTERNS',
     107                                        query: '',
     108                                        page: 3,
     109                                        error: {
     110                                                code: 'rest_post_invalid_page_number',
     111                                                message: 'The page number requested is larger than the number of pages available.',
     112                                                data: { status: 400 },
     113                                        },
     114                                }
     115                        );
     116
     117                        expect( state.queries[ '' ].total ).toBe( 10 );
     118                        expect( state.queries[ '' ].totalPages ).toBe( 2 );
     119                        expect( state.queries[ '' ][ '1' ] ).toHaveLength( 5 );
     120                        expect( state.queries[ '' ][ '3' ] ).toHaveLength( 0 );
     121                        expect( state.byId ).toHaveProperty( '31' );
    61122                } );
    62123        } );
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/store/test/resolvers.js

    r10983 r11003  
    88
    99describe( 'getPatternsByQuery', () => {
    10         it( 'yields with the requested patterns', async () => {
     10        it( 'yields with the requested patterns & query meta', async () => {
    1111                const generator = getPatternsByQuery( {} );
    1212
    … …  
    1919                const { value: apiFetchAction } = generator.next();
    2020                expect( apiFetchAction.request ).toEqual( {
    21                         path: '/wp/v2/wporg-pattern',
     21                        path: `/wp/v2/wporg-pattern`,
     22                        parse: false,
    2223                } );
    2324
    24                 // Provide response and trigger action
    25                 const { value: received } = generator.next( apiPatterns );
     25                // Step through the promise - the response is omitted here & mocked in the next step because `Response`
     26                // is a browser feature, not available in node.
     27                const { value: awaitPromiseControl } = generator.next( { /* Response omitted */ } );
     28                expect( awaitPromiseControl ).toEqual( {
     29                        type: 'AWAIT_PROMISE',
     30                        promise: expect.any( Promise ),
     31                } );
     32
     33                // Complete the promise and return content
     34                const { value: received } = generator.next( { total: 8, totalPages: 2, results: apiPatterns } );
    2635                expect( received ).toEqual( {
    2736                        type: 'LOAD_BLOCK_PATTERNS',
    2837                        query: '',
     38                        page: 1,
    2939                        patterns: apiPatterns,
     40                        total: 8,
     41                        totalPages: 2,
    3042                } );
    3143        } );
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/store/test/selectors.js

    r10983 r11003  
    1111        getPattern,
    1212        getPatternFlagReasons,
     13        getPatternTotalPagesByQuery,
     14        getPatternTotalsByQuery,
    1315        getPatterns,
    1416        getPatternsByQuery,
    … …  
    3234                patterns: {
    3335                        queries: {
    34                                 '': [ 31, 25, 27, 26 ],
    35                                 'empty=1': [],
     36                                '': {
     37                                        total: 4,
     38                                        totalPages: 2,
     39                                        1: [ 31, 25 ],
     40                                        2: [ 27, 26 ],
     41                                },
     42                                'empty=1': {
     43                                        total: 0,
     44                                        totalPages: 0,
     45                                        1: [],
     46                                },
    3647                        },
    3748                        byId: apiPatterns.reduce( ( acc, cur ) => ( { ...acc, [ cur.id ]: cur } ), {} ),
    … …  
    7586        describe( 'getPatternsByQuery', () => {
    7687                it( 'should get an empty array if no patterns are loaded for this query', () => {
    77                         expect( getPatternsByQuery( initialState, '' ) ).toEqual( [] );
     88                        expect( getPatternsByQuery( initialState, {} ) ).toEqual( [] );
    7889                } );
    7990
    … …  
    8394
    8495                it( 'should get the list of patterns for this query', () => {
    85                         const patternsByQuery = getPatternsByQuery( state, '' );
    86                         expect( patternsByQuery ).toHaveLength( 4 );
    87                         // Keep the sort order of the query: [ 31, 25, 27, 26 ]
     96                        const patternsByQuery = getPatternsByQuery( state, {} );
     97                        expect( patternsByQuery ).toHaveLength( 2 );
     98                        // Keep the sort order of the query: [ 31, 25 ]
    8899                        expect( patternsByQuery[ 0 ] ).toHaveProperty( 'id', 31 );
    89100                        expect( patternsByQuery[ 1 ] ).toHaveProperty( 'id', 25 );
    90                         expect( patternsByQuery[ 2 ] ).toHaveProperty( 'id', 27 );
    91                         expect( patternsByQuery[ 3 ] ).toHaveProperty( 'id', 26 );
     101                } );
     102
     103                it( 'should get the second page of patterns for this query', () => {
     104                        const patternsByQuery = getPatternsByQuery( state, { page: 2 } );
     105                        expect( patternsByQuery ).toHaveLength( 2 );
     106                        // Keep the sort order of the query: [ 27, 26 ]
     107                        expect( patternsByQuery[ 0 ] ).toHaveProperty( 'id', 27 );
     108                        expect( patternsByQuery[ 1 ] ).toHaveProperty( 'id', 26 );
     109                } );
     110        } );
     111
     112        describe( 'getPatternTotalsByQuery', () => {
     113                it( 'should get 0 if no patterns are loaded for this query', () => {
     114                        expect( getPatternTotalsByQuery( initialState, {} ) ).toEqual( 0 );
     115                } );
     116
     117                it( 'should get the total number of patterns for this query, regardless of pagination', () => {
     118                        expect( getPatternTotalsByQuery( state, {} ) ).toEqual( 4 );
     119                        expect( getPatternTotalsByQuery( state, { page: 2 } ) ).toEqual( 4 );
     120                } );
     121        } );
     122
     123        describe( 'getPatternTotalPagesByQuery', () => {
     124                it( 'should get 0 if no patterns are loaded for this query', () => {
     125                        expect( getPatternTotalPagesByQuery( initialState, {} ) ).toEqual( 0 );
     126                } );
     127
     128                it( 'should get the total number of pages for this query, regardless of pagination', () => {
     129                        expect( getPatternTotalPagesByQuery( state, {} ) ).toEqual( 2 );
     130                        expect( getPatternTotalPagesByQuery( state, { page: 2 } ) ).toEqual( 2 );
    92131                } );
    93132        } );
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/utils/index.js

    r10952 r11003  
    1 export { getCategoryFromPath, removeQueryString, removeEmptyArgs } from './category';
     1export {
     2        getCategoryFromPath,
     3        getPageFromPath,
     4        getValueFromPath,
     5        removeQueryString,
     6        removeEmptyArgs,
     7} from './query';
    28export { copyToClipboard } from './copy-to-clipboard';
Note: See TracChangeset for help on using the changeset viewer.