soames-gatsby-theme 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/LICENSE +29 -0
  2. package/README.md +24 -0
  3. package/dist/gatsby-config.js +47 -0
  4. package/dist/gatsby-node.js +7 -0
  5. package/dist/src/components/Bio.js +23 -0
  6. package/dist/src/components/BlogSidebar.js +30 -0
  7. package/dist/src/components/Footer.js +11 -0
  8. package/dist/src/components/FooterMenu.js +26 -0
  9. package/dist/src/components/Header.js +12 -0
  10. package/dist/src/components/HeaderMenu.js +34 -0
  11. package/dist/src/components/HeroHeader.js +39 -0
  12. package/dist/src/components/Layout.js +24 -0
  13. package/dist/src/components/Logo.js +17 -0
  14. package/dist/src/components/Seo.js +59 -0
  15. package/dist/src/components/shortcodes/RemoveContentAreaPadding.js +12 -0
  16. package/dist/src/components/shortcodes/SoamesFeature.js +9 -0
  17. package/dist/src/components/shortcodes/SoamesGalleryMenu.js +15 -0
  18. package/dist/src/components/shortcodes/SoamesIconList.js +15 -0
  19. package/dist/src/components/shortcodes/SoamesSoundCloud.js +18 -0
  20. package/dist/src/components/shortcodes/SoamesTextBlock.js +8 -0
  21. package/dist/src/components/shortcodes/SoamesTextList.js +8 -0
  22. package/dist/src/components/shortcodes/SoamesTitle.js +7 -0
  23. package/dist/src/components/shortcodes/SoamesTitleBar.js +7 -0
  24. package/dist/src/components/shortcodes/SoamesTitleBarLg.js +25 -0
  25. package/dist/src/components/shortcodes/SoamesVideo.js +8 -0
  26. package/dist/src/pages/index.js +9 -0
  27. package/dist/src/templates/blog-post-archive.js +59 -0
  28. package/dist/src/templates/blog-post.js +67 -0
  29. package/dist/src/templates/page.js +33 -0
  30. package/dist/src/utils/shortcodes/Shortcodes.js +105 -0
  31. package/dist/src/utils/shortcodes/getAttributes.js +18 -0
  32. package/dist/src/utils/shortcodes/getContent.js +7 -0
  33. package/gatsby-browser.js +11 -0
  34. package/gatsby-node.js +138 -0
  35. package/gatsby-ssr.js +12 -0
  36. package/package.json +76 -0
  37. package/src/components/Bio.tsx +63 -0
  38. package/src/components/BlogSidebar.tsx +86 -0
  39. package/src/components/Footer.tsx +53 -0
  40. package/src/components/FooterMenu.tsx +66 -0
  41. package/src/components/Header.tsx +37 -0
  42. package/src/components/HeaderMenu.tsx +123 -0
  43. package/src/components/HeroHeader.tsx +75 -0
  44. package/src/components/Layout.tsx +60 -0
  45. package/src/components/Logo.tsx +49 -0
  46. package/src/components/Seo.tsx +84 -0
  47. package/src/components/shortcodes/RemoveContentAreaPadding.tsx +13 -0
  48. package/src/components/shortcodes/SoamesFeature.tsx +54 -0
  49. package/src/components/shortcodes/SoamesGalleryMenu.tsx +63 -0
  50. package/src/components/shortcodes/SoamesIconList.tsx +57 -0
  51. package/src/components/shortcodes/SoamesSoundCloud.tsx +71 -0
  52. package/src/components/shortcodes/SoamesTextBlock.tsx +27 -0
  53. package/src/components/shortcodes/SoamesTextList.tsx +27 -0
  54. package/src/components/shortcodes/SoamesTitle.tsx +23 -0
  55. package/src/components/shortcodes/SoamesTitleBar.tsx +21 -0
  56. package/src/components/shortcodes/SoamesTitleBarLg.tsx +56 -0
  57. package/src/components/shortcodes/SoamesVideo.tsx +34 -0
  58. package/src/styles/soames/base.css +592 -0
  59. package/src/styles/soames/components.css +1551 -0
  60. package/src/styles/soames/layout.css +209 -0
  61. package/src/styles/soames/overrides.css +1779 -0
  62. package/src/styles/soames/typography.css +23 -0
  63. package/src/styles/theme.css +8 -0
  64. package/src/styles/vendor/normalize.css +343 -0
  65. package/src/styles/vendor/wordpress-blocks.css +3451 -0
  66. package/src/templates/blog-post-archive.tsx +167 -0
  67. package/src/templates/blog-post.tsx +183 -0
  68. package/src/templates/page.tsx +65 -0
  69. package/src/utils/shortcodes/Shortcodes.tsx +119 -0
  70. package/src/utils/shortcodes/getAttributes.ts +19 -0
  71. package/src/utils/shortcodes/getContent.ts +5 -0
  72. package/static/js/soames-nav-dropdown.js +646 -0
  73. package/static/js/soames-navbar-dropdown.js +127 -0
