init nuxt

This commit is contained in:
F53 2023-11-01 12:58:34 -06:00
parent 832928a0be
commit d519f2c7bb
49 changed files with 11015 additions and 30097 deletions

View file

@ -1,47 +0,0 @@
name: CI/CD
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16.x]
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Cache dependencies
uses: actions/cache@v2
with:
path: |
**/node_modules
key: ${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
- name: Install dependencies
run: npm install
- name: Build
run: npm run build
- name: Deploy
run: |
git config --global user.name $user_name
git config --global user.email $user_email
git remote set-url origin https://${github_token}@github.com/${repository}
npm run deploy
env:
user_name: 'github-actions[bot]'
user_email: 'github-actions[bot]@users.noreply.github.com'
github_token: ${{ secrets.ACTIONS_DEPLOY_ACCESS_TOKEN }}
repository: ${{ github.repository }}

75
.github/workflows/nuxtjs.yml vendored Normal file
View file

@ -0,0 +1,75 @@
# Sample workflow for building and deploying a Nuxt site to GitHub Pages
#
# To get started with Nuxt see: https://nuxtjs.org/docs/get-started/installation
#
name: Deploy Nuxt site to Pages
on:
# Runs on pushes targeting the default branch
push:
branches: [main]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: pages
cancel-in-progress: false
jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: '16'
cache: npm
# - name: Setup Pages
# uses: actions/configure-pages@v3
# with:
# # Automatically inject router.base in your Nuxt configuration file and set
# # target to static (https://nuxtjs.org/docs/configuration-glossary/configuration-target/).
# #
# # You may remove this line if you want to manage the configuration yourself.
# static_site_generator: nuxt
- name: Restore cache
uses: actions/cache@v3
with:
path: |
dist
.nuxt
key: ${{ runner.os }}-nuxt-build-${{ hashFiles('dist') }}
restore-keys: |
${{ runner.os }}-nuxt-build-
- name: Install dependencies
run: npm ci
- name: Static HTML export with Nuxt
run: npm run generate
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
with:
path: ./dist
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2

37
.gitignore vendored
View file

@ -1,23 +1,24 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # Nuxt dev/build outputs
.output
.data
.nuxt
.nitro
.cache
dist
# dependencies # Node dependencies
/node_modules node_modules
/.pnp
.pnp.js
# testing # Logs
/coverage logs
*.log
# production # Misc
/build
# misc
.DS_Store .DS_Store
.env.local .fleet
.env.development.local .idea
.env.test.local
.env.production.local
npm-debug.log* # Local env files
yarn-debug.log* .env
yarn-error.log* .env.*
!.env.example

5
.vscode/extensions.json vendored Normal file
View file

@ -0,0 +1,5 @@
{
"recommendations": [
"nuxtr.nuxt-vscode-extentions"
]
}

39
.vscode/settings.json vendored Normal file
View file

@ -0,0 +1,39 @@
{
// Enable the ESlint flat config support
"eslint.experimental.useFlatConfig": true,
// Disable the default formatter, use eslint instead
"prettier.enable": false,
"editor.formatOnSave": false,
// Auto fix
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit",
"source.organizeImports": "never"
},
// Silent the stylistic rules in you IDE, but still auto fix them
"eslint.rules.customizations": [
{ "rule": "style/*", "severity": "off" },
{ "rule": "*-indent", "severity": "off" },
{ "rule": "*-spacing", "severity": "off" },
{ "rule": "*-spaces", "severity": "off" },
{ "rule": "*-order", "severity": "off" },
{ "rule": "*-dangle", "severity": "off" },
{ "rule": "*-newline", "severity": "off" },
{ "rule": "*quotes", "severity": "off" },
{ "rule": "*semi", "severity": "off" }
],
// Enable eslint for all supported languages
"eslint.validate": [
"javascript",
"typescript",
"vue",
"html",
"markdown",
"json",
"jsonc",
"yaml"
]
}

View file

@ -1,4 +1 @@
# F53's Personal Site # F53's Personal Site
I orignally made my site in pure JS HTML and CSS while I was still learning the basics.
This is a refactor to react so I can make stuff nice

5
app.vue Normal file
View file

