cCQx|iP(Ccpet+N5
zJsg}c|I%7-u*N{9&HjoaTiQ~jzq;|Y;|S_Ec!AN+=)
z6HYCmW8*kU{hg?SnVJJ)I0DIP`m5a@cP(BaO1cpY>`$VZ&cH)V_%?4nGS|YmR0mUY
zcCNLJBtte4zI>k4Crhk#+p;lhpTEKc1q2dM&=7Irf3*;R4kl+M6H#%EGuqTozV_jYlW}zyt(=eTZ0g9EaxGS-|u$;Yi1i=z&8&Q2bI95lP-~=-ifS
zm`>&kN}C;2rKF7xIuww*`=7e-FF!!&;qQ6;)j9vxg{&fAMMFoj0G7C1VF*FYZ2zw=
z1V4ccv^|X|#ij#Gc2TP<98ftO%7G*eOVbc9Ay+vu19!y)!(g)$gNqJ#xGW8>&HFiS
zuAjmjQs~i?&|7?&!@^Q;i;!BKsJU%KB&OS)vc)!YIRQ0J=m{GPUy%IYj3)l@S2G)UcmF}
zu;>cP_C9GagC%+Hq~ZDtlrW4M*uO7Xg)9;Pl!aa4%;9r2G9RS!`CwLN1H+UvyxMzM
z&`B}UgVL!oude}B)QZDCj;Zjw31}af3LU%%9zXcA85sq+ZCqwNUNlYC$kLHCB7;Am
z8w9Di72_;0_H9`^i&8d*N2N;_BhpYOj4q`|
zVl%!lr}(V$+v|;`?lIuu8um)~)bb^V9}5j(yTDqr>^At1xA`D^+yMdQZ{yW#C0Z{)
zRhO1yZEB0u>6n^xh$Hx%vOvNgc`>~o&9b=k4F&EbuVcMpKF5RL&r;P{9N6TIP5IbJ
zhUANB8k{{^&^CpKpURgK5Q4hr=efZoHsfksKdPTh6Mvkb_J*rZtVd>o#)D$9AL6{D
z!`y8p*nEWyW;$izu;Y#oJ24n&-$tU*!zatE;O!^ew)q5^?a<5;#1v>Y3E9Fg$yVwU
z8S2~lzKEu>!CZ*S--|
z40@t07`OhDyK|Va=H}$LVZWDHaU>IWId7OitNV2C@T4wC55kv(_lat0bUj&yb|cr?Ur&2
zZ5u{s6T|q6q@>z2sLVG~_fXpe3%upK!>B;^V%DSjmZ^AKT#)O
z9QMG*xkz#<+vyVv{c?4lqk(GgZatiGCC7UJx8}NuRN00*s&Vq!6V}1lh4^vLsti)$
z?Ru$w3V1Onkw8p|cAwQ9`1T&_V_A`Jr?hf*
z;EK@2WIzYJ%4v(e^Xv(TECfBzWlfYZ)c%bUA8z;Nr_C?!yP-mMzbgOK$9nmwh;A9V
z`y&aR?40g;yv=NgCCXKGSI^TJi84i%QTa(7BX}V#j=II)LjMHj?$(;`2^|}`Se-zA
zxAJ5`wA=WL^+>-ZPQQ9I`9^A58i$I{=L2gFZDxXqq7H_Ni0t#~D-aTKQViD<;k-!z
z$sGo0v7`<;aDj46iUq2OFyVNokn}9rK+IB)myED0qa=)c3P?Hfy#OLG4l%qQQ3jS|
zqhO<7`Mn$~ViI)k-JcQ@PlIw0amoW7Zf7IqiAwV{&17Mq{e@A2E&_!DW$Qr}ZbT7L
zitg2?LNklYhWObA?7Nh4Pk8=@o`_rY4`&66|5C25{n?d^Zb>;s74)&dr
literal 0
HcmV?d00001
diff --git a/src/sass/master.module.sass b/src/sass/master.module.sass
index ce3148e..e45378e 100644
--- a/src/sass/master.module.sass
+++ b/src/sass/master.module.sass
@@ -6,4 +6,28 @@
.bordered
- border: 1px solid red
\ No newline at end of file
+ border: 1px solid red
+
+@media screen and (max-width: 1000px)
+ .test
+ flex-direction: column
+
+@media screen and (min-width: 1000px)
+ .test
+ flex-direction: row
+
+@media screen and (max-width: 560px)
+ .test
+ margin-left: -10% !important
+
+ .responsiveSkillCard
+ flex-wrap: wrap !important
+
+ .ResponsiveSubSkillCard
+ flex-wrap: wrap !important
+
+@media screen and (max-width: 670px)
+
+ .ResponsiveCard
+ flex-wrap: wrap !important
+ flex-direction: column
\ No newline at end of file
From 42f8d25a84eac058b56d85fe3bfa494e99a43d22 Mon Sep 17 00:00:00 2001
From: alexis-opolka
Date: Thu, 17 Aug 2023 20:25:58 +0200
Subject: [PATCH 5/7] Added TypeScript EsLinter
---
.eslintrc.cjs | 11 +++++++++++
.eslintrc.json | 3 ---
package.json | 6 ++++--
tsconfig.json | 3 ++-
4 files changed, 17 insertions(+), 6 deletions(-)
create mode 100644 .eslintrc.cjs
delete mode 100644 .eslintrc.json
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
new file mode 100644
index 0000000..c926550
--- /dev/null
+++ b/.eslintrc.cjs
@@ -0,0 +1,11 @@
+/* eslint-env node */
+module.exports = {
+ extends: [
+ "eslint:recommended",
+ "plugin:@typescript-eslint/recommended",
+ "next/core-web-vitals",
+ ],
+ parser: "@typescript-eslint/parser",
+ plugins: ["@typescript-eslint"],
+ root: true,
+};
\ No newline at end of file
diff --git a/.eslintrc.json b/.eslintrc.json
deleted file mode 100644
index bffb357..0000000
--- a/.eslintrc.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "extends": "next/core-web-vitals"
-}
diff --git a/package.json b/package.json
index e607cf7..c246d9e 100644
--- a/package.json
+++ b/package.json
@@ -20,7 +20,7 @@
"@types/react": "18.2.17",
"@types/react-dom": "18.2.7",
"dotenv": "^16.3.1",
- "eslint": "8.45.0",
+ "eslint": "^8.47.0",
"eslint-config-next": "13.4.12",
"graphql": "^16.7.1",
"js-yaml-loader": "^1.2.2",
@@ -32,12 +32,14 @@
"sass": "^1.65.1",
"sharp": "^0.32.4",
"styled-components": "^5.3.11",
- "typescript": "5.1.6"
+ "typescript": "^5.1.6"
},
"devDependencies": {
"@lingui/cli": "^4.3.0",
"@lingui/macro": "^4.3.0",
"@lingui/swc-plugin": "^4.0.4",
+ "@typescript-eslint/eslint-plugin": "^6.4.0",
+ "@typescript-eslint/parser": "^6.4.0",
"yaml-loader": "^0.8.0"
}
}
diff --git a/tsconfig.json b/tsconfig.json
index 26fe7a6..0ff518e 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -39,7 +39,8 @@
"**/*.tsx",
".next/types/**/*.ts",
"src/**/*.tsx",
- "src/**/*.ts"
+ "src/**/*.ts",
+ "yaml.d.td"
],
"exclude": [
"node_modules"
From ba04fee0ece166e366f2e8688a0d90a998b591b6 Mon Sep 17 00:00:00 2001
From: alexis-opolka
Date: Thu, 17 Aug 2023 20:48:22 +0200
Subject: [PATCH 6/7] Fixed Lint issues
---
src/app/(portfolio)/(landing-page)/layout.tsx | 9 -------
src/app/(portfolio)/(landing-page)/page.tsx | 2 +-
src/app/(portfolio)/about/layout.tsx | 9 -------
src/app/(portfolio)/settings/layout.tsx | 7 ------
src/app/(portfolio)/settings/page.tsx | 17 ++++++-------
.../projects/[repository]/route.ts | 2 +-
src/app/api/github-requests/projects/route.ts | 2 +-
src/app/layout.tsx | 5 ++--
.../AboutComponents/Education/Education.tsx | 3 +--
.../AboutComponents/SkillCard/SkillCard.tsx | 3 +--
src/components/PortfolioHeader.tsx | 2 +-
src/components/ThemeComponents.tsx | 8 +++---
.../ActionHandlersTypeGuards.tsx | 6 ++---
.../MessageApp/BardDiscussion.tsx | 25 ++++++++++---------
.../MessageApp/MessageAppInterfaces.ts | 3 ++-
.../phoneComponents/PhoneContext.tsx | 8 ++----
.../PhoneStatus/NTPComponents.tsx | 9 +++----
.../phoneComponents/PhoneStatus/Network.tsx | 10 ++++----
src/components/wrappers/DevDebugWrappers.tsx | 7 +++---
src/components/wrappers/LinguiJSWrappers.tsx | 3 ++-
src/components/wrappers/NoSSR.tsx | 1 +
src/headers/themes.ts | 2 +-
22 files changed, 58 insertions(+), 85 deletions(-)
diff --git a/src/app/(portfolio)/(landing-page)/layout.tsx b/src/app/(portfolio)/(landing-page)/layout.tsx
index 94373c5..2cb4260 100644
--- a/src/app/(portfolio)/(landing-page)/layout.tsx
+++ b/src/app/(portfolio)/(landing-page)/layout.tsx
@@ -1,8 +1,5 @@
"use client"
-// Stylesheets and Types imports
-import type { Metadata } from 'next';
-
// NextJS imports
import { PageLayout, Box, Breadcrumbs } from "@primer/react";
@@ -11,12 +8,6 @@ import PortfolioHeader from "@/components/PortfolioHeader";
import PortfolioFooter from "@/components/PortfolioFooter";
-// Exports (Functions, Components, Variables/Constants)
-const metadata: Metadata = {
- title: 'Alexis Opolka Portfolio',
- description: 'The website & portfolio of Alexis Opolka',
-}
-
export default function RootLayout({
children,
}: {
diff --git a/src/app/(portfolio)/(landing-page)/page.tsx b/src/app/(portfolio)/(landing-page)/page.tsx
index 09b7aa5..67257be 100644
--- a/src/app/(portfolio)/(landing-page)/page.tsx
+++ b/src/app/(portfolio)/(landing-page)/page.tsx
@@ -1,7 +1,7 @@
"use client"
// NextJS Imports
-import { Box, Heading, Text } from '@primer/react';
+import { Box, Heading } from '@primer/react';
// Intern Imports
import PhoneComponent from '@/components/phoneComponents/PhoneComponent';
diff --git a/src/app/(portfolio)/about/layout.tsx b/src/app/(portfolio)/about/layout.tsx
index 2344373..3f5fe04 100644
--- a/src/app/(portfolio)/about/layout.tsx
+++ b/src/app/(portfolio)/about/layout.tsx
@@ -1,8 +1,5 @@
"use client"
-// Stylesheets and Types imports
-import type { Metadata } from 'next';
-
// NextJS imports
import { PageLayout, Box, Breadcrumbs } from "@primer/react";
@@ -12,12 +9,6 @@ import PortfolioHeader from "@/components/PortfolioHeader";
import PortfolioFooter from "@/components/PortfolioFooter";
-// Exports (Functions, Components, Variables/Constants)
-const metadata: Metadata = {
- title: 'Alexis Opolka Portfolio',
- description: 'The website & portfolio of Alexis Opolka',
-}
-
export default function AboutLayout({
children,
}: {
diff --git a/src/app/(portfolio)/settings/layout.tsx b/src/app/(portfolio)/settings/layout.tsx
index a917d52..8b3b5b8 100644
--- a/src/app/(portfolio)/settings/layout.tsx
+++ b/src/app/(portfolio)/settings/layout.tsx
@@ -1,8 +1,5 @@
"use client"
-// Stylesheets and Types imports
-import type { Metadata } from 'next';
-
// NextJS imports
import { PageLayout, Box, Breadcrumbs } from "@primer/react";
@@ -13,10 +10,6 @@ import PortfolioFooter from "@/components/PortfolioFooter";
// Exports (Functions, Components, Variables/Constants)
-const metadata: Metadata = {
- title: 'Alexis Opolka Portfolio',
- description: 'The website & portfolio of Alexis Opolka',
-}
export default function SettingsLayout({
children,
diff --git a/src/app/(portfolio)/settings/page.tsx b/src/app/(portfolio)/settings/page.tsx
index 1ba352e..f02acd7 100644
--- a/src/app/(portfolio)/settings/page.tsx
+++ b/src/app/(portfolio)/settings/page.tsx
@@ -1,8 +1,8 @@
"use client"
-import { Pagehead, Box, TabNav, Heading, Text } from "@primer/react";
+import { Pagehead, Box, TabNav, Heading } from "@primer/react";
import { useCallback, useState } from "react";
-import { useRouter, usePathname, useSearchParams } from "next/navigation";
+import { usePathname, useSearchParams } from "next/navigation";
import { BetterSystemStyleObject } from "@primer/react/lib/sx";
// Intern imports
@@ -25,7 +25,6 @@ const panelStyle: BetterSystemStyleObject = {
export default function SettingsPages() {
- const router = useRouter()
const pathname = usePathname()
const searchParams = useSearchParams()
@@ -93,7 +92,7 @@ export default function SettingsPages() {
function DefaultPanel({
panelSetter
}: {
- panelSetter: Function
+ panelSetter: (panel: string) => void
}){
panelSetter('default')
@@ -108,7 +107,7 @@ function DefaultPanel({
function ProfilePanel({
panelSetter
}: {
- panelSetter: Function
+ panelSetter: (panel: string) => void
}){
panelSetter('profile')
@@ -123,7 +122,7 @@ function ProfilePanel({
function ThemePanel({
panelSetter
}: {
- panelSetter: Function
+ panelSetter: (panel: string) => void
}){
@@ -135,14 +134,14 @@ function ThemePanel({
// of the themes (dynamically), and then we're going to map through
// the array to display the themes in a 3x3 grid.
- var themeArrayToDisplay = [];
+ const themeArrayToDisplay = [];
if (themeSchemes.length%3 === 0){
- for (var i = 0; i < themeSchemes.length; i+=3){
+ for (let i = 0; i < themeSchemes.length; i+=3){
themeArrayToDisplay.push([themeSchemes[i], themeSchemes[i+1], themeSchemes[i+2]])
}
} else {
- for (var i = 0; i < themeSchemes.length; i+=3){
+ for (let i = 0; i < themeSchemes.length; i+=3){
if (i+2 < themeSchemes.length){
themeArrayToDisplay.push([themeSchemes[i], themeSchemes[i+1], themeSchemes[i+2]])
} else {
diff --git a/src/app/api/github-requests/projects/[repository]/route.ts b/src/app/api/github-requests/projects/[repository]/route.ts
index e6417d8..1a7cc49 100644
--- a/src/app/api/github-requests/projects/[repository]/route.ts
+++ b/src/app/api/github-requests/projects/[repository]/route.ts
@@ -39,7 +39,7 @@ export async function GET(request: NextRequest) {
const repository = request.nextUrl.pathname.split("/")[request.nextUrl.pathname.split("/").length-1]
- const res: ApolloQueryResult = await client
+ const res: ApolloQueryResult = await client
.query({
query: gql`
query {
diff --git a/src/app/api/github-requests/projects/route.ts b/src/app/api/github-requests/projects/route.ts
index 716fb1e..5dedaae 100644
--- a/src/app/api/github-requests/projects/route.ts
+++ b/src/app/api/github-requests/projects/route.ts
@@ -30,7 +30,7 @@ export const client = new ApolloClient({
});
export async function GET() {
- const res: ApolloQueryResult = await client
+ const res: ApolloQueryResult = await client
.query({
query: gql`
query{
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 87db633..c0b7fa3 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -7,7 +7,7 @@ import styles from "/public/stylesheets/master.module.css";
import { Inter } from 'next/font/google'
import { I18nProvider } from "@lingui/react";
import { i18n } from '@lingui/core';
-import { useEffect, useState } from "react";
+import { useEffect } from "react";
// Intern Imports
import NoSSR from "@/components/wrappers/NoSSR";
@@ -21,7 +21,7 @@ const inter = Inter({ subsets: ['latin'] })
// We set this variable to false as default
// as it serves us to know if the `useEffect` hook
// was called before rendering `I18nProvider` Component
-var isDefaultLocaleSet = false;
+let isDefaultLocaleSet = false;
// Dynamically call translations inside a `useEffect` React hook
const I18nApp = () => {
useEffect(() => {
@@ -31,6 +31,7 @@ const I18nApp = () => {
isDefaultLocaleSet = true;
}, [])
}
+I18nApp();
export default function RootLayout({children}:{children: React.ReactNode}){
diff --git a/src/components/AboutComponents/Education/Education.tsx b/src/components/AboutComponents/Education/Education.tsx
index bb38dff..e89ab05 100644
--- a/src/components/AboutComponents/Education/Education.tsx
+++ b/src/components/AboutComponents/Education/Education.tsx
@@ -1,8 +1,7 @@
// NextJS Imports
-import { Box, Link, Heading, Timeline, Octicon, Text } from "@primer/react";
+import { Box, Timeline, Octicon, Text } from "@primer/react";
import { BetterSystemStyleObject } from "@primer/react/lib/sx";
import {FlameIcon} from "@primer/octicons-react";
-import styles from "@/sass/master.module.sass";
export default function AboutMyEducation(){
diff --git a/src/components/AboutComponents/SkillCard/SkillCard.tsx b/src/components/AboutComponents/SkillCard/SkillCard.tsx
index 3c6e4c7..4aed3eb 100644
--- a/src/components/AboutComponents/SkillCard/SkillCard.tsx
+++ b/src/components/AboutComponents/SkillCard/SkillCard.tsx
@@ -6,7 +6,6 @@ import { useEffect, useState } from "react";
// Intern Imports
import { ProjectsInterface, LibraryInterface } from "../interfaces";
-import styles from "@/sass/master.module.sass";
import githubLinguist from '../libs/github-linguist.yaml'; // <-- Should produce an error (or at least a warning) because it can't find its module or type declaractions
@@ -257,7 +256,7 @@ function ShowGithubRepositoryRelatedToSkill({