CMS Project Sync
@@ -0,0 +1,93 @@
|
||||
Copyright 1980 The Bitcount Project Authors (https://github.com/petrvanblokland/TYPETR-Bitcount)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
@@ -0,0 +1,93 @@
|
||||
Bitcount Grid Double Variable Font
|
||||
==================================
|
||||
|
||||
This download contains Bitcount Grid Double as both a variable font and static fonts.
|
||||
|
||||
Bitcount Grid Double is a variable font with these axes:
|
||||
CRSV
|
||||
ELSH
|
||||
ELXP
|
||||
slnt
|
||||
wght
|
||||
|
||||
This means all the styles are contained in a single file:
|
||||
BitcountGridDouble-VariableFont_CRSV,ELSH,ELXP,slnt,wght.ttf
|
||||
|
||||
If your app fully supports variable fonts, you can now pick intermediate styles
|
||||
that aren’t available as static fonts. Not all apps support variable fonts, and
|
||||
in those cases you can use the static font files for Bitcount Grid Double:
|
||||
static/BitcountGridDouble_Roman-Thin.ttf
|
||||
static/BitcountGridDouble_Roman-ExtraLight.ttf
|
||||
static/BitcountGridDouble_Roman-Light.ttf
|
||||
static/BitcountGridDouble_Roman-Regular.ttf
|
||||
static/BitcountGridDouble_Roman-Medium.ttf
|
||||
static/BitcountGridDouble_Roman-SemiBold.ttf
|
||||
static/BitcountGridDouble_Roman-Bold.ttf
|
||||
static/BitcountGridDouble_Roman-ExtraBold.ttf
|
||||
static/BitcountGridDouble_Roman-Black.ttf
|
||||
static/BitcountGridDouble-Thin.ttf
|
||||
static/BitcountGridDouble-ExtraLight.ttf
|
||||
static/BitcountGridDouble-Light.ttf
|
||||
static/BitcountGridDouble-Regular.ttf
|
||||
static/BitcountGridDouble-Medium.ttf
|
||||
static/BitcountGridDouble-SemiBold.ttf
|
||||
static/BitcountGridDouble-Bold.ttf
|
||||
static/BitcountGridDouble-ExtraBold.ttf
|
||||
static/BitcountGridDouble-Black.ttf
|
||||
static/BitcountGridDouble_Cursive-Thin.ttf
|
||||
static/BitcountGridDouble_Cursive-ExtraLight.ttf
|
||||
static/BitcountGridDouble_Cursive-Light.ttf
|
||||
static/BitcountGridDouble_Cursive-Regular.ttf
|
||||
static/BitcountGridDouble_Cursive-Medium.ttf
|
||||
static/BitcountGridDouble_Cursive-SemiBold.ttf
|
||||
static/BitcountGridDouble_Cursive-Bold.ttf
|
||||
static/BitcountGridDouble_Cursive-ExtraBold.ttf
|
||||
static/BitcountGridDouble_Cursive-Black.ttf
|
||||
|
||||
Get started
|
||||
-----------
|
||||
|
||||
1. Install the font files you want to use
|
||||
|
||||
2. Use your app's font picker to view the font family and all the
|
||||
available styles
|
||||
|
||||
Learn more about variable fonts
|
||||
-------------------------------
|
||||
|
||||
https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts
|
||||
https://variablefonts.typenetwork.com
|
||||
https://medium.com/variable-fonts
|
||||
|
||||
In desktop apps
|
||||
|
||||
https://theblog.adobe.com/can-variable-fonts-illustrator-cc
|
||||
https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts
|
||||
|
||||
Online
|
||||
|
||||
https://developers.google.com/fonts/docs/getting_started
|
||||
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide
|
||||
https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts
|
||||
|
||||
Installing fonts
|
||||
|
||||
MacOS: https://support.apple.com/en-us/HT201749
|
||||
Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux
|
||||
Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
|
||||
|
||||
Android Apps
|
||||
|
||||
https://developers.google.com/fonts/docs/android
|
||||
https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
|
||||
|
||||
License
|
||||
-------
|
||||
Please read the full license text (OFL.txt) to understand the permissions,
|
||||
restrictions and requirements for usage, redistribution, and modification.
|
||||
|
||||
You can use them in your products & projects – print or digital,
|
||||
commercial or otherwise.
|
||||
|
||||
This isn't legal advice, please consider consulting a lawyer and see the full
|
||||
license for all details.
|
||||
@@ -0,0 +1,93 @@
|
||||
Copyright 2012 The Share Tech Project Authors (post@carrois.com), with Reserved Font Name 'Share’.
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
|
After Width: | Height: | Size: 130 KiB |
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
Theme Name: Bluehost Blueprint Child
|
||||
Template: bluehost-blueprint
|
||||
Description: Child theme for Bluehost Blueprint.
|
||||
Author: Levi McLean
|
||||
Version: 1.0.0
|
||||
Text Domain: bluehost-blueprint-child
|
||||
*/
|
||||
|
||||
/* 1. Body text: keep readable sizing and spacing. */
|
||||
body {
|
||||
font-family: var(--wp--preset--font-family--ubuntu-sans);
|
||||
font-size: 1rem;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
/* 2. Site title: use Bitcount Grid Double for a distinctive logo feel. */
|
||||
.wp-block-site-title {
|
||||
font-family: var(--wp--preset--font-family--bitcount-grid-double);
|
||||
letter-spacing: 0.08em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
/* 3. Main navigation: use Share Tech for a techy, compact look. */
|
||||
.wp-block-navigation a {
|
||||
font-family: var(--wp--preset--font-family--share-tech);
|
||||
letter-spacing: 0.06em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
/* 4. Primary buttons: rounded corners and Quicksand background. */
|
||||
.wp-element-button,
|
||||
.wp-block-button__link {
|
||||
background-color: var(--wp--preset--color--accent-1);
|
||||
color: var(--wp--preset--color--base);
|
||||
border-radius: 999px;
|
||||
padding-inline: 1.5rem;
|
||||
padding-block: 0.75rem;
|
||||
}
|
||||
|
||||
/* 5. Button hover + link hover: emphasize Buccaneer accent. */
|
||||
.wp-element-button:hover,
|
||||
.wp-block-button__link:hover {
|
||||
background-color: var(--wp--preset--color--accent-2);
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: var(--wp--preset--color--accent-2);
|
||||
}
|
||||
|
||||
/* 6. Card-style blocks: subtle border using Fuscous Gray. */
|
||||
.wp-block-group.is-style-default,
|
||||
.wp-block-group.has-background {
|
||||
border: 1px solid var(--wp--preset--color--accent-3);
|
||||
border-radius: 0.75rem;
|
||||
padding: 1.5rem;
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
{
|
||||
"version": 3,
|
||||
"settings": {
|
||||
"typography": {
|
||||
"fontFamilies": [
|
||||
{
|
||||
"fontFace": [
|
||||
{
|
||||
"fontFamily": "Bitcount Grid Double",
|
||||
"fontStyle": "normal",
|
||||
"fontWeight": "100 900",
|
||||
"src": [
|
||||
"file:./assets/fonts/Bitcount_Grid_Double/BitcountGridDouble-VariableFont_CRSV,ELSH,ELXP,slnt,wght.ttf"
|
||||
]
|
||||
}
|
||||
],
|
||||
"fontFamily": "'Bitcount Grid Double', system-ui, sans-serif",
|
||||
"name": "Bitcount Grid Double",
|
||||
"slug": "bitcount-grid-double"
|
||||
},
|
||||
{
|
||||
"fontFace": [
|
||||
{
|
||||
"fontFamily": "Share Tech",
|
||||
"fontStyle": "normal",
|
||||
"fontWeight": "400",
|
||||
"src": [
|
||||
"file:./assets/fonts/Share_Tech/ShareTech-Regular.ttf"
|
||||
]
|
||||
}
|
||||
],
|
||||
"fontFamily": "'Share Tech', system-ui, sans-serif",
|
||||
"name": "Share Tech",
|
||||
"slug": "share-tech"
|
||||
}
|
||||
]
|
||||
},
|
||||
"color": {
|
||||
"defaultDuotone": false,
|
||||
"defaultGradients": false,
|
||||
"defaultPalette": false,
|
||||
"palette": [
|
||||
{
|
||||
"color": "#ffffff",
|
||||
"name": "Base",
|
||||
"slug": "base"
|
||||
},
|
||||
{
|
||||
"color": "#000000",
|
||||
"name": "Contrast",
|
||||
"slug": "contrast"
|
||||
},
|
||||
{
|
||||
"slug": "accent-1",
|
||||
"name": "Quicksand",
|
||||
"color": "#BA9B8D"
|
||||
},
|
||||
{
|
||||
"slug": "accent-2",
|
||||
"name": "Buccaneer",
|
||||
"color": "#6F323C"
|
||||
},
|
||||
{
|
||||
"slug": "accent-3",
|
||||
"name": "Fuscous Gray",
|
||||
"color": "#585651"
|
||||
},
|
||||
{
|
||||
"slug": "accent-4",
|
||||
"name": "Ironstone",
|
||||
"color": "#814A38"
|
||||
},
|
||||
{
|
||||
"color": "#30A2C5",
|
||||
"name": "Pacific Cyan",
|
||||
"slug": "accent-5"
|
||||
},
|
||||
{
|
||||
"color": "#CDE7EF",
|
||||
"name": "Columbia Blue",
|
||||
"slug": "accent-6"
|
||||
},
|
||||
{
|
||||
"color": "#f4f4f4",
|
||||
"name": "Base Midtone",
|
||||
"slug": "base-midtone"
|
||||
},
|
||||
{
|
||||
"color": "#323232",
|
||||
"name": "Contrast Midtone",
|
||||
"slug": "contrast-midtone"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"styles": {
|
||||
"typography": {
|
||||
"fontFamily": "var(--wp--preset--font-family--ubuntu-sans)",
|
||||
"fontSize": "1rem"
|
||||
},
|
||||
"elements": {
|
||||
"heading": {
|
||||
"typography": {
|
||||
"fontFamily": "var(--wp--preset--font-family--roboto-flex)",
|
||||
"fontWeight": "600"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
:root {
|
||||
--wp--preset--color--primary: var(--wp--preset--color--accent-2);
|
||||
--wp--preset--color--secondary: var(--wp--preset--color--accent-5);
|
||||
--wp--preset--color--tertiary: var(--wp--preset--color--accent-4);
|
||||
--wp--preset--color--header-background: var(--wp--preset--color--base);
|
||||
--wp--preset--color--header-foreground: var(--wp--preset--color--contrast);
|
||||
--wp--preset--color--header-titles: var(--wp--preset--color--contrast);
|
||||
--wp--preset--color--secondary-background: var(--wp--preset--color--base-midtone);
|
||||
--wp--preset--color--secondary-foreground: var(--wp--preset--color--contrast-midtone);
|
||||
}
|
||||
|
||||
select {
|
||||
min-height: 2.25em;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
:root{--wp--preset--color--primary:var(--wp--preset--color--accent-2);--wp--preset--color--secondary:var(--wp--preset--color--accent-5);--wp--preset--color--tertiary:var(--wp--preset--color--accent-4);--wp--preset--color--header-background:var(--wp--preset--color--base);--wp--preset--color--header-foreground:var(--wp--preset--color--contrast);--wp--preset--color--header-titles:var(--wp--preset--color--contrast);--wp--preset--color--secondary-background:var(--wp--preset--color--base-midtone);--wp--preset--color--secondary-foreground:var(--wp--preset--color--contrast-midtone)}select{min-height:2.25em}
|
||||
@@ -0,0 +1,7 @@
|
||||
.wp-block-archives-dropdown {
|
||||
& > label {
|
||||
display: block;
|
||||
font-weight: bold;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
.wp-block-archives-dropdown{&>label{display:block;font-weight:700;margin-bottom:12px}}
|
||||
@@ -0,0 +1,7 @@
|
||||
.wp-block-categories-dropdown {
|
||||
& > label {
|
||||
display: block;
|
||||
font-weight: bold;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
.wp-block-categories-dropdown{&>label{display:block;font-weight:700;margin-bottom:12px}}
|
||||
@@ -0,0 +1,5 @@
|
||||
@media (max-width: 781px) {
|
||||
.wp-block-column.is-style-mobile-first-element {
|
||||
order: -1;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
@media (max-width:781px){.wp-block-column.is-style-mobile-first-element{order:-1}}
|
||||
@@ -0,0 +1,48 @@
|
||||
.wp-block-comment-author-name a,
|
||||
.wp-block-comment-date a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.wp-block-comment-template > li li,
|
||||
.wp-block-comment-template > li:not(:first-child) {
|
||||
border-top: 1px solid var(--wp--preset--color--base-midtone);
|
||||
padding-top: 2rem;
|
||||
}
|
||||
|
||||
.wp-block-comment-template ol {
|
||||
padding-inline-start: 64px;
|
||||
}
|
||||
|
||||
form.comment-form {
|
||||
label {
|
||||
font-size: var(--wp--preset--font-size--small);
|
||||
}
|
||||
textarea {
|
||||
border-radius: 2px;
|
||||
border: 1px solid;
|
||||
border-color: rgba(0,0,0,0.2);
|
||||
line-height: 1.7;
|
||||
padding: 0.3rem 1rem;
|
||||
}
|
||||
input:not([type="submit"]) {
|
||||
border-radius: 2px;
|
||||
border: 1px solid;
|
||||
border-color: rgba(0,0,0,0.2);
|
||||
line-height: 1.7;
|
||||
padding: 0.3rem 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
.wp-block-post-comments-form .comment-form-cookies-consent #wp-comment-cookies-consent + label {
|
||||
margin-top: .35em;
|
||||
}
|
||||
|
||||
@media (max-width: 680px) {
|
||||
.wp-block-comment-template ol {
|
||||
padding-inline-start: 0;
|
||||
}
|
||||
|
||||
.wp-block-comment-template > li > ol {
|
||||
padding-inline-start: 64px;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
.wp-block-comment-author-name a,.wp-block-comment-date a{text-decoration:none}.wp-block-comment-template>li li,.wp-block-comment-template>li:not(:first-child){border-top:1px solid var(--wp--preset--color--base-midtone);padding-top:2rem}.wp-block-comment-template ol{padding-inline-start:64px}form.comment-form{label{font-size:var(--wp--preset--font-size--small)}input:not([type=submit]),textarea{border:1px solid rgba(0,0,0,.2);border-radius:2px;line-height:1.7;padding:.3rem 1rem}}.wp-block-post-comments-form .comment-form-cookies-consent #wp-comment-cookies-consent+label{margin-top:.35em}@media (max-width:680px){.wp-block-comment-template ol{padding-inline-start:0}.wp-block-comment-template>li>ol{padding-inline-start:64px}}
|
||||
@@ -0,0 +1,3 @@
|
||||
.wp-block-cover-image {
|
||||
min-height: 430px;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
.wp-block-cover-image{min-height:430px}
|
||||
@@ -0,0 +1,8 @@
|
||||
.wp-block-cover.is-style-contained-background .wp-block-cover__image-background {
|
||||
-o-object-fit: contain;
|
||||
object-fit: contain;
|
||||
}
|
||||
.wp-block-cover.is-style-unscaled-background .wp-block-cover__image-background {
|
||||
-o-object-fit: none;
|
||||
object-fit: none;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
.wp-block-cover.is-style-contained-background .wp-block-cover__image-background{-o-object-fit:contain;object-fit:contain}.wp-block-cover.is-style-unscaled-background .wp-block-cover__image-background{-o-object-fit:none;object-fit:none}
|
||||
@@ -0,0 +1,4 @@
|
||||
.blocks-gallery-grid:not(.has-nested-images),
|
||||
.wp-block-gallery:not(.has-nested-images) {
|
||||
margin-block-start: var(--wp--style--block-gap);
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
.blocks-gallery-grid:not(.has-nested-images),.wp-block-gallery:not(.has-nested-images){margin-block-start:var(--wp--style--block-gap)}
|
||||
@@ -0,0 +1,82 @@
|
||||
/* Image creative style */
|
||||
.wp-block-group[class*=is-style-creative] {
|
||||
position: relative;
|
||||
padding-block: var(--wp--preset--spacing--40);
|
||||
|
||||
&[class*=is-style-creative-2] {
|
||||
padding-block: var(--wp--preset--spacing--60);
|
||||
}
|
||||
|
||||
&.is-style-creative-1-a,
|
||||
&.is-style-creative-1-d{
|
||||
padding-inline-end: var(--wp--preset--spacing--40);
|
||||
}
|
||||
|
||||
&.is-style-creative-2-a,
|
||||
&.is-style-creative-2-d {
|
||||
padding-inline-end: var(--wp--preset--spacing--60);
|
||||
padding-inline-start: var(--wp--preset--spacing--20);
|
||||
}
|
||||
|
||||
&.is-style-creative-1-b,
|
||||
&.is-style-creative-1-c{
|
||||
padding-inline-start: var(--wp--preset--spacing--40);
|
||||
}
|
||||
|
||||
|
||||
&.is-style-creative-2-b,
|
||||
&.is-style-creative-2-c {
|
||||
padding-inline-start: var(--wp--preset--spacing--60);
|
||||
padding-inline-end: var(--wp--preset--spacing--20);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.wp-block-group[class*=is-style-creative-1]:before {
|
||||
opacity: 1;
|
||||
background-image: radial-gradient(var(--wp--preset--color--accent-2) 2px, transparent 2px);
|
||||
background-size: 16px 16px;
|
||||
content: "";
|
||||
display: block;
|
||||
height: 106px;
|
||||
position: absolute;
|
||||
width: 106px;
|
||||
}
|
||||
.wp-block-group[class*=is-style-creative-1-a]:before,
|
||||
.wp-block-group[class*=is-style-creative-2-a]:before {
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
.wp-block-group[class*=is-style-creative-1-b]:before,
|
||||
.wp-block-group[class*=is-style-creative-2-b]:before {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
.wp-block-group[class*=is-style-creative-1-c]:before,
|
||||
.wp-block-group[class*=is-style-creative-2-c]:before {
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
.wp-block-group[class*=is-style-creative-1-d]:before,
|
||||
.wp-block-group[class*=is-style-creative-2-d]:before {
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
.wp-block-group[class*=is-style-creative-2]:before {
|
||||
opacity: 1;
|
||||
content: '';
|
||||
display: block;
|
||||
height: 114px;
|
||||
position: absolute;
|
||||
width: 360px;
|
||||
max-width: 100%;
|
||||
background-color: var(--wp--preset--color--accent-3);
|
||||
mask-image: url('../images/wave-pattern.svg');
|
||||
-webkit-mask-image: url('../images/wave-pattern.svg');
|
||||
mask-size: 80px 40px;
|
||||
-webkit-mask-size: 80px 40px;
|
||||
mask-repeat: repeat;
|
||||
-webkit-mask-repeat: repeat;
|
||||
z-index: 1;
|
||||
pointer-events: none;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
.wp-block-group[class*=is-style-creative]{padding-block:var(--wp--preset--spacing--40);position:relative;&[class*=is-style-creative-2]{padding-block:var(--wp--preset--spacing--60)}&.is-style-creative-1-a,&.is-style-creative-1-d{padding-inline-end:var(--wp--preset--spacing--40)}&.is-style-creative-2-a,&.is-style-creative-2-d{padding-inline-end:var(--wp--preset--spacing--60);padding-inline-start:var(--wp--preset--spacing--20)}&.is-style-creative-1-b,&.is-style-creative-1-c{padding-inline-start:var(--wp--preset--spacing--40)}&.is-style-creative-2-b,&.is-style-creative-2-c{padding-inline-end:var(--wp--preset--spacing--20);padding-inline-start:var(--wp--preset--spacing--60)}}.wp-block-group[class*=is-style-creative-1]:before{background-image:radial-gradient(var(--wp--preset--color--accent-2) 2px,transparent 2px);background-size:16px 16px;content:"";display:block;height:106px;opacity:1;position:absolute;width:106px}.wp-block-group[class*=is-style-creative-1-a]:before,.wp-block-group[class*=is-style-creative-2-a]:before{bottom:0;right:0}.wp-block-group[class*=is-style-creative-1-b]:before,.wp-block-group[class*=is-style-creative-2-b]:before{bottom:0;left:0}.wp-block-group[class*=is-style-creative-1-c]:before,.wp-block-group[class*=is-style-creative-2-c]:before{left:0;top:0}.wp-block-group[class*=is-style-creative-1-d]:before,.wp-block-group[class*=is-style-creative-2-d]:before{right:0;top:0}.wp-block-group[class*=is-style-creative-2]:before{background-color:var(--wp--preset--color--accent-3);content:"";display:block;height:114px;mask-image:url(../images/wave-pattern.svg);-webkit-mask-image:url(../images/wave-pattern.svg);mask-repeat:repeat;-webkit-mask-repeat:repeat;mask-size:80px 40px;-webkit-mask-size:80px 40px;max-width:100%;opacity:1;pointer-events:none;position:absolute;width:360px;z-index:1}
|
||||
@@ -0,0 +1,84 @@
|
||||
/* Image creative style */
|
||||
figure[class*=is-style-creative] {
|
||||
position: relative;
|
||||
padding-block: var(--wp--preset--spacing--40);
|
||||
|
||||
&[class*=is-style-creative-2] {
|
||||
padding-block: var(--wp--preset--spacing--60);
|
||||
}
|
||||
|
||||
&.is-style-creative-1-a,
|
||||
&.is-style-creative-1-d{
|
||||
padding-inline-end: var(--wp--preset--spacing--40);
|
||||
}
|
||||
|
||||
&.is-style-creative-2-a,
|
||||
&.is-style-creative-2-d {
|
||||
padding-inline-end: var(--wp--preset--spacing--60);
|
||||
padding-inline-start: var(--wp--preset--spacing--20);
|
||||
}
|
||||
|
||||
&.is-style-creative-1-b,
|
||||
&.is-style-creative-1-c{
|
||||
padding-inline-start: var(--wp--preset--spacing--40);
|
||||
}
|
||||
|
||||
|
||||
&.is-style-creative-2-b,
|
||||
&.is-style-creative-2-c {
|
||||
padding-inline-start: var(--wp--preset--spacing--60);
|
||||
padding-inline-end: var(--wp--preset--spacing--20);
|
||||
}
|
||||
|
||||
}
|
||||
figure[class*=is-style-creative] > img[class^="wp-image-"] {
|
||||
position: relative;
|
||||
}
|
||||
figure[class*=is-style-creative-1]:before {
|
||||
opacity: 1;
|
||||
background-image: radial-gradient(var(--wp--preset--color--accent-2) 2px, transparent 2px);
|
||||
background-size: 16px 16px;
|
||||
content: "";
|
||||
display: block;
|
||||
height: 106px;
|
||||
position: absolute;
|
||||
width: 106px;
|
||||
}
|
||||
figure[class*=is-style-creative-1-a]:before,
|
||||
figure[class*=is-style-creative-2-a]:before {
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
figure[class*=is-style-creative-1-b]:before,
|
||||
figure[class*=is-style-creative-2-b]:before {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
figure[class*=is-style-creative-1-c]:before,
|
||||
figure[class*=is-style-creative-2-c]:before {
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
figure[class*=is-style-creative-1-d]:before,
|
||||
figure[class*=is-style-creative-2-d]:before {
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
figure[class*=is-style-creative-2]:before {
|
||||
opacity: 1;
|
||||
content: '';
|
||||
display: block;
|
||||
height: 114px;
|
||||
position: absolute;
|
||||
width: 360px;
|
||||
max-width: 100%;
|
||||
background-color: var(--wp--preset--color--accent-3);
|
||||
mask-image: url('../images/wave-pattern.svg');
|
||||
-webkit-mask-image: url('../images/wave-pattern.svg');
|
||||
mask-size: 80px 40px;
|
||||
-webkit-mask-size: 80px 40px;
|
||||
mask-repeat: repeat;
|
||||
-webkit-mask-repeat: repeat;
|
||||
z-index: 1;
|
||||
pointer-events: none;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
figure[class*=is-style-creative]{padding-block:var(--wp--preset--spacing--40);position:relative;&[class*=is-style-creative-2]{padding-block:var(--wp--preset--spacing--60)}&.is-style-creative-1-a,&.is-style-creative-1-d{padding-inline-end:var(--wp--preset--spacing--40)}&.is-style-creative-2-a,&.is-style-creative-2-d{padding-inline-end:var(--wp--preset--spacing--60);padding-inline-start:var(--wp--preset--spacing--20)}&.is-style-creative-1-b,&.is-style-creative-1-c{padding-inline-start:var(--wp--preset--spacing--40)}&.is-style-creative-2-b,&.is-style-creative-2-c{padding-inline-end:var(--wp--preset--spacing--20);padding-inline-start:var(--wp--preset--spacing--60)}}figure[class*=is-style-creative]>img[class^=wp-image-]{position:relative}figure[class*=is-style-creative-1]:before{background-image:radial-gradient(var(--wp--preset--color--accent-2) 2px,transparent 2px);background-size:16px 16px;content:"";display:block;height:106px;opacity:1;position:absolute;width:106px}figure[class*=is-style-creative-1-a]:before,figure[class*=is-style-creative-2-a]:before{bottom:0;right:0}figure[class*=is-style-creative-1-b]:before,figure[class*=is-style-creative-2-b]:before{bottom:0;left:0}figure[class*=is-style-creative-1-c]:before,figure[class*=is-style-creative-2-c]:before{left:0;top:0}figure[class*=is-style-creative-1-d]:before,figure[class*=is-style-creative-2-d]:before{right:0;top:0}figure[class*=is-style-creative-2]:before{background-color:var(--wp--preset--color--accent-3);content:"";display:block;height:114px;mask-image:url(../images/wave-pattern.svg);-webkit-mask-image:url(../images/wave-pattern.svg);mask-repeat:repeat;-webkit-mask-repeat:repeat;mask-size:80px 40px;-webkit-mask-size:80px 40px;max-width:100%;opacity:1;pointer-events:none;position:absolute;width:360px;z-index:1}
|
||||
@@ -0,0 +1,5 @@
|
||||
.wp-block-list {
|
||||
li {
|
||||
margin-top: 0.8rem;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
.wp-block-list{li{margin-top:.8rem}}
|
||||
@@ -0,0 +1,3 @@
|
||||
.wp-block-navigation .has-child .wp-block-navigation__submenu-container {
|
||||
padding-block: 10px;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
.wp-block-navigation .has-child .wp-block-navigation__submenu-container{padding-block:10px}
|
||||
@@ -0,0 +1,22 @@
|
||||
.wp-block-post-author {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.wp-block-post-author__name {
|
||||
margin-bottom: 0;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.wp-block-post-author__name a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.wp-block-post-author__avatar {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
margin-right: .8rem;
|
||||
}
|
||||
|
||||
.wp-block-post-author__avatar img {
|
||||
border-radius: 100px;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
.wp-block-post-author{align-items:center}.wp-block-post-author__name{font-weight:600;margin-bottom:0}.wp-block-post-author__name a{text-decoration:none}.wp-block-post-author__avatar{align-items:center;display:inline-flex;margin-right:.8rem}.wp-block-post-author__avatar img{border-radius:100px}
|
||||
@@ -0,0 +1,5 @@
|
||||
.wp-block-table {
|
||||
overflow-x: auto;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
.wp-block-table{border-collapse:collapse;overflow-x:auto;width:100%}
|
||||
@@ -0,0 +1,8 @@
|
||||
.wc-block-product-template[class*="columns-"] {
|
||||
margin-inline: -1rem !important;
|
||||
max-width: none;
|
||||
|
||||
li.wc-block-product {
|
||||
margin: 1rem;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
.wc-block-product-template[class*=columns-]{margin-inline:-1rem!important;max-width:none;li.wc-block-product{margin:1rem}}
|
||||
@@ -0,0 +1,19 @@
|
||||
:root {
|
||||
--wp--preset--font-size--huge: clamp(6rem, 10vw, 10rem);
|
||||
}
|
||||
|
||||
select {
|
||||
min-height: 2.25em;
|
||||
}
|
||||
|
||||
/* Featured image: natural width in template editor (matches front-end). */
|
||||
.wp-block-post-featured-image.bp-post-featured-image--intrinsic {
|
||||
width: fit-content;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.wp-block-post-featured-image.bp-post-featured-image--intrinsic img {
|
||||
width: auto !important;
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
:root{--wp--preset--font-size--huge:clamp(6rem,10vw,10rem)}select{min-height:2.25em}.wp-block-post-featured-image.bp-post-featured-image--intrinsic{max-width:100%;width:fit-content}.wp-block-post-featured-image.bp-post-featured-image--intrinsic img{height:auto;max-width:100%;width:auto!important}
|
||||
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 99 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 8.0 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 68 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="20"><rect width="100%" height="100%" fill="transparent"/><path fill="none" stroke="black" stroke-width="3.5" d="M-4.798 13.573C-3.149 12.533-1.446 11.306 0 10c2.812-2.758 6.18-4.974 10-5 4.183.336 7.193 2.456 10 5 2.86 2.687 6.216 4.952 10 5 4.185-.315 7.35-2.48 10-5 1.452-1.386 3.107-3.085 4.793-4.176"/></svg>
|
||||
|
After Width: | Height: | Size: 371 B |
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
/**
|
||||
* Bluehost Blueprint functions and definitions
|
||||
*
|
||||
* @link https://developer.wordpress.org/themes/basics/theme-functions/
|
||||
*
|
||||
* @package Bluehost\Blueprint
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
// Include the autoloader.
|
||||
require_once get_template_directory() . '/inc/autoloader.php';
|
||||
|
||||
// Initialize theme assets.
|
||||
Bluehost\Blueprint\Assets::init();
|
||||
|
||||
// Initialize theme back-compat class.
|
||||
Bluehost\Blueprint\Back_Compat::init();
|
||||
|
||||
// Initialize the version control system.
|
||||
Bluehost\Blueprint\Version::init();
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
/**
|
||||
* Autoloader file for the Bluehost Blueprint.
|
||||
*
|
||||
* This file registers an autoloader function to load theme classes automatically.
|
||||
*
|
||||
* @author Bluehost
|
||||
* @package Bluehost\Blueprint
|
||||
* @version 1.0.0
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Prevent direct access.
|
||||
}
|
||||
|
||||
/**
|
||||
* Autoloader for automatically loading theme classes
|
||||
*/
|
||||
spl_autoload_register(
|
||||
function ( $class_name ) {
|
||||
// Only handle classes that start with 'Bluehost\Blueprint'.
|
||||
if ( strpos( $class_name, 'Bluehost\Blueprint' ) !== 0 ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Convert the class name to a relative file path (e.g., 'Bluehost\Blueprint\Utility' -> 'class-utility.php').
|
||||
$class_file = strtolower( str_replace( 'Bluehost\Blueprint\\', '', $class_name ) );
|
||||
$class_file = strtolower( str_replace( '_', '-', $class_file ) ) . '.php';
|
||||
$file = get_template_directory() . '/inc/classes/class-' . $class_file;
|
||||
|
||||
// If the file exists, include it.
|
||||
if ( file_exists( $file ) ) {
|
||||
require_once $file;
|
||||
}
|
||||
}
|
||||
);
|
||||
@@ -0,0 +1,123 @@
|
||||
<?php
|
||||
/**
|
||||
* Assets.php
|
||||
*
|
||||
* Registers and enqueues all necessary styles and scripts.
|
||||
*
|
||||
* @package Bluehost\Blueprint
|
||||
* @author Bluehost
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
namespace Bluehost\Blueprint;
|
||||
|
||||
/**
|
||||
* Class Assets
|
||||
*
|
||||
* Registers and enqueues all necessary styles and scripts.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class Assets {
|
||||
/**
|
||||
* Initializes the class.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public static function init() {
|
||||
// Registers styles and scripts.
|
||||
add_action( 'wp_enqueue_scripts', array( __CLASS__, 'enqueue_frontend_assets' ) );
|
||||
|
||||
add_action( 'init', array( __CLASS__, 'enqueue_custom_block_styles' ) );
|
||||
|
||||
add_action( 'after_setup_theme', array( __CLASS__, 'enqueue_editor_style' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Enqueue frontend CSS and JS
|
||||
*
|
||||
* Enqueues all stylesheets and scripts required for frontend functionality.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public static function enqueue_frontend_assets() {
|
||||
$theme_version = wp_get_theme()->get( 'Version' );
|
||||
|
||||
$style_uri = get_parent_theme_file_uri( 'style.css' );
|
||||
|
||||
wp_enqueue_style(
|
||||
'bluehost-blueprint-style',
|
||||
$style_uri,
|
||||
array(),
|
||||
$theme_version
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load custom block styles.
|
||||
*/
|
||||
public static function enqueue_custom_block_styles() {
|
||||
$env = wp_get_environment_type();
|
||||
$is_debug = defined( 'WP_DEBUG' ) && WP_DEBUG;
|
||||
$is_script_debug = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG;
|
||||
$use_minified = ( 'production' === $env || ! $is_debug || ! $is_script_debug );
|
||||
|
||||
$files = glob( get_template_directory() . '/assets/block-styles/*.css' );
|
||||
|
||||
foreach ( $files as $file ) {
|
||||
$filename = basename( $file, '.css' );
|
||||
|
||||
// Handle different block namespaces.
|
||||
if ( strpos( $filename, 'core-' ) === 0 ) {
|
||||
$block_name = str_replace( 'core-', 'core/', $filename );
|
||||
} elseif ( strpos( $filename, 'woocommerce-' ) === 0 ) {
|
||||
$block_name = str_replace( 'woocommerce-', 'woocommerce/', $filename );
|
||||
} else {
|
||||
$block_name = $filename;
|
||||
}
|
||||
|
||||
$suffix = $use_minified ? '.min' : '';
|
||||
$min_path = get_theme_file_path( "assets/block-styles/{$filename}{$suffix}.css" );
|
||||
$min_src = get_theme_file_uri( "assets/block-styles/{$filename}{$suffix}.css" );
|
||||
|
||||
// Fallback to non-minified version if .min.css doesn't exist.
|
||||
if ( ! file_exists( $min_path ) ) {
|
||||
$min_path = get_theme_file_path( "assets/block-styles/{$filename}.css" );
|
||||
$min_src = get_theme_file_uri( "assets/block-styles/{$filename}.css" );
|
||||
}
|
||||
|
||||
wp_enqueue_block_style(
|
||||
$block_name,
|
||||
array(
|
||||
'handle' => "nfd-block-{$filename}",
|
||||
'src' => $min_src,
|
||||
'path' => $min_path,
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Enqueues the editor style.
|
||||
*
|
||||
* This is a required method for themes that wish to support the block editor.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public static function enqueue_editor_style() {
|
||||
$env = wp_get_environment_type();
|
||||
$is_debug = defined( 'WP_DEBUG' ) && WP_DEBUG;
|
||||
$is_script_debug = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG;
|
||||
$use_minified = ( 'production' === $env || $is_debug || $is_script_debug );
|
||||
|
||||
$suffix = $use_minified ? '.min' : '';
|
||||
$style_file = "assets/editor-styles/editor-style{$suffix}.css";
|
||||
|
||||
// Fallback to unminified if minified file does not exist.
|
||||
if ( ! file_exists( get_theme_file_path( $style_file ) ) ) {
|
||||
$style_file = 'assets/editor-styles/editor-style.css';
|
||||
}
|
||||
|
||||
add_editor_style( "./$style_file" );
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
/**
|
||||
* Back-compat.php
|
||||
*
|
||||
* Registers and enqueues all necessary styles and scripts to support old themes previously used by users.
|
||||
*
|
||||
* @package Bluehost\Blueprint
|
||||
* @author Bluehost
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
namespace Bluehost\Blueprint;
|
||||
|
||||
/**
|
||||
* Class Back_Compat
|
||||
*
|
||||
* Registers and enqueues all necessary styles and scripts.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class Back_Compat {
|
||||
/**
|
||||
* Initializes the class.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public static function init() {
|
||||
// Registers styles and scripts.
|
||||
add_action( 'wp_enqueue_scripts', array( __CLASS__, 'enqueue_frontend_assets' ) );
|
||||
|
||||
add_action( 'after_setup_theme', array( __CLASS__, 'enqueue_editor_style' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Enqueue frontend CSS and JS
|
||||
*
|
||||
* Enqueues all stylesheets and scripts required for frontend functionality.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public static function enqueue_frontend_assets() {
|
||||
$theme_version = wp_get_theme()->get( 'Version' );
|
||||
|
||||
/**
|
||||
* Enqueues editor stylesheet.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
if ( get_option( 'theme_mods_yith-wonder' ) ) {
|
||||
$suffix = ( wp_get_environment_type() === 'production' || WP_DEBUG || SCRIPT_DEBUG ) ? '.min' : '';
|
||||
$path = "assets/back-compat/yith-wonder{$suffix}.css";
|
||||
$file = get_parent_theme_file_path( $path );
|
||||
$uri = get_parent_theme_file_uri( $path );
|
||||
|
||||
if ( ! file_exists( $file ) ) {
|
||||
$uri = get_parent_theme_file_uri( 'assets/back-compat/yith-wonder.css' );
|
||||
}
|
||||
|
||||
wp_enqueue_style(
|
||||
'bluehost-blueprint-legacy-yith-wonder',
|
||||
$uri,
|
||||
array(),
|
||||
$theme_version
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Enqueues the editor style.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public static function enqueue_editor_style() {
|
||||
if ( get_option( 'theme_mods_yith-wonder' ) ) {
|
||||
$suffix = ( wp_get_environment_type() === 'production' || WP_DEBUG || SCRIPT_DEBUG ) ? '.min' : '';
|
||||
$path = "assets/back-compat/yith-wonder{$suffix}.css";
|
||||
$file = get_parent_theme_file_path( $path );
|
||||
|
||||
if ( ! file_exists( $file ) ) {
|
||||
$path = 'assets/back-compat/yith-wonder.css';
|
||||
}
|
||||
|
||||
add_editor_style( "./$path" );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
<?php
|
||||
/**
|
||||
* Version.php
|
||||
*
|
||||
* Handles theme versioning and database migrations.
|
||||
*
|
||||
* @package Bluehost\Blueprint
|
||||
* @author Bluehost
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
namespace Bluehost\Blueprint;
|
||||
|
||||
/**
|
||||
* Class Version
|
||||
*
|
||||
* Handles theme versioning and database migrations.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class Version {
|
||||
/**
|
||||
* Option key for storing the theme version in the database.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
const OPTION_KEY = 'bluehost_blueprint_theme_version';
|
||||
|
||||
/**
|
||||
* Initializes version checks and migrations.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public static function init() {
|
||||
add_action( 'after_setup_theme', array( __CLASS__, 'check_version' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the theme version has changed and runs migrations if needed.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public static function check_version() {
|
||||
$theme_version = wp_get_theme()->get( 'Version' );
|
||||
$stored_version = get_option( self::OPTION_KEY, '1.0.0' );
|
||||
|
||||
if ( version_compare( $theme_version, $stored_version, '>' ) ) {
|
||||
self::run_migrations( $stored_version, $theme_version );
|
||||
update_option( self::OPTION_KEY, $theme_version );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs necessary migrations based on the old and new theme versions.
|
||||
*
|
||||
* @param string $old_version The previously stored version.
|
||||
* @param string $new_version The new theme version.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private static function run_migrations( $old_version, $new_version ) {
|
||||
/**
|
||||
* Array of migrations to run.
|
||||
* key is the old version, value is the migration function.
|
||||
*
|
||||
* Example:
|
||||
* $migrations = array(
|
||||
* '1.1.0' => 'migrate_to_1_1_0',
|
||||
* );
|
||||
*/
|
||||
$migrations = array();
|
||||
|
||||
foreach ( $migrations as $version => $migration ) {
|
||||
if ( version_compare( $old_version, $version, '<' ) && version_compare( $new_version, $version, '>=' ) ) {
|
||||
// Ensure migration function exists before calling.
|
||||
if ( method_exists( __CLASS__, $migration ) ) {
|
||||
call_user_func( array( __CLASS__, $migration ) );
|
||||
} else {
|
||||
// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
|
||||
error_log( "Migration method {$migration} does not exist in " . __CLASS__ );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Example migration function for version 1.1.0.
|
||||
*
|
||||
* @since 1.1.0
|
||||
*/
|
||||
private static function migrate_to_1_1_0() {
|
||||
// Example: Adding a new option to the database.
|
||||
if ( ! get_option( 'bluehost_blueprint_new_option' ) ) {
|
||||
update_option( 'bluehost_blueprint_new_option', 'value' );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<!-- wp:group {"tagName":"header","metadata":{"name":"Checkout Header"},"layout":{"type":"constrained"}} -->
|
||||
<header class="wp-block-group"><!-- wp:group {"style":{"spacing":{"padding":{"bottom":"var:preset|spacing|20","top":"var:preset|spacing|20"}}},"layout":{"type":"flex","justifyContent":"space-between"}} -->
|
||||
<div class="wp-block-group" style="padding-top:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20)"><!-- wp:site-title {"level":0} /--></div>
|
||||
<!-- /wp:group --></header>
|
||||
<!-- /wp:group -->
|
||||
@@ -0,0 +1 @@
|
||||
<!-- wp:pattern {"slug":"bluehost-blueprint/site-footer-big"} /-->
|
||||
@@ -0,0 +1 @@
|
||||
<!-- wp:pattern {"slug":"bluehost-blueprint/site-footer-with-contacts"} /-->
|
||||
@@ -0,0 +1 @@
|
||||
<!-- wp:pattern {"slug":"bluehost-blueprint/site-footer-with-cta"} /-->
|
||||
@@ -0,0 +1 @@
|
||||
<!-- wp:pattern {"slug":"bluehost-blueprint/site-footer-compact"} /-->
|
||||
@@ -0,0 +1 @@
|
||||
<!-- wp:pattern {"slug":"bluehost-blueprint/site-header-contrast"} /-->
|
||||
@@ -0,0 +1 @@
|
||||
<!-- wp:pattern {"slug":"bluehost-blueprint/site-header-topbar"} /-->
|
||||
@@ -0,0 +1 @@
|
||||
<!-- wp:pattern {"slug":"bluehost-blueprint/site-header-with-social"} /-->
|
||||