@ -0,0 +1,5 @@
<template>
<div>
<NuxtWelcome />
</div>
</template>

17
assets/styles/font.scss Normal file
View file

@ -0,0 +1,17 @@
// optimal rendering stuff
body {
font-family: sans-serif;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-text-size-adjust: 100%;
}
// fix weird font color in dialog
dialog { color: inherit; }
// no default margins
h1, h2, h3, h4, h5, h6, p, span, a, strong, em, blockquote, cite, q, abbr, del, ins, mark, sub, sup, code, pre, kbd, var, samp, ol, ul {
margin: unset;
}

37
assets/styles/layout.scss Normal file
View file

@ -0,0 +1,37 @@
body {
// fill screen
margin: 0;
min-height: 100vh;
overflow-x: clip;
// center everything
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.row { display: flex; flex-direction: row; }
.col { display: flex; flex-direction: column; }
@for $i from 1 through 5 {
.gap#{$i} { gap: $i * 0.25rem; }
}
.centerChildren {
display: flex;
justify-content: center;
align-items: center;
}
.spaceBetween { justify-content: space-between; }
.spaceAround { justify-content: space-around; }
.spaceEvenly { justify-content: space-evenly; }
.spacer { flex:1; }
.hidden { visibility: hidden; }
.alignStart { align-self: flex-start; }
.alignCenter { align-self: center; }
.alignEnd { align-self: end; }

5
assets/styles/misc.scss Normal file
View file

@ -0,0 +1,5 @@
// dark!
:root { color-scheme: dark; }
// logical sizing
* { box-sizing: border-box; }

8
eslint.config.js Normal file
View file

@ -0,0 +1,8 @@
// eslint.config.js
import antfu from '@antfu/eslint-config'
export default antfu({
typescript: {
tsconfigPath: 'tsconfig.json',
},
})

7
nuxt.config.ts Normal file
View file

@ -0,0 +1,7 @@
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
devtools: { enabled: true },
typescript: { strict: true, typeCheck: true, shim: false },
css: ['~/assets/styles/layout.scss', '~/assets/styles/misc.scss', '~/assets/styles/font.scss'],
})

40273
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,53 +1,36 @@
{ {
"name": "personal-site", "name": "nuxt-app",
"homepage": "https://f53.dev", "type": "module",
"version": "0.1.0",
"private": true, "private": true,
"scripts": {
"build": "nuxt build",
"dev": "nuxt dev",
"generate": "nuxt generate",
"preview": "nuxt preview",
"postinstall": "nuxt prepare",
"lint": "eslint .",
"lint:fix": "eslint . --fix"
},
"dependencies": { "dependencies": {
"@testing-library/jest-dom": "^5.16.5", "sass": "^1.69.5",
"@testing-library/react": "^13.4.0", "scss": "^0.2.4"
"@testing-library/user-event": "^13.5.0",
"gh-pages": "^4.0.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.4.3",
"react-scripts": "5.0.1",
"react-social-icons": "^5.15.0",
"react-tsparticles": "^2.5.3",
"sass": "^1.56.1",
"tsparticles": "^2.5.3",
"web-vitals": "^2.1.4"
}, },
"devDependencies": { "devDependencies": {
"@svgr/webpack": "^6.2.1" "@antfu/eslint-config": "^1.0.0",
"@nuxt/devtools": "latest",
"eslint": "^8.52.0",
"lint-staged": "^15.0.2",
"nuxt": "^3.8.0",
"simple-git-hooks": "^2.9.0",
"typescript": "^5.2.2",
"vue": "^3.3.7",
"vue-router": "^4.2.5",
"vue-tsc": "^1.8.22"
}, },
"overrides": { "simple-git-hooks": {
"@svgr/webpack": "$@svgr/webpack" "pre-commit": "npx lint-staged"
}, },
"scripts": { "lint-staged": {
"predeploy": "npm run build", "*": "eslint --fix"
"deploy": "gh-pages -d build",
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
} }
} }

View file

