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 0000000..fa4b059 Binary files /dev/null and b/public/clients/HutchMortgages.webp differ diff --git a/public/clients/RoyerMortgages.webp b/public/clients/RoyerMortgages.webp new file mode 100644 index 0000000..9260d80 Binary files /dev/null and b/public/clients/RoyerMortgages.webp differ 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 @@