diff --git a/package-lock.json b/package-lock.json index 14b2aca..9255e5e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "devDependencies": { "@iconify-json/mdi": "^1.2.3", "@tailwindcss/typography": "^0.5.16", - "@types/node": "^24.0.14", + "@types/node": "^24.0.15", "npm-check-updates": "^18.0.1", "prettier": "^3.6.2", "prettier-plugin-astro": "^0.14.1", @@ -2139,9 +2139,9 @@ } }, "node_modules/@types/node": { - "version": "24.0.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.14.tgz", - "integrity": "sha512-4zXMWD91vBLGRtHK3YbIoFMia+1nqEz72coM42C5ETjnNCa/heoj7NT1G67iAfOqMmcfhuCZ4uNpyz8EjlAejw==", + "version": "24.0.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.15.tgz", + "integrity": "sha512-oaeTSbCef7U/z7rDeJA138xpG3NuKc64/rZ2qmUFkFJmnMsAPaluIifqyWd8hSSMxyP9oie3dLAqYPblag9KgA==", "license": "MIT", "dependencies": { "undici-types": "~7.8.0" diff --git a/package.json b/package.json index 3b05a9e..655f6ad 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@iconify-json/mdi": "^1.2.3", "@tailwindcss/typography": "^0.5.16", - "@types/node": "^24.0.14", + "@types/node": "^24.0.15", "npm-check-updates": "^18.0.1", "prettier": "^3.6.2", "prettier-plugin-astro": "^0.14.1", diff --git a/src/components/AboutList.astro b/src/components/AboutList.astro new file mode 100644 index 0000000..676e3d0 --- /dev/null +++ b/src/components/AboutList.astro @@ -0,0 +1,51 @@ +--- +import { Image } from "astro:assets"; +import Link from "@components/Link.astro"; + +interface InformationItem { + image: ImageMetadata; + location: string; + main: string; + link?: string; + date: string; + date_opt?: string; +} + +interface Props { + information: InformationItem[]; +} + +const { information } = Astro.props; +--- + +{ + information.map((item) => ( +
  • + {item.location} +
    +

    {item.main}

    + {item.link ? ( + + {item.location} + + ) : ( +

    {item.location}

    + )} +
    +
    +

    {item.date}

    + {item.date_opt ? ( +

    {item.date_opt}

    + ) : null} +
    +
  • + )) +} diff --git a/src/components/Accordion.astro b/src/components/Accordion.astro deleted file mode 100644 index a1349ad..0000000 --- a/src/components/Accordion.astro +++ /dev/null @@ -1,40 +0,0 @@ ---- -import { Icon } from "astro-icon/components"; - -type Props = { - institution: String; - qualification: String; - grades: Array; - isOpen?: boolean; -}; - -const { institution, qualification, grades, isOpen = false } = Astro.props; ---- - -
    -
    - -

    - {qualification} -

    - - - -
    -
    -

    - {institution} -

    -
      - {grades.map((grade) =>
    1. {grade}
    2. )} -
    -
    -
    -
    diff --git a/src/components/Prose.astro b/src/components/Prose.astro index 5579267..8d42ed7 100644 --- a/src/components/Prose.astro +++ b/src/components/Prose.astro @@ -1,5 +1,5 @@
    diff --git a/src/components/ShowcaseProject.astro b/src/components/ShowcaseProject.astro index 08c9042..0c6c2f8 100644 --- a/src/components/ShowcaseProject.astro +++ b/src/components/ShowcaseProject.astro @@ -1,7 +1,6 @@ --- import { Image } from "astro:assets"; import type { CollectionEntry } from "astro:content"; -import { Icon } from "astro-icon/components"; type Props = { collection: CollectionEntry<"projects">; @@ -32,12 +31,9 @@ const { collection } = Astro.props; { collection.data.highlight ? (
    -
    - -

    New!

    +
    + +

    New

    ) : null diff --git a/src/content/projects/camouflage-store/index.mdx b/src/content/projects/camouflage-store/index.mdx index 512a65e..0a2b56e 100644 --- a/src/content/projects/camouflage-store/index.mdx +++ b/src/content/projects/camouflage-store/index.mdx @@ -63,7 +63,7 @@ Many of the product images included on the site were taken by myself specificall ## Branding -Along with the switch of platform, we came to the decision that the domain and overall branding would need to be updated to to go along with the rest of the work being done. I felt it was important however that the original red colour of #dd3e3e was kept as it was a key part of the brand from all the way back in 2007. +Along with the switch of platform, we came to the decision that the domain and overall branding would need to be updated to to go along with the rest of the work being done. I felt it was important however that the original red colour of #dd3e3e was kept as it was a key part of the brand from all the way back in 2007. For the domain, we have gone with [camouflagestore.uk](https://camouflagestore.uk) (and its equavalent .co.uk tld). This was chosen as the location of the store is a key factor in its identity, and having this represented from the get-go meant a lot to the client. The legacy domain of [camouflage-store.com](https://camouflage-store.com) has also been kept since it has also been with Steve since 2007 and holds significant personal value. diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index cefaa36..7f65f2b 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -27,7 +27,7 @@ const { title, description, image, date, updated, tags } = Astro.props; tags={tags} />
    diff --git a/src/pages/about.astro b/src/pages/about.astro index 5fbc276..5275f07 100644 --- a/src/pages/about.astro +++ b/src/pages/about.astro @@ -5,6 +5,7 @@ import { Image } from "astro:assets"; import { Icon } from "astro-icon/components"; import Link from "@components/Link.astro"; import { createSlug } from "@lib/utils"; +import AboutList from "@components/AboutList.astro"; import me from "@assets/me.jpg"; import camoicon from "@assets/camouflage-store.png"; @@ -32,7 +33,7 @@ const projects = [ id: 2, name: "Sinkie Soldiers", description: - "Keep control of the castle, but more importantly: your armour.", + "Sinkie Soldiers is a local co-op versus game in which you battle against your friends for control of the castle! Your goal is to break down the integrity of your enemy's armour and finish them off to claim the victory.", tags: ["Unreal Engine", "Blender", "GIMP", "FL Studio", "Inkscape"], link: "/projects/sinkie-soldiers", print_link: "https://troylusty.com/projects/sinkie-soldiers", @@ -80,31 +81,31 @@ const sortedProjects = [...projects].sort((a, b) => a.id - b.id); const experience = [ { id: 1, - name: "Camouflage Store", + location: "Camouflage Store", image: camoicon, - role: "E-commerce management", + main: "E-commerce management", date: "2020 - Now", link: "/projects/camouflage-store", }, { id: 2, - name: "Nisa", + location: "Nisa", image: nisaicon, - role: "Promotional graphic design", + main: "Promotional graphic design", date: "2022", }, { id: 3, - name: "Paignton Picture House Trust", + location: "Paignton Picture House Trust", image: pphicon, - role: "Photogrammetrist (Volunteering)", + main: "Photogrammetrist (Volunteering)", date: "2023", }, { id: 4, - name: "WebBoss", + location: "WebBoss", image: webbossicon, - role: "Website mock-up templates (Work experience)", + main: "Website mock-up templates (Work experience)", date: "2019", }, ]; @@ -113,37 +114,69 @@ const sortedExperience = [...experience].sort((a, b) => a.id - b.id); const education = [ { id: 1, - name: "University of Plymouth", + location: "University of Plymouth", image: uopicon, - course: "BA (Hons) Game Arts and Design", + main: "BA (Hons) Game Arts and Design", date: "2024 - 2025", - grade: "First Class Honours", + date_opt: "First Class Honours", }, { id: 2, - name: "University Centre South Devon", + location: "University Centre South Devon", image: ucsdicon, - course: "FdA Games and Interactive Design", + main: "FdA Games and Interactive Design", date: "2022 - 2024", }, { id: 3, - name: "South Devon College", + location: "South Devon College", image: sdcicon, - course: - "UAL Level 3 Extended Diploma in Creative Media Production and Technology", + main: "UAL Level 3 Extended Diploma in Creative Media Production and Technology", date: "2020 - 2022", }, { id: 4, - name: "King Edward VI Community College", + location: "King Edward VI Community College", image: keviccicon, - course: - "Art & Design BTEC, Computer Science A-level, 10 GCSEs, Creative iMedia Level 2", + main: "Art & Design BTEC, Computer Science A-level, 10 GCSEs, Creative iMedia Level 2", date: "2014 - 2020", }, ]; const sortedEducation = [...education].sort((a, b) => a.id - b.id); + +const links = [ + { + id: 1, + label: "Website", + icon: "mdi:web", + href: "/", + }, + { + id: 2, + label: "Email", + icon: "mdi:email", + href: `mailto:${SITE.EMAIL}`, + }, + { + id: 3, + label: "Git", + icon: "mdi:git", + href: "https://code.threepop.com/explore", + }, + { + id: 4, + label: "Steam", + icon: "mdi:steam", + href: "https://store.steampowered.com/developer/troy", + }, + { + id: 5, + label: "LinkedIn", + icon: "mdi:linkedin", + href: "https://linkedin.com/in/troylusty", + }, +]; +const sortedLinks = [...links].sort((a, b) => a.id - b.id); --- @@ -153,7 +186,7 @@ const sortedEducation = [...education].sort((a, b) => a.id - b.id); class="animate-reveal flex flex-col text-start text-3xl font-semibold opacity-0 sm:block" > {SITE.AUTHOR}Digital designer.Digital designer

    @@ -161,47 +194,31 @@ const sortedEducation = [...education].sort((a, b) => a.id - b.id); class="decoration-tertiary inline-flex items-center gap-x-1.5 align-baseline leading-none hover:underline hover:decoration-2 hover:underline-offset-2" href="https://www.google.com/maps/place/Devon" > - + Devon, United Kingdom, GMT -

    - - - - - - - - - - - - +

    +
    + { + sortedLinks.map((link) => ( + + + + )) + }
    @@ -236,85 +253,19 @@ const sortedEducation = [...education].sort((a, b) => a.id - b.id);

    -
    -
    -
    -

    - Ready to make something cool? -

    -

    - Do you think I'd be a good fit to help out on a project you're working - on, or maybe just want to chat? - Send me an email! -

    -
    -
    - -
    -
    -
    -

    Education

    +
      + +
    +

    Other education

    - { - sortedEducation.map((education) => ( -
    -
    - {education.name} -

    - {education.course}, - {education.name} -

    -
    -
    -

    - {education.date} -

    - {education.grade ? ( -

    {education.grade}

    - ) : null} -
    -
    - )) - } -
    -
    -
    - -

    Full drivers licence (A & B)

    -
    -
    - -

    Lifesaving certification

    -
    +
      +
    • Full drivers licence (Category A & B)
    • +
    @@ -323,38 +274,9 @@ const sortedEducation = [...education].sort((a, b) => a.id - b.id); class="animate-reveal opacity-0 [animation-delay:0.4s]" >

    Experience

    -
    - { - sortedExperience.map((experience) => ( -
    -
    - {experience.name} -

    - {experience.role}, - {experience.link ? ( - - {experience.name} - - ) : ( - {experience.name} - )} -

    -
    -

    - {experience.date} -

    -
    - )) - } -
    +
      + +
    a.id - b.id);
    <> -

    +