@ -1,30 +0,0 @@
<script type="text/javascript">
// Single Page Apps for GitHub Pages
// MIT License
// https://github.com/rafgraph/spa-github-pages
// This script takes the current url and converts the path and query
// string into just a query string, and then redirects the browser
// to the new url with only a query string and hash fragment,
// e.g. https://www.foo.tld/one/two?a=b&c=d#qwe, becomes
// https://www.foo.tld/?/one/two&a=b~and~c=d#qwe
// Note: this 404.html file must be at least 512 bytes for it to work
// with Internet Explorer (it is currently > 512 bytes)
// If you're creating a Project Pages site and NOT using a custom domain,
// then set pathSegmentsToKeep to 1 (enterprise users may need to set it to > 1).
// This way the code will only replace the route part of the path, and not
// the real directory in which the app resides, for example:
// https://username.github.io/repo-name/one/two?a=b&c=d#qwe becomes
// https://username.github.io/repo-name/?/one/two&a=b~and~c=d#qwe
// Otherwise, leave pathSegmentsToKeep as 0.
var pathSegmentsToKeep = 0;
var l = window.location;
l.replace(
l.protocol + '//' + l.hostname + (l.port ? ':' + l.port : '') +
l.pathname.split('/').slice(0, 1 + pathSegmentsToKeep).join('/') + '/?/' +
l.pathname.slice(1).split('/').slice(pathSegmentsToKeep).join('/').replace(/&/g, '~and~') +
(l.search ? '&' + l.search.slice(1).replace(/&/g, '~and~') : '') +
l.hash
);
</script>

View file

@ -1 +0,0 @@
f53.dev

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 KiB

View file

@ -1,45 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#008B8B" />
<meta
name="description"
content="F53's Home Page"
/>
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<title>F53</title>
<!-- Start Single Page Apps for GitHub Pages -->
<script type="text/javascript">
// Single Page Apps for GitHub Pages
// MIT License
// https://github.com/rafgraph/spa-github-pages
// This script checks to see if a redirect is present in the query string,
// converts it back into the correct url and adds it to the
// browser's history using window.history.replaceState(...),
// which won't cause the browser to attempt to load the new url.
// When the single page app is loaded further down in this file,
// the correct url will be waiting in the browser's history for
// the single page app to route accordingly.
(function(l) {
if (l.search[1] === '/' ) {
var decoded = l.search.slice(1).split('&').map(function(s) {
return s.replace(/~and~/g, '&')
}).join('?');
window.history.replaceState(null, null,
l.pathname.slice(0, -1) + decoded + l.hash
);
}
}(window.location))
</script>
<!-- End Single Page Apps for GitHub Pages -->
</head>
<body style="background-color: #1c1c1c;">
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

View file

@ -1,25 +0,0 @@
{
"short_name": "F53",
"name": "F53's Home Page",
"icons": [
{
"src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
},
{
"src": "logo192.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "logo512.png",
"type": "image/png",
"sizes": "512x512"
}
],
"start_url": ".",
"display": "standalone",
"theme_color": "#008B8B",
"background_color": "#1c1c1c"
}

View file

@ -1,24 +0,0 @@
{
"particles": {
"number": {
"value": 50,
"density": {
"enable": true,
"value_area": 800
}
},
"line_linked": {
"enable": true,
"distance": 250,
"color": "#ffffff",
"opacity": 1,
"width": 2
},
"move": {
"enable": true,
"random": true,
"out_mode": "out"
}
},
"retina_detect": true
}

View file

@ -1,3 +0,0 @@
# https://www.robotstxt.org/robotstxt.html
User-agent: *
Disallow:

View file

