diff --git a/bun.lockb b/bun.lockb index 6cac7f3..7ddda0f 100644 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/src/components/ProjectCard.astro b/src/components/ProjectCard.astro index fa56622..4d3cea5 100644 --- a/src/components/ProjectCard.astro +++ b/src/components/ProjectCard.astro @@ -1,14 +1,14 @@ --- -import { array } from "astro/zod"; - +import SkillBadge from "./SkillBadge.astro"; +import type { SkillKey } from "../data/skills"; interface Props { name: string; + skills: SkillKey[]; href?: string; gallery?: string | string[]; center?: true; } - -const { name, href, gallery, center } = Astro.props; +const { name, href, gallery, center, skills } = Astro.props; --- - -
-

{name}

-
-
- { - Array.isArray(gallery) ? ( - gallery.map((src) => ( - - )) - ) : ( - - ) - } -
-
+

{name}


+
+ Tools used:
+ {skills.map((skill: SkillKey) => )} +

+
+ { + Array.isArray(gallery) ? ( + gallery.map((src) => ( + + )) + ) : ( + + ) + } +
diff --git a/src/components/Skill.astro b/src/components/Skill.astro deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/SkillBadge.astro b/src/components/SkillBadge.astro new file mode 100644 index 0000000..bde7db6 --- /dev/null +++ b/src/components/SkillBadge.astro @@ -0,0 +1,56 @@ +--- +import { Icon } from "astro-icon/components"; +import { skills } from "../data/skills"; +import type { SkillKey } from "../data/skills"; +interface Props { + key: SkillKey; +} +const { key } = Astro.props; +--- + + + +
+ {key} + +
diff --git a/src/data/skills.ts b/src/data/skills.ts index 697a445..13c53ce 100644 --- a/src/data/skills.ts +++ b/src/data/skills.ts @@ -1,12 +1,4 @@ -type Skill = { - [name: string]: { - iconName: string - url?: string - color?: string - } -} - -const skills: Skill = { +const skilllist = { "React": { iconName: "mdi:react", url: "https://react.dev/", @@ -94,6 +86,7 @@ const skills: Skill = { }, "Bun": { iconName: "logos:bun", + color:"#FBF0DF", url: "https://bun.sh/" }, "Blender": { @@ -121,6 +114,15 @@ const skills: Skill = { "Adobe Indesign": { iconName: "logos:adobe-indesign" } +} as const; + +type Skill = { + iconName: string + url?: string + color?: string } -export { skills } \ No newline at end of file +type SkillKey = keyof typeof skilllist; +const skills: Record = skilllist +export { skills } +export type { SkillKey } \ No newline at end of file diff --git a/src/pages/projects.astro b/src/pages/projects.astro index d7d200e..2967a0a 100644 --- a/src/pages/projects.astro +++ b/src/pages/projects.astro @@ -19,6 +19,20 @@ import GalaryZoom from "../components/GalaryZoom.astro"; - I am currently developing a program that can simulate customer calls. For this, I am using the Web Speech Recognition API, OpenAI, and Elevenlabs. Modular multi purpose bot powering your Discord server.
@@ -49,6 +74,7 @@ import GalaryZoom from "../components/GalaryZoom.astro";
The first Discord RPC plugin for the version 4 of the Godot game @@ -56,6 +82,7 @@ import GalaryZoom from "../components/GalaryZoom.astro"; Adds a component to astro with statically built GitHub info and dynamic updated stars and forks. Supports GitHub auth tokens in the built diff --git a/src/styles/main.scss b/src/styles/main.scss index 01faaa9..ebba569 100644 --- a/src/styles/main.scss +++ b/src/styles/main.scss @@ -8,6 +8,7 @@ ::selection { background-color: $accent; } + ::marker { color: $accent; } @@ -43,6 +44,7 @@ main { padding: 20px; margin-bottom: 11vh; } + .second-content { align-self: center; text-align: center; @@ -52,7 +54,12 @@ main { border: 1px solid lighten($second-content-clr, 12%); min-width: 30vw; margin-inline: 10vw; - p, ul,h1,h2,h3{ + + p, + ul, + h1, + h2, + h3 { padding-inline: 2vw; } } @@ -67,13 +74,16 @@ table { display: block; } -b, strong { +b, +strong { font-family: "Satoshi-Bold"; color: $accent; } + a { color: $link; - &[target="_blank"]::after{ + + &[target="_blank"]::after { display: inline-block; width: 20px; height: 20px; @@ -92,14 +102,17 @@ figure { .expressive-code { border: 1px solid lighten(#282a36, 10%); + code { background-color: transparent; } + pre { background-color: transparent !important; border: transparent !important; background: none !important; } + .copy { button { width: 30px !important; @@ -109,6 +122,7 @@ figure { display: none; } } + &:hover { .copy { button { @@ -116,6 +130,7 @@ figure { } } } + & { position: relative; overflow: scroll; @@ -125,6 +140,7 @@ figure { background-color: #282a36; border-radius: 20px; } + .frame.is-terminal .header::before { background-color: gray !important; } @@ -164,6 +180,7 @@ button { background-color: $button-color; border: 1px solid lighten($button-color, 12%); font-size: 18px; + &:active { background-color: darken($button-color, 10); transform: translateY(1px); @@ -179,12 +196,13 @@ button { } @media (max-width: $responsive-width) { - .content{ + .content { min-width: 50vw !important; } } + @media (max-width: $responsive-width-secondary) { - .content{ + .content { min-width: 85vw !important; } -} \ No newline at end of file +}