From 9c953628005f81d0e1d93c06d790875c10ec7cb8 Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Thu, 29 Jan 2026 13:48:37 -0700 Subject: [PATCH] Added a new logo loop + optimized the component setup (DRY) --- package.json | 4 +- pnpm-lock.yaml | 22 +- public/clients/HutchMortgages.webp | Bin 0 -> 12850 bytes public/clients/RoyerMortgages.webp | Bin 0 -> 22754 bytes src/components/LogoLoop.vue | 443 ++++++++++++++++++ src/components/RotatingText.astro | 22 + src/components/Section.astro | 66 +++ src/components/sections/AboutSection.astro | 81 ++-- src/components/sections/ClientList.astro | 28 ++ src/components/sections/ContactSection.vue | 433 +++++++++-------- src/components/sections/HeroSection.astro | 26 +- src/components/sections/ServicesSection.astro | 46 +- src/config/site.ts | 20 + src/pages/index.astro | 11 +- 14 files changed, 921 insertions(+), 281 deletions(-) create mode 100644 public/clients/HutchMortgages.webp create mode 100644 public/clients/RoyerMortgages.webp create mode 100644 src/components/LogoLoop.vue create mode 100644 src/components/RotatingText.astro create mode 100644 src/components/Section.astro create mode 100644 src/components/sections/ClientList.astro diff --git a/package.json b/package.json index 3c95acf..838d877 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "atashdotdev", "type": "module", - "version": "1.2.0", + "version": "1.3.0", "scripts": { "dev": "astro dev", "build": "astro build", @@ -15,7 +15,7 @@ "@fontsource-variable/roboto-slab": "^5.2.8", "@heroicons/vue": "^2.2.0", "@tailwindcss/vite": "^4.1.18", - "astro": "^5.16.15", + "astro": "^5.17.1", "astro-icon": "^1.1.5", "nodemailer": "^7.0.12", "tailwindcss": "^4.1.18", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e7dd0aa..453775d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,10 +10,10 @@ importers: dependencies: '@astrojs/node': specifier: ^9.5.2 - version: 9.5.2(astro@5.16.15(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(typescript@5.7.3)(yaml@2.7.0)) + version: 9.5.2(astro@5.17.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(typescript@5.7.3)(yaml@2.7.0)) '@astrojs/vue': specifier: ^5.1.4 - version: 5.1.4(@types/node@25.0.10)(astro@5.16.15(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(typescript@5.7.3)(yaml@2.7.0))(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(vue@3.5.27(typescript@5.7.3))(yaml@2.7.0) + version: 5.1.4(@types/node@25.0.10)(astro@5.17.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(typescript@5.7.3)(yaml@2.7.0))(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(vue@3.5.27(typescript@5.7.3))(yaml@2.7.0) '@fontsource-variable/inter': specifier: ^5.2.8 version: 5.2.8 @@ -27,8 +27,8 @@ importers: specifier: ^4.1.18 version: 4.1.18(vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.7.0)) astro: - specifier: ^5.16.15 - version: 5.16.15(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(typescript@5.7.3)(yaml@2.7.0) + specifier: ^5.17.1 + version: 5.17.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(typescript@5.7.3)(yaml@2.7.0) astro-icon: specifier: ^1.1.5 version: 1.1.5 @@ -983,8 +983,8 @@ packages: astro-icon@1.1.5: resolution: {integrity: sha512-CJYS5nWOw9jz4RpGWmzNQY7D0y2ZZacH7atL2K9DeJXJVaz7/5WrxeyIxO8KASk1jCM96Q4LjRx/F3R+InjJrw==} - astro@5.16.15: - resolution: {integrity: sha512-+X1Z0NTi2pa5a0Te6h77Dgc44fYj63j1yx6+39Nvg05lExajxSq7b1Uj/gtY45zoum8fD0+h0nak+DnHighs3A==} + astro@5.17.1: + resolution: {integrity: sha512-oD3tlxTaVWGq/Wfbqk6gxzVRz98xa/rYlpe+gU2jXJMSD01k6sEDL01ZlT8mVSYB/rMgnvIOfiQQ3BbLdN237A==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -2509,10 +2509,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/node@9.5.2(astro@5.16.15(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(typescript@5.7.3)(yaml@2.7.0))': + '@astrojs/node@9.5.2(astro@5.17.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(typescript@5.7.3)(yaml@2.7.0))': dependencies: '@astrojs/internal-helpers': 0.7.5 - astro: 5.16.15(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(typescript@5.7.3)(yaml@2.7.0) + astro: 5.17.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(typescript@5.7.3)(yaml@2.7.0) send: 1.2.1 server-destroy: 1.0.1 transitivePeerDependencies: @@ -2534,12 +2534,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/vue@5.1.4(@types/node@25.0.10)(astro@5.16.15(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(typescript@5.7.3)(yaml@2.7.0))(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(vue@3.5.27(typescript@5.7.3))(yaml@2.7.0)': + '@astrojs/vue@5.1.4(@types/node@25.0.10)(astro@5.17.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(typescript@5.7.3)(yaml@2.7.0))(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(vue@3.5.27(typescript@5.7.3))(yaml@2.7.0)': dependencies: '@vitejs/plugin-vue': 5.2.4(vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.7.0))(vue@3.5.27(typescript@5.7.3)) '@vitejs/plugin-vue-jsx': 4.2.0(vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.7.0))(vue@3.5.27(typescript@5.7.3)) '@vue/compiler-sfc': 3.5.27 - astro: 5.16.15(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(typescript@5.7.3)(yaml@2.7.0) + astro: 5.17.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(typescript@5.7.3)(yaml@2.7.0) vite: 6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.7.0) vite-plugin-vue-devtools: 7.7.9(rollup@4.56.0)(vite@6.4.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.7.0))(vue@3.5.27(typescript@5.7.3)) vue: 3.5.27(typescript@5.7.3) @@ -3387,7 +3387,7 @@ snapshots: transitivePeerDependencies: - supports-color - astro@5.16.15(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(typescript@5.7.3)(yaml@2.7.0): + astro@5.17.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.56.0)(typescript@5.7.3)(yaml@2.7.0): dependencies: '@astrojs/compiler': 2.13.0 '@astrojs/internal-helpers': 0.7.5 diff --git a/public/clients/HutchMortgages.webp b/public/clients/HutchMortgages.webp new file mode 100644 index 0000000000000000000000000000000000000000..fa4b059881155416fb53d1795de4cdd6a1ca6108 GIT binary patch literal 12850 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 literal 0 HcmV?d00001 diff --git a/public/clients/RoyerMortgages.webp b/public/clients/RoyerMortgages.webp new file mode 100644 index 0000000000000000000000000000000000000000..9260d809d7a2794eedb692ad24c2c0025a3fa40e GIT binary patch literal 22754 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 literal 0 HcmV?d00001 diff --git a/src/components/LogoLoop.vue b/src/components/LogoLoop.vue new file mode 100644 index 0000000..c668bbe --- /dev/null +++ b/src/components/LogoLoop.vue @@ -0,0 +1,443 @@ + + + + + + diff --git a/src/components/RotatingText.astro b/src/components/RotatingText.astro new file mode 100644 index 0000000..6282877 --- /dev/null +++ b/src/components/RotatingText.astro @@ -0,0 +1,22 @@ +--- +interface Props { + items: { + text: string; + className: string; + }[]; +} + +const { items } = Astro.props; +--- + + + + + { + items.map((item) => ( + {item.text} + )) + } + + + diff --git a/src/components/Section.astro b/src/components/Section.astro new file mode 100644 index 0000000..76aa987 --- /dev/null +++ b/src/components/Section.astro @@ -0,0 +1,66 @@ +--- +import type { HTMLAttributes } from "astro/types"; + +interface Props extends HTMLAttributes<"section"> { + title?: string; + description?: string; + containerClass?: string; + fullWidth?: boolean; + background?: string; +} + +const { + title, + description, + class: className, + containerClass, + fullWidth = false, + background, + ...props +} = Astro.props; +--- + +
+ { + /* Header for Full Width Layouts: We render the header in its own container before the full-width slot */ + } + { + fullWidth && title && ( +
+

+ {title} +

+ {description && ( +

+ {description} +

+ )} + +
+ ) + } + + { + fullWidth ? ( + + ) : ( +
+ {/* Header for Contained Layouts: The header is part of the main container */} + {title && ( +
+

+ {title} +

+ {description && ( +

+ {description} +

+ )} + +
+ )} + +
+ ) + } +
diff --git a/src/components/sections/AboutSection.astro b/src/components/sections/AboutSection.astro index 4a8f298..3bddbbf 100644 --- a/src/components/sections/AboutSection.astro +++ b/src/components/sections/AboutSection.astro @@ -1,6 +1,7 @@ --- import { Icon } from "astro-icon/components"; import { siteConfig } from "../../config/site"; +import Section from "../Section.astro"; const features = [ { @@ -16,34 +17,32 @@ const features = [ ...siteConfig.whyUs.cards[2], }, ]; + +const variantStyles: Record = { + primary: { bg: "bg-primary/10", text: "text-primary" }, + secondary: { bg: "bg-secondary/10", text: "text-secondary" }, + accent: { bg: "bg-accent/10", text: "text-accent" }, +}; --- -
-
-
-

- {siteConfig.whyUs.title} -

-
+
+
+ { + features.map((feature) => { + const styles = + variantStyles[feature.variant] || variantStyles.primary; -
- { - features.map((feature) => ( -
+ return ( +

@@ -53,27 +52,27 @@ const features = [ {feature.content}

+ ); + }) + } +
+ +
+
+ { + siteConfig.whyUs.stats.map((stat) => ( +
+
+ {stat.value} +
+
+ {stat.label} +
+
)) }
- -
-
- { - siteConfig.whyUs.stats.map((stat) => ( -
-
- {stat.value} -
-
- {stat.label} -
-
- )) - } -
-
-
+
diff --git a/src/components/sections/ClientList.astro b/src/components/sections/ClientList.astro new file mode 100644 index 0000000..63c2089 --- /dev/null +++ b/src/components/sections/ClientList.astro @@ -0,0 +1,28 @@ +--- +import LogoLoop from "../LogoLoop.vue"; +import Section from "../Section.astro"; +import { siteConfig } from "../../config/site"; +--- + +
+
+ +
+
diff --git a/src/components/sections/ContactSection.vue b/src/components/sections/ContactSection.vue index d59d84b..a96f0fb 100644 --- a/src/components/sections/ContactSection.vue +++ b/src/components/sections/ContactSection.vue @@ -1,11 +1,11 @@