From 6554420410f398dab57c3d1ec9b139a0a42fbee1 Mon Sep 17 00:00:00 2001 From: "Mr. Singleton" Date: Tue, 27 Feb 2024 16:41:32 -0500 Subject: [PATCH] Added Drinkery sections --- functions/src/groqQueries.ts | 8 + public/index.html | 2 +- sanityIo/schemas/HolidayHeadlineSection.js | 54 + sanityIo/schemas/contentContainer.js | 5 + sanityIo/schemas/homePage.js | 8 + sanityIo/schemas/menuContainer.js | 10 + sanityIo/schemas/mui/MuiTypography.js | 2 + sanityIo/schemas/schema.js | 17 + sanityIo/schemas/sections/HeaderSection.js | 5 + .../sections/drinkery/DrinkeryAlbumItem.js | 46 + .../sections/drinkery/DrinkeryAlbumSection.js | 42 + .../drinkery/DrinkeryOtherSideSection.js | 45 + .../drinkery/DrinkerySpecialsSection.js | 66 + .../sections/drinkery/drinkerySpecial.js | 35 + .../sections/drinkery/scheduleEntry.js | 32 + .../sections/drinkery/scheduleGroup.js | 18 + .../schemas/sections/web-dev/FooterSection.js | 7 +- sanityIo/schemas/team/DrinkeryTeamMember.js | 55 + sanityIo/schemas/team/DrinkeryTeamPage.js | 38 + src/App.tsx | 9 + .../firebase/FirebaseAnalyticsClient.tsx | 19 +- src/common/sanityIo/Types.ts | 10 +- src/common/sanityIo/groqQueries.ts | 8 + .../BlockContentLayoutContainer.tsx | 55 +- src/components/BlockContentTypes.ts | 80 + .../HeaderBlockContentLayoutContainer.tsx | 4 +- .../animated/AnimatedAboutUsSection.tsx | 2 +- .../HolidayHeadlineSection.tsx | 53 + .../mackenzies-mind/footer/Footer.tsx | 6 +- .../footer/FooterMenuContainer.tsx | 105 +- .../footer/FooterMenuGroup.tsx | 23 +- .../mackenzies-mind/header/Header.tsx | 22 +- .../mackenzies-mind/pages/PageLayout.tsx | 15 +- .../the-drinkery/TheDrinkeryAlbumSection.tsx | 148 + .../TheDrinkeryOtherSideSection.tsx | 106 + .../the-drinkery/TheDrinkerySpecials.tsx | 173 +- .../the-drinkery/TheDrinkeryStaffSection.tsx | 70 + .../templates/the-drinkery/TheOtherSide.tsx | 147 - .../the-drinkery/TheOtherSideLogo.tsx | 2 +- .../the-drinkery/{ => dont-need}/Drinkery.png | Bin .../Shutterstock_1025370412.png | Bin .../{ => dont-need}/ashboy-drinkery.jpg | Bin .../{ => dont-need}/drinkery-background.jpg | Bin .../{ => dont-need}/drinkery-logo.png | Bin .../{ => dont-need}/jt-drinkery.jpg | Bin .../shutterstock_665407219.jpg | Bin src/stories/data/DrinkeryAlbumSectionData.ts | 400 +++ src/stories/data/DrinkeryFooterData.ts | 48 + src/stories/data/DrinkeryHeaderData.ts | 34 + src/stories/data/DrinkeryHomePageData.ts | 2435 +++++++++++++++++ .../data/DrinkerySpecialsSectionData.ts | 22 + src/stories/data/DrinkeryStaffSectionData.ts | 52 + .../data/DrinkeryTheOtherSideSectionData.ts | 9 + src/stories/data/DrinkeryThemeData.ts | 168 ++ .../data/HolidayHeadlineSectionData.ts | 14 + .../DrinkeryAlbumSection.stories.tsx | 39 + .../the-drinkery/DrinkeryFooter.stories.tsx | 36 + .../the-drinkery/DrinkeryHeader.stories.tsx | 32 + .../DrinkeryOtherSideSection.stories.tsx | 36 + .../DrinkerySpecialsSection.stories.tsx | 37 + .../DrinkeryStaffSection.stories.tsx | 41 + .../HolidayHeadlineSection.stories.tsx | 41 + 62 files changed, 4677 insertions(+), 319 deletions(-) create mode 100644 sanityIo/schemas/HolidayHeadlineSection.js create mode 100644 sanityIo/schemas/sections/drinkery/DrinkeryAlbumItem.js create mode 100644 sanityIo/schemas/sections/drinkery/DrinkeryAlbumSection.js create mode 100644 sanityIo/schemas/sections/drinkery/DrinkeryOtherSideSection.js create mode 100644 sanityIo/schemas/sections/drinkery/DrinkerySpecialsSection.js create mode 100644 sanityIo/schemas/sections/drinkery/drinkerySpecial.js create mode 100644 sanityIo/schemas/sections/drinkery/scheduleEntry.js create mode 100644 sanityIo/schemas/sections/drinkery/scheduleGroup.js create mode 100644 sanityIo/schemas/team/DrinkeryTeamMember.js create mode 100644 sanityIo/schemas/team/DrinkeryTeamPage.js create mode 100644 src/components/holiday-headline-section/HolidayHeadlineSection.tsx create mode 100644 src/components/templates/the-drinkery/TheDrinkeryAlbumSection.tsx create mode 100644 src/components/templates/the-drinkery/TheDrinkeryOtherSideSection.tsx create mode 100644 src/components/templates/the-drinkery/TheDrinkeryStaffSection.tsx delete mode 100644 src/components/templates/the-drinkery/TheOtherSide.tsx rename src/components/templates/the-drinkery/{ => dont-need}/Drinkery.png (100%) rename src/components/templates/the-drinkery/{ => dont-need}/Shutterstock_1025370412.png (100%) rename src/components/templates/the-drinkery/{ => dont-need}/ashboy-drinkery.jpg (100%) rename src/components/templates/the-drinkery/{ => dont-need}/drinkery-background.jpg (100%) rename src/components/templates/the-drinkery/{ => dont-need}/drinkery-logo.png (100%) rename src/components/templates/the-drinkery/{ => dont-need}/jt-drinkery.jpg (100%) rename src/components/templates/the-drinkery/{ => dont-need}/shutterstock_665407219.jpg (100%) create mode 100644 src/stories/data/DrinkeryAlbumSectionData.ts create mode 100644 src/stories/data/DrinkeryFooterData.ts create mode 100644 src/stories/data/DrinkeryHeaderData.ts create mode 100644 src/stories/data/DrinkeryHomePageData.ts create mode 100644 src/stories/data/DrinkerySpecialsSectionData.ts create mode 100644 src/stories/data/DrinkeryStaffSectionData.ts create mode 100644 src/stories/data/DrinkeryTheOtherSideSectionData.ts create mode 100644 src/stories/data/DrinkeryThemeData.ts create mode 100644 src/stories/data/HolidayHeadlineSectionData.ts create mode 100644 src/stories/the-drinkery/DrinkeryAlbumSection.stories.tsx create mode 100644 src/stories/the-drinkery/DrinkeryFooter.stories.tsx create mode 100644 src/stories/the-drinkery/DrinkeryHeader.stories.tsx create mode 100644 src/stories/the-drinkery/DrinkeryOtherSideSection.stories.tsx create mode 100644 src/stories/the-drinkery/DrinkerySpecialsSection.stories.tsx create mode 100644 src/stories/the-drinkery/DrinkeryStaffSection.stories.tsx create mode 100644 src/stories/the-drinkery/HolidayHeadlineSection.stories.tsx diff --git a/functions/src/groqQueries.ts b/functions/src/groqQueries.ts index 00b71a6b..e23fafe2 100644 --- a/functions/src/groqQueries.ts +++ b/functions/src/groqQueries.ts @@ -62,6 +62,13 @@ const HOMEPAGE = `_type, title, isUnderConstruction, releaseDate, + backgroundImageSrc{ + asset->{ + _id, + url, + altText + } + }, slug, description, businessCardImageSrc, @@ -127,6 +134,7 @@ const HOMEPAGE = `_type, "servicesList": servicesList[]->{ ${SERVICE} }, + "teamList": teamList[]->, "serviceAmenities": serviceAmenities[]->, "prosList": prosList[]->, "skillsets": skillsets[]->{ diff --git a/public/index.html b/public/index.html index 2fc2aa11..57d803c7 100644 --- a/public/index.html +++ b/public/index.html @@ -14,7 +14,7 @@ - diff --git a/sanityIo/schemas/HolidayHeadlineSection.js b/sanityIo/schemas/HolidayHeadlineSection.js new file mode 100644 index 00000000..5cd6f0f9 --- /dev/null +++ b/sanityIo/schemas/HolidayHeadlineSection.js @@ -0,0 +1,54 @@ +export default { + name: 'HolidayHeadlineSection', + title: "Holiday Headline Section", + type: 'document', + fields: [ + { + name: 'name', + title: 'Name', + type: 'string', + }, + { + name: 'slug', + title: 'Slug', + type: 'slug', + options: { + source: 'name', + maxLength: 96, + }, + }, + { + name: 'contentText', + title: 'Content Text', + type: 'text', + }, + { + name: 'contentSubtext', + title: 'Content Subtext', + type: 'text', + }, + { + name: 'holidayDate', + title: 'Holiday Date', + type: 'date', + }, + { + name: 'holidayIconLeft', + title: 'Holiday Icon Left', + type: 'image', + }, + { + name: 'holidayIconRight', + title: 'Holiday Icon Right', + type: 'image', + }, + ], + preview: { + select: { + title: 'name', + }, + }, +} + + + diff --git a/sanityIo/schemas/contentContainer.js b/sanityIo/schemas/contentContainer.js index 0761ac73..474230a1 100644 --- a/sanityIo/schemas/contentContainer.js +++ b/sanityIo/schemas/contentContainer.js @@ -246,6 +246,11 @@ export default { type: 'reference', to: [{type: 'cryptoInYourPocketSection'}] }, + {name: 'drinkerySpecialsSection', title: 'Drinkery Specials Section', type: 'reference', to: [{type: 'DrinkerySpecialsSection'}]}, + {name: 'drinkeryTeamSection', title: 'Drinkery Staff Section', type: 'reference', to: [{type: 'DrinkeryTeamSection'}]}, + {name: 'drinkeryOtherSideSection', title: 'Drinkery Other Side Section', type: 'reference', to: [{type: 'DrinkeryOtherSideSection'}]}, + {name: 'drinkeryAlbumSection', title: 'Drinkery Album Section', type: 'reference', to: [{type: 'DrinkeryAlbumSection'}]}, + {name: 'HolidayHeadlineSection', title: 'Holiday Headline Section', type: 'reference', to: [{type: 'HolidayHeadlineSection'}]} ] } ] diff --git a/sanityIo/schemas/homePage.js b/sanityIo/schemas/homePage.js index a2ab645a..41fc92ef 100644 --- a/sanityIo/schemas/homePage.js +++ b/sanityIo/schemas/homePage.js @@ -19,6 +19,14 @@ export default { hotspot: true, }, }, + { + name: 'backgroundImageSrc', + title: 'Entire Page Background Image', + type: 'image', + options: { + hotspot: true, + }, + }, { name: 'title', title: 'Title(Title in Browser Tab)', diff --git a/sanityIo/schemas/menuContainer.js b/sanityIo/schemas/menuContainer.js index 34df8d0a..f130b2e2 100644 --- a/sanityIo/schemas/menuContainer.js +++ b/sanityIo/schemas/menuContainer.js @@ -46,6 +46,16 @@ export default { title: 'Logo Accent Text', type: 'string', }, + { + name: 'isShowSocialMedia', + title: 'Show Social Media?', + type: 'boolean', + }, + { + name: 'isHideOverlay', + title: 'Lighten the background', + type: 'boolean', + }, { name: 'subMenus', title: 'Sub Menu', diff --git a/sanityIo/schemas/mui/MuiTypography.js b/sanityIo/schemas/mui/MuiTypography.js index 7115c715..a552573d 100644 --- a/sanityIo/schemas/mui/MuiTypography.js +++ b/sanityIo/schemas/mui/MuiTypography.js @@ -11,12 +11,14 @@ export default { type: "string", options: { list: [ {value: "Oswald", title: "Oswald"}, + {value: "Bitter", title: "Bitter"}, {value: "Inter", title: "Inter"}, {value: "Prompt", title: "Prompt"}, {value: "Raleway", title: "Raleway"}, {value: "Poppins", title: "Poppins"}, {value: "Monteserrat", title: "Monteserrat"}, {value: "Elaine Sans", title: "Elaine Sans"}, + {value: "Open Sans", title: "Open Sans"}, {value: "Covered By Your Grace", title: "Covered By Your Grace"}, ] } diff --git a/sanityIo/schemas/schema.js b/sanityIo/schemas/schema.js index 4291464c..58837e44 100644 --- a/sanityIo/schemas/schema.js +++ b/sanityIo/schemas/schema.js @@ -102,6 +102,14 @@ import Instruction from "./cocktail-flash-cards/Instruction"; import MixingGlass from "./cocktail-flash-cards/MixingGlass"; import FlashCardSection from "./cocktail-flash-cards/FlashCardSection"; import LiquorType from "./cocktail-flash-cards/LiquorType"; +import DrinkerySpecialsSection from "./sections/drinkery/DrinkerySpecialsSection"; +import DrinkeryOtherSideSection from "./sections/drinkery/DrinkeryOtherSideSection"; +import DrinkeryAlbumSection from "./sections/drinkery/DrinkeryAlbumSection"; +import DrinkeryAlbumItem from "./sections/drinkery/DrinkeryAlbumItem"; +import drinkeryTeamMember from "./team/DrinkeryTeamMember"; +import drinkeryTeamPage from "./team/DrinkeryTeamPage"; +import drinkerySpecial from "./sections/drinkery/drinkerySpecial"; +import HolidayHeadlineSection from "./HolidayHeadlineSection"; // Then we give our schema to the builder and provide the result to Sanity export default [ @@ -210,4 +218,13 @@ export default [ MixingGlass, FlashCardSection, LiquorType, + + DrinkerySpecialsSection, + drinkeryTeamMember, + drinkeryTeamPage, + drinkerySpecial, + DrinkeryOtherSideSection, + DrinkeryAlbumSection, + DrinkeryAlbumItem, + HolidayHeadlineSection, ] diff --git a/sanityIo/schemas/sections/HeaderSection.js b/sanityIo/schemas/sections/HeaderSection.js index f5b92800..b32a209b 100644 --- a/sanityIo/schemas/sections/HeaderSection.js +++ b/sanityIo/schemas/sections/HeaderSection.js @@ -15,6 +15,11 @@ export default { title: 'Is This Header Enhanced?', type: 'boolean', }, + { + name: 'isShowSocialMedia', + title: 'Show Social media buttons?', + type: 'boolean', + }, { name: 'ctaButtonText', title: 'CTA Button Text', diff --git a/sanityIo/schemas/sections/drinkery/DrinkeryAlbumItem.js b/sanityIo/schemas/sections/drinkery/DrinkeryAlbumItem.js new file mode 100644 index 00000000..ff4d4c2e --- /dev/null +++ b/sanityIo/schemas/sections/drinkery/DrinkeryAlbumItem.js @@ -0,0 +1,46 @@ +export default { + name: 'DrinkeryAlbumItem', + title: 'Drinkery Album Item', + type: 'object', + fields: [ + { + name: 'name', + title: 'Name', + type: 'string', + }, + { + name: 'imageSrc', + title: 'Src', + type: 'image', + }, + { + name: 'cols', + title: 'Columns', + type: 'string', + }, + { + name: 'title', + title: 'Title', + type: 'string', + }, +{ + name: 'subtitle', + title: 'Subtitle', + type: 'string', + }, + + ], + preview: { + select: { + title: 'title', + media: 'imageSrc', + cols:'cols' + }, + prepare(selection) { + const {cols} = selection + return Object.assign({}, selection, { + subtitle: cols, + }) + }, + }, +} diff --git a/sanityIo/schemas/sections/drinkery/DrinkeryAlbumSection.js b/sanityIo/schemas/sections/drinkery/DrinkeryAlbumSection.js new file mode 100644 index 00000000..40ef1a92 --- /dev/null +++ b/sanityIo/schemas/sections/drinkery/DrinkeryAlbumSection.js @@ -0,0 +1,42 @@ +export default { + name: 'DrinkeryAlbumSection', + title: 'Drinkery Album Section', + type: 'document', + fields: [ + { + name: 'name', + title: 'Name', + type: 'string', + }, + { + name: 'contentTitle', + title: 'Title', + type: 'string', + }, + { + name: 'contentText', + title: 'Content', + type: 'text', + }, + { + name: 'hashtags', + title: 'Hashtags', + type: 'array', + of: [{type:"string" + }] + }, + { + name: 'isLogo', + title: 'Show Logo in this section', + type: 'boolean', + }, + { + name: 'imageList', + title: 'Image List', + type: 'array', + of: [{type:"DrinkeryAlbumItem" + }] + }, + + ] +} diff --git a/sanityIo/schemas/sections/drinkery/DrinkeryOtherSideSection.js b/sanityIo/schemas/sections/drinkery/DrinkeryOtherSideSection.js new file mode 100644 index 00000000..41cead49 --- /dev/null +++ b/sanityIo/schemas/sections/drinkery/DrinkeryOtherSideSection.js @@ -0,0 +1,45 @@ +export default { + name: 'DrinkeryOtherSideSection', + title: 'Drinkery Other Side Section', + type: 'document', + fields: [ + { + name: 'name', + title: 'Name', + type: 'string', + }, + { + name: 'contentTitle', + title: 'Title', + type: 'string', + }, + { + name: 'description', + title: 'Description', + type: 'string', + }, + { + name: 'isLogo', + title: 'Show Logo in this section', + type: 'boolean', + }, + { + name: 'isShowMenu', + title: 'Show Menu in this section', + type: 'boolean', + }, + { + name: 'isLink', + title: 'Show the Link', + type: 'boolean', + }, + { + name: 'theLiquors', + title: 'Liquor Menu', + type: 'array', + of: [{type:"string" + }] + }, + + ] +} diff --git a/sanityIo/schemas/sections/drinkery/DrinkerySpecialsSection.js b/sanityIo/schemas/sections/drinkery/DrinkerySpecialsSection.js new file mode 100644 index 00000000..c9e9fb02 --- /dev/null +++ b/sanityIo/schemas/sections/drinkery/DrinkerySpecialsSection.js @@ -0,0 +1,66 @@ + +export default { + name: 'DrinkerySpecialsSection', + title: "Drinkey - Specials Section", + type: 'document', + fields: [ + { + name: 'name', + title: 'Name', + type: 'string', + }, + { + name: 'contentTitle', + title: 'Large Title', + type: 'string', + }, + { + name: 'imageSrc', + title: 'Image', + type: 'image', + options: { + hotspot: true, + }, + }, + { + name: 'imageSrcAltText', + title: 'Image Alt Text', + type: 'string' + }, + { + name: 'contentText', + title: 'Content Text', + type: 'text', + }, + { + name: 'disclaimer', + title: 'Disclaimer', + type: 'text', + }, + { + name: 'subTitle', + title: 'Small Title', + type: 'string', + }, + { + name: 'theSpecials', + title: 'specials', + type: 'array', + of: [{type:"drinkerySpecial" + }] + }, + // { + // name: 'ctaButtonText', + // title: 'CTA Button Text', + // type: 'string' + // }, + // { + // name: 'ctaButtonLink', + // title: 'CTA Button Link', + // type: 'string' + // } + ], +} + + + diff --git a/sanityIo/schemas/sections/drinkery/drinkerySpecial.js b/sanityIo/schemas/sections/drinkery/drinkerySpecial.js new file mode 100644 index 00000000..458910ca --- /dev/null +++ b/sanityIo/schemas/sections/drinkery/drinkerySpecial.js @@ -0,0 +1,35 @@ +export default { + name: 'drinkerySpecial', + title: 'Drinkery Special', + type: 'object', + fields: [ + { + name: 'name', + title: 'Name', + type: 'string', + }, + { + name: 'title', + title: 'Title', + type: 'string', + }, + { + name: 'content', + title: 'Content', + type: 'string', + }, + { + name: 'imageSrc', + title: 'Image', + type: 'image', + options: { + hotspot: true, + }, + }, + { + name: 'imageSrcAltText', + title: 'Image Alt Text', + type: 'string' + }, + ] +} diff --git a/sanityIo/schemas/sections/drinkery/scheduleEntry.js b/sanityIo/schemas/sections/drinkery/scheduleEntry.js new file mode 100644 index 00000000..7dfef749 --- /dev/null +++ b/sanityIo/schemas/sections/drinkery/scheduleEntry.js @@ -0,0 +1,32 @@ +export default { + name: 'scheduleEntry', + title: 'Schedule Entry', + type: 'object', + fields: [ + { + name: 'name', + title: 'Name', + type: 'string', + }, + { + name: 'dayName', + title: 'Day Name', + type: 'string', + }, + { + name: 'isClosed', + title: 'Is it closed', + type: 'boolean', + }, + { + name: 'startTime', + title: 'Start Time', + type: 'string', + }, + { + name: 'endTime', + title: 'End Time', + type: 'string', + }, + ] +} diff --git a/sanityIo/schemas/sections/drinkery/scheduleGroup.js b/sanityIo/schemas/sections/drinkery/scheduleGroup.js new file mode 100644 index 00000000..7be17105 --- /dev/null +++ b/sanityIo/schemas/sections/drinkery/scheduleGroup.js @@ -0,0 +1,18 @@ +export default { + name: 'scheduleGroup', + title: 'Schedule Group', + type: 'object', + fields: [ + { + name: 'name', + title: 'Name', + type: 'string', + }, + { + name: 'hoursOfOperation', + title: 'Hours of Operation', + type: "array", + of: [{type: "scheduleEntry"}] + }, + ] +} diff --git a/sanityIo/schemas/sections/web-dev/FooterSection.js b/sanityIo/schemas/sections/web-dev/FooterSection.js index 880f5c3b..5f9cb1c4 100644 --- a/sanityIo/schemas/sections/web-dev/FooterSection.js +++ b/sanityIo/schemas/sections/web-dev/FooterSection.js @@ -35,11 +35,16 @@ export default { title: 'Show Social Media Block', type: 'boolean', }, + { + name: 'isHideOverlay', + title: 'Lighten the background', + type: 'boolean', + }, { name: 'footerMenuRef', title: 'Footer Menu', type: 'reference', - to: [{type:'menuContainer'}] + to: [{type: 'menuContainer'}] }, ], preview: { diff --git a/sanityIo/schemas/team/DrinkeryTeamMember.js b/sanityIo/schemas/team/DrinkeryTeamMember.js new file mode 100644 index 00000000..fe49b586 --- /dev/null +++ b/sanityIo/schemas/team/DrinkeryTeamMember.js @@ -0,0 +1,55 @@ +export default { + name: 'DrinkeryTeamMember', + title: 'Drinkery Team Member', + type: 'document', + fields: [ + { + name: 'image', + title: 'Image', + type: 'image', + options: { + hotspot: true, + }, + }, + { + name: 'firstName', + title: 'First Name', + type: 'string', + }, + { + name: 'lastName', + title: 'Last Name', + type: 'string', + }, + { + name: 'homeCity', + title: 'Home City', + type: 'string', + }, + { + name: 'homeState', + title: 'Home State', + type: 'string', + }, + { + name: 'hobby', + title: 'Hobby', + type: 'string', + }, + { + name: 'title', + title: 'Title', + type: 'string', + }, + { + name: 'faveDrinkToMake', + title: 'Favorite Drink to make', + type: 'string', + }, + { + name: 'isEnabled', + title: 'Enabled?', + type: 'boolean', + }, + ], +}; diff --git a/sanityIo/schemas/team/DrinkeryTeamPage.js b/sanityIo/schemas/team/DrinkeryTeamPage.js new file mode 100644 index 00000000..caf833aa --- /dev/null +++ b/sanityIo/schemas/team/DrinkeryTeamPage.js @@ -0,0 +1,38 @@ + +export default { + name: 'DrinkeryTeamSection', + title: "Drinkery Team Section", + type: 'document', + fields: [ + { + name: 'name', + title: 'Name', + type: 'string', + }, + { + name: 'contentPreTitle', + title: 'Pre Title', + type: 'string', + }, + { + name: 'contentTitle', + title: 'Large Title', + type: 'string', + }, + { + name: 'contentTexts', + title: 'Content Text', + type: 'array', + of: [{type: 'text'}] + }, + { + name: 'teamList', + title: 'The Team', + type: 'array', + of: [{type: 'reference', to: {type: 'DrinkeryTeamMember'}}] + } + ] +} + + + diff --git a/src/App.tsx b/src/App.tsx index d102bd23..d3759e7c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -11,11 +11,20 @@ import SnackbarProvider from "./components/modal-context/SnackbarProvider"; import PageMux from "./components/templates/mackenzies-mind/pages/PageMux"; import CustomizedThemeProvider from "./components/customized-theme-provider/CustomizedThemeProvider"; import {queryClient} from "./queryClient"; +import firebaseAnalyticsClient from "./common/firebase/FirebaseAnalyticsClient"; function App() { const theme = useTheme() + React.useEffect(() => { + const windowUrl = window.location.search; + const params:any = new URLSearchParams(windowUrl); + + if(params.has('utm_source') || params.has('utm_medium') || params.has('utm_campaign') || params.has('utm_id')){ + firebaseAnalyticsClient.utmCodes(params.get('utm_source'), params.get('utm_medium'),params.get('utm_campaign'),params.get('utm_id')) + } + }, []) return ( diff --git a/src/common/firebase/FirebaseAnalyticsClient.tsx b/src/common/firebase/FirebaseAnalyticsClient.tsx index 87c01ada..76bc13d2 100644 --- a/src/common/firebase/FirebaseAnalyticsClient.tsx +++ b/src/common/firebase/FirebaseAnalyticsClient.tsx @@ -64,11 +64,28 @@ const qrCodeShown = (qrCodeValue: string, analyticsId: string) => { }); } +const albumImageClick = ( imageName: string, imageCaption: string, analyticsId:string) =>{ + utils.logEventWithData('album_image_clicked', { + analyticsId, + imageName, + imageCaption + }); +} +const utmCodes = (source:string, medium:string, campaign:string, id:string) =>{ + utils.logEventWithData('utm_codes_received', { + source, + medium, + campaign, + id + }); +} export default { analyticsPageView, ctaClick, reportVital, setAppUserId, amenityTooltipShown, - qrCodeShown + qrCodeShown, + albumImageClick, + utmCodes }; diff --git a/src/common/sanityIo/Types.ts b/src/common/sanityIo/Types.ts index e332c383..e3e04116 100644 --- a/src/common/sanityIo/Types.ts +++ b/src/common/sanityIo/Types.ts @@ -21,9 +21,9 @@ export declare type SanityColdLead = { export type SanityGroupScheduleEntry = { name: string, dayName: string, - isClosed: boolean, - startTime: string, - endTime: string + isClosed?: boolean, + startTime?: string, + endTime?: string } export type SanityGroupSchedule = { name: string, @@ -54,6 +54,7 @@ export type SanityTransformHwHomePage = { title?: string _id?: string description?: string + backgroundImageSrc?: SanityImageAsset bookAppointmentLink?: string bookAppointmentQrCode?: SanityImageSource imgSrc?: SanityImageSource @@ -241,6 +242,7 @@ export type SanityMenuGroup = { export type SanityMenuContainer = { title?: string, + backgroundColor?: string slug?: SanitySlug, displayText?: string, subMenus?: (SanityMenuGroup & SanityMenuItem)[] @@ -248,7 +250,9 @@ export type SanityMenuContainer = { logoText?: string logoAccentText?: string logoImageSrc?: SanityImageAsset + isShowSocialMedia?: boolean isSearch?: boolean + isHideOverlay?: boolean } export type SanityCocktailType = { diff --git a/src/common/sanityIo/groqQueries.ts b/src/common/sanityIo/groqQueries.ts index cecb85dc..8bcfe3cc 100644 --- a/src/common/sanityIo/groqQueries.ts +++ b/src/common/sanityIo/groqQueries.ts @@ -77,6 +77,13 @@ const HOMEPAGE = `_type, } } }, + backgroundImageSrc{ + asset->{ + _id, + url, + altText + } + }, bookAppointmentLink, bookAppointmentQrCode, website, @@ -107,6 +114,7 @@ const HOMEPAGE = `_type, "servicesList": servicesList[]->{ ${SERVICE} }, + "teamList": teamList[]->, "prosList": prosList[]->, "serviceAmenities": serviceAmenities[]->, "skillsets": skillsets[]->{ diff --git a/src/components/BlockContentLayoutContainer.tsx b/src/components/BlockContentLayoutContainer.tsx index d50734be..56719a6d 100644 --- a/src/components/BlockContentLayoutContainer.tsx +++ b/src/components/BlockContentLayoutContainer.tsx @@ -6,10 +6,10 @@ import {blockSerializers} from '../common/sanityIo/BlockContentRenderer' import { AnimatedAboutUsSectionType, AnimatedPortfolioSectionType, - AnimatedServicesSectionType, + AnimatedServicesSectionType, DrinkeryAlbumSectionType, DrinkeryOtherSideSectionType, DrinkerySpecialsSectionType, FlashCardSectionType, HeadlineCTASectionType, - HeroAnimatedContentSectionType, + HeroAnimatedContentSectionType, HolidayHeadlineSectionType, HowItWorksSectionType, MapSectionType, PortfolioSectionType, @@ -20,7 +20,7 @@ import { ResumeExperienceSectionType, ResumeFeedbackSectionType, ResumePortfolioSectionType, - ResumeSkillSectionType, + ResumeSkillSectionType, TeamSectionType, ThwAboutProprietorSectionType, ThwContactUsSectionType, ThwHeroContentSectionType, @@ -66,6 +66,11 @@ import HeadlineCTASection from "./animated/HeadlineCTASection"; import MapSection from "./animated/MapSection"; import WebDevPricingSection from "./templates/web-dev-site/WebDevPricingSection"; import FlashCardsContentSection from './templates/cocktail-flash-cards/FlashCardsContentSection' +import TheDrinkerySpecials from "./templates/the-drinkery/TheDrinkerySpecials"; +import TheDrinkeryStaffSection from "./templates/the-drinkery/TheDrinkeryStaffSection"; +import TheDrinkeryOtherSideSection from "./templates/the-drinkery/TheDrinkeryOtherSideSection"; +import TheDrinkeryAlbumSection from "./templates/the-drinkery/TheDrinkeryAlbumSection"; +import HolidayHeadlineSection from "./holiday-headline-section/HolidayHeadlineSection"; export type BlockContentLayoutContainerProps = { content?: any, @@ -495,6 +500,50 @@ const BlockContentLayoutContainer: FunctionComponent + case 'DrinkerySpecialsSection': + const drinkerySpecialsSection: DrinkerySpecialsSectionType = columnLayoutContainer + + return + <> + + + case 'DrinkeryTeamSection': + const drinkeryStaffSection: TeamSectionType = columnLayoutContainer + + return + <> + + + case 'DrinkeryOtherSideSection': + const drinkeryOtherSideSection: DrinkeryOtherSideSectionType = columnLayoutContainer + + return + <> + + + case 'DrinkeryAlbumSection': + const drinkeryAlbumSection: DrinkeryAlbumSectionType = columnLayoutContainer + + return + <> + + + case 'HolidayHeadlineSection': + const holidayHeadlineSection: HolidayHeadlineSectionType = columnLayoutContainer + + return + + default: return // return Undefined section {columnLayoutContainer._type} diff --git a/src/components/BlockContentTypes.ts b/src/components/BlockContentTypes.ts index 2947cb59..9bf0557d 100644 --- a/src/components/BlockContentTypes.ts +++ b/src/components/BlockContentTypes.ts @@ -627,6 +627,7 @@ export type HeaderSectionType = { title?: string name?: string isSearch?: boolean + isShowSocialMedia?: boolean isEnhanced?: boolean backgroundColor?: string ctaButtonText?: string @@ -686,4 +687,83 @@ export type FlashCardSectionType = { title: string isFlashCard?: boolean slug: SanitySlug +} + +export type DrinkerySpecialsSectionType = { + name: string + contentTitle: string + contentText: string + disclaimer: string + subTitle: string + theSpecials: DrinkerySpecialType[] + imageSrc?: SanityImageAsset + imageSrcAltText: string +} + +export type TeamSectionType = { + name: string + contentPretitle?: string + contentTitle: string + contentTexts?: string[], + teamList: TeamMember[], +} + +export type DrinkeryOtherSideSectionType = { + name: string + contentPretitle?: string + contentTitle: string + isLink?: boolean + isShowMenu?: boolean + description: string + isLogo?: boolean + theLiquors?: string[] + // contentTexts: string[], + // teamList: TeamMember[], +} +export type DrinkeryPhotoType = { + imageSrc?: SanityImageAsset + cols?: string + title: string + subtitle: string +} + +export type DrinkeryAlbumSectionType = { + name: string + isLogo?:boolean + contentPretitle?: string + hashtags:string[] + contentTitle: string + contentText: string + imageList: DrinkeryPhotoType[] + // contentTexts: string[], + // teamList: TeamMember[], +} + +export type TeamMember = { + image?: SanityImageAsset + title: string + firstName: string + lastName?: string + isEnabled: boolean + homeCity?:string + homeState?:string + hobby?:string + faveDrinkToMake?:string +} + +export type DrinkerySpecialType = { + name: string + title: string + content: string + imageSrc?: SanityImageAsset +} + +export type HolidayHeadlineSectionType = { + name: string + slug: SanitySlug + contentText: string + contentSubtext: string + holidayDate: Date | string + holidayIconLeft?: SanityImageAsset + holidayIconRight?: SanityImageAsset } \ No newline at end of file diff --git a/src/components/HeaderBlockContentLayoutContainer.tsx b/src/components/HeaderBlockContentLayoutContainer.tsx index 2cf4e36d..46851062 100644 --- a/src/components/HeaderBlockContentLayoutContainer.tsx +++ b/src/components/HeaderBlockContentLayoutContainer.tsx @@ -11,6 +11,7 @@ import WebDevSiteTheme from "../theme/WebDevSiteTheme"; import EnhancedHeader from "./templates/mackenzies-mind/header/EnhancedHeader"; import CustomizedThemeContext from "./customized-theme-provider/CustomizedThemeContext"; import {convertToHexCode} from "../theme/common/ColorPalette"; +import PageContext from "./page-context/PageContext"; export type HeaderBlockContentLayoutContainerProps = { content?: any, @@ -21,6 +22,7 @@ const HeaderBlockContentLayoutContainer: FunctionComponent(false) React.useEffect(() => { @@ -98,7 +100,7 @@ const HeaderBlockContentLayoutContainer: FunctionComponent { showBasicHeader || !header.isEnhanced ? -
: } diff --git a/src/components/animated/AnimatedAboutUsSection.tsx b/src/components/animated/AnimatedAboutUsSection.tsx index 3fde580b..6d98ec23 100644 --- a/src/components/animated/AnimatedAboutUsSection.tsx +++ b/src/components/animated/AnimatedAboutUsSection.tsx @@ -145,7 +145,7 @@ const AnimatedAboutUsSection: FunctionComponent = (props) => { + src={(props.sectionData?.servicesImageSrcArr[0] ? urlFor(props.sectionData?.servicesImageSrcArr[0]).url() : imagePlaceholderClient.placeholderOrImage(props.sectionData?.servicesImageSrcArr[0], 485, 356)) ?? ""}/> } diff --git a/src/components/holiday-headline-section/HolidayHeadlineSection.tsx b/src/components/holiday-headline-section/HolidayHeadlineSection.tsx new file mode 100644 index 00000000..50b20381 --- /dev/null +++ b/src/components/holiday-headline-section/HolidayHeadlineSection.tsx @@ -0,0 +1,53 @@ +import React, {FunctionComponent} from 'react' +import {HolidayHeadlineSectionType} from "../BlockContentTypes"; +import {urlFor} from "../block-content-ui/static-pages/cmsStaticPagesClient"; +import makeStyles from "@mui/styles/makeStyles"; +import { Theme } from '@mui/material/styles'; +import {Box, Grid, Typography, useTheme} from "@mui/material"; +import imagePlaceholderClient from "../../utils/imagePlaceholderClient"; + +export const useStyles = makeStyles((theme: Theme) => ({ + root: { + height: '430px', + // backgroundColor: theme.palette.background.paper, + paddingBottom: theme.spacing(5) + }, + contentBullets: { + // border: "1px solid black" + marginBottom: theme.spacing(5) + } +})) + + +interface IProps { + sectionData: HolidayHeadlineSectionType +} + +const HolidayHeadlineSection: FunctionComponent = (props) => { + const theme = useTheme() + return ( + + + {props.sectionData.slug.current + + + + + {props.sectionData.contentText} + + + + + {props.sectionData.contentSubtext} + + + + + {props.sectionData.slug.current + + + ) +} + +export default HolidayHeadlineSection \ No newline at end of file diff --git a/src/components/templates/mackenzies-mind/footer/Footer.tsx b/src/components/templates/mackenzies-mind/footer/Footer.tsx index 907fb60a..b9e474cd 100644 --- a/src/components/templates/mackenzies-mind/footer/Footer.tsx +++ b/src/components/templates/mackenzies-mind/footer/Footer.tsx @@ -81,9 +81,9 @@ const Footer: FunctionComponent = (props: IProps) => { - - {/*Makes the background image darker*/} - + {!props.pageFooter?.isHideOverlay? + {/*Makes the background image darker*/} + :<>} ) } diff --git a/src/components/templates/mackenzies-mind/footer/FooterMenuContainer.tsx b/src/components/templates/mackenzies-mind/footer/FooterMenuContainer.tsx index 518346a9..ff0483f4 100644 --- a/src/components/templates/mackenzies-mind/footer/FooterMenuContainer.tsx +++ b/src/components/templates/mackenzies-mind/footer/FooterMenuContainer.tsx @@ -8,15 +8,13 @@ import MailTo from "../../../mail-to/MailTo"; import Logo from "../../../logo/Logo"; import AlternatingText from "../../../logo/AlternatingText"; import SocialMediaBlock from "../../my-digital-resume/social-media-block/SocialMediaBlock"; -import {urlFor} from "../../../block-content-ui/static-pages/cmsStaticPagesClient"; -import {SanityImageAsset} from "../../../BlockContentTypes"; import {COLORS, convertToHexCode} from "../../../../theme/common/ColorPalette"; interface IProps { pageFooterMenu?: SanityMenuContainer updateIsLoading?: (value: boolean) => void - isSocialMediaBlock?:boolean - backgroundColor?:string + isSocialMediaBlock?: boolean + backgroundColor?: string } const FooterMenuContainer: FunctionComponent = (props: IProps) => { @@ -27,6 +25,7 @@ const FooterMenuContainer: FunctionComponent = (props: IProps) => { const useStyles = makeStyles(({ root: { color: theme.palette.getContrastText(convertToHexCode(props.backgroundColor)), + backgroundColor: props.backgroundColor } })) const classes = useStyles(theme) @@ -45,26 +44,36 @@ const FooterMenuContainer: FunctionComponent = (props: IProps) => { borderLeft: `4px solid ${theme.palette.primary.main}`, backgroundColor: COLORS.TRANSPARENTERWHITE, borderRight: `4px solid ${theme.palette.primary.main}`, - } : { }} - justifyContent={mdDown?'center':'flex-start'} + } : {}} + justifyContent={mdDown ? 'center' : 'flex-start'} > { props.pageFooterMenu?.subMenus?.map((menuGroup: any, index: number) => { return ( - + ) }) } - + {props.pageFooterMenu?.logoImageSrc ? : } + {props.pageFooterMenu?.isShowSocialMedia ? + + : <>} = (props: IProps) => { + {pageContext.page?.businessContact?.hoursOfOperation ? + + + Hours + + { + pageContext.page?.businessContact?.hoursOfOperation?.map((location) => { + return + {location.name} + { + location.hoursOfOperation.map((hours) => { + return {hours.dayName}:   + { + hours.isClosed ? "closed" : + `${hours.startTime}-${hours.endTime}` + } + + }) + } + + }) + } + : <>} { - {!mdDown && - props.isSocialMediaBlock && - Social Media - } - - {mdDown && - props.isSocialMediaBlock && - + {!mdDown && + props.isSocialMediaBlock && Social Media } - { - props.isSocialMediaBlock && } - - } + + {mdDown && + props.isSocialMediaBlock && + + Social Media + } + { + props.isSocialMediaBlock && } + + } ) } diff --git a/src/components/templates/mackenzies-mind/footer/FooterMenuGroup.tsx b/src/components/templates/mackenzies-mind/footer/FooterMenuGroup.tsx index c94045eb..28ca4af1 100644 --- a/src/components/templates/mackenzies-mind/footer/FooterMenuGroup.tsx +++ b/src/components/templates/mackenzies-mind/footer/FooterMenuGroup.tsx @@ -5,6 +5,7 @@ import makeStyles from '@mui/styles/makeStyles'; import {Grid, Link, Typography, useMediaQuery, useTheme} from '@mui/material' import {SanityMenuGroup, SanityMenuItem} from "../../../../common/sanityIo/Types"; +import LoadingButton from "../../../loading-button/LoadingButton"; export const useStyles = makeStyles((theme: Theme) => ({ root: { @@ -57,6 +58,7 @@ const FooterMenuGroup: FunctionComponent = ({m const mdOnly = useMediaQuery(theme.breakpoints.only('sm')) const mdUp = useMediaQuery(theme.breakpoints.up('md')) + const mdDown = useMediaQuery(theme.breakpoints.down('md')) return ( @@ -70,25 +72,26 @@ const FooterMenuGroup: FunctionComponent = ({m menuGroup?.links && menuGroup.links.map((menuLink: any, index: any) => { return ( - - + {!menuLink.isContainedButton && !menuLink.isOutlinedButton ? + {menuLink.displayText} - + : + {menuLink.displayText}{menuLink.isContainedButton}{menuLink.isOutlinedButton} + } ); }) } { - menuItemContents && - - + menuItemContents && + {!menuItemContents.isContainedButton && !menuItemContents.isOutlinedButton ? + {menuItemContents.displayText} - + : + {menuItemContents.displayText} + } } {!menuGroupContents && !menuItemContents && <>} diff --git a/src/components/templates/mackenzies-mind/header/Header.tsx b/src/components/templates/mackenzies-mind/header/Header.tsx index 0bd994b5..187bc9fd 100644 --- a/src/components/templates/mackenzies-mind/header/Header.tsx +++ b/src/components/templates/mackenzies-mind/header/Header.tsx @@ -3,8 +3,8 @@ import {Box, Grid, IconButton, Modal, useMediaQuery, useTheme} from '@mui/materi import MainMenu from "./MainMenu"; import FilteredMenuItems from "../../../filtered-menu-items/FilteredMenuItems"; import Logo from "../../../logo/Logo"; -import {SanityMenuContainer} from "../../../../common/sanityIo/Types"; -import {Close, Search} from "@mui/icons-material"; +import {SanityBusinessContact, SanityMenuContainer} from "../../../../common/sanityIo/Types"; +import {Close, Facebook, Instagram, Search, Twitter} from "@mui/icons-material"; import FullTextSearch from "./FullTextSearch"; import AppBarWrapper from './AppBarWrapper'; import {COLORS} from "../../../../theme/common/ColorPalette"; @@ -29,6 +29,7 @@ export const useStyles = makeStyles((theme: Theme) => ({ export type HeaderProps = { pageHeader?: SanityMenuContainer + businessContact?: SanityBusinessContact isAppBar?: boolean isSearch?: boolean updateIsLoading?: (value: boolean) => void @@ -40,6 +41,7 @@ const Header: FunctionComponent = (props) => { const classes = useStyles() const theme = useTheme() + const xsDown = useMediaQuery(theme.breakpoints.down('xs')) const mdDown = useMediaQuery(theme.breakpoints.down('md')) const [isSearchOpen, setIsSearchOpen] = React.useState(false) @@ -49,8 +51,20 @@ const Header: FunctionComponent = (props) => { - + + + + {props.pageHeader.isShowSocialMedia ? + + + + :<>} diff --git a/src/components/templates/mackenzies-mind/pages/PageLayout.tsx b/src/components/templates/mackenzies-mind/pages/PageLayout.tsx index d85a13a1..c483c5f1 100644 --- a/src/components/templates/mackenzies-mind/pages/PageLayout.tsx +++ b/src/components/templates/mackenzies-mind/pages/PageLayout.tsx @@ -1,5 +1,5 @@ import React, {FunctionComponent} from 'react' -import {Grid, Link, useTheme} from '@mui/material' +import {Grid, Link, useMediaQuery, useTheme} from '@mui/material' import {SanityTransformHwHomePage} from "../../../../common/sanityIo/Types"; import BlockContentLayoutContainer from "../../../BlockContentLayoutContainer"; import firebaseAnalyticsClient from "../../../../common/firebase/FirebaseAnalyticsClient"; @@ -7,6 +7,9 @@ import {useLocation} from "react-router"; import HeaderBlockContentLayoutContainer from "../../../HeaderBlockContentLayoutContainer"; import FooterBlockContentLayoutContainer from "../../../FooterBlockContentLayoutContainer"; import BusinessCard from "../../../BusinessCard"; +import useCustomStyles from "./Styles"; +import clsx from "clsx"; +import {urlFor} from "../../../block-content-ui/static-pages/cmsStaticPagesClient"; interface IProps { homePage: SanityTransformHwHomePage @@ -15,7 +18,9 @@ interface IProps { const PageLayout: FunctionComponent = (props: IProps) => { const location = useLocation(); const theme = useTheme() + const classes = useCustomStyles({bgImage: urlFor(props.homePage.backgroundImageSrc ?? "")}) + const xsDown = useMediaQuery(theme.breakpoints.down('xs')) React.useEffect(() => { props.homePage.title && firebaseAnalyticsClient.analyticsPageView( location.pathname, @@ -39,14 +44,18 @@ const PageLayout: FunctionComponent = (props: IProps) => { content={props.homePage.headerContent.content}/> } - + + { - props.homePage.pageContent && + props.homePage.pageContent && } + {props.homePage.backgroundImageSrc ? + :<>} {props.homePage.footerContent && diff --git a/src/components/templates/the-drinkery/TheDrinkeryAlbumSection.tsx b/src/components/templates/the-drinkery/TheDrinkeryAlbumSection.tsx new file mode 100644 index 00000000..1d29d420 --- /dev/null +++ b/src/components/templates/the-drinkery/TheDrinkeryAlbumSection.tsx @@ -0,0 +1,148 @@ +import React, {FunctionComponent, useContext} from 'react' +import { + Dialog, + DialogTitle, + Grid, + ImageList, + ImageListItem, + ImageListItemBar, + Link, + Typography, + useMediaQuery, + useTheme +} from '@mui/material' +import TheOtherSideLogo from "./TheOtherSideLogo"; +import {DrinkeryAlbumSectionType} from "../../BlockContentTypes"; +import makeStyles from "@mui/styles/makeStyles"; +import {Theme} from "@mui/material/styles"; +import PageContext from "../../page-context/PageContext"; +import {Facebook, Instagram} from "@mui/icons-material"; +import firebaseAnalyticsClient from "../../../common/firebase/FirebaseAnalyticsClient"; +import {urlFor} from "../../block-content-ui/static-pages/cmsStaticPagesClient"; +import imagePlaceholderClient from "../../../utils/imagePlaceholderClient"; + +interface IProps { + sectionData: DrinkeryAlbumSectionType +} + +export const useStyles = makeStyles((theme: Theme) => ({ + preroot: { + minHeight: '1400px', + // backgroundColor: "black", + color: "white", + paddingTop: 64, + paddingBottom: 64, + // paddingLeft: -theme.spacing(-5), + }, + imageList: { + maxWidth: "800px", + minWidth: "300px", + // height: 2000, + }, + icon: { + color: 'rgba(255, 255, 255, 0.54)', + }, +})) + + +const TheDrinkeryAlbumSection: FunctionComponent = (props) => { + const pageContext = useContext(PageContext) + + const theClasses = useStyles() + const theme = useTheme() + const xsDown = useMediaQuery(theme.breakpoints.only('xs')) + + const [open, setOpen] = React.useState(false); + const [selectedItem, setSelectedItem] = React.useState(null) + + const handleClickOpen = () => { + setOpen(true); + }; + + const handleClose = () => { + setOpen(false); + }; + + return ( + + {props.sectionData.isLogo && + + } + + + {props.sectionData.contentTitle} + + + {props.sectionData.contentText} + + + + + Tags & Hashtags + + + + {pageContext.page?.businessContact?.instagram} + + + {pageContext.page?.businessContact?.facebook} + + + + + { + props.sectionData.hashtags?.map((tag,index)=> {tag} ) + } + + + + + + + + + {props.sectionData.imageList.map((item, index) => ( + { + firebaseAnalyticsClient.albumImageClick(item.title, item.subtitle, pageContext.analyticsId || "no-id") + setSelectedItem(item) + handleClickOpen() + }} style={{cursor: "pointer"}}> + {item.title}/ + {item.subtitle}} + + /> + + ))} + + handleClose()} onClose={handleClose} aria-labelledby="simple-dialog-title" + open={open}> + {selectedItem?.title}/ + {selectedItem?.title}{selectedItem?.subtitle} + + + + + ) +} + +export default TheDrinkeryAlbumSection \ No newline at end of file diff --git a/src/components/templates/the-drinkery/TheDrinkeryOtherSideSection.tsx b/src/components/templates/the-drinkery/TheDrinkeryOtherSideSection.tsx new file mode 100644 index 00000000..3f6dc5de --- /dev/null +++ b/src/components/templates/the-drinkery/TheDrinkeryOtherSideSection.tsx @@ -0,0 +1,106 @@ +import React, {FunctionComponent} from 'react' +import {Button, Grid, Typography, useTheme} from '@mui/material' +import clsx from "clsx"; +import useCustomStyles from "../mackenzies-mind/pages/Styles"; +import bgImage from "./dont-need/drinkery-background.jpg" +import TheOtherSideLogo from "./TheOtherSideLogo"; +import openDoorSign from './dont-need/Shutterstock_1025370412.png' +import {DrinkeryOtherSideSectionType} from "../../BlockContentTypes"; +import {Theme} from "@mui/material/styles"; +import makeStyles from '@mui/styles/makeStyles'; + +interface IProps { + sectionData: DrinkeryOtherSideSectionType +} + +export const useStyles = makeStyles((theme: Theme) => ({ + preroot: { + minHeight: '221px', + color: "white", + paddingTop: theme.spacing(9), + }, +})) + + +const TheDrinkeryOtherSideSection: FunctionComponent = (props) => { + const classes = useCustomStyles({bgImage: bgImage}) + const theClasses = useStyles() + const theme = useTheme() + + return ( + + + + + + + {props.sectionData.isLogo && + + } + + {props.sectionData.contentTitle} + + + + + + {props.sectionData.description} + + + {props.sectionData.isShowMenu && + + Spirit Menu + + } + {props.sectionData.isShowMenu && props.sectionData.theLiquors?.map((aLiquor) => + + {aLiquor} + + )} + + + + + + + + ) +} + +export default TheDrinkeryOtherSideSection \ No newline at end of file diff --git a/src/components/templates/the-drinkery/TheDrinkerySpecials.tsx b/src/components/templates/the-drinkery/TheDrinkerySpecials.tsx index fa94f860..47168805 100644 --- a/src/components/templates/the-drinkery/TheDrinkerySpecials.tsx +++ b/src/components/templates/the-drinkery/TheDrinkerySpecials.tsx @@ -1,139 +1,104 @@ import React, {FunctionComponent} from 'react' -import {Avatar, Grid, Link, Typography, useMediaQuery, useTheme} from '@mui/material' import clsx from "clsx"; -import {COLORS} from "../../../theme/common/ColorPalette"; -import CssFadeToColor from "../../css-fade-to-color/CssFadeToColor"; import useCustomStyles from "../mackenzies-mind/pages/Styles"; -import bgImage from "./drinkery-background.jpg" +import bgImage from "./dont-need/drinkery-background.jpg" import TheOtherSideLogo from "./TheOtherSideLogo"; -import openDoorSign from './Shutterstock_1025370412.png' -import ashboy from "./ashboy-drinkery.jpg"; -import jt from "./jt-drinkery.jpg"; +import {DrinkerySpecialsSectionType} from "../../BlockContentTypes"; +import makeStyles from "@mui/styles/makeStyles"; +import {Theme} from "@mui/material/styles"; +import {Grid, Typography, useTheme} from "@mui/material"; +import {urlFor} from "../../block-content-ui/static-pages/cmsStaticPagesClient"; +import imagePlaceholderClient from "../../../utils/imagePlaceholderClient"; interface IProps { email?: string + sectionData: DrinkerySpecialsSectionType } +export const useStyles = makeStyles((theme: Theme) => ({ + preroot: { + minHeight: '521px', + color: "white", + position: "relative", + padding: theme.spacing(9, 0) + }, +})) + const TheDrinkerySpecials: FunctionComponent = (props) => { const classes = useCustomStyles({bgImage: bgImage}) const theme = useTheme() - const smDown = useMediaQuery(theme.breakpoints.down('lg')) - const xsDown = useMediaQuery(theme.breakpoints.down('md')) + const theClasses = useStyles() return ( - - - - - + - - + + - Weekly Drink Specials + {props.sectionData?.imageSrcAltText}/ - (must mention qrcode) - - - - 2 for 1 Natty Boh + + + {props.sectionData?.contentText} + - - - Get Two Natty Bohs for the price of one. + + + + *{props.sectionData?.disclaimer} - - - Meet your Bartenders + {props.sectionData?.contentTitle} - - - - - - - - Tim - - - - - - - - - Dre - - - - - - - - Shaun - - + + {props.sectionData?.subTitle} - - - - - + { + props.sectionData?.theSpecials.map((specialData,index) => + - Checkout the Other Side! + {specialData.title} - - - - - - (click - to enter) - + + {specialData.content} - - - + ) + } - ); + ) } export default TheDrinkerySpecials \ No newline at end of file diff --git a/src/components/templates/the-drinkery/TheDrinkeryStaffSection.tsx b/src/components/templates/the-drinkery/TheDrinkeryStaffSection.tsx new file mode 100644 index 00000000..a54de547 --- /dev/null +++ b/src/components/templates/the-drinkery/TheDrinkeryStaffSection.tsx @@ -0,0 +1,70 @@ +import React, {FunctionComponent} from 'react' +import {Avatar, Grid, Theme, Typography, useTheme} from '@mui/material' +import clsx from "clsx"; +import useCustomStyles from "../mackenzies-mind/pages/Styles"; +// import bgImage from "./drinkery-background.jpg" +import {TeamSectionType} from "../../BlockContentTypes"; +import makeStyles from "@mui/styles/makeStyles"; +import imagePlaceholderClient from "../../../utils/imagePlaceholderClient"; + +interface IProps { + email?: string + sectionData: TeamSectionType +} + +export const useStyles = makeStyles((theme: Theme) => ({ + preroot: { + minHeight: '321px', + // backgroundColor: "black", + color:"white" + // paddingLeft: -theme.spacing(-5), + }, +})) + + +const TheDrinkeryStaffSection: FunctionComponent = (props) => { + // const classes = useCustomStyles({bgImage: bgImage}) + const classes = useCustomStyles({bgImage: undefined}) + const theClasses = useStyles() + const theme = useTheme() + + return ( + + {/**/} + {/**/} + {/**/} + + + + {props.sectionData.contentTitle} + + + {props.sectionData.teamList.map((teamMember, index)=> + + + + + {teamMember.title} + + )} + + + + + ) +} + +export default TheDrinkeryStaffSection \ No newline at end of file diff --git a/src/components/templates/the-drinkery/TheOtherSide.tsx b/src/components/templates/the-drinkery/TheOtherSide.tsx deleted file mode 100644 index 16e634f4..00000000 --- a/src/components/templates/the-drinkery/TheOtherSide.tsx +++ /dev/null @@ -1,147 +0,0 @@ -import React, {FunctionComponent} from 'react' -import {Avatar, Grid, Typography, useMediaQuery, useTheme} from '@mui/material' -import clsx from "clsx"; -import {COLORS} from "../../../theme/common/ColorPalette"; -import CssFadeToColor from "../../css-fade-to-color/CssFadeToColor"; -import useCustomStyles from "../mackenzies-mind/pages/Styles"; -import bgImage from "./drinkery-background.jpg" -import TheOtherSideLogo from "./TheOtherSideLogo"; -import openDoorSign from "./Shutterstock_1025370412.png"; -import ashboy from "./ashboy-drinkery.jpg"; -import jt from "./jt-drinkery.jpg"; - -interface IProps { - email?: string -} - -const TheOtherSide: FunctionComponent = (props) => { - const classes = useCustomStyles({bgImage: bgImage}) - const theme = useTheme() - const smDown = useMediaQuery(theme.breakpoints.down('lg')) - const xsDown = useMediaQuery(theme.breakpoints.down('md')) - - return ( - - - - - - - - - - - ...the Other Side - - - - - - - - - - - Bartenders - - - - - - - - - - Ashley - - - - - - - - - Terrell - - - - - - - - {/**/} - - {/* */} - {/* Wednesdays with Ashley*/} - {/* */} - {/* */} - {/* 7:30pm-12am*/} - {/* */} - {/**/} - - - - Thursdays with Terrell - - - 7:30pm-1am - - - - - - Fridays with Terrell - - - 7:30pm-1am - - - - - - Saturdays with Ashley - - - 7:30pm-1am - - - - - - Sundays with Terrell - - - 7:30pm-1am - - - - - - - - - ) -} - -export default TheOtherSide \ No newline at end of file diff --git a/src/components/templates/the-drinkery/TheOtherSideLogo.tsx b/src/components/templates/the-drinkery/TheOtherSideLogo.tsx index db93423f..22c35b92 100644 --- a/src/components/templates/the-drinkery/TheOtherSideLogo.tsx +++ b/src/components/templates/the-drinkery/TheOtherSideLogo.tsx @@ -3,7 +3,7 @@ import { Theme } from "@mui/material/styles"; import makeStyles from '@mui/styles/makeStyles'; import {Grid} from '@mui/material' import {SanityImageSource} from "@sanity/asset-utils"; -import logoImg from './drinkery-logo.png' +import logoImg from './dont-need/drinkery-logo.png' interface CssProps { diff --git a/src/components/templates/the-drinkery/Drinkery.png b/src/components/templates/the-drinkery/dont-need/Drinkery.png similarity index 100% rename from src/components/templates/the-drinkery/Drinkery.png rename to src/components/templates/the-drinkery/dont-need/Drinkery.png diff --git a/src/components/templates/the-drinkery/Shutterstock_1025370412.png b/src/components/templates/the-drinkery/dont-need/Shutterstock_1025370412.png similarity index 100% rename from src/components/templates/the-drinkery/Shutterstock_1025370412.png rename to src/components/templates/the-drinkery/dont-need/Shutterstock_1025370412.png diff --git a/src/components/templates/the-drinkery/ashboy-drinkery.jpg b/src/components/templates/the-drinkery/dont-need/ashboy-drinkery.jpg similarity index 100% rename from src/components/templates/the-drinkery/ashboy-drinkery.jpg rename to src/components/templates/the-drinkery/dont-need/ashboy-drinkery.jpg diff --git a/src/components/templates/the-drinkery/drinkery-background.jpg b/src/components/templates/the-drinkery/dont-need/drinkery-background.jpg similarity index 100% rename from src/components/templates/the-drinkery/drinkery-background.jpg rename to src/components/templates/the-drinkery/dont-need/drinkery-background.jpg diff --git a/src/components/templates/the-drinkery/drinkery-logo.png b/src/components/templates/the-drinkery/dont-need/drinkery-logo.png similarity index 100% rename from src/components/templates/the-drinkery/drinkery-logo.png rename to src/components/templates/the-drinkery/dont-need/drinkery-logo.png diff --git a/src/components/templates/the-drinkery/jt-drinkery.jpg b/src/components/templates/the-drinkery/dont-need/jt-drinkery.jpg similarity index 100% rename from src/components/templates/the-drinkery/jt-drinkery.jpg rename to src/components/templates/the-drinkery/dont-need/jt-drinkery.jpg diff --git a/src/components/templates/the-drinkery/shutterstock_665407219.jpg b/src/components/templates/the-drinkery/dont-need/shutterstock_665407219.jpg similarity index 100% rename from src/components/templates/the-drinkery/shutterstock_665407219.jpg rename to src/components/templates/the-drinkery/dont-need/shutterstock_665407219.jpg diff --git a/src/stories/data/DrinkeryAlbumSectionData.ts b/src/stories/data/DrinkeryAlbumSectionData.ts new file mode 100644 index 00000000..e3d0b246 --- /dev/null +++ b/src/stories/data/DrinkeryAlbumSectionData.ts @@ -0,0 +1,400 @@ +import {DrinkeryAlbumSectionType, DrinkerySpecialsSectionType} from "../../components/BlockContentTypes"; + +const drinkeryAlbumData: DrinkeryAlbumSectionType = { + "name": "Album", + "hashtags": [ + "#theDrinkery", + "#theDrinkeryBaltimore", + "#theOtherSideIsOpen" + ], + "contentTitle": "Album", + // "_updatedAt": "2023-09-28T21:49:26Z", + // "_rev": "96KGCxwu1RXSraGlp6T4bE", + // "_createdAt": "2023-08-15T15:47:52Z", + "contentText": "A glimpse inside the Drinkery. If you want to be featured in our album use the tags & hashtags below. We will select the photos from tagged posts.", + "imageList": [ + { + // "name": "First", + // "_key": "1b0628bf1556", + "title": "Balloon Arch", + "cols": "2", + "subtitle": "Pride 2022", + // "_type": "DrinkeryAlbumItem" + }, + { + "title": "Terrell the Bartender", + "subtitle": "...on the Other Side", + // "_type": "DrinkeryAlbumItem", + // "name": "Terrell", + // "_key": "a06b30c93b53" + }, + { + "subtitle": "Ashboy on the other side of the Drinkery", + // "_type": "DrinkeryAlbumItem", + // "name": "Ashley", + // "_key": "ebfb58c735ab", + "title": "Ashley The Bartender" + }, + { + "cols": "2", + "subtitle": "Pride 2023", + // "_type": "DrinkeryAlbumItem", + // "name": "Drinkery pride front 2", + // "_key": "b6324bbb9082", + "title": "Drinkery pride front" + }, + { + "title": "Terrell with Strawberry Lemonade", + "subtitle": "Bartender on the other side", + // "_type": "DrinkeryAlbumItem", + // "name": "Me and strawberry lemonade", + // "_key": "9b759f219b49" + }, + { + "subtitle": "Premium drinks on the other side of the Drinkery", + // "_type": "DrinkeryAlbumItem", + // "name": "glases", + // "_key": "45bac5e5b196", + "title": "Lots of Drinks" + }, + { + // "_key": "27195acc6abe", + "title": "Appletini", + "subtitle": "Big Ass'd Appletini", + // "_type": "DrinkeryAlbumItem", + // "name": "Appletini", + }, + { + "subtitle": "Absolut Citron, Triple Sec, Lemon Juice", + // "_type": "DrinkeryAlbumItem", + // "name": "lemon drop shooter", + // "_key": "7eae1c6cfb75", + "title": "Lemon Drop Shooter" + }, + { + "title": "Lemon Drop Martini", + "cols": "2", + "subtitle": "Grey Goose Citron, Triple Sec, Lemon Juice", + // "_type": "DrinkeryAlbumItem", + // "name": "lemon drop", + // "_key": "2cce8c94dc96" + }, + { + "subtitle": "...on the other side", + // "_type": "DrinkeryAlbumItem", + // "name": "old fashioned", + // "_key": "b3449abe04f6", + "title": "Bulleit Old Fashioned" + }, + { + // "_key": "6584d61ca1f2", + "title": "Electric Lemonade", + "subtitle": "Tito's, Curacao, Lemon Juice", + // "_type": "DrinkeryAlbumItem", + // "name": "ELectric Lemonade" + }, + { + // "name": "Spiked Shirley Temple", + // "_key": "cf096e3dd390", + "title": "Spiked Shirley Temple", + "subtitle": "Spiked with Absolut Citron", + // "_type": "DrinkeryAlbumItem" + }, + { + // "_key": "c4ce5526d323", + "title": "Tokyo Tea", + "subtitle": "on the other side", + // "_type": "DrinkeryAlbumItem", + // "name": "Tokyo Tea" + }, + { + "subtitle": "Tito's and Jose Gold Punch on the other side of the Drinkery", + // "_type": "DrinkeryAlbumItem", + // "name": "punches", + // "_key": "d63392aeecbd", + "title": "Homemade Punches (while supplies last)", + "cols": "2" + }, + { + "title": "Friends", + "subtitle": "...on the other side", + // "_type": "DrinkeryAlbumItem", + // "name": "CJ and Friends", + // "_key": "38d10c232277" + }, + { + // "name": "B and friend", + // "_key": "05aa0dffe7d2", + "title": "Friends at the Drinkery", + "subtitle": "...on the other side", + // "_type": "DrinkeryAlbumItem" + }, + { + "title": "Drinkery Front 2023 Pride", + "subtitle": "Pride 2023", + // "_type": "DrinkeryAlbumItem", + // "name": "Drinkery Front 2023 Pride", + // "_key": "f796e6f25815" + }, + { + // "_key": "462a5e6dc9e0", + "title": "Ashley", + "subtitle": "Bartender on the other side", + // "_type": "DrinkeryAlbumItem", + // "name": "Ashley" + }, + { + "cols": "2", + "subtitle": "Vodka Strawberry Lemonade", + // "_type": "DrinkeryAlbumItem", + // "name": "Strawberry Lemonade on the bar", + // "_key": "b64d6228dbda", + "title": "Strawberry Lemonade on the bar" + }, + { + "subtitle": "The Other Side is Open", + // "_type": "DrinkeryAlbumItem", + // "name": "Coaster", + // "_key": "5beadb776d24", + "title": "Drinkery Coasters", + "cols": "2" + }, + { + "subtitle": "Premium Liquor and Quiet Atmosphere", + // "_type": "DrinkeryAlbumItem", + // "name": "On the other side", + + // "_key": "ee95c0cbb769", + "title": "The Other Side" + }, + { + // "_key": "447d3b25fc9a", + "title": "Chillin on the other side", + "subtitle": "We outchea!", + // "_type": "DrinkeryAlbumItem", + // "name": "Terrell" + }, + { + "title": "Bartenders have Friends", + "subtitle": "Hanging out on the other side of the Drinkery", + // "_type": "DrinkeryAlbumItem", + // "name": "Me and CJ", + // "_key": "ca8bb9d0b3ac" + }, + { + // "name": "Chillin", + // "_key": "218c0f7b1435", + "title": "Wassup?!", + "subtitle": "…on the other side", + // "_type": "DrinkeryAlbumItem" + }, + { + // "name": "Sherray & Darrick", + // "_key": "dc1d3d0c24f1", + "title": "Old Friends", + "subtitle": "...on the other side", + // "_type": "DrinkeryAlbumItem" + }, + { + // "_type": "DrinkeryAlbumItem", + // "name": "Washington Apple", + // "_key": "179d67f5b7ab", + "title": "Washington Apple", + "subtitle": "Crown Apple, Cranberry and Lime" + }, + { + // "_key": "cece026c31a7", + "title": "Getting Right", + "subtitle": "...on the other side of the Drinkery", + // "_type": "DrinkeryAlbumItem", + // "name": "Missing in Action" + }, + { + "title": "Gamenite", + "subtitle": "“Convo and Chill” Card Game", + // "_type": "DrinkeryAlbumItem", + // "name": "Game nite", + // "_key": "5ce5be950c21" + }, + { + // "_type": "DrinkeryAlbumItem", + // "name": "Ussie", + // "_key": "002be8e9becf", + "title": "Ussie", + "cols": "2", + "subtitle": "...on the other side" + }, + { + // "name": "Group Shot", + // "_key": "bb4821e7c748", + "title": "Groups", + "cols": "2", + "subtitle": "...on the other Side of the Drinkery", + // "_type": "DrinkeryAlbumItem" + }, + { + // "name": "Pittsburgh Icon", + // "imageSrc": { + // "_type": "image", + // "asset": { + // "_ref": "image-e55e5905857d8e7ca1e2a47c40ff3bef1e5ac3b1-1123x1587-jpg", + // "_type": "reference" + // } + // }, + // "_key": "c1484376b354", + "title": "Pittsburgh visitors", + "subtitle": "Self reported Pittsburgh Icon", + // "_type": "DrinkeryAlbumItem" + }, + { + // "_type": "DrinkeryAlbumItem", + // "name": "Miami Vice", + // "_key": "1d0e13542190", + "title": "Miami Vice", + "subtitle": "Piña colada & Strawberry daquiri " + }, + { + // "_type": "DrinkeryAlbumItem", + // "name": "Hey Ashley", + // "_key": "4fcfeb7fb7f9", + "title": "Hey Ashley", + "subtitle": "Bartender duties on the other side of the Drinkery" + }, + { + "title": "Sean making drinks", + "subtitle": "Looks like a Drinkery Long Island", + // "_type": "DrinkeryAlbumItem", + // "name": "Sean making drinks", + // "imageSrc": { + // "_type": "image", + // "asset": { + // "_ref": "image-e9558df737fe9abab6280a7ab32040f9bbc6460b-1664x1664-jpg", + // "_type": "reference" + // } + // }, + // "_key": "081560f4cf51" + }, + { + // "name": "Jameson", + // "imageSrc": { + // "_type": "image", + // "asset": { + // "_ref": "image-27804c79bd269bed206ae07729b2e9b2730b145a-2160x2880-jpg", + // "_type": "reference" + // } + // }, + // "_key": "2b2bb2117890", + "title": "Jameson", + "cols": "2", + "subtitle": "…on the rocks", + // "_type": "DrinkeryAlbumItem" + }, + { + // "_key": "385d5d570d5f", + "title": "Sean making a Blue Hawaii", + "subtitle": "Malibu Rum and Pinapple with Curaçao", + // "_type": "DrinkeryAlbumItem", + // "name": "Sean making Blue Hawaii ", + // "imageSrc": { + // "_type": "image", + // "asset": { + // "_ref": "image-8e16e718f302382736a91105feb386d73c682741-1248x1248-jpg", + // "_type": "reference" + // } + // } + }, + { + // "name": "Jack lives here", + // "imageSrc": { + // "_type": "image", + // "asset": { + // "_ref": "image-619b5ceb75696248102acad66ac9f1b740b35f06-2160x2880-jpg", + // "_type": "reference" + // } + // }, + // "_key": "a9f410e62b63", + "title": "Jack Lives here at the Drinkery", + "subtitle": "…but y’all knew that already", + // "_type": "DrinkeryAlbumItem" + }, + { + // "imageSrc": { + // "_type": "image", + // "asset": { + // "_ref": "image-53f9893590b98059fedabdaf0bad7a23f648907d-2080x2080-jpg", + // "_type": "reference" + // } + // }, + // "_key": "47c005ee0974", + "title": "Fun on the other side of the drinkery", + "cols": "2", + "subtitle": "We laugh with you and at you on this side", + // "_type": "DrinkeryAlbumItem", + // "name": "Laughin on the other side " + }, + { + // "imageSrc": { + // "_type": "image", + // "asset": { + // "_ref": "image-cdc11dea33ac6b4ed7bfed4ef5d52dc3a745321c-2080x2080-jpg", + // "_type": "reference" + // } + // }, + // "_key": "206f5feee7af", + "title": "Front Bar", + "subtitle": "Just a view of the front bar.", + // "_type": "DrinkeryAlbumItem", + // "name": "Front bar" + }, + { + // "_type": "DrinkeryAlbumItem", + // "name": "Front of the house bartenders", + // "imageSrc": { + // "_type": "image", + // "asset": { + // "_ref": "image-32a4902aab34c8603ad41586688c09cda169e429-1664x1664-jpg", + // "_type": "reference" + // } + // }, + // "_key": "df19126d9f5b", + "title": "Front of the house Bartenders", + "cols": "2", + "subtitle": "Tim, Sean, and Dre" + }, + { + // "name": "The Drinkery front sign", + // "imageSrc": { + // "_type": "image", + // "asset": { + // "_ref": "image-90bde829bef89a4f97451920256ab71a9791e430-4032x3024-jpg", + // "_type": "reference" + // } + // }, + // "_key": "1a99eb7fe56d", + "title": "The Drinkery", + "cols": "2", + "subtitle": "When you see this sign you kno you are here", + // "_type": "DrinkeryAlbumItem" + }, + { + // "_key": "11e32eeba341", + "title": "Jack Daniels", + "subtitle": "Tennessee Whiskey", + // "_type": "DrinkeryAlbumItem", + // "name": "jd", + // "imageSrc": { + // "asset": { + // "_ref": "image-d71f5b59a176b7ad9e7da52903cd68210c3b717d-1080x1080-jpg", + // "_type": "reference" + // }, + // "_type": "image" + // } + } + ], + // "_id": "3990d94e-139f-46d6-8cf8-03ce66504061", + // "skillsets": null, + // "feedbackEntries": null, + // "portfolioEntries": null +} + +export default drinkeryAlbumData \ No newline at end of file diff --git a/src/stories/data/DrinkeryFooterData.ts b/src/stories/data/DrinkeryFooterData.ts new file mode 100644 index 00000000..3c9baf4a --- /dev/null +++ b/src/stories/data/DrinkeryFooterData.ts @@ -0,0 +1,48 @@ +import {HeaderSectionType, HolidayHeadlineSectionType} from "../../components/BlockContentTypes"; +import {SanityMenuContainer} from "../../common/sanityIo/Types"; + +const drinkeryHeaderData: SanityMenuContainer = { + "subMenus": [ + { + "links": [ + { + "_type": "menuItem", + "displayText": "Weekly Specials", + "url": "/the-drinkery/home", + }, + { + "url": "/the-drinkery/theOtherSide", + "_type": "menuItem", + "displayText": "The Other Side" + }, + { + "url": "/the-drinkery/album", + "_type": "menuItem", + "displayText": "Album" + }, + { + "url": "https://www.google.com/maps/place/The+Drinkery/@39.3002778,-76.6188889,15z/data=!4m8!3m7!1s0x89c804bd65c4e447:0xdbdf3901ca402f3!8m2!3d39.3002778!4d-76.6188889!9m1!1b1!16s%2Fg%2F1tksp9_s?entry=ttu", + "isOutlinedButton": true, + "_type": "menuItem", + "displayText": "Leave a Google Review" + } + ], + "title": "Quick Links", + "_type": "menuGroup", + "slug": { + "current": "quick-links", + "_type": "slug" + }, + } + ], + "title": "Footer", + logoText:"The Drinkery", + isShowSocialMedia:true, + isHideOverlay:true, + "slug": { + "current": "footer", + "_type": "slug" + } +} + +export default drinkeryHeaderData \ No newline at end of file diff --git a/src/stories/data/DrinkeryHeaderData.ts b/src/stories/data/DrinkeryHeaderData.ts new file mode 100644 index 00000000..be748c3d --- /dev/null +++ b/src/stories/data/DrinkeryHeaderData.ts @@ -0,0 +1,34 @@ +import {HeaderSectionType, HolidayHeadlineSectionType} from "../../components/BlockContentTypes"; +import {SanityMenuContainer} from "../../common/sanityIo/Types"; + +const drinkeryHeaderData: SanityMenuContainer = { + "slug": { + "current": "header", + "_type": "slug" + }, + logoText:"The Drinkery", + isShowSocialMedia: true, + "subMenus": [ + { + "displayText": "Weekly Specials", + "url": "/the-drinkery/home", + "title": "Home", + "_type": "menuItem" + }, + { + "displayText": "The Other Side", + "_type": "menuItem", + "url": "/the-drinkery/theOtherSide", + "title": "The Other Side", + }, + { + "_type": "menuItem", + "url": "/the-drinkery/album", + "title": "Album", + "displayText": "Album", + } + ], + "title": "Header" +} + +export default drinkeryHeaderData \ No newline at end of file diff --git a/src/stories/data/DrinkeryHomePageData.ts b/src/stories/data/DrinkeryHomePageData.ts new file mode 100644 index 00000000..4ae08a34 --- /dev/null +++ b/src/stories/data/DrinkeryHomePageData.ts @@ -0,0 +1,2435 @@ +import {SanityTransformHwHomePage} from "../../common/sanityIo/Types"; + +const homePageResumeData:SanityTransformHwHomePage = { + businessContact: { + // "github": null, + // "instagram": null, + "facebook": "kamikazenupe1911", + // "facebookIconSrc": null, + // "twitter": null, + // "twitterIconSrc": null, + "linkedIn": "Terrell-singleton", + // "instagramIconSrc": null, + "email": "terrell.singleton@gmail.com", + "twitter": "KamikazetheZ", + "address": "7300 Roselynn Lane, Clinton, MD 20735", + "instagram": "thehandsomestnerd", + "instagramIconSrc": undefined, + "phone": "443.992.2191", + "facebookIconSrc": undefined, + "twitterIconSrc": undefined, + "github": "tmanundercover", + hoursOfOperation:[ + { + "name": "Front Bar", + "hoursOfOperation": [ + { + "dayName": "Monday", + "isClosed": true, + "name": "Monday" + }, + { + "startTime": "4pm", + "endTime": "12am", + "dayName": "Tuesday & Wednesday", + "name": "Tu & Wed" + }, + { + "dayName": "Thursday - Sunday", + "name": "Thursday-Sunday", + "startTime": "4pm", + "endTime": "1am" + } + ], + }, +{ + "name": "Back Bar", + "hoursOfOperation": [ + { + "dayName": "Monday & Tuesday", + "isClosed": true, + "name": "Monday & Tue", + }, + { + "endTime": "12am", + "dayName": "Wednesday", + "name": "Wednesday", + "startTime": "7pm" + }, + { + "dayName": "Thursday - Sunday", + "name": "Thursday - Sun", + "startTime": "7pm", + "endTime": "1230am", + } +] +} +] + }, + "isUnderConstruction": undefined, + "structuredData": null, + "bookAppointmentQrCode": { + "_type": "image", + "asset": { + "_ref": "image-37f997f78afe2f056a8691e2d7cb33d5212417bc-450x450-png", + } + }, + "theme":{ + "title": "Digital Resume Theme", + // "_updatedAt": "2023-10-04T16:53:43Z", + // "_createdAt": "2023-10-04T13:34:16Z", + "breakpoints": { + "md": 980, + // "_type": "MuiBreakpoints", + "sm": 640, + "lg": 1160, + "xs": 0, + "xl": 1320 + }, + "colorPalette": { + // "name":"Digital Resume", + "disabledTextColor": "LIGHT_GRAY", + "defaultBackground": "WHITESMOKE", + "defaultPaperBackgroundColor": "DARKGRAY", + "primaryTextColor": "DARKGRAY", + // "_type": "MuiColorPalette", + "primaryColor": "RED", + "secondaryTextColor": "ALMOSTWHITE", + "secondaryColor": "ALMOSTWHITE" + }, + // "_id": "355113df-1886-46d6-8d8f-034bfb604924", + "slug": { + "current": "digital-resume-theme", + "_type": "slug" + }, + "typography": { + "fontFamily": [ + "Raleway", + "Oswald", + ], + // "_type": "MuiTypography", + // "title": "Oswald and Raleway" + }, + // "_rev": "46Ky6Oj1Dro85iJlEnmWLK", + // "_type": "MuiTheme" + }, + "isFabActivated": true, + "_type": "homePage", + // "releaseDate": undefined, + "description": "My name is James Terrell Singleton and I am a Web developer. This is my professional resume and portfolio. React.js software Developer. Javascript seems to dominate the projects I end up working on. Node.js and Typescript win for backend. Efficient at developing one page applications & websites. Prototypes for mobile apps and digital Resumes. \n\nhello@thehandsomestnerd.com\nhttps://terrellsingleton.com", + "title": "James Terrell Singleton - Software Engineer & Web Developer", + "footerContent": { + "content": [ + { + "footerMenuRef": { + "title": "Footer Menu", + "slug": { + "current": "footer-menu", + "_type": "slug" + }, + "displayText": null, + "subMenus": [ + { + "isContainedButton": null, + "title": "Quick Links", + "slug": null, + "links": [ + { + "modalRef": null, + "_type": "menuItem", + "displayText": "Skills", + "url": "#SKILLS", + "isOutlinedButton": null, + "isContainedButton": null, + "isModalButton": null + }, + { + "displayText": "Experience", + "url": "#EXPERIENCE", + "isOutlinedButton": null, + "isContainedButton": null, + "isModalButton": null, + "modalRef": null, + "_type": "menuItem" + }, + { + "url": "#EDUCATION", + "isOutlinedButton": null, + "isContainedButton": null, + "isModalButton": null, + "modalRef": null, + "_type": "menuItem", + "displayText": "Education" + }, + { + "_type": "menuItem", + "displayText": "Portfolio", + "url": "#PORTFOLIO", + "isOutlinedButton": null, + "isContainedButton": null, + "isModalButton": null, + "modalRef": null + }, + { + "_type": "menuItem", + "displayText": "Feedback", + "url": "#FEEDBACK", + "isOutlinedButton": null, + "isContainedButton": null, + "isModalButton": null, + "modalRef": null + }, + { + "_type": "menuItem", + "displayText": "Contact", + "url": "#CONTACT", + "isOutlinedButton": null, + "isContainedButton": null, + "isModalButton": null, + "modalRef": null + } + ], + "isOutlinedButton": null, + "_type": "menuGroup", + "menuGroupTitle": "Quick Links", + "displayText": null, + "url": null + }, + { + "links": [ + { + "isOutlinedButton": null, + "isContainedButton": null, + "isModalButton": null, + "modalRef": null, + "_type": "menuItem", + "displayText": "Meet with Me", + "url": "https://the-handsomest-nerd.square.site/" + }, + { + "_type": "menuItem", + "displayText": "Resume Download", + "url": "https://cdn.sanity.io/files/rhjxlvuj/development/12987619eb6c1d829e4de6346d19bd41f5d29d64.pdf?dl=James%20Terrell%20Singleton%20-%20Software%20Engineer%20-%20Resume.pdf", + "isOutlinedButton": null, + "isContainedButton": null, + "isModalButton": null, + "modalRef": null + } + ], + "url": null, + "isContainedButton": null, + "title": "About Me", + "_type": "menuGroup", + "slug": { + "current": "about-me", + "_type": "slug" + }, + "menuGroupTitle": "About Me", + "displayText": null, + "isOutlinedButton": null + } + ], + "logoImageSrc": null, + "logoImageAltText": null + }, + "_createdAt": "2022-12-25T19:29:29Z", + "_rev": "NCHsgHLcvkCT8vGIj9gBv4", + "_type": "FooterSection", + "name": "resume footer", + "_id": "82cf5a42-abcd-41c6-8c25-bac1e77770ba", + "_updatedAt": "2022-12-25T19:29:29Z" + } + ] + }, + "websiteQrCode": { + "_type": "image", + "asset": { + "_ref": "image-c3078e4a33d56fdd39f12d9aac70768102f59d55-450x450-png", + } + }, + "headerContent": { + "content": [ + { + "_type": "HeaderSection", + "name": "resume header", + "_id": "6a0be265-5830-4671-8ca3-b8d61aa8bf77", + "headerMenuRef": { + "title": "Header Menu", + "slug": { + "current": "header-menu", + "_type": "slug" + }, + "displayText": null, + "subMenus": [ + { + "displayText": "Skills", + "isOutlinedButton": null, + "isContainedButton": null, + "title": "Skills", + "_type": "menuItem", + "slug": null, + "menuGroupTitle": null, + "links": null, + "url": "#SKILLS" + }, + { + "menuGroupTitle": null, + "displayText": "Experience", + "url": "#EXPERIENCE", + "title": "Experience", + "_type": "menuItem", + "isOutlinedButton": null, + "isContainedButton": null, + "slug": null, + "links": null + }, + { + "isOutlinedButton": null, + "title": "Education", + "_type": "menuItem", + "displayText": "Education", + "url": "#EDUCATION", + "slug": null, + "menuGroupTitle": null, + "links": null, + "isContainedButton": null + }, + { + "menuGroupTitle": null, + "links": null, + "displayText": "Feedback", + "isOutlinedButton": null, + "slug": null, + "_type": "menuItem", + "url": "#FEEDBACK", + "isContainedButton": null, + "title": "Feedback" + }, + { + "_type": "menuItem", + "links": null, + "url": "#PORTFOLIO", + "isOutlinedButton": null, + "title": "Portfolio", + "slug": null, + "menuGroupTitle": null, + "displayText": "Portfolio", + "isContainedButton": null + }, + { + "slug": null, + "menuGroupTitle": null, + "url": "#CONTACT", + "title": "Contact", + "_type": "menuItem", + "links": null, + "displayText": "Contact", + "isOutlinedButton": null, + "isContainedButton": null + }, + { + "title": "Blog", + "slug": null, + "menuGroupTitle": null, + "links": null, + "displayText": "Blog", + "isContainedButton": null, + "_type": "menuItem", + "url": "http://medium.com/@thehandsomestnerd", + "isOutlinedButton": null + } + ], + "logoImageSrc": { + "_type": "image", + "asset": { + "_ref": "image-8ab18b13f9ad701d85c11f0f02ece6d4c42ad2ee-208x202-png", + "_type": "reference" + } + }, + "logoImageAltText": null + }, + "_updatedAt": "2022-12-25T15:18:39Z", + "_createdAt": "2022-12-25T15:18:39Z", + "_rev": "IiYi5XVNmR5WYQ23CNHdOb" + } + ] + }, + "pageContent": { + "content": [ + { + "educationExperiences": null, + "feedbackEntries": null, + "portfolioEntries": null, + "_type": "ResumeBioSection", + "serviceAmenities": null, + "cvFile": { + "uploadId": "h2e4VByPZeloQlrpNqBkbNodByWu7kLC", + "_type": "sanity.fileAsset", + "sha1hash": "12987619eb6c1d829e4de6346d19bd41f5d29d64", + "size": 92683, + "extension": "pdf", + "mimeType": "application/pdf", + "url": "https://cdn.sanity.io/files/rhjxlvuj/development/12987619eb6c1d829e4de6346d19bd41f5d29d64.pdf", + "assetId": "12987619eb6c1d829e4de6346d19bd41f5d29d64", + "_id": "file-12987619eb6c1d829e4de6346d19bd41f5d29d64-pdf", + "_updatedAt": "2022-12-01T21:53:17Z", + "originalFilename": "Resume James Terrell Singleton 2022.pdf", + "_rev": "YKkjAGOOflKrRktUk0DJLe", + "path": "files/rhjxlvuj/development/12987619eb6c1d829e4de6346d19bd41f5d29d64.pdf", + "_createdAt": "2022-12-01T21:53:17Z" + }, + "cvFileDownloadText": "Download CV", + "servicesList": null, + "experiences": null, + "_rev": "Bp455s9rtQ49wRO6vepGwJ", + "contactMeButtonTitle": "Contact Me", + "_id": "fa034d55-5704-45fa-8685-47fef3937af9", + "careerTitle": "Software Engineer", + "title": "James Terrell Singleton", + "resumeFile": { + "_createdAt": "2022-12-01T21:53:17Z", + "_id": "file-12987619eb6c1d829e4de6346d19bd41f5d29d64-pdf", + "originalFilename": "Resume James Terrell Singleton 2022.pdf", + "uploadId": "h2e4VByPZeloQlrpNqBkbNodByWu7kLC", + "mimeType": "application/pdf", + "url": "https://cdn.sanity.io/files/rhjxlvuj/development/12987619eb6c1d829e4de6346d19bd41f5d29d64.pdf", + "size": 92683, + "extension": "pdf", + "_type": "sanity.fileAsset", + "sha1hash": "12987619eb6c1d829e4de6346d19bd41f5d29d64", + "_rev": "YKkjAGOOflKrRktUk0DJLe", + "assetId": "12987619eb6c1d829e4de6346d19bd41f5d29d64", + "path": "files/rhjxlvuj/development/12987619eb6c1d829e4de6346d19bd41f5d29d64.pdf", + "_updatedAt": "2022-12-01T21:53:17Z" + }, + "introduction": "I am a Web Developer located in the Maryand, District of Columbia, and Virginia Metropolitan area. I currently work as a remote fullstack software engineer for Assembled Financial, located in Los Angeles, CA. I am looking to take on more work, to increase my skills as a Web Developer, and to make things that are great. I am open to relocation.", + "name": "James Terrell Singleton", + "_updatedAt": "2022-12-10T15:57:58Z", + "resumeFileDownloadText": "Download Resume", + "skillsets": null, + "mainImage": { + "_type": "image", + "asset": { + "_ref": "image-23de0e9fc21cb77dfc7b1c9ce8b684310a9d99a0-3007x2979-jpg", + "_type": "reference" + } + }, + "_createdAt": "2022-11-30T13:45:52Z" + }, + { + "_rev": "9LEoCS0NKqkxZjwObGZliL", + "cvFile": null, + "experiences": null, + "feedbackEntries": null, + "portfolioEntries": null, + "resumeFile": null, + "_updatedAt": "2022-12-07T19:49:26Z", + "name": "Terrell Singleton", + "_createdAt": "2022-11-30T18:44:32Z", + "servicesList": null, + "educationExperiences": null, + "title": "Skills", + "_type": "ResumeSkillSection", + "introduction": "I am inspired to create great work with people who are as passionate as I am about building something awesome.", + "serviceAmenities": null, + "skillsets": [ + { + "skills": [ + { + "_id": "59fe1d75-a35c-4a6c-8ecd-cf872791821b", + "name": "React.js", + "title": "React.js" + }, + { + "_id": "c460e246-cac2-456d-a86e-6310259c3193", + "name": "Node.js", + "title": "Node.js" + }, + { + "_id": "69995517-513a-41b7-a230-c7153af28916", + "name": "TypeScript", + "title": "TypeScript" + }, + { + "_id": "45f1b5d7-664d-4b03-858f-6cdc00fa9ce9", + "name": "Angular.js", + "title": "Angular.js" + }, + { + "_id": "c8cff374-d634-4948-a0cf-9cf0b4228010", + "name": "Ext.js", + "title": "Ext.js" + }, + { + "_id": "6836fb50-3871-4bfb-80f9-8cf8c4d6d78e", + "name": "JQuery", + "title": "JQuery" + }, + { + "_id": "23bbfc31-dd29-44c9-8025-2967edbbcbb2", + "name": "Bower", + "title": "Bower" + }, + { + "_id": "6c7b4405-dd5b-415a-9968-5896cbee44a3", + "name": "Grunt", + "title": "Grunt" + }, + { + "_id": "5a1e9762-1560-47b9-81ff-0cef770dffa8", + "name": "Highcharts", + "title": "Highcharts" + }, + { + "_id": "86c7022f-fbbe-4ebd-ab82-368685ab26ac", + "name": "Create React App", + "title": "Create React App(CRA)" + }, + { + "_id": "dec33886-0443-418a-a312-0a5149ca45d2", + "name": "LESS", + "title": "LESS" + }, + { + "_id": "6f53bfac-8982-4715-b55b-23ef2b373bf4", + "name": "SASS/SCSS", + "title": "SASS/SCSS" + }, + { + "_id": "54147ce8-e0ac-4219-947e-9c63c9f123a0", + "name": "Meteor", + "title": "Meteor" + }, + { + "_id": "21c47af1-b6d3-4707-9b4d-b7a8d18ca746", + "name": "Jasmine", + "title": "Jasmine" + } + ], + "_type": "ResumeSkillset", + "name": "Javascript", + "_key": "f7de97e70f37", + "title": "Javascript" + }, + { + "_key": "768c955ab0b2", + "title": "Other Programming Languages", + "skills": [ + { + "_id": "963f8182-5b33-4b56-9d92-112a02ebcf01", + "name": "Javascript", + "title": "Javascript" + }, + { + "_id": "5d30fefa-65fc-450a-a4b9-c42449245b9c", + "name": "Dart", + "title": "Dart" + }, + { + "_id": "ce4db41b-50cf-4bf7-b8b2-a71de88ee6ac", + "name": "Kotlin", + "title": "Kotlin" + }, + { + "_id": "41ab371e-4ce2-489f-99b8-4eb755d7ce6c", + "name": "PHP", + "title": "PHP" + }, + { + "_id": "3c945931-e968-4c34-8311-419697af70c1", + "name": "JAVA", + "title": "JAVA" + }, + { + "_id": "328069f7-b10b-4efa-8921-1348548e57b9", + "name": "C/C++", + "title": "C/C++" + }, + { + "_id": "64740cea-d644-4623-84a3-45553c693215", + "name": "Python", + "title": "Python" + }, + { + "_id": "5845d3d7-bf5e-4d55-9cd3-3c6de4304345", + "name": "Scala", + "title": "Scala" + }, + { + "_id": "928bb04f-a5e2-48cc-8209-3ceb96d2c3ca", + "name": "XML", + "title": "XML" + } + ], + "_type": "ResumeSkillset", + "name": "Programming Languages" + }, + { + "skills": [ + { + "_id": "9ccf38a9-c76c-4114-b85b-1c747d30fca9", + "name": "HTML 5.0", + "title": "HTML 5.0" + }, + { + "_id": "8bd0fd76-0302-4bb8-80b2-4624e7baed20", + "name": "CSS", + "title": "CSS" + }, + { + "_id": "390a755a-c417-49eb-93aa-e77a19838261", + "name": "Material-ui", + "title": "Material-ui" + }, + { + "_id": "d57e951c-77fc-48e9-a94e-2947147e985c", + "name": "Bootstrap", + "title": "Bootstrap" + }, + { + "_id": "239871af-49ea-4ecc-b66a-1e47abf45a28", + "name": "Spring & Spring MVC", + "title": "Spring & Spring MVC" + }, + { + "_id": "3aa76217-7d70-49e9-85e0-63098cab3394", + "name": "Wordpress", + "title": "Wordpress" + }, + { + "_id": "8a21dccf-7f90-4192-a5c9-f92aaf18b65b", + "name": "PrimeNG", + "title": "PrimeNG" + }, + { + "_id": "6f53bfac-8982-4715-b55b-23ef2b373bf4", + "name": "SASS/SCSS", + "title": "SASS/SCSS" + }, + { + "_id": "7cf5e4ed-724d-499a-a064-92e9b7454a9d", + "name": "JSP", + "title": "Java Server Pages(JSP)" + }, + { + "_id": "e967b76a-02a9-4dd8-b3a9-d85982e3ff65", + "name": "Adobe Creative Suite", + "title": "Adobe Creative Suite" + } + ], + "_type": "ResumeSkillset", + "name": "Web Development", + "_key": "5facdc1ab010", + "title": "Web Development" + }, + { + "_key": "1699109a2808", + "title": "Databases", + "skills": [ + { + "_id": "942a0e11-cecc-4fc9-a5de-440a9b742cd0", + "name": "PostgreSQL", + "title": "PostgreSQL" + }, + { + "_id": "c0b3f33f-241c-4ffe-ab3f-13c4b26c9a2f", + "name": "DynamoDB", + "title": "DynamoDB" + }, + { + "_id": "17ab710e-232d-44ca-a826-8b546defb22d", + "name": "MySQL", + "title": "MySQL" + }, + { + "_id": "392cf24d-acfa-414d-adbd-b58881d8e424", + "name": "MongoDB", + "title": "MongoDB" + }, + { + "_id": "14574afa-995f-432a-b277-0f6cedfdb52d", + "name": "Firebase: Firestore, Real-time Database", + "title": "Firebase: Firestore, Real-time Database" + } + ], + "_type": "ResumeSkillset", + "name": "Databases" + }, + { + "title": "Web Servers", + "skills": [ + { + "_id": "d1289590-6c6a-4100-a7ff-7f6346ccdd2d", + "name": "AWS", + "title": "AWS" + }, + { + "_id": "7b467c08-7dfe-4c33-b1f5-bd925522c87e", + "name": "GCP", + "title": "Google Cloud Platform(GCP)" + }, + { + "_id": "a5c8f986-90c0-492a-abe5-15fd9873e1b0", + "name": "Apache", + "title": "Apache" + }, + { + "_id": "5e332a22-a024-402e-8ac7-c52cc9122e46", + "name": "Tomcat", + "title": "Tomcat" + }, + { + "_id": "366c9403-a333-4a15-9f6a-ef99cd753c04", + "name": "nginx", + "title": "nginx" + } + ], + "_type": "ResumeSkillset", + "name": "Web Servers", + "_key": "fee068952dcd" + }, + { + "name": "IDEs", + "_key": "18c4fdeb4e86", + "title": "IDEs", + "skills": [ + { + "_id": "0b989b01-fb6d-4573-b64f-970d2d06759f", + "name": "IntelliJ IDEA & Webstorm", + "title": "IntelliJ IDEA & Webstorm" + }, + { + "_id": "9b806923-9970-43e9-8e06-b553f8279ad8", + "name": "Visual Studio Code", + "title": "Visual Studio Code" + }, + { + "_id": "fd9c8577-8e3a-43a0-ad48-49ed32cdcc89", + "name": "Netbeans", + "title": "Netbeans" + }, + { + "_id": "2e2c05c0-9e93-46fc-a012-a232a49eab41", + "name": "Eclipse", + "title": "Eclipse" + }, + { + "_id": "d4f6fb30-3141-47b1-8ec2-98ad401e7912", + "name": "Brackets", + "title": "Brackets" + } + ], + "_type": "ResumeSkillset" + }, + { + "_key": "6c8d60f6571a", + "title": "Version Control", + "skills": [ + { + "_id": "1d79280c-faa1-4c29-ae3d-730d066b4679", + "name": "Gitlab", + "title": "Gitlab" + }, + { + "_id": "3295ee78-4812-4aa3-9ddd-d5385e5399af", + "name": "Github", + "title": "Github" + }, + { + "_id": "93311d61-08f6-4cdb-b48d-1b449733895f", + "name": "Atlassian Suite: JIRA, Confluence, Crucible, BitBucket, Bamboo", + "title": "Atlassian Suite: JIRA, Confluence, Crucible, BitBucket, Bamboo" + }, + { + "_id": "cb5282ed-5e0e-4dac-b185-3e68e16e344c", + "name": "Trac", + "title": "Trac" + }, + { + "_id": "e272136c-558f-4661-a5b0-6a1b8a1e9896", + "name": "GForge", + "title": "GForge" + }, + { + "_id": "807df707-ea48-4368-855c-4d67e7102e18", + "name": "SVN", + "title": "SVN" + } + ], + "_type": "ResumeSkillset", + "name": "Version Control" + }, + { + "name": "Operating Systems", + "_key": "c65128fb5fc2", + "title": "Operating Systems", + "skills": [ + { + "_id": "e5b700e5-db74-4cde-9b8e-320cde78b81d", + "name": "MacOS", + "title": "MacOS" + }, + { + "_id": "1fe90adf-35ec-4fde-85bd-356dc50ba8d5", + "name": "Windows", + "title": "Windows" + }, + { + "_id": "b14a599f-3b67-4e39-9c23-accea63edfb1", + "name": "Linux", + "title": "Linux" + } + ], + "_type": "ResumeSkillset" + }, + { + "_key": "7fa36d9e1193", + "title": "Browsers", + "skills": [ + { + "_id": "0cf0b28f-26a2-4a4b-b492-4340908da0c8", + "name": "Cross-browser compatibility Chrome, Safari, Firefox", + "title": "Cross-browser compatibility Chrome, Safari, Firefox" + } + ], + "_type": "ResumeSkillset", + "name": "Browsers" + }, + { + "_key": "a6afd46f2543", + "title": "Utilities & Tools", + "skills": [ + { + "_id": "3d837a55-00fd-444b-b6cd-8a37eb97eea1", + "name": "Figma", + "title": "Figma" + }, + { + "_id": "2a659991-569f-4a95-bfe1-d1af655a7b83", + "name": "ImageMagick(cli)", + "title": "ImageMagick(cli)" + }, + { + "_id": "5c5e42c4-e156-4f7b-a766-2fab414680e3", + "name": "Docker", + "title": "Docker" + }, + { + "_id": "e35a2544-51d7-4db3-8e24-e86ce4f94b70", + "name": "Maven", + "title": "Maven" + }, + { + "_id": "55c7902b-2c73-4b10-b645-e06d61158404", + "name": "Ant", + "title": "Ant" + }, + { + "_id": "bb9f6407-98ec-4aee-acf3-d1b2b0db32f6", + "name": "Jenkins", + "title": "Jenkins" + }, + { + "_id": "4dc3d6c1-37c4-48c3-969e-20edbf29fb2e", + "name": "VMWare", + "title": "VMWare" + } + ], + "_type": "ResumeSkillset", + "name": "Utilities & Tools" + } + ], + "_id": "627bbab9-1326-4523-9842-c4c61adc9815" + }, + { + "serviceAmenities": null, + "resumeFile": null, + "_id": "d31b8756-45c3-422a-8859-4c9f509e2453", + "_rev": "z7EiK8inwybcbhSAyOYC8q", + "_updatedAt": "2022-12-01T13:00:47Z", + "introduction": "I partner with startups, organizations and Fortune 500 companies to build digital products that help clients overcome challenges and create lasting connections with people every day.", + "_type": "ResumeExperienceSection", + "educationExperiences": null, + "portfolioEntries": null, + "cvFile": null, + "name": "Experience", + "title": "Experience", + "experiences": [ + { + "_updatedAt": "2022-12-01T02:26:22Z", + "dateEnd": "2022-09-30", + "title": "Fullstack Software Engineer", + "locationState": "CA", + "skillsUsed": [ + { + "_updatedAt": "2022-11-30T18:51:44Z", + "_createdAt": "2022-11-30T18:51:44Z", + "_rev": "lhoXF04OR35CGYtnFgQAUI", + "_type": "ResumeSkill", + "name": "React.js", + "_id": "59fe1d75-a35c-4a6c-8ecd-cf872791821b", + "title": "React.js" + }, + { + "_type": "ResumeSkill", + "name": "Kotlin", + "_id": "ce4db41b-50cf-4bf7-b8b2-a71de88ee6ac", + "title": "Kotlin", + "_updatedAt": "2022-11-30T18:49:05Z", + "_createdAt": "2022-11-30T18:49:05Z", + "_rev": "z7EiK8inwybcbhSAyNI0za" + }, + { + "name": "Node.js", + "_id": "c460e246-cac2-456d-a86e-6310259c3193", + "title": "Node.js", + "_updatedAt": "2022-11-30T18:48:48Z", + "_createdAt": "2022-11-30T18:48:48Z", + "_rev": "lhoXF04OR35CGYtnFgPKO1", + "_type": "ResumeSkill" + }, + { + "_createdAt": "2022-11-30T23:53:30Z", + "_rev": "v53ZsDDD1bdWz9EKVgO33k", + "_type": "ResumeSkill", + "name": "Dart", + "_id": "5d30fefa-65fc-450a-a4b9-c42449245b9c", + "title": "Dart", + "_updatedAt": "2022-11-30T23:53:30Z" + }, + { + "_updatedAt": "2022-11-30T19:04:29Z", + "_createdAt": "2022-11-30T19:04:29Z", + "_rev": "lhoXF04OR35CGYtnFgTkx3", + "_type": "ResumeSkill", + "name": "AWS", + "_id": "d1289590-6c6a-4100-a7ff-7f6346ccdd2d", + "title": "AWS" + }, + { + "_id": "34326ced-0288-4b41-8199-38f53fe610a8", + "title": "Flutter", + "_updatedAt": "2022-11-30T19:23:07Z", + "_createdAt": "2022-11-30T19:23:07Z", + "_rev": "z7EiK8inwybcbhSAyNJxCa", + "_type": "ResumeSkill", + "name": "Flutter" + }, + { + "_type": "ResumeSkill", + "name": "Terraform", + "_id": "694fd35e-f1e6-47c8-bae6-f300b1f4c4ef", + "title": "Terraform", + "_updatedAt": "2022-12-01T02:24:52Z", + "_createdAt": "2022-12-01T02:24:52Z", + "_rev": "v53ZsDDD1bdWz9EKVghNeF" + }, + { + "_rev": "lhoXF04OR35CGYtnFgV1Mm", + "_type": "ResumeSkill", + "name": "Figma", + "_id": "3d837a55-00fd-444b-b6cd-8a37eb97eea1", + "title": "Figma", + "_updatedAt": "2022-11-30T19:09:16Z", + "_createdAt": "2022-11-30T19:09:16Z" + }, + { + "_createdAt": "2022-12-01T02:25:16Z", + "_rev": "lhoXF04OR35CGYtnFitqla", + "_type": "ResumeSkill", + "name": "Auth0", + "_id": "c9263077-0f52-49bc-a3d1-558140fdaed6", + "title": "Auth0", + "_updatedAt": "2022-12-01T02:25:16Z" + }, + { + "_createdAt": "2022-11-30T19:21:57Z", + "_rev": "lhoXF04OR35CGYtnFgYN5v", + "_type": "ResumeSkill", + "name": "Gitlab", + "_id": "1d79280c-faa1-4c29-ae3d-730d066b4679", + "title": "Gitlab", + "_updatedAt": "2022-11-30T19:21:57Z" + } + ], + "description": "A fullstack engineer on this Agile team receives tasking with JIRA. Our frontend applications are React with Kotlin and Node.js endpoints for the backend running on AWS. Our unique token is on the Solana blockchain. The mobile application built with Dart and Flutter is both in the Android and iOS stores. We use Auth0 for user authentication on both the Web and mobile applications. Integration with Prove KYC and the Marqeta Banking API. Segment was used for analytics.", + "companySubtitle": "Online Crypto-currency bank.", + "_id": "3cfec055-6a36-4ba8-836d-25096207773c", + "locationCity": "Los Angeles", + "_createdAt": "2022-12-01T01:22:19Z", + "dateStart": "2021-06-01", + "name": "Assembled Financial", + "companyName": "Assembled Financial", + "_type": "ResumeExperience", + "_rev": "lhoXF04OR35CGYtnFiu9iE" + }, + { + "title": "Fullstack Software Engineer", + "companySubtitle": "Small Business Financing.", + "_updatedAt": "2022-12-01T02:26:12Z", + "_rev": "v53ZsDDD1bdWz9EKVghX8x", + "description": "As a fullstack engineer on this Agile team our frontend applications are React with Kotlin endpoints for the backend running on AWS. We used Auth0 for user authentication on the Admin dashboard Web application. Integration with Quickbooks, Shopify, Google Sheets, Google Docs and Google Drive APIs. We developed and maintained several applications. The loan application for small businesses, the admin dashboard that loan Originators use to view the application packages, the applications responsible for extracting the data from any uploaded quickbooks, shopify, or spreadsheets, the company website, and the company blog. ", + "dateStart": "2019-12-01", + "skillsUsed": [ + { + "_rev": "z7EiK8inwybcbhSAyNI0za", + "_type": "ResumeSkill", + "name": "Kotlin", + "_id": "ce4db41b-50cf-4bf7-b8b2-a71de88ee6ac", + "title": "Kotlin", + "_updatedAt": "2022-11-30T18:49:05Z", + "_createdAt": "2022-11-30T18:49:05Z" + }, + { + "_createdAt": "2022-11-30T18:51:44Z", + "_rev": "lhoXF04OR35CGYtnFgQAUI", + "_type": "ResumeSkill", + "name": "React.js", + "_id": "59fe1d75-a35c-4a6c-8ecd-cf872791821b", + "title": "React.js", + "_updatedAt": "2022-11-30T18:51:44Z" + }, + { + "_createdAt": "2022-11-30T19:21:45Z", + "_rev": "v53ZsDDD1bdWz9EKVff6jj", + "_type": "ResumeSkill", + "name": "Github", + "_id": "3295ee78-4812-4aa3-9ddd-d5385e5399af", + "title": "Github", + "_updatedAt": "2022-11-30T19:21:45Z" + }, + { + "title": "Spring & Spring MVC", + "_updatedAt": "2022-11-30T19:00:48Z", + "_createdAt": "2022-11-30T19:00:48Z", + "_rev": "lhoXF04OR35CGYtnFgSlE8", + "_type": "ResumeSkill", + "name": "Spring & Spring MVC", + "_id": "239871af-49ea-4ecc-b66a-1e47abf45a28" + }, + { + "_createdAt": "2022-11-30T19:03:42Z", + "_rev": "z7EiK8inwybcbhSAyNIqdk", + "_type": "ResumeSkill", + "name": "DynamoDB", + "_id": "c0b3f33f-241c-4ffe-ab3f-13c4b26c9a2f", + "title": "DynamoDB", + "_updatedAt": "2022-11-30T19:03:42Z" + }, + { + "_id": "69995517-513a-41b7-a230-c7153af28916", + "title": "TypeScript", + "_updatedAt": "2022-11-30T21:34:11Z", + "_createdAt": "2022-11-30T21:34:11Z", + "_rev": "v53ZsDDD1bdWz9EKVg0EpX", + "_type": "ResumeSkill", + "name": "TypeScript" + }, + { + "_rev": "lhoXF04OR35CGYtnFgRram", + "_type": "ResumeSkill", + "name": "Material-ui", + "_id": "390a755a-c417-49eb-93aa-e77a19838261", + "title": "Material-ui", + "_updatedAt": "2022-11-30T18:57:33Z", + "_createdAt": "2022-11-30T18:57:33Z" + }, + { + "_createdAt": "2022-11-30T19:04:29Z", + "_rev": "lhoXF04OR35CGYtnFgTkx3", + "_type": "ResumeSkill", + "name": "AWS", + "_id": "d1289590-6c6a-4100-a7ff-7f6346ccdd2d", + "title": "AWS", + "_updatedAt": "2022-11-30T19:04:29Z" + }, + { + "_createdAt": "2022-11-30T19:09:16Z", + "_rev": "lhoXF04OR35CGYtnFgV1Mm", + "_type": "ResumeSkill", + "name": "Figma", + "_id": "3d837a55-00fd-444b-b6cd-8a37eb97eea1", + "title": "Figma", + "_updatedAt": "2022-11-30T19:09:16Z" + } + ], + "_id": "165c08aa-1f6f-47dd-8fa6-9e370c4f7873", + "_createdAt": "2022-12-01T02:12:27Z", + "companyName": "Assembled Brands", + "dateEnd": "2021-06-30", + "_type": "ResumeExperience", + "name": "Assembled Brands Fullstack Software Engineer", + "locationState": "CA", + "locationCity": "Los Angeles" + }, + { + "description": "Frontend Angular Engineer on an Agile team upgrading application from Angular 4 to Angular 6 while also developing new features. We received tasking with JIRA and UI/UX mockups from an external team. The application consumed a distributed JAVA/Spring API which I worked on briefly at the beginning of this position. Table intensive design prompted using ng-grid for tables and complex filtering/sorting options. The application was fairly advanced hiding and showing elements on the screen based on inputs in previous screens and highlighting data in tables.", + "companySubtitle": "SpaceX", + "name": "Northrop Grumman", + "companyName": "Northrop Grumman", + "skillsUsed": [ + { + "title": "Angular.js", + "_updatedAt": "2022-11-30T18:52:35Z", + "_createdAt": "2022-11-30T18:52:24Z", + "_rev": "lhoXF04OR35CGYtnFgQR6R", + "_type": "ResumeSkill", + "name": "Angular.js", + "_id": "45f1b5d7-664d-4b03-858f-6cdc00fa9ce9" + }, + { + "_id": "69995517-513a-41b7-a230-c7153af28916", + "title": "TypeScript", + "_updatedAt": "2022-11-30T21:34:11Z", + "_createdAt": "2022-11-30T21:34:11Z", + "_rev": "v53ZsDDD1bdWz9EKVg0EpX", + "_type": "ResumeSkill", + "name": "TypeScript" + }, + { + "name": "Atlassian Suite: JIRA, Confluence, Crucible, BitBucket, Bamboo", + "_id": "93311d61-08f6-4cdb-b48d-1b449733895f", + "title": "Atlassian Suite: JIRA, Confluence, Crucible, BitBucket, Bamboo", + "_updatedAt": "2022-11-30T19:20:44Z", + "_createdAt": "2022-11-30T19:20:44Z", + "_rev": "lhoXF04OR35CGYtnFgY70P", + "_type": "ResumeSkill" + } + ], + "_updatedAt": "2022-12-01T02:37:25Z", + "dateStart": "2018-01-01", + "_createdAt": "2022-12-01T02:27:15Z", + "locationCity": "Redondo Beach", + "_id": "d9f21340-7551-4e1d-b522-7240140d1c9d", + "_rev": "v53ZsDDD1bdWz9EKVgixsy", + "dateEnd": "2019-12-31", + "title": "Software Engineer", + "locationState": "CA", + "_type": "ResumeExperience" + }, + { + "_id": "08355f0e-8ffc-4581-a35e-fc005316c8d5", + "locationCity": "Annapolis Junction", + "_type": "ResumeExperience", + "skillsUsed": [ + { + "_id": "59fe1d75-a35c-4a6c-8ecd-cf872791821b", + "title": "React.js", + "_updatedAt": "2022-11-30T18:51:44Z", + "_createdAt": "2022-11-30T18:51:44Z", + "_rev": "lhoXF04OR35CGYtnFgQAUI", + "_type": "ResumeSkill", + "name": "React.js" + }, + { + "_type": "ResumeSkill", + "name": "MongoDB", + "_id": "392cf24d-acfa-414d-adbd-b58881d8e424", + "title": "MongoDB", + "_updatedAt": "2022-11-30T19:03:58Z", + "_createdAt": "2022-11-30T19:03:58Z", + "_rev": "z7EiK8inwybcbhSAyNIrIu" + }, + { + "title": "Javascript", + "_updatedAt": "2022-11-30T18:47:16Z", + "_createdAt": "2022-11-30T18:47:16Z", + "_rev": "lhoXF04OR35CGYtnFgMcCi", + "_type": "ResumeSkill", + "name": "Javascript", + "_id": "963f8182-5b33-4b56-9d92-112a02ebcf01" + }, + { + "_type": "ResumeSkill", + "name": "Grunt", + "_id": "6c7b4405-dd5b-415a-9968-5896cbee44a3", + "title": "Grunt", + "_updatedAt": "2022-11-30T21:35:26Z", + "_createdAt": "2022-11-30T21:35:26Z", + "_rev": "z7EiK8inwybcbhSAyNTk4g" + }, + { + "_type": "ResumeSkill", + "name": "Spring & Spring MVC", + "_id": "239871af-49ea-4ecc-b66a-1e47abf45a28", + "title": "Spring & Spring MVC", + "_updatedAt": "2022-11-30T19:00:48Z", + "_createdAt": "2022-11-30T19:00:48Z", + "_rev": "lhoXF04OR35CGYtnFgSlE8" + } + ], + "description": "Principle architect for an application that collects data from users through a form, adjusts future form fields based on input, stores in database, and provides admin alerts. This was a React Application that consumed an existing Spring/JAVA API. JIRA was how this Agile team of Principle Engineers was tasked and presentations of mockups were done with Adobe Creative Cloud", + "name": "Cybercore React", + "dateStart": "2017-01-01", + "_createdAt": "2022-12-01T12:08:13Z", + "title": "Frontend Software Engineer", + "locationState": "MD", + "_updatedAt": "2022-12-01T12:08:13Z", + "companySubtitle": "Principle Software Engineer", + "companyName": "Cybercore Technologies", + "dateEnd": "2017-12-31", + "_rev": "v53ZsDDD1bdWz9EKVi7wrt" + }, + { + "_createdAt": "2022-12-01T03:05:53Z", + "title": "Software Engineer", + "_type": "ResumeExperience", + "_updatedAt": "2022-12-01T03:52:14Z", + "dateEnd": "2015-01-30", + "_rev": "lhoXF04OR35CGYtnFjRBN8", + "skillsUsed": [ + { + "_id": "45f1b5d7-664d-4b03-858f-6cdc00fa9ce9", + "title": "Angular.js", + "_updatedAt": "2022-11-30T18:52:35Z", + "_createdAt": "2022-11-30T18:52:24Z", + "_rev": "lhoXF04OR35CGYtnFgQR6R", + "_type": "ResumeSkill", + "name": "Angular.js" + }, + { + "_id": "e967b76a-02a9-4dd8-b3a9-d85982e3ff65", + "title": "Adobe Creative Suite", + "_updatedAt": "2022-11-30T19:01:56Z", + "_createdAt": "2022-11-30T19:01:56Z", + "_rev": "lhoXF04OR35CGYtnFgT6Lx", + "_type": "ResumeSkill", + "name": "Adobe Creative Suite" + }, + { + "name": "Tomcat", + "_id": "5e332a22-a024-402e-8ac7-c52cc9122e46", + "title": "Tomcat", + "_updatedAt": "2022-11-30T19:05:43Z", + "_createdAt": "2022-11-30T19:05:43Z", + "_rev": "lhoXF04OR35CGYtnFgU5Aw", + "_type": "ResumeSkill" + }, + { + "_type": "ResumeSkill", + "name": "Ext.js", + "_id": "c8cff374-d634-4948-a0cf-9cf0b4228010", + "title": "Ext.js", + "_updatedAt": "2022-11-30T18:52:49Z", + "_createdAt": "2022-11-30T18:52:49Z", + "_rev": "lhoXF04OR35CGYtnFgQVlR" + }, + { + "_id": "93311d61-08f6-4cdb-b48d-1b449733895f", + "title": "Atlassian Suite: JIRA, Confluence, Crucible, BitBucket, Bamboo", + "_updatedAt": "2022-11-30T19:20:44Z", + "_createdAt": "2022-11-30T19:20:44Z", + "_rev": "lhoXF04OR35CGYtnFgY70P", + "_type": "ResumeSkill", + "name": "Atlassian Suite: JIRA, Confluence, Crucible, BitBucket, Bamboo" + }, + { + "_updatedAt": "2022-11-30T19:00:17Z", + "_createdAt": "2022-11-30T19:00:17Z", + "_rev": "v53ZsDDD1bdWz9EKVfcQnQ", + "_type": "ResumeSkill", + "name": "Bootstrap", + "_id": "d57e951c-77fc-48e9-a94e-2947147e985c", + "title": "Bootstrap" + }, + { + "title": "Scala", + "_updatedAt": "2022-11-30T18:51:18Z", + "_createdAt": "2022-11-30T18:51:18Z", + "_rev": "z7EiK8inwybcbhSAyNI97o", + "_type": "ResumeSkill", + "name": "Scala", + "_id": "5845d3d7-bf5e-4d55-9cd3-3c6de4304345" + }, + { + "_createdAt": "2022-11-30T18:53:16Z", + "_rev": "v53ZsDDD1bdWz9EKVfbccX", + "_type": "ResumeSkill", + "name": "JQuery", + "_id": "6836fb50-3871-4bfb-80f9-8cf8c4d6d78e", + "title": "JQuery", + "_updatedAt": "2022-11-30T18:53:16Z" + } + ], + "locationCity": "Annapolis Junction", + "description": "Angular and Bootstrap reengineer of an existing ExtJS application consuming Scala and JAVA APIs with hibernate layer and MongoDb backend. Federated Search GUI prototype development with JQuery mobile for mobile devices. Consuming SOLR search API for faceted search components\nJenkins deployment of Tomcat Applications to AWS. Mockups created with Adobe Creative Cloud Suite. \n\n", + "_id": "ff8d3e8a-7781-4e2a-b18c-6d0c0efdf087", + "locationState": "MD", + "companyName": "Cybercore Technologies", + "name": "Cybercore Technologies", + "dateStart": "2014-12-01", + "companySubtitle": "Frontend Software Engineer" + }, + { + "_rev": "lhoXF04OR35CGYtnFmCYrI", + "_createdAt": "2022-12-01T04:41:01Z", + "companyName": "Cybercore Technologies", + "dateEnd": "2017-01-31", + "title": "Software Engineer", + "_id": "83fad049-d6dd-4873-8d59-d55b7eba2164", + "locationState": "MD", + "_updatedAt": "2022-12-01T12:12:42Z", + "description": "Supported 2 production GUIs, 2 Prototype GUIs, and one legacy GUI. Prototype GUI's were in AngularJs while others were ExtJS, and early versions/attemps at Angular. GUIs were heavy on graphs with Highcharts & tables with ng-grid displaying server details and test automated test results. All GUIs consumed J2EE/Spring endpoints. Automated tests were in Ruby. Tomcat servers maintained by devOps.", + "_type": "ResumeExperience", + "locationCity": "Annapolis Junction", + "skillsUsed": [ + { + "title": "Ruby", + "_updatedAt": "2022-12-01T12:11:02Z", + "_createdAt": "2022-12-01T12:11:02Z", + "_rev": "z7EiK8inwybcbhSAyOTVs0", + "_type": "ResumeSkill", + "name": "Ruby", + "_id": "96239d27-eccc-4135-b24a-c33becc1bb9d" + }, + { + "_updatedAt": "2022-11-30T18:52:49Z", + "_createdAt": "2022-11-30T18:52:49Z", + "_rev": "lhoXF04OR35CGYtnFgQVlR", + "_type": "ResumeSkill", + "name": "Ext.js", + "_id": "c8cff374-d634-4948-a0cf-9cf0b4228010", + "title": "Ext.js" + }, + { + "_createdAt": "2022-11-30T18:52:24Z", + "_rev": "lhoXF04OR35CGYtnFgQR6R", + "_type": "ResumeSkill", + "name": "Angular.js", + "_id": "45f1b5d7-664d-4b03-858f-6cdc00fa9ce9", + "title": "Angular.js", + "_updatedAt": "2022-11-30T18:52:35Z" + }, + { + "_type": "ResumeSkill", + "name": "Tomcat", + "_id": "5e332a22-a024-402e-8ac7-c52cc9122e46", + "title": "Tomcat", + "_updatedAt": "2022-11-30T19:05:43Z", + "_createdAt": "2022-11-30T19:05:43Z", + "_rev": "lhoXF04OR35CGYtnFgU5Aw" + }, + { + "_updatedAt": "2022-11-30T18:55:33Z", + "_createdAt": "2022-11-30T18:55:33Z", + "_rev": "v53ZsDDD1bdWz9EKVfbvHn", + "_type": "ResumeSkill", + "name": "Highcharts", + "_id": "5a1e9762-1560-47b9-81ff-0cef770dffa8", + "title": "Highcharts" + }, + { + "_createdAt": "2022-11-30T18:47:42Z", + "_rev": "lhoXF04OR35CGYtnFgNgfI", + "_type": "ResumeSkill", + "name": "JAVA", + "_id": "3c945931-e968-4c34-8311-419697af70c1", + "title": "JAVA", + "_updatedAt": "2022-11-30T18:47:42Z" + } + ], + "dateStart": "2015-12-01", + "name": "Cybercore Software Engineer Ruby and Angular", + "companySubtitle": "Server Status display. " + }, + { + "_type": "ResumeExperience", + "skillsUsed": [ + { + "_type": "ResumeSkill", + "name": "JAVA", + "_id": "3c945931-e968-4c34-8311-419697af70c1", + "title": "JAVA", + "_updatedAt": "2022-11-30T18:47:42Z", + "_createdAt": "2022-11-30T18:47:42Z", + "_rev": "lhoXF04OR35CGYtnFgNgfI" + }, + { + "_rev": "lhoXF04OR35CGYtnFgStnW", + "_type": "ResumeSkill", + "name": "JSP", + "_id": "7cf5e4ed-724d-499a-a064-92e9b7454a9d", + "title": "Java Server Pages(JSP)", + "_updatedAt": "2022-11-30T19:01:16Z", + "_createdAt": "2022-11-30T19:01:16Z" + }, + { + "_createdAt": "2022-11-30T18:53:16Z", + "_rev": "v53ZsDDD1bdWz9EKVfbccX", + "_type": "ResumeSkill", + "name": "JQuery", + "_id": "6836fb50-3871-4bfb-80f9-8cf8c4d6d78e", + "title": "JQuery", + "_updatedAt": "2022-11-30T18:53:16Z" + }, + { + "title": "HTML 5.0", + "_updatedAt": "2022-11-30T18:49:41Z", + "_createdAt": "2022-11-30T18:49:41Z", + "_rev": "v53ZsDDD1bdWz9EKVfb8rm", + "_type": "ResumeSkill", + "name": "HTML 5.0", + "_id": "9ccf38a9-c76c-4114-b85b-1c747d30fca9" + }, + { + "_id": "8bd0fd76-0302-4bb8-80b2-4624e7baed20", + "title": "CSS", + "_updatedAt": "2022-11-30T20:03:53Z", + "_createdAt": "2022-11-30T20:03:53Z", + "_rev": "v53ZsDDD1bdWz9EKVfm68h", + "_type": "ResumeSkill", + "name": "CSS" + }, + { + "_id": "dec33886-0443-418a-a312-0a5149ca45d2", + "title": "LESS", + "_updatedAt": "2022-11-30T18:55:48Z", + "_createdAt": "2022-11-30T18:55:48Z", + "_rev": "lhoXF04OR35CGYtnFgRLGQ", + "_type": "ResumeSkill", + "name": "LESS" + }, + { + "_id": "5a1e9762-1560-47b9-81ff-0cef770dffa8", + "title": "Highcharts", + "_updatedAt": "2022-11-30T18:55:33Z", + "_createdAt": "2022-11-30T18:55:33Z", + "_rev": "v53ZsDDD1bdWz9EKVfbvHn", + "_type": "ResumeSkill", + "name": "Highcharts" + }, + { + "_createdAt": "2022-11-30T19:03:58Z", + "_rev": "z7EiK8inwybcbhSAyNIrIu", + "_type": "ResumeSkill", + "name": "MongoDB", + "_id": "392cf24d-acfa-414d-adbd-b58881d8e424", + "title": "MongoDB", + "_updatedAt": "2022-11-30T19:03:58Z" + } + ], + "_createdAt": "2022-12-01T04:29:58Z", + "title": "Frontend Software Engineer", + "dateEnd": "2014-12-31", + "_rev": "lhoXF04OR35CGYtnFjZ26K", + "companyName": "SoftTech Solutions", + "locationCity": "Annapolis Junction", + "companySubtitle": "Data Aggregation Display. ", + "_id": "6f477aa5-7ee8-48b5-b684-872e5f28b44b", + "locationState": "MD", + "_updatedAt": "2022-12-01T04:37:13Z", + "name": "SoftTech Solutions", + "description": "Consuming J2EE/Groovy APIs with JQuery and HTML/CSS with LESS for css preprocessing to aggregate data from different datasources providing different data to equal the full picture. JSPs displayed data with Highcharts and JQuery with Jasmine for automated testing. MongoDb backend with JAVA hibernate as the database layer. Maven build tool with a tomcat web server. Required custom vector graphic creation with Inkscape and later by request Adobe Illustrator. ", + "dateStart": "2013-08-01" + }, + { + "name": "Raytheon Company - Elgg", + "locationCity": "Annapolis Junction", + "skillsUsed": [ + { + "title": "PHP", + "_updatedAt": "2022-11-30T18:50:14Z", + "_createdAt": "2022-11-30T18:50:14Z", + "_rev": "z7EiK8inwybcbhSAyNI5K4", + "_type": "ResumeSkill", + "name": "PHP", + "_id": "41ab371e-4ce2-489f-99b8-4eb755d7ce6c" + }, + { + "_updatedAt": "2022-12-01T12:48:05Z", + "_createdAt": "2022-12-01T12:48:05Z", + "_rev": "v53ZsDDD1bdWz9EKViGVR3", + "_type": "ResumeSkill", + "name": "Elgg Social Media Network Framework", + "_id": "4d94813a-9380-4264-b707-f4128d1f7d6e", + "title": "Elgg Social Media Network Framework" + }, + { + "name": "MySQL", + "_id": "17ab710e-232d-44ca-a826-8b546defb22d", + "title": "MySQL", + "_updatedAt": "2022-11-30T19:03:19Z", + "_createdAt": "2022-11-30T19:03:19Z", + "_rev": "v53ZsDDD1bdWz9EKVfco2x", + "_type": "ResumeSkill" + }, + { + "name": "JQuery", + "_id": "6836fb50-3871-4bfb-80f9-8cf8c4d6d78e", + "title": "JQuery", + "_updatedAt": "2022-11-30T18:53:16Z", + "_createdAt": "2022-11-30T18:53:16Z", + "_rev": "v53ZsDDD1bdWz9EKVfbccX", + "_type": "ResumeSkill" + }, + { + "_id": "9ccf38a9-c76c-4114-b85b-1c747d30fca9", + "title": "HTML 5.0", + "_updatedAt": "2022-11-30T18:49:41Z", + "_createdAt": "2022-11-30T18:49:41Z", + "_rev": "v53ZsDDD1bdWz9EKVfb8rm", + "_type": "ResumeSkill", + "name": "HTML 5.0" + }, + { + "_type": "ResumeSkill", + "name": "CSS", + "_id": "8bd0fd76-0302-4bb8-80b2-4624e7baed20", + "title": "CSS", + "_updatedAt": "2022-11-30T20:03:53Z", + "_createdAt": "2022-11-30T20:03:53Z", + "_rev": "v53ZsDDD1bdWz9EKVfm68h" + } + ], + "locationState": "MD", + "_id": "66776607-a9eb-471b-a70d-36d565c5330a", + "dateStart": "2012-05-01", + "companyName": "Raytheon Company", + "_createdAt": "2022-12-01T12:48:50Z", + "companySubtitle": "Internal Social Media Network.", + "dateEnd": "2013-07-31", + "_rev": "z7EiK8inwybcbhSAyOXRIA", + "_type": "ResumeExperience", + "description": "PHP, HTML, Javascript development using Elgg Social Networking Framework. Daily tasking consisted of maintenance of production while completing new development tasking. New development was mainly creating custom elgg plugins. The native Elgg database is MySQL. Since the system was in production we also provided direct user support.", + "title": "Software Engineer", + "_updatedAt": "2022-12-01T12:48:50Z" + }, + { + "companySubtitle": "Distributed System Protocol.", + "title": "Software Engineer", + "dateStart": "2008-10-01", + "description": "Production C++ & Python Agile Software Development and Maintenance. Our MySQL databases stored and retrieved data based on network messages sent from system to system. PIG Scripting for Log aggregation. Responsible for writing the python application that retrieves data from the system based on network messages. Prototyped Google Web Toolkit implementation of maintenance and sustainment dashboard of the distributed system. ", + "_createdAt": "2022-12-01T12:55:38Z", + "_updatedAt": "2022-12-01T12:55:38Z", + "companyName": "Raytheon Company", + "locationState": "MD", + "skillsUsed": [ + { + "_createdAt": "2022-11-30T18:50:39Z", + "_rev": "z7EiK8inwybcbhSAyNI6ba", + "_type": "ResumeSkill", + "name": "C/C++", + "_id": "328069f7-b10b-4efa-8921-1348548e57b9", + "title": "C/C++", + "_updatedAt": "2022-11-30T18:50:39Z" + }, + { + "_rev": "v53ZsDDD1bdWz9EKVfbKfd", + "_type": "ResumeSkill", + "name": "Python", + "_id": "64740cea-d644-4623-84a3-45553c693215", + "title": "Python", + "_updatedAt": "2022-11-30T18:50:58Z", + "_createdAt": "2022-11-30T18:50:58Z" + }, + { + "name": "MySQL", + "_id": "17ab710e-232d-44ca-a826-8b546defb22d", + "title": "MySQL", + "_updatedAt": "2022-11-30T19:03:19Z", + "_createdAt": "2022-11-30T19:03:19Z", + "_rev": "v53ZsDDD1bdWz9EKVfco2x", + "_type": "ResumeSkill" + } + ], + "dateEnd": "2012-05-31", + "_rev": "v53ZsDDD1bdWz9EKViILvq", + "_type": "ResumeExperience", + "locationCity": "Annapolis Junction", + "name": "Raytheon Company - C++", + "_id": "b4de11ca-8419-4a7a-b762-a7ec2c125957" + }, + { + "_createdAt": "2022-12-01T13:00:42Z", + "dateStart": "2004-11-01", + "locationCity": "Suitland", + "description": "PHP, HTML, Javascript production application development in spiral/waterfall methodology. MySQL database backend and Tomcat web server maintained by team. Ingested many sources I was responsible for developing a JAVA SOAP API to serve data in CSV and XML. Provided detailed system documentation for inherited undocumented production system. Other duties consist of worldwide site surveys, and installations; site-specific systems enhancements; system upgrades; operator training; software procurement and configuration management; hardware procurement and inventory control; phone and email technical support; liaison and troubleshooting with working level counterparts; system demonstrations and system briefings to high level decision makers.\n\n\n", + "title": "Software Engineer", + "_id": "d9fede9e-dc64-4ecb-bb02-3a0400408177", + "companyName": "L-3 Communications", + "_rev": "v53ZsDDD1bdWz9EKVinpdt", + "dateEnd": "2008-10-31", + "companySubtitle": "Naval Software Development", + "locationState": "MD", + "_updatedAt": "2022-12-01T15:51:22Z", + "_type": "ResumeExperience", + "skillsUsed": [ + { + "_id": "41ab371e-4ce2-489f-99b8-4eb755d7ce6c", + "title": "PHP", + "_updatedAt": "2022-11-30T18:50:14Z", + "_createdAt": "2022-11-30T18:50:14Z", + "_rev": "z7EiK8inwybcbhSAyNI5K4", + "_type": "ResumeSkill", + "name": "PHP" + }, + { + "name": "HTML 5.0", + "_id": "9ccf38a9-c76c-4114-b85b-1c747d30fca9", + "title": "HTML 5.0", + "_updatedAt": "2022-11-30T18:49:41Z", + "_createdAt": "2022-11-30T18:49:41Z", + "_rev": "v53ZsDDD1bdWz9EKVfb8rm", + "_type": "ResumeSkill" + }, + { + "_rev": "v53ZsDDD1bdWz9EKVfm68h", + "_type": "ResumeSkill", + "name": "CSS", + "_id": "8bd0fd76-0302-4bb8-80b2-4624e7baed20", + "title": "CSS", + "_updatedAt": "2022-11-30T20:03:53Z", + "_createdAt": "2022-11-30T20:03:53Z" + }, + { + "_rev": "lhoXF04OR35CGYtnFgYpfD", + "_type": "ResumeSkill", + "name": "Linux", + "_id": "b14a599f-3b67-4e39-9c23-accea63edfb1", + "title": "Linux", + "_updatedAt": "2022-11-30T19:23:24Z", + "_createdAt": "2022-11-30T19:23:24Z" + }, + { + "_createdAt": "2022-11-30T19:21:30Z", + "_rev": "z7EiK8inwybcbhSAyNJrcS", + "_type": "ResumeSkill", + "name": "SVN", + "_id": "807df707-ea48-4368-855c-4d67e7102e18", + "title": "SVN", + "_updatedAt": "2022-11-30T19:21:30Z" + }, + { + "_type": "ResumeSkill", + "name": "MySQL", + "_id": "17ab710e-232d-44ca-a826-8b546defb22d", + "title": "MySQL", + "_updatedAt": "2022-11-30T19:03:19Z", + "_createdAt": "2022-11-30T19:03:19Z", + "_rev": "v53ZsDDD1bdWz9EKVfco2x" + }, + { + "_updatedAt": "2022-11-30T18:47:42Z", + "_createdAt": "2022-11-30T18:47:42Z", + "_rev": "lhoXF04OR35CGYtnFgNgfI", + "_type": "ResumeSkill", + "name": "JAVA", + "_id": "3c945931-e968-4c34-8311-419697af70c1", + "title": "JAVA" + } + ], + "name": "L-3 Communications, Titan Group" + } + ], + "feedbackEntries": null, + "_createdAt": "2022-12-01T01:10:03Z", + "servicesList": null, + "skillsets": null + }, + { + "feedbackEntries": null, + "resumeFile": null, + "servicesList": null, + "skillsets": null, + "title": "Education", + "_createdAt": "2022-12-01T14:14:09Z", + "_rev": "lhoXF04OR35CGYtnFnlndV", + "_type": "ResumeEducationSection", + "_id": "d980e48d-0fe1-4c38-8f35-97a68c59ddee", + "introduction": "All my life I have been driven by my strong belief that education is important. I try to learn something new every single day.\n\n", + "serviceAmenities": null, + "portfolioEntries": null, + "cvFile": null, + "educationExperiences": [ + { + "_createdAt": "2022-12-01T14:17:44Z", + "institutionName": "University of Maryland, Baltimore County", + "dateEnd": "2004-05-06", + "_updatedAt": "2022-12-01T14:17:44Z", + "name": "BS", + "_id": "6424a080-4dfe-4734-802a-faa3dea2d81e", + "qualification": "Computer Engineering, Bachelor of Science", + "dateStart": "1999-06-01", + "_rev": "v53ZsDDD1bdWz9EKViVLTO", + "_type": "ResumeEducation" + } + ], + "name": "Education", + "_updatedAt": "2022-12-01T15:58:25Z", + "experiences": null + }, + { + "_createdAt": "2022-12-01T20:53:45Z", + "_rev": "YKkjAGOOflKrRktUjzqTwY", + "name": "Feedback", + "servicesList": null, + "cvFile": null, + "skillsets": null, + "experiences": null, + "educationExperiences": null, + "_id": "127990c1-8bd4-44f9-b344-b39dcceaf731", + "title": "Feedback", + "_updatedAt": "2022-12-01T20:55:44Z", + "introduction": "Take a look at the reviews of my customers and ensure the quality of my services.", + "serviceAmenities": null, + "feedbackEntries": [ + { + "_createdAt": "2022-12-01T20:55:41Z", + "companyName": "JamWorks 24/7", + "_type": "ResumeFeedback", + "imageSrc": { + "_type": "image", + "asset": { + "_type": "reference", + "_ref": "image-ba4a7c9c01e632950293be433ab1f95560800ce5-728x290-png" + } + }, + "_id": "b5011657-c526-4100-aabf-886c204c2918", + "_updatedAt": "2022-12-01T21:24:38Z", + "customerName": "JamWorks 24/7", + "customerTitle": "CEO", + "_rev": "QoSfkmWVFCw5OU4CBmXCaz", + "name": "JamWorks 24/7", + "quote": "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable Engl" + } + ], + "_type": "ResumeFeedbackSection", + "portfolioEntries": null, + "resumeFile": null + }, + { + "title": "Portfolio", + "_createdAt": "2022-12-02T10:00:00Z", + "_rev": "VrdcoLtXxUWed6PHr9YgUR", + "portfolioEntries": [ + { + "slug": { + "current": "assembled-brands-fintech-company-website", + "_type": "slug" + }, + "name": "Fintech Website", + "skillsHighlighted": [ + { + "_updatedAt": "2022-11-30T18:51:44Z", + "_createdAt": "2022-11-30T18:51:44Z", + "_rev": "lhoXF04OR35CGYtnFgQAUI", + "_type": "ResumeSkill", + "name": "React.js", + "_id": "59fe1d75-a35c-4a6c-8ecd-cf872791821b", + "title": "React.js" + }, + { + "name": "TypeScript", + "_id": "69995517-513a-41b7-a230-c7153af28916", + "title": "TypeScript", + "_updatedAt": "2022-11-30T21:34:11Z", + "_createdAt": "2022-11-30T21:34:11Z", + "_rev": "v53ZsDDD1bdWz9EKVg0EpX", + "_type": "ResumeSkill" + }, + { + "name": "Kotlin", + "_id": "ce4db41b-50cf-4bf7-b8b2-a71de88ee6ac", + "title": "Kotlin", + "_updatedAt": "2022-11-30T18:49:05Z", + "_createdAt": "2022-11-30T18:49:05Z", + "_rev": "z7EiK8inwybcbhSAyNI0za", + "_type": "ResumeSkill" + }, + { + "_id": "d1289590-6c6a-4100-a7ff-7f6346ccdd2d", + "title": "AWS", + "_updatedAt": "2022-11-30T19:04:29Z", + "_createdAt": "2022-11-30T19:04:29Z", + "_rev": "lhoXF04OR35CGYtnFgTkx3", + "_type": "ResumeSkill", + "name": "AWS" + } + ], + "imageGallery": [ + { + "_type": "image", + "_key": "8d9fed9cd507", + "asset": { + "_type": "reference", + "_ref": "image-8d8e805dcd2ae7eda4a08a15e67396c66e95b8fe-2158x2056-png" + } + }, + { + "asset": { + "_ref": "image-67f5a2fdafd1cb9030537b0181fa615ea8e08ae7-1104x1850-png", + "_type": "reference" + }, + "_type": "image", + "_key": "b69c06b633a1" + } + ], + "detailDescription": "As frontend subject matter expert on a team of 5 developers this project was the marketing tool of the company. Admin dashboard allows admin to update content and some layouts. ", + "_rev": "0rD6Phxg3duzic15oELuYo", + "_type": "ResumePortfolioItem", + "inceptionDate": "2019-10-01", + "_updatedAt": "2022-12-02T15:32:21Z", + "detailTitle": "Assembled Brands Fintech Company Website", + "_id": "aba4e7c5-6109-4538-9851-cca583af9e9f", + "linkToProd": "https://assembledbrands.com", + "_createdAt": "2022-12-02T15:30:24Z", + "coverImage": { + "_type": "image", + "asset": { + "_ref": "image-8d8e805dcd2ae7eda4a08a15e67396c66e95b8fe-2158x2056-png", + "_type": "reference" + } + }, + "title": "Fintech Company Website" + }, + { + "skillsHighlighted": [ + { + "_createdAt": "2022-11-30T18:51:44Z", + "_rev": "lhoXF04OR35CGYtnFgQAUI", + "_type": "ResumeSkill", + "name": "React.js", + "_id": "59fe1d75-a35c-4a6c-8ecd-cf872791821b", + "title": "React.js", + "_updatedAt": "2022-11-30T18:51:44Z" + }, + { + "_createdAt": "2022-11-30T18:49:05Z", + "_rev": "z7EiK8inwybcbhSAyNI0za", + "_type": "ResumeSkill", + "name": "Kotlin", + "_id": "ce4db41b-50cf-4bf7-b8b2-a71de88ee6ac", + "title": "Kotlin", + "_updatedAt": "2022-11-30T18:49:05Z" + }, + { + "_createdAt": "2022-12-02T13:15:06Z", + "_rev": "0rD6Phxg3duzic15oEBAoj", + "_type": "ResumeSkill", + "name": "Sanity.io", + "_id": "652624f1-d57d-41b0-a64e-45ba8f05e4bc", + "title": "Sanity.io", + "_updatedAt": "2022-12-02T13:15:24Z" + }, + { + "_updatedAt": "2022-11-30T18:49:41Z", + "_createdAt": "2022-11-30T18:49:41Z", + "_rev": "v53ZsDDD1bdWz9EKVfb8rm", + "_type": "ResumeSkill", + "name": "HTML 5.0", + "_id": "9ccf38a9-c76c-4114-b85b-1c747d30fca9", + "title": "HTML 5.0" + }, + { + "_createdAt": "2022-11-30T20:03:53Z", + "_rev": "v53ZsDDD1bdWz9EKVfm68h", + "_type": "ResumeSkill", + "name": "CSS", + "_id": "8bd0fd76-0302-4bb8-80b2-4624e7baed20", + "title": "CSS", + "_updatedAt": "2022-11-30T20:03:53Z" + }, + { + "_createdAt": "2022-11-30T21:34:11Z", + "_rev": "v53ZsDDD1bdWz9EKVg0EpX", + "_type": "ResumeSkill", + "name": "TypeScript", + "_id": "69995517-513a-41b7-a230-c7153af28916", + "title": "TypeScript", + "_updatedAt": "2022-11-30T21:34:11Z" + }, + { + "_createdAt": "2022-11-30T19:04:29Z", + "_rev": "lhoXF04OR35CGYtnFgTkx3", + "_type": "ResumeSkill", + "name": "AWS", + "_id": "d1289590-6c6a-4100-a7ff-7f6346ccdd2d", + "title": "AWS", + "_updatedAt": "2022-11-30T19:04:29Z" + } + ], + "_type": "ResumePortfolioItem", + "_createdAt": "2022-12-02T14:27:11Z", + "slug": { + "current": "fintech-blog", + "_type": "slug" + }, + "inceptionDate": "2020-12-01", + "detailTitle": "Assembled Brands Fintech Company Blog", + "detailDescription": "Added as an augment to the Fintech company Website.", + "title": "Fintech Blog", + "linkToProd": "https://assembledbrands.com/blog", + "_updatedAt": "2022-12-02T15:28:00Z", + "coverImage": { + "_type": "image", + "asset": { + "_ref": "image-4f46ffc1713abf5a2d5b26dfa0eb3c4c677c7bfc-2130x2180-png", + "_type": "reference" + } + }, + "name": "AB Blog", + "imageGallery": [ + { + "_key": "6378b02d4a49", + "asset": { + "_ref": "image-4f46ffc1713abf5a2d5b26dfa0eb3c4c677c7bfc-2130x2180-png", + "_type": "reference" + }, + "_type": "image" + }, + { + "asset": { + "_ref": "image-f63ba14d6b5c7cd60a4dccc311fef266888ca17f-2506x1820-png", + "_type": "reference" + }, + "_type": "image", + "_key": "1e79d1587738" + } + ], + "_id": "f2e5395b-e430-40e2-9374-0fed3d53ebb9", + "_rev": "5iTZEBNHx5PwgJLwP9Hu3C" + }, + { + "_updatedAt": "2022-12-06T17:24:46Z", + "title": "Sanity Open Source CMS", + "_createdAt": "2022-12-06T17:22:49Z", + "name": "Sanity ", + "detailTitle": "Sanity.io Headless CMS", + "_rev": "WyInRKefYSPCXTOlY1mbyU", + "coverImage": { + "_type": "image", + "asset": { + "_ref": "image-4a0fcb679487ea1b245059fc28fcaf9096de3232-496x496-png", + "_type": "reference" + } + }, + "linkToProd": "https://www.sanity.io/exchange/community/tmanundercover", + "slug": { + "current": "sanity-open-source-cms", + "_type": "slug" + }, + "_id": "e7fb2fbd-ca34-4112-af4c-0457e1e1d0f9", + "detailDescription": "This community is around Sanity.io. Sanity is a headless CMS that can be used to easily be the content store for websites. Check out the projects that I've done with sanity. I have highlighted some of them in my portfolio. ", + "_type": "ResumePortfolioItem", + "skillsHighlighted": [ + { + "title": "Sanity.io", + "_updatedAt": "2022-12-02T13:15:24Z", + "_createdAt": "2022-12-02T13:15:06Z", + "_rev": "0rD6Phxg3duzic15oEBAoj", + "_type": "ResumeSkill", + "name": "Sanity.io", + "_id": "652624f1-d57d-41b0-a64e-45ba8f05e4bc" + }, + { + "_id": "59fe1d75-a35c-4a6c-8ecd-cf872791821b", + "title": "React.js", + "_updatedAt": "2022-11-30T18:51:44Z", + "_createdAt": "2022-11-30T18:51:44Z", + "_rev": "lhoXF04OR35CGYtnFgQAUI", + "_type": "ResumeSkill", + "name": "React.js" + }, + { + "_createdAt": "2022-11-30T21:34:11Z", + "_rev": "v53ZsDDD1bdWz9EKVg0EpX", + "_type": "ResumeSkill", + "name": "TypeScript", + "_id": "69995517-513a-41b7-a230-c7153af28916", + "title": "TypeScript", + "_updatedAt": "2022-11-30T21:34:11Z" + } + ], + "inceptionDate": "2020-12-01", + "imageGallery": null + }, + { + "linkToProd": "https://aluminum-foil.web.app", + "detailTitle": "Black Themed Question Game - BlckTwttr", + "_updatedAt": "2022-12-09T20:21:13Z", + "skillsHighlighted": [ + { + "_createdAt": "2022-11-30T18:51:44Z", + "_rev": "lhoXF04OR35CGYtnFgQAUI", + "_type": "ResumeSkill", + "name": "React.js", + "_id": "59fe1d75-a35c-4a6c-8ecd-cf872791821b", + "title": "React.js", + "_updatedAt": "2022-11-30T18:51:44Z" + }, + { + "name": "TypeScript", + "_id": "69995517-513a-41b7-a230-c7153af28916", + "title": "TypeScript", + "_updatedAt": "2022-11-30T21:34:11Z", + "_createdAt": "2022-11-30T21:34:11Z", + "_rev": "v53ZsDDD1bdWz9EKVg0EpX", + "_type": "ResumeSkill" + }, + { + "title": "Firebase: Hosting, Functions, Authentication, Push Notifications, Analytics", + "_updatedAt": "2022-11-30T23:54:48Z", + "_createdAt": "2022-11-30T20:06:56Z", + "_rev": "lhoXF04OR35CGYtnFiBSLk", + "_type": "ResumeSkill", + "name": "Firebase: Hosting, Functions, Authentication, Push Notifications, Analytics", + "_id": "d2a2b75e-6b9c-4b42-948d-94592762e670" + }, + { + "_createdAt": "2022-11-30T23:54:06Z", + "_rev": "z7EiK8inwybcbhSAyNez3U", + "_type": "ResumeSkill", + "name": "Firebase: Firestore, Real-time Database", + "_id": "14574afa-995f-432a-b277-0f6cedfdb52d", + "title": "Firebase: Firestore, Real-time Database", + "_updatedAt": "2022-11-30T23:54:59Z" + } + ], + "name": "Black Themed Question Game", + "imageGallery": [ + { + "_type": "image", + "_key": "b993f6e8667c", + "asset": { + "_ref": "image-61189c50a77eef13a88132a7425fce1273dda06c-1280x2769-webp", + "_type": "reference" + } + }, + { + "_type": "image", + "_key": "f811459db0dc", + "asset": { + "_ref": "image-b1ea13c0aa7453add454de3a9cb4583fbe948187-1280x2769-webp", + "_type": "reference" + } + }, + { + "_type": "image", + "_key": "78f996e1e297", + "asset": { + "_ref": "image-f3b652696c70bccdedc849773e5828bccfb127e7-1280x2769-webp", + "_type": "reference" + } + }, + { + "asset": { + "_ref": "image-c7be34e1ad4be8b5b49fd8bde508f4c7c742cefb-1280x2769-webp", + "_type": "reference" + }, + "_type": "image", + "_key": "98cbf3678755" + } + ], + "_rev": "VrdcoLtXxUWed6PHr9YdWc", + "inceptionDate": "2022-06-01", + "title": "Black Themed Question Game", + "slug": { + "current": "black-themed-question-game", + "_type": "slug" + }, + "_type": "ResumePortfolioItem", + "_createdAt": "2022-12-09T20:21:13Z", + "detailDescription": "This is a funny African American question card game. Answer the questions and see if you can get your black card.", + "_id": "ddbdb0da-fec1-4a3f-a4d3-e6650e96f1f8", + "coverImage": { + "_type": "image", + "asset": { + "_type": "reference", + "_ref": "image-c7be34e1ad4be8b5b49fd8bde508f4c7c742cefb-1280x2769-webp" + } + } + }, + { + "title": "JamWorks 24/7 Shopify Store", + "skillsHighlighted": [ + { + "name": "Shopify API", + "_id": "77627e6a-6ab3-4c14-a85d-f649b986138b", + "title": "Shopify API", + "_updatedAt": "2022-12-02T09:51:52Z", + "_createdAt": "2022-12-02T09:51:52Z", + "_rev": "YKkjAGOOflKrRktUk9NGaw", + "_type": "ResumeSkill" + }, + { + "title": "ImageMagick(cli)", + "_updatedAt": "2022-11-30T19:09:38Z", + "_createdAt": "2022-11-30T19:09:38Z", + "_rev": "v53ZsDDD1bdWz9EKVfdaj6", + "_type": "ResumeSkill", + "name": "ImageMagick(cli)", + "_id": "2a659991-569f-4a95-bfe1-d1af655a7b83" + }, + { + "_createdAt": "2022-12-02T09:53:14Z", + "_rev": "YKkjAGOOflKrRktUk9No6c", + "_type": "ResumeSkill", + "name": "Shopify Plugin Development", + "_id": "ee282496-cdb5-4650-bbf8-2d87f24f947b", + "title": "Shopify Plugin Development", + "_updatedAt": "2022-12-02T09:53:14Z" + } + ], + "slug": { + "current": "jamworks-24-7-shopify-store", + "_type": "slug" + }, + "inceptionDate": "2022-05-01", + "detailTitle": "JamWorks 24/7 Nostalgic Shopify Store", + "_updatedAt": "2022-12-02T12:51:39Z", + "detailDescription": "This Shopify store was created to showcase the incredible virtual inventory of the owner. The store was constructed with a combination of Shopify UI and some custom made components. Shopify plugin development to bring in a design and then Create mockups for the design. ", + "_rev": "ElrRHx5al3kb1PwLXH9UW8", + "_createdAt": "2022-12-02T09:59:53Z", + "coverImage": { + "_type": "image", + "asset": { + "_ref": "image-3febb72b8aad0c7beed512928903479f641a5a15-2052x1798-png", + "_type": "reference" + } + }, + "_type": "ResumePortfolioItem", + "linkToProd": "https://jamworks247.com", + "_id": "9bbeab5b-f091-41e7-b5bf-8c9fd04199cd", + "imageGallery": [ + { + "_type": "image", + "_key": "253d2ba4c3dd", + "asset": { + "_ref": "image-3febb72b8aad0c7beed512928903479f641a5a15-2052x1798-png", + "_type": "reference" + } + }, + { + "_type": "image", + "_key": "298dfefd7fb4", + "asset": { + "_ref": "image-35344b8e3e6a89ebf94fbe320553b630d6445cbd-2052x1936-png", + "_type": "reference" + } + }, + { + "_key": "14a904e51d07", + "asset": { + "_type": "reference", + "_ref": "image-2cdd14b21197bf5d6b34b0a70dccc0c298fe72ee-2054x1996-png" + }, + "_type": "image" + } + ], + "name": "JamWorks Shopify Store" + }, + { + "skillsHighlighted": [ + { + "_createdAt": "2022-11-30T18:51:44Z", + "_rev": "lhoXF04OR35CGYtnFgQAUI", + "_type": "ResumeSkill", + "name": "React.js", + "_id": "59fe1d75-a35c-4a6c-8ecd-cf872791821b", + "title": "React.js", + "_updatedAt": "2022-11-30T18:51:44Z" + }, + { + "title": "TypeScript", + "_updatedAt": "2022-11-30T21:34:11Z", + "_createdAt": "2022-11-30T21:34:11Z", + "_rev": "v53ZsDDD1bdWz9EKVg0EpX", + "_type": "ResumeSkill", + "name": "TypeScript", + "_id": "69995517-513a-41b7-a230-c7153af28916" + }, + { + "_type": "ResumeSkill", + "name": "Firebase: Hosting, Functions, Authentication, Push Notifications, Analytics", + "_id": "d2a2b75e-6b9c-4b42-948d-94592762e670", + "title": "Firebase: Hosting, Functions, Authentication, Push Notifications, Analytics", + "_updatedAt": "2022-11-30T23:54:48Z", + "_createdAt": "2022-11-30T20:06:56Z", + "_rev": "lhoXF04OR35CGYtnFiBSLk" + }, + { + "_type": "ResumeSkill", + "name": "Node.js", + "_id": "c460e246-cac2-456d-a86e-6310259c3193", + "title": "Node.js", + "_updatedAt": "2022-11-30T18:48:48Z", + "_createdAt": "2022-11-30T18:48:48Z", + "_rev": "lhoXF04OR35CGYtnFgPKO1" + } + ], + "detailDescription": "These are the drinks that any bartender needs to know how to make. Some specialty drinks are included.", + "linkToDev": "https://bartender-concierge.web.app", + "_updatedAt": "2022-12-09T16:53:01Z", + "_id": "79706391-d66f-4f74-8854-20d049e33405", + "slug": { + "current": "bartender-flash-cards", + "_type": "slug" + }, + "_type": "ResumePortfolioItem", + "inceptionDate": "2022-11-21", + "imageGallery": [ + { + "_key": "846b09f2726e", + "asset": { + "_ref": "image-bc55dbf3f1fed76364a1ece4a47ab8d2dc7f5fec-1000x2188-png", + "_type": "reference" + }, + "_type": "image" + }, + { + "_key": "42d0a796a2cc", + "asset": { + "_ref": "image-de6033f2a8b2b2907639ceefcf7fec82f82fef18-984x1534-png", + "_type": "reference" + }, + "_type": "image" + } + ], + "_createdAt": "2022-12-09T13:23:37Z", + "_rev": "cwf6PSmkIH3MXtFHz0qXfL", + "detailTitle": "Bartender's Flash Card App", + "linkToProd": "https://bartender-concierge.web.app", + "name": "Bartender Flash Cards", + "coverImage": { + "_type": "image", + "asset": { + "_ref": "image-bc55dbf3f1fed76364a1ece4a47ab8d2dc7f5fec-1000x2188-png", + "_type": "reference" + } + }, + "title": "Bartender Flash Cards" + }, + { + "_updatedAt": "2022-12-02T13:20:07Z", + "imageGallery": [ + { + "asset": { + "_type": "reference", + "_ref": "image-0e39a3e878b664261b3d4b34ac2ce567835edaba-2160x1966-webp" + }, + "_type": "image", + "_key": "e8c941e71730" + }, + { + "_type": "image", + "_key": "7aaaf820ee1c", + "asset": { + "_ref": "image-b840bb68d2f8f2d0bac5462549633f5942515a86-1280x973-webp", + "_type": "reference" + } + }, + { + "asset": { + "_ref": "image-9800eba60722bf0f437d223c5e76b20f995e00ee-1280x1445-webp", + "_type": "reference" + }, + "_type": "image", + "_key": "aeccc0a78def" + }, + { + "_type": "image", + "_key": "5f19366d8514", + "asset": { + "_ref": "image-b0b24687bf5419bdc1ed0ded3ed70ce985c837c2-1280x4817-webp", + "_type": "reference" + } + } + ], + "_rev": "5iTZEBNHx5PwgJLwP8rm5c", + "linkToProd": "https://transformhw.org", + "name": "THW", + "slug": { + "_type": "slug", + "current": "healing-and-wellness-business-website" + }, + "_type": "ResumePortfolioItem", + "coverImage": { + "_type": "image", + "asset": { + "_ref": "image-0e39a3e878b664261b3d4b34ac2ce567835edaba-2160x1966-webp", + "_type": "reference" + } + }, + "detailTitle": "Healing & Wellness Small Business Website", + "skillsHighlighted": [ + { + "_createdAt": "2022-11-30T18:51:44Z", + "_rev": "lhoXF04OR35CGYtnFgQAUI", + "_type": "ResumeSkill", + "name": "React.js", + "_id": "59fe1d75-a35c-4a6c-8ecd-cf872791821b", + "title": "React.js", + "_updatedAt": "2022-11-30T18:51:44Z" + }, + { + "_type": "ResumeSkill", + "name": "Sanity.io", + "_id": "652624f1-d57d-41b0-a64e-45ba8f05e4bc", + "title": "Sanity.io", + "_updatedAt": "2022-12-02T13:15:24Z", + "_createdAt": "2022-12-02T13:15:06Z", + "_rev": "0rD6Phxg3duzic15oEBAoj" + }, + { + "title": "HTML 5.0", + "_updatedAt": "2022-11-30T18:49:41Z", + "_createdAt": "2022-11-30T18:49:41Z", + "_rev": "v53ZsDDD1bdWz9EKVfb8rm", + "_type": "ResumeSkill", + "name": "HTML 5.0", + "_id": "9ccf38a9-c76c-4114-b85b-1c747d30fca9" + }, + { + "_type": "ResumeSkill", + "name": "CSS", + "_id": "8bd0fd76-0302-4bb8-80b2-4624e7baed20", + "title": "CSS", + "_updatedAt": "2022-11-30T20:03:53Z", + "_createdAt": "2022-11-30T20:03:53Z", + "_rev": "v53ZsDDD1bdWz9EKVfm68h" + }, + { + "_createdAt": "2022-11-30T18:48:48Z", + "_rev": "lhoXF04OR35CGYtnFgPKO1", + "_type": "ResumeSkill", + "name": "Node.js", + "_id": "c460e246-cac2-456d-a86e-6310259c3193", + "title": "Node.js", + "_updatedAt": "2022-11-30T18:48:48Z" + }, + { + "_updatedAt": "2022-11-30T23:54:48Z", + "_createdAt": "2022-11-30T20:06:56Z", + "_rev": "lhoXF04OR35CGYtnFiBSLk", + "_type": "ResumeSkill", + "name": "Firebase: Hosting, Functions, Authentication, Push Notifications, Analytics", + "_id": "d2a2b75e-6b9c-4b42-948d-94592762e670", + "title": "Firebase: Hosting, Functions, Authentication, Push Notifications, Analytics" + } + ], + "inceptionDate": "2022-11-19", + "_createdAt": "2022-12-02T13:15:57Z", + "detailDescription": "Transformative Healing and Wellness uses this website display information as well as to direct potential customers to make appointments, make payments, and display important forms. ", + "_id": "b125a00b-bafb-4434-8522-c365a1b7bf39", + "title": "Healing & Wellness Business Website" + }, + { + "_id": "0847255b-3899-4ec2-bebb-c1df0ecf6f04", + "_updatedAt": "2022-12-15T04:40:01Z", + "_createdAt": "2022-12-09T16:56:23Z", + "_rev": "3re4XGUaXqpLG8nUTCNJ1p", + "name": "This Site", + "_type": "ResumePortfolioItem", + "title": "Digital Resume", + "skillsHighlighted": null, + "imageGallery": [ + { + "_type": "image", + "_key": "ae0cdaa6046c", + "asset": { + "_ref": "image-870429ab5c30f4291296bea943809bf6be4eb0db-1284x2778-png", + "_type": "reference" + } + }, + { + "_type": "image", + "_key": "e86ff91ee3f4", + "asset": { + "_ref": "image-9129fa0d689dc7cb162bb616dac0002f8eb51b41-1284x2778-png", + "_type": "reference" + } + }, + { + "_type": "image", + "_key": "3a0684dd52ca", + "asset": { + "_ref": "image-83ae1e25a01ecc72f9b55b22b2363270123e6e58-1284x2778-png", + "_type": "reference" + } + }, + { + "_key": "f8e23fd91e9f", + "asset": { + "_ref": "image-e175f974a1487be31f3d1d76acad502c7a5b4d0e-1284x2778-png", + "_type": "reference" + }, + "_type": "image" + }, + { + "_type": "image", + "_key": "7cea5692dbb9", + "asset": { + "_type": "reference", + "_ref": "image-119b02cc6b27f21c012ed2eb2e39e2e73c06ca2a-1002x1938-png" + } + } + ], + "coverImage": { + "asset": { + "_ref": "image-585b3cd478d826389f345320da3ff6da80b150ab-1284x2778-png", + "_type": "reference" + }, + "_type": "image" + } + } + ], + "servicesList": null, + "experiences": null, + "educationExperiences": null, + "serviceAmenities": null, + "_type": "ResumePortfolioSection", + "skillsets": null, + "cvFile": null, + "introduction": "This is my Portfolio. These projects are in various stages of completion.", + "name": "Portfolio", + "_id": "3619d839-36fc-4943-bbe6-fe5fc703f765", + "_updatedAt": "2022-12-09T20:21:36Z", + "feedbackEntries": null, + "resumeFile": null + }, + { + "name": "Resume Contact Us", + "servicesList": null, + "cvFile": null, + "experiences": null, + "_type": "ResumeContactUsSection", + "title": "Contact", + "_updatedAt": "2022-12-02T00:17:56Z", + "_id": "a477839e-9af6-4df7-a56d-18803de9034e", + "serviceAmenities": null, + "introduction": "Are you working on something great? I would love to help make it happen! Drop me a letter and start your project right now! Just do it.", + "formSubmitButtonText": "Send Message", + "_rev": "QoSfkmWVFCw5OU4CBn0RSb", + "skillsets": null, + "educationExperiences": null, + "_createdAt": "2022-12-02T00:17:56Z", + "feedbackEntries": null, + "portfolioEntries": null, + "resumeFile": null + } + ] + }, + + "bookAppointmentLink": "https://the-handsomest-nerd.square.site", + "metaImage": { + "_type": "image", + "asset": { + "_ref": "image-1b6d17ecb24acc63e06dd318c88459ac89cd0b36-3007x2979-jpg" + } + }, + "servicesAvailable": undefined, + "underConstructionPageRef": undefined, + "slug": { + "current": "home", + "_type": "slug" + }, + "businessCardImageSrc": { + "_type": "image", + "asset": { + "_ref": "image-4bb7c114dc8fd33f70df76fe3fff2791f0f0eb0c-3007x2979-jpg", + } + }, + "website": "https://terrellsingleton.com" +} + +export default homePageResumeData; \ No newline at end of file diff --git a/src/stories/data/DrinkerySpecialsSectionData.ts b/src/stories/data/DrinkerySpecialsSectionData.ts new file mode 100644 index 00000000..ff683f86 --- /dev/null +++ b/src/stories/data/DrinkerySpecialsSectionData.ts @@ -0,0 +1,22 @@ +import {DrinkerySpecialsSectionType} from "../../components/BlockContentTypes"; + +const drinkerySpecialsData: DrinkerySpecialsSectionType = { + "name": "Drinkery Specials", + "theSpecials": [ + { + "content": "Get Two Natty Bohs for the price of one.", + // "_type": "drinkerySpecial", + "name": "2 for 1 Natty Boh", + // "_key": "b9310bb3077b", + "title": "2 for 1 Natty Boh", + } + ], + // "imageSrc": undefined, + "contentTitle": "Weekly Specials", + "contentText": "The Drinkery was established in 1972 and is one of the oldest alternative bars in Baltimore, MD. As an alternative bar everyone is welcome and no one is excluded at the Drinkery regardless race, religion, or sexual orientation. We have established a gang of regulars over the years that will welcome you with open arms. Come in and drink til everyone knows your name and you remember no one's!  🥃", + "imageSrcAltText": "The Drinkery during Pride 2022", + "disclaimer": "Please Drink Responsibly.", + "subTitle": "(must mention QrCode)", +} + +export default drinkerySpecialsData \ No newline at end of file diff --git a/src/stories/data/DrinkeryStaffSectionData.ts b/src/stories/data/DrinkeryStaffSectionData.ts new file mode 100644 index 00000000..a12013a1 --- /dev/null +++ b/src/stories/data/DrinkeryStaffSectionData.ts @@ -0,0 +1,52 @@ +import {TeamSectionType} from "../../components/BlockContentTypes"; + +const drinkeryTheOtherSideSectionData: TeamSectionType = { + "contentTitle": "Meet the Bartenders", + "name": "Front Staff", + "teamList": [ + { + // "_createdAt": "2023-08-11T18:58:07Z", + // "_type": "DrinkeryTeamMember", + "homeState": "MD", + // "_id": "fa7e01ff-c290-4519-bd7f-8d0be7ed1b08", + // "_updatedAt": "2023-08-27T22:45:31Z", + "firstName": "Tim", + "homeCity": "Baltimore", + "isEnabled": true, + // "_rev": "D458AMx4yea2bDwcxjEitc", + "title": "Tim" + }, + { + // "_rev": "D458AMx4yea2bDwcxjElKy", + "title": "Dre", + // "_createdAt": "2023-08-11T18:58:24Z", + "isEnabled": true, + // "_type": "DrinkeryTeamMember", + // "_id": "a4f54ae1-86ef-498b-bd41-b06ab26bec3f", + // "_updatedAt": "2023-08-27T22:45:39Z", + "firstName": "Dre" + }, + { + "firstName": "Sean", + // "_type": "DrinkeryTeamMember", + "title": "Sean", + // "_createdAt": "2023-08-11T18:58:41Z", + "isEnabled": true, + // "_rev": "0UwTfXLGTjMYK8ZDCZaSgH", + // "_id": "680dce1d-b079-49d6-86d0-0b970eb41e96", + // "_updatedAt": "2023-08-31T23:56:42Z" + }, + { + // "_type": "DrinkeryTeamMember", + // "_id": "82e763f7-98ee-43b9-a838-64e367fd7fff", + // "_updatedAt": "2023-08-27T22:46:14Z", + "firstName": "Thomas", + "isEnabled": true, + // "_rev": "D458AMx4yea2bDwcxjEmx8", + // "_createdAt": "2023-08-11T19:02:07Z", + "title": "Thomas" + } + ], +} + +export default drinkeryTheOtherSideSectionData \ No newline at end of file diff --git a/src/stories/data/DrinkeryTheOtherSideSectionData.ts b/src/stories/data/DrinkeryTheOtherSideSectionData.ts new file mode 100644 index 00000000..23ed07b4 --- /dev/null +++ b/src/stories/data/DrinkeryTheOtherSideSectionData.ts @@ -0,0 +1,9 @@ +import {DrinkeryOtherSideSectionType} from "../../components/BlockContentTypes"; + +const drinkeryTheOtherSideSectionData: DrinkeryOtherSideSectionType = { + "name": "Other Side", + "description": "The other side of the Drinkery is a Speakeasy featuring premium liquor and atmosphere where you can step away from the crowd for a moment and have conversation.", + "contentTitle": "Checkout the Other Side!", +} + +export default drinkeryTheOtherSideSectionData \ No newline at end of file diff --git a/src/stories/data/DrinkeryThemeData.ts b/src/stories/data/DrinkeryThemeData.ts new file mode 100644 index 00000000..b4fe1703 --- /dev/null +++ b/src/stories/data/DrinkeryThemeData.ts @@ -0,0 +1,168 @@ +import {SanityMuiTheme} from "../../common/sanityIo/Types"; + +const DrinkeryThemeData:SanityMuiTheme ={ + "breakpoints": { + "xl": 1320, + "md": 980, + "sm": 640, + "lg": 1160, + "xs": 0 + }, + "slug": { + "current": "drinkery-theme", + "_type": "slug" + }, + "appBarHeight": 55, + "typography": { + "fontFamily": [ + "Raleway", + "Oswald" + ], + "fontFaces": [ + { + "letterSpacing": "-.01em", + "fontSize": "4.25rem", + "_key": "99e39fee3c35", + "name": "h1", + "fontStyle": "normal", + "mediaQueries": [ + { + "typography": { + "_type": "MuiFontFace", + "fontSize": "2.8rem" + }, + "breakpoint": [ + "sm" + ] + } + ], + "lineHeight": "1.3", + "fontWeight": "bold", + "_type": "MuiFontFace" + }, + { + "letterSpacing": "-.02em", + "fontSize": "3.78rem", + "lineHeight": "1.25", + "_key": "15b22d45d9a3", + "fontStyle": "normal", + "fontWeight": "700", + "_type": "MuiFontFace", + "name": "h2" + }, + { + "fontWeight": "600", + "_type": "MuiFontFace", + "letterSpacing": "-.03em", + "fontSize": "3rem", + "mediaQueries": [ + { + "typography": { + "_type": "MuiFontFace", + "fontSize": "1.4rem" + }, + "breakpoint": [ + "sm" + ] + } + ], + "name": "h3", + "lineHeight": "1.4", + "_key": "353efd0b7481", + "fontStyle": "normal" + }, + { + "fontWeight": "bold", + "_type": "MuiFontFace", + "name": "h4", + "fontSize": "2.5rem", + "lineHeight": "1", + "_key": "77ebadf101f4", + "fontStyle": "normal" + }, + { + "fontStyle": "normal", + "fontWeight": "bold", + "_type": "MuiFontFace", + "name": "h5", + "fontSize": "2rem", + "lineHeight": "1", + "_key": "1b850602a157" + }, + { + "fontWeight": "bold", + "_type": "MuiFontFace", + "name": "h6", + "fontSize": "1.7rem", + "lineHeight": "1", + "_key": "108167c3a027", + "fontStyle": "normal" + }, + { + "fontSize": "1rem", + "lineHeight": "1.5", + "_key": "ba043f666371", + "fontStyle": "normal", + "fontWeight": "400", + "_type": "MuiFontFace", + "name": "body1", + "letterSpacing": "-.02em" + }, + { + "_key": "05601611d8ce", + "fontStyle": "normal", + "fontWeight": "550", + "_type": "MuiFontFace", + "name": "body2", + "letterSpacing": "0.0em", + "fontSize": "1.285rem", + "lineHeight": "1.5" + }, + { + "lineHeight": "1", + "_type": "MuiFontFace", + "letterSpacing": "-.03em", + "fontWeight": "700", + "name": "button", + "textTransform": "none", + "_key": "793c021d11d6", + "fontStyle": "normal", + "fontSize": "19px" + }, + { + "_type": "MuiFontFace", + "name": "subtitle1", + "letterSpacing": "-.03em", + "fontSize": "14px", + "lineHeight": "1", + "_key": "83e33518a0fa", + "fontStyle": "normal", + "fontWeight": "750" + }, + { + "lineHeight": "1.45", + "_key": "a42fa10440b7", + "fontStyle": "normal", + "fontWeight": "600", + "_type": "MuiFontFace", + "name": "subtitle2", + "letterSpacing": "-.03em", + "fontSize": "11px" + } + ] + }, + "colorPalette": { + "secondaryColor": "DARKERGRAY", + "buttonOutlineColor": "WHITESMOKE", + "secondaryTextColor": "ALMOSTWHITE", + "defaultBackground": "ALMOST_BLACK", + "defaultPaperBackgroundColor": "WHITESMOKE", + "disabledTextColor": "LIGHT_GRAY", + "primaryTextColor": "DARKGRAY", + "primaryColor": "RED", + }, + "title": "Drinkery Theme", +} + + +export default DrinkeryThemeData; \ No newline at end of file diff --git a/src/stories/data/HolidayHeadlineSectionData.ts b/src/stories/data/HolidayHeadlineSectionData.ts new file mode 100644 index 00000000..ecd796af --- /dev/null +++ b/src/stories/data/HolidayHeadlineSectionData.ts @@ -0,0 +1,14 @@ +import {HolidayHeadlineSectionType} from "../../components/BlockContentTypes"; + +const holidayHeadlineData: HolidayHeadlineSectionType = { + "slug": { + "current": "merry-christmas-and-happy-new-year", + "_type": "slug" + }, + "contentText": "Merry Christmas & Happy New Year!", + "holidayDate": "2023-12-25", + "contentSubtext": "We are closed for Christmas December 25, 2023 and New Years Day on January 1, 2024. We wish you and your family and friends a Happy Holiday Season. Note: Closing time on Christmas Eve TBD", + "name": "Merry Christmas and happy new year", +} + +export default holidayHeadlineData \ No newline at end of file diff --git a/src/stories/the-drinkery/DrinkeryAlbumSection.stories.tsx b/src/stories/the-drinkery/DrinkeryAlbumSection.stories.tsx new file mode 100644 index 00000000..7400bf7a --- /dev/null +++ b/src/stories/the-drinkery/DrinkeryAlbumSection.stories.tsx @@ -0,0 +1,39 @@ +import type {Meta, StoryObj} from '@storybook/react'; +import {ThemeProvider} from "@mui/material/styles"; +import getThemeFromSanity from "../../components/customized-theme-provider/getThemeFromSanity"; +import DigitalResumeThemeData from "../data/DigitalResumeThemeData"; +import {QueryClientProvider} from "@tanstack/react-query"; +import {queryClient} from "../../queryClient"; +import TheDrinkerySpecials from "../../components/templates/the-drinkery/TheDrinkerySpecials"; +import drinkerySpecialsSectionData from "../data/DrinkerySpecialsSectionData"; +import DrinkeryThemeData from "../data/DrinkeryThemeData"; +import TheDrinkeryAlbumSection from "../../components/templates/the-drinkery/TheDrinkeryAlbumSection"; +import drinkeryAlbumData from "../data/DrinkeryAlbumSectionData"; + +const meta: Meta = { + title: "The Drinkery/Album Section", + component: TheDrinkeryAlbumSection, +}; + +export default meta; +type Story = StoryObj; + + +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/react/api/csf + * to learn how to use render functions. + */ + +export const DrinkeryAlbumSectionComplete: Story = { + args: { + sectionData: drinkeryAlbumData, + }, + render: ({sectionData}) => +
+ + + +
+}; \ No newline at end of file diff --git a/src/stories/the-drinkery/DrinkeryFooter.stories.tsx b/src/stories/the-drinkery/DrinkeryFooter.stories.tsx new file mode 100644 index 00000000..d5bd9698 --- /dev/null +++ b/src/stories/the-drinkery/DrinkeryFooter.stories.tsx @@ -0,0 +1,36 @@ +import type {Meta, StoryObj} from '@storybook/react'; +import homePageResumeData from "../data/HomePageData"; +import Header from "../../components/templates/mackenzies-mind/header/Header"; +import getThemeFromSanity from "../../components/customized-theme-provider/getThemeFromSanity"; +import DigitalResumeThemeData from "../data/DigitalResumeThemeData"; +import {ThemeProvider} from "@mui/material/styles"; +import DrinkeryThemeData from "../data/DrinkeryThemeData"; +import drinkeryHeaderData from "../data/DrinkeryHeaderData"; +import Footer from "../../components/templates/mackenzies-mind/footer/Footer"; +import drinkeryFooterData from "../data/DrinkeryFooterData"; +import PageProvider from "../../components/page-context/PageProvider"; +import DrinkeryHomePageData from "../data/DrinkeryHomePageData"; + + +const meta: Meta = { + title: "The Drinkery/Page Components/Footer", + component: Footer, +}; + +export default meta; +type Story = StoryObj; + + +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/react/api/csf + * to learn how to use render functions. + */ + +export const PageFooter: Story = { + args: { + pageFooter: drinkeryFooterData + }, + render: ({pageFooter}) => +
, +}; \ No newline at end of file diff --git a/src/stories/the-drinkery/DrinkeryHeader.stories.tsx b/src/stories/the-drinkery/DrinkeryHeader.stories.tsx new file mode 100644 index 00000000..738c3be3 --- /dev/null +++ b/src/stories/the-drinkery/DrinkeryHeader.stories.tsx @@ -0,0 +1,32 @@ +import type {Meta, StoryObj} from '@storybook/react'; +import homePageResumeData from "../data/HomePageData"; +import Header from "../../components/templates/mackenzies-mind/header/Header"; +import getThemeFromSanity from "../../components/customized-theme-provider/getThemeFromSanity"; +import DigitalResumeThemeData from "../data/DigitalResumeThemeData"; +import {ThemeProvider} from "@mui/material/styles"; +import DrinkeryThemeData from "../data/DrinkeryThemeData"; +import drinkeryHeaderData from "../data/DrinkeryHeaderData"; + + +const meta: Meta = { + title: "The Drinkery/Page Components/Header", + component: Header, +}; + +export default meta; +type Story = StoryObj; + + +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/react/api/csf + * to learn how to use render functions. + */ + +export const Primary: Story = { + args: { + pageHeader: drinkeryHeaderData + }, + render: ({pageHeader}) => +
, +}; \ No newline at end of file diff --git a/src/stories/the-drinkery/DrinkeryOtherSideSection.stories.tsx b/src/stories/the-drinkery/DrinkeryOtherSideSection.stories.tsx new file mode 100644 index 00000000..5154086e --- /dev/null +++ b/src/stories/the-drinkery/DrinkeryOtherSideSection.stories.tsx @@ -0,0 +1,36 @@ +import type {Meta, StoryObj} from '@storybook/react'; +import {ThemeProvider} from "@mui/material/styles"; +import getThemeFromSanity from "../../components/customized-theme-provider/getThemeFromSanity"; +import {QueryClientProvider} from "@tanstack/react-query"; +import {queryClient} from "../../queryClient"; +import DrinkeryThemeData from "../data/DrinkeryThemeData"; +import TheDrinkeryOtherSideSection from "../../components/templates/the-drinkery/TheDrinkeryOtherSideSection"; +import drinkeryTheOtherSideSectionData from "../data/DrinkeryTheOtherSideSectionData"; + +const meta: Meta = { + title: "The Drinkery/The Other Side Section", + component: TheDrinkeryOtherSideSection, +}; + +export default meta; +type Story = StoryObj; + + +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/react/api/csf + * to learn how to use render functions. + */ + +export const DrinkeryTheOtherSideSectionComplete: Story = { + args: { + sectionData: drinkeryTheOtherSideSectionData, + }, + render: ({sectionData}) => +
+ + + +
+}; \ No newline at end of file diff --git a/src/stories/the-drinkery/DrinkerySpecialsSection.stories.tsx b/src/stories/the-drinkery/DrinkerySpecialsSection.stories.tsx new file mode 100644 index 00000000..b68e98e4 --- /dev/null +++ b/src/stories/the-drinkery/DrinkerySpecialsSection.stories.tsx @@ -0,0 +1,37 @@ +import type {Meta, StoryObj} from '@storybook/react'; +import {ThemeProvider} from "@mui/material/styles"; +import getThemeFromSanity from "../../components/customized-theme-provider/getThemeFromSanity"; +import DigitalResumeThemeData from "../data/DigitalResumeThemeData"; +import {QueryClientProvider} from "@tanstack/react-query"; +import {queryClient} from "../../queryClient"; +import TheDrinkerySpecials from "../../components/templates/the-drinkery/TheDrinkerySpecials"; +import drinkerySpecialsSectionData from "../data/DrinkerySpecialsSectionData"; +import DrinkeryThemeData from "../data/DrinkeryThemeData"; + +const meta: Meta = { + title: "The Drinkery/Specials Section", + component: TheDrinkerySpecials, +}; + +export default meta; +type Story = StoryObj; + + +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/react/api/csf + * to learn how to use render functions. + */ + +export const DrinkerySpecialsSectionComplete: Story = { + args: { + sectionData: drinkerySpecialsSectionData, + }, + render: ({sectionData, email}) => +
+ + + +
+}; \ No newline at end of file diff --git a/src/stories/the-drinkery/DrinkeryStaffSection.stories.tsx b/src/stories/the-drinkery/DrinkeryStaffSection.stories.tsx new file mode 100644 index 00000000..c992e94c --- /dev/null +++ b/src/stories/the-drinkery/DrinkeryStaffSection.stories.tsx @@ -0,0 +1,41 @@ +import type {Meta, StoryObj} from '@storybook/react'; +import {ThemeProvider} from "@mui/material/styles"; +import getThemeFromSanity from "../../components/customized-theme-provider/getThemeFromSanity"; +import DigitalResumeThemeData from "../data/DigitalResumeThemeData"; +import {QueryClientProvider} from "@tanstack/react-query"; +import {queryClient} from "../../queryClient"; +import TheDrinkerySpecials from "../../components/templates/the-drinkery/TheDrinkerySpecials"; +import drinkerySpecialsSectionData from "../data/DrinkerySpecialsSectionData"; +import DrinkeryThemeData from "../data/DrinkeryThemeData"; +import TheDrinkeryAlbumSection from "../../components/templates/the-drinkery/TheDrinkeryAlbumSection"; +import drinkeryAlbumData from "../data/DrinkeryAlbumSectionData"; +import TheDrinkeryStaffSection from "../../components/templates/the-drinkery/TheDrinkeryStaffSection"; +import drinkeryStaffSectionData from "../data/DrinkeryStaffSectionData"; + +const meta: Meta = { + title: "The Drinkery/Staff Section", + component: TheDrinkeryStaffSection, +}; + +export default meta; +type Story = StoryObj; + + +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/react/api/csf + * to learn how to use render functions. + */ + +export const DrinkeryAlbumSectionComplete: Story = { + args: { + sectionData: drinkeryStaffSectionData, + }, + render: ({sectionData}) => +
+ + + +
+}; \ No newline at end of file diff --git a/src/stories/the-drinkery/HolidayHeadlineSection.stories.tsx b/src/stories/the-drinkery/HolidayHeadlineSection.stories.tsx new file mode 100644 index 00000000..f955e91b --- /dev/null +++ b/src/stories/the-drinkery/HolidayHeadlineSection.stories.tsx @@ -0,0 +1,41 @@ +import type {Meta, StoryObj} from '@storybook/react'; +import {ThemeProvider} from "@mui/material/styles"; +import getThemeFromSanity from "../../components/customized-theme-provider/getThemeFromSanity"; +import DigitalResumeThemeData from "../data/DigitalResumeThemeData"; +import {QueryClientProvider} from "@tanstack/react-query"; +import {queryClient} from "../../queryClient"; +import TheDrinkerySpecials from "../../components/templates/the-drinkery/TheDrinkerySpecials"; +import drinkerySpecialsSectionData from "../data/DrinkerySpecialsSectionData"; +import DrinkeryThemeData from "../data/DrinkeryThemeData"; +import TheDrinkeryAlbumSection from "../../components/templates/the-drinkery/TheDrinkeryAlbumSection"; +import drinkeryAlbumData from "../data/DrinkeryAlbumSectionData"; +import HolidayHeadlineSection from "../../components/holiday-headline-section/HolidayHeadlineSection"; +import HolidayHeadlineSectionData from "../data/HolidayHeadlineSectionData"; + +const meta: Meta = { + title: "The Drinkery/Holiday Headline Section", + component: HolidayHeadlineSection, +}; + +export default meta; +type Story = StoryObj; + + +/* + *👇 Render functions are a framework specific feature to allow you control on how the component renders. + * See https://storybook.js.org/docs/react/api/csf + * to learn how to use render functions. + */ + +export const DrinkeryHolidayHeadlineSectionComplete: Story = { + args: { + sectionData: HolidayHeadlineSectionData, + }, + render: ({sectionData}) => +
+ + + +
+}; \ No newline at end of file