@ -1,23 +0,0 @@
import { useCallback } from "react";
import { Route, Routes } from "react-router-dom";
import Particles from "react-tsparticles";
import { loadFull } from "tsparticles";
import Home from "./pages/Home";
import Projects from "./pages/Projects";
export default function App() {
const particlesInit = useCallback(async engine => {
await loadFull(engine)
}, []);
return <div id="app" className="col centerChildren">
<Particles id="tsparticles" url="particles.json" init={particlesInit}/>
<Routes>
<Route path="/" element={<Home/>}/>
<Route path="projects" element={<Projects/>}/>
</Routes>
</div>
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

View file

@ -1,13 +0,0 @@
import Spacer from "./Spacer";
export default function ProjectFolder({ title, dateRange, desc, projects}) {
return <panel className="col projectFolder">
<div className="row centerChildren header">
<h2>{title}</h2>
<Spacer/>
<span>{dateRange}</span>
</div>
{desc}
{projects}
</panel>
}

View file

@ -1,21 +0,0 @@
import Spacer from "./Spacer";
export default function ProjectPreview({ title, dateRange, desc, image, video, site, github }) {
return <panel className="row projectPreview">
<img src={image} alt={`icon for ${title}`}/>
<div className="col details">
<div className="row centerChildren header">
<h2>{title}</h2>
<Spacer/>
<span>{dateRange}</span>
</div>
<p>{desc}</p>
<div className="links row">
{video && <a className="link" href={video} >video demo</a>}
{site && <a className="link" href={site} >website</a>}
{github && <a className="link" href={github}>github</a>}
</div>
</div>
</panel>
}

View file

@ -1,3 +0,0 @@
export default function Spacer() {
return <div className="spacer"/>
}

View file

@ -1,3 +0,0 @@
export default function Footer() {
}

View file

@ -1,3 +0,0 @@
export default function Header() {
}

View file

@ -1,17 +0,0 @@
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import { BrowserRouter } from "react-router-dom";
import './styles/index.scss';
import './styles/home.scss';
import './styles/projects.scss';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<BrowserRouter>
<App />
</BrowserRouter>
</React.StrictMode>
);

View file

@ -1,39 +0,0 @@
import { Link } from "react-router-dom";
import { SocialIcon } from 'react-social-icons';
import Spacer from "../components/Spacer";
export default function Home() {
return <div id="home" className="col centerChildren">
<h1>F53</h1>
<panel className="about">
<h2>About Me</h2>
<ul>
<li>Full stack developer, recent graduate of <a href="https://flatironschool.com/campuses/denver/" className="link">FlatIron</a>.</li>
<li>I spend most of my free time in an IDE developing mods or automating repetitive tasks.</li>
<li>Fluent in Java, Python, JS, ReactJS, Ruby, Ruby on Rails</li>
<li>I mainly socialize on Discord, but try check my Email at-least twice daily.</li>
</ul>
</panel>
<panel className="links col">
<h2>Links</h2>
<ul className="row centered centerChildren">
<li><SocialIcon className="button" url="mailto:fseusb@gmail.com"/></li>
<li><SocialIcon className="button" url="https://www.linkedin.com/in/chase-welsh/"/></li>
<li><SocialIcon className="button" url="https://github.com/CodeF53"/></li>
<li><SocialIcon className="button" url="https://twitter.com/CodeF53"/></li>
<li><SocialIcon className="button" url="https://discord.gg/kWajt8G4"/></li>
</ul>
<ul className="row centered">
<Spacer/>
<li><a href="https://blog.f53.dev"><button>blog</button></a></li>
<li><Link to="/projects"><button>projects</button></Link></li>
<Spacer/>
</ul>
</panel>
</div>
}

View file

