diff --git a/README.md b/README.md index 1030b24..7e288fe 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ For detailed help with Astro CLI commands, visit [Astro's documentation](https:/ ## Thanks -Thanks https://github.com/mearashadowfax/ScrewFast, https://github.com/godruoyi/gblog/tree/gblog-template +Thanks https://github.com/godruoyi/gblog/tree/gblog-template, https://github.com/mearashadowfax/ScrewFast, ## License diff --git a/src/components/ui/logos/ApplicationLogo.astro b/src/components/ui/logos/ApplicationLogo.astro new file mode 100644 index 0000000..f5bef55 --- /dev/null +++ b/src/components/ui/logos/ApplicationLogo.astro @@ -0,0 +1,8 @@ +--- +import Image from '@components/ui/images/Image.astro'; + +const { src, alt } = Astro.props; + +--- + +{alt} diff --git a/src/components/ui/sections/Applications.astro b/src/components/ui/sections/Applications.astro new file mode 100644 index 0000000..4eecf52 --- /dev/null +++ b/src/components/ui/sections/Applications.astro @@ -0,0 +1,58 @@ +--- +import { readItems } from '@directus/sdk'; +import ApplicationLogo from '@components/ui/logos/ApplicationLogo.astro'; + +import type { Application } from '@lib/directusTypes'; + +import directus from '@lib/directus'; + +const applications = await directus.request( + readItems('site_applications', { + fields: ['*'], + sort: ['-isActive'], + }) +); + +const baseClasses = 'smooth-reveal-cards rounded-xl flex flex-col'; +const borderClasses = 'border border-neutral-100 dark:border-stone-500/20'; +const bgColorClasses = + 'bg-neutral-100/80 hover:bg-neutral-100 dark:bg-neutral-800/60 dark:hover:bg-neutral-800/90'; +const shadowClasses = 'shadow-xs hover:shadow-md dark:shadow-md dark:hover:shadow-lg'; +--- + +
+
+ { + applications.map((application: Application) => { + return ( + +
+ ); + }) + } + +
diff --git a/src/config.ts b/src/config.ts index 8148b28..d2a7431 100644 --- a/src/config.ts +++ b/src/config.ts @@ -13,13 +13,14 @@ export const NavigationLinks: NavigationLink[] = [ { name: 'Home', url: '/' }, { name: 'Blog', url: '/blog/' }, { name: 'Categories', url: '/categories/' }, + { name: 'Apps', url: '/apps/' }, { name: 'About Me', url: '/about/' }, ]; export const FooterLinks: NavigationLink[] = [ { name: 'RSS', url: '/rss.xml' }, - { name: 'Gitea', url: '/https://gitea.alexlebens.dev' }, - { name: 'Docs', url: '/https://docs.alexlebens.dev' }, + { name: 'Gitea', url: 'https://gitea.alexlebens.dev' }, + { name: 'Docs', url: 'https://docs.alexlebens.dev' }, ]; export const SEO = { diff --git a/src/images/cedar_tree.png b/src/images/cedar_tree.png new file mode 100644 index 0000000..dfda9d4 Binary files /dev/null and b/src/images/cedar_tree.png differ diff --git a/src/lib/directus.ts b/src/lib/directus.ts index b554a3f..2dde1c2 100644 --- a/src/lib/directus.ts +++ b/src/lib/directus.ts @@ -3,6 +3,7 @@ import { createDirectus, rest } from '@directus/sdk'; import type { Global, Post, + Application, Experience, Education, Certificate, @@ -15,6 +16,7 @@ import { getDirectusURL } from '@lib/directusFunctions'; type Schema = { site_global: Global; posts: Post[]; + site_applications: Application; site_experience: Experience; site_education: Education; site_certificate: Certificate; diff --git a/src/lib/directusTypes.ts b/src/lib/directusTypes.ts index c2e8d7f..e874177 100644 --- a/src/lib/directusTypes.ts +++ b/src/lib/directusTypes.ts @@ -3,6 +3,7 @@ export type Global = { about: string; about_description: string; about_blog: string; + about_applications: string; about_categories: string; initials: string; email: string; @@ -12,10 +13,12 @@ export type Global = { portrait_alt: string; home_image: string; home_image_alt: string; - categories_image: string; - categories_image_alt: string; blog_image: string; blog_image_alt: string; + categories_image: string; + categories_image_alt: string; + applications_image: string; + applications_image_alt: string; footer_image: string; footer_image_alt: string; }; @@ -37,6 +40,16 @@ export type Post = { updated_date: Date; }; +export type Application = { + id: string; + name: string; + isActive: boolean; + description: string; + highlights: string[]; + url: string; + logoUrl: string; +}; + export type Experience = { id: string; name: string; diff --git a/src/pages/apps.astro b/src/pages/apps.astro new file mode 100644 index 0000000..7c68b28 --- /dev/null +++ b/src/pages/apps.astro @@ -0,0 +1,66 @@ +--- +import { readSingleton } from '@directus/sdk'; + +import directus from '@lib/directus'; +import BaseLayout from '@layouts/BaseLayout.astro'; +import HeroSection from '@components/ui/sections/HeroSection.astro'; +import Applications from '@components/ui/sections/Applications.astro'; +import applicationImg from '@images/cedar_tree.png'; + +const global = await directus.request(readSingleton('site_global')); +--- + + + + +
+
+
+ +
+
+
+
+ +