autometaldirect.com Ads.txt file
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<title>Auto Metal Direct</title>
<link rel="canonical" href="https://www.autometaldirect.com/ads.txt">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="wvTUXqnWTwi9AJPB9PC2dhVSFeT2A5IQ34tQ32hM">
<meta name="base-url" content="https://www.autometaldirect.com">
<meta name="currency-code" content="USD">
<meta name="currency" content="{"id":1,"code":"USD","name":"US Dollar","symbol":"$","decimal":2,"created_at":null,"updated_at":null}">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"url": "https://www.autometaldirect.com",
"logo": "https://www.autometaldirect.com/storage/channel/1/6GoJ2cxalPfuyCjYmeMBLQCmJS2AMhdiAnCzzxGg.png",
"name": "Auto Metal Direct",
"description": "Classic muscle car and truck restoration parts and accessories",
"email": "info@autometaldirect.com",
"telephone": "+18334044777",
"address": {
"@type": "PostalAddress",
"streetAddress": "3348 Gateway Centre Pkwy",
"addressLocality": "Gainesville",
"addressRegion": "GA",
"postalCode": "30507",
"addressCountry": "US"
}
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Store",
"image": [
"https://www.autometaldirect.com/storage/photos/1x1/photo.jpg",
"https://www.autometaldirect.com/storage/photos/4x3/photo.jpg",
"https://www.autometaldirect.com/storage/photos/16x9/photo.jpg"
],
"name": "Auto Metal Direct",
"address": {
"@type": "PostalAddress",
"streetAddress": "3348 Gateway Centre Pkwy",
"addressLocality": "Gainesville",
"addressRegion": "GA",
"postalCode": "30507",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 34.3620501,
"longitude": -83.7466919
},
"url": "https://www.autometaldirect.com",
"telephone": "+18334044777",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"opens": "08:00",
"closes": "17:00"
}
],
"department": [
{
"@type": "Call Center",
"image": [
"https://www.autometaldirect.com/storage/photos/1x1/photo.jpg",
"https://www.autometaldirect.com/storage/photos/4x3/photo.jpg",
"https://www.autometaldirect.com/storage/photos/16x9/photo.jpg"
],
"name": "AMD Call Center",
"address": {
"@type": "PostalAddress",
"streetAddress": "3348 Gateway Centre Pkwy",
"addressLocality": "Gainesville",
"addressRegion": "GA",
"postalCode": "30507",
"addressCountry": "US"
},
"telephone": "+18334044777",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"opens": "08:00",
"closes": "18:00"
}
]
}
]
}
</script>
<meta name="title" content="Auto Metal Direct" >
<meta name="description" content="Classic muscle car and truck restoration parts and accessories" >
<meta name="keywords" content="classic muscle car and truck restoration parts and accessories" >
<link
rel="icon"
sizes="16x16"
href="https://www.autometaldirect.com/storage/channel/1/B3Urc9aTttB8vUVZvAZlnagfRfbR5PCmeHPeqdbA.png"
>
<link rel="preload" as="style" href="https://www.autometaldirect.com/themes/shop/default/build/assets/app-bcdeacfc.css" /><link rel="preload" as="style" href="https://www.autometaldirect.com/themes/shop/default/build/assets/app-0d391453.css" /><link rel="modulepreload" href="https://www.autometaldirect.com/themes/shop/default/build/assets/app-d0f989d2.js" /><link rel="stylesheet" href="https://www.autometaldirect.com/themes/shop/default/build/assets/app-bcdeacfc.css" /><link rel="stylesheet" href="https://www.autometaldirect.com/themes/shop/default/build/assets/app-0d391453.css" /><script type="module" src="https://www.autometaldirect.com/themes/shop/default/build/assets/app-d0f989d2.js"></script>
<!-- Modify font loading in layout -->
<link
rel="preconnect"
href="https://fonts.googleapis.com"
crossorigin
>
<link
rel="preconnect"
href="https://fonts.gstatic.com"
crossorigin
>
<link rel="preload" href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;800&display=swap" as="style">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;800&display=swap">
<link rel="preload" href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&display=swap" as="style">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&display=swap">
<style>
</style>
</head>
<body>
<div id="app">
<v-flash-group ref='flashes'></v-flash-group>
<v-modal-confirm ref="confirmModal"></v-modal-confirm>
<header class="">
<div class="flex flex-wrap max-lg:hidden">
<div class="flex justify-center items-center w-full py-[5px] px-16 border border-t-0 border-b-[1px] border-l-0 border-r-0">
</div>
<div class="w-full flex justify-between min-h-20 px-[60px] border border-t-0 border-b-[1px] border-l-0 border-r-0 max-1180:px-[30px]">
<div class="flex items-center gap-x-[40px] pt-[28px] max-[1180px]:gap-x-[20px]">
<a
href="https://www.autometaldirect.com"
class="place-self-start -mt-[15px]"
aria-label="AMD "
>
<img
src="https://www.autometaldirect.com/storage/channel/1/6GoJ2cxalPfuyCjYmeMBLQCmJS2AMhdiAnCzzxGg.png"
width="192"
height="50"
alt="AMD"
>
</a>
<div class="flex gap-[20px] items-center pb-[21px]">
</div>
</div>
<div class="flex gap-x-[35px] items-center max-lg:gap-x-[30px] max-[1100px]:gap-x-[25px]">
<form
action="https://www.autometaldirect.com/search"
class="flex items-center max-w-[445px]"
>
<label
for="organic-search"
class="sr-only"
>
Search </label>
<div class="relative w-full">
<div class="icon-search flex items-center absolute ltr:left-[12px] rtl:right-[12px] top-[10px] text-[22px] pointer-events-none"></div>
<input
type="text"
name="query"
value=""
class="block w-full px-[44px] py-[13px] bg-[#F5F5F5] rounded-lg text-gray-900 text-xs font-medium transition-all border border-transparent hover:border-gray-400 focus:border-gray-400"
placeholder="Search products here"
required
>
</div>
</form>
<div class="flex gap-x-[35px] mt-[5px] max-lg:gap-x-[30px] max-[1100px]:gap-x-[25px]">
<v-mini-cart>
<span class="icon-cart text-[24px] cursor-pointer"></span>
</v-mini-cart>
<v-dropdown position="bottom-right" class="relative">
<span class="icon-users inline-block text-[24px] cursor-pointer"></span>
<template v-slot:toggle>
<span class="icon-users inline-block text-[24px] cursor-pointer"></span>
</template>
<template v-slot:content>
<div class="p-[20px]">
<div class="grid gap-[10px]">
<p class="text-[20px] font-dmserif">
Welcome Guest </p>
<p class="text-[14px]">
Manage Cart, Orders & Wishlist </p>
</div>
<p class="w-full mt-[12px] py-2px border border-[#E9E9E9]"></p>
<div class="flex gap-[16px] mt-[25px]">
<a
href="https://www.autometaldirect.com/customer/login"
class="primary-button block w-max px-[29px] mx-auto m-0 ml-[0px] rounded-[18px] text-base text-center"
>
Sign In </a>
<a
href="https://www.autometaldirect.com/customer/register"
class="secondary-button block w-max m-0 ml-[0px] mx-auto px-[29px] border-2 rounded-[18px] text-base text-center"
>
Sign Up </a>
<a
href="https://www.autometaldirect.com/cookie"
class="secondary-button block w-max m-0 ml-[0px] mx-auto px-[29px] border-2 rounded-[18px] text-base text-center"
>
Reset Cookies
</a>
</div>
</div>
</template>
</v-dropdown>
</div>
</div>
</div>
<div class="w-full flex min-h-8 pr-[20px] border border-t-0 border-b-0 border-l-0 border-r-0 max-1180:pr-[30px] bg-navyBlue">
<div class="flex max-[250] min-h-8 bg-white px-[20px] pt-[4px] align-middle">
<v-drawer
is-active=""
position="left"
width="27%"
>
<template v-slot:toggle>
<span class="text-[16px] min-h-[30px] font-semibold cursor-pointer align-middle icon-hamburger"></span> <span class="text-[16px] min-h-[30px] font-semibold cursor-pointer align-middle">Shop By Category</span>
</template>
<template v-slot:content>
<div class="px-[25px] overflow-auto flex-1 max-sm:px-[15px]">
<v-desktop-category></v-desktop-category>
<div class="py-[30px]"></div>
</div>
</template>
</v-drawer>
</div>
<div class="flex bg-navyBlue">
<v-ymm>
</v-ymm>
</div>
</div>
</div>
<div class="gap-[15px] flex-wrap px-[15px] pt-[25px] hidden max-lg:flex max-lg:mb-[15px]">
<div class="flex items-center justify-between w-full">
<div class="flex items-center gap-x-[5px]">
<v-drawer
is-active=""
position="left"
width="80%"
>
<template v-slot:toggle>
<span class="icon-hamburger text-[24px] cursor-pointer"></span>
</template>
<template v-slot:header>
<div class="flex items-center justify-between">
<a href="https://www.autometaldirect.com">
<img
src="https://www.autometaldirect.com/themes/shop/default/build/assets/logo-37590944.png"
alt="AMD"
width="100"
height="20"
>
</a>
</div>
</template>
<template v-slot:content>
<div class="px-[25px] overflow-auto flex-1 max-sm:px-[15px]">
<div class="grid grid-cols-[auto_1fr] gap-[15px] items-center mb-[15px] p-[10px] border border-[#E9E9E9] rounded-[12px]">
<div class="">
<img
src="https://www.autometaldirect.com/themes/shop/default/build/assets/user-placeholder-4670a452.png"
class="w-[60px] h-[60px] rounded-full"
>
</div>
<a
href="https://www.autometaldirect.com/customer/login"
class="flex text-[16px] font-medium"
>
Sign up or Login
<i class="icon-double-arrow text-[24px] ml-[10px]"></i>
</a>
</div>
<h2 class="text-[20px] font-dmserif max-sm:text-[15px]">Filter by Vehicle</h2>
<v-ymm>
</v-ymm>
<v-mobile-category></v-mobile-category>
<div class="absolute w-full flex bottom-0 left-0 bg-white shadow-lg p-4 gap-x-[20px] justify-between items-center mb-[15px]">
</div>
</div>
</template>
<template v-slot:footer>
<div class="pb-[30px]">
</div>
</template>
</v-drawer>
<a
href="https://www.autometaldirect.com"
class="max-h-[30px]"
aria-label="AMD"
>
<img
src="https://www.autometaldirect.com/themes/shop/default/build/assets/logo-37590944.png"
alt="AMD"
width="100"
height="20"
>
</a>
</div>
<div>
<div class="flex items-center gap-x-[20px]">
<v-mini-cart>
<span class="icon-cart text-[24px] cursor-pointer"></span>
</v-mini-cart>
<v-dropdown position="bottom-right" class="relative">
<span class="icon-users text-[24px] cursor-pointer"></span>
<template v-slot:toggle>
<span class="icon-users text-[24px] cursor-pointer"></span>
</template>
<template v-slot:content>
<div class="p-[20px]">
<div class="grid gap-[10px]">
<p class="text-[20px] font-dmserif">
Welcome Guest </p>
<p class="text-[14px]">
Manage Cart, Orders & Wishlist </p>
</div>
<p class="w-full mt-[12px] py-2px border border-[#E9E9E9]"></p>
<div class="flex gap-[16px] mt-[25px]">
<a
href="https://www.autometaldirect.com/customer/login"
class="block w-max mx-auto m-0 ml-[0px] py-[15px] px-[29px] bg-navyBlue rounded-[18px] text-white text-base font-medium text-center cursor-pointer"
>
Sign In </a>
<a
href="https://www.autometaldirect.com/customer/register"
class="block w-max mx-auto m-0 ml-[0px] py-[14px] px-[29px] bg-white border-2 border-navyBlue rounded-[18px] text-navyBlue text-base font-medium text-center cursor-pointer"
>
Sign Up </a>
</div>
<div class="flex gap-[16px] mt-[25px]">
<a
href="https://www.autometaldirect.com/cookie"
class="block w-max mx-auto m-0 ml-[0px] py-[14px] px-[29px] bg-white border-2 border-navyBlue rounded-[18px] text-navyBlue text-base font-medium text-center cursor-pointer"
>
Reset Cookies
</a>
</div>
</div>
</template>
</v-dropdown>
</div>
</div>
</div>
<form action="https://www.autometaldirect.com/search" class="flex items-center w-full">
<label for="organic-search" class="sr-only">Search</label>
<div class="relative w-full">
<button
class="icon-search flex items-center absolute left-[12px] top-[12px] text-[25px] pointer-events-none" aria-label="Search">
</button>
<input
type="text"
class="block w-full px-11 py-3.5 border border-['#E3E3E3'] rounded-xl text-gray-900 text-xs font-medium"
name="query"
value=""
placeholder="Search products here"
required
>
</div>
</form>
</div>
</header>
<div class="container px-[60px] max-lg:px-[20px] font-semibold text-2xl max-sm:px-[15px] mx-auto">
<h1>Auto Metal Direct</h1>
</div>
<v-carousel>
<div class="shimmer w-full aspect-[2.743/1]">
</div>
</v-carousel>
<v-categories-carousel
src="https://www.autometaldirect.com/api/categories/get-root-categories-with-product"
title="All Categories"
navigation-link="https://www.autometaldirect.com"
>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
</v-categories-carousel>
<footer class="mt-[36px] bg-[#31383f] max-sm:mt-[30px]">
<div class="justify-between max-md:flex">
<div
class="flex gap-x-[25px] gap-y-[30px] justify-between px-[20px] py-[30px] max-[750px]:flex-wrap max-[750px]:flex-row-reverse max-sm:px-[15px]">
<div class="flex gap-[85px] items-start flex-wrap max-md:gap-[25px] max-md:justify-between">
<ul class="grid gap-[20px] text-white text-[14px] footer-links">
<li>
<a href="/page/about-us">
About Us
</a>
</li>
<li>
<a href="/page/contact-us">
Contact Us
</a>
</li>
<li>
<a href="/page/terms-conditions">
Terms & Conditions
</a>
</li>
</ul>
<ul class="grid gap-[20px] text-white text-[14px] footer-links">
<li>
<a href="/page/privacy-policy">
Privacy Policy
</a>
</li>
<li>
<a href="/page/shipping-policy">
Shipping Policy
</a>
</li>
<li>
<a href="/amdcatalogs">
AMD Catalogs
</a>
</li>
</ul>
<ul class="grid gap-[20px] text-white text-[14px] footer-links">
<li>
<a href="/amdgarage">
AMD Garage Articles
</a>
</li>
</ul>
</div>
<div class="grid gap-[8px]">
<p class="max-w-[288px] leading-[15px] text-[20px] italic text-gray-400">
Subscribe to our Newsletter! </p>
<v-form
method="POST"
:initial-errors="[]"
v-slot="{ meta, errors }"
action="https://www.autometaldirect.com/subscription" class="mt-[0px] rounded max-sm:mt-[30px]"
>
<input type="hidden" name="_token" value="wvTUXqnWTwi9AJPB9PC2dhVSFeT2A5IQ34tQ32hM" autocomplete="off">
<div class="relative w-full">
<v-field
name="email"
v-slot="{ field }"
rules="required|email" label="Email"
>
<input
type="email"
name="email"
v-bind="field"
:class="[errors['email'] ? 'border border-red-500 hover:border-red-500' : '']"
class="w-full mb-3 py-2 px-3 shadow border rounded text-[14px] text-gray-600 transition-all hover:border-gray-400 focus:border-gray-400 blockw-[420px] max-w-full px-[20px] py-[15px] pr-[110px] bg-blue-100 border-[2px] border-blue-900 rounded-[24px] text-xs font-medium max-[750px]:w-full" placeholder="email@example.com"
>
</v-field>
<v-error-message
name="email"
v-slot="{ message }"
>
<p
class="text-red-500 text-xs italic"
v-text="message"
>
</p>
</v-error-message>
<p class="text-[14px] text-gray-400 py-[10px]">
Select Newsletter Preferences </p>
<div class="grid grid-cols-2 max-sm:grid-cols-1 gap-4 text-white text-[14px]">
<div class="grid w-full relative text-nowrap">
<div>
<input type="checkbox" id="fordCar" name="ford_car" value="1" checked>
<label for="fordCar"> Ford Car</label>
</div>
</div>
<div class="grid w-full relative text-nowrap">
<div>
<input type="checkbox" id="fordTruck" name="ford_truck" value="1" checked>
<label for="fordTruck"> Ford Truck</label>
</div>
</div>
<div class="grid w-full relative text-nowrap">
<div>
<input type="checkbox" id="chevyCar" name="chevy_car" value="1" checked>
<label for="chevyCar"> Chevy Car</label>
</div>
</div>
<div class="grid w-full relative text-nowrap">
<div>
<input type="checkbox" id="chevyTruck" name="chevy_truck" value="1" checked>
<label for="chevyTruck"> Chevy Truck</label>
</div>
</div>
<div class="grid w-full relative text-nowrap">
<div>
<input type="checkbox" id="mopar" name="mopar" value="1" checked>
<label for="mopar"> Mopar</label>
</div>
</div>
</div>
<button type="submit"
class=" absolute flex items-center top-[6px] w-max px-[13px] py-[8px] bg-white rounded-[24px] border-[2px] border-gray-700 text-[12px] font-medium rtl:left-[5px] ltr:right-[5px]">
Subscribe </button>
</div>
</v-form>
</div>
</div>
</div>
<div class="flex gap-[15px] justify-center">
<a href="https://www.instagram.com/autometaldirect/" alt="AMD on Instagram" title="AMD on Instagram">
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40" fill="none">
<radialGradient id="yOrnnhliCrdS2gy~4tD8ma" cx="19.38" cy="42.035" r="44.899"
gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fd5" />
<stop offset=".328" stop-color="#ff543f" />
<stop offset=".348" stop-color="#fc5245" />
<stop offset=".504" stop-color="#e64771" />
<stop offset=".643" stop-color="#d53e91" />
<stop offset=".761" stop-color="#cc39a4" />
<stop offset=".841" stop-color="#c837ab" />
</radialGradient>
<path fill="url(#yOrnnhliCrdS2gy~4tD8ma)"
d="M34.017,41.99l-20,0.019c-4.4,0.004-8.003-3.592-8.008-7.992l-0.019-20 c-0.004-4.4,3.592-8.003,7.992-8.008l20-0.019c4.4-0.004,8.003,3.592,8.008,7.992l0.019,20 C42.014,38.383,38.417,41.986,34.017,41.99z" />
<radialGradient id="yOrnnhliCrdS2gy~4tD8mb" cx="11.786" cy="5.54" r="29.813"
gradientTransform="matrix(1 0 0 .6663 0 1.849)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#4168c9" />
<stop offset=".999" stop-color="#4168c9" stop-opacity="0" />
</radialGradient>
<path fill="url(#yOrnnhliCrdS2gy~4tD8mb)"
d="M34.017,41.99l-20,0.019c-4.4,0.004-8.003-3.592-8.008-7.992l-0.019-20 c-0.004-4.4,3.592-8.003,7.992-8.008l20-0.019c4.4-0.004,8.003,3.592,8.008,7.992l0.019,20 C42.014,38.383,38.417,41.986,34.017,41.99z" />
<path fill="#fff"
d="M24,31c-3.859,0-7-3.14-7-7s3.141-7,7-7s7,3.14,7,7S27.859,31,24,31z M24,19c-2.757,0-5,2.243-5,5 s2.243,5,5,5s5-2.243,5-5S26.757,19,24,19z" />
<circle cx="31.5" cy="16.5" r="1.5" fill="#fff" />
<path fill="#fff"
d="M30,37H18c-3.859,0-7-3.14-7-7V18c0-3.86,3.141-7,7-7h12c3.859,0,7,3.14,7,7v12 C37,33.86,33.859,37,30,37z M18,13c-2.757,0-5,2.243-5,5v12c0,2.757,2.243,5,5,5h12c2.757,0,5-2.243,5-5V18c0-2.757-2.243-5-5-5H18z" />
</svg>
</a>
<a href="https://www.tiktok.com/@autometaldirect?lang=en" alt="AMD on TikTok" title="AMD on TikTok">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" width="40px" height="40px"
clip-rule="evenodd" fill="none">
<linearGradient id="dYJkfAQNfP2dCzgdw4ruIa" x1="23.672" x2="23.672" y1="6.365" y2="42.252"
gradientTransform="translate(.305 -.206)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#4c4c4c" />
<stop offset="1" stop-color="#343434" />
</linearGradient>
<path fill="url(#dYJkfAQNfP2dCzgdw4ruIa)"
d="M40.004,41.969L8.031,42c-1.099,0.001-1.999-0.897-2-1.996L6,8.031 c-0.001-1.099,0.897-1.999,1.996-2L39.969,6c1.099-0.001,1.999,0.897,2,1.996L42,39.969C42.001,41.068,41.103,41.968,40.004,41.969z" />
<path fill="#ec407a" fill-rule="evenodd"
d="M29.208,20.607c1.576,1.126,3.507,1.788,5.592,1.788v-4.011 c-0.395,0-0.788-0.041-1.174-0.123v3.157c-2.085,0-4.015-0.663-5.592-1.788v8.184c0,4.094-3.321,7.413-7.417,7.413 c-1.528,0-2.949-0.462-4.129-1.254c1.347,1.376,3.225,2.23,5.303,2.23c4.096,0,7.417-3.319,7.417-7.413V20.607L29.208,20.607z M30.657,16.561c-0.805-0.879-1.334-2.016-1.449-3.273v-0.516h-1.113C28.375,14.369,29.331,15.734,30.657,16.561L30.657,16.561z M19.079,30.832c-0.45-0.59-0.693-1.311-0.692-2.053c0-1.873,1.519-3.391,3.393-3.391c0.349,0,0.696,0.053,1.029,0.159v-4.1 c-0.389-0.053-0.781-0.076-1.174-0.068v3.191c-0.333-0.106-0.68-0.159-1.03-0.159c-1.874,0-3.393,1.518-3.393,3.391 C17.213,29.127,17.972,30.274,19.079,30.832z"
clip-rule="evenodd" />
<path fill="#fff" fill-rule="evenodd"
d="M28.034,19.63c1.576,1.126,3.507,1.788,5.592,1.788v-3.157 c-1.164-0.248-2.194-0.856-2.969-1.701c-1.326-0.827-2.281-2.191-2.561-3.788h-2.923V28.79c-0.007,1.867-1.523,3.379-3.393,3.379 c-1.102,0-2.081-0.525-2.701-1.338c-1.107-0.558-1.866-1.705-1.866-3.029c0-1.873,1.519-3.391,3.393-3.391 c0.359,0,0.705,0.056,1.03,0.159v-3.19c-4.024,0.083-7.26,3.369-7.26,7.411c0,2.018,0.806,3.847,2.114,5.183 c1.18,0.792,2.601,1.254,4.129,1.254c4.096,0,7.417-3.319,7.417-7.413L28.034,19.63L28.034,19.63z"
clip-rule="evenodd" />
<path fill="#81d4fa" fill-rule="evenodd"
d="M33.626,18.262v-0.854c-1.05,0.002-2.078-0.292-2.969-0.848 C31.445,17.423,32.483,18.018,33.626,18.262z M28.095,12.772c-0.027-0.153-0.047-0.306-0.061-0.461v-0.516h-4.036v16.019 c-0.006,1.867-1.523,3.379-3.393,3.379c-0.549,0-1.067-0.13-1.526-0.362c0.62,0.813,1.599,1.338,2.701,1.338 c1.87,0,3.386-1.512,3.393-3.379V12.772H28.095z M21.635,21.38v-0.909c-0.337-0.046-0.677-0.069-1.018-0.069 c-4.097,0-7.417,3.319-7.417,7.413c0,2.567,1.305,4.829,3.288,6.159c-1.308-1.336-2.114-3.165-2.114-5.183 C14.374,24.749,17.611,21.463,21.635,21.38z"
clip-rule="evenodd" />
</svg>
</a>
<a href="https://www.youtube.com/@autometaldirect?sub_confirmation=1" alt="AMD on YouTube" title="AMD on YouTube">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="40px" height="40px">
<linearGradient id="PgB_UHa29h0TpFV_moJI9a" x1="9.816" x2="41.246" y1="9.871"
y2="41.301" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#f44f5a" />
<stop offset=".443" stop-color="#ee3d4a" />
<stop offset="1" stop-color="#e52030" />
</linearGradient>
<path fill="url(#PgB_UHa29h0TpFV_moJI9a)"
d="M45.012,34.56c-0.439,2.24-2.304,3.947-4.608,4.267C36.783,39.36,30.748,40,23.945,40 c-6.693,0-12.728-0.64-16.459-1.173c-2.304-0.32-4.17-2.027-4.608-4.267C2.439,32.107,2,28.48,2,24s0.439-8.107,0.878-10.56 c0.439-2.24,2.304-3.947,4.608-4.267C11.107,8.64,17.142,8,23.945,8s12.728,0.64,16.459,1.173c2.304,0.32,4.17,2.027,4.608,4.267 C45.451,15.893,46,19.52,46,24C45.89,28.48,45.451,32.107,45.012,34.56z" />
<path
d="M32.352,22.44l-11.436-7.624c-0.577-0.385-1.314-0.421-1.925-0.093C18.38,15.05,18,15.683,18,16.376 v15.248c0,0.693,0.38,1.327,0.991,1.654c0.278,0.149,0.581,0.222,0.884,0.222c0.364,0,0.726-0.106,1.04-0.315l11.436-7.624 c0.523-0.349,0.835-0.932,0.835-1.56C33.187,23.372,32.874,22.789,32.352,22.44z"
opacity=".05" />
<path
d="M20.681,15.237l10.79,7.194c0.689,0.495,1.153,0.938,1.153,1.513c0,0.575-0.224,0.976-0.715,1.334 c-0.371,0.27-11.045,7.364-11.045,7.364c-0.901,0.604-2.364,0.476-2.364-1.499V16.744C18.5,14.739,20.084,14.839,20.681,15.237z"
opacity=".07" />
<path fill="#fff"
d="M19,31.568V16.433c0-0.743,0.828-1.187,1.447-0.774l11.352,7.568c0.553,0.368,0.553,1.18,0,1.549 l-11.352,7.568C19.828,32.755,19,32.312,19,31.568z" />
</svg>
</a>
<a href="https://www.facebook.com/AutoMetalDirect/" alt="AMD on Facebook" title="AMD on Facebook">
<svg width="40" height="40" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<rect width="40" height="40" rx="20" fill="#1877F2" />
<path
d="M21.4986 29V20.4181H24.4381L24.8821 17.0017H21.4986V14.8337C21.4653 14.3953 21.5875 13.9591 21.8439 13.6008C22.0271 13.4412 22.2423 13.3221 22.4752 13.2512C22.7081 13.1803 22.9535 13.1592 23.1952 13.1895L25 13.1751V10.1366C24.1276 10.0349 23.2493 9.99091 22.371 10.0051C21.7836 9.9769 21.1966 10.0663 20.6447 10.2681C20.0928 10.4698 19.5874 10.7797 19.1583 11.1793C18.7403 11.6214 18.4178 12.1439 18.2108 12.7146C18.0039 13.2854 17.9169 13.8922 17.9551 14.4977V17.0017H15V20.4073H17.9539V28.9892L21.4986 29Z"
fill="white" />
</svg>
</a>
<a href="https://www.linkedin.com/company/autometaldirect" alt="AMD on Linkedin" title="AMD on Linkedin">
<svg width="40" height="40" viewBox="0 0 40 40" fill="none"
xmlns="http://www.w3.org/2000/svg">
<rect width="40" height="40" rx="20" fill="#1D8DEE" />
<path
d="M30.9981 31H26.443V23.8541C26.443 22.1501 26.4126 19.9565 24.074 19.9565C21.7015 19.9565 21.3385 21.813 21.3385 23.73V30.9994H16.7835V16.3046H21.1563V18.3128C22.0466 16.7878 23.7695 15.8736 25.532 15.9392C30.1487 15.9392 31 18.9811 31 22.9386L30.9981 31ZM11.6439 14.2959C10.1938 14.2959 9 13.1007 9 11.648C9 10.1953 10.1933 9 11.6434 9C13.0933 9 14.2865 10.1951 14.2867 11.6474C14.2867 13.0998 13.0938 14.2957 11.6439 14.2959ZM13.9214 31H9.36164V16.3046H13.9214V31Z"
fill="white" />
</svg>
</a>
<a href="https://x.com/autometaldirect" alt="AMD on X" title="AMD on X">
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40"
fill="none">
<rect width="40" height="40" rx="20" fill="#1A1A1A" />
<path
d="M10.0479 11L17.7698 20.9281L10 29H11.7482L18.5524 21.9329L24.0488 29H30L21.8431 18.5142L29.0766 11H27.3274L21.0625 17.5084L16 11H10.0479ZM12.62 12.239H15.3546L27.4279 27.761H24.6933L12.62 12.239Z"
fill="white" stroke="white" stroke-miterlimit="10" />
</svg>
</a>
</div>
<div class="flex justify-center px-[60px] py-[13px] bg-[#31383f]">
<p class="text-[14px] text-gray-300">
© Copyright 2010 - 2025. All rights reserved. </p>
</div>
</footer>
</div>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/*_paq.push(['enableLinkTracking']);
_paq.push(['trackPageView']);*/
</script>
<!-- End Matomo Code -->
<style>
.path-hint {
border: solid 1px transparent;
padding: 1px;
}
.path-hint:hover {
border: 1px solid red;
}
.path-hint-tooltip {
padding: 0px 10px;
position: absolute;
background: #000000;
z-index: 10000;
color: #fff;
font-size: 10px;
}
.path-hint-tooltip h4 {
margin-top: 5px;
margin-bottom: 3px;
color: #fff;
font-size: 12px;
}
.path-hint-tooltip ul li {
margin-bottom: 3px;
}
.main-container-wrapper .product-card .product-image img {
max-width: 100%;
height: 260px;
object-fit: cover;
}
</style>
<script type="text/x-template" id="v-shimmer-image-template">
<div
:id="'image-shimmer-' + $.uid"
class="shimmer"
v-bind="$attrs"
v-show="isLoading"
>
</div>
<img
v-bind="$attrs"
:data-src="src"
:id="'image-' + $.uid"
@load="onLoad"
v-show="! isLoading"
>
</script>
<script type="module">
app.component('v-shimmer-image', {
template: '#v-shimmer-image-template',
props: ['src'],
data() {
return {
isLoading: true,
};
},
mounted() {
let self = this;
let lazyImageObserver = new IntersectionObserver(function(entries, observer) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
let lazyImage = document.getElementById('image-' + self.$.uid);
lazyImage.src = lazyImage.dataset.src;
lazyImageObserver.unobserve(lazyImage);
}
});
});
lazyImageObserver.observe(document.getElementById('image-shimmer-' + this.$.uid));
},
methods: {
onLoad() {
this.isLoading = false;
},
},
});
</script>
<script type="text/x-template" id="v-categories-card-template">
<!-- Grid Card -->
<div
class='grid gap-2.5 shadow-md hover:shadow-xl content-start w-full relative'
>
<div class="relative overflow-hidden group max-w-[200px] max-h-[200] rounded-[4px] mx-auto">
<a
:href="'/' + category.url_path"
class="w-[110px] h-[110px] bg-[#F5F5F5] rounded-full"
:title="category.name"
:aria-label="category.name"
>
<template v-if="category.images.logo_url">
<v-shimmer-image :src="category.images.logo_url" width="150" class="w-[150px] h-[150px] rounded-12px mx-auto" :alt="category.name" :title="category.name">
<div class="shimmer w-[150px] h-[150px] rounded-12px mx-auto" :src="category.images.logo_url" width="150" :alt="category.name" :title="category.name">
</div>
</v-shimmer-image>
</template>
</a>
<a
:href="'/' + category.url_path"
class=""
:title="category.name"
>
<p
class="text-center text-black text-[18px] max-sm:font-normal font-semibold"
v-text="category.name"
>
</p>
</a>
</div>
<div class="grid gap-2.5 content-start max-w-[291px]">
<!-- Needs to implement that in future -->
<div class="hidden flex gap-4 mt-[8px]">
<span class="block w-[30px] h-[30px] bg-[#B5DCB4] rounded-full cursor-pointer"></span>
<span class="block w-[30px] h-[30px] bg-[#5C5C5C] rounded-full cursor-pointer"></span>
</div>
</div>
</div>
</script>
<script type="module">
app.component('v-categories-card', {
template: '#v-categories-card-template',
props: ['mode', 'category'],
data() {
return {
isCustomer: '',
}
},
methods: {
},
});
</script>
<script type="text/x-template" id="v-flash-group-template">
<transition-group
tag='div'
name="flash-group"
enter-from-class="ltr:translate-x-full rtl:-translate-x-full"
enter-active-class="transform transition ease-in-out duration-200"
enter-to-class="ltr:translate-x-0 rtl:-translate-x-0"
leave-from-class="ltr:translate-x-0 rtl:-translate-x-0"
leave-active-class="transform transition ease-in-out duration-200"
leave-to-class="ltr:translate-x-full rtl:-translate-x-full"
class='grid gap-[10px] fixed top-[75px] ltr:right-[20px] rtl:left-[20px] z-[1] justify-items-end'
>
<v-flash-item
v-for='flash in flashes'
:key='flash.uid'
:flash="flash"
@onRemove="remove($event)"
></v-flash-item>
</transition-group>
</script>
<script type="module">
app.component('v-flash-group', {
template: '#v-flash-group-template',
data() {
return {
uid: 0,
flashes: []
}
},
created() {
this.registerGlobalEvents();
},
methods: {
add(flash) {
flash.uid = this.uid++;
this.flashes.push(flash);
},
remove(flash) {
let index = this.flashes.indexOf(flash);
this.flashes.splice(index, 1);
},
registerGlobalEvents() {
this.$emitter.on('add-flash', this.add);
},
}
});
</script>
<script type="text/x-template" id="v-modal-confirm-template">
<div>
<transition
tag="div"
name="modal-overlay"
enter-class="ease-out duration-300"
enter-from-class="opacity-0"
enter-to-class="opacity-100"
leave-class="ease-in duration-200"
leave-from-class="opacity-100"
leave-to-class="opacity-0"
>
<div
class="fixed inset-0 bg-gray-500 bg-opacity-50 transition-opacity z-[1]"
v-show="isOpen"
></div>
</transition>
<transition
tag="div"
name="modal-content"
enter-class="ease-out duration-300"
enter-from-class="opacity-0 translate-y-4 md:translate-y-0 md:scale-95"
enter-to-class="opacity-100 translate-y-0 md:scale-100"
leave-class="ease-in duration-200"
leave-from-class="opacity-100 translate-y-0 md:scale-100"
leave-to-class="opacity-0 translate-y-4 md:translate-y-0 md:scale-95"
>
<div
class="fixed inset-0 z-10 transform transition overflow-y-auto" v-show="isOpen"
>
<div class="flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0">
<div class="w-full max-w-[475px] z-[999] absolute left-[50%] top-[50%] p-[20px] rounded-[12px] bg-white overflow-hidden max-md:w-[90%] -translate-x-[50%] -translate-y-[50%]">
<div class="flex gap-[10px]">
<div>
<span class="flex p-[10px] border border-[rgba(6,12,59,0.20)] rounded-full">
<i class="icon-error text-[28px]"></i>
</span>
</div>
<div>
<div class="flex gap-[20px] justify-between items-center text-[20px]">
{{ title }}
</div>
<div class="pt-[5px] pb-[20px] tex-[14px] text-[#727272] text-left">
{{ message }}
</div>
<div class="flex gap-[10px] justify-end">
<button type="button" class="secondary-button" @click="disagree">
{{ options.btnDisagree }}
</button>
<button type="button" class="primary-button" @click="agree">
{{ options.btnAgree }}
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</transition>
</div>
</script>
<script type="module">
app.component('v-modal-confirm', {
template: '#v-modal-confirm-template',
data() {
return {
isOpen: false,
title: '',
message: '',
options: {
btnDisagree: '',
btnAgree: '',
},
agreeCallback: null,
disagreeCallback: null,
};
},
created() {
this.registerGlobalEvents();
},
methods: {
open({
title = "Are you sure?",
message = "Are you sure you want to perform this action?",
options = {
btnDisagree: "Disagree",
btnAgree: "Agree",
},
agree = () => {},
disagree = () => {},
}) {
this.isOpen = true;
document.body.style.overflow = 'hidden';
this.title = title;
this.message = message;
this.options = options;
this.agreeCallback = agree;
this.disagreeCallback = disagree;
},
disagree() {
this.isOpen = false;
document.body.style.overflow = 'auto';
this.disagreeCallback();
},
agree() {
this.isOpen = false;
document.body.style.overflow = 'auto';
this.agreeCallback();
},
registerGlobalEvents() {
this.$emitter.on('open-confirm-modal', this.open);
},
}
});
</script>
<script type="text/x-template" id="v-carousel-template">
<div class="container px-[60px] max-sm:px-[5px] w-full mt-[10px] relative m-auto">
<a
v-for="(image, index) in activeImages"
class="fade"
:href="image.link || '#'"
ref="slides"
:key="index"
aria-label="Image Slide "
>
<v-shimmer-image class="w-full aspect-[2.743/1]" :src="image.image" :srcset="image.image + ' 1920w, ' + image.image.replace('storage', 'cache/large') + ' 1280w,' + image.image.replace('storage', 'cache/medium') + ' 1024w, ' + image.image.replace('storage', 'cache/small') + ' 525w'" alt="">
<div class="shimmer w-full aspect-[2.743/1]" :src="image.image" :srcset="image.image + ' 1920w, ' + image.image.replace('storage', 'cache/large') + ' 1280w,' + image.image.replace('storage', 'cache/medium') + ' 1024w, ' + image.image.replace('storage', 'cache/small') + ' 525w'" alt="">
</div>
</v-shimmer-image>
</a>
<span
class="icon-arrow-left text-[24px] font-bold text-white w-auto -mt-[22px] p-[12px] absolute top-1/2 left-[10px] bg-[rgba(0,0,0,0.8)] transition-all opacity-30 rounded-full hover:opacity-100 cursor-pointer"
v-if="activeImages?.length >= 2"
@click="navigate(currentIndex -= 1)"
>
</span>
<span
class="icon-arrow-right text-[24px] font-bold text-white w-auto -mt-[22px] p-[12px] absolute top-1/2 right-[10px] bg-[rgba(0,0,0,0.8)] transition-all opacity-30 rounded-full hover:opacity-100 cursor-pointer"
v-if="activeImages?.length >= 2"
@click="navigate(currentIndex += 1)"
>
</span>
</div>
</script>
<script type="module">
app.component("v-carousel", {
template: '#v-carousel-template',
data() {
return {
currentIndex: 1,
images: [{"title":"60-66 WIDE Tubs! Chevy GMC Truck","link":"https:\/\/www.autometaldirect.com\/bed-wheelhouse---5-inch-wider---lh-or-rh---60-66-chevy-gmc-ck-fleetside-pickup","image":"storage\/theme\/1\/fBJNi45s9nBFbvdhlENl8nXoRxMcjHpVg0QM6hOp.webp","status":"0"},{"title":"68-70 Dodge Charger Trunk Lid Pivot Arms","link":"https:\/\/www.autometaldirect.com\/amdgarage\/press-releases\/revive-your-1968-1970-dodge-charger-with-premium-trunk-lid-hinge-pivot-arms","image":"storage\/theme\/1\/k4gRXVBkVLmqKhezKZmNfgZ5dtsUZPzuWAct46ea.webp","status":"0"},{"title":"88-98 Chevy GMC Interior Restoration Parts","link":"https:\/\/www.autometaldirect.com\/search?limit=10\u0026mode=grid\u0026query=obs+interior","image":"storage\/theme\/1\/BZswhPZ1WS5jOAaQhIPwAcjJajWeM3hlJN0r8OcX.webp","status":"0"},{"title":"73-79 Ford Truck Gas Fuel Tank","link":"https:\/\/www.autometaldirect.com\/amdgarage\/press-releases\/calling-all-73-79-ford-trucks","image":"storage\/theme\/1\/YMt3BlyRZORtqGGmfflmfoIewhEJ6MSvAAY5DXMj.webp","status":"1"},{"title":"All-New 12-Piece Tailgate Component Kit for 1973-79 Ford Trucks | AMD","link":"https:\/\/www.autometaldirect.com\/amdgarage\/press-releases\/restore-your-1973-79-ford-truck-with-amds-all-new-12-piece-tailgate-component-kits","image":"storage\/theme\/1\/hmCVPIOoSxni7Prc7qqGO4P0GBRvMWXdohZpiNX7.webp","status":"0"},{"title":"Chevelle Catalog 2025","link":"https:\/\/www.autometaldirect.com\/storage\/catalogs\/Chevelle_Catalog\/index.html","image":"storage\/theme\/1\/rRrFLossilwa30OvxGT29McGThWv3adnKROY1uoS.webp","status":"1"},{"title":"Premium Grille Shell - Chrome \u0026 Black - 88-93 Chevy C\/K OBS Truck \u0026 SUV","link":"https:\/\/www.autometaldirect.com\/premium-grille-shell---chrome-black---dual-headlight---88-93-chevy-ck-obs-truck-suv","image":"storage\/theme\/1\/huX3cJuuatm3Sc6RE3NzGDLjZdB9DHG7dB4JdJ9N.webp","status":"0"},{"title":"1964 Ford Galaxie Floor Braces","link":"https:\/\/www.autometaldirect.com\/search?limit=10\u0026mode=grid\u0026query=425-8964-","image":"storage\/theme\/1\/gYtHdLCt2ilVP2NqMdpmH1oB9b8Nanp2LJHOe6zx.webp","status":"0"},{"title":"2025 AMD Digital Catalogs Now Available","link":"https:\/\/www.autometaldirect.com\/amdcatalogs","image":"storage\/theme\/1\/Rl4mbbcCyhYy7WiwWfjA4xs0frZJ9BLdV5fzirHp.webp","status":"0"},{"title":"Silent Drive PRO","link":"https:\/\/www.autometaldirect.com\/search?limit=10\u0026mode=grid\u0026query=403-1000","image":"storage\/theme\/1\/g76hab9dBzk6N5mv8H3a2WpVBnyWhHyIm8IyzpQ0.webp","status":"0"},{"title":"Memorial Day Sale 2025","link":"https:\/\/www.autometaldirect.com\/amdgarage\/press-releases\/memorial-day-weekend-sale-2025","image":"storage\/theme\/1\/vqAYj3KAM6MGFmLRhhgjNBi4cMe4E7V4LUydGdy8.webp","status":"0"},{"title":"67-72 Ford Truck Bed Floor","link":"https:\/\/www.autometaldirect.com\/premium-bed-floor---67-72-ford-truck-short-bed-styleside","image":"storage\/theme\/1\/uYS3b7jYIE0g1fnbr2LEVWmniQGj654Mj97v3jhW.webp","status":"0"},{"title":"Goodguys Columbus 2025","link":"https:\/\/www.autometaldirect.com\/amdgarage\/car-truck-shows\/amd-garage-mopar-takeover-storms-the-goodguys-27th-summit-racing-nationals-columbus-oh-july-11-13-2025","image":"storage\/theme\/1\/m0mvRj6ZpLejx4vRXcaWz7Kbe25bsdtXeUO5lmoX.webp","status":"0"},{"title":"July 4th Sale 2025 - Auto Metal Direct","link":"https:\/\/www.autometaldirect.com\/amdgarage\/press-releases\/spark-your-build-amds-4th-of-july-sale20-off-orders-of-500","image":"storage\/theme\/1\/rxG6VTXHlV623nlS91XyVll6y6s7R9aZVp1lrWSg.webp","status":"0"},{"title":"2025 GM Truck Fair","link":"https:\/\/www.autometaldirect.com\/amdgarage\/car-truck-shows\/get-ready-for-the-2025-gm-truck-fair-where-classic-trucks-community-come-together","image":"storage\/theme\/1\/H3U02hytOTr7LB7WrIHJqMoDqz3DgdmFxxGiPdHs.webp","status":"0"},{"title":"Trim Sale 082125","link":"https:\/\/www.autometaldirect.com\/search?limit=10\u0026mode=grid\u0026query=299-4073","image":"storage\/theme\/1\/7FepNgFs0jTvllxE7lOp6sbRiBDtSgMMoA0e9X8w.webp","status":"0"},{"title":"How to build a Truck Bed","link":"https:\/\/www.autometaldirect.com\/amdgarage\/videos\/how-to-build-a-ford-f100-bed-assembly-19731979-with-amd-parts","image":"storage\/theme\/1\/zBUMvzrCamV7ynwxzLrlBOOYeP9l4jlARSVn4WUh.webp","status":"1"}],
};
},
computed: {
activeImages: function() {
return this.images.filter(function(imgStatus) {
return imgStatus.status === "1"
})
}
},
mounted() {
this.navigate(this.currentIndex);
this.play();
},
methods: {
navigate(index) {
if (index > this.activeImages.length) {
this.currentIndex = 1;
}
if (index < 1) {
this.currentIndex = this.activeImages.length;
}
let slides = this.$refs.slides;
for (let i = 0; i < slides.length; i++) {
if (i == this.currentIndex - 1) {
continue;
}
slides[i].style.display = 'none';
}
slides[this.currentIndex - 1].style.display = 'block';
},
play() {
let self = this;
setInterval(() => {
this.navigate(this.currentIndex += 1);
}, 5000);
}
}
});
</script>
<style>
.fade {
-webkit-animation-name: fade;
-webkit-animation-duration: 1.5s;
animation-name: fade;
animation-duration: 1.5s;
}
@-webkit-keyframes fade {
from {
opacity: .4
}
to {
opacity: 1
}
}
@keyframes fade {
from {
opacity: .4
}
to {
opacity: 1
}
}
</style>
<script type="text/x-template" id="v-categories-carousel-template">
<div class="container px-[60px] max-lg:px-[20px] max-sm:px-[15px] mx-auto" v-if="categories.length">
<div class="flex mt-[20px] max-sm:mt-[10px] max-xs:mt-[10px]">
<h3 class="text-[30px] font-dmserif max-sm:text-[25px]" v-text="title"></h3>
</div>
<div class="flex gap-[20px] items-start md:mt-[20px] max-lg:gap-[10px]">
<!-- Category Grid Card Container -->
<div class="mt-[30px] mx-auto" v-if="categories.length">
<!-- Category Card Shimmer Effect -->
<template v-if="isLoading">
<div class="grid grid-cols-7 gap-4 max-2xl:grid-cols-6 max-xl:grid-cols-5 max-lg:grid-cols-4 max-md:grid-cols-3 max-sm:grid-cols-2 max-xs:grid-cols-1 max-xs:w-full max-md:gap-2 max-sm:justify-items-center max-sm:grid-cols-1 max-sm:gap-[16px]">
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
<div class="shimmer relative overflow-hidden px-[14px]group justify-center w-full max-h-[300px] min-h-[200px] rounded-[8px]" style="display:flex; align-items:center;">
<div class="shimmer relative w-full rounded-[4px]">
<div class="relative after:content-[' '] after:block after:pb-[calc(100%+9px)]"></div>
</div>
<div class="grid gap-2.5 content-start">
<p class="shimmer w-[75%] h-[291px]"></p>
<p class="shimmer w-[55%] h-[24px]"></p>
<div class="hidden flex gap-4 mt-[12px]">
<span class="shimmer w-[30px] h-[30px] block rounded-full"></span>
</div>
</div>
</div>
</div>
</template>
<!-- Category Card Listing -->
<template v-else>
<div class="grid grid-cols-7 gap-4 max-2xl:grid-cols-6 max-xl:grid-cols-5 max-lg:grid-cols-4 max-md:grid-cols-3 max-sm:grid-cols-2 max-xs:grid-cols-1 max-xs:w-full max-md:gap-2 max-sm:justify-items-center max-sm:grid-cols-1 max-sm:gap-[16px]">
<v-categories-card
v-for="category in categories"
:category="category"
>
</v-categories-card>
</div>
</template>
</div>
<div class="mt-[30px] mx-auto" v-else>
<div class="grid grid-cols-7 gap-4 max-2xl:grid-cols-6 max-xl:grid-cols-5 max-lg:grid-cols-4 max-md:grid-cols-3 max-sm:grid-cols-2 max-xs:grid-cols-1 max-xs:w-full max-md:gap-2 max-sm:justify-items-center max-sm:grid-cols-1 max-sm:gap-[16px]">
Categories with Products not found.
</div>
</div>
</div>
</div>
</script>
<script type="module">
app.component('v-categories-carousel', {
template: '#v-categories-carousel-template',
props: [
'src',
'title',
'navigationLink',
],
data() {
return {
isLoading: true,
categories: [],
offset: 323,
};
},
mounted() {
this.getCategories();
},
methods: {
getCategories() {
this.$axios.get(this.src)
.then(response => {
this.isLoading = false;
this.categories = response.data.data;
}).catch(error => {
console.log(error);
});
},
swipeLeft() {
const container = this.$refs.swiperContainer;
container.scrollLeft -= this.offset;
},
swipeRight() {
const container = this.$refs.swiperContainer;
container.scrollLeft += this.offset;
},
},
});
</script>
<script type="text/x-template" id="v-flash-item-template">
<div
class="flex gap-[46px] justify-between w-max max-w-[408px] px-[20px] py-[12px] rounded-[8px]"
:style="typeStyles[flash.type]['container']"
>
<p
class="text-[14px] flex break-all"
:style="typeStyles[flash.type]['message']"
>
<span
class="icon-toast-done mr-[10px] text-[24px]"
:class="iconClasses[flash.type]"
:style="typeStyles[flash.type]['icon']"
></span>
{{ flash.message }}
</p>
<span
class="icon-cancel max-h-[16px] max-w-[16px] cursor-pointer"
:style="typeStyles[flash.type]['icon']"
@click="remove"
></span>
</div>
</script>
<script type="module">
app.component('v-flash-item', {
template: '#v-flash-item-template',
props: ['flash'],
data() {
return {
iconClasses: {
success: 'icon-toast-done',
error: 'icon-toast-error',
warning: 'icon-toast-exclamation-mark',
info: 'icon-toast-info',
},
typeStyles: {
success: {
container: 'background: #D4EDDA; border-color: #024d14; border-style: solid; border-width: 1px; border-radius: 12px;',
message: 'color: #155721',
icon: 'color: #155721'
},
error: {
container: 'background: #F8D7DA; border-color: #570109; border-style: solid; border-width: 1px; border-radius: 12px;',
message: 'color: #721C24',
icon: 'color: #721C24'
},
warning: {
container: 'background: #FFF3CD; border-color: #bfa245; border-style: solid; border-width: 1px; border-radius: 12px;',
message: 'color: #856404',
icon: 'color: #856404'
},
info: {
container: 'background: #E2E3E5; border-color: #214794; border-style: solid; border-width: 1px; border-radius: 12px;',
message: 'color: #383D41',
icon: 'color: #383D41'
},
},
};
},
created() {
var self = this;
setTimeout(function() {
self.remove()
}, 2000)
},
methods: {
remove() {
this.$emit('onRemove', this.flash)
}
}
});
</script>
<script type="text/x-template" id="v-mobile-category-template">
<div>
<h2 class="text-[20px] font-dmserif max-sm:text-[15px]">Categories</h2>
<template v-for="(category) in categories">
<div class="flex justify-between items-center border border-b-[1px] border-l-0 border-r-0 border-t-0 border-[#f3f3f5]">
<a
:href="'/' + category.url"
class="flex items-center justify-between pb-[20px] mt-[20px]"
v-text="category.name"
>
</a>
<span
class="text-[24px] cursor-pointer"
:class="{'icon-arrow-down': category.isOpen, 'icon-arrow-right': ! category.isOpen}"
@click="toggle(category)"
>
</span>
</div>
<div
class="grid gap-[8px] sub-menu"
v-if="category.isOpen"
>
<ul v-if="category.children.length">
<li v-for="secondLevelCategory in category.children">
<div class="flex justify-between items-center ml-3 border border-b-[1px] border-l-0 border-r-0 border-t-0 border-[#f3f3f5]">
<a
:href="'/' + secondLevelCategory.url"
class="flex items-center justify-between pb-[20px] mt-[20px]"
v-text="secondLevelCategory.name"
>
</a>
<span
class="text-[24px] cursor-pointer"
:class="{
'icon-arrow-down': secondLevelCategory.category_show,
'icon-arrow-right': ! secondLevelCategory.category_show
}"
@click="secondLevelCategory.category_show = ! secondLevelCategory.category_show"
>
</span>
</div>
<div v-if="secondLevelCategory.category_show">
<ul v-if="secondLevelCategory.children.length">
<li v-for="thirdLevelCategory in secondLevelCategory.children">
<div class="flex justify-between items-center ml-3 border border-b-[1px] border-l-0 border-r-0 border-t-0 border-[#f3f3f5]">
<a
:href="'/' + thirdLevelCategory.url"
class="flex items-center justify-between mt-[20px] ml-3 pb-[20px]"
v-text="thirdLevelCategory.name"
>
</a>
</div>
</li>
</ul>
<span
class="ml-2"
v-else
>
No category found. </span>
</div>
</li>
</ul>
<span
class="ml-2"
v-else
>
No category found. </span>
</div>
</template>
</div>
</script>
<script type="module">
app.component('v-mobile-category', {
template: '#v-mobile-category-template',
data() {
return {
categories: [],
}
},
mounted() {
this.get();
},
methods: {
get() {
this.$axios.get("https://www.autometaldirect.com/api/categories/treeActiveProduct")
.then(response => {
this.categories = response.data.data;
}).catch(error => {
console.log(error);
});
},
toggle(selectedCategory) {
this.categories = this.categories.map((category) => ({
...category,
isOpen: category.id === selectedCategory.id ? ! category.isOpen : false,
}));
},
},
});
</script>
<script type="text/x-template" id="v-quantity-changer-template">
<div>
<span
class="icon-minus text-[24px] cursor-pointer"
@click="decrease"
>
</span>
<p
class="w-[10px] text-center select-none"
v-text="quantity"
></p>
<span
class="icon-plus text-[24px] cursor-pointer"
@click="increase"
>
</span>
<v-field
type="hidden"
:name="name"
v-model="quantity"
></v-field>
</div>
</script>
<script type="module">
app.component("v-quantity-changer", {
template: '#v-quantity-changer-template',
props:['name', 'value'],
data() {
return {
quantity: this.value,
}
},
watch: {
value() {
this.quantity = this.value;
},
},
methods: {
increase() {
this.$emit('change', ++this.quantity);
},
decrease() {
if (this.quantity > 1) {
this.quantity -= 1;
}
this.$emit('change', this.quantity);
},
}
});
</script>
<script type="text/x-template" id="v-drawer-template">
<div>
<!-- Toggler -->
<div @click="open">
<slot name="toggle">
admin::app.components.drawer.default-toggle </slot>
</div>
<!-- Overlay -->
<transition
tag="div"
name="drawer-overlay"
enter-class="ease-out duration-300"
enter-from-class="opacity-0"
enter-to-class="opacity-100"
leave-class="ease-in duration-200"
leave-from-class="opacity-100"
leave-to-class="opacity-0"
>
<div
class="fixed inset-0 bg-gray-500 bg-opacity-50 transition-opacity z-[1]"
v-show="isOpen"
></div>
</transition>
<!-- Content -->
<transition
tag="div"
name="drawer"
:enter-from-class="enterFromLeaveToClasses"
enter-active-class="transform transition ease-in-out duration-200"
enter-to-class="translate-x-0"
leave-from-class="translate-x-0"
leave-active-class="transform transition ease-in-out duration-200"
:leave-to-class="enterFromLeaveToClasses"
>
<div
class="fixed z-[1000] bg-white overflow-hidden max-sm:!w-full"
:class="{
'inset-x-0 top-0': position == 'top',
'inset-x-0 bottom-0': position == 'bottom',
'inset-y-0 ltr:right-0 rtl:left-0': position == 'right',
'inset-y-0 ltr:left-0 rtl:right-0': position == 'left'
}"
:style="'width:' + width"
v-show="isOpen"
>
<div class="w-full h-full overflow-auto bg-white pointer-events-auto">
<div class="flex flex-col h-full w-full">
<div class="flex-1 min-h-0 min-w-0 overflow-auto">
<div class="flex flex-col h-full">
<div class="grid gap-y-[10px] p-[25px] pb-[20px] max-sm:px-[15px]">
<!-- Content Slot -->
<slot name="header"></slot>
<div class="absolute top-5 ltr:right-5 rtl:left-5">
<span
class="icon-cancel text-[30px] cursor-pointer"
@click="close"
>
</span>
</div>
</div>
<!-- Content Slot -->
<slot name="content"></slot>
<!-- Footer Slot -->
<slot name="footer"></slot>
</div>
</div>
</div>
</div>
</div>
</transition>
</div>
</script>
<script type="module">
app.component('v-drawer', {
template: '#v-drawer-template',
props: [
'isActive',
'position',
'width'
],
data() {
return {
isOpen: this.isActive,
};
},
watch: {
isActive: function(newVal, oldVal) {
this.isOpen = newVal;
}
},
computed: {
enterFromLeaveToClasses() {
if (this.position == 'top') {
return '-translate-y-full';
} else if (this.position == 'bottom') {
return 'translate-y-full';
} else if (this.position == 'left') {
return 'ltr:-translate-x-full rtl:translate-x-full';
} else if (this.position == 'right') {
return 'ltr:translate-x-full rtl:-translate-x-full';
}
}
},
methods: {
toggle() {
this.isOpen = ! this.isOpen;
if (this.isOpen) {
document.body.style.overflow = 'hidden';
} else {
document.body.style.overflow ='scroll';
}
this.$emit('toggle', { isActive: this.isOpen });
},
open() {
this.isOpen = true;
document.body.style.overflow = 'hidden';
this.$emit('open', { isActive: this.isOpen });
},
close() {
this.isOpen = false;
document.body.style.overflow = 'auto';
this.$emit('close', { isActive: this.isOpen });
}
},
});
</script>
<script type="text/x-template" id="v-mini-cart-template">
<v-drawer
is-active=""
position="right"
width="500px"
>
<template v-slot:toggle>
<span class="relative">
<span class="icon-cart text-[24px] cursor-pointer"></span>
<span
class="absolute px-[7px] top-[-15px] left-[18px] py-[5px] bg-[#060C3B] rounded-[44px] text-white text-[10px] font-semibold leading-[9px]"
v-if="cart?.items_qty"
>
{{ parseInt(cart.items_qty) }}
</span>
</span>
</template>
<template v-slot:header>
<div class="flex items-center justify-between">
<p class="text-[26px] font-medium">
Shopping Cart </p>
</div>
<p class="text-[16px]">
</p>
</template>
<template v-slot:content>
<div class="px-[25px] overflow-auto flex-1 max-sm:px-[15px]">
<!-- Cart Item Listing -->
<div
class="grid gap-[50px] mt-[35px]"
v-if="cart?.items?.length"
>
<div
class="flex gap-x-[20px]"
v-for="item in cart?.items"
>
<!-- Cart Item Image -->
<div class="">
<img
:src="item.base_image.small_image_url"
class="max-w-[110px] max-h-[110px] rounded-[12px]"
/>
</div>
<!-- Cart Item Information -->
<div class="grid flex-1 gap-y-[10px] place-content-start justify-stretch">
<div class="flex flex-wrap justify-between">
<a :href="`https://www.autometaldirect.com/${item.url_key}`">
<p
class="text-[16px] font-medium max-w-[80%]"
v-text="item.name"
>
</p>
</a>
<p
class="text-[18px]"
v-text="item.formatted_price"
>
</p>
</div>
<!-- Cart Item Options Container -->
<div
class="grid gap-x-[10px] gap-y-[6px] select-none"
v-if="item.options.length"
>
<!-- Details Toggler -->
<div class="">
<p
class="flex gap-x-[15px] items-center text-[16px] cursor-pointer"
@click="item.option_show = ! item.option_show"
>
See Details
<span
class="text-[24px]"
:class="{'icon-arrow-up': item.option_show, 'icon-arrow-down': ! item.option_show}"
></span>
</p>
</div>
<!-- Option Details -->
<div class="grid gap-[8px]" v-show="item.option_show">
<div class="" v-for="option in item.options">
<p class="text-[14px] font-medium">
{{ option.attribute_name + ':' }}
</p>
<p class="text-[14px]">
{{ option.option_label }}
</p>
</div>
</div>
</div>
<div class="flex gap-[20px] items-center flex-wrap">
<!-- Cart Item Quantity Changer -->
<v-quantity-changer
class="flex border border-navyBlue items-center gap-x-[10px] max-w-[150px] max-h-[36px] py-[5px] px-[14px] rounded-[54px]" :value="item?.quantity" @change="updateItem($event, item)"
name="quantity"
value="1"
>
</v-quantity-changer>
<!-- Cart Item Remove Button -->
<button
type="button"
class="text-[#0A49A7]"
@click="removeItem(item.id)"
>
Remove </button>
</div>
</div>
</div>
</div>
<!-- Empty Cart Section -->
<div
class="pb-[30px]"
v-else
>
<div class="grid gap-y-[20px] b-0 place-items-center">
<img src="https://www.autometaldirect.com/themes/shop/default/build/assets/thank-you-aa4a2b62.png">
<p class="text-[20px]">
Your cart is empty </p>
</div>
</div>
</div>
</template>
<template v-slot:footer>
<div class="pb-[30px]">
<div v-if="cart?.items?.length">
<div class="flex justify-between items-center mt-[60px] mb-[30px] px-[25px] pb-[8px] border-b-[1px] border-[#E9E9E9]">
<p class="text-[14px] font-medium text-[#6E6E6E]">
Subtotal </p>
<p
class="text-[30px] font-semibold"
v-text="cart.formatted_sub_total"
>
</p>
</div>
<!-- Cart Action Container -->
<div class="px-[25px]">
<div>
<a
href="https://www.autometaldirect.com/checkout/onepage"
class="block w-full mx-auto m-0 ml-[0px] py-[15px] px-[43px] bg-navyBlue rounded-[18px] text-white text-base font-medium text-center cursor-pointer max-sm:px-[20px]"
>
Continue to Checkout </a>
</div>
<div class="secondary-button mt-[10px] block w-full mx-auto rounded-[18px] py-[15px] text-base text-center" style="max-width:none;">
<a href="https://www.autometaldirect.com/checkout/cart">
View Cart </a>
</div>
</div>
</div>
</div>
</template>
</v-drawer>
</script>
<script type="module">
app.component("v-mini-cart", {
template: '#v-mini-cart-template',
data() {
return {
cart: null,
}
},
mounted() {
this.getCart();
/**
* To Do: Implement this.
*
* Action.
*/
this.$emitter.on('update-mini-cart', (cart) => {
this.cart = cart;
});
},
methods: {
getCart() {
this.$axios.get('https://www.autometaldirect.com/api/checkout/cart')
.then(response => {
this.cart = response.data.data;
})
.catch(error => {});
},
updateItem(quantity, item) {
let qty = {};
qty[item.id] = quantity;
this.$axios.put('https://www.autometaldirect.com/api/checkout/cart', { qty })
.then(response => {
if (response.data.message) {
this.cart = response.data.data;
this.googleViewCart();
} else {
this.$emitter.emit('add-flash', { type: 'warning', message: response.data.data.message });
}
})
.catch(error => {});
},
googleViewCart() {
let cartItem = this.cart.items;
for (let index = 0, len = cartItem.length; index < len; ++index) {
this.GACartItems[index] = {
'item_id': cartItem[index].sku,
'item_name': cartItem[index].name,
'price': parseFloat(cartItem[index].price),
'quantity': parseInt(cartItem[index].quantity)
}
this.$matomo.addEcommerceItem(
cartItem[index].sku,
cartItem[index].name,
false,
parseFloat(cartItem[index].price),
parseInt(cartItem[index].quantity)
)
}
this.$gtm.trackEvent({ ecommerce: null });
this.$gtm.trackEvent({
event: 'view_cart',
ecommerce: {
currency: "USD",
value: parseFloat(this.cart.grand_total),
items: this.GACartItems,
}
});
this.$matomo.trackEcommerceCartUpdate(parseFloat(this.cart.grand_total));
},
removeItem(itemId) {
this.$axios.post('https://www.autometaldirect.com/api/checkout/cart', {
'_method': 'DELETE',
'cart_item_id': itemId,
})
.then(response => {
this.cart = response.data.data;
this.$emitter.emit('add-flash', { type: 'success', message: response.data.message });
})
.catch(error => {});
},
}
});
</script>
<script type="text/x-template" id="v-dropdown-template">
<div>
<div
class="select-none"
ref="toggleBlock"
@click="toggle()"
>
<slot name="toggle">Toggle</slot>
</div>
<transition
tag="div"
name="dropdown"
enter-active-class="transition ease-out duration-100"
enter-from-class="transform opacity-0 scale-95"
enter-to-class="transform opacity-100 scale-100"
leave-active-class="transition ease-in duration-75"
leave-from-class="transform opacity-100 scale-100"
leave-to-class="transform opacity-0 scale-95"
>
<div
class="absolute w-max z-10 overflow-hidden bg-white shadow-[0px_10px_84px_rgba(0,0,0,0.1)] rounded-[20px]"
:style="positionStyles"
v-show="isActive"
>
<slot name="content"></slot>
<slot name="menu"></slot>
</div>
</transition>
</div>
</script>
<script type="module">
app.component('v-dropdown', {
template: '#v-dropdown-template',
props: {
position: String,
closeOnClick: {
type: Boolean,
required: false,
default: true
},
},
data() {
return {
toggleBlockWidth: 0,
toggleBlockHeight: 0,
isActive: false,
};
},
created() {
window.addEventListener('click', this.handleFocusOut);
},
mounted() {
this.toggleBlockWidth = this.$refs.toggleBlock.clientWidth;
this.toggleBlockHeight = this.$refs.toggleBlock.clientHeight;
},
beforeDestroy() {
window.removeEventListener('click', this.handleFocusOut);
},
computed: {
positionStyles() {
switch (this.position) {
case 'bottom-left':
return [
`min-width: ${this.toggleBlockWidth}px`,
`top: ${this.toggleBlockHeight}px`,
'left: 0',
];
case 'bottom-right':
return [
`min-width: ${this.toggleBlockWidth}px`,
`top: ${this.toggleBlockHeight}px`,
'right: 0',
];
case 'top-left':
return [
`min-width: ${this.toggleBlockWidth}px`,
`bottom: ${this.toggleBlockHeight}px`,
'left: 0',
];
case 'top-right':
return [
`min-width: ${this.toggleBlockWidth}px`,
`bottom: ${this.toggleBlockHeight}px`,
'right: 0',
];
default:
return [
`min-width: ${this.toggleBlockWidth}px`,
`top: ${this.toggleBlockHeight}px`,
'left: 0',
];
}
},
},
methods: {
toggle() {
/**
* If still somehow width is zero then this will check for width one more time.
*/
if (this.toggleBlockWidth === 0) {
this.toggleBlockWidth = this.$refs.toggleBlock.clientWidth;
}
/**
* If still somehow height is zero then this will check for height one more time.
*/
if (this.toggleBlockHeight === 0) {
this.toggleBlockHeight = this.$refs.toggleBlock.clientHeight;
}
this.isActive = ! this.isActive;
},
handleFocusOut(e) {
if (! this.$el.contains(e.target) || (this.closeOnClick && this.$el.children[1].contains(e.target))) {
this.isActive = false;
}
},
},
});
</script>
<script type="text/x-template" id="v-ymm-template">
<div class="container flex flex-wrap px-[20px] pt-[3px] max-sm:grid max-sm:grid-cols-1 max-sm:w-full">
<div class="relative">
<select v-model="selectedYear" @change="selectedYearChange" class="rounded-md px-[5px] max-sm:grid max-sm:grid-cols-1 max-sm:w-full max-sm:min-h-[40px] max-lg:border-navyBlue max-lg:border-[1px] max-md:border-navyBlue max-md:border-[1px] max-sm:border-navyBlue max-sm:border-[1px]">
<option value=0>Year</option>
<option v-for="option in optionsYear" :value="option">{{ option }}</option>
</select>
<select v-model="selectedMake" @change="selectedMakeChange" class="rounded-md px-[5px] max-sm:grid max-sm:grid-cols-1 max-sm:w-full max-sm:min-h-[40px] max-lg:border-navyBlue max-lg:border-[1px] max-md:border-navyBlue max-md:border-[1px] max-sm:border-navyBlue max-sm:border-[1px]">
<option value=0>Make</option>
<option v-for="option in optionsMake" :value="option.id">{{ option.make }}</option>
</select>
<select v-model="selectedModel" @change="selectedModelChange" class="rounded-md px-[5px] max-sm:grid max-sm:grid-cols-1 max-sm:w-full max-sm:min-h-[40px] max-lg:border-navyBlue max-lg:border-[1px] max-md:border-navyBlue max-md:border-[1px] max-sm:border-navyBlue max-sm:border-[1px]">
<option value=0>Model</option>
<option v-for="option in optionsModel" :value="option.id">{{ option.model }}</option>
</select>
<button type="submit" @click="clearSelected" class="bg-white rounded-md text-navyBlue border-navyBlue border text-s font-medium cursor-pointer h-[25px] px-[5px] max-sm:grid max-sm:grid-cols-1 max-sm:w-full max-sm:min-h-[40px] items-center">Clear</button>
</div>
</div>
</script>
<script type="module">
app.component('v-ymm', {
template: '#v-ymm-template',
data() {
return {
vehicle: {},
optionsYear: [],
optionsMake: [],
optionsModel: [],
selectedYear: 0,
selectedMake: 0,
selectedModel: 0,
queryParams: "",
};
},
mounted() {
this.getYears();
this.getMakes();
this.getVehicle();
},
watch: {
vehicle: 'updateVehicle',
},
methods: {
makeExists(currentMake) {
for(var i=0; i < this.optionsMake.length; i++){
if ( this.optionsMake[i].id == currentMake){
return true
}
}
return false
},
modelExists(currentModel) {
for(var i=0; i < this.optionsModel.length; i++){
if ( this.optionsModel[i].id == currentModel){
return true
}
}
return false
},
getYears() {
this.$axios.get('/api/ymm/years')
.then(response => {
let yearval = response.data.data[0];
this.optionsYear = Array.from({length:yearval.maxyear-yearval.minyear+1},(v,k)=>k+yearval.minyear);
}).catch(error => {
console.log(error);
});
},
getMakes() {
this.$axios.get('/api/ymm/makes')
.then(response => {
this.optionsMake = response.data.data;
if (!this.makeExists(this.selectedMake))
{
this.selectedMake = 0;
}
if (this.selectedModel > 0) {
this.getModelsMake();
}
}).catch(error => {
console.log(error);
});
},
getMakesYear() {
this.$axios.get('/api/ymm/makes/' + this.selectedYear)
.then(response => {
this.optionsMake = response.data.data;
if (!this.makeExists(this.selectedMake))
{
this.selectedMake = 0;
this.optionsModel = [];
this.selectedModel = 0;
}
if(this.selectedModel > 0) {
this.getModelsMakeYear();
}
}).catch(error => {
console.log(error);
});
},
getModelsMake() {
this.$axios.get('/api/ymm/models/' + this.selectedMake)
.then(response => {
this.optionsModel = response.data.data;
if (this.vehicle['model'] > 0)
{
this.selectedModel = this.vehicle['model'];
}
if (!this.modelExists(this.selectedModel))
{
this.selectedModel = 0;
} else {
this.chkVehicleChange();
}
}).catch(error => {
console.log(error);
});
},
getModelsMakeYear() {
this.$axios.get('/api/ymm/modelsyear/' + this.selectedMake + '/' + this.selectedYear)
.then(response => {
this.optionsModel = response.data.data;
if (this.vehicle['model'] > 0)
{
this.selectedModel = this.vehicle['model'];
}
if (!this.modelExists(this.selectedModel))
{
this.selectedModel = 0;
} else {
this.chkVehicleChange();
}
}).catch(error => {
console.log(error);
});
},
selectedYearChange() {
if (this.selectedYear > 0) {
this.getMakesYear();
} else if (this.selectedYear < 1) {
this.optionsModel = [];
this.selectedModel = 0;
this.getMakes();
this.selectedMake = 0;
this.storeVehicle();
} else {
this.getMakes();
}
},
selectedMakeChange() {
if (this.selectedYear < 1 && this.selectedMake > 0) {
this.getModelsMake();
} else if (this.selectedYear > 0 && this.selectedMake > 0) {
this.getModelsMakeYear();
} else if (this.selectedYear > 0 && this.selectedMake < 1) {
this.selectedModel = 0;
this.optionsModel = [];
this.selectedYearChange();
} else {
this.getYears();
this.getMakes();
this.selectedModel = 0;
this.optionsModel = [];
}
},
clearSelected() {
this.selectedYear = 0;
this.selectedMake = 0;
this.selectedModel = 0;
this.storeVehicle();
this.optionsModel = [];
this.vehicle = '';
this.storeVehicle();
},
selectedModelChange() {
this.storeVehicle();
},
storeVehicle() {
this.vehicle = [{ year: this.selectedYear, make: this.selectedMake, model: this.selectedModel}];
this.$axios.post('/api/ymm/storeVehicle', {
vehicle: this.vehicle})
.then(response => {
this.vehicle = response.data;
window.location.href = window.location.pathname;
}).catch(error => {
console.log(error);
});
},
getVehicle() {
this.$axios.get('/api/ymm/vehicle/')
.then(response => {
this.vehicle = response.data;
if (this.vehicle['make'] > 0) {
this.selectedYear = this.vehicle['year'];
this.selectedMake = this.vehicle['make'];
if (this.selectedMake = this.vehicle['make']) {
this.selectedModel = this.vehicle['model'];
}
}
}).catch(error => {
console.log('get error: ');
console.log(error);
});
},
chkVehicleChange() {
if (this.selectedYear != this.vehicle['year'] || this.selectedMake != this.vehicle['make'] || this.selectedModel != this.vehicle['model']) {
this.storeVehicle();
}
},
showVehicle() {
this.$emitter.emit('add-flash', {
type: 'success',
message: this.vehicle,
});
},
updateVehicle() {
if (this.selectedMake > 0) {
if (this.vehicle.make > 0) {
this.selectedMakeChange();
if (this.optionsModel.length > 1)
{
this.selectedModel = this.vehicle.model;
}
}
} else {
this.selectedYear = 0;
this.selectedMake = 0;
this.selectedModel = 0;
}
},
},
});
</script>
<script type="text/x-template" id="v-desktop-category-template">
<div class="mt-[25px]">
<h2 class="text-[20px] font-dmserif max-sm:text-[15px]">Categories</h2>
<template v-for="(category) in categories">
<div class="flex justify-between items-center border border-b-[2px] border-l-0 border-r-0 border-t-0 border-[#f3f3f5]">
<a
:href="'/' + category.url"
:title="category.name"
class="flex items-center justify-between pb-[10px] mt-[10px]"
v-text="category.name"
>
</a>
<span
class="text-[24px] cursor-pointer"
:class="{'icon-arrow-down': category.isOpen, 'icon-arrow-right': ! category.isOpen}"
@click="toggle(category)"
v-if="category.children.length"
>
</span>
</div>
<div
class="grid gap-[8px] sub-menu"
v-if="category.isOpen"
>
<ul v-if="category.children.length">
<li v-for="secondLevelCategory in category.children">
<div class="flex justify-between items-center ml-3 border border-b-[2px] border-l-0 border-r-0 border-t-0 border-[#f3f3f5]">
<a
:href="'/' + secondLevelCategory.url"
:title="secondLevelCategory.name"
class="flex items-center justify-between pb-[10px] mt-[10px]"
v-text="secondLevelCategory.name"
>
</a>
<span
class="text-[24px] cursor-pointer"
:class="{
'icon-arrow-down': secondLevelCategory.category_show,
'icon-arrow-right': ! secondLevelCategory.category_show
}"
@click="secondLevelCategory.category_show = ! secondLevelCategory.category_show"
v-if="secondLevelCategory.children.length"
>
</span>
</div>
<div v-if="secondLevelCategory.category_show">
<ul v-if="secondLevelCategory.children.length">
<li v-for="thirdLevelCategory in secondLevelCategory.children">
<div class="flex justify-between items-center ml-3 border border-b-[2px] border-l-0 border-r-0 border-t-0 border-[#f3f3f5]">
<a
:href="'/' + thirdLevelCategory.url"
:title="thirdLevelCategory.name"
class="flex items-center justify-between mt-[10px] ml-3 pb-[10px]"
v-text="thirdLevelCategory.name"
>
</a>
</div>
</li>
</ul>
<span
class="ml-2"
v-else
>
No category found. </span>
</div>
</li>
</ul>
<span
class="ml-2"
v-else
>
No category found. </span>
</div>
</template>
</div>
</script>
<script type="module">
app.component('v-desktop-category', {
template: '#v-desktop-category-template',
data() {
return {
categories: [],
}
},
mounted() {
this.get();
},
methods: {
get() {
this.$axios.get("https://www.autometaldirect.com/api/categories/treeActiveProduct")
.then(response => {
this.categories = response.data.data;
}).catch(error => {
console.log(error);
});
},
toggle(selectedCategory) {
this.categories = this.categories.map((category) => ({
...category,
isOpen: category.id === selectedCategory.id ? ! category.isOpen : false,
}));
},
},
});
</script>
<script type="text/javascript">
</script>
</body>
</html>