@ -1,160 +0,0 @@
import ProjectPreview from "../components/ProjectPreview";
import ProjectFolder from "../components/ProjectFolder";
import baritoneIcon from "../assets/project-icons/baritone.png"
import flapIcon from "../assets/project-icons/flap.png"
import horsebuffIcon from "../assets/project-icons/horsebuff.png"
import iceboatIcon from "../assets/project-icons/iceboat.png"
import inhumaneCardsIcon from "../assets/project-icons/inhumane-cards.png"
import mk8Icon from "../assets/project-icons/mk8.png"
import modrinthIcon from "../assets/project-icons/modrinth.png"
import packXBRIcon from "../assets/project-icons/packxbr.png"
import splitgateIcon from "../assets/project-icons/splitgate.png"
import stfuIcon from "../assets/project-icons/stfu.png"
import testWorldIcon from "../assets/project-icons/testworld.png"
import twitterIcon from "../assets/project-icons/twitter.png"
import yelpIcon from "../assets/project-icons/yelp.png"
export default function Projects() {
return <div id="projects" className="col centerChildren">
<h1>Projects</h1>
<ul className="col">
<li>
<ProjectPreview
title="Inhumane Cards"
dateRange="11/2022 - Present"
desc="An online implementation of Cards Against Humanity"
image={inhumaneCardsIcon}
video="https://youtu.be/Y1EwHOdUrEI"
site="https://inhumanecards.com"
github="https://github.com/CodeF53/inhumane-cards/"
/>
</li>
<li>
<ProjectFolder title="Website Recreations" dateRange=""
desc={ <p>
Recreations of various websites for my project at the end of each phase at Flatiron.
<br/>
These were all made in a week, with 1-2 partners.
</p> }
projects={<>
<ProjectPreview
title="Chirp"
dateRange="10/2022 - 11/2022"
desc="A clone of Twitter"
image={twitterIcon}
github="https://github.com/CodeF53/phase-4-project-chirp"
/>
<ProjectPreview
title="Yalp"
dateRange="9/2022 - 10/2022"
desc="A clone of Yelp"
image={yelpIcon}
site="http://yelpclone.petefowler.dev/"
github="https://github.com/dalytimdaly/phase-3-yelp-frontend"
/>
<ProjectPreview
title="Modrinth Clone"
dateRange="8/2022 - 8/2022"
desc="A clone of the Modrinth search frontend made with Pure JS and HTML"
image={modrinthIcon}
site="https://codef53.github.io/phase-1-project-modrinth-search/"
github="https://github.com/CodeF53/phase-1-project-modrinth-search"
/>
</>}>
</ProjectFolder>
</li>
<li>
<ProjectFolder
title="Minecraft Mods"
dateRange="8/2021 - 7/2022"
desc={ <p>
Mods made for the popular Minecraft Java edition
<br/>
These are all QOL(quality of life), nice things to have that smooth the edges of a otherwise rough feature in the game.
<br/>
I am continuing to maintain these to this day
</p> }
projects={<>
<ProjectPreview
title="Quick Test World"
dateRange="7/2022 - 8/2022"
desc="Adds a new world type for quickly making test worlds"
image={testWorldIcon}
video="https://youtu.be/ptrmyV0QTWk"
site="https://modrinth.com/mod/testworld"
github="https://github.com/CodeF53/QuickTestWorld"
/>
<ProjectPreview
title="Cardinal Ice Boats"
dateRange="6/2022 - 7/2022"
desc="Provides Several QOL Utilities for Ice Boating"
image={iceboatIcon}
video="https://youtu.be/pn4UsN_QQ1w"
site="https://modrinth.com/mod/cardinalboats"
github="https://github.com/CodeF53/CardinalIceBoats"
/>
<ProjectPreview
title="For the Love of God Would You Shut Up"
dateRange="4/2022 - 4/2022"
desc="Reverts an annoying change related to note blocks"
image={stfuIcon}
video="https://youtu.be/OQ2EmVMYguU"
site="https://modrinth.com/mod/ftlogwysu"
github="https://github.com/CodeF53/ForTheLoveOfGodWouldYouShutUp-Fabric"
/>
<ProjectPreview
title="Horse Buff"
dateRange="11/2021 - 7/2022"
desc="QOL tweaks for horses"
image={horsebuffIcon}
site="https://modrinth.com/mod/horsebuff"
github="https://github.com/CodeF53/Horse-Buff"
/>
<ProjectPreview
title="AltoClef"
dateRange="8/2021 - 8/2021"
desc="Automation Tools, I made a big pull request for migrating the project to Fabric"
image={baritoneIcon}
github="https://github.com/gaucho-matrero/altoclef/commit/75f9c78e0e747631ebd55b81a4c36300dc6d4e24"
/>
</>}>
</ProjectFolder>
</li>
<li>
<ProjectPreview
title="Mario Kart Mods"
dateRange="3/2022 - 5/2022"
desc="A set of mods that changed how Mario Kart 8 Deluxe Looked and Played"
image={mk8Icon}
/>
</li>
<li>
<ProjectPreview
title="Splitgate TriggerBot"
dateRange="9/2021 - 3/2022"
desc="A script made in Python that automated shooting when your crosshair is over an enemy"
image={splitgateIcon}
/>
</li>
<li>
<ProjectPreview
title="PackXBR"
dateRange="5/2020 - 5/2022"
desc="A utility for automatic application of the XBR scaling algorithm to game textures."
image={packXBRIcon}
video="https://user-images.githubusercontent.com/37855219/165995159-6b8c2c81-4f74-4c7b-be39-377ad06bcea6.mp4"
github="https://github.com/CodeF53/PackXBR"
/>
</li>
<li>
<ProjectPreview
title="Flappy Birb"
dateRange="5/2019 - 11/2020"
desc="A high quality clone of Flappy Bird, with ads, leaderboard, and achievements"
image={flapIcon}
/>
</li>
</ul>
</div>
}

