121 | {blog?.title} 122 |
123 | 124 |
125 | {date} •
126 | {formatter.format(blog.views)} views •
127 | {blog?.readTime} min read
128 | {blog?.canonicalUrl && (
129 |
97 | Android's Volume Control 98 |
99 |92 | Evervault's Encrypted Card 93 |
94 |115 | {text} 116 |
117 | 118 |121 | Ness 122 |
123 |129 | A points-based health and wellness credit card offering rewards and 130 | benefits with top brands to incentivize members to spend and live 131 | healthily. 132 |
133 | 134 |135 | PCI Compliance 136 |
137 |11 | Jhey's Book A Demo Button 12 |
13 |
25 | This was my attempt at recreating this{' '}
26 |
31 | tweet
32 |
16 | Spotify's Now Playing with Framer Motion 17 |
18 |29 | Socials 30 |
31 |73 | These are the top Spotify tracks and artists that I've been 74 | listening to this month! 75 |
76 |79 | Top Tracks 80 | (This Month) 81 |
82 | 83 |112 | No tracks available at the moment. Check back later! 113 |
114 | )} 115 |120 | Top Artists 121 | (This Month) 122 |
123 | 124 |139 | {artist?.name} 140 |
141 | 142 |150 | No artists available at the moment. Check back later! 151 |
152 | )} 153 |35 | Testimonials from colleagues and clients 36 |
37 |42 | No testimonials yet. 43 |
44 |
45 | Want to be the first?{' '}
46 |
51 | Get in touch
52 |
86 | {testimonial.company} 87 |
88 | )} 89 |90 | "{testimonial.quote}" 91 |
92 |104 | {testimonial.author} 105 |
106 | {testimonial.role && ( 107 |108 | {testimonial.role} 109 |
110 | )} 111 |59 | Work 60 |
61 |100 | {item.company} 101 |
102 | {item?.roles?.map((role) => ( 103 |105 | {role?.title} 106 |
107 |108 | {role?.date} 109 |
110 | {role.points?.map((point, index) => ( 111 |{point}
114 |
42 | {props?.children}
43 |
44 | );
45 | };
46 |
47 | export default CodeBlock;
48 |
--------------------------------------------------------------------------------
/src/components/BackToTop.tsx:
--------------------------------------------------------------------------------
1 | 'use client';
2 |
3 | import React from 'react';
4 |
5 | export const BackToTop = () => {
6 | const [showBackToTop, setShowBackToTop] = React.useState(false);
7 |
8 | React.useEffect(() => {
9 | const handleScroll = () => {
10 | if (window.scrollY > 200) {
11 | setShowBackToTop(true);
12 | } else {
13 | setShowBackToTop(false);
14 | }
15 | };
16 |
17 | window.addEventListener('scroll', handleScroll);
18 |
19 | return () => {
20 | window.removeEventListener('scroll', handleScroll);
21 | };
22 | }, []);
23 |
24 | return showBackToTop ? (
25 |
39 | ) : null;
40 | };
41 |
--------------------------------------------------------------------------------
/src/components/Banner.tsx:
--------------------------------------------------------------------------------
1 | import Link from 'next/link';
2 | import { HIRE_MAIL } from 'services/constants';
3 |
4 | export const Banner = () => {
5 | if (process.env.SHOWBANNER === 'false') {
6 | return null;
7 | }
8 |
9 | return (
10 | 12 | Hi, I am open to new collaboration opportunities. Know about 13 | 14 | 15 | {' '} 16 | me & my work here{' '} 17 | 18 | 19 | and reach me via 20 | 21 | 22 | {' '} 23 | mail{' '} 24 | 25 | 26 | or below socials. 27 |
28 |{blog.title}
29 |
32 | {date}
33 | {blog.views && (
34 |
55 | {blog.summary} 56 |
57 |17 | Top Blogs 18 |
19 | 20 | {blogs?.map((blog, index) => { 21 | return17 | Shubham Verma 18 |
*/} 19 |
20 | I'm Shubham Verma, an
21 | engineer, learner and builder.
22 | {CURRENT_TITLE} at {CURRENT_ORGANIZATION}
23 |
24 | Based out of {CITY}, {COUNTRY}
27 | I like to build open source tools and write articles. 28 |
*/} 29 | 30 |22 | {props.children} 23 |24 | ), 25 | pre: (props: any) => { 26 | return ( 27 |
28 | {props.children} 29 |30 | ); 31 | }, 32 | code(props) { 33 | return
{project.title}
13 |16 | {project.summary} 17 |
18 |15 | Featured Projects 16 |
17 | 18 | {projects?.map((project, index) => { 19 | return221 | Queue 222 |
223 |231 | Recently Played 232 |
233 |Now Playing
298 |
310 | Queue empty,{' '}
311 | {/* biome-ignore lint/a11y/useKeyWithClickEvents:
{song.title}
381 |{song.artist}
382 |{talk.title}
19 | {talk.time && ( 20 |{talk.time}
21 | )} 22 |{talk.description}
25 | )} 26 |11 | Talks 12 |
13 | 14 | {talks?.map((talk) => ( 15 |27 | Found this blog helpful? Share it with your friends! 28 |
29 |{desc}
} 36 |37 | {author && `By ${author}`} {date && `• ${date}`}{' '} 38 | {readTime && `• ${readTime} min read`} 39 |
40 |