Working on updating my website

This commit is contained in:
2024-02-01 19:21:21 +01:00
parent 8df0f6dcda
commit 51cfd5e88e
18 changed files with 1558 additions and 1220 deletions

View File

@@ -8,7 +8,6 @@ export default defineNuxtConfig({
modules: [ modules: [
'@nuxt/ui', '@nuxt/ui',
'nuxt-auth-utils', 'nuxt-auth-utils',
'@nuxt/image',
'@nuxthq/studio', '@nuxthq/studio',
'@nuxt/content', '@nuxt/content',
'@pinia/nuxt', '@pinia/nuxt',
@@ -27,6 +26,7 @@ export default defineNuxtConfig({
'components/', 'components/',
'components/header', 'components/header',
'components/resume', 'components/resume',
'components/maths',
], ],
content: { content: {

View File

@@ -13,34 +13,33 @@
"lint:fix": "eslint . --fix" "lint:fix": "eslint . --fix"
}, },
"dependencies": { "dependencies": {
"@nuxt/content": "2.10.0", "@ksassnowski/vueclid": "^1.1.0",
"@nuxt/image": "1.1.0", "@nuxt/content": "2.11.0",
"@nuxt/ui": "2.11.1", "@nuxt/ui": "2.13.0",
"@pinia/nuxt": "0.5.1", "@pinia/nuxt": "0.5.1",
"@prisma/client": "5.7.1", "@prisma/client": "5.9.0",
"@vercel/analytics": "1.1.1", "@vercel/analytics": "1.1.2",
"@vercel/speed-insights": "^1.0.2", "@vercel/speed-insights": "1.0.9",
"nuxt": "3.9.0", "nuxt": "3.10.0",
"nuxt-auth-utils": "0.0.13", "nuxt-auth-utils": "0.0.15",
"pinia": "2.1.7", "pinia": "2.1.7",
"postcss-custom-properties": "13.3.4", "postcss-custom-properties": "13.3.4",
"prisma": "5.7.1", "prisma": "5.9.0",
"sass": "1.69.6", "sass": "1.70.0",
"superjson": "2.2.1", "superjson": "2.2.1",
"tailwindcss": "3.4.0", "tailwindcss": "3.4.1",
"zod": "^3.22.4" "zod": "^3.22.4"
}, },
"devDependencies": { "devDependencies": {
"@antfu/eslint-config": "2.6.1", "@antfu/eslint-config": "2.6.3",
"@iconify/json": "2.2.164", "@iconify/json": "2.2.177",
"@nuxt/devtools": "1.0.6",
"@nuxt/eslint-config": "^0.2.0", "@nuxt/eslint-config": "^0.2.0",
"@nuxthq/studio": "1.0.6", "@nuxthq/studio": "1.0.10",
"@pinia-plugin-persistedstate/nuxt": "1.2.0", "@pinia-plugin-persistedstate/nuxt": "1.2.0",
"@tailwindcss/typography": "^0.5.10", "@tailwindcss/typography": "^0.5.10",
"@types/node": "20.10.6", "@types/node": "20.11.15",
"@vueuse/core": "10.7.1", "@vueuse/core": "10.7.2",
"@vueuse/nuxt": "10.7.1", "@vueuse/nuxt": "10.7.2",
"eslint": "8.56.0", "eslint": "8.56.0",
"typescript": "5.3.3" "typescript": "5.3.3"
} }

View File

@@ -1,5 +1,8 @@
export default defineAppConfig({ export default defineAppConfig({
ui: { ui: {
icons: {
dynamic: true,
},
gray: 'neutral', gray: 'neutral',
primary: 'cyan', primary: 'cyan',
notifications: { notifications: {

View File

@@ -1,20 +0,0 @@
<script lang="ts" setup>
</script>
<template>
<section class="flex justify-center gap-5 overflow-hidden py-4 sm:gap-8 mb-16">
<div class="shadow-md relative aspect-[9/10] w-44 flex-none overflow-hidden rounded-xl bg-zinc-100 dark:bg-zinc-800 sm:w-72 sm:rounded-2xl -rotate-2">
<NuxtImg class="w-full h-full" src="/img/nature2.jpg" alt="Nature" placeholder />
</div>
<div class="shadow-md relative aspect-[9/10] w-44 flex-none overflow-hidden rounded-xl bg-zinc-100 dark:bg-zinc-800 sm:w-72 sm:rounded-2xl rotate-2">
<NuxtImg class="w-full h-full" src="/img/nature3.jpg" alt="Nature" placeholder />
</div>
<div class="shadow-md relative aspect-[9/10] w-44 flex-none overflow-hidden rounded-xl bg-zinc-100 dark:bg-zinc-800 sm:w-72 sm:rounded-2xl -rotate-2">
<NuxtImg class="w-full h-full" src="/img/nature4.jpg" alt="Nature" placeholder />
</div>
<div class="shadow-md relative aspect-[9/10] w-44 flex-none overflow-hidden rounded-xl bg-zinc-100 dark:bg-zinc-800 sm:w-72 sm:rounded-2xl rotate-2">
<NuxtImg class="w-full h-full" src="/img/nature5.jpg" alt="Nature" placeholder />
</div>
</section>
</template>

View File

@@ -13,9 +13,9 @@ const route = useRoute()
<UButton to="/about" size="sm" variant="ghost" color="white" :class="{ 'link-active': route.path.includes('/about') }"> <UButton to="/about" size="sm" variant="ghost" color="white" :class="{ 'link-active': route.path.includes('/about') }">
About About
</UButton> </UButton>
<UButton to="/writing" size="sm" variant="ghost" color="white" :class="{ 'link-active': route.path.includes('/writing') }"> <!-- <UButton to="/writing" size="sm" variant="ghost" color="white" :class="{ 'link-active': route.path.includes('/writing') }">
Articles Articles
</UButton> </UButton> -->
<UButton to="/work" size="sm" variant="ghost" color="white" :class="{ 'link-active': route.path.includes('/work') }"> <UButton to="/work" size="sm" variant="ghost" color="white" :class="{ 'link-active': route.path.includes('/work') }">
Projects Projects
</UButton> </UButton>

View File

@@ -0,0 +1,63 @@
<script lang="ts" setup>
import { Angle, Circle, Graph, Label, Line, Point, Vector, Vector2 } from '@ksassnowski/vueclid'
const angle = ref(0)
useIntervalFn(() => {
angle.value = angle.value + 0.01
}, 10)
const to = computed(() => Vector2.fromPolar(angle.value, 4))
</script>
<template>
<section class="flex justify-center gap-5 overflow-hidden py-4 sm:gap-8 mb-16">
<div>
<Graph :domain-x="[-5, 5]" :domain-y="[-5, 5]">
<Circle :radius="4" color="hotpink" />
<Angle
:a="[1, 0]"
:b="[0, 0]"
:c="to"
:radius="1.5"
color="#33aabb"
:fill="{ light: '#33aabb33', dark: '#33aabb66' }"
dashed
/>
<Vector :to="to" />
</Graph>
</div>
<div>
<Graph
:domain-x="[-1.5, 1.5]"
:domain-y="[-1.5, 1.5]"
:grid-size="0.5"
:units="false"
>
<Circle :radius="1" color="#aaa" />
<Vector :to="[Math.cos(0.8), Math.sin(0.8)]" />
<Line
:from="[Math.cos(0.8), 0]"
:to="[Math.cos(0.8), Math.sin(0.8)]"
:line-width="1.5"
color="hotpink"
dashed
/>
<Line
:from="[0, Math.sin(0.8)]"
:to="[Math.cos(0.8), Math.sin(0.8)]"
:line-width="1.5"
color="#33aabb"
dashed
/>
<Point :position="[Math.cos(0.8), Math.sin(0.8)]" />
<Label :position="[Math.cos(0.8) + 0.2, Math.sin(0.8) + 0.2]" text="M" />
<Point :position="[Math.cos(0.8), 0]" color="hotpink" label="cos(x)" />
<Point
:position="[0, Math.sin(0.8)]"
color="#33aabb"
label="sin(x)"
label-position="top"
/>
</Graph>
</div>
</section>
</template>

View File

@@ -13,24 +13,27 @@ defineProps({
<div> <div>
<DateTag :start-date="experience.startDate" :end-date="experience.endDate" /> <DateTag :start-date="experience.startDate" :end-date="experience.endDate" />
</div> </div>
<UButton <div class="flex items-center my-1">
v-if="experience.companyLink" <UButton
:to="experience.companyLink" v-if="experience.companyLink"
variant="link" :to="experience.companyLink"
:padded="false" variant="link"
color="white" :padded="false"
size="xl" color="white"
target="_blank" size="xl"
:label="experience.company" target="_blank"
class="my-1 text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100" :label="experience.company"
> class="mr-3 text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100"
<template #trailing> >
<UIcon name="i-ph-arrow-up-right-bold" color="gray" /> <template #leading>
</template> <UIcon name="i-akar-icons-link-chain" color="gray" />
</UButton> </template>
<h1 v-else class="my-1 text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100"> </UButton>
{{ experience.company }} <h1 v-else class="mr-3 my-1 text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100">
</h1> {{ experience.company }}
</h1>
<div class="text-subtitle text-xs">{{ experience.location }}</div>
</div>
</div> </div>
</div> </div>
<p class="text-justify leading-5 text-sm text-zinc-600 dark:text-zinc-400"> <p class="text-justify leading-5 text-sm text-zinc-600 dark:text-zinc-400">

View File

@@ -1,6 +1,6 @@
--- ---
title: Self-taught learning title: Self-taught learning
description: Learning programming languages (TypeScript, Rust, Java, Python...) and technologies (VueJS, AdonisJs, Tauri...) description: Learning programming languages (TypeScript, Java, Python...) and technologies (VueJS, AdonisJs...)
location: Bedroom (Remote) location: Bedroom (Remote)
startDate: August 2015 startDate: August 2015
endDate: Today endDate: Today

View File

@@ -0,0 +1,9 @@
---
title: Permanent Contract
description: Welcoming and advising customers. Restocking, delivering and ordering products.
company: Picard
companyLink: https://picard.fr
location: Rueil-Malmaison, France
startDate: September 2022
endDate: Today
---

View File

@@ -11,6 +11,13 @@
"light": "skill-icons:python-light" "light": "skill-icons:python-light"
} }
}, },
{
"name": "R-Lang",
"icon": {
"dark": "i-skill-icons-r-dark",
"light": "i-skill-icons-r-light"
}
},
{ {
"name": "Java", "name": "Java",
"icon": { "icon": {
@@ -18,10 +25,6 @@
"light": "skill-icons:java-light" "light": "skill-icons:java-light"
} }
}, },
{
"name": "Rust",
"icon": "skill-icons:rust"
},
{ {
"name": "HTML5", "name": "HTML5",
"icon": "skill-icons:html" "icon": "skill-icons:html"
@@ -80,13 +83,6 @@
"light": "skill-icons:redis-light" "light": "skill-icons:redis-light"
} }
}, },
{
"name": "RabbitMQ",
"icon": {
"dark": "skill-icons:rabbitmq-dark",
"light": "skill-icons:rabbitmq-light"
}
},
{ {
"name": "Docker", "name": "Docker",
"icon": "skill-icons:docker" "icon": "skill-icons:docker"
@@ -100,10 +96,10 @@
"icon": "skill-icons:prisma" "icon": "skill-icons:prisma"
}, },
{ {
"name": "Supabase", "name": "Vercel",
"icon": { "icon": {
"dark": "skill-icons:supabase-dark", "dark": "i-skill-icons-vercel-dark",
"light": "skill-icons:supabase-light" "light": "i-skill-icons-vercel-light"
} }
} }
] ]

View File

@@ -1,6 +1,8 @@
<script setup lang="ts"> <script setup lang="ts">
import { SpeedInsights } from '@vercel/speed-insights/nuxt' import { SpeedInsights } from '@vercel/speed-insights/nuxt'
import { configureGraphs } from '@ksassnowski/vueclid'
const appConfig = useAppConfig() const appConfig = useAppConfig()
const getColor = computed(() => appConfig.ui.primary) const getColor = computed(() => appConfig.ui.primary)
@@ -8,6 +10,11 @@ const router = useRouter()
router.afterEach((route) => { router.afterEach((route) => {
useCookie('last-route', { path: '/', default: () => '/' }).value = route.fullPath useCookie('last-route', { path: '/', default: () => '/' }).value = route.fullPath
}) })
const colorMode = useColorMode()
watch(colorMode, () => {
configureGraphs({ darkMode: colorMode.value === 'dark' })
})
</script> </script>
<template> <template>

View File

@@ -0,0 +1,7 @@
export default defineNuxtRouteMiddleware((to) => {
if (to.path === '/bookmarks' || to.path === 'writing') {
return navigateTo('/', {
redirectCode: 301,
})
}
})

View File

@@ -14,7 +14,7 @@ const { data: experiences } = await getWorkExperiences()
<div class="lg:pl-20 flex justify-center"> <div class="lg:pl-20 flex justify-center">
<div class="max-w-xs px-2.5 lg:max-w-none"> <div class="max-w-xs px-2.5 lg:max-w-none">
<UTooltip text="It's me 👋" :popper="{ offsetDistance: 20 }"> <UTooltip text="It's me 👋" :popper="{ offsetDistance: 20 }">
<NuxtImg src="/about.jpg" class="border dark:border-0 aspect-square rotate-3 hover:rotate-0 duration-300 rounded-3xl bg-zinc-100 object-cover dark:bg-zinc-800" placeholder /> <img src="/about.jpg" class="border dark:border-0 aspect-square rotate-3 hover:rotate-0 duration-300 rounded-3xl bg-zinc-100 object-cover dark:bg-zinc-800">
</UTooltip> </UTooltip>
</div> </div>
</div> </div>

View File

@@ -148,7 +148,7 @@ async function deleteMessage(id: number) {
</p> </p>
<div class="flex items-center gap-4 mt-4"> <div class="flex items-center gap-4 mt-4">
<div class="h-8 w-8 rounded-full"> <div class="h-8 w-8 rounded-full">
<NuxtImg class="w-full h-full rounded-full" :src="message.image" alt="Nature" placeholder /> <img class="w-full h-full rounded-full" :src="message.image" alt="Nature">
</div> </div>
<p class="font-bold"> <p class="font-bold">
{{ message.username }} {{ message.username }}

View File

@@ -8,6 +8,6 @@ useHead({
<section> <section>
<Announcement /> <Announcement />
<MainBanner /> <MainBanner />
<MainPhotos /> <MainMaths />
</section> </section>
</template> </template>

View File

@@ -198,7 +198,7 @@ async function suggest() {
> >
<div class="flex"> <div class="flex">
<div class="flex gap-6 items-center"> <div class="flex gap-6 items-center">
<NuxtImg :src="talent.logo" class="z-20 h-12 w-12 rounded-md" placeholder /> <img :src="talent.logo" class="z-20 h-12 w-12 rounded-md">
<div> <div>
<h2 class="text-base font-semibold text-zinc-800 dark:text-zinc-100"> <h2 class="text-base font-semibold text-zinc-800 dark:text-zinc-100">
<div class="absolute -inset-y-6 -inset-x-4 z-0 scale-95 bg-zinc-50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 dark:bg-zinc-800/50 sm:-inset-x-6 sm:rounded-2xl" /> <div class="absolute -inset-y-6 -inset-x-4 z-0 scale-95 bg-zinc-50 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 dark:bg-zinc-800/50 sm:-inset-x-6 sm:rounded-2xl" />

View File

@@ -107,11 +107,11 @@ export const otherTab = [
to: '/guestbook', to: '/guestbook',
icon: 'i-material-symbols-book-2-outline', icon: 'i-material-symbols-book-2-outline',
}, },
{ /* {
label: 'Bookmarks', label: 'Bookmarks',
to: '/bookmarks', to: '/bookmarks',
icon: 'i-material-symbols-bookmark-add-outline-rounded', icon: 'i-material-symbols-bookmark-add-outline-rounded',
}, }, */
], ],
] ]

2551
yarn.lock

File diff suppressed because it is too large Load Diff