diff --git a/.github/workflows/staging.yml b/.github/workflows/staging.yml
new file mode 100644
index 0000000..7851d24
--- /dev/null
+++ b/.github/workflows/staging.yml
@@ -0,0 +1,19 @@
+name: build check (mikayla dot dev)
+
+on:
+ push:
+ branches:
+ - staging
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: checkout
+ uses: actions/checkout@v2
+ with:
+ ref: staging
+ - name: install
+ run: npm install
+ - name: build check
+ run: npm run build
diff --git a/app/links/page.tsx b/app/links/page.tsx
new file mode 100644
index 0000000..07db926
--- /dev/null
+++ b/app/links/page.tsx
@@ -0,0 +1,73 @@
+import SocialMedia from "@/components/Links/SocialMedia";
+import Panel from "@/components/ui/Panel";
+import Image from "next/image";
+import { FaBandcamp, FaGithub, FaLinkedin, FaPatreon, FaSoundcloud, FaYoutube } from "react-icons/fa";
+import { RxArrowRight } from "react-icons/rx";
+
+export default function LinksPage() {
+ return (
+
+
+
+ Check out my work on...
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/app/listen/[collectionid]/page.tsx b/app/listen/[collectionid]/page.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/app/listen/page.tsx b/app/listen/page.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/app/read/[postid]/page.tsx b/app/read/[postid]/page.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/app/read/page.tsx b/app/read/page.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/components/Links/FeaturedLink.tsx b/components/Links/FeaturedLink.tsx
new file mode 100644
index 0000000..645c233
--- /dev/null
+++ b/components/Links/FeaturedLink.tsx
@@ -0,0 +1,15 @@
+import type { LinkProps } from ".";
+import Image from "next/image";
+import Panel from "../ui/Panel";
+
+export default function FeaturedLink({ href, label, logo, disabled = false}: LinkProps) {
+ return (
+
+
+
+
+ )
+}
diff --git a/components/Links/SocialMedia.tsx b/components/Links/SocialMedia.tsx
new file mode 100644
index 0000000..8063bf8
--- /dev/null
+++ b/components/Links/SocialMedia.tsx
@@ -0,0 +1,12 @@
+import Link from "next/link";
+import type { LinkProps } from ".";
+
+export default function SocialMedia({ href, label, logo, disabled = false }: LinkProps) {
+ return (
+
+
+ {logo}
+
+
+ )
+}
diff --git a/components/Links/index.tsx b/components/Links/index.tsx
new file mode 100644
index 0000000..15687a1
--- /dev/null
+++ b/components/Links/index.tsx
@@ -0,0 +1,6 @@
+export type LinkProps = {
+ href: string,
+ label: string,
+ logo: JSX.Element,
+ disabled?: boolean
+}
diff --git a/components/Navbar/index.tsx b/components/Navbar/index.tsx
index 051c876..581de0f 100644
--- a/components/Navbar/index.tsx
+++ b/components/Navbar/index.tsx
@@ -1,79 +1,15 @@
import Link from 'next/link'
import { InlineLogo, useColorShift } from '../logo'
-import { useEffect, useState } from 'react';
-import { UseColorShiftReturnType } from '../logo/useColorShift';
+import { useState } from 'react';
import { RxActivityLog } from "react-icons/rx";
-
-interface HoverState {
- about: boolean
- projects: boolean
- contact: boolean
-}
+import { NavbarButton } from '../ui/Button';
const SHIFT_INTERVAL = 3000;
export default function Navbar({ pageIsScrolled = false }) {
const navbarColorShift = useColorShift(SHIFT_INTERVAL);
- const { shift } = navbarColorShift;
-
- const [colors, setColors] = useState>({
- firstColor: 'bg-inherit',
- secondColor: 'bg-inherit',
- thirdColor: 'bg-inherit',
- });
- const [hoverState, setHoverState] = useState({
- about: false,
- projects: false,
- contact: false,
- })
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
- function mouseOver(source: keyof HoverState) {
- const { colorKeys, actualColorReferences, activeIndex } = identifyActiveButton();
-
- setColors({ ...colors, [colorKeys[activeIndex]]: actualColorReferences[activeIndex] });
- setHoverState({ ...hoverState, [source]: true })
- }
-
- function mouseOut(source: keyof HoverState) {
- setHoverState({ ...hoverState, [source]: false })
- setColors({ firstColor: 'bg-inherit', secondColor: 'bg-inherit', thirdColor: 'bg-inherit' });
- }
-
- function identifyActiveButton() {
- const buttonKeys: (keyof HoverState)[] = ['about', 'projects', 'contact'];
- const { firstColor, secondColor, thirdColor } = navbarColorShift;
- const colorKeys = ['firstColor', 'secondColor', 'thirdColor'];
- const actualColorReferences = [firstColor, secondColor, thirdColor];
-
- const activeButton = buttonKeys.find(key => hoverState[key]);
- const activeIndex = buttonKeys.indexOf(activeButton as keyof HoverState);
-
- return { colorKeys, actualColorReferences, activeIndex };
- }
-
- useEffect(() => {
- const interval = setInterval(shift, SHIFT_INTERVAL);
- return () => clearInterval(interval);
- }, [])
-
- useEffect(() => {
- const interval = setInterval(() => {
- const { colorKeys, actualColorReferences, activeIndex } = identifyActiveButton();
-
- for (const key in hoverState) {
- if (hoverState[key as keyof HoverState]) {
- setColors({
- ...colors,
- [colorKeys[activeIndex]]: actualColorReferences[activeIndex]
- });
- }
- }
- }, 1000);
-
- return () => clearInterval(interval);
- }, [shift])
-
return (
<>
@@ -82,17 +18,12 @@ export default function Navbar({ pageIsScrolled = false }) {
-
mouseOver('about')} onMouseOut={() => mouseOut('about')} className={`ml-2 ${colors.firstColor} rounded-lg transition-colors ease-quick-start duration-${hoverState.about ? '[5000ms]' : '0'}`}>
-
About
-
-
-
mouseOver("projects")} onMouseOut={() => mouseOut('projects')} className={`ml-2 ${colors.secondColor} rounded-lg transition-colors ease-quick-start duration-${hoverState.projects ? '[5000ms]' : '0'}`}>
-
Projects
-
-
-
mouseOver('contact')} onMouseOut={() => mouseOut('contact')} className={`ml-2 ${colors.thirdColor} rounded-lg transition-colors ease-quick-start duration-${hoverState.contact ? '[5000ms]' : '0'}`}>
-
Contact
-
+
+
+
+
+
+
diff --git a/components/ui/Button.tsx b/components/ui/Button.tsx
new file mode 100644
index 0000000..b5b4252
--- /dev/null
+++ b/components/ui/Button.tsx
@@ -0,0 +1,17 @@
+import Link from "next/link";
+
+export function NavbarButton({ href, label, children }: { href: string, label?: string, children?: React.ReactNode }) {
+ return (
+
mouseOver('about')} onMouseOut={() => mouseOut('about')} */ className={`ml-2 ${/* colors.firstColor */ ''} rounded-lg transition-colors ease-quick-start duration-${/* hoverState.about ? '[5000ms]' : */ '0'}`}>
+ { label ? (
+
+ { label }
+
+ ) : children ? children : (
+
+ Button text
+
+ )}
+
+ )
+}
diff --git a/public/dropper.svg b/public/dropper.svg
new file mode 100644
index 0000000..fd0fbef
--- /dev/null
+++ b/public/dropper.svg
@@ -0,0 +1,110 @@
+
+
+
...or on your favorite social media platform:
+ +