diff --git a/components/artCard.js b/components/artCard.js
new file mode 100644
index 0000000..a34dc07
--- /dev/null
+++ b/components/artCard.js
@@ -0,0 +1,21 @@
+import React from "react";
+import ArtCardStyle from "./artCard.style";
+
+function SkillCard({ title, description, image }) {
+ return (
+
+
+ {image && (
+
+
+
+ )}
+
{title}
+
{description}
+
+
+
+ );
+}
+
+export default SkillCard;
diff --git a/components/artCard.style.jsx b/components/artCard.style.jsx
new file mode 100644
index 0000000..61af6fe
--- /dev/null
+++ b/components/artCard.style.jsx
@@ -0,0 +1,20 @@
+import styled from "styled-components";
+
+export default styled.div`
+ width: 33.33%;
+ padding: 10px;
+ .card {
+ background-color: var(--color1);
+ padding: 15px;
+ width: 100%;
+ height: auto;
+ border-radius: 5px;
+ transition: 0.1s;
+ :hover {
+ transform: scale(1.1);
+ }
+ }
+ .card-logo {
+ float: right;
+ }
+`;
diff --git a/components/contact.js b/components/contact.js
index a23a424..a1db578 100644
--- a/components/contact.js
+++ b/components/contact.js
@@ -3,7 +3,127 @@ import { name } from "config";
import { ContactStyle } from "./contact.style";
function Contact() {
- return Contact will be here;
+ const [input, setInput] = React.useState({
+ senderName: "",
+ email: "",
+ message: "",
+ topic: "",
+ });
+ function changeInput(evt) {
+ const { name, value } = evt.target;
+ setInput({
+ ...input,
+ [name]: value,
+ });
+ }
+ function submitForm(evt) {
+ evt.preventDefault();
+ console.log(input);
+ }
+ return (
+
+
+
+ );
}
export default Contact;
diff --git a/components/contact.style.jsx b/components/contact.style.jsx
index 582377e..01ef8d5 100644
--- a/components/contact.style.jsx
+++ b/components/contact.style.jsx
@@ -1,3 +1,243 @@
import styled from "styled-components";
-export const ContactStyle = styled.div``;
+export const ContactStyle = styled.div`
+ padding: 10%;
+ align-items: center;
+ display: flex;
+ height: 100vh;
+ flex-direction: column;
+ justify-content: center;
+ background-image: url("images/background2.jpg");
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
+ .row {
+ display: flex;
+ }
+
+ .column {
+ flex: 50%;
+ }
+
+ /* .form-group-main {
+ background: rgb(2, 0, 28);
+ border-radius: 10px;
+ align-items: center;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ background: linear-gradient(
+ 142deg,
+ rgba(2, 0, 28, 1) 0%,
+ rgba(9, 9, 121, 1) 35%,
+ rgba(0, 212, 255, 1) 100%
+ );
+ height: 40vh;
+ width: 75%;
+ } */
+ @import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro);
+ body {
+ background: #2d3b36 url(http://www.luismruiz.com/img/blured.jpg) no-repeat
+ center center fixed;
+ -webkit-background-size: cover;
+ -moz-background-size: cover;
+ -o-background-size: cover;
+ background-size: cover;
+ padding-top: 100px;
+ }
+
+ form {
+ margin-left: auto;
+ margin-right: auto;
+ width: 343px;
+ height: 510px;
+ padding: 30px;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+ -moz-background-clip: padding;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ background: rgba(0, 0, 0, 0.5);
+ -moz-box-shadow: 0 0 13px 3px rgba(0, 0, 0, 0.5);
+ -webkit-box-shadow: 0 0 13px 3px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 0 13px 3px rgba(0, 0, 0, 0.5);
+ overflow: hidden;
+ }
+
+ .prewritten-info {
+ margin-left: auto;
+ margin-right: auto;
+ width: 343px;
+ height: 510px;
+ padding: 30px;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+ -moz-background-clip: padding;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ background: rgba(0, 0, 0, 0.5);
+ -moz-box-shadow: 0 0 13px 3px rgba(0, 0, 0, 0.5);
+ -webkit-box-shadow: 0 0 13px 3px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 0 13px 3px rgba(0, 0, 0, 0.5);
+ overflow: hidden;
+ }
+
+ .prewritten-info-content {
+ margin-left: auto;
+ margin-right: auto;
+ }
+
+ textarea {
+ /* background: rgba(255, 255, 255, 0.4)
+ url(http://luismruiz.com/img/gemicon_message.png) no-repeat scroll 16px
+ 16px; */
+ width: 276px;
+ resize: none;
+ height: 110px;
+ border: 1px solid rgba(255, 255, 255, 0.6);
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ -moz-background-clip: padding;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ display: block;
+ font-family: "Source Sans Pro", sans-serif;
+ font-size: 18px;
+ color: #fff;
+ padding-left: 20px;
+ padding-right: 20px;
+ padding-top: 12px;
+ margin-bottom: 20px;
+ overflow: hidden;
+ }
+
+ input {
+ width: 276px;
+ height: 48px;
+ border: 1px solid rgba(255, 255, 255, 0.4);
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ -moz-background-clip: padding;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ display: block;
+ font-family: "Source Sans Pro", sans-serif;
+ font-size: 18px;
+ color: #000000;
+ padding-left: 20px;
+ padding-right: 20px;
+ margin-bottom: 20px;
+ }
+
+ .message-input {
+ height: 90px;
+ }
+
+ input[type="submit"] {
+ cursor: pointer;
+ }
+
+ input.name {
+ padding-left: 45px;
+ }
+
+ input.email {
+ padding-left: 45px;
+ }
+
+ input.message {
+ padding-left: 45px;
+ }
+ input.topic {
+ padding-left: 45px;
+ }
+ ::-webkit-input-placeholder {
+ color: #fff;
+ }
+
+ :-moz-placeholder {
+ color: #fff;
+ }
+
+ ::-moz-placeholder {
+ color: #fff;
+ }
+
+ :-ms-input-placeholder {
+ color: #fff;
+ }
+
+ input:focus,
+ textarea:focus {
+ background-color: rgba(0, 0, 0, 0.2);
+ -moz-box-shadow: 0 0 5px 1px rgba(255, 255, 255, 0.5);
+ -webkit-box-shadow: 0 0 5px 1px rgba(255, 255, 255, 0.5);
+ box-shadow: 0 0 5px 1px rgba(255, 255, 255, 0.5);
+ overflow: hidden;
+ color: #fff;
+ }
+
+ .btn {
+ width: 138px;
+ height: 44px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ float: right;
+ /* border: 1px solid rgba(0, 0, 0, 0.2); */
+ border: 1px solid #253737;
+
+ background: rgb(131, 58, 180);
+ background: linear-gradient(
+ 90deg,
+ rgba(131, 58, 180, 1) 0%,
+ rgba(253, 29, 29, 1) 50%,
+ rgba(252, 176, 69, 1) 100%
+ );
+ padding: 10.5px 21px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0,
+ inset rgba(255, 255, 255, 0.7) 0 1px 0;
+ -moz-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0,
+ inset rgba(255, 255, 255, 0.7) 0 1px 0;
+ box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0,
+ inset rgba(255, 255, 255, 0.7) 0 1px 0;
+ text-shadow: #333333 0 1px 0;
+ color: #e1e1e1;
+ }
+
+ .btn:hover {
+ border: 1px solid #253737;
+ text-shadow: #333333 0 1px 0;
+ background: rgb(131, 58, 180);
+ background: linear-gradient(
+ 90deg,
+ rgba(131, 58, 180, 1) 0%,
+ rgba(253, 29, 29, 1) 50%,
+ rgba(252, 176, 69, 1) 100%
+ );
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#fc466b",endColorstr="#3f5efb",GradientType=1);
+ color: #fff;
+ }
+
+ .btn:active {
+ margin-top: 1px;
+ text-shadow: #333333 0 -1px 0;
+ border: 1px solid #253737;
+ background: rgb(131, 58, 180);
+ background: linear-gradient(
+ 90deg,
+ rgba(131, 58, 180, 1) 0%,
+ rgba(253, 29, 29, 1) 50%,
+ rgba(252, 176, 69, 1) 100%
+ );
+ }
+`;
diff --git a/components/discord-activity.jsx b/components/discord-activity.jsx
index 5a82d74..d12dcec 100644
--- a/components/discord-activity.jsx
+++ b/components/discord-activity.jsx
@@ -1,31 +1,30 @@
import React, { useEffect, useState } from "react";
import { DicordActivityStyle } from "./discord-activity.style";
import { useLanyard } from "react-use-lanyard";
+import { discord_id } from "config";
/*
{!loading && JSON.stringify(status, null, 4)}
; */
-var pickedStatus = "";
+const customStatus = [
+ "Searching for Cat Girls",
+ "Watching Anime",
+ "Sleeping",
+ "Studying",
+];
+const statusPicker = () => {
+ return customStatus[Math.floor(Math.random() * customStatus.length)];
+};
export default function DiscordActivity() {
- const { loading, status /*, websocket */ } = useLanyard({
- userId: "457039372009865226",
+ const { loading, status } = useLanyard({
+ userId: discord_id,
socket: true,
});
const [time, setTime] = useState("00:00:00 elapsed");
+ const [pickedStatus] = useState(statusPicker());
const padTo2Digits = (num) => {
return num.toString().padStart(2, "0");
};
- const customStatus = [
- "Searching for Cat Girls",
- "Watching Anime",
- "Sleeping",
- "Studying",
- ];
- const statusPicker = () => {
- if (pickedStatus === "")
- pickedStatus =
- customStatus[Math.floor(Math.random() * customStatus.length)];
- return pickedStatus;
- };
+
const convertMsToHM = (milliseconds) => {
let seconds = Math.floor(milliseconds / 1000);
let minutes = Math.floor(seconds / 60);
@@ -57,8 +56,6 @@ export default function DiscordActivity() {
clearInterval(interval);
};
}, [currentTs, loading]);
- // console.log(status?.discord_status);
- // console.log(status?.activities.length);
if (
!loading &&
(status.discord_status === "online" ||
@@ -106,7 +103,7 @@ export default function DiscordActivity() {
);
} else {
// console.log("Hmmm Recv");
- if (status.activities[1].name === "Spotify") {
+ if (status.activities[1]?.name === "Spotify") {
return (
{!loading && (
@@ -283,7 +280,7 @@ export default function DiscordActivity() {
- {statusPicker()}
+ {pickedStatus}
{/* 00:00:00 elapsed
*/}
diff --git a/components/main.jsx b/components/main.jsx
index e585139..7319d12 100644
--- a/components/main.jsx
+++ b/components/main.jsx
@@ -1,7 +1,7 @@
import React from "react";
import MainStyle from "./main.style";
import IconButton from "@mui/material/IconButton";
-import Button from "@mui/material/Button";
+// import Button from "@mui/material/Button";
import GitHubIcon from "@mui/icons-material/GitHub";
import TwitterIcon from "@mui/icons-material/Twitter";
import LinkedInIcon from "@mui/icons-material/LinkedIn";
@@ -13,8 +13,8 @@ import {
linkedin_url,
facebook_url,
twitter_url,
- email,
- resume_url,
+ // email,
+ // resume_url,
instagram_url,
} from "config";
import DiscordActivity from "./discord-activity";
@@ -24,7 +24,11 @@ function Main() {
-
+
{name}
diff --git a/components/main.style.jsx b/components/main.style.jsx
index 35e0e05..adc63d9 100644
--- a/components/main.style.jsx
+++ b/components/main.style.jsx
@@ -10,6 +10,26 @@ export default styled.main`
background-image: url("/images/background.jpg");
background-size: cover;
background-position: center;
+ .profile-img {
+ border-radius: 50%;
+ background: rgb(251, 167, 63);
+ background: -moz-radial-gradient(
+ circle,
+ rgba(251, 167, 63, 1) 0%,
+ rgba(252, 70, 107, 1) 100%
+ );
+ background: -webkit-radial-gradient(
+ circle,
+ rgba(251, 167, 63, 1) 0%,
+ rgba(252, 70, 107, 1) 100%
+ );
+ background: radial-gradient(
+ circle,
+ rgba(251, 167, 63, 1) 0%,
+ rgba(252, 70, 107, 1) 100%
+ );
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#fba73f",endColorstr="#fc466b",GradientType=1);
+ }
.backimage {
filter: blur(8px);
diff --git a/components/nav.jsx b/components/nav.jsx
index d5fd083..4d12941 100644
--- a/components/nav.jsx
+++ b/components/nav.jsx
@@ -6,6 +6,7 @@ import IconButton from "@mui/material/IconButton";
import Menu from "@mui/material/Menu";
import MenuItem from "@mui/material/MenuItem";
import MenuIcon from "@mui/icons-material/Menu";
+import { discord_id } from "config";
const LINKS = [
{
@@ -17,14 +18,26 @@ const LINKS = [
href: "/resume",
},
{
- title: "Mail Me",
- href: "mailto:me@bravo68web.me",
+ title: "Contact",
+ href: "/contact",
},
+ {
+ title: "Art",
+ href: "/art",
+ },
+ {
+ title: "Blog",
+ href: "https://blog.bravo68web.me",
+ },
+ // {
+ // title: "Mail Me",
+ // href: "mailto:me@bravo68web.me",
+ // },
];
function Nav() {
const { loading, status /*, websocket */ } = useLanyard({
- userId: "457039372009865226",
+ userId: discord_id,
socket: true,
});
@@ -39,7 +52,7 @@ function Nav() {
return (
-
+
echo "Bravo"
@@ -85,7 +98,7 @@ function Nav() {
}}
>
{LINKS.map(({ title, href }, index) => (
-