├── site
├── .gitignore
├── gatsby-config.js
└── package.json
├── .gitignore
├── packages
└── gatsby-theme-tabor
│ ├── .nvmrc
│ ├── index.js
│ ├── src
│ ├── styles
│ │ └── scss
│ │ │ ├── coblocks
│ │ │ ├── style
│ │ │ │ ├── _formatting.scss
│ │ │ │ ├── _background-parallax.scss
│ │ │ │ ├── _shadow.scss
│ │ │ │ ├── _padding.scss
│ │ │ │ ├── _background-overlay.scss
│ │ │ │ ├── _margin.scss
│ │ │ │ ├── _background-classes.scss
│ │ │ │ ├── _stacked.scss
│ │ │ │ └── _gutter.scss
│ │ │ ├── _style.scss
│ │ │ ├── _common.scss
│ │ │ └── blocks
│ │ │ │ └── _media-card.scss
│ │ │ ├── blocks
│ │ │ ├── _misc.scss
│ │ │ ├── _more.scss
│ │ │ ├── _blockgallery.scss
│ │ │ ├── _verse.scss
│ │ │ ├── _audio-video.scss
│ │ │ ├── _table.scss
│ │ │ ├── _code.scss
│ │ │ ├── _embed.scss
│ │ │ ├── _font-sizes.scss
│ │ │ ├── _list.scss
│ │ │ ├── _preformatted.scss
│ │ │ ├── _file.scss
│ │ │ ├── _paragraph.scss
│ │ │ ├── _archives-categories.scss
│ │ │ ├── _button.scss
│ │ │ ├── _latest-comments.scss
│ │ │ ├── _color-palette.scss
│ │ │ ├── _separator.scss
│ │ │ ├── _captions.scss
│ │ │ ├── _image.scss
│ │ │ ├── _cover.scss
│ │ │ ├── _gallery.scss
│ │ │ ├── _quote.scss
│ │ │ ├── _latest-posts.scss
│ │ │ ├── _columns.scss
│ │ │ ├── _pullquote.scss
│ │ │ ├── _blocks.scss
│ │ │ └── _coblocks.scss
│ │ │ ├── modules
│ │ │ ├── _gravity.scss
│ │ │ ├── _clearings.scss
│ │ │ ├── _animated-typography.scss
│ │ │ ├── _pricing-tables.scss
│ │ │ ├── _cf7.scss
│ │ │ ├── _night-mode.scss
│ │ │ ├── _pagination.scss
│ │ │ ├── _ninja.scss
│ │ │ ├── _accessibility.scss
│ │ │ ├── _amazon-polly.scss
│ │ │ ├── _error404.scss
│ │ │ ├── _infinite-scroll.scss
│ │ │ ├── _password-protected.scss
│ │ │ ├── _revue.scss
│ │ │ ├── _gists.scss
│ │ │ ├── _print.scss
│ │ │ ├── _icons.scss
│ │ │ ├── _optinmonster-new.scss
│ │ │ ├── _optinmonster.scss
│ │ │ ├── _customizer.scss
│ │ │ ├── _share-this.scss
│ │ │ ├── _drop-in.scss
│ │ │ ├── _om-inline.scss
│ │ │ └── _accessibility-settings.scss
│ │ │ ├── navigation
│ │ │ ├── _links.scss
│ │ │ ├── _nav-overflow.scss
│ │ │ ├── _social.scss
│ │ │ └── _dropdown.scss
│ │ │ ├── typography
│ │ │ ├── _typography.scss
│ │ │ ├── _copy.scss
│ │ │ └── _headings.scss
│ │ │ ├── media
│ │ │ ├── _captions.scss
│ │ │ ├── _galleries.scss
│ │ │ ├── _media.scss
│ │ │ ├── _lazyload.scss
│ │ │ └── _alignments.scss
│ │ │ ├── layout
│ │ │ ├── _main.scss
│ │ │ ├── _search.scss
│ │ │ ├── _layout.scss
│ │ │ ├── _hero-block.scss
│ │ │ ├── _sidebar.scss
│ │ │ ├── _footer.scss
│ │ │ ├── _header-search.scss
│ │ │ └── _header.scss
│ │ │ ├── elements
│ │ │ ├── _elements.scss
│ │ │ ├── _fields.scss
│ │ │ └── _buttons.scss
│ │ │ ├── _normalize.scss
│ │ │ ├── widgets
│ │ │ └── _widgets.scss
│ │ │ ├── _variables.scss
│ │ │ └── customize-controls.scss
│ ├── images
│ │ └── wpgraphql-logo.png
│ ├── utils
│ │ ├── index.js
│ │ └── typography.js
│ ├── templates
│ │ ├── page
│ │ │ ├── data.js
│ │ │ └── index.js
│ │ ├── posts
│ │ │ ├── README.md
│ │ │ ├── archive.js
│ │ │ ├── data.js
│ │ │ └── single.js
│ │ ├── tags
│ │ │ └── archive.js
│ │ ├── users
│ │ │ └── archive.js
│ │ └── categories
│ │ │ └── archive.js
│ ├── components
│ │ ├── Icons
│ │ │ ├── index.js
│ │ │ ├── IconDown.js
│ │ │ ├── IconLeft.js
│ │ │ ├── IconRight.js
│ │ │ ├── Play.js
│ │ │ ├── ArrowDown.js
│ │ │ ├── Linkedin.js
│ │ │ ├── Search.js
│ │ │ ├── Twitter.js
│ │ │ ├── Settings.js
│ │ │ ├── Settings3.js
│ │ │ ├── Medium.js
│ │ │ ├── Settings2.js
│ │ │ ├── Dribble.js
│ │ │ ├── Chain.js
│ │ │ └── FacebookShare.js
│ │ ├── HeaderArchive.js
│ │ ├── MenuToggle.js
│ │ ├── PostEntryTitle.js
│ │ ├── Layout.js
│ │ ├── Logo.js
│ │ ├── PostEntryMeta.js
│ │ ├── Footer.js
│ │ ├── EngagementBar.js
│ │ ├── PostEntryMedia.js
│ │ ├── Pagination.js
│ │ ├── PostEntry.js
│ │ ├── Subscribe.js
│ │ ├── SocialNav.js
│ │ ├── ShareIcons.js
│ │ ├── Header.js
│ │ ├── NextPost.js
│ │ ├── SEO.js
│ │ └── Menu.js
│ └── pages
│ │ └── 404.js
│ ├── .prettierrc
│ ├── .editoconfig
│ ├── config.js
│ ├── gatsby-node.js
│ ├── .prettierignore
│ ├── gatsby-config.js
│ ├── package.json
│ ├── .gitignore
│ ├── create
│ ├── createTags.js
│ ├── createUsers.js
│ ├── createCategories.js
│ └── createPages.js
│ └── .eslintrc.json
├── package.json
└── README.md
/site/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | public
3 | .cache
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/.nvmrc:
--------------------------------------------------------------------------------
1 | 11.10.1
2 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/index.js:
--------------------------------------------------------------------------------
1 | //no op
2 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/coblocks/style/_formatting.scss:
--------------------------------------------------------------------------------
1 | .uppercase {
2 | text-transform: uppercase;
3 | }
4 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_misc.scss:
--------------------------------------------------------------------------------
1 | .entry-content > iframe[id*="blubrryplayer"] {
2 | display: block;
3 | }
4 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_more.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | > [id*="more-"] {
3 | display: none;
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": true,
3 | "singleQuote": true,
4 | "tabWidth": 2,
5 | "trailingComma": "es5"
6 | }
7 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/coblocks/style/_background-parallax.scss:
--------------------------------------------------------------------------------
1 | .has-parallax {
2 | background-attachment: fixed;
3 | }
4 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/coblocks/style/_shadow.scss:
--------------------------------------------------------------------------------
1 | .has-shadow {
2 | box-shadow: 0 1.5vw 3vw -0.7vw rgba(0, 0, 0, 0.125);
3 | }
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/images/wpgraphql-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zgordon/tabor-gatsby-theme/HEAD/packages/gatsby-theme-tabor/src/images/wpgraphql-logo.png
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gatsby-themes",
3 | "private": true,
4 | "version": "1.0.0",
5 | "workspaces": [
6 | "site",
7 | "packages/*"
8 | ]
9 | }
10 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_gravity.scss:
--------------------------------------------------------------------------------
1 | .gform_wrapper {
2 |
3 | ul,
4 | .gfield {
5 | list-style: none;
6 | padding: 0;
7 | margin: 0;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_blockgallery.scss:
--------------------------------------------------------------------------------
1 | .wp-block-blockgallery-stacked {
2 | li:last-child .blockgallery--caption {
3 | margin-bottom: -10px !important;
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_clearings.scss:
--------------------------------------------------------------------------------
1 | .clear,
2 | .clearfix,
3 | .textwidget,
4 | .site-footer,
5 | .entry-content,
6 | .primary-menu,
7 | article[class^="post-"] {
8 | @include clearfix;
9 | }
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/utils/index.js:
--------------------------------------------------------------------------------
1 | import config from "../../config"
2 |
3 | export const createLocalLink = url => {
4 | if (`#` === url) {
5 | return null
6 | }
7 | return url.replace(config.wordPressUrl, ``)
8 | }
9 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/.editoconfig:
--------------------------------------------------------------------------------
1 | # editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | end_of_line = lf
7 | indent_size = 2
8 | indent_style = space
9 | insert_final_newline = true
10 | trim_trailing_whitespace = true
11 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/templates/page/data.js:
--------------------------------------------------------------------------------
1 | const PageTemplateFragment = `
2 | fragment PageTemplateFragment on WPGraphQL_Page {
3 | id
4 | pageId
5 | title
6 | content
7 | }
8 | `
9 |
10 | module.exports.PageTemplateFragment = PageTemplateFragment
11 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_verse.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .wp-block-verse {
3 | @include blockMobileDisplay();
4 | font-size: $font__size-xs;
5 | line-height: 1.8;
6 | padding-top: 0.7em;
7 | padding-bottom: 0.65em;
8 | padding-left: 1em;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_audio-video.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .wp-block-audio {
3 | audio {
4 | margin-bottom: -10px;
5 | width: 100%;
6 | }
7 | }
8 |
9 | .wp-block-video {
10 | video {
11 | margin-bottom: -10px;
12 | width: 100%;
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_table.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .wp-block-table {
3 | @include blockMobileDisplay();
4 | padding: 20px 25px;
5 |
6 | @media screen and (max-width: $content__width) {
7 | width: calc(100% - #{$content__padding * 2});
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/utils/typography.js:
--------------------------------------------------------------------------------
1 | import Typography from "typography"
2 |
3 | const typography = new Typography({
4 | baseFontSize: "16px",
5 | baseLineHeight: 1.666,
6 | headerFontFamily: ["Heebo", "sans-serif"],
7 | bodyFontFamily: ["Lora", "serif"],
8 | })
9 |
10 | export default typography
11 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Icons/index.js:
--------------------------------------------------------------------------------
1 | export { IconLeft } from "./IconLeft"
2 | export { IconRight } from "./IconRight"
3 | export { Twitter } from "./Twitter"
4 | export { Dribble } from "./Dribble"
5 | export { Medium } from "./Medium"
6 | export { FacebookShare } from "./FacebookShare"
7 | export { Linkedin } from "./Linkedin"
8 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_code.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .wp-block-code {
3 | @include blockMobileDisplay();
4 | padding: 0.8em 1.1em;
5 |
6 | &,
7 | code {
8 | background: none;
9 | }
10 |
11 | code {
12 | font-size: 14px;
13 | line-height: 1.8;
14 | padding: 0;
15 | top: 0;
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * I'm thinking we'll probably end up
3 | * adding this to the .gitignore and have folks configure this on their own?
4 | *
5 | * ¯\_(ツ)_/¯
6 | *
7 | * @type {{wordPressUrl: string}}
8 | */
9 | const config = {
10 | wordPressUrl: `http://alexandraspalato.com/tabor`,
11 | }
12 |
13 | module.exports = config
14 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_embed.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .wp-block-embed {
3 | .jetpack-video-wrapper,
4 | .fluid-width-video-wrapper {
5 | margin: 0;
6 | }
7 |
8 | &-twitter {
9 | .twitter-tweet {
10 | margin-bottom: 0 !important;
11 | margin-left: auto;
12 | margin-right: auto;
13 | }
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/HeaderArchive.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const HeaderArchive = ({ name }) => (
4 |
9 | );
10 |
11 | export default HeaderArchive;
12 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_font-sizes.scss:
--------------------------------------------------------------------------------
1 | .has-small-font-size {
2 | font-size: $font__size-editor--small;
3 | }
4 |
5 | .has-medium-font-size {
6 | font-size: $font__size-editor--medium;
7 | }
8 |
9 | .has-large-font-size {
10 | font-size: $font__size-editor--large;
11 | }
12 |
13 | .has-huge-font-size {
14 | font-size: $font__size-editor--huge;
15 | }
16 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/MenuToggle.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const MenuToggle = ({ onClick }) => (
4 |
12 | );
13 |
14 | export default MenuToggle;
15 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Icons/IconDown.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | export default () => (
4 |
15 | );
16 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/coblocks/style/_padding.scss:
--------------------------------------------------------------------------------
1 | .pb-0 {
2 | padding-bottom: 0 !important;
3 | }
4 |
5 | .pt-0 {
6 | padding-top: 0 !important;
7 | }
8 |
9 | .has-small-padding {
10 | padding: 14px;
11 | }
12 |
13 | .has-medium-padding {
14 | padding: 24px;
15 | }
16 |
17 | .has-large-padding {
18 | padding: 34px;
19 | }
20 |
21 | .has-huge-padding {
22 | padding: 60px;
23 | }
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Icons/IconLeft.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 |
3 | export const IconLeft = () => (
4 |
9 | )
10 |
--------------------------------------------------------------------------------
/site/gatsby-config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | siteMetadata: {
3 | title: `Gatsby Starter`,
4 | description: `Gatsby starter site `,
5 | author: `@alexadark`,
6 | wordPressUrl: `http://alexandraspalato.com/tabor`,
7 | },
8 | __experimentalThemes: [
9 | {
10 | resolve: 'gatsby-theme-tabor',
11 | options: { wordPressUrl: `http://alexandraspalato.com/tabor` },
12 | },
13 | ],
14 | };
15 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_animated-typography.scss:
--------------------------------------------------------------------------------
1 | .typed-cursor {
2 | opacity: 1;
3 | width: 1px;
4 | display: inline-block;
5 | height: 40px;
6 | position: relative;
7 | top: 2px;
8 | margin-left: 5px;
9 | background: $black;
10 | text-indent: -9999em;
11 | animation: blink 1s infinite;
12 | }
13 |
14 | @keyframes blink{
15 | 0% { opacity:1; }
16 | 50% { opacity:0; }
17 | 100% { opacity:1; }
18 | }
19 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_pricing-tables.scss:
--------------------------------------------------------------------------------
1 | .bean-pricing-table {
2 |
3 | @media only screen and (min-width: 600px) {
4 | margin-left: -20px;
5 | width: calc( 100% + 40px );
6 | }
7 |
8 | @media only screen and (min-width: 768px) {
9 | display: flex;
10 | }
11 |
12 | &.three-column-table {
13 |
14 | .pricing-column {
15 | float: none;
16 | width: 100% !important;
17 | }
18 |
19 | }
20 | }
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Icons/IconRight.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 |
3 | export const IconRight = () => (
4 |
5 |
6 |
7 |
8 |
9 | )
10 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/pages/404.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 |
3 | import Layout from "../components/Layout"
4 | import Seo from "../components/Seo"
5 |
6 | const NotFoundPage = ({ location }) => (
7 |
8 |
9 | NOT FOUND
10 | You just hit a route that doesn't exist... the sadness.
11 |
12 | )
13 |
14 | export default NotFoundPage
15 |
--------------------------------------------------------------------------------
/site/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "site",
3 | "version": "0.0.1",
4 | "description": "demo site",
5 | "main": "gatsby-config.js",
6 | "license": "MIT",
7 | "private": true,
8 | "scripts": {
9 | "develop": "gatsby develop",
10 | "build": "gatsby build",
11 | "serve": "gatsby serve"
12 | },
13 | "dependencies": {
14 | "gatsby": "^2.1.27",
15 | "gatsby-theme-tabor": "*",
16 | "react": "^16.8.4",
17 | "react-dom": "^16.8.4"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/PostEntryTitle.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 | import { Link } from "gatsby"
3 |
4 | const PostEntryTitle = ({ post, location, titleClass }) => (
5 | <>
6 | {location === "single" ? (
7 |
{post.title}
8 | ) : (
9 |
10 | {post.title}
11 |
12 | )}
13 | >
14 | )
15 |
16 | export default PostEntryTitle
17 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_list.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | ul,
3 | ol {
4 |
5 | li {
6 | margin: 0 0 5px 20px;
7 | }
8 |
9 | ol {
10 | margin-top: 7px;
11 | margin-bottom: 7px;
12 | padding-left: 0;
13 |
14 | li {
15 | list-style: decimal;
16 | }
17 | }
18 |
19 | ul {
20 | margin-top: 7px;
21 | margin-bottom: 7px;
22 | padding-left: 0;
23 |
24 | li {
25 | list-style: circle;
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/templates/posts/README.md:
--------------------------------------------------------------------------------
1 | # Posts
2 |
3 | This directory contains the templates and data
4 | dependencies for Posts.
5 |
6 | ## File Structure
7 |
8 | - **data.js**: The data dependencies for the templates
9 | - GraphQL Query fragments are defined here and used
10 | within the `createPosts` portion of the Gatsby Build
11 | step.
12 | - **single.js**: The template for a single post
13 | - **archive.js**: The template for the paginated blogroll
14 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Icons/Play.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 |
3 | export default () => (
4 |
5 |
6 | )
7 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Layout.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Header from './Header';
3 | import Footer from './Footer';
4 | import PropTypes from 'prop-types';
5 | import '../styles/scss/style.scss';
6 |
7 | const Layout = ({ children }) => (
8 | <>
9 |
10 | {children}
11 |
12 | >
13 | );
14 |
15 | Layout.propTypes = {
16 | children: PropTypes.node.isRequired,
17 | };
18 |
19 | export default Layout;
20 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_preformatted.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .wp-block-preformatted {
3 | background: none;
4 | font-size: $font__size-xs;
5 | line-height: 1.8;
6 | margin-bottom: $content__spacer--mobile + 4px;
7 | margin-top: $content__spacer--mobile + 5px;
8 | white-space: pre-wrap;
9 |
10 | @media screen and (min-width: $content__media-query) {
11 | margin-bottom: $content__spacer + 5px;
12 | margin-top: $content__spacer + 6px;
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_file.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .wp-block-file {
3 | a {
4 | box-shadow: none;
5 | }
6 |
7 | a:not(.wp-block-file__button) {
8 | text-decoration: underline;
9 | }
10 |
11 | .wp-block-file__button {
12 | background: $black;
13 | font-size: $font__size-xs;
14 | font-weight: 500;
15 | font-family: $font__heading;
16 | left: 10px;
17 | padding: 0.6em 1.2em 0.55em;
18 | position: relative;
19 | top: -2px;
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/coblocks/_style.scss:
--------------------------------------------------------------------------------
1 | @import "_common";
2 | // Background
3 | @import "style/background-classes";
4 | @import "style/background-overlay";
5 | @import "style/background-parallax";
6 |
7 | // Editor formatting
8 | @import "style/formatting";
9 |
10 | // Utility classes
11 | @import "style/padding";
12 | @import "style/margin";
13 | @import "style/gutter";
14 | @import "style/shadow";
15 |
16 | // Mobile classes
17 | @import "style/stacked";
18 |
19 | //Blocks
20 | @import "blocks/media-card";
21 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_cf7.scss:
--------------------------------------------------------------------------------
1 | .wpcf7-form {
2 |
3 | .wpcf7-not-valid-tip {
4 | @include font-size(15px);
5 | margin-bottom: .9em;
6 | margin-top: -1.3em;
7 | }
8 |
9 | .wpcf7-response-output {
10 | @include font-size(14px);
11 | background: $background;
12 | border-radius: 4px;
13 | border: none;
14 | font-family: $font__heading;
15 | font-style: inherit;
16 | text-align: center;
17 | padding-top: .4em;
18 | padding-bottom: .4em;
19 | margin-left: auto;
20 | margin-right: auto;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/coblocks/style/_background-overlay.scss:
--------------------------------------------------------------------------------
1 | .has-background-overlay {
2 |
3 | position: relative;
4 |
5 | &::before {
6 | background-color: inherit;
7 | bottom: 0;
8 | content: "";
9 | left: 0;
10 | opacity: 0.5;
11 | position: absolute;
12 | right: 0;
13 | top: 0;
14 | }
15 | }
16 |
17 | @for $i from 1 through 9 {
18 |
19 | .has-background-overlay-#{ $i * 10 }::before {
20 | opacity: $i * 0.1;
21 | }
22 | }
23 |
24 | .has-background-overlay:not(.has-background) {
25 | background-color: #000;
26 | }
27 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/navigation/_links.scss:
--------------------------------------------------------------------------------
1 | a {
2 | color: inherit;
3 | text-decoration: none;
4 |
5 | &:hover,
6 | &:active {
7 | outline: 0;
8 | }
9 | }
10 |
11 | .pingback a:not(.comment-edit-link),
12 | .entry-content a:not(.bean-btn) {
13 | box-shadow: inset 0 -1px 0 currentColor;
14 | text-decoration: none;
15 | transition: color 80ms ease-in, box-shadow 130ms ease-in-out;
16 |
17 | &:focus {
18 | outline: thin dotted;
19 | }
20 |
21 | &:hover,
22 | &:focus {
23 | box-shadow: inset 0 0 0 currentcolor, 0 3px 0 currentcolor;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Logo.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Link } from 'gatsby';
3 | import wpgraphqlLogo from '../images/wpgraphql-logo.png';
4 |
5 | const Logo = ({ data }) => (
6 |
7 |
16 |
17 | );
18 |
19 | export default Logo;
20 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/coblocks/style/_margin.scss:
--------------------------------------------------------------------------------
1 | .mb-0 {
2 | margin-bottom: 0 !important;
3 | }
4 |
5 | .mt-0 {
6 | margin-top: 0 !important;
7 | }
8 |
9 | body {
10 | .has-margin {
11 | &.has-small-margin {
12 | margin-bottom: 14px;
13 | margin-top: 14px;
14 | }
15 |
16 | &.has-medium-margin {
17 | margin-bottom: 24px;
18 | margin-top: 24px;
19 | }
20 |
21 | &.has-large-margin {
22 | margin-bottom: 34px;
23 | margin-top: 34px;
24 | }
25 |
26 | &.has-huge-margin {
27 | margin-bottom: 60px;
28 | margin-top: 60px;
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/gatsby-node.js:
--------------------------------------------------------------------------------
1 | const createPosts = require(`./create/createPosts`)
2 | const createPages = require(`./create/createPages`)
3 | const createCategories = require(`./create/createCategories`)
4 | const createTags = require(`./create/createTags`)
5 | const createUsers = require(`./create/createUsers`)
6 |
7 | exports.createPages = async ({ actions, graphql }) => {
8 | await createPosts({ actions, graphql })
9 | await createPages({ actions, graphql })
10 | await createCategories({ actions, graphql })
11 | await createTags({ actions, graphql })
12 | await createUsers({ actions, graphql })
13 | }
14 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Icons/ArrowDown.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | export default () => (
4 |
14 |
19 |
20 | );
21 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/.prettierignore:
--------------------------------------------------------------------------------
1 | *.min.js
2 | **/node_modules/**
3 | flow-typed
4 |
5 | # webfont demo styles
6 | **/specimen_files
7 |
8 | # built sites
9 | benchmarks/**/public
10 | e2e-tests/**/public
11 | examples/**/public
12 | integration-tests/**/public
13 | www/public
14 |
15 | # cache-dirs
16 | **/.cache
17 |
18 | # ignore built packages
19 | packages/**/*.js
20 | !packages/gatsby/cache-dir/**/*.js
21 | !packages/*/src/**/*.js
22 | packages/gatsby/cache-dir/commonjs/**/*.js
23 |
24 | # fixtures
25 | **/__testfixtures__/**
26 | **/__tests__/fixtures/**
27 |
28 | infrastructure
29 |
30 | # coverage
31 | coverage
32 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Icons/Linkedin.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 |
3 | export const Linkedin = () => (
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | )
12 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_paragraph.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .has-drop-cap {
3 | &:not(:focus)::first-letter {
4 | font-size: 62px;
5 | font-weight: 800;
6 | line-height: 1;
7 | margin: 0 0.275em 0 0;
8 | padding-top: 7px;
9 | margin-bottom: -3px;
10 | }
11 | }
12 |
13 | p.has-background {
14 | @include blockMobileDisplay();
15 | margin-bottom: $content__spacer--mobile;
16 | margin-top: $content__spacer--mobile;
17 |
18 | @media screen and (min-width: $content__media-query) {
19 | margin-bottom: $content__spacer + 12px;
20 | margin-top: $content__spacer + 12px;
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Tabor Gatsby Theme
2 | A port of the Tabor WordPress Theme over to Gatsby
3 |
4 | ## Demo
5 | Checkout the [Tabor Theme Demo](https://tabor-gatsby-theme.netlify.com/) to see what the site looks like in action.
6 |
7 | ## How to use this repo
8 |
9 | ```
10 | # Clone the repo
11 | git clone https://github.com/zgordon/tabor-gatsby-theme.git
12 |
13 | # Move into the new directory
14 | cd tabor-gatsby-theme
15 |
16 | # Install dependencies
17 | yarn
18 |
19 | # Start the site on http://localhost:8000
20 | yarn workspace site develop
21 | ```
22 |
23 | ## For Help
24 | Please open an issue if you find one, this is a V1 and work in progress :)
25 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_night-mode.scss:
--------------------------------------------------------------------------------
1 | $night_mode_background_base: #1c1b1b;
2 | $night_mode_background: #1c1b1b !important;
3 | $night_mode_text: #939393 !important;
4 | $night_mode_heading: #d3d3d3 !important;
5 |
6 | .night-mode {
7 | @import "night-mode-content";
8 | }
9 |
10 | @media (prefers-color-scheme: dark) {
11 | @import "night-mode-content";
12 |
13 | .c-settings__item--night-mode {
14 | display: none !important;
15 | }
16 | }
17 |
18 | // Loading animation
19 | @keyframes colorchange {
20 | 0% {
21 | background: lighten( #1c1b1b, 7% ) !important;
22 | }
23 | 100% {
24 | background: $night_mode_background;
25 | }
26 | }
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Icons/Search.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 |
3 | export default () => (
4 |
5 |
6 | )
7 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_pagination.scss:
--------------------------------------------------------------------------------
1 | .pagination {
2 | margin-top: 80px;
3 | text-align: center;
4 | @include clearfix();
5 |
6 | & a,
7 | & span {
8 | color: $black;
9 | @include font-size(12px);
10 | text-transform: uppercase;
11 | transform: translate3d(0, 0, 0);
12 | letter-spacing: .15em;
13 | text-decoration: none;
14 | display: inline-block;
15 | font-weight: normal;
16 | vertical-align: middle;
17 | transition: opacity 200ms cubic-bezier(0.33,0,0.2,1);
18 | }
19 |
20 | & .icon {
21 | height: 50px;
22 | width: 50px;
23 | }
24 |
25 | a:hover {
26 | opacity: .4;
27 | }
28 |
29 | .page-numbers:not(.next):not(.prev) {
30 | display: none;
31 | }
32 | }
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/typography/_typography.scss:
--------------------------------------------------------------------------------
1 | body {
2 | @include fluid-type(600px, 1200px, 17px, 19px);
3 | color: $color__text-main;
4 | font-family: $font__body;
5 | line-height: $font__line-height-body;
6 |
7 | .font-size--large & {
8 | @include fluid-type(600px, 1200px, 18px, 20px);
9 | }
10 |
11 | .font-size--larger & {
12 | @include fluid-type(600px, 1200px, 19px, 21px);
13 | }
14 |
15 | .font-size--largest & {
16 | @include fluid-type(600px, 1200px, 20px, 22px);
17 | }
18 | }
19 |
20 | body {
21 | -webkit-overflow-scrolling: touch;
22 | -webkit-text-size-adjust: none;
23 | text-rendering: optimizeLegibility;
24 | word-wrap: break-word;
25 | }
26 |
27 | @import "headings";
28 |
29 | @import "copy";
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_archives-categories.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .wp-block-archives,
3 | .wp-block-categories {
4 |
5 | &.alignleft {
6 | @media screen and (min-width: $content__media-query) {
7 | margin-bottom: 1em;
8 | padding-left: 0;
9 | }
10 | }
11 |
12 | &.alignright {
13 |
14 | @media screen and (min-width: $content__media-query) {
15 | margin-bottom: 1em;
16 | padding-right: 0;
17 | }
18 |
19 | @media screen and (max-width: $content__width) {
20 | margin-left: 0;
21 | }
22 | }
23 |
24 | &.aligncenter {
25 | list-style: none;
26 | padding-left: 0;
27 | text-align: center;
28 | }
29 |
30 | &.alignfull {
31 | padding-left: 20px;
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_button.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .wp-block-button__link {
3 | @include fluid-type(600px, 1200px, 17px, 19px);
4 | font-weight: 500;
5 | font-family: $font__heading;
6 | padding: 8px 30px 7px;
7 | border-radius: 30px;
8 | box-shadow: none !important;
9 | transition: background 200ms cubic-bezier(0.645, 0.045, 0.355, 1), border 200ms cubic-bezier(0.645, 0.045, 0.355, 1), color 200ms cubic-bezier(0.645, 0.045, 0.355, 1), opacity 200ms cubic-bezier(0.645, 0.045, 0.355, 1);
10 |
11 | &:not(.has-background) {
12 | &,
13 | &:hover,
14 | &:active,
15 | &:focus {
16 | background-color: $black
17 | }
18 | }
19 |
20 | &:hover {
21 | box-shadow: none;
22 | opacity: 0.8;
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_ninja.scss:
--------------------------------------------------------------------------------
1 | .nf-form-content {
2 | margin-top: 2em;
3 |
4 | .nf-field-label {
5 | margin-bottom: 0 !important;
6 |
7 | label {
8 | font-weight: 500;
9 | }
10 | }
11 |
12 | .ninja-forms-field {
13 | border-width: 2px !important;
14 | }
15 |
16 | .nf-error-msg {
17 | @include font-size(15px);
18 | font-family: $font__heading;
19 | }
20 | }
21 |
22 | .nf-error-field-errors {
23 | @include font-size(14px);
24 | background: $background;
25 | border-radius: 4px;
26 | border: none;
27 | color: $black !important;
28 | font-family: $font__heading;
29 | font-style: inherit;
30 | text-align: center;
31 | padding-top: .4em;
32 | padding-bottom: .4em;
33 | margin-left: auto;
34 | margin-right: auto;
35 | }
36 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_accessibility.scss:
--------------------------------------------------------------------------------
1 | // Text meant only for screen readers.
2 | .screen-reader-text {
3 | clip: rect(1px, 1px, 1px, 1px);
4 | height: 1px;
5 | overflow: hidden;
6 | position: absolute !important;
7 | width: 1px;
8 | word-wrap: normal !important; /* Many screen reader and browser combinations announce broken words as they would appear visually. */
9 |
10 | &:focus {
11 | @include font-size(15px);
12 | background-color: $color--background-screen;
13 | border-radius: 3px;
14 | clip: auto;
15 | color: $color--text-screen;
16 | display: block;
17 | height: auto;
18 | left: 5px;
19 | line-height: normal;
20 | padding: 0.9375rem;
21 | text-decoration: none;
22 | top: 5px;
23 | width: auto;
24 | z-index: 100000;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/media/_captions.scss:
--------------------------------------------------------------------------------
1 | .wp-caption {
2 | margin-bottom: 1.5em;
3 | max-width: 100%;
4 | text-align: center;
5 | }
6 |
7 | .wp-caption img[class*="wp-image-"] {
8 | display: block;
9 | }
10 |
11 | .wp-caption:not(.aligncenter) img[class*="wp-image-"] {
12 | margin-left: auto;
13 | margin-right: auto;
14 | }
15 |
16 | .wp-caption-text,
17 | .wp-block-image figcaption,
18 | .wp-block-gallery .blocks-gallery-item figcaption {
19 | @include font-size(12px);
20 | color: $gray;
21 | font-family: $font__heading;
22 | line-height: 1.5;
23 | margin-top: 15px;
24 | margin-bottom: 30px;
25 |
26 | @media (min-width: 600px) {
27 | @include font-size(13px);
28 | margin-bottom: 40px;
29 | }
30 |
31 | .alignleft &,
32 | .alignright & {
33 | margin-bottom: 0;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/templates/posts/archive.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 | import Layout from "../../components/Layout"
3 | import PostEntry from "../../components/PostEntry"
4 | import Pagination from "../../components/Pagination"
5 | import SEO from '../../components/SEO';
6 |
7 |
8 | const BlogArchive = props => {
9 | const {
10 | pageContext: { nodes, pageNumber, hasNextPage, itemsPerPage, allPosts },
11 | } = props
12 | return (
13 |
14 |
15 | {nodes && nodes.map(post => )}
16 |
22 |
23 | )
24 | }
25 |
26 | export default BlogArchive
27 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/templates/tags/archive.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Layout from '../../components/Layout';
3 | import PostEntry from '../../components/PostEntry';
4 | import HeaderArchive from '../../components/HeaderArchive';
5 | import SEO from '../../components/SEO';
6 |
7 | const SingleTag = props => {
8 | const {
9 | pageContext: { name, posts },
10 | } = props;
11 |
12 | return (
13 |
14 |
18 |
19 |
20 | {posts.nodes &&
21 | posts.nodes.map(post => {
22 | return ;
23 | })}
24 |
25 | );
26 | };
27 |
28 | export default SingleTag;
29 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/templates/users/archive.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Layout from '../../components/Layout';
3 | import PostEntry from '../../components/PostEntry';
4 | import HeaderArchive from '../../components/HeaderArchive';
5 | import SEO from '../../components/SEO';
6 |
7 | const AuthorArchive = props => {
8 | const {
9 | pageContext: { name, posts },
10 | } = props;
11 | return (
12 |
13 |
17 |
18 |
19 | {posts.nodes &&
20 | posts.nodes.map(post => {
21 | return ;
22 | })}
23 |
24 | );
25 | };
26 |
27 | export default AuthorArchive;
28 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Icons/Twitter.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 |
3 | export const Twitter = () => (
4 |
5 |
10 |
11 | )
12 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_latest-comments.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .wp-block-latest-comments {
3 | margin: $content__spacer--mobile + 7px auto $content__spacer--mobile + 5px;
4 | padding-left: 0;
5 |
6 | @media screen and (min-width: $content__media-query) {
7 | margin-bottom: $content__spacer + 5px;
8 | margin-top: $content__spacer + 5px;
9 | }
10 |
11 | &.alignwide {
12 | @include blockWideDisplay();
13 | }
14 |
15 | &__comment {
16 | @include font-size(17px);
17 | margin-bottom: 1.4em !important;
18 | }
19 |
20 | &__comment-date {
21 | @include font-size(14px);
22 | color: $gray;
23 | font-family: $font__figcaption;
24 | margin-top: 0.75em;
25 | }
26 |
27 | &__comment-excerpt p {
28 | font-size: 17px;
29 | line-height: 1.6;
30 | margin-bottom: 0;
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_amazon-polly.scss:
--------------------------------------------------------------------------------
1 | #amazon-polly-by-tab {
2 | @include hide();
3 | }
4 |
5 | #amazon-polly-audio-tab {
6 | padding: 0;
7 | }
8 |
9 | #amazon-polly-audio-table {
10 | @include blockMobileDisplay();
11 | border: none !important;
12 | margin-top: 15px !important;
13 | width: calc( 100% - 40px ) !important;
14 |
15 | body:not(.single) & {
16 | display: none;
17 | }
18 |
19 | audio {
20 | margin-bottom: -10px;
21 | }
22 | }
23 |
24 | .amazon-polly-label {
25 | margin-bottom: 0 !important;
26 |
27 | body:not(.single) & {
28 | display: none;
29 | }
30 |
31 | .icon {
32 | fill: $gray;
33 | height: 28px;
34 | left: -4px;
35 | opacity: .8;
36 | position: relative;
37 | width: 28px;
38 | }
39 |
40 | &-text {
41 | margin-bottom: 0;
42 | top: 1px;
43 | font-size: 17px;
44 | }
45 | }
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/templates/categories/archive.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Layout from '../../components/Layout';
3 | import PostEntry from '../../components/PostEntry';
4 | import HeaderArchive from '../../components/HeaderArchive';
5 | import SEO from '../../components/SEO';
6 |
7 | const SingleCategory = props => {
8 | const {
9 | pageContext: { name, posts },
10 | } = props;
11 |
12 | return (
13 |
14 |
18 |
19 |
20 | {posts.nodes &&
21 | posts.nodes.map(post => {
22 | return ;
23 | })}
24 |
25 | );
26 | };
27 |
28 | export default SingleCategory;
29 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Icons/Settings.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 |
3 | export default () => (
4 |
5 | )
6 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/PostEntryMeta.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import moment from 'moment/moment';
3 | import { Link } from 'gatsby';
4 |
5 | const PostEntryMeta = ({ post }) => (
6 |
7 |
8 |
9 |
12 |
13 |
14 |
15 |
16 | by
17 |
18 |
19 | {` ${post.author.name}`}
20 |
21 |
22 |
23 |
24 |
25 | );
26 |
27 | export default PostEntryMeta;
28 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Icons/Settings3.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 |
3 | export default () => (
4 |
5 | )
6 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_color-palette.scss:
--------------------------------------------------------------------------------
1 | $color_1: #242424;
2 | $color_2: #535353;
3 | $color_3: #f5f5f5;
4 | $color_4: #fff;
5 | $color_5: #e0d8e2;
6 | $color_6: #c5dcf3;
7 | $color_7: #d0eac4;
8 | $color_8: #fbf3d6;
9 | $color_9: #fbe7dd;
10 | $color_10: #d6efee;
11 |
12 | $colors: (black, $color_1), (gray, $color_2), (light-gray, $color_3), (white, $color_4), (titan-white, $color_5), (tropical-blue, $color_6),
13 | (peppermint, $color_7), (pipi, $color_8), (bridesmaid, $color_9), (iceberg, $color_10);
14 |
15 | @each $name, $color in $colors {
16 | .has-#{$name}-color {
17 | color: $color;
18 | }
19 |
20 | .has-#{$name}-background-color {
21 | background-color: $color;
22 | }
23 | }
24 |
25 | // Fallback color for .has-background-color.
26 | .has-background:not([class*="background-color"]) {
27 | background-color: $color--has-background-color-fallback;
28 | }
29 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_separator.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .wp-block-separator {
3 | background: none;
4 | border-bottom-color: $black;
5 | max-width: $content__width--less-padding - $content__padding * 2;
6 |
7 | &:not(.is-style-wide):not(.is-style-dots) {
8 | width: calc(100px - #{$content__padding} * 2);
9 | }
10 |
11 | &.is-style-wide {
12 | margin-left: $content__padding;
13 | margin-right: $content__padding;
14 |
15 | @media screen and (min-width: $content__media-query) {
16 | margin-left: auto;
17 | margin-right: auto;
18 | }
19 | }
20 |
21 | &.is-style-dots {
22 | opacity: 1;
23 | line-height: 1.7;
24 |
25 | &::before {
26 | font-size: 36px;
27 | font-weight: 800;
28 | letter-spacing: 0.55em;
29 | margin-left: 19px;
30 | padding-left: 0;
31 | top: calc(50% - 28px);
32 | }
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/layout/_main.scss:
--------------------------------------------------------------------------------
1 | .site-content {
2 | overflow: hidden;
3 | z-index: 2;
4 |
5 | & {
6 | padding-top: 2em;
7 |
8 | @media only screen and (max-width: 899px) and (min-width: 600px) {
9 | padding-top: 4.4em;
10 | }
11 | }
12 |
13 | .has-sidebar & {
14 | max-width: 1200px;
15 | margin: 0 auto;
16 | }
17 |
18 | .blog &,
19 | .search &,
20 | .single &,
21 | .archive & {
22 |
23 | @media only screen and (min-width: 600px) {
24 | padding-top: 2.77em;
25 | }
26 |
27 | @media only screen and (max-width: 899px) and (min-width: 600px) {
28 | padding-top: 8.19em;
29 | }
30 | }
31 | }
32 |
33 | .site {
34 | margin-bottom: 0;
35 |
36 | body:not(.blog):not(.search):not(.single):not(.archive) & {
37 | margin-top: 0;
38 | }
39 |
40 | .blog &,
41 | .search &,
42 | .single &,
43 | .archive & {
44 | @media only screen and (min-width: 600px) {
45 | padding-top: 2em;
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_error404.scss:
--------------------------------------------------------------------------------
1 | .error404 {
2 |
3 | .site-main {
4 |
5 | @media only screen and (min-height: 700px) {
6 | display: flex;
7 | align-items: center;
8 | margin: 0;
9 | padding: 0;
10 | width: 100vw;
11 | height: 100vh;
12 | position: absolute;
13 | top: 0;
14 | z-index: -1;
15 | }
16 | }
17 |
18 | .not-found {
19 | margin: 0 auto !important;
20 | padding: 0 20px;
21 | text-align: center;
22 |
23 | @media only screen and (min-width: 600px) {
24 | padding: 0;
25 | }
26 | }
27 |
28 | .page-header {
29 | max-width: 340px;
30 | margin: 0 auto 40px;
31 |
32 | .h1 {
33 | margin-bottom: 10px;
34 | }
35 | }
36 |
37 | .page-content {
38 |
39 | .search-form {
40 | margin-bottom: 2em;
41 | max-width: 240px;
42 | margin-left: auto;
43 | margin-right: auto;
44 |
45 | @media only screen and (min-width: 600px) {
46 | max-width: 300px;
47 | }
48 | }
49 | }
50 | }
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/navigation/_nav-overflow.scss:
--------------------------------------------------------------------------------
1 | .nav--overflow:not(.sub-menu) {
2 | height: 33px;
3 | line-height: initial;
4 |
5 | &::after {
6 | background: linear-gradient(90deg, hsla(0, 0%, 100%, 0) 0, $white 95%, $white);
7 | content: "";
8 | display: block;
9 | height: 100%;
10 | pointer-events: none;
11 | position: absolute;
12 | right: 0;
13 | top: 0;
14 | width: 50px;
15 |
16 | @media (min-width: 600px) {
17 | width: 100px;
18 | }
19 | }
20 |
21 | li {
22 | display: inline-block;
23 | padding: 0;
24 | position: relative;
25 | text-align: left;
26 |
27 | a {
28 | display: inline-block;
29 | }
30 | }
31 |
32 | > div {
33 | height: 44px;
34 | overflow-x: auto;
35 | overflow-y: hidden;
36 | padding-bottom: 50px;
37 | -webkit-overflow-scrolling: touch;
38 | white-space: nowrap;
39 | -ms-overflow-style: -ms-autohiding-scrollbar;
40 | }
41 |
42 | ul {
43 | white-space: nowrap;
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Icons/Medium.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 |
3 | export const Medium = () => (
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | )
12 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Footer.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Subscribe from './Subscribe';
3 |
4 | const Footer = () => (
5 |
29 | );
30 |
31 | export default Footer;
32 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_captions.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 |
3 | figcaption {
4 | display: block;
5 | font-family: $font__figcaption;
6 | font-size: $font__size-xs;
7 | line-height: $font__line-height-pre;
8 | margin: 0 0 -10px !important;
9 | padding-top: 10px;
10 | text-align: center;
11 |
12 | a {
13 | color: inherit;
14 | }
15 | }
16 |
17 |
18 | figcaption:not(.blockgallery--caption),
19 | .blockgallery:not(.has-caption-color) figcaption {
20 | color: $gray;
21 | }
22 |
23 | .wp-block-gallery .blocks-gallery-item figcaption {
24 | color: $white !important;
25 | margin: 0 !important;
26 | padding-bottom: 10px;
27 | }
28 | }
29 |
30 | .entry-media {
31 |
32 | figcaption {
33 | display: block;
34 | font-family: $font__figcaption;
35 | font-size: $font__size-xs;
36 | line-height: $font__line-height-pre;
37 | margin: 0 0 -10px !important;
38 | padding-top: 10px;
39 | text-align: center;
40 |
41 | a {
42 | color: inherit;
43 | }
44 | }
45 | }
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Icons/Settings2.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 |
3 | export default () => (
4 |
5 | )
6 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/layout/_search.scss:
--------------------------------------------------------------------------------
1 | .search-form {
2 | position: relative;
3 |
4 | .search-field {
5 | margin: 0;
6 | }
7 |
8 | .search-submit {
9 | bottom: 3px;
10 | padding: 0.2em .8em;
11 | position: absolute;
12 | right: -2px;
13 | top: 2px;
14 | height: 46px;
15 |
16 | .icon {
17 | fill: $black;
18 | height: 27px;
19 | top: .08em;
20 | position: relative;
21 | width: 27px;
22 | }
23 | }
24 | }
25 |
26 | .search-no-results {
27 |
28 | .site-main {
29 | @media only screen and (min-height: 500px) {
30 | display: flex;
31 | align-items: center;
32 | margin: 0;
33 | padding: 0;
34 | width: 100vw;
35 | height: 100vh;
36 | position: absolute;
37 | top: 0;
38 | z-index: -1;
39 | }
40 | }
41 |
42 | .search-wrapper {
43 | margin: 0 auto !important;
44 | padding: 0;
45 | text-align: center;
46 | }
47 |
48 | .page-header {
49 | margin: 0 auto 15px;
50 | }
51 |
52 | .site-footer {
53 | display: none;
54 | }
55 | }
56 |
57 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/EngagementBar.js:
--------------------------------------------------------------------------------
1 | import React, { useRef } from 'react';
2 | import Headroom from 'react-headroom';
3 | import ShareIcons from './ShareIcons';
4 | import NextPost from './NextPost';
5 |
6 | const EngagementBar = ({ post }) => {
7 | const barRef = useRef();
8 | const pinBar = () => barRef.current.classList.add('drop-in--pinned');
9 | const unpinBar = () =>
10 | barRef.current.classList.replace('drop-in--pinned', 'drop-in--unpinned');
11 | return (
12 |
13 |
23 |
24 | );
25 | };
26 |
27 | export default EngagementBar;
28 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/media/_galleries.scss:
--------------------------------------------------------------------------------
1 | .gallery-item {
2 | display: inline-block;
3 | text-align: left;
4 | vertical-align: top;
5 | margin: 0 0 1.5em;
6 | padding: 0 1em 0 0;
7 | width: 50%;
8 |
9 | a {
10 | box-shadow: none !important;
11 | }
12 | }
13 |
14 | .gallery-columns-1 .gallery-item {
15 | width: 100%;
16 | }
17 |
18 | .gallery-columns-2 .gallery-item {
19 | max-width: 50%;
20 | }
21 |
22 | .gallery-columns-3 .gallery-item {
23 | max-width: 33.33%;
24 | }
25 |
26 | .gallery-item a,
27 | .gallery-item a:hover,
28 | .gallery-item a:focus {
29 | box-shadow: none;
30 | background: none;
31 | display: inline-block;
32 | max-width: 100%;
33 | }
34 |
35 | .gallery-item a img {
36 | display: block;
37 | transition: filter 0.2s ease-in;
38 | backface-visibility: hidden;
39 | }
40 |
41 | .gallery-item a:hover img,
42 | .gallery-item a:focus img {
43 | filter: opacity(60%);
44 | }
45 |
46 | .gallery-caption {
47 | display: block;
48 | text-align: left;
49 | padding: 0 10px 0 0;
50 | margin-bottom: 0;
51 | }
52 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/gatsby-config.js:
--------------------------------------------------------------------------------
1 | const path = require(`path`)
2 | // Plugins
3 | const autoprefixer = require("autoprefixer")
4 |
5 | module.exports = ({ wordPressUrl }) => ({
6 | plugins: [
7 | {
8 | resolve: `gatsby-source-graphql`,
9 | options: {
10 | // This type will contain remote schema Query type
11 | typeName: `WPGraphQL`,
12 | // This is field under which it's accessible
13 | fieldName: `wpgraphql`,
14 | // Url to query from
15 | url: `${wordPressUrl}/graphql`,
16 | },
17 | },
18 | `gatsby-plugin-react-helmet`,
19 | `gatsby-plugin-sass`,
20 | {
21 | resolve: "gatsby-plugin-postcss",
22 | options: {
23 | postCssPlugins: [
24 | autoprefixer({
25 | browsers: ["last 2 versions"],
26 | }),
27 | ],
28 | },
29 | },
30 | {
31 | resolve: `gatsby-plugin-typography`,
32 | options: {
33 | pathToConfigModule: require.resolve(`./src/utils/typography`),
34 | },
35 | },
36 | ],
37 | })
38 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/PostEntryMedia.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 | import { Link } from "gatsby"
3 |
4 | const WithLink = ({ post, location, children }) =>
5 | location === "single" ? (
6 | children
7 | ) : (
8 |
13 | {children}
14 |
15 | )
16 |
17 | const PostEntryMedia = ({ post, location }) => (
18 |
19 |
20 |
24 |
25 |
31 |
32 |
33 |
34 |
35 | )
36 |
37 | export default PostEntryMedia
38 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gatsby-theme-tabor",
3 | "version": "0.0.1",
4 | "description": "Gatsby starter theme",
5 | "main": "index.js",
6 | "license": "MIT",
7 | "devDependencies": {
8 | "gatsby": "^2.1.27",
9 | "react": "^16.8.4",
10 | "react-dom": "^16.8.4"
11 | },
12 | "peerDependencies": {
13 | "gatsby": "^2.1.27",
14 | "react": "^16.8.4",
15 | "react-dom": "^16.8.4"
16 | },
17 | "dependencies": {
18 | "autoprefixer": "^9.4.10",
19 | "axios": "^0.18.0",
20 | "gatsby-plugin-page-creator": "^2.0.9",
21 | "gatsby-plugin-postcss": "^2.0.5",
22 | "gatsby-plugin-react-helmet": "^3.0.8",
23 | "gatsby-plugin-sass": "^2.0.10",
24 | "gatsby-plugin-typography": "^2.2.8",
25 | "gatsby-source-graphql": "^2.0.14",
26 | "moment": "^2.24.0",
27 | "node-sass": "^4.11.0",
28 | "prop-types": "^15.7.2",
29 | "react-extras": "^0.9.0",
30 | "react-headroom": "^2.2.8",
31 | "react-helmet": "^5.2.0",
32 | "react-typography": "^0.16.19",
33 | "typography": "^0.16.19"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_infinite-scroll.scss:
--------------------------------------------------------------------------------
1 | #infinite-handle {
2 | padding: 5px 0;
3 | text-align: center;
4 |
5 | span {
6 | @include font-size(17px);
7 | appearance: none;
8 | background: $black;
9 | border: none;
10 | box-shadow: none;
11 | color: $white;
12 | cursor: pointer;
13 | display: inline-block;
14 | border-radius: 4px;
15 | font-family: $font__heading;
16 | font-weight: 500;
17 | padding: .47em 1.3em .47em;
18 | position: relative;
19 | text-decoration: none;
20 | transform: translate3d(0, 0, 0);
21 | transition: background 200ms cubic-bezier(0.645, 0.045, 0.355, 1), border 200ms cubic-bezier(0.645, 0.045, 0.355, 1);
22 |
23 | &:hover {
24 | background: $gray;
25 | color: $white;
26 | outline: none;
27 | }
28 |
29 | &:focus {
30 | outline: 1px dotted $color--outline-button;
31 | outline-offset: -4px;
32 | }
33 | }
34 |
35 | button {
36 | text-transform: capitalize;
37 | box-shadow: none;
38 | }
39 | }
40 |
41 | .infinite-loader {
42 | min-height: 55px;
43 |
44 | .spinner {
45 | margin: 0 auto;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Icons/Dribble.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 |
3 | export const Dribble = () => (
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | )
12 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/templates/posts/data.js:
--------------------------------------------------------------------------------
1 | const PostTemplateFragment = `
2 | fragment PostTemplateFragment on WPGraphQL_Post {
3 | id
4 | postId
5 | title
6 | content
7 | link
8 | featuredImage {
9 | sourceUrl
10 | title
11 | }
12 | categories {
13 | nodes {
14 | name
15 | slug
16 | id
17 | }
18 | }
19 | tags {
20 | nodes {
21 | slug
22 | name
23 | id
24 | }
25 | }
26 | author {
27 | name
28 | avatar(size:50) {
29 | url
30 | }
31 | slug
32 | }
33 | }
34 | `;
35 |
36 | const BlogPreviewFragment = `
37 | fragment BlogPreviewFragment on WPGraphQL_Post {
38 | id
39 | postId
40 | title
41 | uri
42 | date
43 | slug
44 | excerpt
45 | content
46 | featuredImage {
47 | sourceUrl
48 | title
49 | }
50 | author {
51 | name
52 | avatar(size:50) {
53 | url
54 | }
55 | slug
56 | }
57 | }
58 | `;
59 |
60 | module.exports.PostTemplateFragment = PostTemplateFragment;
61 | module.exports.BlogPreviewFragment = BlogPreviewFragment;
62 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/media/_media.scss:
--------------------------------------------------------------------------------
1 | .size-full,
2 | .size-large {
3 | display: block;
4 | height: auto;
5 | max-width: 100%;
6 | }
7 |
8 | /* Make sure embeds and iframes fit their containers. */
9 | embed,
10 | iframe,
11 | object {
12 | max-width: 100%;
13 | }
14 |
15 | /* Chrome fix for emoji image replacements */
16 | .entry-content {
17 |
18 | img.emoji,
19 | .img.wp-smiley {
20 | opacity: 1;
21 | transition: none;
22 | }
23 | }
24 |
25 | /*--------------------------------------------------------------
26 | ## Alignments
27 | --------------------------------------------------------------*/
28 | @import "alignments";
29 |
30 | /*--------------------------------------------------------------
31 | ## Captions
32 | --------------------------------------------------------------*/
33 | @import "captions";
34 |
35 | /*--------------------------------------------------------------
36 | ## Galleries
37 | --------------------------------------------------------------*/
38 | @import "galleries";
39 |
40 | /*--------------------------------------------------------------
41 | ## Lazy Loading
42 | --------------------------------------------------------------*/
43 | @import "lazyload";
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Pagination.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 | import { Link } from "gatsby"
3 | import { IconLeft, IconRight } from "./Icons"
4 |
5 | const Pagination = ({ pageNumber, hasNextPage, allPosts, itemsPerPage }) => (
6 |
31 | )
32 |
33 | export default Pagination
34 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/PostEntry.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PostEntryTitle from './PostEntryTitle';
3 | import PostEntryMeta from './PostEntryMeta';
4 | import PostEntryMedia from './PostEntryMedia';
5 |
6 | const PostEntry = ({ post }) => {
7 | const excerpt = post.excerpt
8 | ? post.excerpt
9 | : `${post.content &&
10 | post.content
11 | .split(' ')
12 | .slice(0, 30)
13 | .join(' ')} ...`;
14 |
15 | return (
16 |
17 |
18 |
26 | {post.featuredImage &&
}
27 |
33 |
34 |
35 | );
36 | };
37 |
38 | export default PostEntry;
39 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_password-protected.scss:
--------------------------------------------------------------------------------
1 | body:not(.single) .post-password-required {
2 |
3 | .entry-header {
4 | margin-bottom: 0.35em;
5 | }
6 |
7 | .entry-content {
8 | display: none;
9 | }
10 | }
11 |
12 | .is-protected {
13 |
14 | &__inner {
15 |
16 | @media only screen and (min-height: 700px) {
17 | display: flex;
18 | align-items: center;
19 | margin: 0;
20 | padding: 0;
21 | width: 100vw;
22 | height: 100vh;
23 | position: absolute;
24 | top: 0;
25 | z-index: -1;
26 | }
27 | }
28 |
29 | &__inner-wrapper {
30 | margin: 0 auto !important;
31 | padding: 0;
32 | text-align: center;
33 | }
34 |
35 | .page-header {
36 | max-width: 300px;
37 | margin: 0 auto 1.25em;
38 |
39 | @media only screen and (min-width: 600px) {
40 | max-width: 360px;
41 | }
42 |
43 | .icon {
44 | height: 100px;
45 | width: 100px;
46 | }
47 | }
48 |
49 | .page-content {
50 | max-width: 370px;
51 | padding-bottom: 100px;
52 |
53 | @media only screen and (min-height: 700px) {
54 | padding-bottom: 0;
55 | }
56 |
57 | input[type="password"] {
58 | max-width: 260px;
59 | margin-bottom: 0;
60 | margin-right: 5px;
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_image.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .wp-block-image {
3 | img {
4 | display: block;
5 |
6 | @media screen and (max-width: $content__align--mobile-media-query--max) {
7 | width: 100%;
8 | }
9 | }
10 |
11 | .alignleft {
12 | margin-right: $content__padding;
13 |
14 | @media screen and (min-width: $content__align--mobile-media-query--min) {
15 | margin-right: 40px;
16 | }
17 | }
18 |
19 | .alignright {
20 | margin-left: $content__padding;
21 |
22 | @media screen and (min-width: $content__align--mobile-media-query--min) {
23 | margin-left: 40px;
24 | }
25 | }
26 |
27 | .alignleft,
28 | .alignright {
29 | max-width: 100%;
30 |
31 | @media screen and (min-width: $content__align--mobile-media-query--min) {
32 | margin-bottom: 1.75em;
33 | margin-top: 0.5em;
34 | }
35 |
36 | // Override theme styles from core.
37 | @media screen and (max-width: $content__align--mobile-media-query--max) {
38 | display: block;
39 | float: none;
40 | margin-left: 0;
41 | margin-right: 0;
42 | }
43 | }
44 |
45 | .alignfull img {
46 | margin-left: auto;
47 | margin-right: auto;
48 | width: 100vw;
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_revue.scss:
--------------------------------------------------------------------------------
1 | #revue-embed {
2 |
3 | .revue-form-group {
4 |
5 | label {
6 | display: none;
7 | }
8 |
9 | input {
10 | appearance: none;
11 | background: none;
12 | background: transparent;
13 | border: none;
14 | border-bottom: 4px solid $black;
15 | color: $black !important;
16 | font-family: $font__heading !important;
17 | font-weight: 600;
18 | border-radius: 0;
19 | font-size: 18px;
20 | padding-bottom: 0;
21 | box-shadow: none !important;
22 | padding-left: 0;
23 | height: 50px;
24 | margin-bottom: 25px;
25 |
26 | &:focus {
27 | box-shadow: none;
28 | border-color: $gray;
29 | }
30 |
31 | @include input-placeholder {
32 | color: rgba(0, 0, 0, 0.8);
33 | }
34 | }
35 | }
36 |
37 | input[type="submit"] {
38 | border: 0 !important;
39 | background: $black !important;
40 | margin-bottom: 0;
41 | border-radius: 4px;
42 | box-shadow: none !important;
43 | color: #fff !important;
44 | transition: 200ms background cubic-bezier(0.3, -0.55, 0.1, 1.1);
45 | width: 100%;
46 |
47 | &:hover {
48 | background: $gray !important;
49 | }
50 |
51 | .changing & {
52 | transition: 0;
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Subscribe.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const Subscribe = () => (
4 |
31 | );
32 |
33 | export default Subscribe;
34 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/typography/_copy.scss:
--------------------------------------------------------------------------------
1 | em,
2 | cite {
3 | font-style: italic;
4 | }
5 |
6 | b,
7 | strong {
8 | font-weight: bold;
9 | }
10 |
11 | p {
12 | margin: 0 0 1em;
13 | }
14 |
15 | dfn,
16 | cite,
17 | em,
18 | i {
19 | font-style: italic;
20 | }
21 |
22 | q {
23 | quotes: "“" "”" "‘" "’";
24 | }
25 |
26 | address {
27 | font-style: italic;
28 | margin: 0 0 1.75em;
29 | }
30 |
31 | code,
32 | kbd,
33 | tt,
34 | var,
35 | samp,
36 | pre {
37 | font-family: Menlo, Consolas, monaco, monospace;
38 | font-size: $font__size-xs;
39 | }
40 |
41 | pre {
42 | background-color: $color--background-pre;
43 | clear: both;
44 | display: block;
45 | overflow: auto;
46 | white-space: pre-wrap;
47 | word-wrap: break-word;
48 | }
49 |
50 | code {
51 | @include font-size(15px);
52 | padding: 3px 10px;
53 | position: relative;
54 | top: -1px;
55 | border-radius: 3px;
56 | background-color: $color--background-pre;
57 | }
58 |
59 | abbr,
60 | acronym {
61 | border-bottom: 1px dotted $color--border-abbr;
62 | cursor: help;
63 | }
64 |
65 | ins {
66 | background: $color--background-ins;
67 | text-decoration: none;
68 | }
69 |
70 | big {
71 | font-size: 125%;
72 | }
73 |
74 | strike,
75 | del {
76 | text-decoration: line-through;
77 | }
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/templates/page/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Layout from '../../components/Layout';
3 | import SEO from '../../components/SEO';
4 |
5 | const SinglePage = props => {
6 | const {
7 | pageContext: { id, postId, title, content, excerpt },
8 | // location,
9 | // data: {
10 | // wpgraphql: { page },
11 | // },
12 | } = props;
13 |
14 | return (
15 |
16 |
17 |
22 |
23 | {title}
24 |
25 | {/* .meta-info */}
26 |
27 |
28 |
32 | {/* .entry-content */}
33 |
34 |
35 |
36 | {/* #post-${ID} */}
37 |
38 | );
39 | };
40 |
41 | export default SinglePage;
42 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/coblocks/style/_background-classes.scss:
--------------------------------------------------------------------------------
1 | .bg {
2 |
3 | // Background repeat
4 | &-repeat {
5 | background-repeat: repeat;
6 | }
7 |
8 | &-no-repeat {
9 | background-repeat: no-repeat;
10 | }
11 |
12 | &-repeat-x {
13 | background-repeat: repeat-x;
14 | }
15 |
16 | &-repeat-y {
17 | background-repeat: repeat-y;
18 | }
19 |
20 | // Background size
21 | &-cover {
22 | background-size: cover;
23 | }
24 |
25 | &-auto {
26 | background-size: auto;
27 | }
28 |
29 | &-contain {
30 | background-size: contain;
31 | }
32 |
33 | // Background position
34 | &-top-left {
35 | background-position: top left;
36 | }
37 |
38 | &-top-center {
39 | background-position: top center;
40 | }
41 |
42 | &-top-right {
43 | background-position: top right;
44 | }
45 |
46 | &-center-left {
47 | background-position: center left;
48 | }
49 |
50 | &-center-center {
51 | background-position: center center;
52 | }
53 |
54 | &-center-right {
55 | background-position: center right;
56 | }
57 |
58 | &-bottom-left {
59 | background-position: bottom left;
60 | }
61 |
62 | &-bottom-center {
63 | background-position: bottom center;
64 | }
65 |
66 | &-bottom-right {
67 | background-position: bottom right;
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/media/_lazyload.scss:
--------------------------------------------------------------------------------
1 | // Avoid empty images to appear as broken.
2 | img:not([src]):not([srcset]) {
3 | visibility: hidden;
4 | }
5 |
6 | // Fixes Firefox anomaly during images load time
7 | @-moz-document url-prefix() {
8 | img:-moz-loading {
9 | visibility: hidden;
10 | }
11 | }
12 |
13 | // .lazyload,
14 | // .entry-content img {
15 | // opacity: 0;
16 | // transition: opacity 300ms cubic-bezier(.694, 0, .335, 1);
17 |
18 | // &.loaded,
19 | // &.loading {
20 | // opacity: 1;
21 | // }
22 | // }
23 |
24 | .intrinsic {
25 | margin: 0;
26 | height: 0;
27 | position: relative;
28 | width: 100%;
29 |
30 | img {
31 | bottom: 0;
32 | left: 0;
33 | right: 0;
34 | top: 0;
35 | width: 100%;
36 | position: absolute;
37 | z-index: -1;
38 | }
39 | }
40 |
41 | .intrinsic:not(.lazyload--finished) {
42 | &::after {
43 | animation: colorchange 700ms infinite alternate;
44 | position: absolute;
45 | top: 0;
46 | right: 0;
47 | bottom: 0;
48 | left: 0;
49 | content: " ";
50 | z-index: -1;
51 | }
52 | }
53 |
54 | // Loading animation
55 | @keyframes colorchange {
56 | 0% {
57 | background: $white;
58 | }
59 | 100% {
60 | background: $background;
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (http://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # Typescript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # dotenv environment variables file
55 | .env
56 |
57 | # gatsby files
58 | .cache/
59 | public
60 |
61 | # Mac files
62 | .DS_Store
63 | .idea
64 |
65 | # Yarn
66 | yarn-error.log
67 | .pnp/
68 | .pnp.js
69 | # Yarn Integrity file
70 | .yarn-integrity
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/layout/_layout.scss:
--------------------------------------------------------------------------------
1 | /*--------------------------------------------------------------
2 | # Main
3 | --------------------------------------------------------------*/
4 | @import "main";
5 |
6 | /*--------------------------------------------------------------
7 | # Header
8 | --------------------------------------------------------------*/
9 | @import "header";
10 |
11 | /*--------------------------------------------------------------
12 | # Footer
13 | --------------------------------------------------------------*/
14 | @import "footer";
15 |
16 | /*--------------------------------------------------------------
17 | # Sidebar
18 | --------------------------------------------------------------*/
19 | @import "sidebar";
20 |
21 | /*--------------------------------------------------------------
22 | # Hero Block
23 | --------------------------------------------------------------*/
24 | @import "hero-block";
25 |
26 | /*--------------------------------------------------------------
27 | # Posts
28 | --------------------------------------------------------------*/
29 | @import "posts";
30 |
31 | /*--------------------------------------------------------------
32 | # Search
33 | --------------------------------------------------------------*/
34 | @import "search";
35 | @import "header-search";
36 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_gists.scss:
--------------------------------------------------------------------------------
1 | .entry-content h2 + .oembed-gist,
2 | .entry-content h3 + .oembed-gist,
3 | .entry-content h3 + .oembed-gist,
4 | .entry-content h4 + .oembed-gist {
5 | margin-top: 1.75em;
6 |
7 | @media (min-width: 600px) {
8 | margin-top: 2.1em;
9 | }
10 | }
11 |
12 | .oembed-gist {
13 | margin: 1.95em 0 1.9em;
14 |
15 | @media (min-width: 600px) {
16 | margin: 2.35em 0 2.35em;
17 | }
18 |
19 | .gist {
20 | a {
21 | box-shadow: none !important;
22 | }
23 |
24 | img {
25 | opacity: 1;
26 | position: relative;
27 | top: 1px;
28 | }
29 |
30 | .blob-num {
31 | display: none;
32 | }
33 |
34 | .gist-file {
35 | border-bottom: 1px solid #ddd;
36 | margin-bottom: 0;
37 | }
38 |
39 | .gist-file + .gist-file {
40 | margin-top: 20px;
41 | }
42 |
43 | // .gist-meta {
44 | // background: #fafafa;
45 | // color: #fafafa;
46 | // position: relative;
47 |
48 | // a {
49 | // opacity: 0;
50 | // }
51 |
52 | // a:first-of-type {
53 | // @include font-size(14px);
54 | // position: absolute;
55 | // color: $gray;
56 | // left: 0;
57 | // box-shadow: none;
58 | // text-transform: capitalize;
59 | // right: 0;
60 | // opacity: 1;
61 | // line-height: 1;
62 | // text-align: center;
63 | // }
64 | // }
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Icons/Chain.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 |
3 | export default () => (
4 |
5 |
6 | )
7 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/coblocks/style/_stacked.scss:
--------------------------------------------------------------------------------
1 | div {
2 | @media (max-width: #{ ($break-small) }) {
3 | &.is-stacked-on-mobile {
4 | flex-direction: column;
5 |
6 | > [class*="wp-block-coblocks-"] {
7 | width: 100% !important;
8 |
9 | &.wp-block-coblocks-column:last-child {
10 | margin-bottom: 0;
11 | }
12 | }
13 |
14 | // Assign row gutters as margin on the frontend.
15 | &.has-no-gutter {
16 | > [class*="wp-block-coblocks-"] {
17 | &:not(:last-child) {
18 | margin-bottom: 0;
19 | }
20 | }
21 | }
22 |
23 | // Assign row gutters as margin on the frontend.
24 | &.has-small-gutter {
25 | > [class*="wp-block-coblocks-"] {
26 | &:not(:last-child) {
27 | margin-bottom: $gutter--small * 2;
28 | }
29 | }
30 | }
31 |
32 | &.has-medium-gutter {
33 | > [class*="wp-block-coblocks-"] {
34 | &:not(:last-child) {
35 | margin-bottom: $gutter--medium * 2;
36 | }
37 | }
38 | }
39 | &.has-large-gutter {
40 | > [class*="wp-block-coblocks-"] {
41 | &:not(:last-child) {
42 | margin-bottom: $gutter--large * 2;
43 | }
44 | }
45 | }
46 | &.has-huge-gutter {
47 | > [class*="wp-block-coblocks-"] {
48 | &:not(:last-child) {
49 | margin-bottom: $gutter--huge * 2;
50 | }
51 | }
52 | }
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_cover.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .wp-block-cover {
3 | @include blockMobileDisplay();
4 | width: auto;
5 |
6 | .wp-block-cover-text {
7 | font-family: $font__heading;
8 | font-size: $font__size-lg;
9 | font-weight: $font__weight-heading;
10 | max-width: 600px;
11 | width: calc(100vw - (2 * 30px));
12 | }
13 |
14 | &.alignwide {
15 | @include blockWideDisplay();
16 |
17 | .wp-block-cover-text {
18 | max-width: calc(5 * (100vw / 12));
19 | padding: 30px;
20 | }
21 | }
22 |
23 | &.alignfull {
24 | .wp-block-cover-text {
25 | max-width: calc(5.5 * (100vw / 12));
26 | padding: 50px;
27 | }
28 | }
29 |
30 | &.alignleft,
31 | &.alignright,
32 | &.aligncenter {
33 | .wp-block-cover-text {
34 | left: 50%;
35 | padding: 20px;
36 | position: absolute;
37 | top: 50%;
38 | transform: translate(-50%, -50%);
39 | width: 100%;
40 | z-index: 1;
41 | }
42 | }
43 |
44 | &.alignleft,
45 | &.alignright {
46 | width: calc(100% - (2 * #{$content__padding}));
47 |
48 | @media screen and (min-width: $content__align--mobile-media-query--min) {
49 | margin-top: 0.5em;
50 | width: 100%;
51 | }
52 | }
53 |
54 | &.has-left-content {
55 | justify-content: flex-start;
56 | }
57 |
58 | &.has-right-content {
59 | justify-content: flex-end;
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/SocialNav.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Dribble, Twitter, Medium } from './Icons';
3 | //TODO: make it dynamic
4 |
5 | const SocialNav = () => (
6 |
42 | );
43 |
44 | export default SocialNav;
45 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/coblocks/_common.scss:
--------------------------------------------------------------------------------
1 | // This SCSS file loads per every instance of each block.
2 |
3 | // Fonts & basics
4 | $default-font: -apple-system, blinkmacsystemfont, "Segoe UI", roboto, oxygen-sans, ubuntu, cantarell, "Helvetica Neue", sans-serif;
5 |
6 | // CoBlocks branding color.
7 | $coblocks: #1e35b9;
8 |
9 | // Colors.
10 | $black: rgb(41, 41, 41);
11 | $black-000: #000;
12 | $gray: #555d66;
13 | $red: #c92c2c;
14 | $lightred: #f9e2e2;
15 | $lightgreen: #eff9f1;
16 | $darkgreen: #337f46;
17 | $darkred: #a00;
18 | $green: #4ab866;
19 | $white: #fff;
20 | $lightgray: rgba(0, 0, 0, 0.15);
21 |
22 | // Accordion.
23 | $accordion-border-radius: 4px;
24 | $accordion-background: #f2f2f2;
25 |
26 | // Social.
27 | $twitter: #1da1f2;
28 |
29 | // Breakpoints.
30 | $break-small-twentynineteen: 1024px;
31 | $break-small-twentynineteen--min: 768px;
32 | $break-small-mediacard: 660px;
33 |
34 | // Variables from core.
35 | $block-padding: 10px;
36 | $border-width: 1px;
37 | $break-small: 600px;
38 | $break-smallest: 420px;
39 | $grid-size-large: 11px;
40 | $dark-gray-500: #555d66; // Use this most of the time for dark items.
41 |
42 | @mixin break-small() {
43 | @media (min-width: #{ ($break-small) }) {
44 | @content;
45 | }
46 | }
47 |
48 | @mixin break-smallest() {
49 | @media (min-width: #{ ($break-smallest) }) {
50 | @content;
51 | }
52 | }
53 |
54 | @mixin break-small-mediacard() {
55 | @media (min-width: #{ ($break-small-mediacard) }) {
56 | @content;
57 | }
58 | }
59 |
60 | $gutter--small: 18px;
61 | $gutter--medium: 22px;
62 | $gutter--large: 33px;
63 | $gutter--huge: 60px;
64 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_gallery.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .wp-block-gallery {
3 | &:not([class*="align"]) {
4 | margin-bottom: -6px;
5 | margin-top: $content__spacer--mobile + 12px;
6 |
7 | @media screen and (min-width: $content__media-query) {
8 | margin-top: $content__spacer + 12px;
9 | }
10 | }
11 |
12 | .blocks-gallery-item:last-child {
13 | margin-bottom: 16px;
14 | }
15 |
16 | &.alignleft {
17 | padding-right: 0 !important;
18 | }
19 |
20 | &.alignright {
21 | padding-left: 0 !important;
22 | }
23 |
24 | &.alignleft,
25 | &.alignright {
26 | margin-top: $content__spacer - 17px;
27 |
28 | @media screen and (max-width: $content__align--mobile-media-query--max) {
29 | margin-bottom: $content__spacer - 38px !important;
30 | margin-top: $content__spacer !important;
31 | max-width: none;
32 | width: calc(100% - #{$content__padding});
33 | }
34 |
35 | @media screen and (min-width: $content__media-query) {
36 | padding-left: 0;
37 | padding-right: 0;
38 | }
39 | }
40 |
41 | &.alignwide {
42 | margin: $content__spacer + 8px auto $content__spacer - 10px;
43 |
44 | @media screen and (min-width: $content__media-query) {
45 | margin-bottom: $content__spacer + 6px;
46 | margin-top: $content__spacer + 20px;
47 | }
48 | }
49 |
50 | &.alignfull {
51 | margin: $content__spacer + 8px 0 $content__spacer - 10px;
52 |
53 | @media screen and (min-width: $content__media-query) {
54 | margin-bottom: $content__spacer + 15px;
55 | margin-top: $content__spacer + 30px;
56 | }
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_print.scss:
--------------------------------------------------------------------------------
1 |
2 | @media print {
3 |
4 | /* Hide elements */
5 |
6 | form,
7 | button,
8 | input,
9 | select,
10 | textarea,
11 | .navigation-top,
12 | .social-navigation,
13 | .content-bottom-widgets,
14 | .header-image,
15 | .page-links,
16 | #secondary,
17 | .edit-link,
18 | .post-navigation,
19 | .pagination.navigation,
20 | .comments-pagination,
21 | .comment-respond,
22 | .comment-edit-link,
23 | .comment-reply-link,
24 | .comment-metadata .edit-link,
25 | .pingback .edit-link,
26 | .site-info,
27 | .comments-area--wrapper {
28 | display: none !important;
29 | }
30 |
31 | /* Font sizes */
32 |
33 | body {
34 | font-size: 12pt;
35 | }
36 |
37 | h1 {
38 | font-size: 24pt;
39 | }
40 |
41 | h2 {
42 | font-size: 22pt;
43 | }
44 |
45 | h3 {
46 | font-size: 17pt;
47 | }
48 |
49 | h4 {
50 | font-size: 12pt;
51 | }
52 |
53 | h5 {
54 | font-size: 11pt;
55 | }
56 |
57 | h6 {
58 | font-size: 12pt;
59 | }
60 |
61 | .entry-title {
62 | font-size: 25pt !important;
63 | line-height: 40pt !important;
64 | }
65 |
66 | .post .entry-header {
67 | padding: 0 !important;
68 | }
69 |
70 | /* Layout */
71 |
72 | .site-content {
73 | padding-left: 5% !important;
74 | padding-right: 5% !important;
75 | max-width: none;
76 | }
77 |
78 | /* Site Branding */
79 |
80 | .site-header {
81 | background: transparent;
82 | padding-left: 5% !important;
83 | margin-top: 50px;
84 | padding-right: 5% !important;
85 | padding: 0;
86 | position: relative;
87 |
88 | &--right {
89 | display: none;
90 | }
91 | }
92 |
93 | .site-title {
94 | font-size: 25pt;
95 | }
96 | }
97 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/navigation/_social.scss:
--------------------------------------------------------------------------------
1 | .social-navigation ul li a {
2 | cursor: pointer;
3 | display: inline-block;
4 | overflow: hidden;
5 | color: $black;
6 | }
7 |
8 | .social-navigation svg {
9 | width: 28px;
10 | height: 28px;
11 |
12 | .font-size--large & {
13 | width: 29px;
14 | height: 29px;
15 | }
16 |
17 | .font-size--larger & {
18 | width: 30px;
19 | height: 30px;
20 | }
21 |
22 | .font-size--largest & {
23 | width: 31px;
24 | height: 31px;
25 | }
26 | }
27 |
28 | .social-navigation ul {
29 | height: 28px;
30 | }
31 |
32 | .social-navigation {
33 | height: 28px;
34 | transition: margin .3s cubic-bezier(.694,.0482,.335,1);
35 |
36 | @media only screen and (max-width: 374px) {
37 | display: none;
38 | }
39 |
40 | li {
41 | display: inline-block;
42 | margin-right: -3px;
43 | transform: translate3d(0, 0, 0);
44 | transition: margin .3s cubic-bezier(.694,.0482,.335,1), transform .3s cubic-bezier(.694,.0482,.335,1);
45 | }
46 |
47 | a {
48 | transition: opacity 100ms cubic-bezier(0.645, 0.045, 0.355, 1);
49 |
50 | .changing & {
51 | transition: 0;
52 | }
53 |
54 | @include hover {
55 | &:hover {
56 | opacity: .7;
57 | }
58 | }
59 |
60 | }
61 |
62 | .screen-reader-text {
63 | position: relative;
64 | top: -9px;
65 | margin-right: 5px;
66 | margin-left: 10px;
67 |
68 | li:first-child & {
69 | margin-left: 0;
70 | }
71 | }
72 |
73 | .site-header & {
74 | position: relative;
75 | margin-left: 7px;
76 |
77 | svg {
78 | fill: $black;
79 | transform: scale(1.4);
80 | }
81 | }
82 |
83 | .customize-partial-edit-shortcut button {
84 | display: none;
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_quote.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | blockquote,
3 | .wp-block-quote {
4 | @include blockMobileDisplay();
5 |
6 | &:not(.is-style-large) {
7 | border-left: $block__quote--border-width solid $black;
8 | padding-left: 20px;
9 |
10 | @media screen and (min-width: 600px) {
11 | padding-left: 30px;
12 | }
13 |
14 | p {
15 | font-size: $font__size-md;
16 | font-family: $font__heading;
17 | font-weight: 500;
18 | font-style: normal;
19 |
20 | @media screen and (min-width: 600px) {
21 | font-size: $font__size-mdlrg;
22 | }
23 | }
24 |
25 | cite {
26 | font-family: $block__quote--cite-font;
27 | }
28 | }
29 |
30 | p {
31 | line-height: 1.4;
32 | margin-bottom: 0;
33 | }
34 |
35 | cite {
36 | color: $gray;
37 | display: block;
38 | font-size: $font__size-sm;
39 | font-weight: 500;
40 | margin-top: 15px;
41 | }
42 |
43 | &.is-style-large {
44 | border-left: none;
45 | margin: $content__spacer auto;
46 | padding-left: 50px;
47 |
48 | @media screen and (min-width: $content__media-query) {
49 | margin-bottom: $content__spacer + 12px;
50 | margin-top: $content__spacer + 12px;
51 | padding-left: 60px;
52 | }
53 |
54 | p:first-of-type {
55 | font-size: $font__size-md;
56 | font-style: italic;
57 | line-height: 1.5;
58 |
59 | @media screen and (min-width: 600px) {
60 | font-size: $font__size-mdlrg;
61 | line-height: 1.4;
62 | }
63 | }
64 |
65 | cite {
66 | font-size: $font__size-sm;
67 | margin-top: 0.35em;
68 | text-align: inherit;
69 | font-style: italic;
70 | }
71 | }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/elements/_elements.scss:
--------------------------------------------------------------------------------
1 | html {
2 | box-sizing: border-box;
3 | }
4 |
5 | *,
6 | *::before,
7 | *::after {
8 | // Inherit box-sizing to make it easier to change the property for components that leverage other behavior; see http://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/
9 | box-sizing: inherit;
10 | }
11 |
12 | body {
13 | background: $color--background-body; // Fallback for when there is no custom background color defined.
14 |
15 | &.custom-background.nav-open {
16 | // Hide the background image when the mobile navigation is open, because we don't want to blur the whole body.
17 | background-image: none;
18 | }
19 | }
20 |
21 | ::-moz-selection {
22 | background-color: #e8e8e8;
23 | }
24 |
25 | ::selection {
26 | background-color: #e8e8e8;
27 | }
28 |
29 | hr {
30 | background-color: $black;
31 | opacity: 0.2;
32 | border: 0;
33 | height: 1px;
34 | }
35 |
36 | img {
37 | height: auto; // Make sure images are scaled correctly.
38 | max-width: 100%; // Adhere to container width.
39 | vertical-align: middle;
40 | }
41 |
42 | @-ms-viewport {
43 | width: device-width;
44 | }
45 |
46 | @viewport {
47 | width: device-width;
48 | }
49 |
50 | /*--------------------------------------------------------------
51 | # Buttons
52 | --------------------------------------------------------------*/
53 | @import "buttons";
54 |
55 | /*--------------------------------------------------------------
56 | # Fields
57 | --------------------------------------------------------------*/
58 | @import "fields";
59 |
60 | .wp-activate-container {
61 | @include structure;
62 | text-align: center;
63 |
64 | h2 {
65 | margin-bottom: .3em;
66 | }
67 | }
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/create/createTags.js:
--------------------------------------------------------------------------------
1 | const { BlogPreviewFragment } = require(`../src/templates/posts/data.js`)
2 | const tagTemplate = require.resolve(`../src/templates/tags/archive.js`)
3 |
4 | module.exports = async ({ actions, graphql }) => {
5 | const GET_TAGS = `
6 | query GET_TAGS($first: Int $after:String) {
7 | wpgraphql {
8 | tags(first: $first, after:$after) {
9 | pageInfo {
10 | hasNextPage
11 | endCursor
12 | }
13 | nodes {
14 | id
15 | name
16 | tagId
17 | slug
18 | posts {
19 | nodes {
20 | ...BlogPreviewFragment
21 | }
22 | }
23 | }
24 | }
25 | }
26 | }
27 | ${BlogPreviewFragment}
28 | `
29 | const { createPage } = actions
30 | const allTags = []
31 | const fetchTags = async variables =>
32 | await graphql(GET_TAGS, variables).then(({ data }) => {
33 | const {
34 | wpgraphql: {
35 | tags: {
36 | nodes,
37 | pageInfo: { hasNextPage, endCursor },
38 | },
39 | },
40 | } = data
41 | nodes.map(tag => {
42 | allTags.push(tag)
43 | })
44 | if (hasNextPage) {
45 | return fetchTags({ first: 100, after: endCursor })
46 | }
47 | return allTags
48 | })
49 |
50 | await fetchTags({ first: 100, after: null }).then(allTags => {
51 | allTags.map(tag => {
52 | console.log(`create tag: ${tag.slug}`)
53 | createPage({
54 | path: `/blog/tag/${tag.slug}`,
55 | component: tagTemplate,
56 | context: tag,
57 | })
58 | })
59 | })
60 | }
61 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/create/createUsers.js:
--------------------------------------------------------------------------------
1 | const { BlogPreviewFragment } = require(`../src/templates/posts/data.js`)
2 | const userTemplate = require.resolve(`../src/templates/users/archive.js`)
3 |
4 | module.exports = async ({ actions, graphql }) => {
5 | const GET_USERS = `
6 | query GET_USERS($first: Int $after:String) {
7 | wpgraphql {
8 | users(first: $first, after:$after) {
9 | pageInfo {
10 | hasNextPage
11 | endCursor
12 | }
13 | nodes {
14 | id
15 | name
16 | userId
17 | slug
18 | posts {
19 | nodes {
20 | ...BlogPreviewFragment
21 | }
22 | }
23 | }
24 | }
25 | }
26 | }
27 | ${BlogPreviewFragment}
28 | `
29 | const { createPage } = actions
30 | const allUsers = []
31 | const fetchUsers = async variables =>
32 | await graphql(GET_USERS, variables).then(({ data }) => {
33 | const {
34 | wpgraphql: {
35 | users: {
36 | nodes,
37 | pageInfo: { hasNextPage, endCursor },
38 | },
39 | },
40 | } = data
41 | nodes.map(user => {
42 | allUsers.push(user)
43 | })
44 | if (hasNextPage) {
45 | return fetchUsers({ first: 100, after: endCursor })
46 | }
47 | return allUsers
48 | })
49 |
50 | await fetchUsers({ first: 100, after: null }).then(allUsers => {
51 | allUsers.map(user => {
52 | console.log(`create user: ${user.slug}`)
53 | createPage({
54 | path: `/blog/author/${user.slug}`,
55 | component: userTemplate,
56 | context: user,
57 | })
58 | })
59 | })
60 | }
61 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_icons.scss:
--------------------------------------------------------------------------------
1 | #sprite {
2 | @include hide;
3 | }
4 |
5 | .icon-chain {
6 | transform: scale(0.6) !important;
7 | }
8 |
9 | .icon-rss {
10 | transform: scale(0.6) !important;
11 | }
12 |
13 | .icon-dribbble {
14 | transform: scale(1.32) !important;
15 | }
16 |
17 | .icon-wordpress {
18 | position: relative;
19 | top: 0.05em;
20 | }
21 |
22 | .icon-slack {
23 | position: relative;
24 | top: 0.029em;
25 | }
26 |
27 | .svg-fallback {
28 | display: none;
29 |
30 | .no-svg & {
31 | display: inline-block;
32 | }
33 | }
34 |
35 | /* Dropdown toggle fallbacks */
36 |
37 | .no-svg .dropdown-toggle {
38 | padding: 0.5em 0 0;
39 | right: 0;
40 | text-align: center;
41 | width: 2em;
42 |
43 | .icon {
44 | display: none;
45 | }
46 |
47 | .svg-fallback.icon-down {
48 | @include font-size(15px);
49 | font-weight: bold;
50 | line-height: 1;
51 | transform: rotate(180deg);
52 | color: $gray;
53 | position: relative;
54 | top: -3px;
55 | right: -10px;
56 | }
57 | }
58 |
59 | .no-svg .dropdown-toggle.toggled-on .svg-fallback.icon-down {
60 | top: 2px;
61 | transform: rotate(0);
62 | }
63 |
64 | .no-svg .dropdown-toggle .svg-fallback.icon-down:before {
65 | content: "\005E";
66 | }
67 |
68 | /* Social Menu fallbacks */
69 |
70 | // .no-svg .social-navigation {
71 |
72 | // .screen-reader-text {
73 | // top: 4px;
74 | // clip: auto;
75 | // clip-path: initial;
76 | // height: auto;
77 | // position: relative !important;
78 | // width: auto;
79 | // transition: color 100ms cubic-bezier(0.645, 0.045, 0.355, 1);
80 | // }
81 |
82 | // li a:hover {
83 |
84 | // .screen-reader-text {
85 | // color: $black;
86 | // }
87 | // }
88 |
89 | // .icon {
90 | // display: none;
91 | // }
92 | // }
93 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_latest-posts.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .wp-block-latest-posts {
3 | &.alignfull:not(.is-grid) {
4 | padding-left: 20px;
5 | }
6 |
7 | &.alignwide {
8 | @include blockWideDisplay();
9 | }
10 |
11 | &.is-grid {
12 | @include blockMobileDisplay();
13 | margin-bottom: -6px;
14 | margin-top: $content__spacer--mobile + 12px;
15 |
16 | @media screen and (min-width: $content__media-query) {
17 | margin-top: $content__spacer + 12px;
18 | }
19 |
20 | &.alignwide {
21 | @include blockWideDisplay();
22 | }
23 |
24 | &.alignfull {
25 | margin-left: 0;
26 | margin-right: 0;
27 | }
28 |
29 | li {
30 | background: $color--background-pre;
31 | border: none;
32 | display: flex;
33 | flex-direction: column;
34 | font-family: $font__heading;
35 | font-weight: 500;
36 | line-height: 1.4;
37 | padding: 1em 1em 1.1em;
38 |
39 | @media (max-width: 599px) {
40 | margin-right: 0;
41 | }
42 |
43 | a {
44 | box-shadow: none;
45 | flex: 1 1 auto;
46 |
47 | &:hover {
48 | opacity: 0.6;
49 | }
50 |
51 | &::after {
52 | content: '';
53 | }
54 | }
55 |
56 | &:last-child {
57 |
58 | a::after {
59 | content: '';
60 | }
61 | }
62 | }
63 |
64 | .wp-block-latest-posts__post-date {
65 | flex: 0 0 auto;
66 | margin-top: 10px;
67 | }
68 | }
69 |
70 | &:not(.is-grid) {
71 | padding-bottom: 4px;
72 |
73 | li {
74 | margin-bottom: 10px;
75 |
76 | &:last-child {
77 | margin-bottom: 0;
78 | }
79 | }
80 | }
81 |
82 | &__post-date {
83 | @include font-size(14px);
84 | color: $gray;
85 | font-weight: 400;
86 | margin-top: 2px;
87 | }
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/ShareIcons.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Twitter, FacebookShare, Linkedin } from './Icons';
3 | //FIXME: linkedin share doesn't work
4 |
5 | const ShareIcons = ({ post }) => (
6 |
43 | );
44 |
45 | export default ShareIcons;
46 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/layout/_hero-block.scss:
--------------------------------------------------------------------------------
1 | .tabor-hero {
2 | padding-top: 3.25em;
3 | padding-bottom: 2.5em;
4 |
5 | @media only screen and (min-width: 700px) {
6 | padding-top: 4.5em;
7 | padding-bottom: 0;
8 | }
9 |
10 | &.has-center-content {
11 | text-align: center;
12 | }
13 |
14 | &.has-right-content {
15 | text-align: right;
16 | }
17 |
18 | + p,
19 | + [class*="wp-block"] {
20 | margin-top: 2.75em;
21 |
22 | @media only screen and (min-width: 700px) {
23 | margin-top: 7.5em;
24 | }
25 | }
26 |
27 | .subHeading {
28 | padding-top: 0;
29 | margin-bottom: 2em;
30 |
31 | &:not(.has-text-color) {
32 | color: $gray;
33 | }
34 | }
35 |
36 | .lastName,
37 | .firstName {
38 | @include fluid-type(600px, 1200px, 90px, 150px);
39 | margin-bottom: 0;
40 | padding: 0;
41 | white-space: nowrap;
42 |
43 | @media only screen and (max-width: 599px) {
44 | @include font-size(70px);
45 | }
46 |
47 | @media only screen and (max-width: 399px) {
48 | @include font-size(52px);
49 | }
50 | }
51 |
52 | &.has-left-content {
53 |
54 | .lastName {
55 | margin-left: 3vw;
56 |
57 | @media only screen and (min-width: 400px) {
58 | margin-left: 5.5vw;
59 | }
60 | }
61 |
62 | .typed-content {
63 | margin-left: 3.2vw;
64 |
65 | @media only screen and (min-width: 400px) {
66 | margin-left: 5.7vw;
67 | }
68 | }
69 | }
70 |
71 | .lastName {
72 | display: block;
73 | margin-bottom: 0;
74 | line-height: 1.2;
75 | }
76 |
77 | .typed-content {
78 | margin-top: 10px;
79 |
80 | h2 {
81 | padding: 0 !important;
82 | margin: 0 !important;
83 | }
84 | }
85 | }
86 |
87 | .wp-block-tabor-hero {
88 |
89 | margin-top: 20px;
90 |
91 | .animated-headline--strings {
92 | display: none;
93 |
94 | p {
95 | color: inherit;
96 | }
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/layout/_sidebar.scss:
--------------------------------------------------------------------------------
1 | .post-wrapper {
2 | width: 100%;
3 | }
4 |
5 | .has-sidebar:not(.home) {
6 |
7 | .hentry {
8 | max-width: 1200px;
9 |
10 | @media only screen and (min-width: 900px) {
11 | display: flex;
12 | flex-direction: row;
13 | }
14 |
15 | .widget-area {
16 | padding-left: $content__padding;
17 |
18 | @media only screen and (max-width: 899px) {
19 | margin-left: auto;
20 | margin-right: auto;
21 | margin-top: 3em;
22 | max-width: $content__width;
23 | padding-right: $content__padding;
24 | }
25 |
26 | @media only screen and (min-width: 900px) {
27 | flex: 0 0 20em;
28 | padding-left: 6%;
29 | padding-right: $content__padding;
30 | padding-top: .55em;
31 | }
32 |
33 | @media only screen and (min-width: 1150px) {
34 | flex: 0 0 24em;
35 | }
36 | }
37 | }
38 | }
39 |
40 | .has-sidebar {
41 |
42 | .entry-content .alignfull {
43 | padding-left: $content__padding;
44 | padding-right: $content__padding;
45 | }
46 | }
47 |
48 | .widget-area--sidebar {
49 |
50 | @media only screen and (max-width: 599px) {
51 | padding-top: 3em;
52 | }
53 |
54 | @media only screen and (max-width: 899px) {
55 | border-top: 1px solid #dfdfdf;
56 | padding-top: 3.5em;
57 | }
58 |
59 | body.single-post & {
60 | @media only screen and (max-width: 899px) {
61 | padding-top: 3em;
62 | }
63 | }
64 |
65 | .h4 {
66 | margin-bottom: .25em;
67 | }
68 |
69 | .widget {
70 | margin-bottom: 2.5em;
71 |
72 | &:last-of-type {
73 | margin-bottom: 0;
74 | }
75 | }
76 |
77 | .widget_text p:last-of-type {
78 | margin-bottom: 0;
79 | }
80 |
81 | .search-form label {
82 | display: none;
83 | }
84 |
85 | .search-form .search-field {
86 | margin-bottom: 5px;
87 | }
88 |
89 | .widget > ul {
90 | margin-bottom: 5px;
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_columns.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .wp-block-columns {
3 | margin: $content__spacer--mobile auto;
4 |
5 | @media screen and (min-width: $content__media-query) {
6 | margin-bottom: $content__spacer;
7 | margin-top: $content__spacer;
8 | }
9 |
10 | .wp-block-column {
11 | margin-bottom: $content__spacer--mobile;
12 |
13 | @media all and (min-width: 600px) {
14 | margin-bottom: 0;
15 | margin-top: 0;
16 | }
17 |
18 | &:last-of-type {
19 | @media all and (max-width: 599px) {
20 | margin-bottom: 0;
21 | margin-top: 0;
22 | }
23 | }
24 | }
25 |
26 | * {
27 | margin-bottom: $content__spacer--mobile;
28 | margin-top: $content__spacer--mobile;
29 |
30 | @media screen and (min-width: $content__media-query) {
31 | margin-bottom: $content__spacer;
32 | margin-top: $content__spacer;
33 | }
34 |
35 | &:first-child {
36 | margin-top: 0 !important;
37 | }
38 |
39 | &:last-child {
40 | margin-bottom: 0 !important;
41 | }
42 | }
43 |
44 | *:not(p):not(ul):not(ol) {
45 | margin: $content__spacer--mobile + 12px auto;
46 |
47 | @media screen and (min-width: $content__media-query) {
48 | margin-bottom: $content__spacer + 12px;
49 | margin-top: $content__spacer + 12px;
50 | }
51 | }
52 | }
53 | }
54 |
55 | // Spacing between columns.
56 | .wp-block-columns {
57 | @media all and (min-width: 600px) {
58 | flex-wrap: nowrap;
59 | }
60 |
61 | @media all and (min-width: 600px) {
62 | .wp-block-column > * {
63 |
64 | &:first-child {
65 | margin-top: 0;
66 | }
67 |
68 | &:last-child {
69 | margin-bottom: 0;
70 | }
71 | }
72 |
73 | &[class*='has-'] > * {
74 | margin-left: 0 !important;
75 | margin-right: 40px !important;
76 |
77 | &:last-child {
78 | margin-right: 0 !important;
79 | }
80 | }
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/create/createCategories.js:
--------------------------------------------------------------------------------
1 | const { BlogPreviewFragment } = require(`../src/templates/posts/data.js`)
2 | const categoryTemplate = require.resolve(
3 | `../src/templates/categories/archive.js`
4 | )
5 |
6 | module.exports = async ({ actions, graphql }) => {
7 | const GET_CATEGORIES = `
8 | query GET_CATEGORIES($first: Int $after:String) {
9 | wpgraphql {
10 | categories(first: $first, after:$after) {
11 | pageInfo {
12 | hasNextPage
13 | endCursor
14 | }
15 | nodes {
16 | id
17 | name
18 | categoryId
19 | slug
20 | posts {
21 | nodes {
22 | ...BlogPreviewFragment
23 | }
24 | }
25 | }
26 | }
27 | }
28 | }
29 | ${BlogPreviewFragment}
30 | `
31 | const { createPage } = actions
32 | const allCategories = []
33 | const fetchCategories = async variables =>
34 | await graphql(GET_CATEGORIES, variables).then(({ data }) => {
35 | const {
36 | wpgraphql: {
37 | categories: {
38 | nodes,
39 | pageInfo: { hasNextPage, endCursor },
40 | },
41 | },
42 | } = data
43 | nodes.map(category => {
44 | allCategories.push(category)
45 | })
46 | if (hasNextPage) {
47 | return fetchCategories({ first: 100, after: endCursor })
48 | }
49 | return allCategories
50 | })
51 |
52 | await fetchCategories({ first: 100, after: null }).then(allCategories => {
53 | allCategories.map(category => {
54 | console.log(`create category: ${category.slug}`)
55 | createPage({
56 | path: `/blog/category/${category.slug}`,
57 | component: categoryTemplate,
58 | context: {
59 | ...category,
60 | },
61 | })
62 | })
63 | })
64 | }
65 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "parser": "babel-eslint",
3 | "extends": [
4 | "google",
5 | "eslint:recommended",
6 | "plugin:flowtype/recommended",
7 | "plugin:react/recommended",
8 | "prettier",
9 | "prettier/flowtype",
10 | "prettier/react"
11 | ],
12 | "plugins": ["flowtype", "prettier", "react"],
13 | "parserOptions": {
14 | "ecmaVersion": 2016,
15 | "sourceType": "module",
16 | "ecmaFeatures": {
17 | "jsx": true
18 | }
19 | },
20 | "env": {
21 | "browser": true,
22 | "es6": true,
23 | "node": true,
24 | "jest": true
25 | },
26 | "globals": {
27 | "before": true,
28 | "spyOn": true,
29 | "__PATH_PREFIX__": true
30 | },
31 | "rules": {
32 | "arrow-body-style": [
33 | "error",
34 | "as-needed",
35 | { "requireReturnForObjectLiteral": true }
36 | ],
37 | "consistent-return": ["error"],
38 | "no-console": "off",
39 | "no-inner-declarations": "off",
40 | "prettier/prettier": "error",
41 | "quotes": ["error", "backtick"],
42 | "react/display-name": "off",
43 | "react/jsx-key": "warn",
44 | "react/no-unescaped-entities": "warn",
45 | "react/prop-types": "off",
46 | "require-jsdoc": "off",
47 | "valid-jsdoc": "off"
48 | },
49 | "overrides": [
50 | {
51 | "files": [
52 | "packages/**/gatsby-browser.js",
53 | "packages/gatsby/cache-dir/**/*"
54 | ],
55 | "env": {
56 | "browser": true
57 | },
58 | "globals": {
59 | "___loader": false,
60 | "___emitter": false
61 | }
62 | },
63 | {
64 | "files": ["**/cypress/integration/**/*", "**/cypress/support/**/*"],
65 | "globals": {
66 | "cy": false,
67 | "Cypress": false
68 | }
69 | }
70 | ],
71 | "settings": {
72 | "react": {
73 | "version": "16.4.2"
74 | }
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/media/_alignments.scss:
--------------------------------------------------------------------------------
1 | // .alignleft,
2 | // .wp-block-image .alignleft {
3 | // display: block;
4 | // margin: 0.3em auto 0.8em;
5 |
6 | // @media only screen and (min-width: 300px) {
7 | // display: inline;
8 | // float: left;
9 | // margin-left: initial;
10 | // margin-right: 1.45em;
11 | // }
12 |
13 | // @media only screen and (min-width: 600px) {
14 | // max-width: 100%;
15 | // margin-right: 2.5em;
16 | // margin-top: 0.55em;
17 | // }
18 | // }
19 |
20 | // .alignright,
21 | // .wp-block-image .alignright {
22 | // display: block;
23 | // margin: 0.3em auto 0.8em;
24 |
25 | // @media only screen and (min-width: 300px) {
26 | // display: inline;
27 | // float: right;
28 | // margin-right: initial;
29 | // margin-left: 1.45em;
30 | // }
31 |
32 | // @media only screen and (min-width: 600px) {
33 | // max-width: 100%;
34 | // margin-left: 2.3em;
35 | // margin-top: 0.55em;
36 | // }
37 | // }
38 |
39 | // .aligncenter:not([class*="wp-block"]):not([class*="is-resized"]) {
40 | // @include top-spacer;
41 | // @include bottom-spacer;
42 | // clear: both;
43 | // padding-top: 10px;
44 | // margin: 0 auto;
45 |
46 | // @media only screen and (min-width: 600px) {
47 | // margin-left: -4vw;
48 | // width: calc(100% + 8vw) !important;
49 | // max-width: calc(100% + 8vw) !important;
50 | // }
51 |
52 | // @media only screen and (min-width: 870px) {
53 | // margin-left: -7vw;
54 | // width: calc(100% + 14vw) !important;
55 | // max-width: calc(100% + 14vw) !important;
56 | // }
57 |
58 | // @media only screen and (max-width: 950px) and (min-width: 800px) {
59 |
60 | // &[data-was-processed="true"] {
61 | // transition: 300ms cubic-bezier(0.694, 0, 0.335, 1), margin 300ms cubic-bezier(0.694, 0, 0.335, 1);
62 | // }
63 | // }
64 | // }
65 |
66 | // .alignnone {
67 | // width: 100%;
68 | // margin: 7.25% 0;
69 |
70 | // @media only screen and (min-width: 600px) {
71 | // margin: 40px 0;
72 | // }
73 | // }
74 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/elements/_fields.scss:
--------------------------------------------------------------------------------
1 | select,
2 | textarea,
3 | input[type="text"],
4 | input[type="email"],
5 | input[type="url"],
6 | input[type="password"],
7 | input[type="search"] {
8 | @include font-size(18px);
9 | appearance: none;
10 | background-color: $white;
11 | border: 2px solid #dfdfdf;
12 | box-shadow: none;
13 | font-family: $font__heading;
14 | border-radius: 4px;
15 | font-weight: 500;
16 | color: $color--text-input;
17 | display: inline-block;
18 | margin: 0 0 25px 0;
19 | line-height: 1.7;
20 | outline: none;
21 | padding: .36em .95em .3em;
22 | position: relative;
23 | vertical-align: middle;
24 | width: 100%;
25 |
26 | &:focus {
27 | border-color: $black;
28 | outline: none;
29 | color: $black;
30 | }
31 |
32 | .comments & {
33 | font-family: $font__body;
34 | }
35 |
36 | .changing & {
37 | transition: 0;
38 | }
39 | }
40 |
41 | textarea {
42 | padding: .5em .95em;
43 | min-height: 220px;
44 | }
45 |
46 | label {
47 | @include font-size(16px);
48 | @include font-smoothing();
49 | color: $gray;
50 | display: block;
51 | font-family: $font__heading;
52 | font-weight: 500;
53 | margin-bottom: 2px;
54 | z-index: 99;
55 |
56 | @media only screen and (min-width: 600px) {
57 | @include font-size(18px);
58 | }
59 | }
60 |
61 | form p {
62 | margin-bottom: 0;
63 | }
64 |
65 | ::-webkit-input-placeholder {
66 | color: $color--text-input-placeholder;
67 |
68 | .js--focus & {
69 | color: $color--text-input-placeholder;
70 | }
71 | }
72 |
73 | :-moz-placeholder {
74 | color: $color--text-input-placeholder;
75 |
76 | .js--focus & {
77 | color: $color--text-input-placeholder;
78 | }
79 | }
80 |
81 | ::-moz-placeholder {
82 | color: $color--text-input-placeholder;
83 | opacity: 1;
84 |
85 | .js--focus & {
86 | color: $color--text-input-placeholder;
87 | }
88 | }
89 |
90 | :-ms-input-placeholder {
91 | color: $color--text-input-placeholder;
92 |
93 | .js--focus & {
94 | color: $color--text-input-placeholder;
95 | }
96 | }
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Header.js:
--------------------------------------------------------------------------------
1 | import React, { useRef } from 'react';
2 | import { StaticQuery, graphql } from 'gatsby';
3 | import Headroom from 'react-headroom';
4 | import Menu from './Menu';
5 | import Logo from './Logo';
6 | import SocialNav from './SocialNav';
7 |
8 | const Header = () => {
9 | const headerRef = useRef();
10 | const unpinHeader = () => {
11 | headerRef.current.classList.replace('drop-in--pinned', 'drop-in--unpinned');
12 | headerRef.current.classList.replace('drop-in--top', 'drop-in--not-top');
13 | };
14 | const pinHeader = () => {
15 | headerRef.current.classList.replace('drop-in--unpinned', 'drop-in--pinned');
16 | };
17 | const unfixHeader = () => {
18 | headerRef.current.classList.replace('drop-in--unpinned', 'drop-in--pinned');
19 | headerRef.current.classList.replace('drop-in--not-top', 'drop-in--top');
20 | };
21 |
22 | return (
23 | (
34 |
35 |
54 |
55 | )}
56 | />
57 | );
58 | };
59 |
60 | export default Header;
61 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Icons/FacebookShare.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 |
3 | export const FacebookShare = () => (
4 |
5 |
11 |
12 |
13 |
14 | )
15 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/NextPost.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 | import { Link, graphql, StaticQuery } from "gatsby"
3 |
4 | const POSTS_QUERY = graphql`
5 | query GET_POSTS {
6 | wpgraphql {
7 | posts(first: 10000000) {
8 | nodes {
9 | title
10 | id
11 | uri
12 | featuredImage {
13 | sourceUrl
14 | }
15 | }
16 | }
17 | }
18 | }
19 | `
20 |
21 | const findNextPost = (post, data) => {
22 | const posts = data.wpgraphql.posts.nodes
23 | const currentPostIndex = posts.findIndex(item => item.id === post.id)
24 | return posts[currentPostIndex + 1]
25 | }
26 |
27 | const NextPost = ({ post }) => (
28 | {
31 | const nextPost = findNextPost(post, data)
32 |
33 | return (
34 |
35 | {nextPost && nextPost.featuredImage && (
36 |
37 |

42 |
43 | )}
44 |
45 |
46 | {nextPost && (
47 | <>
48 |
49 | Up Next
50 |
51 |
{nextPost.title}
52 |
57 | {nextPost.title}
58 |
59 | >
60 | )}
61 |
62 |
63 | )
64 | }}
65 | />
66 | )
67 |
68 | export default NextPost
69 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/layout/_footer.scss:
--------------------------------------------------------------------------------
1 | .site-footer {
2 | overflow: hidden;
3 | padding: 4em 0;
4 | margin: 0;
5 | position: relative;
6 |
7 | @media only screen and (min-width: 700px) {
8 | padding: 9em 0;
9 | }
10 |
11 | .widget {
12 | margin-bottom: 2em;
13 | margin-left: auto;
14 | margin-right: auto;
15 | max-width: 440px;
16 |
17 | &.optin-monster-api {
18 | min-height: 155px;
19 | }
20 |
21 | &:last-of-type {
22 | margin-bottom: 0;
23 | }
24 |
25 | h2,
26 | .h2 {
27 | margin-bottom: 15px;
28 | }
29 |
30 | p:last-of-type {
31 | margin-bottom: 0;
32 | }
33 | }
34 |
35 | .footer-navigation {
36 | padding: 1.3em 0 0;
37 | }
38 |
39 | .footer-menu {
40 | text-align: center;
41 |
42 | li {
43 | margin-bottom: 5px;
44 |
45 | @media only screen and (min-width: 400px) {
46 | display: inline-block;
47 | margin: 0 5px;
48 | }
49 |
50 | a {
51 | @include font-size(18px);
52 | }
53 | }
54 | }
55 | }
56 |
57 | .widget-area {
58 |
59 | &__inner {
60 | @include structure;
61 | }
62 |
63 | &__wrapper {
64 | padding: 35px 30px 35px;
65 | background: $background;
66 | position: relative;
67 |
68 | @media only screen and (min-width: 600px) {
69 | margin-left: -4vw;
70 | width: calc(100% + 8vw);
71 | }
72 |
73 | @media only screen and (min-width: 700px) {
74 | padding: 6.5vw 7vw;
75 | }
76 |
77 | @media only screen and (min-width: 850px) {
78 | margin-left: -7vw;
79 | width: calc(100% + 14vw);
80 | }
81 |
82 | @media only screen and (min-width: 1400px) {
83 | padding: 90px 100px;
84 | }
85 | }
86 |
87 | }
88 |
89 | .site-info {
90 | @include font-size(18px);
91 | padding-bottom: 1em;
92 |
93 | @media only screen and (min-width: 700px) {
94 | padding-bottom: 0;
95 | }
96 |
97 | .widget-area + & {
98 | padding-top: 6em;
99 |
100 | @media only screen and (min-width: 700px) {
101 | padding-top: 9em;
102 | }
103 | }
104 |
105 | p {
106 | margin-bottom: 0;
107 | }
108 |
109 | .site-theme {
110 | display: block;
111 | margin-top: 0.75em;
112 | }
113 | }
114 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_optinmonster-new.scss:
--------------------------------------------------------------------------------
1 | #secondary {
2 | min-height: 155px;
3 |
4 | .optin-monster-api {
5 |
6 | .Campaign,
7 | .Campaign__content,
8 | .Campaign__alphaLayer {
9 | background: none !important;
10 | margin: 0 !important;
11 | padding: 0 !important;
12 | }
13 |
14 | .Campaign__alphaLayer {
15 | margin-top: 40px !important;
16 | }
17 |
18 | .tucson-element-title-content {
19 | color: $black !important;
20 | font-weight: 800;
21 | font-family: $font__heading !important;
22 | @extend .h2;
23 | }
24 |
25 | #tucson-content {
26 | margin-bottom: 15px;
27 | }
28 |
29 | .tucson-element-tagline-content {
30 | @extend body;
31 | background: none !important;
32 | margin-bottom: 25px !important;
33 | }
34 |
35 | input {
36 | appearance: none;
37 | background: none !important;
38 | background: transparent !important;
39 | border: none !important;
40 | border-bottom: 4px solid $black !important;
41 | color: $black !important;
42 | font-family: $font__heading !important;
43 | font-weight: 600 !important;
44 | border-radius: 0;
45 | font-size: 18px !important;
46 | padding-bottom: 0;
47 | box-shadow: none !important;
48 | padding-left: 0 !important;
49 | height: 50px !important;
50 | margin-bottom: 25px !important;
51 |
52 | &:focus {
53 | box-shadow: none !important;
54 | border-color: $gray !important;
55 | }
56 |
57 | @include input-placeholder {
58 | color: rgba(0, 0, 0, 0.8);
59 | }
60 | }
61 |
62 | .tucson-field-submit {
63 | border: 0 !important;
64 | background: $black !important;
65 | margin-bottom: 0;
66 | height: 50px !important;
67 | border-radius: 4px;
68 | box-shadow: none !important;
69 | color: #fff !important;
70 | transition: 200ms background cubic-bezier(0.3, -0.55, 0.1, 1.1);
71 |
72 | &:hover {
73 | background: $gray !important;
74 | }
75 |
76 | .changing & {
77 | transition: 0;
78 | }
79 | }
80 |
81 | p.tucson-error {
82 | font-family: $font__heading !important;
83 | font-style: inherit!important;
84 | color: $gray !important;
85 | position: absolute;
86 | margin: 50px auto !important;
87 | width: 100%;
88 | text-align: center;
89 |
90 | @media only screen and (min-width: 700px) {
91 | margin: 15px auto !important;
92 | }
93 | }
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/typography/_headings.scss:
--------------------------------------------------------------------------------
1 | h1,
2 | h2,
3 | h3,
4 | h4,
5 | h5,
6 | h6 {
7 | clear: both;
8 | color: $color__text-heading;
9 | font-family: $font__heading;
10 | font-weight: $font__weight-heading;
11 | line-height: $font__line-height-heading;
12 | margin: 0;
13 |
14 | .entry-content & {
15 | margin-bottom: 0 !important;
16 | padding-top: 10px;
17 | position: relative;
18 |
19 | &:target:before {
20 | border-left: 5px solid $black;
21 | content: "";
22 | height: 50%;
23 | height: calc(100% - 5px);
24 | left: 0;
25 | position: absolute;
26 | top: 5px;
27 | }
28 |
29 | + p {
30 | margin-top: $content__spacer / 2;
31 | }
32 |
33 | + ul,
34 | + ol {
35 | margin-top: round($content__spacer / 2);
36 | }
37 |
38 | + .wp-block-image,
39 | + .wp-block-gallery {
40 | margin-top: ($content__spacer / 2) + 10;
41 | }
42 |
43 | + div[class*="blockgallery"] {
44 | margin-top: ($content__spacer / 2) + 10;
45 | }
46 | }
47 | }
48 |
49 | h1,
50 | .h1 {
51 | @include fluid-type(514px, 1200px, 32px, 55px);
52 |
53 | .font-size--large & {
54 | @include fluid-type(514px, 1200px, 33px, 57px);
55 | }
56 |
57 | .font-size--larger & {
58 | @include fluid-type(514px, 1200px, 34px, 58px);
59 | }
60 |
61 | .font-size--largest & {
62 | @include fluid-type(514px, 1200px, 35px, 59px);
63 | }
64 | }
65 |
66 | h2,
67 | .h2 {
68 | @include fluid-type(514px, 820px, 28px, 34px);
69 |
70 | .font-size--large & {
71 | @include fluid-type(514px, 820px, 28px, 35px);
72 | }
73 |
74 | .font-size--larger & {
75 | @include fluid-type(514px, 820px, 28px, 36px);
76 | }
77 |
78 | .font-size--largest & {
79 | @include fluid-type(514px, 820px, 28px, 37px);
80 | }
81 | }
82 |
83 | h3,
84 | .h3 {
85 | @include fluid-type(514px, 820px, 24px, 28px);
86 | }
87 |
88 | h4,
89 | .h4 {
90 | @include fluid-type(514px, 820px, 20px, 25px);
91 | }
92 |
93 | h5,
94 | .h5 {
95 | @include font-size(19px);
96 |
97 | @media only screen and (min-width: 600px) {
98 | @include font-size(20px);
99 | }
100 |
101 | .font-size--larger & {
102 | @include font-size(19px);
103 | }
104 | }
105 |
106 | h6,
107 | .h6 {
108 | @include font-size(17px);
109 |
110 | @media only screen and (min-width: 600px) {
111 | @include font-size(18px);
112 | }
113 | }
114 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_optinmonster.scss:
--------------------------------------------------------------------------------
1 | #secondary {
2 | min-height: 155px;
3 |
4 | #tucson-optin {
5 |
6 | &.tucson-outer-wrap {
7 | max-width: 100% !important;
8 | }
9 |
10 | .tucson-element-row.tucson-element-row-global.tucson-body {
11 | background: none !important;
12 | margin: 0 !important;
13 | padding: 0 !important;
14 | }
15 |
16 | .tucson-element-title-content {
17 | color: $black !important;
18 | font-weight: 800;
19 | font-family: $font__heading !important;
20 | @extend .h2;
21 | }
22 |
23 | #tucson-content {
24 | margin-bottom: 15px;
25 | }
26 |
27 | .tucson-element-tagline-content {
28 | @extend body;
29 | background: none !important;
30 | margin-bottom: 25px !important;
31 | }
32 |
33 | input {
34 | appearance: none;
35 | background: none;
36 | background: transparent;
37 | border: none;
38 | border-bottom: 4px solid $black;
39 | color: $black !important;
40 | font-family: $font__heading !important;
41 | font-weight: 600;
42 | border-radius: 0;
43 | font-size: 18px;
44 | padding-bottom: 0;
45 | box-shadow: none !important;
46 | padding-left: 0;
47 | height: 50px;
48 | margin-bottom: 25px;
49 |
50 | &:focus {
51 | box-shadow: none;
52 | border-color: $gray;
53 | }
54 |
55 | @include input-placeholder {
56 | color: rgba(0, 0, 0, .8);
57 | }
58 | }
59 |
60 | .tucson-field-submit {
61 | border: 0 !important;
62 | background: $black !important;
63 | margin-bottom: 0;
64 | border-radius: 4px;
65 | box-shadow: none !important;
66 | color: #fff !important;
67 | transition: 200ms background cubic-bezier(0.3, -0.55, 0.1, 1.1);
68 |
69 | &:hover {
70 | background: $gray !important;
71 | }
72 |
73 | .changing & {
74 | transition: 0;
75 | }
76 | }
77 |
78 | p.tucson-error {
79 | font-family: $font__heading !important;
80 | font-style: inherit!important;
81 | color: $gray !important;
82 | position: absolute;
83 | margin: 50px auto !important;
84 | width: 100%;
85 | text-align: center;
86 |
87 | @media only screen and (min-width: 700px) {
88 | margin: 15px auto !important;
89 | }
90 | }
91 | }
92 | }
93 |
94 |
95 | /*--------------------------------------------------------------
96 | # New OptinMonster Support
97 | --------------------------------------------------------------*/
98 | @import "optinmonster-new";
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/coblocks/style/_gutter.scss:
--------------------------------------------------------------------------------
1 | .has-small-gutter {
2 |
3 | > [class*="wp-block-coblocks-"] {
4 |
5 | @media (max-width: #{ ($break-small) }) {
6 | &:not(:last-child) {
7 | margin-bottom: $gutter--small * 2;
8 | }
9 | }
10 |
11 | @include break-small() {
12 |
13 | &:nth-child(odd) {
14 | margin-right: $gutter--small;
15 | }
16 |
17 | &:nth-child(even) {
18 | margin-left: $gutter--small;
19 | }
20 |
21 | &:not(:first-child) {
22 | margin-left: $gutter--small;
23 | }
24 |
25 | &:not(:last-child) {
26 | margin-right: $gutter--small;
27 | }
28 | }
29 | }
30 | }
31 |
32 | .has-medium-gutter {
33 |
34 | > [class*="wp-block-coblocks-"] {
35 |
36 | @media (max-width: #{ ($break-small) }) {
37 | &:not(:last-child) {
38 | margin-bottom: $gutter--medium * 2;
39 | }
40 | }
41 |
42 | @include break-small() {
43 |
44 | &:nth-child(odd) {
45 | margin-right: $gutter--medium;
46 | }
47 |
48 | &:nth-child(even) {
49 | margin-left: $gutter--medium;
50 | }
51 |
52 | &:not(:first-child) {
53 | margin-left: $gutter--medium;
54 | }
55 |
56 | &:not(:last-child) {
57 | margin-right: $gutter--medium;
58 | }
59 | }
60 | }
61 | }
62 |
63 | .has-large-gutter {
64 |
65 | > [class*="wp-block-coblocks-"] {
66 |
67 | @media (max-width: #{ ($break-small) }) {
68 | &:not(:last-child) {
69 | margin-bottom: $gutter--large * 2;
70 | }
71 | }
72 |
73 | @include break-small() {
74 |
75 | &:nth-child(odd) {
76 | margin-right: $gutter--large;
77 | }
78 |
79 | &:nth-child(even) {
80 | margin-left: $gutter--large;
81 | }
82 |
83 | &:not(:first-child) {
84 | margin-left: $gutter--large;
85 | }
86 |
87 | &:not(:last-child) {
88 | margin-right: $gutter--large;
89 | }
90 | }
91 | }
92 | }
93 |
94 | .has-huge-gutter {
95 |
96 | > [class*="wp-block-coblocks-"] {
97 |
98 | @media (max-width: #{ ($break-small) }) {
99 | &:not(:last-child) {
100 | margin-bottom: $gutter--huge * 2;
101 | }
102 | }
103 |
104 | @include break-small() {
105 |
106 | &:nth-child(odd) {
107 | margin-right: $gutter--huge;
108 | }
109 |
110 | &:nth-child(even) {
111 | margin-left: $gutter--huge;
112 | }
113 |
114 | &:not(:first-child) {
115 | margin-left: $gutter--huge;
116 | }
117 |
118 | &:not(:last-child) {
119 | margin-right: $gutter--huge;
120 | }
121 | }
122 | }
123 | }
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/templates/posts/single.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Link } from 'gatsby';
3 |
4 | import Layout from '../../components/Layout';
5 | import PostEntryMeta from '../../components/PostEntryMeta';
6 | import PostEntryTitle from '../../components/PostEntryTitle';
7 | import PostEntryMedia from '../../components/PostEntryMedia';
8 | import EngagementBar from '../../components/EngagementBar';
9 | import SEO from '../../components/SEO';
10 |
11 | const renderTermNodes = (nodes, termType) => (
12 |
13 | {nodes.map(term => (
14 |
15 | {term.name}
16 |
17 | ))}
18 |
19 | );
20 |
21 | const renderTerms = (categoryNodes = [], tagNodes = []) => (
22 | <>
23 | {categoryNodes ? renderTermNodes(categoryNodes, 'category') : null}
24 | {tagNodes && tagNodes.length ? renderTermNodes(tagNodes, 'tag') : null}
25 | >
26 | );
27 |
28 | const Post = ({ pageContext: post }) => {
29 | return (
30 |
31 |
32 |
33 |
41 | {post.featuredImage &&
}
42 |
43 |
47 |
66 |
67 |
68 |
69 |
70 | );
71 | };
72 |
73 | export default Post;
74 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/SEO.js:
--------------------------------------------------------------------------------
1 | import React from "react"
2 | import PropTypes from "prop-types"
3 | import Helmet from "react-helmet"
4 | import { StaticQuery, graphql } from "gatsby"
5 |
6 | function SEO({ description, lang, meta, keywords, title }) {
7 | return (
8 | {
11 | const metaDescription =
12 | description || data.site.siteMetadata.description
13 | const titleText = title
14 | ? `${title} | ${data.site.siteMetadata.title}`
15 | : data.site.siteMetadata.title
16 | return (
17 | 0
59 | ? {
60 | name: `keywords`,
61 | content: keywords.join(`, `),
62 | }
63 | : []
64 | )
65 | .concat(meta)}
66 | />
67 | )
68 | }}
69 | />
70 | )
71 | }
72 |
73 | SEO.defaultProps = {
74 | lang: `en`,
75 | meta: [],
76 | keywords: [],
77 | }
78 |
79 | SEO.propTypes = {
80 | description: PropTypes.string,
81 | lang: PropTypes.string,
82 | meta: PropTypes.array,
83 | keywords: PropTypes.arrayOf(PropTypes.string),
84 | title: PropTypes.string.isRequired,
85 | }
86 |
87 | export default SEO
88 |
89 | const detailsQuery = graphql`
90 | query DefaultSEOQuery {
91 | site {
92 | siteMetadata {
93 | title
94 | description
95 | author
96 | }
97 | }
98 | }
99 | `
100 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_pullquote.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .wp-block-pullquote {
3 | @include blockMobileDisplay();
4 | border-color: $black;
5 | padding-bottom: 2.5em;
6 | padding-top: 2.5em;
7 | border-width: 3px;
8 |
9 | &.alignwide {
10 | @include blockWideDisplay();
11 | }
12 |
13 | &.alignfull {
14 | padding-left: 20px;
15 | padding-right: 20px;
16 |
17 | p,
18 | cite {
19 | display: block;
20 | margin-left: auto;
21 | margin-right: auto;
22 | max-width: $content__width--wide;
23 | }
24 | }
25 |
26 | blockquote {
27 | margin: 0;
28 | max-width: none;
29 | padding: 0 !important;
30 | border: none !important;
31 | text-align: center;
32 | word-break: break-word;
33 |
34 | p {
35 | margin-bottom: 0;
36 |
37 | @media only screen and (min-width: 600px) {
38 | padding-left: 20px;
39 | padding-right: 20px;
40 | }
41 | }
42 |
43 | &:not([class*="text-color"]) {
44 | color: $color__text-main;
45 |
46 | cite {
47 | color: $gray;
48 | }
49 | }
50 | }
51 |
52 | p {
53 | font-family: $font__heading;
54 | font-size: $font__size-mdlrg;
55 | font-weight: 500;
56 | hyphens: auto;
57 | line-height: 1.4;
58 | margin-bottom: 0;
59 | margin-top: 0;
60 | word-break: break-word;
61 |
62 | em {
63 | font-style: normal;
64 | }
65 | }
66 |
67 | cite {
68 | display: inline-block;
69 | font-size: $font__size-sm;
70 | font-family: $font__figcaption;
71 | margin-bottom: -10px;
72 | margin-top: .75em;
73 | text-transform: none;
74 | }
75 |
76 | &.alignleft,
77 | &.alignright {
78 | padding-left: 0;
79 | padding-right: 0;
80 | padding-top: 20px;
81 | padding-bottom: 25px;
82 |
83 | @media screen and (min-width: $content__align--mobile-media-query--min) {
84 | margin-top: 0.65em;
85 | margin-bottom: 1.75em;
86 | }
87 |
88 | blockquote {
89 | margin-left: 0;
90 | max-width: 100%;
91 | padding: 0;
92 | text-align: left;
93 | }
94 |
95 | p {
96 | padding-left: 0;
97 | padding-right: 0;
98 | }
99 |
100 | cite {
101 | display: block;
102 | margin-bottom: -7px;
103 | }
104 | }
105 |
106 | &.is-style-solid-color {
107 | padding: 20px 35px;
108 |
109 | &.alignleft,
110 | &.alignright {
111 | @media screen and (min-width: $content__align--mobile-media-query--min) {
112 | margin-bottom: 0.65em;
113 | margin-top: 0.65em;
114 | }
115 | }
116 |
117 | p {
118 | margin-bottom: 0.3em;
119 | margin-top: 0.3em;
120 | padding-left: 0;
121 | padding-right: 0;
122 | }
123 |
124 | blockquote {
125 | margin: 0 auto;
126 | text-align: left;
127 | }
128 |
129 | cite {
130 | display: block;
131 | margin-bottom: 0.5em;
132 | opacity: 0.8;
133 | }
134 |
135 | &:not([class*="background-color"]) {
136 | background-color: $black;
137 | }
138 |
139 | blockquote:not([class*="text-color"]),
140 | blockquote:not([class*="text-color"]) cite,
141 | blockquote:not([class*="text-color"]) a {
142 | color: $white;
143 | }
144 | }
145 | }
146 | }
147 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/_normalize.scss:
--------------------------------------------------------------------------------
1 | html {
2 | font-family: sans-serif;
3 | -webkit-text-size-adjust: 100%;
4 | -ms-text-size-adjust: 100%;
5 | }
6 |
7 | body {
8 | margin: 0;
9 | }
10 |
11 | article,
12 | aside,
13 | details,
14 | figcaption,
15 | figure,
16 | footer,
17 | header,
18 | main,
19 | menu,
20 | nav,
21 | section,
22 | summary {
23 | display: block;
24 | }
25 |
26 | audio,
27 | canvas,
28 | progress,
29 | video {
30 | display: inline-block;
31 | vertical-align: baseline;
32 | }
33 |
34 | audio:not([controls]) {
35 | display: none;
36 | height: 0;
37 | }
38 |
39 | a {
40 | background-color: transparent;
41 | }
42 |
43 | a:active,
44 | a:hover {
45 | outline: 0;
46 | }
47 |
48 | abbr[title] {
49 | border-bottom: 1px dotted;
50 | }
51 |
52 | b,
53 | strong {
54 | font-weight: bold;
55 | }
56 |
57 | dfn {
58 | font-style: italic;
59 | }
60 |
61 | h1 {
62 | font-size: 2em;
63 | margin: 0.67em 0;
64 | }
65 |
66 | mark {
67 | background: #ff0;
68 | color: $black;
69 | }
70 |
71 | small {
72 | font-size: 80%;
73 | }
74 |
75 | sub,
76 | sup {
77 | font-size: 75%;
78 | line-height: 0;
79 | position: relative;
80 | vertical-align: baseline;
81 | }
82 |
83 | sup {
84 | top: -0.5em;
85 | }
86 |
87 | sub {
88 | bottom: -0.25em;
89 | }
90 |
91 | img {
92 | border: 0;
93 | }
94 |
95 | svg:not(:root) {
96 | overflow: hidden;
97 | }
98 |
99 | figure {
100 | margin: 0;
101 | }
102 |
103 | hr {
104 | box-sizing: content-box;
105 | height: 0;
106 | }
107 |
108 | pre {
109 | overflow: auto;
110 | }
111 |
112 | code,
113 | kbd,
114 | pre,
115 | samp {
116 | font-family: monospace, monospace;
117 | font-size: 1em;
118 | }
119 |
120 | button,
121 | input,
122 | optgroup,
123 | select,
124 | textarea {
125 | color: inherit;
126 | font: inherit;
127 | margin: 0;
128 | }
129 |
130 | button {
131 | overflow: visible;
132 | }
133 |
134 | button,
135 | select {
136 | text-transform: none;
137 | }
138 |
139 | button,
140 | html input[type="button"],
141 | input[type="reset"],
142 | input[type="submit"] {
143 | -webkit-appearance: button;
144 | cursor: pointer;
145 | }
146 |
147 | button[disabled],
148 | html input[disabled] {
149 | cursor: default;
150 | }
151 |
152 | button::-moz-focus-inner,
153 | input::-moz-focus-inner {
154 | border: 0;
155 | padding: 0;
156 | }
157 |
158 | input {
159 | line-height: normal;
160 | }
161 |
162 | input[type="checkbox"],
163 | input[type="radio"] {
164 | box-sizing: border-box;
165 | padding: 0;
166 | }
167 |
168 | input[type="number"]::-webkit-inner-spin-button,
169 | input[type="number"]::-webkit-outer-spin-button {
170 | height: auto;
171 | }
172 |
173 | input[type="search"]::-webkit-search-cancel-button,
174 | input[type="search"]::-webkit-search-decoration {
175 | -webkit-appearance: none;
176 | }
177 |
178 | fieldset {
179 | border: 1px solid #c0c0c0;
180 | margin: 0 2px;
181 | padding: 0.35em 0.625em 0.75em;
182 | }
183 |
184 | legend {
185 | border: 0;
186 | padding: 0;
187 | }
188 |
189 | textarea {
190 | overflow: auto;
191 | }
192 |
193 | optgroup {
194 | font-weight: bold;
195 | }
196 |
197 | table {
198 | border-collapse: collapse;
199 | border-spacing: 0;
200 | }
201 |
202 | td,
203 | th {
204 | padding: 0;
205 | }
206 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/layout/_header-search.scss:
--------------------------------------------------------------------------------
1 | .search-toggle {
2 | padding: 3px 7px;
3 | height: 30px;
4 | position: relative;
5 |
6 | &:focus {
7 | outline: 2px solid transparent;
8 | outline-offset: -2px;
9 | box-shadow: 0 0 0 1px #aaa;
10 | border-radius: 4px;
11 | }
12 |
13 | .icon {
14 | fill: $black;
15 | height: 24px;
16 | position: relative;
17 | transition: opacity 100ms cubic-bezier(0.645, 0.045, 0.355, 1);
18 | width: 24px;
19 | transform: translate3d(0, 0, 0);
20 |
21 | @include hover {
22 | &:hover {
23 | opacity: .7;
24 | }
25 | }
26 |
27 | .changing & {
28 | transition: 0;
29 | }
30 |
31 | &.icon-search {
32 | left: -0.05em;
33 | top: .1em
34 | }
35 | }
36 | }
37 |
38 | .site-search {
39 | z-index: 9999;
40 | transition: transform 300ms cubic-bezier(0.455, 0.030, 0.515, 0.955), visibility 0ms cubic-bezier(0.694, 0, 0.335, 1) 300ms;
41 |
42 | label {
43 | @include hide;
44 | }
45 |
46 | input {
47 | @include font-size(19px);
48 | background: $white;
49 | border-radius: 0;
50 | border: 0;
51 | box-shadow: 0px 2px 40px 0px rgba(0, 0, 0, 0.08);
52 | height: 80px;
53 | margin: 0 !important;
54 | padding-left: 3.5em;
55 | transition: height .3s cubic-bezier(.694,.0482,.335,1);
56 | z-index: 99999;
57 |
58 | @media only screen and (min-width: 600px) {
59 | @include font-size(21px);
60 | }
61 | }
62 |
63 | .search-form {
64 | left: 0;
65 | position: fixed;
66 | right: 0;
67 | top: 0;
68 | transform: translateY(-150%);
69 | transition: transform 400ms cubic-bezier(0.455, 0.030, 0.515, 0.955), visibility 0ms cubic-bezier(0.694, 0, 0.335, 1) 400ms;
70 | visibility: hidden;
71 | z-index: 99998;
72 |
73 | .admin-bar & {
74 | top: 32px;
75 |
76 | @media only screen and (max-width: 782px) {
77 | top: 46px;
78 | }
79 | }
80 |
81 | .search-submit {
82 | top: 0;
83 | bottom: 0;
84 | left: 0;
85 | padding: 0 2em;
86 | z-index: 99999999999;
87 | right: initial;
88 |
89 | .icon {
90 | top: 1.21em;
91 | }
92 | }
93 | }
94 |
95 | &-overlay {
96 | background: rgba(0, 0, 0, 0.06);
97 | position: fixed;
98 | transition: opacity 400ms cubic-bezier(0.694, 0, 0.335, 1), visibility 0ms cubic-bezier(0.694, 0, 0.335, 1) 400ms;
99 | top: 0;
100 | right: 0;
101 | left: 0;
102 | bottom: 0;
103 | height: 100%;
104 | width: 100%;
105 | z-index: 99997;
106 | cursor: pointer;
107 | visibility: hidden;
108 | opacity: 0;
109 | }
110 | }
111 |
112 | .header-is-sticky.site-search-open .site-header {
113 | transform: translateY(-150%);
114 | }
115 |
116 | .site-search-open {
117 |
118 | .site-search .search-form {
119 | visibility: visible;
120 | transform: translateY(0);
121 | transition: transform 400ms cubic-bezier(0.694, 0, 0.335, 1), visibility 0ms cubic-bezier(0.694, 0, 0.335, 1);
122 | }
123 |
124 | .site-search input {
125 | box-shadow: 0px 2px 40px 0px rgba(0, 0, 0, 0.08);
126 | }
127 |
128 | .site-search-overlay {
129 | opacity: 1;
130 | transition: opacity 400ms cubic-bezier(0.694, 0, 0.335, 1), visibility 0ms cubic-bezier(0.694, 0, 0.335, 1);
131 | visibility: visible;
132 | pointer-events: normal;
133 | }
134 |
135 | .drop-in--from-bottom.drop-in--pinned {
136 | transform: translateY(150%);
137 | }
138 |
139 | }
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_customizer.scss:
--------------------------------------------------------------------------------
1 | .customize-partial-edit-shortcuts-shown {
2 |
3 | .site-branding-text {
4 |
5 | .customize-partial-edit-shortcut-button {
6 | margin-left: -2px;
7 | margin-top: -2px;
8 | }
9 | }
10 |
11 | .custom-logo-link {
12 | @media only screen and (min-width: 600px) {
13 | margin-left: -30px;
14 | align-items: center;
15 | display: flex;
16 | justify-content: center;
17 |
18 | .customize-partial-edit-shortcut,
19 | .customize-partial-edit-shortcut-button {
20 | position: relative;
21 | float: none;
22 | left: initial;
23 | }
24 |
25 | .customize-partial-edit-shortcut-button {
26 | left: -5px;
27 | }
28 |
29 | .customize-partial-edit-shortcut {
30 | height: auto;
31 | width: auto;
32 | }
33 | }
34 | }
35 |
36 | .customize-partial-edit-shortcut-blogname,
37 | .customize-partial-edit-shortcut-custom_logo,
38 | .customize-partial-edit-shortcut-blogdescription {
39 | @media only screen and (max-width: 599px) {
40 | display: none;
41 | }
42 | }
43 |
44 | #site-navigation {
45 |
46 | .customize-partial-edit-shortcut-button {
47 | @media only screen and (min-width: 600px) and (max-width: 700px) {
48 | margin-top: -2px;
49 | }
50 |
51 | @media only screen and (max-width: 599px) {
52 | display: none;
53 | }
54 | }
55 | }
56 |
57 | .widget-area__wrapper {
58 |
59 | .customize-partial-edit-shortcut--footer-colors {
60 | top: 8px;
61 | left: 10px;
62 |
63 | .customize-partial-edit-shortcut-button {
64 | left: 0;
65 |
66 | &::before {
67 | box-shadow: none;
68 | color: $white;
69 | content: "\f540";
70 | font: 400 15px/72px dashicons;
71 | height: 20px;
72 | line-height: 20px;
73 | display: block;
74 | position: absolute;
75 | right: 0.18em;
76 | text-shadow: 0 -1px 1px rgba(0, 122, 182, 0.8), 1px 0 1px #007ab6, 0 1px 1px #007ab6, -1px 0 1px #007ab6;
77 | top: 0.24em;
78 | width: 20px;
79 | }
80 | }
81 | }
82 |
83 | .widget {
84 |
85 | .customize-partial-edit-shortcut-button {
86 | left: -35px;
87 | top: 4px;
88 | }
89 | }
90 |
91 | .footer-navigation {
92 |
93 | .customize-partial-edit-shortcut-button {
94 | display: none;
95 | }
96 | }
97 | }
98 |
99 | .themebeans-customizer-add-widget-line {
100 | background: none;
101 | border: none;
102 | box-shadow: none;
103 | padding: 8px 0;
104 | width: 100%;
105 | opacity: 0;
106 | visibility: hidden;
107 | margin-top: 20px;
108 | transition: opacity 150ms cubic-bezier(0.38, 0.32, 0.36, 0.98), visibility 0 cubic-bezier(0.38, 0.32, 0.36, 0.98) 150ms;
109 |
110 | &::after {
111 | background: #008ec2;
112 | content: "";
113 | display: block;
114 | height: 3px;
115 | margin-left: auto;
116 | margin-right: auto;
117 | max-width: 440px;
118 | }
119 | }
120 |
121 | #secondary:hover .themebeans-customizer-add-widget-line {
122 | opacity: 1;
123 | visibility: visible;
124 | transition: opacity 150ms cubic-bezier(0.38, 0.32, 0.36, 0.98), visibility 0 cubic-bezier(0.38, 0.32, 0.36, 0.98) 0;
125 | }
126 |
127 | #engagement-bar {
128 |
129 | .customize-partial-edit-shortcut-button {
130 | margin-top: 12px;
131 | margin-left: -6px;
132 |
133 | @media only screen and (max-width: 699px) {
134 | display: none;
135 | }
136 | }
137 | }
138 | }
139 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_share-this.scss:
--------------------------------------------------------------------------------
1 | $share-this-vertical-offset: -0.118em !default;
2 | $share-this-background: #242424 !default;
3 | $share-this-foreground: #fff !default;
4 | $share-this-highlight-link: rgba($white, 0.25) !default;
5 | $share-this-border-radius: 0.25em !default;
6 | $share-this-arrow-size: 0.4em !default;
7 |
8 | $share-this-sharer-width: 2em !default;
9 | $share-this-sharer-height: 2em !default;
10 | $share-this-sharer-padding: 0.45em !default;
11 | $share-this-border-distance: 4em !default;
12 | $share-this-small-devices-max: 575px !default;
13 |
14 | @mixin share-this-transform($transformation...) {
15 | transform: $transformation;
16 | }
17 |
18 | @mixin share-this-on-bottom() {
19 |
20 | &::before {
21 | border-width: 0 $share-this-arrow-size $share-this-arrow-size;
22 | bottom: auto;
23 | margin-top: 0;
24 | top: 100%;
25 | }
26 |
27 | > ul {
28 | top: 100%;
29 | transform: translateX(-50%);
30 | margin: $share-this-arrow-size 0 0;
31 | }
32 | }
33 |
34 | .share-this-popover {
35 | @include font-size(19px);
36 | animation: share-this 180ms forwards linear;
37 | max-width: $share-this-border-distance * 2;
38 | pointer-events: none;
39 |
40 | &::before {
41 | border-color: $share-this-background transparent;
42 | border-style: solid;
43 | border-width: $share-this-arrow-size $share-this-arrow-size 0;
44 | bottom: 100%;
45 | content: "";
46 | height: 0;
47 | left: 50%;
48 | margin: $share-this-vertical-offset + $share-this-arrow-size (-$share-this-arrow-size);
49 | position: absolute;
50 | width: 0;
51 | }
52 |
53 | > ul {
54 | @include share-this-transform(translate(-50%, -100%));
55 | background: linear-gradient(to bottom, rgba(49, 49, 47, 0.99), $share-this-background);
56 | border-radius: $share-this-border-radius;
57 | color: $share-this-foreground;
58 | left: 50%;
59 | display: flex;
60 | list-style: none;
61 | margin: $share-this-vertical-offset - $share-this-arrow-size 0 0;
62 | padding: 0;
63 | pointer-events: auto;
64 | position: absolute;
65 | white-space: nowrap;
66 | padding-left: 3px;
67 | padding-right: 10px;
68 |
69 | > li {
70 | list-style: none;
71 | display: inline-block;
72 | height: $share-this-sharer-height;
73 | line-height: $share-this-sharer-height;
74 | text-align: center;
75 | margin: 0;
76 | padding: 0;
77 | width: $share-this-sharer-width;
78 |
79 | &:not(:last-child) {
80 | margin-right: -10px;
81 | }
82 |
83 | &:before {
84 | display: none;
85 | }
86 |
87 | > a {
88 | box-sizing: border-box;
89 | color: inherit;
90 | display: inline-block;
91 | height: 100%;
92 | padding: $share-this-sharer-padding;
93 | width: 100%;
94 | }
95 | }
96 | }
97 |
98 | svg {
99 | vertical-align: top;
100 | }
101 | }
102 |
103 | [data-share-via="speakers"] a {
104 | border-left: 1px solid #444;
105 | margin-left: 10px;
106 |
107 | svg {
108 | fill: $white;
109 | }
110 | }
111 |
112 | @keyframes share-this {
113 | 0% {
114 | opacity: 0;
115 | transform: matrix(0.97, 0, 0, 1, 0, 12);
116 | }
117 |
118 | 20% {
119 | opacity: 0.7;
120 | transform: matrix(0.99, 0, 0, 1, 0, 2);
121 | }
122 |
123 | 40% {
124 | opacity: 1;
125 | transform: matrix(1, 0, 0, 1, 0, -1);
126 | }
127 |
128 | 70% {
129 | opacity: 1;
130 | transform: matrix(1, 0, 0, 1, 0, 0);
131 | }
132 |
133 | 100% {
134 | opacity: 1;
135 | transform: matrix(1, 0, 0, 1, 0, 0);
136 | }
137 | }
138 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/components/Menu.js:
--------------------------------------------------------------------------------
1 | import React, { useRef, useState } from 'react';
2 | import { Link, StaticQuery, graphql } from 'gatsby';
3 | import { createLocalLink } from '../utils';
4 | import { BodyClass } from 'react-extras';
5 | import MenuToggle from './MenuToggle';
6 |
7 | const MENU_QUERY = graphql`
8 | fragment MenuFields on WPGraphQL_MenuItem {
9 | id
10 | label
11 | url
12 | connectedObject {
13 | __typename
14 | }
15 | }
16 |
17 | query GET_MENU_ITEMS {
18 | wpgraphql {
19 | menuItems(where: { location: PRIMARY }) {
20 | nodes {
21 | ...MenuFields
22 | childItems {
23 | nodes {
24 | ...MenuFields
25 | }
26 | }
27 | }
28 | }
29 | }
30 | }
31 | `;
32 |
33 | const renderLink = menuItem =>
34 | menuItem.connectedObject.__typename === 'WPGraphQL_MenuItem' ? (
35 |
36 | {menuItem.label}
37 |
38 | ) : createLocalLink(menuItem.url) ? (
39 | {menuItem.label}
40 | ) : (
41 | menuItem.label
42 | );
43 |
44 | const renderMenuItem = menuItem => {
45 | if (menuItem.childItems && menuItem.childItems.nodes.length) {
46 | return renderSubMenu(menuItem);
47 | } else {
48 | return (
49 |
50 | {renderLink(menuItem)}
51 |
52 | );
53 | }
54 | };
55 |
56 | const renderSubMenu = menuItem => {
57 | return (
58 |
59 | {renderLink(menuItem)}
60 |
61 |
62 | {menuItem.childItems.nodes.map(item => renderMenuItem(item))}
63 |
64 |
65 | );
66 | };
67 |
68 | const Menu = ({ location }) => {
69 | const navRef = useRef();
70 | const [navOpen, setNavOpen] = useState(false);
71 |
72 | const openNav = () => {
73 | navRef.current.classList.toggle('toggled-on');
74 | navRef.current.classList.toggle('nav-enabled');
75 | navOpen ? setNavOpen(false) : setNavOpen(true);
76 | };
77 | return (
78 | {
81 | if (data.wpgraphql.menuItems) {
82 | return (
83 |
108 | );
109 | } else {
110 | return null;
111 | }
112 | }}
113 | />
114 | );
115 | };
116 |
117 | export default Menu;
118 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/layout/_header.scss:
--------------------------------------------------------------------------------
1 | .site-header {
2 | @include clearfix;
3 | margin: 0 auto;
4 |
5 | @media only screen and (max-width: 599px) {
6 |
7 | &::after {
8 | background: linear-gradient($white 0%, rgba($white, 0));
9 | background: transparent;
10 | content: "";
11 | display: none;
12 | height: 40px;
13 | left: 0;
14 | pointer-events: none;
15 | position: fixed;
16 | right: 0;
17 | top: 100px;
18 | width: 100%;
19 | z-index: 99999999;
20 | }
21 | }
22 |
23 | .container {
24 | min-height: 60px;
25 | }
26 |
27 | .site-logo {
28 |
29 | &.no-border-radius img {
30 | border-radius: 0;
31 | }
32 |
33 | img {
34 | border-radius: 100%;
35 | transition: transform 0.3s cubic-bezier(0.694, 0.0482, 0.335, 1), box-shadow 300ms cubic-bezier(0.694, 0.0482, 0.335, 1), border-radius 0.2s cubic-bezier(0.694, 0.0482, 0.335, 1);
36 |
37 | .changing & {
38 | transition: 0;
39 | }
40 |
41 | .font-size--large & {
42 | transform: scale(1.1);
43 | }
44 |
45 | .font-size--larger & {
46 | transform: scale(1.15);
47 | }
48 |
49 | .font-size--largest & {
50 | transform: scale(1.2);
51 | }
52 | }
53 |
54 | @include hover {
55 |
56 | &:not(.no-animation):hover img {
57 | transform: scale(1.075);
58 | }
59 |
60 | .font-size--large &:not(.no-animation):hover img {
61 | transform: scale(1.175);
62 | }
63 |
64 | .font-size--larger &:not(.no-animation):hover img {
65 | transform: scale(1.275);
66 | }
67 |
68 | .font-size--largest &:not(.no-animation):hover img {
69 | transform: scale(1.375);
70 | }
71 | }
72 | }
73 |
74 | .sep {
75 | border-left: 1px solid rgba(0, 0, 0, 0.15);
76 | display: inline-block;
77 | height: 24px;
78 | margin-left: 15px;
79 | padding-left: 2px;
80 | position: relative;
81 | transition: all 100ms cubic-bezier(0.645, 0.045, 0.355, 1);
82 |
83 | @media only screen and (max-width: 374px) {
84 | display: none;
85 | }
86 |
87 | .font-size--large & {
88 | padding-left: 4px;
89 | margin-left: 20px;
90 | }
91 |
92 | .font-size--larger & {
93 | padding-left: 6px;
94 | margin-left: 22px;
95 | }
96 |
97 | .font-size--largest & {
98 | padding-left: 8px;
99 | margin-left: 24px;
100 | }
101 | }
102 |
103 | .site-branding-text {
104 | margin-top: 12px;
105 |
106 | @media only screen and (max-width: 599px) {
107 | display: none;
108 | }
109 | }
110 |
111 | .site-description {
112 | @include font-size(18px);
113 | line-height: 1;
114 | margin-bottom: 0;
115 | }
116 |
117 | .nav {
118 |
119 | div {
120 | display: inline-block;
121 | }
122 |
123 | li {
124 | position: relative;
125 | text-align: right;
126 | line-height: 1;
127 |
128 | @media only screen and (min-width: 600px) {
129 | display: inline-block;
130 | text-align: left;
131 | }
132 |
133 | a {
134 | display: inline-block;
135 | transition: opacity 100ms cubic-bezier(0.645, 0.045, 0.355, 1);
136 |
137 | @media only screen and (min-width: 600px) {
138 | padding: 0.25em 0.6em;
139 | @include font-size(18px);
140 | }
141 |
142 | @media only screen and (min-width: 600px) and (max-width: 700px) {
143 | @include font-size(16px);
144 | padding: 0.25em 0.4em;
145 | }
146 |
147 | @include hover {
148 |
149 | &:hover {
150 | opacity: 0.7;
151 | }
152 | }
153 |
154 | .changing & {
155 | transition: 0;
156 | }
157 | }
158 |
159 | &.current_page_item > a {
160 | opacity: 0.7;
161 | }
162 |
163 | &.current_page_item .icon {
164 | opacity: 0.7;
165 | }
166 | }
167 | }
168 | }
169 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_blocks.scss:
--------------------------------------------------------------------------------
1 | // Editor customizations.
2 | @import "color-palette";
3 | @import "font-sizes";
4 |
5 | // Import blocks.
6 | @import "archives-categories";
7 | @import "audio-video";
8 | @import "button";
9 | @import "captions";
10 | @import "code";
11 | @import "columns";
12 | @import "cover";
13 | @import "embed";
14 | @import "file";
15 | @import "gallery";
16 | @import "image";
17 | @import "latest-comments";
18 | @import "latest-posts";
19 | @import "list";
20 | @import "misc";
21 | @import "more";
22 | @import "paragraph";
23 | @import "preformatted";
24 | @import "pullquote";
25 | @import "quote";
26 | @import "separator";
27 | @import "table";
28 | @import "verse";
29 |
30 | // Third party blocks.
31 | @import "coblocks";
32 | @import "blockgallery";
33 |
34 | .entry-media,
35 | .entry-header,
36 | .entry-footer {
37 | max-width: $content__width;
38 | padding-left: $content__padding;
39 | padding-right: $content__padding;
40 | margin-left: auto;
41 | margin-right: auto;
42 | }
43 |
44 | .entry-media {
45 | max-width: $content__width--wide;
46 | }
47 |
48 | .entry-content > *,
49 | .entry-summary > * {
50 | margin: $content__spacer--mobile auto;
51 | max-width: $content__width;
52 | padding-left: $content__padding;
53 | padding-right: $content__padding;
54 |
55 | @media screen and (min-width: $content__media-query) {
56 | margin-bottom: $content__spacer;
57 | margin-top: $content__spacer;
58 | }
59 |
60 | &:not(p):not(ul):not(ol) {
61 | margin: $content__spacer--mobile + 12px auto;
62 |
63 | @media screen and (min-width: $content__media-query) {
64 | margin-bottom: $content__spacer + 12px;
65 | margin-top: $content__spacer + 12px;
66 | }
67 | }
68 |
69 | &:first-child {
70 | margin-top: 0 !important;
71 | }
72 |
73 | &:last-child {
74 | margin-bottom: 0 !important;
75 | }
76 |
77 | > *:first-child {
78 | margin-top: 0;
79 | }
80 |
81 | > *:last-child {
82 | margin-bottom: 0;
83 | }
84 |
85 | &.alignwide {
86 | max-width: $content__width--wide;
87 |
88 | @media screen and (min-width: $content__media-query) {
89 | margin-bottom: $content__spacer + 20px;
90 | margin-top: $content__spacer + 20px;
91 | }
92 | }
93 |
94 | &.alignfull {
95 | margin: $content__spacer + 10px 0;
96 | max-width: 100% !important;
97 | padding-left: 0;
98 | padding-right: 0;
99 |
100 | @media screen and (min-width: $content__media-query) {
101 | margin-bottom: $content__spacer + 30px;
102 | margin-top: $content__spacer + 30px;
103 | }
104 | }
105 |
106 | &.alignleft {
107 | margin-right: $content__padding;
108 | max-width: 100%;
109 |
110 | @media screen and (min-width: $content__align--mobile-media-query--min) {
111 | float: left;
112 | margin-right: 40px;
113 | margin-top: 0;
114 | max-width: $content__align--width !important;
115 | }
116 |
117 | @media screen and (min-width: $content__media-query) {
118 | margin-left: calc(50% - #{$content__align--leftright-margin});
119 | }
120 | }
121 |
122 | &.alignright {
123 | margin-left: $content__padding;
124 |
125 | @media screen and (min-width: $content__align--mobile-media-query--min) {
126 | float: right;
127 | margin-left: 40px;
128 | margin-top: 0;
129 | max-width: $content__align--width !important;
130 | }
131 |
132 | @media screen and (min-width: $content__media-query) {
133 | margin-right: calc(50% - #{$content__align--leftright-margin});
134 | }
135 | }
136 |
137 | .alignleft,
138 | .alignright {
139 | > figcaption {
140 | @media screen and (max-width: $content__align--mobile-media-query--max) {
141 | display: block !important;
142 | }
143 | }
144 | }
145 |
146 | .wpcf7-form {
147 | padding-left: 20px;
148 | padding-right: 20px;
149 | }
150 | }
151 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_drop-in.scss:
--------------------------------------------------------------------------------
1 | @media only screen and (min-width: 600px) {
2 | .drop-in {
3 | .blog &,
4 | .search &,
5 | .single &,
6 | .archive & {
7 | left: 0;
8 | position: fixed;
9 | right: 0;
10 | top: 0;
11 | }
12 |
13 | &--from-top {
14 | .admin-bar & {
15 | top: 32px;
16 |
17 | @media only screen and (max-width: 782px) {
18 | top: 46px;
19 | }
20 | }
21 | }
22 |
23 | .drop-in-style-2 &--not-top,
24 | .drop-in-style-2 &--pinned:not(&--top) {
25 | box-shadow: 0 0 1px rgba(0, 0, 0, 0.25);
26 | }
27 |
28 | &--not-top,
29 | &--pinned:not(&--top) {
30 | transform: translateY(0);
31 | box-shadow: 0 0 15px rgba(0, 0, 0, 0.075);
32 | transition: transform 0.4s cubic-bezier(0.694, 0.0482, 0.335, 1),
33 | box-shadow 0.4s cubic-bezier(0.694, 0.0482, 0.335, 1);
34 |
35 | .changing & {
36 | transition: 0;
37 | }
38 |
39 | .container {
40 | padding-top: 8px !important;
41 | padding-bottom: 8px !important;
42 | }
43 |
44 | .site-logo {
45 | img {
46 | transform: scale(0.8);
47 | }
48 |
49 | @include hover {
50 | &:not(.no-animation):hover img {
51 | transform: scale(0.875);
52 | }
53 | }
54 | }
55 |
56 | .sep {
57 | height: 20px;
58 | margin-left: 10px;
59 | }
60 |
61 | .social-navigation {
62 | margin-left: 4px;
63 |
64 | li {
65 | margin-right: -8px;
66 | transform: scale(0.9);
67 | }
68 | }
69 | }
70 |
71 | &--unpinned {
72 | transform: translateY(-100%);
73 | box-shadow: 0 0 0 rgba(0, 0, 0, 0);
74 | }
75 |
76 | &--top {
77 | box-shadow: 0 0 0 rgba(0, 0, 0, 0);
78 |
79 | .container {
80 | padding-top: 25px;
81 | padding-bottom: 25px;
82 | }
83 | }
84 | }
85 | }
86 |
87 | .drop-in--from-bottom,
88 | .drop-in--js:not(.drop-in--top) {
89 | // backdrop-filter: saturate(180%) blur(20px);
90 | background-color: rgba(255, 255, 255, 0.98);
91 |
92 | @supports (-webkit-backdrop-filter: none) {
93 | & {
94 | background-color: rgba(255, 255, 255, 0.85);
95 | }
96 | }
97 | }
98 |
99 | .drop-in {
100 | transition: transform 0.3s cubic-bezier(0.694, 0.0482, 0.335, 1),
101 | box-shadow 0.3s cubic-bezier(0.694, 0.0482, 0.335, 1),
102 | background 0.3s cubic-bezier(0.694, 0.0482, 0.335, 1);
103 | z-index: 9999;
104 |
105 | @media screen and (max-width: 599px) {
106 | &--from-top {
107 | backdrop-filter: none;
108 | }
109 | }
110 |
111 | .changing & {
112 | transition: 0;
113 | }
114 |
115 | .container {
116 | padding-bottom: 25px;
117 | padding-left: 20px;
118 | padding-right: 20px;
119 | padding-top: 25px;
120 | transition: padding 0.4s cubic-bezier(0.694, 0.0482, 0.335, 1);
121 | width: 100%;
122 |
123 | @media screen and (min-width: 744px) {
124 | width: 98vw;
125 | padding-left: 30px;
126 | padding-right: 30px;
127 | }
128 | }
129 |
130 | &--from-bottom {
131 | bottom: 0;
132 | left: 0;
133 | position: fixed;
134 | right: 0;
135 | top: initial !important;
136 | transform: translateY(100%);
137 |
138 | .container.max-width {
139 | padding-top: 0 !important;
140 | padding-bottom: 0 !important;
141 | }
142 |
143 | &.drop-in--pinned {
144 | box-shadow: 0 0 15px rgba(0, 0, 0, 0.075);
145 | transform: translateY(0);
146 | }
147 | }
148 |
149 | .drop-in-style-2 &--from-bottom.drop-in--pinned {
150 | box-shadow: 0 0 1px rgba(0, 0, 0, 0.25);
151 | }
152 | }
153 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_om-inline.scss:
--------------------------------------------------------------------------------
1 | .course-background {
2 | position: relative !important;
3 | margin: 2.225em 0 2em !important;
4 |
5 | @media only screen and (min-width: 700px) {
6 | display: inline !important;
7 | float: right !important;
8 | margin: .375em 0 2em 3.5em !important;
9 | max-width: 360px !important;
10 | }
11 |
12 | @media only screen and (min-width: 1300px) {
13 | max-width: 400px !important;
14 | }
15 | }
16 |
17 | #course-optin {
18 | border-radius: 4px;
19 | padding: 35px 40px 40px;
20 |
21 | @media only screen and (min-width: 560px) {
22 | padding: 50px 40px 58px;
23 | }
24 |
25 | @media only screen and (min-width: 700px) {
26 | padding: 55px 60px 60px 60px;
27 | padding-right: 0;
28 | margin-right: 0 !important;
29 | }
30 |
31 | @media only screen and (min-width: 1012px) {
32 | margin-right: -120px !important;
33 | }
34 |
35 | @media only screen and (min-width: 1300px) {
36 | padding: 100px 110px 110px;
37 | padding-right: 0;
38 | margin-right: -200px!important;
39 | }
40 |
41 | &::before {
42 | border-radius: 6px;
43 | background: $background !important;
44 | left: 0 !important;
45 | right: 0 !important;
46 | top: 0 !important;
47 | bottom: 0;
48 | position: absolute;
49 | height: 100%;
50 | width: 100%;
51 | content: '';
52 | display: block;
53 |
54 | @media only screen and (min-width: 700px) {
55 | border-radius: 0;
56 | width: 100vw;
57 | }
58 | }
59 | }
60 |
61 | #course-body {
62 | position: relative;
63 | background: transparent !important;
64 | padding: 0 !important;
65 | max-width: 420px !important;
66 | text-align: left !important;
67 |
68 | @media only screen and (min-width: 1012px) {
69 | padding-right: 0 !important;
70 | }
71 |
72 | #course-element-title-content {
73 | @include fluid-type(514px, 820px, 28px, 34px);
74 | @include fluid-line-height(514px, 1200px, 1.3, calc(1.25em + (1.5 - 1.3) * ((100vw - 21em)/(35 - 21))), 1.3);
75 | clear: both;
76 | color: $black;
77 | text-align: left !important;
78 | font-family: $font__heading;
79 | font-weight: 800;
80 | margin: 0;
81 | color: $black !important;
82 | }
83 |
84 | #course-element-tagline {
85 | @include font-size(16px);
86 | line-height: 1.6;
87 | text-align: left !important;
88 | font-family: $font__heading;
89 | color: $black;
90 | font-weight: 500;
91 | max-width: 500px;
92 | margin: 0 auto 2em;
93 | opacity: .8;
94 | color: $black !important;
95 |
96 | @media only screen and (min-width: 700px) {
97 | @include font-size(17px);
98 | }
99 | }
100 |
101 | #course-field-name,
102 | #course-field-email {
103 | font-size: 18px !important;
104 | border-radius: 4px !important;
105 | font-family: $font__heading !important;
106 | font-weight: 500 !important;
107 | padding: .5em 1.3em .45em !important;
108 | transition: background 200ms cubic-bezier(0.645, 0.045, 0.355, 1), border 200ms cubic-bezier(0.645, 0.045, 0.355, 1);
109 | height: auto !important;
110 | line-height: initial!important;
111 | border-color: #fff !important;
112 |
113 | .changing & {
114 | transition: 0;
115 | }
116 | }
117 |
118 | #course-field-submit {
119 | font-size: 18px !important;
120 | background: $black !important;
121 | color: $white !important;
122 | height: auto !important;
123 | box-shadow: none !important;
124 | border: none !important;
125 | border-radius: 4px !important;
126 | font-family: $font__heading !important;
127 | font-weight: 500 !important;
128 | padding: .65em 1.3em .52em !important;
129 | transition: opacity 150ms ease;
130 |
131 | .changing & {
132 | transition: 0;
133 | }
134 |
135 | &:hover {
136 | background: $black !important;
137 | opacity: .6 !important;
138 | }
139 | }
140 | }
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/modules/_accessibility-settings.scss:
--------------------------------------------------------------------------------
1 | .c-settings {
2 | line-height: 1;
3 | position: relative;
4 |
5 | &__wrapper {
6 | line-height: 1;
7 | position: absolute;
8 | top: -9999px;
9 | z-index: 9999;
10 | right: 5px;
11 | perspective: 600px;
12 | transition: top 0s linear .2s;
13 |
14 | @media only screen and (min-width: 600px) {
15 | right: 0;
16 | }
17 |
18 | [aria-expanded=true] + & {
19 | top: 100%;
20 | top: calc(100% + 13px);
21 | transition: none;
22 | }
23 |
24 | }
25 |
26 | &__arrow {
27 | top: -13px;
28 | box-shadow: -1px -1px 1px -1px rgba(0, 0, 0, .6);
29 | transform: rotate(45deg) translate(6px, 6px);
30 | right: 9px;
31 | position: absolute;
32 |
33 | &::after {
34 | content: '';
35 | display: block;
36 | width: 11px;
37 | height: 11px;
38 | background: $white;
39 | }
40 | }
41 |
42 | &__inner {
43 | background-color: $white;
44 | border-radius: 4px;
45 | border: 1px solid rgba(0, 0, 0, 0.15);
46 | box-shadow: 3px 3px 0 0 rgba(0, 0, 0, .05);
47 | opacity: 0;
48 | transform-origin: 50% 0;
49 | transform: rotateX(-15deg);
50 | transition: transform .2s cubic-bezier(.64, 0, .35, 1), opacity .2s cubic-bezier(.64, 0, .35, 1);
51 |
52 | [aria-expanded=true] + .c-settings__wrapper & {
53 | opacity: 1;
54 | transform: rotate(0)
55 | }
56 | }
57 |
58 | &__item {
59 | display: flex !important;
60 | padding: 15px 20px;
61 | min-width: 186px;
62 | border-bottom: 1px solid rgba(8, 10, 12, .05);
63 |
64 | &:last-child {
65 | border-bottom: 0
66 | }
67 |
68 | &-inner {
69 | display: flex !important;
70 | width: 100%;
71 | }
72 | }
73 |
74 | &__label {
75 | @include font-size(16px);
76 | display: block;
77 | color: $black;
78 | white-space: nowrap;
79 | margin-right: 24px;
80 |
81 | @media only screen and (min-width: 600px) and (max-width: 700px) {
82 | @include font-size(15px);
83 | }
84 | }
85 |
86 | &__toggle {
87 | margin-right: 5px;
88 |
89 | @media only screen and (min-width: 600px) {
90 | margin-right: 0;
91 | }
92 |
93 | .icon-settings-2 {
94 | height: 29px;
95 | width: 28px;
96 | }
97 |
98 | .icon-settings-3 {
99 | height: 26px;
100 | width: 26px;
101 | }
102 | }
103 |
104 | &__text-size {
105 | font-weight: 700;
106 | line-height: 28px !important;
107 | padding: 0 6px;
108 | border-radius: 5px;
109 | background: none;
110 | color: $black !important;
111 | border: 1px solid lighten( $gray, 30% );
112 | position: absolute;
113 | right: 18px;
114 | width: 27px;
115 | height: 30px;
116 | }
117 |
118 | &__switch {
119 | margin-left: auto;
120 | }
121 |
122 | .c-switch {
123 | position: relative;
124 | width: 38px;
125 | height: 20px;
126 | border: none;
127 | background-color: lighten( $gray, 30% );
128 | border-radius: 9999px;
129 | transition: background 50ms cubic-bezier(.64, 0, .35, 1);
130 |
131 | &:after,
132 | &:before {
133 | content: "";
134 | position: absolute;
135 | top: 1px;
136 | left: 1px;
137 | width: 18px;
138 | height: 18px;
139 | border-radius: 100%;
140 | background-color: #fff;
141 | transition: transform .2s cubic-bezier(.64, 0, .35, 1), background .2s cubic-bezier(.64, 0, .35, 1), opacity .2s cubic-bezier(.64, 0, .35, 1);
142 | }
143 |
144 | &:after {
145 | opacity: 1
146 | }
147 |
148 | &[class*=night-mode]:before {
149 | }
150 |
151 | &[aria-checked=true] {
152 | background-color: rgb(0, 122, 255);
153 | }
154 |
155 | &[aria-checked=true][class*=night-mode] {
156 | }
157 |
158 | &[aria-checked=true]:after,
159 | &[aria-checked=true]:before {
160 | transform: translateX(100%)
161 | }
162 |
163 | &[aria-checked=true]:after {
164 | opacity: 0
165 | }
166 |
167 | &[disabled] {
168 | opacity: .5;
169 | cursor: default
170 | }
171 | }
172 | }
173 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/widgets/_widgets.scss:
--------------------------------------------------------------------------------
1 | .widget {
2 | ul,
3 | li {
4 | margin: 0 0 0 8px;
5 | padding: 0;
6 | }
7 | }
8 |
9 | /* Cats */
10 | .widget_recent_comments ul li {
11 | margin-bottom: 10px;
12 | }
13 |
14 | .widget_rss ul li {
15 | margin-bottom: 25px;
16 | }
17 |
18 | .rss-date {
19 | display: block;
20 | text-transform: uppercase;
21 | }
22 |
23 | .post-date {
24 | color: #666;
25 | display: block;
26 | }
27 |
28 | /* Calendar */
29 | #wp-calendar {
30 | background: #fff;
31 | width: 100%;
32 |
33 | tfoot {
34 | display: none;
35 | }
36 | }
37 |
38 | #wp-calendar caption {
39 | font-size: 15px;
40 | font-weight: 500;
41 | margin-bottom: 10px;
42 | text-align: center;
43 | }
44 |
45 | #wp-calendar thead {
46 | font-size: 10px;
47 | }
48 |
49 | #wp-calendar thead th {
50 | font-size: 12px;
51 | font-weight: 500;
52 | }
53 |
54 | #wp-calendar thead th,
55 | #wp-calendar tbody td {
56 | background: #fff;
57 | border: none;
58 | padding: 4px 0;
59 | text-align: center;
60 | }
61 |
62 | #wp-calendar thead th {
63 | background-color: #e9e9e9;
64 | }
65 |
66 | #wp-calendar tbody .pad {
67 | background: none;
68 | }
69 |
70 | #wp-calendar tfoot #next {
71 | font-size: 12px;
72 | text-align: right;
73 | text-transform: uppercase;
74 | }
75 |
76 | #wp-calendar tfoot #prev {
77 | font-size: 12px;
78 | padding-top: 10px;
79 | text-transform: uppercase;
80 | }
81 |
82 | .widget_nav_menu .sub-menu {
83 | margin-left: 20px;
84 | }
85 |
86 | /* Tags */
87 | .tagcloud {
88 | margin-top: 1.5em;
89 | }
90 |
91 | .tagcloud > a {
92 | background: rgba(0, 0, 0, 0.05);
93 | border-radius: 2px;
94 | box-shadow: 0 0 0;
95 | color: $black;
96 | display: inline-block;
97 | line-height: 22px;
98 | margin: 0 -2px 5px 0;
99 | padding: 4px 10px;
100 | }
101 |
102 | .tagcloud > a:hover {
103 | background: rgba(0, 0, 0, 0.1);
104 | color: $black;
105 | }
106 |
107 | .widget_text + .widget.optin-monster-api {
108 | margin-top: -2em;
109 | }
110 |
111 | /* MC4WP */
112 | .widget_ninja_forms_widget,
113 | .widget_mc4wp_form_widget {
114 | text-align: center;
115 |
116 | p {
117 | margin-bottom: 0;
118 |
119 | &:first-of-type {
120 | margin-bottom: 1.5em;
121 | }
122 | }
123 |
124 | input {
125 | appearance: none;
126 | background: none;
127 | background: transparent;
128 | border: none;
129 | border-bottom: 4px solid $black;
130 | border-radius: 0;
131 | color: $black;
132 | font-family: $font__heading;
133 | font-size: 18px;
134 | font-weight: 600;
135 | height: 50px;
136 | margin-bottom: 25px;
137 | padding-bottom: 0;
138 | padding-left: 0;
139 |
140 | &:focus {
141 | box-shadow: none;
142 | border-color: $gray;
143 | }
144 |
145 | @include input-placeholder {
146 | color: rgba(0, 0, 0, .8);
147 | }
148 | }
149 |
150 | .ninja-forms-field {
151 | border-top: 0 !important;
152 | border-left: 0 !important;
153 | border-right: 0 !important;
154 | border-width: 4px !important;
155 | }
156 |
157 | .nf-error-field-errors {
158 | background: transparent;
159 | }
160 |
161 | input[type=submit],
162 | input[type=button] {
163 | border: 0;
164 | background: $black;
165 | margin-bottom: 0;
166 | border-radius: 4px;
167 | color: #fff;
168 | height: auto;
169 | padding: .5em 5em;
170 | width: 100%;
171 | text-align: center;
172 | transition: 200ms background cubic-bezier(0.3, -0.55, 0.1, 1.1);
173 |
174 | &:hover {
175 | background: $gray;
176 | }
177 | }
178 |
179 | .mc4wp-alert {
180 | @include font-size(13px);
181 | font-family: $font__heading;
182 | font-style: inherit;
183 | color: $gray;
184 | position: absolute;
185 | margin: 2px auto;
186 | width: 100%;
187 | left: 0;
188 | text-align: center;
189 |
190 | @media only screen and (min-width: 700px) {
191 | @include font-size(15px);
192 | margin: 10px auto;
193 | }
194 | }
195 | }
196 |
197 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/coblocks/blocks/_media-card.scss:
--------------------------------------------------------------------------------
1 | .wp-block-coblocks-media-card {
2 | &__wrapper {
3 | align-items: center;
4 | display: grid;
5 | grid-template-areas: "media-text-media media-text-content";
6 | grid-template-columns: 55% auto;
7 | grid-template-rows: auto;
8 | margin-left: auto;
9 | margin-right: auto;
10 | padding: 0 !important;
11 | position: relative;
12 | }
13 |
14 | &.is-style-right &__wrapper {
15 | grid-template-areas: "media-text-content media-text-media";
16 | grid-template-columns: auto 55%;
17 | }
18 |
19 | &__inner {
20 | color: inherit !important;
21 | }
22 |
23 | &__media {
24 | grid-area: media-text-media;
25 | margin: 0;
26 | position: relative;
27 |
28 | .has-no-media & {
29 | align-items: center;
30 | background: rgba(139, 139, 150, 0.1); // Matches the .components-placeholder in core.
31 | display: flex;
32 | height: 70vw;
33 | justify-content: center;
34 | margin-bottom: 0;
35 | margin-top: 0;
36 | max-height: 600px;
37 |
38 | @include break-small-mediacard {
39 | width: 100%;
40 | }
41 | }
42 |
43 | .has-no-media.alignfull &,
44 | .has-no-media.alignwide & {
45 | max-height: 700px;
46 | }
47 |
48 | svg {
49 | height: 30px;
50 | opacity: 0.15;
51 | position: relative;
52 | top: -30px;
53 | width: 30px;
54 |
55 | @include break-small-mediacard {
56 | height: 50px;
57 | width: 50px;
58 | }
59 | }
60 | }
61 |
62 | &__content {
63 | grid-area: media-text-content;
64 | margin-left: -50%;
65 | word-break: break-word;
66 | z-index: 1;
67 |
68 | @include break-small-mediacard {
69 | margin-left: -100px;
70 | }
71 |
72 | p:last-of-type {
73 | margin-bottom: 0;
74 | }
75 | }
76 |
77 | &.is-style-right &__content {
78 | margin-left: 0;
79 | margin-right: -50%;
80 |
81 | @include break-small-mediacard {
82 | margin-right: -100px;
83 | }
84 | }
85 |
86 | &__wrapper > figure > img,
87 | &__wrapper > figure > video {
88 | max-width: unset;
89 | vertical-align: middle;
90 | width: 100%;
91 | }
92 |
93 | @media (max-width: #{ ($break-small-mediacard) }) {
94 | &.is-stacked-on-mobile &__wrapper {
95 | grid-template-areas: "media-text-media" "media-text-content";
96 | grid-template-columns: 100% !important;
97 | }
98 |
99 | &.is-stacked-on-mobile.is-style-right &__content {
100 | @include break-small-mediacard {
101 | margin-right: -100px;
102 | }
103 | }
104 |
105 | &.is-stacked-on-mobile &__media {
106 | @include break-small-mediacard {
107 | position: inherit;
108 | }
109 | }
110 |
111 | &.is-stacked-on-mobile &__content {
112 | margin-left: 5%;
113 | margin-right: 5%;
114 | margin-top: -33%;
115 |
116 | @include break-small-mediacard {
117 | grid-area: media-text-content;
118 | margin-left: -100px;
119 | }
120 |
121 | p:last-of-type {
122 | margin-bottom: 0;
123 | }
124 | }
125 | }
126 | }
127 |
128 | //Fix background color contrast issue
129 | .is-twentynineteen {
130 | .entry .entry-content {
131 | .wp-block-coblocks-media-card {
132 | &__content {
133 | p,
134 | a,
135 | h1,
136 | h2,
137 | h3,
138 | h4,
139 | h5,
140 | h6 {
141 | color: inherit;
142 | }
143 | }
144 |
145 | @media (min-width: #{ ($break-small-twentynineteen--min) }) and (max-width: #{ ($break-small-twentynineteen) }) {
146 | &.is-stacked-on-mobile {
147 | flex-direction: column;
148 | }
149 |
150 | &.is-stacked-on-mobile .wp-block-coblocks-media-card__wrapper {
151 | grid-template-areas: "media-text-media" "media-text-content";
152 | grid-template-columns: 100% !important;
153 | }
154 |
155 | &.is-stacked-on-mobile .wp-block-coblocks-media-card__media {
156 | @include break-small-mediacard {
157 | position: inherit;
158 | }
159 | }
160 |
161 | &.is-stacked-on-mobile .wp-block-coblocks-media-card__content {
162 | margin-left: 5%;
163 | margin-right: 5%;
164 | margin-top: -33%;
165 |
166 | p:last-of-type {
167 | margin-bottom: 0;
168 | }
169 | }
170 | }
171 | }
172 | }
173 | }
174 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/_variables.scss:
--------------------------------------------------------------------------------
1 | $font__body: "Lora", serif;
2 | $font__heading: "Heebo", sans-serif;
3 | $font__figcaption: $font__heading;
4 |
5 | $white: #fff;
6 | $black: #242424;
7 | $gray: #535353;
8 | $dark-gray: #6d6c6c;
9 | $twitter: #1a8bf0;
10 | $facebook: #3b5998;
11 | $linkedin: #0084bf;
12 |
13 | $color__text-heading: $black;
14 | $color__text-main: $black;
15 |
16 | $font__size_base: 19px;
17 | $font__size-ratio: 1.1;
18 |
19 | $font__size-xxs: 1em / (1.5 * $font__size-ratio);
20 | $font__size-xs: 1em / (1.2 * $font__size-ratio);
21 | $font__size-sm: 1em / (1 * $font__size-ratio);
22 | $font__size-md: 1em * (1.25 * $font__size-ratio);
23 | $font__size-mdlrg: 1em * (1.5 * $font__size-ratio);
24 | $font__size-lg: 1em * (1.75 * $font__size-ratio);
25 | $font__size-xl: 1em * (2 * $font__size-ratio);
26 | $font__size-xxl: 1em * (2.5 * $font__size-ratio);
27 | $font__size-xxxl: 1em * (5 * $font__size-ratio);
28 |
29 | $font__line-height-body: 1.8;
30 | $font__line-height-heading: 1.25;
31 | $font__line-height-pre: 1.6;
32 |
33 | $font__weight-body: 400;
34 | $font__weight-heading: 800;
35 |
36 | $content_width: 86%;
37 | $content_max-width: 700px;
38 | $content_mobile-width: 90%;
39 |
40 | $accent: #218799;
41 | $background: rgba(0,0,0,.04);
42 | $green: #49e2be;
43 | $red: #f00;
44 |
45 | $color--error: #e85c41;
46 | $color--success: #2cb994;
47 |
48 | $color--has-background-color-fallback: #f5f5f5;
49 |
50 | $color--background-body: #fff;
51 | $color--background-screen: #f1f1f1;
52 | $color--background-hr: #ccc;
53 | $color--background-button: #e6e6e6;
54 | $color--background-pre: #f1f1f1;
55 | $color--background-ins: #fff9c0;
56 | $color--background-input-focus: #fff;
57 |
58 | $color--background-lightbox: #fff;
59 | $color--background-lightbox-dark: #1c1c21;
60 | $color--background-lightbox-button: $black;
61 | $color--background-lightbox-button-dark: #dfdfe2;
62 |
63 | $color--text-screen: #21759b;
64 | $color--text-input: $black;
65 | $color--text-input-focus: $black;
66 | $color--text-input-placeholder: #bbb;
67 | $color--text-footer-a: #bbb;
68 | $color--link: #4169e1;
69 | $color--link-visited: #800080;
70 | $color--link-hover: #333;
71 |
72 | $color--border-button: #ccc #ccc #888;
73 | $color--border-button-hover: #ccc #888 #aaa;
74 | $color--border-button-focus: #aaa #888 #888;
75 | $color--border-input: #e6e6e6;
76 | $color--border-input-hover: #d6d6d6;
77 | $color--border-input-focus: #c6c6c6;
78 | $color--border-abbr: #e8e8e8;
79 | $color--border-table: #ccc;
80 | $color--border-footer: rgba(0, 0, 0, 0.075);
81 |
82 | $color--outline-button: #959595;
83 |
84 | // Content variables
85 | $content__width: 740px;
86 | $content__width--wide: 940px;
87 | $content__padding: 20px;
88 | $content__width--less-padding: $content__width - ($content__padding * 2);
89 | $content__width--wide--less-padding: $content__width--wide - ($content__padding * 2);
90 | $content__media-query: $content__width - 1;
91 | $content__media-query--wide: $content__width--wide - 1;
92 | $content__align--leftright-margin: $content__width / 2 - $content__padding;
93 | $content__align--mobile-media-query--min: 499px;
94 | $content__align--mobile-media-query--max: $content__align--mobile-media-query--min - 1;
95 | $content__align--width: 300px;
96 | $content__spacer: 30px;
97 | $content__spacer--mobile: 20px;
98 |
99 | $block__quote--border-width: 4px;
100 | $block__quote--cite-font: $font__figcaption;
101 |
102 | // Editor variables
103 | $font__size-editor--small: 17px;
104 | $font__size-editor--medium: 21px;
105 | $font__size-editor--large: 24px;
106 | $font__size-editor--huge: 30px;
107 |
108 | @mixin blockMobileDisplay {
109 | margin-left: $content__padding;
110 | margin-right: $content__padding;
111 | max-width: $content__width--less-padding;
112 |
113 | @media screen and (min-width: $content__media-query) {
114 | margin-left: auto;
115 | margin-right: auto;
116 | }
117 | }
118 |
119 | @mixin blockWideDisplay {
120 | margin-left: $content__padding;
121 | margin-right: $content__padding;
122 | max-width: $content__width--wide--less-padding;
123 |
124 | @media screen and (min-width: $content__media-query--wide) {
125 | margin-left: auto;
126 | margin-right: auto;
127 | }
128 | }
129 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/blocks/_coblocks.scss:
--------------------------------------------------------------------------------
1 | .entry-content {
2 | .wp-block-coblocks-alert {
3 | @include blockMobileDisplay();
4 | padding-bottom: 0.8em;
5 | padding-top: 0.7em;
6 |
7 | &__title {
8 | font-size: 19px;
9 | margin-bottom: 0;
10 | margin-top: 0;
11 | }
12 |
13 | &__text {
14 | font-size: 18px;
15 | margin-bottom: 0;
16 | margin-top: 0;
17 | }
18 | }
19 |
20 | .wp-block-coblocks-click-to-tweet {
21 | border: none !important;
22 | padding-left: 0 !important;
23 |
24 | &__text {
25 | line-height: 1.4;
26 | font-style: italic;
27 | padding-left: 30px;
28 |
29 | @media screen and (min-width: $content__media-query) {
30 | padding-left: 60px;
31 | }
32 |
33 | &:not([class*="font-size"]) {
34 | font-size: $font__size-md;
35 |
36 | @media screen and (min-width: 600px) {
37 | font-size: $font__size-mdlrg;
38 | }
39 | }
40 | }
41 |
42 | &__text::before {
43 | width: 20px;
44 | height: 20px;
45 | top: 7px;
46 |
47 | @media screen and (min-width: $content__media-query) {
48 | width: 30px;
49 | height: 30px;
50 | top: 8px;
51 | }
52 | }
53 |
54 | &__twitter-btn {
55 | border-radius: 4px;
56 | font-family: $font__heading;
57 | font-size: 17px;
58 | font-weight: 500;
59 | height: 34px;
60 | line-height: 35px;
61 | margin-bottom: 5px !important;
62 | margin-top: 1em;
63 | padding: 0 0.75em;
64 | margin-left: 30px;
65 |
66 | @media screen and (min-width: $content__media-query) {
67 | margin-bottom: 10px !important;
68 | margin-left: 60px;
69 | }
70 |
71 | @media (max-width: 700px) {
72 | font-size: $font__size-sm;
73 | }
74 |
75 | &::before {
76 | top: 3px;
77 | margin-right: 7px;
78 | }
79 | }
80 | }
81 |
82 | .wp-block-coblocks-author {
83 | @include blockMobileDisplay();
84 | border-radius: 0;
85 | padding-left: 30px;
86 | padding-right: 30px;
87 |
88 | &__heading {
89 | color: $gray;
90 | font-size: 18px;
91 | font-weight: 500;
92 | margin-bottom: 0;
93 | font-family: $font__heading;
94 | }
95 |
96 | &__biography {
97 | font-size: $font__size-sm;
98 | margin-bottom: 0.8em;
99 | margin-top: 0.2em;
100 | }
101 |
102 | &__name {
103 | font-size: $font__size-md;
104 | font-family: $font__heading;
105 | font-weight: $font__weight-heading;
106 | margin: 0.15em 0 0;
107 | padding: 0;
108 | }
109 |
110 | .wp-block-button {
111 | margin-top: 0;
112 | }
113 | }
114 |
115 | .wp-block-coblocks-dynamic-separator {
116 | @include blockMobileDisplay();
117 | max-width: $content__width - ( $content__padding * 4 );
118 |
119 | @media screen and (max-width: $content__width) {
120 | padding-left: 0;
121 | padding-right: 0;
122 | width: calc( 100% - #{$content__padding * 2} );
123 | }
124 |
125 | &.is-style-dots::before {
126 | font-size: 36px;
127 | font-weight: 800;
128 | letter-spacing: 0.55em;
129 | margin-left: 19px;
130 | top: calc(50% - 28px);
131 | }
132 | }
133 |
134 | .wp-block-coblocks-pricing-table-item {
135 |
136 | &__title {
137 | font-size: $font__size-sm;
138 | font-family: $font__heading;
139 | font-weight: $font__weight-heading;
140 | margin-bottom: 1.5em !important;
141 | padding-top: 0;
142 | }
143 |
144 | &__currency {
145 | font-size: $font__size-sm;
146 | }
147 |
148 | &__price-wrapper {
149 | margin-bottom: 0.7em;
150 | }
151 |
152 | &__amount {
153 | font-family: $font__heading;
154 | font-weight: $font__weight-heading;
155 | letter-spacing: -2px;
156 | }
157 |
158 | &__features {
159 | font-size: $font__size-sm;
160 | margin-bottom: 1.7em;
161 | }
162 | }
163 |
164 | .wp-block-coblocks-social {
165 |
166 | &:not(.has-button-size-sml):not(.has-button-size-lrg) .wp-block-coblocks-social__button {
167 | font-size: 15px;
168 | padding: 11px 18px 10px;
169 | }
170 |
171 | &.has-button-size-sml .wp-block-coblocks-social__button {
172 | font-size: 14px;
173 | padding: 10px 12px 8px;
174 |
175 | .wp-block-coblocks-social__icon {
176 | position: relative;
177 | top: -1px;
178 | }
179 | }
180 | }
181 | }
182 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/create/createPages.js:
--------------------------------------------------------------------------------
1 | const { PageTemplateFragment } = require(`../src/templates/page/data.js`)
2 | const pageTemplate = require.resolve(`../src/templates/page/index.js`)
3 |
4 | const GET_PAGES = `
5 | # Define our query variables
6 | query GET_PAGES($first:Int $after:String) {
7 | wpgraphql {
8 | # Ask for pages
9 | pages(
10 | # Ask for the first XX number of pages
11 | first: $first
12 |
13 | # A Cursor to where in the dataset our query should start
14 | # and get items _after_ that point
15 | after:$after
16 | ) {
17 | # In response, we'll want pageInfo so we know if we need
18 | # to fetch more pages or not.
19 | pageInfo {
20 | # If true, we need to ask for more data.
21 | hasNextPage
22 |
23 | # This cursor will be used for the value for $after
24 | # if we need to ask for more data
25 | endCursor
26 | }
27 | nodes {
28 | uri
29 |
30 | # This is the fragment used for the pages Template
31 | ...PageTemplateFragment
32 |
33 | }
34 | }
35 | }
36 | }
37 | # Here we make use of the imported fragments which are referenced above
38 | ${PageTemplateFragment}
39 | `
40 |
41 | /**
42 | * Array to store allpagess. We make paginated requests
43 | * to WordPress to get allpagess, and once we have all pages,
44 | * then we iterate over them to create pages.
45 | *
46 | * @type {Array}
47 | */
48 | const allPages = []
49 |
50 | /**
51 | * We track the page number so we can output the page number to the console.
52 | *
53 | * @type {number}
54 | */
55 | let pageNumber = 0
56 |
57 | /**
58 | * This is the export which Gatbsy will use to process.
59 | *
60 | * @param { actions, graphql }
61 | * @returns {Promise}
62 | */
63 | module.exports = async ({ actions, graphql }) => {
64 | /**
65 | * This is the method from Gatsby that we're going
66 | * to use to create pages in our static site.
67 | */
68 | const { createPage } = actions
69 |
70 | /**
71 | * Fetch pages method. This accepts variables to alter
72 | * the query. The variable `first` controls how many items to
73 | * request per fetch and the `after` controls where to start in
74 | * the dataset.
75 | *
76 | * @param variables
77 | * @returns {Promise<*>}
78 | */
79 | const fetchPages = async variables => {
80 | /**
81 | * Fetch pages using the GET_PAGES query and the variables passed in.
82 | */
83 | return await graphql(GET_PAGES, variables).then(({ data }) => {
84 | /**
85 | * Extract the data from the GraphQL query results
86 | */
87 | const {
88 | wpgraphql: {
89 | pages: {
90 | nodes,
91 | pageInfo: { hasNextPage, endCursor },
92 | },
93 | },
94 | } = data
95 |
96 | /**
97 | * Map over the pages for later creation
98 | */
99 | nodes &&
100 | nodes.map(pages => {
101 | allPages.push(pages)
102 | })
103 |
104 | /**
105 | * If there's another page, fetch more
106 | * so we can have all the data we need.
107 | */
108 | if (hasNextPage) {
109 | pageNumber++
110 | console.log(`fetch page ${pageNumber} of pages...`)
111 | return fetchPages({ first: 10, after: endCursor })
112 | }
113 |
114 | /**
115 | * Once we're done, return all the pages
116 | * so we can create the necessary pages with
117 | * all the data on hand.
118 | */
119 | return allPages
120 | })
121 | }
122 |
123 | /**
124 | * Kick off our `fetchPages` method which will get us all
125 | * the pages we need to create individual pages.
126 | */
127 | await fetchPages({ first: 10, after: null }).then(allPages => {
128 | /**
129 | * Map over the allPages array to create the
130 | * single pages
131 | */
132 | allPages &&
133 | allPages.map(page => {
134 | console.log(`create pages: ${page.uri}`)
135 | createPage({
136 | path: `/${page.uri}/`,
137 | component: pageTemplate,
138 | context: page,
139 | })
140 | })
141 | })
142 | }
143 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/elements/_buttons.scss:
--------------------------------------------------------------------------------
1 | .submit,
2 | .button {
3 | @include font-size(16px);
4 | appearance: none;
5 | background: $black;
6 | border: none;
7 | box-shadow: none !important;
8 | color: $white;
9 | cursor: pointer;
10 | display: inline-block;
11 | border-radius: 4px;
12 | font-family: $font__heading;
13 | font-weight: 500;
14 | padding: .53em 1.3em .53em;
15 | position: relative;
16 | text-decoration: none;
17 | transform: translate3d(0, 0, 0);
18 | transition: background 200ms cubic-bezier(0.645, 0.045, 0.355, 1), border 200ms cubic-bezier(0.645, 0.045, 0.355, 1);
19 |
20 | &:hover {
21 | background: $gray;
22 | color: $white;
23 | outline: none;
24 | }
25 |
26 | &:focus {
27 | outline: 1px dotted $color--outline-button;
28 | outline-offset: -4px;
29 | }
30 |
31 | .changing & {
32 | transition: 0;
33 | }
34 |
35 | &--sml {
36 | @include font-size(15px);
37 | padding: .24em 1.3em .2em;
38 | }
39 |
40 | &--lrg {
41 | @include font-size(18px);
42 | padding-top: .44em;
43 | }
44 |
45 | &--ghost {
46 | background: transparent !important;
47 | border: 1px solid rgba(0, 0, 0, 0.2);
48 | color: $black;
49 |
50 | &:hover {
51 | border-color: rgba(0, 0, 0, 0.3);
52 | color: $black;
53 | }
54 | }
55 |
56 | &--gray {
57 | background: $background;
58 | color: $gray;
59 |
60 | &:hover {
61 | color: $gray;
62 | }
63 | }
64 |
65 | &--round {
66 | border-radius: 50px;
67 | }
68 |
69 | &--trans {
70 | @include font-size(17px);
71 | background: transparent !important;
72 | border: 0;
73 | color: $black;
74 |
75 | &:hover {
76 | background: $background;
77 | color: $black;
78 | border: 0;
79 | box-shadow: none
80 | }
81 | }
82 |
83 | &--attention {
84 | animation: buttonAttention 800ms infinite alternate;
85 | }
86 |
87 | &--attention--fb {
88 | animation: buttonAttentionFB 800ms infinite alternate;
89 | }
90 |
91 | &--attention--linkedin {
92 | animation: buttonAttentionLinkedIn 800ms infinite alternate;
93 | }
94 |
95 | &--chromeless {
96 | border: 0;
97 | box-shadow: 0;
98 | display: inline-block;
99 | background: none !important;
100 | line-height: 1 !important;
101 | }
102 |
103 | &--fullwidth {
104 | width: 100%;
105 | }
106 |
107 | &--mobile-fullwidth {
108 | @media only screen and (max-width: 599px) {
109 | width: 100%;
110 | }
111 | }
112 |
113 | .font-size--large & {
114 | @include font-size(17px);
115 | }
116 |
117 | .font-size--larger & {
118 | @include font-size(18px);
119 | }
120 |
121 | .font-size--largest & {
122 | @include font-size(19px);
123 | }
124 | }
125 |
126 | input[type=submit],
127 | input[type=button] {
128 | @include font-size(16px);
129 | appearance: none;
130 | background: #1c1c1c;
131 | border: none;
132 | box-shadow: 0 0 0;
133 | color: $white;
134 | cursor: pointer;
135 | display: inline-block;
136 | border-radius: 4px;
137 | font-family: $font__heading;
138 | font-weight: 500;
139 | padding: .53em 1.3em .53em;
140 | position: relative;
141 | text-decoration: none;
142 | transform: translate3d(0, 0, 0);
143 | transition: background 200ms cubic-bezier(0.645, 0.045, 0.355, 1), border 200ms cubic-bezier(0.645, 0.045, 0.355, 1);
144 |
145 | &:hover {
146 | background: $gray;
147 | color: $white;
148 | outline: none;
149 | }
150 |
151 | &:focus {
152 | outline: 1px dotted $color--outline-button;
153 | outline-offset: -4px;
154 | }
155 |
156 | .changing & {
157 | transition: 0;
158 | }
159 | }
160 |
161 | .animation--pulse:active {
162 | animation: pulse 100ms;
163 | animation-fill-mode: none;
164 | }
165 |
166 | @keyframes pulse {
167 | 0% {
168 | transform: scale(1);
169 | }
170 | 15% {
171 | transform: scale(.85);
172 | }
173 | 100% {
174 | transform: scale(1);
175 | }
176 | }
177 |
178 | @keyframes buttonAttention {
179 | 0% {
180 | background: rgba($twitter, 0.02)
181 | }
182 | 100% {
183 | background: rgba($twitter, 0.08);
184 | }
185 | }
186 |
187 | @keyframes buttonAttentionFB {
188 | 0% {
189 | background: rgba($facebook, 0.02);
190 | }
191 | 100% {
192 | background: rgba($facebook, 0.08);
193 | }
194 | }
195 |
196 | @keyframes buttonAttentionLinkedIn {
197 | 0% {
198 | background: rgba($linkedin, 0.02);
199 | }
200 | 100% {
201 | background: rgba($linkedin, 0.08);
202 | }
203 | }
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/navigation/_dropdown.scss:
--------------------------------------------------------------------------------
1 | .dropdown-toggle {
2 | background-color: transparent;
3 | border: 0;
4 | box-shadow: none;
5 | display: block;
6 | font-size: 16px !important;
7 | left: -.3em;
8 | margin: 0 auto;
9 | padding: 5px 10px;
10 | position: absolute;
11 | text-shadow: none;
12 | top: 0;
13 | left: initial;
14 | padding: 0;
15 | right: .1em;
16 | line-height: 1.1 !important;
17 | }
18 |
19 | .dropdown-toggle:hover,
20 | .dropdown-toggle:focus {
21 | background: transparent;
22 | }
23 |
24 | .dropdown-toggle:focus {
25 | outline: thin dotted;
26 | }
27 |
28 | .dropdown-toggle.toggled-on .icon {
29 | transform: rotate(-180deg);
30 | }
31 |
32 | .main-navigation .dropdown-toggle .icon {
33 | display: none;
34 |
35 | @media only screen and (min-width: 600px) {
36 | display: initial;
37 | fill: $gray;
38 | height: 7px;
39 | position: relative;
40 | width: 7px;
41 | transition: transform 200ms 300ms cubic-bezier(.694, 0, .335, 1), opacity 100ms cubic-bezier(0.645, 0.045, 0.355, 1);
42 | transform-origin: 50% 50%;
43 | top: 4px;
44 | }
45 |
46 | @media only screen and (min-width: 600px) and (max-width: 700px) {
47 | top: 4px;
48 | }
49 | }
50 |
51 | /* The Dropdown container. */
52 |
53 | @media only screen and (min-width: 600px) {
54 |
55 | .main-navigation ul ul {
56 | background: $white;
57 | margin-top: -10px;
58 | margin: 0;
59 | opacity: 0;
60 | padding: 8px 0;
61 | position: absolute;
62 | right: -8px;
63 | top: 100%;
64 | box-shadow: 3px 3px 0 0 rgba(0, 0, 0, .05);
65 | transition: transform 200ms linear 300ms, opacity 200ms ease-in-out 300ms, visibility 200ms linear 300ms;
66 | visibility: hidden;
67 | z-index: 99999;
68 | min-width: 175px;
69 |
70 | @media only screen and (min-width: 600px) {
71 | right: -100%;
72 | left: auto;
73 | padding: 12px 0;
74 | margin-top: 10px;
75 | border-radius: 4px;
76 | border: 1px solid rgba(0, 0, 0, .15);
77 | transform: translate3d(0, 10px, 0);
78 | }
79 |
80 | li {
81 | display: block;
82 |
83 | @media only screen and (min-width: 600px) {
84 | min-width: 175px;
85 | }
86 |
87 | a {
88 | display: block;
89 | width: 100%;
90 |
91 | @media only screen and (min-width: 600px) {
92 | border-radius: 0 !important;
93 | padding: 5px 18px !important;
94 | }
95 | }
96 | }
97 | }
98 |
99 | .main-navigation ul li:hover > ul,
100 | .main-navigation ul li.focus > ul {
101 | transition: transform 200ms linear, opacity 200ms ease-in-out, visibility 0ms 0ms linear;
102 | visibility: visible;
103 | opacity: 1;
104 | transform: translate3d(0, 0, 0);
105 | }
106 |
107 | .main-navigation ul {
108 |
109 | /* The dropdown's arrow pointer nib, located at the top. */
110 | li.menu-item-has-children,
111 | li.page_item_has_children {
112 | margin-right: 7px;
113 |
114 | a {
115 |
116 | @media only screen and (min-width: 600px) {
117 | padding-right: 13px;
118 | }
119 | }
120 |
121 | @media only screen and (min-width: 600px) {
122 | &::after,
123 | &::before {
124 | border-style: solid;
125 | border-width: 0 6px 6px;
126 | bottom: -11px;
127 | content: "";
128 | height: 0;
129 | opacity: 0;
130 | position: absolute;
131 | right: 1em;
132 | transform: translate3d(0, 10px, 0);
133 | transition: transform 200ms linear 300ms, opacity 200ms ease-in-out 300ms, visibility 200ms linear 300ms;
134 | visibility: hidden;
135 | width: 0;
136 | z-index: 100000;
137 | margin-top: 10px;
138 | }
139 |
140 | &::before {
141 | border-color: transparent transparent rgba(0, 0, 0, .2);
142 | bottom: -10px;
143 | }
144 |
145 | &::after {
146 | border-color: transparent transparent $white;
147 | }
148 |
149 | }
150 |
151 | &:hover,
152 | &.focus {
153 |
154 | & > a {
155 | opacity: .7;
156 | }
157 |
158 | .icon {
159 | opacity: .7;
160 | transform: rotate(-180deg) translate3d(0, 1px, 0);
161 | transition: transform 200ms cubic-bezier(.694, 0, .335, 1);
162 | }
163 |
164 | &::after,
165 | &::before {
166 | opacity: 1;
167 | transform: translate3d(0, 0, 0);
168 | transition: transform 200ms linear, opacity 200ms ease-in-out, visibility 0ms 0ms linear;
169 | visibility: visible;
170 | }
171 | }
172 | }
173 | }
174 | }
175 |
--------------------------------------------------------------------------------
/packages/gatsby-theme-tabor/src/styles/scss/customize-controls.scss:
--------------------------------------------------------------------------------
1 | #sub-accordion-section-tabor_theme_options {
2 |
3 | #customize-control-twitter_via {
4 | margin-top: -8px;
5 |
6 | .customize-control-title {
7 | float: left;
8 | margin-bottom: 0;
9 | position: relative;
10 | position: relative;
11 | text-indent: -9999em;
12 | width: 10%;
13 |
14 | &::before {
15 | color: currentColor;
16 | content: "\f301";
17 | font: 400 19px/30px dashicons, sans-serif;
18 | left: 1px;
19 | position: absolute;
20 | text-indent: 0;
21 | top: 1px;
22 | }
23 | }
24 |
25 | input {
26 | width: 90%;
27 | }
28 | }
29 |
30 | #customize-control-accessibility_settings {
31 | margin-bottom: 6px;
32 | }
33 |
34 | #customize-control-post_bar_style {
35 | margin-bottom: 20px;
36 | margin-top: -9px;
37 | }
38 |
39 | .customize-control-themebeans-title {
40 | margin-bottom: 14px;
41 | border-top: 1px solid #dcdcdc;
42 | padding-top: 20px;
43 |
44 | .customize-control-title {
45 | margin-bottom: 0;
46 | font-weight: 400;
47 | color: #656a6f;
48 | }
49 | }
50 |
51 | #customize-control-header_title {
52 | padding-top: 4px;
53 | border-top: 0;
54 | }
55 |
56 | #customize-control-colophon_title {
57 | margin-top: 16px;
58 | }
59 |
60 | #customize-control-social_title {
61 | margin-top: 16px;
62 | }
63 |
64 | #customize-control-post_title {
65 | margin-top: 9px;
66 | }
67 |
68 | #customize-control-blogroll_title {
69 | margin-top: 16px;
70 | }
71 |
72 | #customize-control-home_title {
73 | margin-top: 18px;
74 | }
75 |
76 | #customize-control-copyright_text {
77 | .customize-control-description {
78 | margin-bottom: 12px;
79 | }
80 | }
81 |
82 | .customize-control-title {
83 | font-weight: 500;
84 | }
85 |
86 | .customize-control-description {
87 | color: #656a6f;
88 | font-style: normal;
89 | }
90 |
91 | input[type=text] {
92 | border-radius:3px;
93 | box-shadow: none;
94 | padding-top: 5px;
95 | padding-bottom: 5px;
96 | padding-left: 8px;
97 |
98 | &:focus {
99 | box-shadow: 0 0 2px rgba(30, 140, 190, .8);
100 | }
101 | }
102 |
103 | textarea {
104 | border-radius:3px;
105 | box-shadow: none;
106 |
107 | &:focus {
108 | box-shadow: 0 0 2px rgba(30, 140, 190, .8);
109 | }
110 | }
111 |
112 | .customize-control-select {
113 | position: relative;
114 |
115 | .customize-control-description {
116 | margin-top: -4px;
117 | margin-bottom: 12px;
118 | }
119 |
120 | &::after {
121 | font: 400 11px/11px dashicons;
122 | content: "\f341";
123 | position: absolute;
124 | right: 8px;
125 | bottom: 9px;
126 | transform: rotate(-90deg);
127 | }
128 |
129 | select {
130 | box-shadow: none;
131 | margin: 0;
132 | background: #fff;
133 | padding: 0;
134 | line-height: 22px;
135 | height: 30px;
136 | appearance: none;
137 | padding-left: 8px;
138 | color: #555d66;
139 | cursor: pointer;
140 | font-weight: 400;
141 | font-size: 13px;
142 | border-radius: 3px;
143 | width: calc(100% - 46px);
144 | width: 100%;
145 |
146 | &:hover {
147 | border-color: #5b9dd9;
148 | box-shadow: 0 0 2px rgba(30, 140, 190, 0.8);
149 | }
150 |
151 | &::-ms-expand {
152 | display: none;
153 | }
154 | }
155 | }
156 |
157 | }
158 |
159 | #sub-accordion-section-tabor_fonts {
160 |
161 | .customize-control-title {
162 | font-weight: 500;
163 | }
164 |
165 | .customize-control-description {
166 | color: #656a6f;
167 | font-style: normal;
168 | }
169 |
170 | #customize-control-typekit_id {
171 | margin-top: 15px;
172 | }
173 | }
174 |
175 | // Accent color Customizer option.
176 | #customize-control-accent_color {
177 | margin-top: 15px;
178 | border-top: 1px solid #dcdcdc;
179 | padding-top: 20px;
180 |
181 | .customize-control-description {
182 | margin-bottom: 8px;
183 | }
184 | }
185 |
186 | // Logo style adjustments.
187 | #customize-control-blogname {
188 | margin-top: 5px;
189 | }
190 |
191 | #customize-control-custom_logo_border_radius,
192 | #customize-control-custom_logo_hover_animation,
193 | #customize-control-invert_night_mode_logo {
194 | margin-top: -5px;
195 |
196 | .customize-control-title {
197 | font-weight: 600;
198 | }
199 | }
200 |
201 | #customize-control-invert_night_mode_logo {
202 | margin-bottom: 15px;
203 | border-bottom: 1px solid #dcdcdc;
204 | padding-bottom: 20px;
205 |
206 | .customize-control-title {
207 | font-weight: 600;
208 | }
209 | }
210 |
--------------------------------------------------------------------------------