View file

@ -1,18 +0,0 @@
#home {
gap: 1rem;
& > h1 { margin-top: 1rem; font-size: 3rem; }
& > panel {
& > ul { list-style: none; padding-left: 0; }
}
& > .links {
gap: 0.5rem;
& > .row {
gap: 0.25rem;
}
& > ul > li > a > button {
font-size: 1.25rem;
}
}
}

View file

@ -1,82 +0,0 @@
// Assign to parents for changing direction
.row { display: flex; flex-direction: row; }
.col { display: flex; flex-direction: column; }
// Assign to children of row/col to center
.row.centerChildren > *, .row > .centered { align-self: center; margin: auto 0; }
.col.centerChildren > *, .col > .centered { align-self: center; margin: 0 auto; }
// Assign to empty child div to aesthetically fill space
.spacer { flex:1; }
// Font
@import url('https://fonts.googleapis.com/css2?family=Fredoka+One&display=swap');
* {
margin: 0;
font-family: 'Fredoka One', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
// Custom component styling
.labeled_input > label { margin-right: 1rem; }
.invisible { opacity: 0; cursor: default; }
.link { color: var(--acc-color-bright); text-decoration: underline; }
.error { color: #F00; }
panel, .panel {
background-color: var(--bkg-elev1);
backdrop-filter: blur(.25rem);
padding: 1rem;
border-radius: 1rem;
box-shadow: 0 0 0.5rem 0.1rem rgba(0, 0, 0, 0.237);
}
.social-icon {
border: solid 0.333rem var(--bkg-elev1) ;
border-radius: 100%;
&:hover { border-color: var(--bkg-elev2); }
.social-svg {
& > .social-svg-background { fill: var(--txt-color) !important; }
}
}
// HTML default component styling
h1, h2, h3, h4, h5, p, button, span, label, ::marker, svg, ul, a, input, textarea {
margin: 0;
text-decoration: none;
color: var(--txt-color);
}
button, input, textarea {
border: none;
resize: none;
padding: 0.25rem 0.5rem;
border-radius: 100rem;
background-color: var(--bkg-elev1);
&:hover, &:active { background-color: var(--bkg-elev2) }
&.elev2 { &:hover, &:active { background-color: var(--bkg-elev3) } }
&.elev3 { &:hover, &:active { background-color: var(--bkg-elev4) } }
}
.button, button {
transition: scale 100ms ease-in-out;
scale: 0.95;
&:hover { scale: 1 }
&:active { scale: 0.95; }
}
// Variables
:root {
--bkg-color: #1c1c1c;
--bkg-elev1: rgba(255,255,255, 0.05);
--bkg-elev2: rgba(255,255,255, 0.10);
--bkg-elev3: rgba(255,255,255, 0.15);
--bkg-elev4: rgba(255,255,255, 0.20);
--txt-color: #ffffff;
--acc-color-dark: darkcyan;
--acc-color-bright: cyan;
}

View file

@ -1,29 +0,0 @@
#projects {
gap: 2rem;
& > h1 { margin-top: 1rem; font-size: 3rem; }
& > ul {
list-style: none; padding-left: 0;
gap: 1rem;
.projectFolder {
gap: 1rem;
}
& > li .projectPreview {
img { width: 3rem; height: 3rem;}
gap: 1rem;
.details {
width: 100%;
.header {
}
.links {
gap: 0.5rem;
}
}
}
}
}

4
tsconfig.json Normal file
View file

@ -0,0 +1,4 @@
{
// https://nuxt.com/docs/guide/concepts/typescript
"extends": "./.nuxt/tsconfig.json"
}