diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..089a77a --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +# Exclude everything +* + +# Allow decending into directories +!*/ + +# Include files in the root directory +!/* + +# Include the custom theme +!/themes/jason-williamsca/** + +# Include custom plugins +!/plugins/jasonwilliams/** \ No newline at end of file diff --git a/themes/jason-williamsca/assets/css/resume.css b/themes/jason-williamsca/assets/css/resume.css new file mode 100644 index 0000000..c78d2de --- /dev/null +++ b/themes/jason-williamsca/assets/css/resume.css @@ -0,0 +1,51 @@ +h1 + h2, h2:first-child { + margin-top: 0; +} + +section h1:first-child { + margin-top: 0; +} + +section + section { + margin-top: 3rem; +} + +.card ul { + margin: 0; + padding-left: 1rem; +} + +.card-inline.inline ul { + padding: 0; +} + +.card-inline.inline ul li { + display: inline; +} + +.card-inline.inline ul li:not(:last-child)::after { + content: ";"; +} + +.card-inline .inline-icon { + position: absolute; + top: 0; + right: 0; + padding: 1rem; + cursor: pointer; +} + +section.resume-section .resume-item .resume-date { + min-width: 18rem; +} + +.text-primary { + color: var(--dark-alt-accent-color)!important; +} + +/* lg Breakpoint */ +@media (min-width: 992px) { + section.resume-section { + min-height: 100vh; + } +} \ No newline at end of file diff --git a/themes/jason-williamsca/assets/css/sidemenu.css b/themes/jason-williamsca/assets/css/sidemenu.css new file mode 100644 index 0000000..262709e --- /dev/null +++ b/themes/jason-williamsca/assets/css/sidemenu.css @@ -0,0 +1,63 @@ +/* lg Breakpoint */ +@media (min-width: 992px) { + body { + /*padding-left: 17rem;*/ + padding-left: 25%; + } + + #main-nav { + min-height: 8rem; + } + + #side-nav { + text-align: center; + position: fixed; + top: 0; + left: 0; + display: flex; + flex-direction: column; + width: 25%; + height: 100vh; + padding: 0; + background-color: var(--main-accent-color); + } + + #side-nav .navbar-brand { + display: flex; + margin: auto auto 0; + /*padding: 0.5rem;*/ + } + + #side-nav .navbar-brand .img-profile { + max-width: 10rem; + max-height: 10rem; + /*border: 0.5rem solid rgba(255, 255, 255, 0.2);*/ + } + + #side-nav .navbar-collapse { + display: flex; + align-items: flex-start; + flex-grow: 0; + width: 100%; + margin-bottom: auto; + } + + #side-nav .navbar-collapse .navbar-nav { + flex-direction: column; + width: 100%; + } + + #side-nav .navbar-collapse .navbar-nav .nav-item { + display: block; + } + + #side-nav .navbar-collapse .navbar-nav .nav-item .nav-link { + display: block; + } +} + +@media (min-width: 992px) and (min-height: 620px) { + main { + margin-top: -8rem; + } +} \ No newline at end of file diff --git a/themes/jason-williamsca/assets/css/theme.css b/themes/jason-williamsca/assets/css/theme.css new file mode 100644 index 0000000..a0012d1 --- /dev/null +++ b/themes/jason-williamsca/assets/css/theme.css @@ -0,0 +1,271 @@ +/* Variables */ +:root { + --main-bg-color: #F2EDEA; + --main-accent-color: #302B44; + --light-accent-color: #686283; + --xlight-accent-color: #88839C; + --xxlight-accent-color: #FFFFFF; + --alt-accent-color: #B05C71; + --dark-alt-accent-color: #913A50; + --title-font: 'Cinzel', serif; + --body-font: 'Raleway', sans-serif; +} + +/* Structural elements (including style for them) */ +html, body { height: 100%; } + +body { + background-color: var(--main-bg-color); + font-family: var(--body-font); + color: var(--main-accent-color); +} + +#page-content { + flex: 1 0 auto; +} + +#main-nav .navbar-brand { + height: 4.5rem; + padding-left: 100px; + font-family: var(--title-font); + font-size: 2.5rem; + background-image: url('../images/jwlogo.svg'); + background-repeat: no-repeat; + background-size: 4.5rem; + color: var(--main-accent-color); + word-spacing: -0.15em; +} + +footer { + flex-shrink: 0; + background-color: var(--main-accent-color); + padding-top: 1rem; +} + +footer p, footer ul li { + color: var(--light-accent-color); + font-size: 0.8rem; +} + +footer ul { + margin-top: -1rem; + padding-left: 1.25rem; +} + +/* Responsive element spacing */ +.container-fluid, #main-nav { + padding-left: 1rem; + padding-right: 1rem; +} + +#main-nav { + padding-top: 1rem; +} + +footer, h1, h2 { + margin-top: 2rem; +} + +footer { + margin-top: 2rem; +} + +/* Responsive element spacing - lg breakpoint */ +@media (min-width: 992px) { + .container-fluid, #main-nav { + padding-left: 3rem; + padding-right: 3rem; + } + + #main-nav { + padding-top: 3rem; + } + + footer, h1, h2 { + margin-top: 3rem; + } +} + +/* Standard element styles */ +h1.master { + margin: 0; + font-family: var(--title-font); + font-size: 3.5rem; + word-spacing: -0.15em; +} + +h2 { + font-size: 1.5rem; +} + +h3 { + font-size: 1rem; + color: var(--dark-alt-accent-color); +} + +a { + color: var(--alt-accent-color); + text-decoration: underline; +} + +a.icon-link { + display: inline-block; + height: 1em; + color: var(--accent-color); +} + +a.btn { + text-decoration: none; +} + +a:hover { + color: var(--dark-alt-accent-color); + text-decoration: none; +} + +/* Custom styles */ +html { overflow-x: hidden; overflow-y: scroll; } + +html::-webkit-scrollbar-track { + background-color: rgba(48, 43, 68, 0.2); +} + +html::-webkit-scrollbar { + width: 0.5rem; + background-color: rgba(48, 43, 68, 0.2); +} + +html::-webkit-scrollbar-thumb { + border-radius: 0.5rem; + background-color: rgba(48, 43, 68, 0.5); +} + +#main-nav .nav-item .nav-link { + color: rgba(48, 43, 68, 0.5); + text-decoration: none; +} + +#main-nav .nav-item.active .nav-link { + color: var(--main-accent-color); +} + +#main-nav .nav-item .nav-link:hover { + color: var(--alt-accent-color); +} + +#side-nav .nav-link, footer a { + text-decoration: none; + color: var(--xlight-accent-color); +} + +#side-nav .nav-link:hover, #side-nav .nav-link.active, footer a:hover, footer a.active { + color: var(--xxlight-accent-color); +} + +.main, .card p.main, .card ul.main { + font-size: 1.2rem; +} + +.giant, .card p.giant, .card ul.giant { + font-size: 1.5rem; +} + +.col-container { + margin: 0 -15px; +} + +.card { + margin-bottom: 2rem; +} + +.social-icons { + font-size: 0; +} + +.social-icons a { + display: inline-block; + height: 3.5rem; + width: 3.5rem; + background-color: var(--main-accent-color); + color: var(--main-bg-color); + text-align: center; + font-size: 1.5rem; + line-height: 3.5rem; + margin-right: 0.25rem; + margin-bottom: 0.25rem; +} + +.social-icons a:hover { + background-color: var(--dark-alt-accent-color); + color: white; +} + +.card { + color: rgba(0, 0, 0, 0.75); +} + +.card h1, .card h2, .card h3 { + color: var(--main-accent-color); + margin-top: 0; +} + +.card p, .card ul { + font-size: 0.9rem; +} + +.card .feedcard-footer p, .card .feedcard-footer a { + margin-bottom: 0; + font-size: 0.75rem; + color: rgba(0, 0, 0, 0.5); + text-decoration: none; +} + +.card .feedcard-footer img { + height: 0.75rem; +} + +.card .feedcard-footer .feedcard-itemtype { + width: 33%; + text-align: right; +} + +.card .feedcard-footer .feedcard-attribution { + width: 67%; +} + +.altaccent { + color: var(--alt-accent-color); +} + +a.feed-showonly { font-size: 0.75rem; color: var(--xlight-accent-color); } + +/* Tag cloud styles */ +div.jqcloud { + font-size: 0.5rem; + line-height: normal; +} + +div.jqcloud a { + color: inherit; + font-size: inherit; + text-decoration: none +} + +div.jqcloud a:hover { + color: var(--dark-alt-accent-color); +} + +div.jqcloud span.w10 {font-size:550%; color: rgba(176, 92, 113, 1);} +div.jqcloud span.w9 {font-size:500%; color: rgba(176, 92, 113, 0.95);} +div.jqcloud span.w8 {font-size:450%; color: rgba(176, 92, 113, 0.9);} +div.jqcloud span.w7 {font-size:400%; color: rgba(176, 92, 113, 0.85);} +div.jqcloud span.w6 {font-size:350%; color: rgba(176, 92, 113, 0.8);} +div.jqcloud span.w5 {font-size:300%; color: rgba(176, 92, 113, 0.75);} +div.jqcloud span.w4 {font-size:250%; color: rgba(176, 92, 113, 0.7);} +div.jqcloud span.w3 {font-size:200%; color: rgba(176, 92, 113, 0.65);} +div.jqcloud span.w2 {font-size:150%; color: rgba(176, 92, 113, 0.6);} +div.jqcloud span.w1 {font-size:100%; color: rgba(176, 92, 113, 0.55);} + +div.jqcloud{overflow:hidden;position:relative} + +div.jqcloud span{padding:0} \ No newline at end of file diff --git a/themes/jason-williamsca/assets/images/favicon-16x16.png b/themes/jason-williamsca/assets/images/favicon-16x16.png new file mode 100644 index 0000000..032b941 Binary files /dev/null and b/themes/jason-williamsca/assets/images/favicon-16x16.png differ diff --git a/themes/jason-williamsca/assets/images/favicon-32x32.png b/themes/jason-williamsca/assets/images/favicon-32x32.png new file mode 100644 index 0000000..908712b Binary files /dev/null and b/themes/jason-williamsca/assets/images/favicon-32x32.png differ diff --git a/themes/jason-williamsca/assets/images/jwlogo.svg b/themes/jason-williamsca/assets/images/jwlogo.svg new file mode 100644 index 0000000..9676658 --- /dev/null +++ b/themes/jason-williamsca/assets/images/jwlogo.svg @@ -0,0 +1,35 @@ + + diff --git a/themes/jason-williamsca/assets/images/loading.svg b/themes/jason-williamsca/assets/images/loading.svg new file mode 100644 index 0000000..71533d9 --- /dev/null +++ b/themes/jason-williamsca/assets/images/loading.svg @@ -0,0 +1 @@ + diff --git a/themes/jason-williamsca/assets/images/madeinyyc.png b/themes/jason-williamsca/assets/images/madeinyyc.png new file mode 100644 index 0000000..5a82b64 Binary files /dev/null and b/themes/jason-williamsca/assets/images/madeinyyc.png differ diff --git a/themes/jason-williamsca/assets/images/resume-photo.png b/themes/jason-williamsca/assets/images/resume-photo.png new file mode 100644 index 0000000..99a981d Binary files /dev/null and b/themes/jason-williamsca/assets/images/resume-photo.png differ diff --git a/themes/jason-williamsca/assets/images/theme-preview.png b/themes/jason-williamsca/assets/images/theme-preview.png new file mode 100644 index 0000000..f7a7e76 Binary files /dev/null and b/themes/jason-williamsca/assets/images/theme-preview.png differ diff --git a/themes/jason-williamsca/assets/javascript/common.js b/themes/jason-williamsca/assets/javascript/common.js new file mode 100644 index 0000000..1dd4d4c --- /dev/null +++ b/themes/jason-williamsca/assets/javascript/common.js @@ -0,0 +1,26 @@ +$(() => { + // Enable any tooltips on the page + $('[data-toggle="tooltip"]').tooltip() + + // Enable masonry layout + $('.masonry').each(function() { + var opts = { itemSelector: '.masonry-item' } + if ($(this).hasClass('masonry-horizontal')) opts.horizontalOrder = true + + $(this).masonry(opts) + }) + + // Resize textareas to fit their content + $('textarea').each(function() { + $(this).height($(this)[0].scrollHeight) + }) + + // Use google analytics in production + if (!window.location.hostname.includes('dev')) { + window.dataLayer = window.dataLayer || []; + function gtag(){dataLayer.push(arguments);} + gtag('js', new Date()); + + gtag('config', 'UA-167178542-1'); + } +}); \ No newline at end of file diff --git a/themes/jason-williamsca/assets/javascript/resume.js b/themes/jason-williamsca/assets/javascript/resume.js new file mode 100644 index 0000000..62fe3f4 --- /dev/null +++ b/themes/jason-williamsca/assets/javascript/resume.js @@ -0,0 +1,45 @@ +(function($) { + "use strict"; // Start of use strict + + // Add reorder icon to .card-inline + $('.card-inline').prepend('
') + + // Define a function to toggle the view + const toggleBulletView = function() { + var that = $(this) + that.closest('.card').toggleClass('inline').closest('.masonry').masonry() + setTimeout(() => { + that.tooltip('hide') + }, 2000); + return false + } + + // Add the function to clicks on the menu button, and/or taps anywhere on the card + $('.card-inline .inline-icon').on('click', toggleBulletView) + $('.card-inline').on('touchstart', toggleBulletView) + + // Smooth scrolling using jQuery easing + $('a.js-scroll-trigger[href*="#"]:not([href="#"])').click(function() { + if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) { + var target = $(this.hash); + var hash = this.hash; + target = target.length ? target : $('[name=' + this.hash.slice(1) + ']'); + if (target.length) { + $('html, body').animate({ + scrollTop: (target.offset().top) + }, 1000, "easeInOutExpo"); + return false; + } + } + }); + + // Closes responsive menu when a scroll trigger link is clicked + $('.js-scroll-trigger').click(function() { + $('.navbar-collapse').collapse('hide'); + }); + + // Activate scrollspy to add active class to navbar items on scroll + $('body').scrollspy({ + target: '#side-nav' + }); +})(jQuery); // End of use strict \ No newline at end of file diff --git a/themes/jason-williamsca/layouts/default.htm b/themes/jason-williamsca/layouts/default.htm new file mode 100644 index 0000000..bbb84b5 --- /dev/null +++ b/themes/jason-williamsca/layouts/default.htm @@ -0,0 +1,72 @@ +description = "Default Layout" +== + + + + + + + + + + + + + {% styles %} + + + + +