Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions src/components/screens/AppScreen/AppScreen.scss
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
font-family: 'Invasion';
}

.mint {
.collection {
border-color: transparent;
color: white;
animation: pulse2 infinite 1200ms, mintBg infinite 2400ms;
Expand All @@ -46,7 +46,7 @@
}
}

.collection {
.blog {
border-color: transparent;
color: white;
animation: pulse2 infinite 1200ms, collectionBg infinite 2400ms;
Expand All @@ -58,7 +58,7 @@
}

50% {
background-color: #ffbf00;
background-color: #ffbf01;
box-shadow: 0 0 5px #ffbf00;
}

Expand Down Expand Up @@ -92,7 +92,7 @@
}
}

.blog {
.instagram {
border-color: transparent;
color: white;
animation: pulse2 infinite 1200ms, blogBg infinite 2400ms;
Expand Down
98 changes: 66 additions & 32 deletions src/components/screens/AppScreen/AppScreen.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { motion } from 'framer-motion';
import { useEffect, useState } from 'react';
import { useRecoilState } from 'recoil';
import { control } from '../../../state';
import { CONTROLS } from '../../../types';
import './AppScreen.scss';
import { motion } from "framer-motion";
import { useEffect, useState } from "react";
import { useRecoilState } from "recoil";
import { control } from "../../../state";
import { CONTROLS } from "../../../types";
import "./AppScreen.scss";
interface Props {
onBack: () => void;
}
Expand All @@ -12,20 +12,23 @@ function AppScreen({ onBack }: Props) {
const [controlState, setControlState] = useRecoilState(control);
const [menuIndex, setMenuIndex] = useState(0);

const MINT = 'https://quixotic.io/launchpad/0x5c9D55b78FEBCC2061715BA4f57EcF8EA2711F2c';
// const COLLECTION = 'https://quixotic.io/';
const COLLECTION = 'https://quixotic.io/collection/motorheadz';
const TWITTER = 'https://twitter.com/jvmi_';
const MIRROR = 'https://mirror.xyz/0x57D1eAE9f0972723F0e78EAF4e6C08e90565206F/AtKMzoVY1qzrvA1gal1XqJv74bpx-sg9ptv5TDw2maU';
const COLLECTION = "https://opensea.io/collection/motorheadz-optimism";
const BLOG =
"https://mirror.xyz/0x57D1eAE9f0972723F0e78EAF4e6C08e90565206F/AtKMzoVY1qzrvA1gal1XqJv74bpx-sg9ptv5TDw2maU";
const TWITTER = "https://twitter.com/jvmi_";
const INSTAGRAM = "https://www.instagram.com/jvmi_art/";

useEffect(() => {
if (controlState.last === CONTROLS.B) {
const newControlState = { last: '', history: [...controlState.history] };
const newControlState = { last: "", history: [...controlState.history] };
setControlState(newControlState);
onBack();
}
if (controlState.last === CONTROLS.RIGHT || controlState.last === CONTROLS.LEFT) {
const newControlState = { last: '', history: [...controlState.history] };
if (
controlState.last === CONTROLS.RIGHT ||
controlState.last === CONTROLS.LEFT
) {
const newControlState = { last: "", history: [...controlState.history] };
setControlState(newControlState);
switch (menuIndex) {
case 0:
Expand All @@ -47,23 +50,26 @@ function AppScreen({ onBack }: Props) {
if (controlState.last === CONTROLS.A) {
switch (menuIndex) {
case 0:
window.open(MINT, '_blank');
window.open(COLLECTION, "_blank");
break;
case 1:
window.open(COLLECTION, '_blank');
window.open(BLOG, "_blank");
break;
case 2:
window.open(TWITTER, '_blank');
window.open(TWITTER, "_blank");
break;
case 3:
window.open(MIRROR, '_blank');
window.open(INSTAGRAM, "_blank");
break;
default:
}
}

if (controlState.last === CONTROLS.UP || controlState.last === CONTROLS.DOWN) {
const newControlState = { last: '', history: [...controlState.history] };
if (
controlState.last === CONTROLS.UP ||
controlState.last === CONTROLS.DOWN
) {
const newControlState = { last: "", history: [...controlState.history] };
setControlState(newControlState);
switch (menuIndex) {
case 0:
Expand All @@ -85,27 +91,55 @@ function AppScreen({ onBack }: Props) {

const variants = {
visible: { opacity: 1 },
hidden: { opacity: 0 }
hidden: { opacity: 0 },
};

return (
<div className='appScreen__container'>
<div className='appCard__wrapper'>
<motion.div initial='hidden' animate='visible' variants={variants} transition={{ duration: 0.75, delay: 0 }} className={`appCard ${menuIndex === 0 ? 'mint' : ''}`}>
mint
</motion.div>
<motion.div initial='hidden' animate='visible' variants={variants} transition={{ duration: 0.75, delay: 0.15 }} className={`appCard ${menuIndex === 1 ? 'collection' : ''}`}>
<div className="appScreen__container">
<div className="appCard__wrapper">
<motion.div
initial="hidden"
animate="visible"
variants={variants}
transition={{ duration: 0.75, delay: 0 }}
className={`appCard ${menuIndex === 0 ? "collection" : ""}`}
>
collection
</motion.div>
<motion.div initial='hidden' animate='visible' variants={variants} transition={{ duration: 0.75, delay: 0.3 }} className={`appCard ${menuIndex === 2 ? 'twitter' : ''}`}>
<motion.div
initial="hidden"
animate="visible"
variants={variants}
transition={{ duration: 0.75, delay: 0.15 }}
className={`appCard ${menuIndex === 1 ? "blog" : ""}`}
>
blog
</motion.div>
<motion.div
initial="hidden"
animate="visible"
variants={variants}
transition={{ duration: 0.75, delay: 0.3 }}
className={`appCard ${menuIndex === 2 ? "twitter" : ""}`}
>
twitter
</motion.div>
<motion.div initial='hidden' animate='visible' variants={variants} transition={{ duration: 0.75, delay: 0.45 }} className={`appCard ${menuIndex === 3 ? 'blog' : ''}`}>
blog
<motion.div
initial="hidden"
animate="visible"
variants={variants}
transition={{ duration: 0.75, delay: 0.45 }}
className={`appCard ${menuIndex === 3 ? "instagram" : ""}`}
>
instagram
</motion.div>
</div>
<motion.p animate={{ y: [100, 0] }} transition={{ duration: 1, delay: 0.5, ease: 'easeOut' }} className='instructions'>
{'arrows to navigate, A to select, B to exit'}
<motion.p
animate={{ y: [100, 0] }}
transition={{ duration: 1, delay: 0.5, ease: "easeOut" }}
className="instructions"
>
{"arrows to navigate, A to select, B to exit"}
</motion.p>
</div>
);
Expand Down
33 changes: 24 additions & 9 deletions src/components/screens/HomeScreen/constants.tsx
Original file line number Diff line number Diff line change
@@ -1,20 +1,35 @@
import A from '../../../assets/nfts/a.webp';
import B from '../../../assets/nfts/b.webp';
import C from '../../../assets/nfts/c.webp';
import A from "../../../assets/nfts/a.webp";
import B from "../../../assets/nfts/b.webp";
import C from "../../../assets/nfts/c.webp";

export const images = [
[A, B, C],
[A, B, C],
[A, B, C],
[A, B, C]
[A, B, C],
];

export const titles = ['mint', 'collection', 'twitter', 'blog'];
export const titles = ["collection", "blog", "twitter", "instagram"];

export const subtitles = ['is free on quixotic', 'check out the rest of the gang', 'my twitter account ', 'my stream of consciousness'];
export const subtitles = [
"is free on quixotic",
"check out the rest of the gang",
"my twitter account ",
"my stream of consciousness",
];

export const imgs = ['../../../assets/nfts/green.png', '../../../assets/nfts/green.png', '../../../assets/nfts/green.png', '../../../assets/nfts/green.png'];
export const imgs = [
"../../../assets/nfts/green.png",
"../../../assets/nfts/green.png",
"../../../assets/nfts/green.png",
"../../../assets/nfts/green.png",
];

export const bgColors = ['#EC1D25', '#4F54A4', '#FCB715', '#232331'];
export const bgColors = ["#EC1D25", "#4F54A4", "#FCB715", "#232331"];

export const links = ['https://quixotic.io/', 'https://quixotic.io/', 'https://twitter.com/dropshadoe', 'https://mirror.xyz/'];
export const links = [
"https://opensea.io/collection/motorheadz-optimism",
"https://twitter.com/dropshadoe",
"https://mirror.xyz/",
"https://www.instagram.com/jvmi_art/",
];
Loading