From e1b122e6593e1e5d584ba0160febef2237703efe Mon Sep 17 00:00:00 2001 From: Dave Berning Date: Tue, 1 Feb 2022 23:17:09 -0500 Subject: [PATCH] added new theme and articles --- components/ThemePicker.vue | 99 +++++++++++++++++++++++--------------- data/theme-colors.ts | 38 +++++++++++++-- data/writing.ts | 69 ++++++++++++++++++++++---- pages/index.vue | 53 +++++++++++--------- pages/writing.vue | 55 ++++++++++++++------- types/theme.ts | 1 + 6 files changed, 219 insertions(+), 96 deletions(-) diff --git a/components/ThemePicker.vue b/components/ThemePicker.vue index f80ad87..922a2e4 100644 --- a/components/ThemePicker.vue +++ b/components/ThemePicker.vue @@ -1,62 +1,83 @@ diff --git a/data/theme-colors.ts b/data/theme-colors.ts index eef4cf2..20ea68b 100644 --- a/data/theme-colors.ts +++ b/data/theme-colors.ts @@ -35,16 +35,44 @@ const purpleTheme: Theme = { textColorDark: `#2a1e2b` } +const bengalsTheme: Theme = { + background: lightenDarkenColor('#cb653a', 0), + backgroundDarker: lightenDarkenColor('#cb653a', -20), // darken 7% of background color + backgroundLighter: lightenDarkenColor('#cb653a', 15), // Lighten 6% of background color + textColorDark: `#000000` +} + export const listOfThemes: ThemeSwatch[] = [ // Order of swatches - { name: 'default', color: defaultTheme.background }, - { name: 'green', color: greenTheme.background }, - { name: 'blue', color: blueTheme.background }, - { name: 'purple', color: purpleTheme.background }, - { name: 'red', color: redTheme.background } + { + name: 'bengals', + color: bengalsTheme.background, + image: 'bengals-logo.svg', + }, + { + name: 'default', + color: defaultTheme.background + }, + { + name: 'green', + color: greenTheme.background + }, + { + name: 'blue', + color: blueTheme.background + }, + { + name: 'purple', + color: purpleTheme.background + }, + { + name: 'red', + color: redTheme.background + } ] export function getThemeColors(theme: string): Theme { if (theme === 'red') return redTheme + else if (theme === 'bengals') return bengalsTheme else if (theme === 'green') return greenTheme else if (theme === 'blue') return blueTheme else if (theme === 'purple') return purpleTheme diff --git a/data/writing.ts b/data/writing.ts index d986615..4bb46ef 100644 --- a/data/writing.ts +++ b/data/writing.ts @@ -2,18 +2,53 @@ import { Writing } from '@/types' export const writing: Writing[] = [ { - title: `Vue.js: Understanding It's Tools and Ecosystem`, - date: `October 2018`, - featured: true, - type: `Book`, - to: `https://www.amazon.com/Vue-Js-Understanding-Its-Tools-Ecosystem/dp/9388425022` + title: `How To Debug Components, State, and Events with Vue.js Devtools`, + date: `January 25, 2022`, + featured: false, + type: `Digital Ocean`, + to: `https://www.digitalocean.com/community/tutorials/how-to-debug-components-state-and-events-with-vue-js-devtools` }, { - title: `Creating Interfaces With Bulma`, - date: `February 2018`, - featured: true, - type: `Book`, - to: `https://www.amazon.com/Creating-Interfaces-Bulma-Jeremy-Thomas-ebook/dp/B079M1BJG4/ref=sr_1_1?keywords=creating+interfaces+with+bulma&qid=1566873504&s=books&sr=1-1` + title: `How To Make Your Vue.js Application DRY with Slots, Mixins, and Composition API`, + date: `December 2, 2021`, + featured: false, + type: `Digital Ocean`, + to: `https://www.digitalocean.com/community/tutorials/how-to-make-your-vue-js-application-dry-with-slots-mixins-and-composition-api` + }, + { + title: `How To Manage State in a Vue.js Application with Vuex`, + date: `September 30, 2021`, + featured: false, + type: `Digital Ocean`, + to: `https://www.digitalocean.com/community/tutorials/how-to-manage-state-in-a-vue-js-application-with-vuex` + }, + { + title: `How To Use Built-In and Custom Directives in Vue.js`, + date: `August 12, 2021`, + featured: false, + type: `Digital Ocean`, + to: `https://www.digitalocean.com/community/tutorials/how-to-use-built-in-and-custom-directives-in-vue-js` + }, + { + title: `How To Create User Interactions with Events in Vue`, + date: `May 28, 2021`, + featured: false, + type: `Digital Ocean`, + to: `https://www.digitalocean.com/community/tutorials/how-to-create-user-interactions-with-events-in-vue` + }, + { + title: `How To Create Reusable Blocks of Code with Vue Single-File Components`, + date: `April 7, 2021`, + featured: false, + type: `Digital Ocean`, + to: `https://www.digitalocean.com/community/tutorials/how-to-create-reusable-blocks-of-code-with-vue-single-file-components` + }, + { + title: `How To Navigate Between Views with Vue Router`, + date: `March 22, 2021`, + featured: false, + type: `Digital Ocean`, + to: `https://www.digitalocean.com/community/tutorials/how-to-navigate-between-views-with-vue-router` }, { title: `How To Use Vue.js Environment Modes with a Node.js Mock Data Layer`, @@ -43,6 +78,13 @@ export const writing: Writing[] = [ type: `Digital Ocean`, to: `https://www.digitalocean.com/community/tutorials/vuejs-using-typescript-with-vue` }, + { + title: `Vue.js: Understanding It's Tools and Ecosystem`, + date: `October 2018`, + featured: true, + type: `Book`, + to: `https://www.amazon.com/Vue-Js-Understanding-Its-Tools-Ecosystem/dp/9388425022` + }, { title: `Getting Started with Server-Side Rendering Using Nuxt.js`, date: `April 16, 2018`, @@ -57,6 +99,13 @@ export const writing: Writing[] = [ type: `Digital Ocean`, to: `https://www.digitalocean.com/community/tutorials/vuejs-implementing-infinite-scroll` }, + { + title: `Creating Interfaces With Bulma`, + date: `February 2018`, + featured: true, + type: `Book`, + to: `https://www.amazon.com/Creating-Interfaces-Bulma-Jeremy-Thomas-ebook/dp/B079M1BJG4/ref=sr_1_1?keywords=creating+interfaces+with+bulma&qid=1566873504&s=books&sr=1-1` + }, { title: `Using Chart.js with Vue.js`, date: `January 28, 2018`, diff --git a/pages/index.vue b/pages/index.vue index e8ffbe0..e0f8d4e 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -3,17 +3,22 @@
- - PP + + PP
{{ about.firstName }} {{ about.lastName }} {{ about.role }} from {{ about.city }}, {{ about.state }} - - Photography by Jason Bayer + + Photography by + Jason Bayer + + + Copyright © {{ new Date().getFullYear() }}. All Rights Reserved. - Copyright © {{ new Date().getFullYear() }}. All Rights Reserved.
@@ -112,10 +117,10 @@ h2 { } p { - position: absolute; font-size: .75rem; - color: #cccccc; + position: absolute; bottom: 1rem; + color: #cccccc; } p.left { @@ -128,12 +133,12 @@ p.left { } p.right { - left: 0; right: 0; + left: 0; @media screen and (min-width: 1400px) { - left: unset; right: 1rem; + left: unset; } } @@ -158,15 +163,15 @@ ul li { } .wrapper { + position: relative; + z-index: -1; display: flex; - justify-content: flex-end; align-items: center; + justify-content: flex-end; max-width: 2000px; - margin: 0 auto; height: 100vh; - position: relative; + margin: 0 auto; padding: 2rem; - z-index: -1; @media screen and (min-width: 1760px) { padding: 0 16rem; @@ -177,12 +182,12 @@ ul li { } .content { - margin-right: 0; width: 100%; + margin-right: 0; @media screen and (min-width: 1335px) { - margin-right: 1rem; width: auto; + margin-right: 1rem; } @media screen and (min-width: 1400px) { @@ -203,10 +208,10 @@ ul li { } img { + z-index: -1; width: 150px; - border-radius: 100%; border: 5px solid #3e9e91; - z-index: -1; + border-radius: 100%; @media screen and (min-width: 812px) { width: 100px; @@ -217,16 +222,16 @@ ul li { } @media screen and (min-width: 1336px) { + font-size: 8rem; position: absolute; - width: 100%; top: 5px; - -webkit-transform-style: preserve-3d; - border: none; - border-radius: unset; + left: 3rem; display: block; - font-size: 8rem; + width: 100%; max-width: 600px; - left: 3rem; + border: none; + border-radius: unset; + -webkit-transform-style: preserve-3d; } @media screen and (min-width: 1400px) { diff --git a/pages/writing.vue b/pages/writing.vue index 62f3a33..8bcb3e9 100644 --- a/pages/writing.vue +++ b/pages/writing.vue @@ -1,15 +1,21 @@