-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
25 changed files
with
303 additions
and
65 deletions.
There are no files selected for viewing
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,52 +1,84 @@ | ||
--- | ||
title: Recommendations | ||
subtitle: Read what clients and colleagues have to say | ||
recommendations: | ||
received: | ||
- name: Eric Ma | ||
connection: 1st | ||
title: Engineering Manager + Caregivers ERSG Engagement Co-Chair at Unqork | ||
date: 2024-06-03 | ||
relationship: Eric was senior to Joseph but didn't manage Joseph directly | ||
visibility: All LinkedIn members | ||
recommendation: > | ||
Joe epitomizes the qualities of what like to call a responsible engineer. It's one thing to be good at writing code (which Joe is) and it's another to go the extra mile. | ||
He just doesn't do the work that he's assigned to do. Joe makes sure to understand the why. This is how you get output from an engineering team that is high quality, that catches edge cases, and that truly solves the problems presenting your users, by having an engineer like Joe asking the right questions and leading by example. | ||
I count myself lucky I had the opportunity to rely on his work and envy whoever gets to work with him in his career. | ||
- name: Travis Hubbard | ||
connection: 1st | ||
title: Staff Engineer | Technical Leadership & Mentorship | ||
date: 2024-06-03 | ||
relationship: Travis was senior to Joseph but didn't manage Joseph directly | ||
visibility: All LinkedIn members | ||
recommendation: > | ||
I had the pleasure of working with Joe at Unqork, and he is a fantastic engineer with a remarkable eye for UI/UX and accessibility. Joe excels at asking insightful questions and raising important considerations, helping teams break down work and fully understand requirements. His deeply analytical mindset enables him to solve business challenges in a holistic and effective manner. | ||
Joe is not only a skilled problem-solver but also a great team player. He actively supports his teammates, always being one of the first to jump on calls to answer questions or provide a second pair of eyes. His commitment to driving code quality is evident through his thorough PR comments and willingness to pair with other developers. | ||
I thoroughly enjoyed my time working with Joe, and I believe he would be a brilliant addition to any team. | ||
- name: Nana T. Baffour-Awuah | ||
connection: 1st | ||
title: Writer | Strategist | Consultant | ||
date: 2016-07-23 | ||
relationship: Nana T. worked with Joseph but on different teams | ||
visibility: All LinkedIn members | ||
recommendation: > | ||
Over the two years that I've known Joe, since meeting at Adoptive, I've had the opportunity to work with and get to know one of the most hardworking, creative, resolute and generous people I've met in my career thus far. Joe's work ethic is impeccable, and he is a genuinely generous person who gives of himself to both his work and his team. Joe is an asset--any team would be very lucky to have him! | ||
- name: Matt Staudt | ||
connection: 1st | ||
title: Bootstrap Entrepreneur + Marketing Pro | CEO @ GAME UP® Nutrition | President STAUDT agency | Created/Sold High Rollerz® Jiu Jitsu | ||
date: 2014-03-06 | ||
relationship: Matt worked with Joseph but they were at different companies | ||
visibility: All LinkedIn members | ||
recommendation: > | ||
I wanted to take a moment to recommend Joe Burdick. I have worked with Joe not only in his current role as Founder of Joey Labs but also during both of our time at SGC. Having worked with Joe on multiple projects I am extremely confident in his abilities and work ethic which both exceed what I am accustomed to. Joe is my first call when I have a technical question and he has never ceased to amaze me with his insight and can-do attitude. He is extremely knowledgable and is a problem solver. Joe is a rare find, a pleasure to work with and as a result of his expertise and professionalism is an extremely valuable addition to any team. | ||
- name: Todd Post | ||
connection: 1st | ||
title: Strategic Communications Executive | Senior Public Affairs Advisor | Communications Specialist | Vice President of Communications / In-House + Agency → Humanizing integrated strategic communications | ||
date: 2007-01-24 | ||
relationship: Todd managed Joseph directly | ||
visibility: All LinkedIn members | ||
recommendation: > | ||
Joe's creativity and attention to detail coupled with his great attitude and sense of humor made him a valuable asset to the department, especially when it came to graphic design, web page management, and other technical skills. | ||
- name: Praneeth Moka | ||
company: unqork | ||
avatar: ${basePath}/assets/images/avatars/praneeth.webp | ||
title: Staff Engineer at Unqork | Full Stack Development | ||
shortTitle: Staff Engineer | ||
date: 2024-06-25 | ||
relationship: Praneeth was senior to Joe but didn't manage Joe directly | ||
body: > | ||
I had the pleasure of working with Joe for over 2 years on various projects. Joe is one of the nicest and hardworking individuals I have ever met. Joe has a very good eye for catching things that can be simplified which often helped our team immensely. | ||
Joe has a lot of patience which is a very good asset to have and it was evident in the way he was able to successfully handle long running tasks while also maintaining excellent communication with the team on the progress of the task. He’s always available to help his teammates when they are in need. | ||
Any team would be lucky to have him and I strongly recommend Joe. | ||
- name: Roy V. Sutton | ||
company: unqork | ||
avatar: ${basePath}/assets/images/avatars/roy.webp | ||
title: Director of Engineering at Unqork | ||
shortTitle: Director of Engineering | ||
date: 2024-06-20 | ||
relationship: Roy V. managed Joe directly | ||
body: > | ||
I had the pleasure to manage Joe during my time at Unqork. Joe is someone I consider to be a craftsman. His approach when working with code is to leave the code better than he found it. He has a passion for user interface and for making things right for the users and developers. | ||
One notable project Joe worked on was the company's internal design system. As part of his work, Joe assisted teams throughout the platform with getting the most from the system and helping them leverage the components to reduce code and styling. This work greatly improved readability, maintainability and consistency. In addition, Joe is a person I enjoyed working with. | ||
- name: Travis Hubbard | ||
company: unqork | ||
avatar: ${basePath}/assets/images/avatars/travis.webp | ||
title: Staff Engineer | Technical Leadership & Mentorship | ||
shortTitle: Staff Engineer | ||
date: 2024-06-03 | ||
relationship: Travis was senior to Joe but didn't manage Joe directly | ||
body: > | ||
I had the pleasure of working with Joe at Unqork, and he is a fantastic engineer with a remarkable eye for UI/UX and accessibility. Joe excels at asking insightful questions and raising important considerations, helping teams break down work and fully understand requirements. His deeply analytical mindset enables him to solve business challenges in a holistic and effective manner. | ||
Joe is not only a skilled problem-solver but also a great team player. He actively supports his teammates, always being one of the first to jump on calls to answer questions or provide a second pair of eyes. His commitment to driving code quality is evident through his thorough PR comments and willingness to pair with other developers. | ||
I thoroughly enjoyed my time working with Joe, and I believe he would be a brilliant addition to any team. | ||
- name: Eric Ma | ||
company: unqork | ||
avatar: ${basePath}/assets/images/avatars/eric.webp | ||
title: Engineering Manager + Caregivers ERSG Engagement Co-Chair at Unqork | ||
shortTitle: Engineering Manager | ||
date: 2024-06-03 | ||
relationship: Eric was senior to Joe but didn't manage Joe directly | ||
body: > | ||
Joe epitomizes the qualities of what like to call a responsible engineer. It's one thing to be good at writing code (which Joe is) and it's another to go the extra mile. | ||
He just doesn't do the work that he's assigned to do. Joe makes sure to understand the why. This is how you get output from an engineering team that is high quality, that catches edge cases, and that truly solves the problems presenting your users, by having an engineer like Joe asking the right questions and leading by example. | ||
I count myself lucky I had the opportunity to rely on his work and envy whoever gets to work with him in his career. | ||
- name: Nana T. Baffour-Awuah | ||
company: Adoptive | ||
avatar: ${basePath}/assets/images/avatars/nana.webp | ||
title: Writer | Strategist | Consultant | ||
shortTitle: Writer | ||
date: 2016-07-23 | ||
relationship: Nana T. worked with Joe but on different teams | ||
body: > | ||
Over the two years that I've known Joe, since meeting at Adoptive, I've had the opportunity to work with and get to know one of the most hardworking, creative, resolute and generous people I've met in my career thus far. Joe's work ethic is impeccable, and he is a genuinely generous person who gives of himself to both his work and his team. | ||
Joe is an asset--any team would be very lucky to have him! | ||
- name: Matt Staudt | ||
company: studiographica | ||
avatar: ${basePath}/assets/images/avatars/matt.webp | ||
title: Bootstrap Entrepreneur + Marketing Pro | CEO @ GAME UP® Nutrition | President STAUDT agency | Created/Sold High Rollerz® Jiu Jitsu | ||
shortTitle: CEO, Serial Entrepreneur | ||
date: 2014-03-06 | ||
relationship: Matt worked with Joe but they were at different companies | ||
body: > | ||
I wanted to take a moment to recommend Joe Burdick. I have worked with Joe not only in his current role as Founder of Joey Labs but also during both of our time at SGC. Having worked with Joe on multiple projects I am extremely confident in his abilities and work ethic which both exceed what I am accustomed to. Joe is my first call when I have a technical question and he has never ceased to amaze me with his insight and can-do attitude. He is extremely knowledgable and is a problem solver. Joe is a rare find, a pleasure to work with and as a result of his expertise and professionalism is an extremely valuable addition to any team. | ||
- name: Todd Post | ||
company: ncpc | ||
avatar: ${basePath}/assets/images/avatars/todd.webp | ||
title: Strategic Communications Executive | Senior Public Affairs Advisor | ||
shortTitle: Communications Executive | ||
date: 2007-01-24 | ||
relationship: Todd managed Joe directly | ||
body: > | ||
Joe's creativity and attention to detail coupled with his great attitude and sense of humor made him a valuable asset to the department, especially when it came to graphic design, web page management, and other technical skills. | ||
--- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,164 @@ | ||
"use client" | ||
|
||
import Icon from "@/components/global/Icon" | ||
import RuleHeader from "@/components/global/RuleHeader" | ||
import { useApi } from "@/components/providers/DataProvider" | ||
import { | ||
Carousel, | ||
CarouselApi, | ||
CarouselContent, | ||
CarouselItem, | ||
CarouselNext, | ||
CarouselPrevious, | ||
} from "@/components/ui/carousel" | ||
import convertNewLinesToHTML from "@/lib/convertNewLinesToHTML" | ||
import { Recommendation as RecommendationType } from "@/lib/types" | ||
import { cn } from "@/lib/utils" | ||
import Image from "next/image" | ||
import { useEffect, useState } from "react" | ||
|
||
export default function Recommendations() { | ||
const [api, setApi] = useState<CarouselApi>() | ||
const [current, setCurrent] = useState(0) | ||
const { data } = useApi() | ||
const recommendations: RecommendationType[] = | ||
data.recommendations.attributes.recommendations | ||
|
||
useEffect(() => { | ||
if (!api) return | ||
|
||
api.scrollTo(current) | ||
}, [api, current]) | ||
const carouselButtonClassName = | ||
"relative top-0 left-0 right-0 translate-x-0 translate-y-0" | ||
const renderRecommendation = ( | ||
recommendation: RecommendationType, | ||
index: number, | ||
) => ( | ||
<CarouselItem key={`recommendation-${index}`}> | ||
<div className="grid grid-cols-4 items-start gap-8 lg:items-center"> | ||
<div className="col-span-12 flex flex-col justify-between gap-4 text-pretty xl:col-span-1 xl:h-full xl:min-h-60"> | ||
<div className="flex w-full flex-col-reverse items-center justify-start gap-4 sm:flex-row lg:items-start xl:gap-4"> | ||
<div className="shrink-0 overflow-hidden rounded-full"> | ||
<Image | ||
width={64} | ||
height={64} | ||
src={recommendation.avatar} | ||
alt={`${recommendation.name} avatar image`} | ||
/> | ||
</div> | ||
<div className="flex grow flex-col"> | ||
<RuleHeader className="text-sm font-semibold lg:text-base"> | ||
{recommendation.name} | ||
</RuleHeader> | ||
<small className="text-xs text-muted-foreground lg:text-sm"> | ||
{recommendation.title} | ||
</small> | ||
<div className="text-bold flex items-center gap-1 pt-2 text-xs text-muted-foreground lg:hidden"> | ||
<Icon.badgeInfo className="shrink-0 text-lime-500" size={16} />{" "} | ||
{recommendation.relationship} | ||
</div> | ||
</div> | ||
<div className="flex items-center gap-2 md:gap-4 lg:hidden"> | ||
<CarouselPrevious className={carouselButtonClassName} /> | ||
<CarouselNext className={carouselButtonClassName} /> | ||
</div> | ||
</div> | ||
<div className="text-bold hidden items-center gap-2 pb-1 text-xs text-muted-foreground lg:flex"> | ||
<Icon.badgeInfo className="shrink-0 text-lime-500" />{" "} | ||
{recommendation.relationship} | ||
</div> | ||
</div> | ||
<div className="col-span-12 xl:col-span-3"> | ||
<svg | ||
className="mb-4 hidden h-8 w-8 text-gray-400 dark:text-gray-600 lg:block" | ||
aria-hidden="true" | ||
xmlns="http://www.w3.org/2000/svg" | ||
fill="currentColor" | ||
viewBox="0 0 18 14" | ||
> | ||
<path d="M6 0H2a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4v1a3 3 0 0 1-3 3H2a1 1 0 0 0 0 2h1a5.006 5.006 0 0 0 5-5V2a2 2 0 0 0-2-2Zm10 0h-4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4v1a3 3 0 0 1-3 3h-1a1 1 0 0 0 0 2h1a5.006 5.006 0 0 0 5-5V2a2 2 0 0 0-2-2Z" /> | ||
</svg> | ||
<div | ||
className="prose-scale" | ||
dangerouslySetInnerHTML={{ | ||
__html: convertNewLinesToHTML(recommendation.body), | ||
}} | ||
/> | ||
</div> | ||
</div> | ||
</CarouselItem> | ||
) | ||
|
||
const renderAvatarButtons = ( | ||
recommendation: RecommendationType, | ||
key: number, | ||
) => { | ||
return ( | ||
<button | ||
key={key} | ||
onClick={() => setCurrent(key)} | ||
className="relative flex lg:flex-col" | ||
> | ||
<div | ||
className={cn( | ||
"pointer-events-none shrink-0 overflow-hidden rounded-full shadow-none transition-all", | ||
key !== current && "-z-10 grayscale", | ||
key === current && | ||
"z-10 shadow-2xl ring-2 ring-primary ring-offset-2", | ||
)} | ||
> | ||
<Image | ||
width={64} | ||
height={64} | ||
src={recommendation.avatar} | ||
alt={`${recommendation.name} avatar image`} | ||
/> | ||
</div> | ||
<div | ||
className={cn( | ||
"absolute left-1/2 hidden -translate-x-1/2 flex-col whitespace-nowrap rounded-lg p-2 text-xs shadow-none transition-all lg:flex", | ||
key === current && | ||
"top-full translate-y-2 bg-primary text-center text-primary-foreground shadow-2xl", | ||
key !== current && | ||
"top-1/2 -z-20 -translate-y-1/2 rotate-45 bg-secondary text-start blur-sm filter", | ||
)} | ||
> | ||
<span className="font-bold">{recommendation.name}</span> | ||
<span>{recommendation.shortTitle}</span> | ||
</div> | ||
</button> | ||
) | ||
} | ||
|
||
const renderRecommendations = ( | ||
<Carousel setApi={setApi}> | ||
<CarouselContent> | ||
{recommendations.map(renderRecommendation)} | ||
</CarouselContent> | ||
<div className="mt-12 hidden flex-wrap items-center justify-center gap-10 lg:flex"> | ||
{recommendations.map(renderAvatarButtons)} | ||
</div> | ||
</Carousel> | ||
) | ||
|
||
return ( | ||
<div | ||
className={cn( | ||
"md:py16 items-center justify-center space-y-8 bg-gradient-to-b from-secondary py-8 lg:py-24 xl:py-36", | ||
)} | ||
> | ||
<div className="container space-y-4"> | ||
<header className="space-y-2 pb-12 text-center"> | ||
<RuleHeader side="both" className="font-light"> | ||
{data.recommendations.attributes.title} | ||
</RuleHeader> | ||
<h5 className="text-balance text-3xl font-semibold"> | ||
{data.recommendations.attributes.subtitle} | ||
</h5> | ||
</header> | ||
{renderRecommendations} | ||
</div> | ||
</div> | ||
) | ||
} |
Oops, something went wrong.