Skip to content

Commit 6f3ae41

Browse files
committed
update to cmd K navbar and the courses page
1 parent 0bc1982 commit 6f3ae41

File tree

5 files changed

+218
-177
lines changed

5 files changed

+218
-177
lines changed

components/CommandBar.tsx

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,8 @@ const ResultItem = React.forwardRef(
9898
style={{
9999
padding: "8px 16px",
100100
background: active ? "var(--a1)" : "transparent",
101-
borderLeft: `2px solid ${
102-
active ? "var(--sideBorder)" : "transparent"
103-
}`,
101+
borderLeft: `2px solid ${active ? "var(--sideBorder)" : "transparent"
102+
}`,
104103
display: "flex",
105104
alignItems: "center",
106105
justifyContent: "space-between",
@@ -172,6 +171,12 @@ const ResultItem = React.forwardRef(
172171
}
173172
);
174173

174+
const positionerStyle = {
175+
zIndex: 100,
176+
background: "rgba(0, 0, 0, 0.2)",
177+
backdropFilter: "blur(2px)",
178+
};
179+
175180
export default function CommandBar(props) {
176181
const router = useRouter();
177182

@@ -261,6 +266,15 @@ export default function CommandBar(props) {
261266
section: "Contact",
262267
perform: () => window.open("https://dev.to/andre347", "_blank"),
263268
},
269+
{
270+
id: "blueskyAction",
271+
name: "Bluesky",
272+
shortcut: ["bl"],
273+
keywords: "social contact dm bluesky",
274+
section: "Contact",
275+
perform: () =>
276+
window.open("https://bsky.app/profile/andredevries.dev", "_blank"),
277+
},
264278
{
265279
id: "copy",
266280
name: "Copy URL",
@@ -304,7 +318,7 @@ export default function CommandBar(props) {
304318
actions={actions}
305319
>
306320
<KBarPortal>
307-
<KBarPositioner>
321+
<KBarPositioner style={positionerStyle}>
308322
<KBarAnimator style={animatorStyle}>
309323
<KBarSearch style={searchStyle} />
310324
<RenderResults />

components/Header.tsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,10 @@ function Header() {
99
const scrolled = useScroll(50);
1010
return (
1111
<nav
12-
className={`fixed top-0 z-30 left-0 right-0 max-w-3xl px-4 sm:px-6 xl:max-w-4xl xl:px-0 mx-auto transition-all ${
13-
scrolled
12+
className={`fixed top-0 z-30 left-0 right-0 max-w-3xl px-4 sm:px-6 xl:max-w-4xl xl:px-0 mx-auto transition-all ${scrolled
1413
? "border-b border-gray-50 bg-white/50 backdrop-blur-xl"
1514
: "bg-white/0"
16-
} `}
15+
} `}
1716
>
1817
<header className="flex justify-between items-center py-10">
1918
<div onClick={() => setIsOpen(false)}>
@@ -29,10 +28,10 @@ function Header() {
2928
</Link>
3029
</div>
3130
{/* Header for non-mobile screens */}
32-
<div className="text-base leading-5 hidden sm:block">
31+
<div className="text-base leading-5 hidden md:block">
3332
<NavTabs />
3433
</div>
35-
<div className="block sm:hidden">
34+
<div className="block md:hidden">
3635
<button
3736
className="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-orange-400 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white"
3837
aria-expanded="false"
@@ -79,7 +78,7 @@ function Header() {
7978

8079
function MobileHeader({ isOpen, setIsOpen }) {
8180
return (
82-
<div className={`${isOpen ? "block" : "hidden"} sm:hidden`}>
81+
<div className={`${isOpen ? "block" : "hidden"} md:hidden`}>
8382
<div className="px-2 pt-2 pb-3 space-y-1">
8483
{/* <!-- Current: "bg-gray-900 text-white", Default: "text-gray-300 hover:bg-gray-700 hover:text-white" --> */}
8584
<MobileNavLink href="/posts">

components/NavTabs.tsx

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React from "react";
22
import NavLink from "@/lib/NavLink";
33
import { useRouter } from "next/router";
4+
import { useKBar } from "kbar";
45

56
import posthog from "posthog-js";
67

@@ -29,14 +30,15 @@ const defaultRoutes = [routes.home, routes.about];
2930

3031
function NavTabs() {
3132
const router = useRouter();
33+
const { query } = useKBar();
3234
const currPathName = router.pathname;
3335
const routesAsArr = Object.keys(routes).map((r) => routes[r]);
3436

3537
return (
3638
// <div className="py-4 mt-2">
37-
<div className="hidden sm:block">
39+
<div className="hidden md:block">
3840
<div className="">
39-
<nav className="flex" aria-label="Tabs">
41+
<nav className="flex items-center" aria-label="Tabs">
4042
{navItems.map((item, idx) => {
4143
return (
4244
<NavLink href={item.url} key={item.url}>
@@ -53,6 +55,32 @@ function NavTabs() {
5355
</NavLink>
5456
);
5557
})}
58+
<button
59+
aria-label="Search"
60+
type="button"
61+
onClick={query.toggle}
62+
className="ml-4 p-1 text-gray-500 hover:text-gray-900 border border-gray-200 rounded-md text-xs font-medium px-2"
63+
>
64+
<span className="sr-only">Cmd+K</span>
65+
<span className="flex items-center">
66+
<svg
67+
className="w-3 h-3 mr-1"
68+
fill="none"
69+
stroke="currentColor"
70+
viewBox="0 0 24 24"
71+
xmlns="http://www.w3.org/2000/svg"
72+
>
73+
<path
74+
strokeLinecap="round"
75+
strokeLinejoin="round"
76+
strokeWidth="2"
77+
d="M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3"
78+
></path>
79+
</svg>
80+
K
81+
</span>
82+
83+
</button>
5684
</nav>
5785
{/* <div className="hidden max-w-screen-md grid-cols-4 gap-1 mx-auto md:grid">
5886
{defaultRoutes.map((route) => {

pages/courses/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ function Courses() {
1818
<p className="text-lg leading-7 text-gray-500">{courses.subTitle}</p>
1919
</div>
2020

21-
<div className="mt-4 grid gap-12 border-t-2 border-gray-100 pt-10 lg:grid-cols-1 lg:col-gap-5 lg:row-gap-12">
21+
<div className="mt-4 grid gap-16 border-t-2 border-gray-100 pt-10 lg:grid-cols-2 lg:col-gap-5 lg:row-gap-12">
2222
{courses.list.map((course, idx) => {
2323
// calculate duration
2424
const duration = course.videos.reduce((prev, current) => {
@@ -29,7 +29,7 @@ function Courses() {
2929
return (
3030
<div key={idx}>
3131
<Link href={"/courses/[slug]"} as={`/courses/${course.slug}`}>
32-
<div className="border border-gray-200 rounded-lg p-4 max-w-72 w-full cursor-pointer hover:border-gray-300 ease-in-out duration-150 bg-white/50">
32+
<div className="border border-gray-200 rounded-lg p-4 w-full cursor-pointer hover:border-gray-300 ease-in-out duration-150 bg-white/50">
3333
<p className="text-sm leading-5 text-gray-500">
3434
{course.videos.length + ` videos`} &bull;{" "}
3535
<span>{msToTime(duration)}</span>

0 commit comments

Comments
 (0)