package/LICENSE ADDED
@@ -0,0 +1,29 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2025, Orbi Software
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+
9
+ 1. Redistributions of source code must retain the above copyright notice, this
10
+ list of conditions and the following disclaimer.
11
+
12
+ 2. Redistributions in binary form must reproduce the above copyright notice,
13
+ this list of conditions and the following disclaimer in the documentation
14
+ and/or other materials provided with the distribution.
15
+
16
+ 3. Neither the name of the copyright holder nor the names of its
17
+ contributors may be used to endorse or promote products derived from
18
+ this software without specific prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # Soames Gatsby Theme
2
+
3
+ [![npm version](https://img.shields.io/npm/v/soames-gatsby-theme.svg?style=flat-square)](https://www.npmjs.com/package/soames-gatsby-theme)
4
+ [![license](https://img.shields.io/npm/l/soames-gatsby-theme.svg?style=flat-square)](./LICENSE)
5
+
6
+ A customizable Gatsby theme for building personal websites using WordPress as a headless CMS. Built with TypeScript for better DX and safety.
7
+
8
+ ## Install Instructions
9
+
10
+ npm install soames-gatsby-theme
11
+
12
+ ## Known Security Notices
13
+
14
+ During installation, you may encounter audit warnings for two high-severity vulnerabilities related to the cookie and path-to-regexp packages. These packages are used internally by Gatsby’s development tooling, specifically:
15
+
16
+ cookie is included via express and socket.io, which Gatsby uses for its hot-reloading dev server.
17
+
18
+ path-to-regexp is also included by express and only used during local development.
19
+
20
+ These dependencies are not included in the production build of your site. Gatsby generates static HTML, CSS, and JS files that do not use these server-side tools.
21
+
22
+ As of this version, these issues do not pose a risk to end users or affect the final deployed site. They will be resolved in future versions as Gatsby and its related plugins are updated.
23
+
24
+ You can safely ignore these warnings unless you're modifying or redistributing the Gatsby development server code itself.
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const themeConfig = (themeOptions = {}) => {
4
+ const url = themeOptions.url || process.env.GATSBY_WORDPRESS_URL;
5
+ if (!url) {
6
+ throw new Error("The WordPress GraphQL 'url' is required in theme options or .env.");
7
+ }
8
+ return {
9
+ siteMetadata: {
10
+ title: 'Soames Gatsby Theme',
11
+ },
12
+ plugins: [
13
+ {
14
+ resolve: 'gatsby-source-wordpress',
15
+ options: {
16
+ url,
17
+ },
18
+ },
19
+ {
20
+ resolve: `gatsby-source-filesystem`,
21
+ options: {
22
+ name: `assets`,
23
+ path: `${__dirname}/content/assets`,
24
+ },
25
+ },
26
+ `gatsby-plugin-image`,
27
+ `gatsby-plugin-sharp`,
28
+ `gatsby-transformer-sharp`,
29
+ {
30
+ // See https://www.gatsbyjs.com/plugins/gatsby-plugin-manifest/?=gatsby-plugin-manifest
31
+ resolve: `gatsby-plugin-manifest`,
32
+ options: {
33
+ name: `Gatsby Starter WordPress Blog`,
34
+ short_name: `GatsbyJS & WP`,
35
+ start_url: `/`,
36
+ background_color: `#ffffff`,
37
+ theme_color: `#663399`,
38
+ display: `minimal-ui`,
39
+ icon: `content/assets/gatsby-icon.png`,
40
+ },
41
+ },
42
+ // See https://www.gatsbyjs.com/plugins/gatsby-plugin-react-helmet/?=gatsby-plugin-react-helmet
43
+ `gatsby-plugin-react-helmet`,
44
+ ],
45
+ };
46
+ };
47
+ exports.default = themeConfig;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPages = void 0;
4
+ const createPages = async ({ actions }) => {
5
+ // Add dynamic page creation logic here if needed
6
+ };
7
+ exports.createPages = createPages;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const gatsby_1 = require("gatsby");
5
+ const Bio = () => {
6
+ const data = (0, gatsby_1.useStaticQuery)((0, gatsby_1.graphql) `
7
+ query BioQuery {
8
+ author: wpUser {
9
+ firstName
10
+ name
11
+ description
12
+ avatar {
13
+ url
14
+ }
15
+ }
16
+ }
17
+ `);
18
+ const { author } = data;
19
+ const avatarUrl = author?.avatar?.url;
20
+ const twitterHandle = author?.name;
21
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "bio", children: [avatarUrl && ((0, jsx_runtime_1.jsx)("img", { alt: author.firstName, className: "bio-avatar", src: avatarUrl })), author.firstName && ((0, jsx_runtime_1.jsxs)("p", { children: ["Written by ", (0, jsx_runtime_1.jsx)("strong", { children: author.firstName }), ` `, author.description, ` `, twitterHandle && ((0, jsx_runtime_1.jsx)("a", { href: `https://twitter.com/${twitterHandle}`, children: "You should follow them on Twitter" }))] }))] }));
22
+ };
23
+ exports.default = Bio;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const gatsby_1 = require("gatsby");
8
+ const html_react_parser_1 = __importDefault(require("html-react-parser"));
9
+ const BlogSidebar = ({ postId }) => {
10
+ const data = (0, gatsby_1.useStaticQuery)((0, gatsby_1.graphql) `
11
+ query SidebarPostArchive {
12
+ posts: allWpPost(sort: { date: DESC }) {
13
+ nodes {
14
+ id
15
+ excerpt
16
+ uri
17
+ date(formatString: "MMMM DD, YYYY")
18
+ title
19
+ featuredImage {
20
+ node {
21
+ guid
22
+ }
23
+ }
24
+ }
25
+ }
26
+ }
27
+ `);
28
+ return ((0, jsx_runtime_1.jsx)("section", { className: "soames-blog-roll pt-3", children: (0, jsx_runtime_1.jsx)("div", { className: "container", children: data.posts.nodes.map((post, index) => post.id !== postId ? ((0, jsx_runtime_1.jsx)("div", { className: "media-container-row", children: (0, jsx_runtime_1.jsx)("div", { className: "card p-3 col-12", children: (0, jsx_runtime_1.jsxs)("div", { className: "card-wrapper", children: [(0, jsx_runtime_1.jsxs)("div", { className: "card-box", children: [(0, jsx_runtime_1.jsx)("h4", { className: "card-title mbr-fonts-style display-5", children: (0, html_react_parser_1.default)(post.title) }), (0, jsx_runtime_1.jsx)("h4", { className: "mbr-fonts-style display-7", children: post.date }), (0, html_react_parser_1.default)(post.excerpt)] }), (0, jsx_runtime_1.jsx)("div", { className: "mbr-section-btn text-center", children: (0, jsx_runtime_1.jsx)(gatsby_1.Link, { to: `/blog${post.uri}`, itemProp: "url", className: "btn btn-primary display-4", children: (0, jsx_runtime_1.jsx)("span", { itemProp: "headline", children: "Read More" }) }) })] }) }) }, index)) : null) }) }));
29
+ };
30
+ exports.default = BlogSidebar;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const FooterMenu_1 = __importDefault(require("./FooterMenu"));
8
+ const Footer = ({ title }) => {
9
+ return ((0, jsx_runtime_1.jsx)("section", { className: "soames-footer mt-5", children: (0, jsx_runtime_1.jsx)("div", { className: "container", children: (0, jsx_runtime_1.jsxs)("div", { className: "media-container-row content text-white", children: [(0, jsx_runtime_1.jsx)("div", { className: "col-12 col-md-2", children: (0, jsx_runtime_1.jsx)("div", { className: "media-wrap", children: ` ` }) }), (0, jsx_runtime_1.jsxs)("div", { className: "col-12 col-md-4 mbr-fonts-style display-7", children: [(0, jsx_runtime_1.jsx)("h5", { className: "pb-3", children: "Links" }), (0, jsx_runtime_1.jsx)(FooterMenu_1.default, {})] }), (0, jsx_runtime_1.jsxs)("div", { className: "col-12 col-md-4 mbr-fonts-style display-7", children: [(0, jsx_runtime_1.jsx)("h5", { className: "pb-3", children: "Contact" }), (0, jsx_runtime_1.jsx)("p", { className: "soames-text pr-3", children: "fritz followed by ASCII 0x40 followed by the domain name of this site." }), (0, jsx_runtime_1.jsxs)("p", { className: "soames-text pt-3", children: ["\u00A9 ", new Date().getFullYear(), " ", title, (0, jsx_runtime_1.jsx)("br", {}), "Built with", " ", (0, jsx_runtime_1.jsx)("a", { href: "https://www.soames.app", target: "_blank", rel: "noreferrer", children: "Soames" }), ",", " ", (0, jsx_runtime_1.jsx)("a", { href: "https://www.gatsbyjs.com", target: "_blank", rel: "noreferrer", children: "Gatsby" }), ", and", " ", (0, jsx_runtime_1.jsx)("a", { href: "https://wordpress.org/", target: "_blank", rel: "noreferrer", children: "WordPress" }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("br", {})] })] }), (0, jsx_runtime_1.jsx)("div", { className: "col-12 col-md-2 mbr-fonts-style display-7", children: (0, jsx_runtime_1.jsx)("h5", { className: "pb-3", children: ` ` }) })] }) }) }));
10
+ };
11
+ exports.default = Footer;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const gatsby_1 = require("gatsby");
5
+ const FooterMenu = () => {
6
+ const data = (0, gatsby_1.useStaticQuery)((0, gatsby_1.graphql) `
7
+ query WpFooterMenu {
8
+ wpMenu(name: { eq: "soames-footer-menu" }) {
9
+ id
10
+ name
11
+ menuItems {
12
+ nodes {
13
+ id
14
+ label
15
+ parentDatabaseId
16
+ path
17
+ uri
18
+ order
19
+ }
20
+ }
21
+ }
22
+ }
23
+ `);
24
+ return ((0, jsx_runtime_1.jsx)("div", { className: "soames-footer-content", children: (0, jsx_runtime_1.jsx)("ul", { children: data.wpMenu.menuItems.nodes.map((item) => item.parentDatabaseId === 0 ? (item.uri.includes("http") ? ((0, jsx_runtime_1.jsx)("li", { className: "soames-footer-list-item", children: (0, jsx_runtime_1.jsx)("a", { href: item.uri, target: "_blank", rel: "noreferrer", children: item.label }) }, item.id)) : ((0, jsx_runtime_1.jsx)("li", { className: "soames-footer-list-item", children: (0, jsx_runtime_1.jsx)(gatsby_1.Link, { to: item.uri, children: item.label }) }, item.id))) : null) }) }));
25
+ };
26
+ exports.default = FooterMenu;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const HeaderMenu_1 = __importDefault(require("./HeaderMenu"));
8
+ const Logo_1 = __importDefault(require("./Logo"));
9
+ const Header = ({ title, isHomePage }) => {
10
+ return ((0, jsx_runtime_1.jsx)("section", { className: "menu soames-menu", children: (0, jsx_runtime_1.jsxs)("nav", { className: "navbar navbar-expand beta-menu navbar-dropdown align-items-center navbar-fixed-top navbar-toggleable-sm", children: [(0, jsx_runtime_1.jsx)("button", { className: "navbar-toggler navbar-toggler-right", type: "button", "data-bs-toggle": "collapse", "data-bs-target": "#navbarSupportedContent", "aria-controls": "navbarSupportedContent", "aria-expanded": "false", "aria-label": "Toggle navigation", children: (0, jsx_runtime_1.jsxs)("div", { className: "hamburger", children: [(0, jsx_runtime_1.jsx)("span", {}), (0, jsx_runtime_1.jsx)("span", {}), (0, jsx_runtime_1.jsx)("span", {}), (0, jsx_runtime_1.jsx)("span", {})] }) }), (0, jsx_runtime_1.jsx)(Logo_1.default, { title: title }), (0, jsx_runtime_1.jsx)(HeaderMenu_1.default, {})] }) }));
11
+ };
12
+ exports.default = Header;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const gatsby_1 = require("gatsby");
5
+ const HeaderMenu = () => {
6
+ const data = (0, gatsby_1.useStaticQuery)((0, gatsby_1.graphql) `
7
+ query WpHeaderMenu {
8
+ wpMenu(name: { eq: "soames-header-menu" }) {
9
+ id
10
+ name
11
+ menuItems {
12
+ nodes {
13
+ id
14
+ label
15
+ parentDatabaseId
16
+ path
17
+ uri
18
+ order
19
+ childItems {
20
+ nodes {
21
+ id
22
+ label
23
+ uri
24
+ order
25
+ }
26
+ }
27
+ }
28
+ }
29
+ }
30
+ }
31
+ `);
32
+ return ((0, jsx_runtime_1.jsx)("div", { className: "collapse navbar-collapse", id: "navbarSupportedContent", children: (0, jsx_runtime_1.jsx)("ul", { className: "navbar-nav nav-dropdown nav-right", "data-app-modern-menu": "true", children: data.wpMenu.menuItems.nodes.map((item) => item.path !== "/home/" && item.parentDatabaseId === 0 ? (item.childItems.nodes.length === 0 ? ((0, jsx_runtime_1.jsx)("li", { className: "nav-item", children: item.uri.includes("http") ? ((0, jsx_runtime_1.jsx)("a", { className: "nav-link link text-white display-4", href: item.uri, target: "_blank", rel: "noreferrer", children: item.label })) : ((0, jsx_runtime_1.jsx)(gatsby_1.Link, { to: item.uri, className: "nav-link link text-white display-4", children: item.label })) }, item.id)) : ((0, jsx_runtime_1.jsxs)("li", { className: "nav-item dropdown", children: [(0, jsx_runtime_1.jsx)("a", { className: "nav-link link text-white dropdown-toggle display-4", href: item.uri, "data-toggle": "dropdown-submenu", "aria-expanded": "false", children: item.label }), (0, jsx_runtime_1.jsx)("div", { className: "dropdown-menu", children: (0, jsx_runtime_1.jsx)("ul", { className: "navbar-nav nav-dropdown nav-right", children: item.childItems.nodes.map((childItem) => ((0, jsx_runtime_1.jsx)("li", { children: childItem.uri.includes("http") ? ((0, jsx_runtime_1.jsxs)("a", { className: "text-white dropdown-item display-4", target: "_blank", rel: "noreferrer", href: childItem.uri, children: [childItem.label, (0, jsx_runtime_1.jsx)("br", {})] })) : ((0, jsx_runtime_1.jsx)(gatsby_1.Link, { to: childItem.uri, className: "text-white dropdown-item display-4", children: childItem.label })) }, childItem.id))) }) })] }, item.id))) : null) }) }));
33
+ };
34
+ exports.default = HeaderMenu;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const HeroHeader = ({ title, subhead, backgroundImage, backgroundImageTitle, overlayOpacity, }) => {
5
+ if (!backgroundImage) {
6
+ backgroundImage = "https://picsum.photos/1080/720";
7
+ }
8
+ else {
9
+ if (backgroundImageTitle?.includes("_03o_"))
10
+ overlayOpacity = 0.3;
11
+ else if (backgroundImageTitle?.includes("_04o_"))
12
+ overlayOpacity = 0.4;
13
+ else if (backgroundImageTitle?.includes("_05o_"))
14
+ overlayOpacity = 0.5;
15
+ else if (backgroundImageTitle?.includes("_06o_"))
16
+ overlayOpacity = 0.6;
17
+ else if (backgroundImageTitle?.includes("_07o_"))
18
+ overlayOpacity = 0.7;
19
+ }
20
+ if (!overlayOpacity) {
21
+ overlayOpacity = 0.6;
22
+ }
23
+ const css = `
24
+ .soames-background-lg::after {
25
+ background: url(${backgroundImage});
26
+ background-position: 50% 50%;
27
+ background-size: cover;
28
+ background-repeat: no-repeat;
29
+ position: fixed;
30
+ top: 0px;
31
+ left: 0px;
32
+ overflow: hidden;
33
+ pointer-events: none;
34
+ margin-top: -180px;
35
+ }
36
+ `;
37
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("style", { children: css }), (0, jsx_runtime_1.jsxs)("section", { className: "soames-header-lg soames-parallax soames-background-lg", id: "header1", children: [(0, jsx_runtime_1.jsx)("div", { className: "soames-overlay", style: { opacity: overlayOpacity, backgroundColor: "rgb(46, 46, 46)" } }), (0, jsx_runtime_1.jsx)("div", { className: "container", children: (0, jsx_runtime_1.jsx)("div", { className: "row justify-content-md-center", children: (0, jsx_runtime_1.jsxs)("div", { className: "soames-hero-header soames-white col-md-10", children: [(0, jsx_runtime_1.jsx)("h1", { className: "soames-section-title align-center soames-bold mbr-fonts-style display-1", children: title }), (0, jsx_runtime_1.jsx)("div", { className: "soames-section-subtitle align-center soames-light soames-white mbr-fonts-style display-5", children: subhead })] }) }) })] })] }));
38
+ };
39
+ exports.default = HeroHeader;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const gatsby_1 = require("gatsby");
5
+ const react_helmet_1 = require("react-helmet");
6
+ require("../styles/theme.css");
7
+ const Layout = ({ isHomePage = false, children }) => {
8
+ const { wp: { generalSettings: { title }, }, wpMediaItem, } = (0, gatsby_1.useStaticQuery)((0, gatsby_1.graphql) `
9
+ query LayoutQuery {
10
+ wp {
11
+ generalSettings {
12
+ title
13
+ description
14
+ }
15
+ }
16
+ wpMediaItem(title: { eq: "favicon" }) {
17
+ title
18
+ guid
19
+ }
20
+ }
21
+ `);
22
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "global-wrapper", "data-is-root-path": isHomePage, children: [(0, jsx_runtime_1.jsxs)(react_helmet_1.Helmet, { children: [wpMediaItem && ((0, jsx_runtime_1.jsx)("link", { rel: "icon", href: wpMediaItem.guid, type: "image/png" })), (0, jsx_runtime_1.jsx)("link", { rel: "preconnect", href: "https://fonts.googleapis.com" }), (0, jsx_runtime_1.jsx)("link", { rel: "preconnect", href: "https://fonts.gstatic.com", crossOrigin: "anonymous" }), (0, jsx_runtime_1.jsx)("link", { rel: "stylesheet", href: "https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300;0,400;0,500;0,700;0,900;1,300;1,400;1,500;1,700;1,900&display=swap" })] }), (0, jsx_runtime_1.jsx)("main", { children: children })] }));
23
+ };
24
+ exports.default = Layout;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const gatsby_1 = require("gatsby");
5
+ const Logo = ({ title }) => {
6
+ const data = (0, gatsby_1.useStaticQuery)((0, gatsby_1.graphql) `
7
+ query LogoQuery {
8
+ wpMediaItem(title: { eq: "logo" }) {
9
+ title
10
+ guid
11
+ }
12
+ }
13
+ `);
14
+ const logo = data.wpMediaItem;
15
+ return ((0, jsx_runtime_1.jsx)("div", { className: "menu-logo", children: (0, jsx_runtime_1.jsx)("div", { className: "navbar-brand", children: (0, jsx_runtime_1.jsx)("span", { className: "navbar-caption-wrap", children: (0, jsx_runtime_1.jsxs)("a", { className: "navbar-caption text-white display-5", href: "/", children: [logo ? ((0, jsx_runtime_1.jsx)("img", { width: "108", alt: logo.title, src: logo.guid })) : ((0, jsx_runtime_1.jsx)("img", { width: "108", alt: "Orbi Software", src: "https://orbivision.net/wp-content/uploads/2023/01/punch_card.png" })), "\u00A0\u00A0", title] }) }) }) }));
16
+ };
17
+ exports.default = Logo;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const react_helmet_1 = require("react-helmet");
5
+ const gatsby_1 = require("gatsby");
6
+ const Seo = ({ title, description = "", lang = "en", meta = [], }) => {
7
+ const { wp, wpUser } = (0, gatsby_1.useStaticQuery)((0, gatsby_1.graphql) `
8
+ query {
9
+ wp {
10
+ generalSettings {
11
+ title
12
+ description
13
+ }
14
+ }
15
+ wpUser {
16
+ name
17
+ }
18
+ }
19
+ `);
20
+ const metaDescription = description || wp.generalSettings?.description;
21
+ const defaultTitle = wp.generalSettings?.title;
22
+ const twitterHandle = wpUser?.name || "";
23
+ return ((0, jsx_runtime_1.jsx)(react_helmet_1.Helmet, { htmlAttributes: { lang }, title: title, titleTemplate: defaultTitle ? `%s | ${defaultTitle}` : undefined, meta: [
24
+ {
25
+ name: "description",
26
+ content: metaDescription,
27
+ },
28
+ {
29
+ property: "og:title",
30
+ content: title,
31
+ },
32
+ {
33
+ property: "og:description",
34
+ content: metaDescription,
35
+ },
36
+ {
37
+ property: "og:type",
38
+ content: "website",
39
+ },
40
+ {
41
+ name: "twitter:card",
42
+ content: "summary",
43
+ },
44
+ {
45
+ name: "twitter:creator",
46
+ content: twitterHandle,
47
+ },
48
+ {
49
+ name: "twitter:title",
50
+ content: title,
51
+ },
52
+ {
53
+ name: "twitter:description",
54
+ content: metaDescription,
55
+ },
56
+ ...meta,
57
+ ] }));
58
+ };
59
+ exports.default = Seo;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const RemoveContentAreaPadding = () => {
5
+ const css = `
6
+ .soames-gatsby-content {
7
+ padding: 0px;
8
+ }
9
+ `;
10
+ return (0, jsx_runtime_1.jsx)("style", { children: css });
11
+ };
12
+ exports.default = RemoveContentAreaPadding;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const SoamesFeature = ({ content, attributes }) => {
5
+ const { image, title, css } = attributes;
6
+ const paragraphs = content.split('__SOAMES_P__');
7
+ return ((0, jsx_runtime_1.jsx)("section", { className: "soames-features", children: (0, jsx_runtime_1.jsx)("div", { className: "container", children: (0, jsx_runtime_1.jsx)("div", { className: "col-md-12", children: (0, jsx_runtime_1.jsxs)("div", { className: "media-container-row", children: [(0, jsx_runtime_1.jsxs)("div", { className: "align-left aside-content", children: [title && ((0, jsx_runtime_1.jsx)("h2", { className: "mbr-title pt-2 mbr-fonts-style display-2", children: (0, jsx_runtime_1.jsx)("div", { children: title }) })), (0, jsx_runtime_1.jsx)("div", { className: "block-content", children: (0, jsx_runtime_1.jsxs)("div", { className: `card ${css ?? ""}`, children: [(0, jsx_runtime_1.jsx)("div", { className: "media", children: (0, jsx_runtime_1.jsx)("div", { className: "media-body" }) }), (0, jsx_runtime_1.jsx)("div", { className: "card-box", children: paragraphs.map((paragraph, key) => ((0, jsx_runtime_1.jsx)("p", { className: "block-text mbr-fonts-style display-7", children: paragraph }, key))) })] }) })] }), image && ((0, jsx_runtime_1.jsx)("div", { className: "soames-figure", style: { width: "50%" }, children: (0, jsx_runtime_1.jsx)("img", { src: image, alt: title ?? "Feature", title: title ?? "Feature" }) }))] }) }) }) }));
8
+ };
9
+ exports.default = SoamesFeature;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const SoamesGalleryMenu = ({ attributes }) => {
5
+ const { images, links, labels, css } = attributes;
6
+ const menuItems = images.map((image, i) => ({
7
+ id: `icon_${i}`,
8
+ imageUrl: image.replace(/['""]+/g, '"'),
9
+ label: labels?.[i],
10
+ link: links?.[i],
11
+ css: css?.[i],
12
+ }));
13
+ return ((0, jsx_runtime_1.jsx)("section", { className: "features1 soames-gallery-menu", children: (0, jsx_runtime_1.jsx)("div", { className: "container-fluid", children: (0, jsx_runtime_1.jsx)("div", { className: "media-container-row", children: menuItems.map(menuItem => ((0, jsx_runtime_1.jsx)("div", { className: "card p-3 col-md-12 col-lg-3", children: (0, jsx_runtime_1.jsxs)("div", { className: "card-wrapper", children: [(0, jsx_runtime_1.jsx)("div", { className: "card-img", children: (0, jsx_runtime_1.jsx)("a", { href: menuItem.link, children: (0, jsx_runtime_1.jsx)("img", { src: menuItem.imageUrl, alt: menuItem.label ?? "", title: menuItem.label ?? "" }) }) }), (0, jsx_runtime_1.jsx)("div", { className: "card-box", children: (0, jsx_runtime_1.jsx)("h4", { className: "card-title pb-3 mbr-fonts-style display-7", children: menuItem.label }) })] }) }, menuItem.id))) }) }) }));
14
+ };
15
+ exports.default = SoamesGalleryMenu;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const SoamesIconList = ({ attributes }) => {
5
+ const { images, links, labels, css } = attributes;
6
+ const icons = images.map((image, i) => ({
7
+ id: `icon_${i}`,
8
+ imageUrl: image.replace(/['""]+/g, '"'),
9
+ label: labels?.[i] ?? null,
10
+ link: links?.[i] ?? null,
11
+ css: css?.[i] ?? null,
12
+ }));
13
+ return ((0, jsx_runtime_1.jsx)("section", { className: "soames-section", children: (0, jsx_runtime_1.jsx)("div", { className: "container", children: (0, jsx_runtime_1.jsx)("div", { className: "d-flex flex-wrap align-items-center justify-content-center", children: icons.map((icon) => ((0, jsx_runtime_1.jsxs)("a", { className: `d-flex flex-column align-items-center text-decoration-none p-2 ${icon.css ?? ''}`, href: icon.link ?? "#", target: "_blank", rel: "noreferrer", children: [(0, jsx_runtime_1.jsx)("img", { className: "d-block mb-2", src: icon.imageUrl, alt: icon.label ?? "", height: "116", loading: "lazy" }), (0, jsx_runtime_1.jsx)("span", { className: "text-muted", children: icon.label })] }, icon.id))) }) }) }));
14
+ };
15
+ exports.default = SoamesIconList;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const SoamesSoundCloud = ({ attributes }) => {
5
+ const { bandName, siteLink, playlistId, albumLink, albumName } = attributes;
6
+ return ((0, jsx_runtime_1.jsx)("section", { className: "soames-section article soames-list", children: (0, jsx_runtime_1.jsx)("div", { className: "container", children: (0, jsx_runtime_1.jsx)("div", { className: "media-container-row", children: (0, jsx_runtime_1.jsxs)("div", { className: "soames-text counter-container col-12 col-md-10 pt-2 mbr-fonts-style display-7", children: [(0, jsx_runtime_1.jsx)("iframe", { title: albumName, width: "100%", height: "300", scrolling: "no", frameBorder: "no", allow: "autoplay", src: `https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/playlists/${playlistId}&color=%23ff5500&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true&visual=true` }), (0, jsx_runtime_1.jsxs)("div", { style: {
7
+ fontSize: '10px',
8
+ color: '#cccccc',
9
+ lineBreak: 'anywhere',
10
+ wordBreak: 'normal',
11
+ overflow: 'hidden',
12
+ whiteSpace: 'nowrap',
13
+ textOverflow: 'ellipsis',
14
+ fontFamily: 'Interstate,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Garuda,Verdana,Tahoma,sans-serif',
15
+ fontWeight: 100,
16
+ }, children: [(0, jsx_runtime_1.jsx)("a", { href: siteLink, title: bandName, target: "_blank", style: { color: '#cccccc', textDecoration: 'none' }, rel: "noreferrer", children: bandName }), ' ', "\u00B7", ' ', (0, jsx_runtime_1.jsx)("a", { href: albumLink, title: albumName, target: "_blank", style: { color: '#cccccc', textDecoration: 'none' }, rel: "noreferrer", children: albumName })] })] }) }) }) }));
17
+ };
18
+ exports.default = SoamesSoundCloud;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const SoamesTextBlock = ({ content }) => {
5
+ const paragraphs = content?.split('__SOAMES_P__') ?? [];
6
+ return ((0, jsx_runtime_1.jsx)("section", { className: "soames-section article soames-article", children: (0, jsx_runtime_1.jsx)("div", { className: "container col-md-10", children: (0, jsx_runtime_1.jsx)("div", { className: "inner-container", style: { width: "100%" }, children: (0, jsx_runtime_1.jsx)("div", { className: "section-text align-center mbr-fonts-style display-7 pb-2", children: paragraphs.map((paragraph, key) => ((0, jsx_runtime_1.jsx)("p", { className: "block-text mbr-fonts-style display-7", children: paragraph }, key))) }) }) }) }));
7
+ };
8
+ exports.default = SoamesTextBlock;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const SoamesTextList = ({ content }) => {
5
+ const lineItems = content?.split('__SOAMES_LI__') ?? [];
6
+ return ((0, jsx_runtime_1.jsx)("section", { className: "soames-section article soames-list pb-0", children: (0, jsx_runtime_1.jsx)("div", { className: "container", children: (0, jsx_runtime_1.jsx)("div", { className: "media-container-row", children: (0, jsx_runtime_1.jsx)("div", { className: "soames-text counter-container col-12 col-md-10 mbr-fonts-style pt-0 display-7", children: (0, jsx_runtime_1.jsx)("ul", { children: lineItems.map((lineItem, key) => ((0, jsx_runtime_1.jsx)("li", { children: lineItem }, key))) }) }) }) }) }));
7
+ };
8
+ exports.default = SoamesTextList;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const SoamesTitle = ({ title }) => {
5
+ return ((0, jsx_runtime_1.jsx)("section", { className: "soames-section soames-title", children: (0, jsx_runtime_1.jsx)("div", { className: "container", children: (0, jsx_runtime_1.jsx)("div", { className: "media-container-row", children: (0, jsx_runtime_1.jsx)("div", { className: "title col-12 col-md-8", children: (0, jsx_runtime_1.jsx)("h2", { className: "align-center mbr-fonts-style display-2", children: title }) }) }) }) }));
6
+ };
7
+ exports.default = SoamesTitle;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const SoamesTitleBar = ({ title }) => {
5
+ return ((0, jsx_runtime_1.jsx)("section", { className: "soames-section soames-title-bar mt-5 mb-3", children: (0, jsx_runtime_1.jsx)("div", { className: "container", children: (0, jsx_runtime_1.jsx)("div", { className: "media-container-row", children: (0, jsx_runtime_1.jsx)("div", { className: "title col-12 col-md-8", children: (0, jsx_runtime_1.jsx)("h2", { className: "align-center mbr-fonts-style display-2", children: title }) }) }) }) }));
6
+ };
7
+ exports.default = SoamesTitleBar;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const SoamesTitleBarLg = ({ title, attributes }) => {
5
+ const subtitle = attributes?.subtitle?.[0];
6
+ const background = attributes?.background?.[0];
7
+ const defaultBackground = 'https://picsum.photos/1080/720';
8
+ const css = `
9
+ .soames-background-title-bar-lg::after {
10
+ background: url(${background || defaultBackground});
11
+ background-position: 50% 50%;
12
+ background-size: cover;
13
+ background-attachment: fixed;
14
+ background-repeat: no-repeat;
15
+ left: 0px;
16
+ height: 176px;
17
+ overflow: hidden;
18
+ pointer-events: none;
19
+ margin-top: 0px;
20
+ transform: translate3d(0px, 0px, 0px);
21
+ }
22
+ `;
23
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("style", { children: css }), (0, jsx_runtime_1.jsxs)("section", { className: "soames-header-sm soames-parallax soames-background-title-bar-lg mt-5 mb-3", children: [(0, jsx_runtime_1.jsx)("div", { className: "soames-overlay", style: { opacity: 0.6, backgroundColor: 'rgb(46, 46, 46)' } }), (0, jsx_runtime_1.jsx)("div", { className: "container", children: (0, jsx_runtime_1.jsx)("div", { className: "row justify-content-md-center", children: (0, jsx_runtime_1.jsxs)("div", { className: "soames-white col-md-10", children: [(0, jsx_runtime_1.jsx)("h1", { className: "soames-section-title align-center soames-bold mbr-fonts-style display-1", children: title }), subtitle && ((0, jsx_runtime_1.jsx)("h3", { className: "soames-section-subtitle align-center soames-light soames-white mbr-fonts-style display-5", children: subtitle }))] }) }) })] })] }));
24
+ };
25
+ exports.default = SoamesTitleBarLg;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const SoamesVideo = ({ attributes }) => {
5
+ const { link, title } = attributes;
6
+ return ((0, jsx_runtime_1.jsx)("section", { className: "soames-video-container", children: (0, jsx_runtime_1.jsx)("figure", { className: "soames-figure align-center container", children: (0, jsx_runtime_1.jsx)("div", { className: "video-block", children: (0, jsx_runtime_1.jsx)("div", { className: "video-wrapper", children: (0, jsx_runtime_1.jsx)("iframe", { height: "580", width: "360", src: link, title: title ?? "Embedded video", frameBorder: "0", allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share", allowFullScreen: true }) }) }) }) }));
7
+ };
8
+ exports.default = SoamesVideo;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const Layout_1 = __importDefault(require("../components/Layout"));
8
+ const Home = () => ((0, jsx_runtime_1.jsx)(Layout_1.default, { children: (0, jsx_runtime_1.jsx)("p", { children: "Welcome to the TypeScript version of Soames Gatsby Theme!" }) }));
9
+ exports.default = Home;