Add MegaMenuLink component and improve main header
This commit introduces the MegaMenuLink component and updates NavbarMegaMenu.astro with the new MegaMenuLink.
This commit is contained in:
parent
822220e1fc
commit
49300273be
2 changed files with 485 additions and 0 deletions
223
src/components/sections/NavbarMegaMenu.astro
Normal file
223
src/components/sections/NavbarMegaMenu.astro
Normal file
|
|
@ -0,0 +1,223 @@
|
|||
---
|
||||
//Import relevant dependencies
|
||||
import ThemeIcon from "@components/ThemeIcon.astro";
|
||||
import NavLink from "@components/ui/links/NavLink.astro";
|
||||
import MegaMenuLink from "@components/ui/links/MegaMenuLink.astro";
|
||||
import Authentication from "./Authentication.astro";
|
||||
import enStrings from "@utils/navigation.ts";
|
||||
import frStrings from "@utils/fr/navigation.ts";
|
||||
import BrandLogo from "@components/BrandLogo.astro";
|
||||
import LanguagePicker from "@components/ui/LanguagePicker.astro";
|
||||
|
||||
// Select the correct translation based on the page's lang prop:
|
||||
const strings = Astro.currentLocale === "fr" ? frStrings : enStrings;
|
||||
const homeUrl = Astro.currentLocale === "fr" ? "/fr" : "/";
|
||||
---
|
||||
|
||||
<!-- Main header component -->
|
||||
<header
|
||||
class="sticky inset-x-0 top-4 z-50 flex w-full flex-wrap text-sm md:flex-nowrap md:justify-start"
|
||||
>
|
||||
<!-- Navigation container -->
|
||||
<nav
|
||||
class="relative mx-2 w-full rounded-[36px] border border-yellow-100/40 bg-yellow-50/60 px-4 py-3 backdrop-blur-md dark:border-neutral-700/40 dark:bg-neutral-800/80 dark:backdrop-blur-md md:flex md:items-center md:justify-between md:px-6 md:py-0 lg:px-8 xl:mx-auto"
|
||||
aria-label="Global"
|
||||
>
|
||||
<div class="flex items-center justify-between">
|
||||
<!-- Brand logo -->
|
||||
<a
|
||||
class="flex-none rounded-lg text-xl font-bold outline-none ring-zinc-500 focus-visible:ring dark:ring-zinc-200 dark:focus:outline-none"
|
||||
href={homeUrl}
|
||||
aria-label="Brand"
|
||||
>
|
||||
<BrandLogo class="h-auto w-24" />
|
||||
</a>
|
||||
<!-- Collapse toggle for smaller screens -->
|
||||
<div class="ml-auto mr-5 md:hidden">
|
||||
<button
|
||||
type="button"
|
||||
class="hs-collapse-toggle flex h-8 w-8 items-center justify-center rounded-full text-sm font-bold text-neutral-600 transition duration-300 hover:bg-neutral-200 disabled:pointer-events-none disabled:opacity-50 dark:text-neutral-400 dark:hover:bg-neutral-700 dark:focus:outline-none"
|
||||
data-hs-collapse="#navbar-collapse-with-animation"
|
||||
aria-controls="navbar-collapse-with-animation"
|
||||
aria-label="Toggle navigation"
|
||||
>
|
||||
<svg
|
||||
class="h-[1.25rem] w-[1.25rem] flex-shrink-0 hs-collapse-open:hidden"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="3" x2="21" y1="6" y2="6"></line>
|
||||
<line x1="3" x2="21" y1="12" y2="12"></line>
|
||||
<line x1="3" x2="21" y1="18" y2="18"></line>
|
||||
</svg>
|
||||
<svg
|
||||
class="hidden h-[1.25rem] w-[1.25rem] flex-shrink-0 hs-collapse-open:block"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M18 6 6 18"></path>
|
||||
<path d="m6 6 12 12"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
<!-- ThemeIcon component specifically for smaller screens -->
|
||||
<span class="inline-block md:hidden">
|
||||
<ThemeIcon />
|
||||
</span>
|
||||
</div>
|
||||
<!-- Contains navigation links -->
|
||||
<div
|
||||
id="navbar-collapse-with-animation"
|
||||
class="hs-collapse hidden grow basis-full overflow-hidden transition-all duration-300 md:block"
|
||||
>
|
||||
<!-- Navigation links container -->
|
||||
<div
|
||||
class="mt-5 flex flex-col gap-x-0 gap-y-4 md:mt-0 md:flex-row md:items-center md:justify-end md:gap-x-4 md:gap-y-0 md:ps-7 lg:gap-x-7"
|
||||
>
|
||||
<!-- Navigation links and Authentication component -->
|
||||
{
|
||||
strings.navBarLinks.map((link) => {
|
||||
if (link.name === "Services") {
|
||||
return <MegaMenuLink />;
|
||||
} else {
|
||||
return <NavLink url={link.url} name={link.name} />;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
<Authentication />
|
||||
<LanguagePicker />
|
||||
<!-- ThemeIcon component specifically for larger screens -->
|
||||
<span class="hidden md:inline-block">
|
||||
<ThemeIcon />
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
<!-- Theme Appearance script to manage light/dark modes -->
|
||||
<script is:inline>
|
||||
const HSThemeAppearance = {
|
||||
init() {
|
||||
const defaultTheme = "default";
|
||||
let theme = localStorage.getItem("hs_theme") || defaultTheme;
|
||||
|
||||
if (document.querySelector("html").classList.contains("dark")) return;
|
||||
this.setAppearance(theme);
|
||||
},
|
||||
_resetStylesOnLoad() {
|
||||
const $resetStyles = document.createElement("style");
|
||||
$resetStyles.innerText = `*{transition: unset !important;}`;
|
||||
$resetStyles.setAttribute("data-hs-appearance-onload-styles", "");
|
||||
document.head.appendChild($resetStyles);
|
||||
return $resetStyles;
|
||||
},
|
||||
setAppearance(theme, saveInStore = true, dispatchEvent = true) {
|
||||
const $resetStylesEl = this._resetStylesOnLoad();
|
||||
|
||||
if (saveInStore) {
|
||||
localStorage.setItem("hs_theme", theme);
|
||||
}
|
||||
|
||||
if (theme === "auto") {
|
||||
theme = window.matchMedia("(prefers-color-scheme: dark)").matches
|
||||
? "dark"
|
||||
: "default";
|
||||
}
|
||||
|
||||
document.querySelector("html").classList.remove("dark");
|
||||
document.querySelector("html").classList.remove("default");
|
||||
document.querySelector("html").classList.remove("auto");
|
||||
|
||||
document
|
||||
.querySelector("html")
|
||||
.classList.add(this.getOriginalAppearance());
|
||||
|
||||
setTimeout(() => {
|
||||
$resetStylesEl.remove();
|
||||
});
|
||||
|
||||
if (dispatchEvent) {
|
||||
window.dispatchEvent(
|
||||
new CustomEvent("on-hs-appearance-change", { detail: theme })
|
||||
);
|
||||
}
|
||||
},
|
||||
getAppearance() {
|
||||
let theme = this.getOriginalAppearance();
|
||||
if (theme === "auto") {
|
||||
theme = window.matchMedia("(prefers-color-scheme: dark)").matches
|
||||
? "dark"
|
||||
: "default";
|
||||
}
|
||||
return theme;
|
||||
},
|
||||
getOriginalAppearance() {
|
||||
const defaultTheme = "default";
|
||||
return localStorage.getItem("hs_theme") || defaultTheme;
|
||||
},
|
||||
};
|
||||
HSThemeAppearance.init();
|
||||
|
||||
window
|
||||
.matchMedia("(prefers-color-scheme: dark)")
|
||||
.addEventListener("change", () => {
|
||||
if (HSThemeAppearance.getOriginalAppearance() === "auto") {
|
||||
HSThemeAppearance.setAppearance("auto", false);
|
||||
}
|
||||
});
|
||||
|
||||
window.addEventListener("load", () => {
|
||||
const $clickableThemes = document.querySelectorAll(
|
||||
"[data-hs-theme-click-value]"
|
||||
);
|
||||
const $switchableThemes = document.querySelectorAll(
|
||||
"[data-hs-theme-switch]"
|
||||
);
|
||||
|
||||
$clickableThemes.forEach(($item) => {
|
||||
$item.addEventListener("click", () =>
|
||||
HSThemeAppearance.setAppearance(
|
||||
$item.getAttribute("data-hs-theme-click-value"),
|
||||
true,
|
||||
$item
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
$switchableThemes.forEach(($item) => {
|
||||
$item.addEventListener("change", (e) => {
|
||||
HSThemeAppearance.setAppearance(e.target.checked ? "dark" : "default");
|
||||
});
|
||||
|
||||
$item.checked = HSThemeAppearance.getAppearance() === "dark";
|
||||
});
|
||||
|
||||
window.addEventListener("on-hs-appearance-change", (e) => {
|
||||
$switchableThemes.forEach(($item) => {
|
||||
$item.checked = e.detail === "dark";
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<!--Import the necessary Collapse and Overlay plugins-->
|
||||
<!--https://preline.co/plugins/html/collapse.html-->
|
||||
<!--https://preline.co/plugins/html/overlay.html-->
|
||||
<!--https://preline.co/plugins/html/dropdown.html-->
|
||||
<script>
|
||||
import "@preline/collapse/index.js";
|
||||
import "@preline/overlay/index.js";
|
||||
import "@preline/dropdown/index.js";
|
||||
</script>
|
||||
262
src/components/ui/links/MegaMenuLink.astro
Normal file
262
src/components/ui/links/MegaMenuLink.astro
Normal file
|
|
@ -0,0 +1,262 @@
|
|||
---
|
||||
import { Image } from "astro:assets";
|
||||
import Icon from "../icons/Icon.astro";
|
||||
import personWorking from "@images/person-working.avif";
|
||||
---
|
||||
|
||||
<div
|
||||
class="hs-dropdown py-3 [--adaptive:none] [--strategy:static] md:px-3 md:py-4 md:[--strategy:absolute] md:[--trigger:hover]"
|
||||
>
|
||||
<button
|
||||
type="button"
|
||||
class="flex w-full items-center font-medium text-neutral-600 hover:text-neutral-500 dark:text-neutral-400 dark:hover:text-neutral-500"
|
||||
>
|
||||
Services
|
||||
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="1.5"
|
||||
stroke="currentColor"
|
||||
class="ms-2 size-4 flex-shrink-0"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="m19.5 8.25-7.5 7.5-7.5-7.5"></path>
|
||||
</svg>
|
||||
</button>
|
||||
|
||||
<div
|
||||
class="hs-dropdown-menu start-0 top-full z-10 hidden w-full min-w-60 rounded-2xl bg-neutral-50 py-2 opacity-0 transition-[opacity,margin] duration-[0.1ms] before:absolute before:-top-5 before:start-0 before:h-5 before:w-full hs-dropdown-open:opacity-100 dark:divide-neutral-700 dark:bg-neutral-800 md:p-4 md:shadow-2xl md:duration-[150ms]"
|
||||
>
|
||||
<div class="gap-4 md:grid md:grid-cols-2 lg:grid-cols-3">
|
||||
<div class="mx-1 flex flex-col md:mx-0">
|
||||
<a
|
||||
class="group flex gap-x-5 rounded-lg p-4 hover:bg-neutral-100 dark:text-neutral-200 dark:hover:bg-neutral-500/10"
|
||||
href="#"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="1.5"
|
||||
stroke="currentColor"
|
||||
class="mt-1 size-5 flex-shrink-0"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="M12 6.042A8.967 8.967 0 0 0 6 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 0 1 6 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 0 1 6-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0 0 18 18a8.967 8.967 0 0 0-6 2.292m0-14.25v14.25"
|
||||
></path>
|
||||
</svg>
|
||||
<div class="grow">
|
||||
<p class="font-medium text-neutral-800 dark:text-neutral-200">
|
||||
Explore Advice and Explanations
|
||||
</p>
|
||||
<p
|
||||
class="text-sm text-neutral-500 group-hover:text-neutral-800 dark:text-neutral-400 dark:group-hover:text-neutral-200"
|
||||
>
|
||||
Dive deep into helpful guides and explanations for all of
|
||||
ScrewFast's features
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a
|
||||
class="group flex gap-x-5 rounded-lg p-4 hover:bg-neutral-100 dark:text-neutral-200 dark:hover:bg-neutral-500/10"
|
||||
href="#"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="1.5"
|
||||
stroke="currentColor"
|
||||
class="mt-1 size-5 flex-shrink-0"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="M2.25 7.125C2.25 6.504 2.754 6 3.375 6h6c.621 0 1.125.504 1.125 1.125v3.75c0 .621-.504 1.125-1.125 1.125h-6a1.125 1.125 0 0 1-1.125-1.125v-3.75ZM14.25 8.625c0-.621.504-1.125 1.125-1.125h5.25c.621 0 1.125.504 1.125 1.125v8.25c0 .621-.504 1.125-1.125 1.125h-5.25a1.125 1.125 0 0 1-1.125-1.125v-8.25ZM3.75 16.125c0-.621.504-1.125 1.125-1.125h5.25c.621 0 1.125.504 1.125 1.125v2.25c0 .621-.504 1.125-1.125 1.125h-5.25a1.125 1.125 0 0 1-1.125-1.125v-2.25Z"
|
||||
></path>
|
||||
</svg>
|
||||
|
||||
<div class="grow">
|
||||
<p class="font-medium text-neutral-800 dark:text-neutral-200">
|
||||
Discover Integrations
|
||||
</p>
|
||||
<p
|
||||
class="text-sm text-neutral-500 group-hover:text-neutral-800 dark:text-neutral-400 dark:group-hover:text-neutral-200"
|
||||
>
|
||||
Supercharge Your Workflow. Seamless integrations with all your
|
||||
favorite tools
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a
|
||||
class="group flex gap-x-5 rounded-lg p-4 hover:bg-neutral-100 dark:text-neutral-200 dark:hover:bg-neutral-500/10"
|
||||
href="#"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="1.5"
|
||||
stroke="currentColor"
|
||||
class="mt-1 size-5 flex-shrink-0"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="M15.59 14.37a6 6 0 0 1-5.84 7.38v-4.8m5.84-2.58a14.98 14.98 0 0 0 6.16-12.12A14.98 14.98 0 0 0 9.631 8.41m5.96 5.96a14.926 14.926 0 0 1-5.841 2.58m-.119-8.54a6 6 0 0 0-7.381 5.84h4.8m2.581-5.84a14.927 14.927 0 0 0-2.58 5.84m2.699 2.7c-.103.021-.207.041-.311.06a15.09 15.09 0 0 1-2.448-2.448 14.9 14.9 0 0 1 .06-.312m-2.24 2.39a4.493 4.493 0 0 0-1.757 4.306 4.493 4.493 0 0 0 4.306-1.758M16.5 9a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z"
|
||||
></path>
|
||||
</svg>
|
||||
|
||||
<div class="grow">
|
||||
<p class="font-medium text-neutral-800 dark:text-neutral-200">
|
||||
Expert Services
|
||||
</p>
|
||||
<p
|
||||
class="text-sm text-neutral-500 group-hover:text-neutral-800 dark:text-neutral-400 dark:group-hover:text-neutral-200"
|
||||
>
|
||||
Go beyond tools with ScrewFast's expert services
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="mx-1 flex flex-col md:mx-0">
|
||||
<a
|
||||
class="group flex gap-x-5 rounded-lg p-4 hover:bg-neutral-100 dark:text-neutral-200 dark:hover:bg-neutral-500/10"
|
||||
href="#"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="1.5"
|
||||
stroke="currentColor"
|
||||
class="mt-1 size-5 flex-shrink-0"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="M11.42 15.17 17.25 21A2.652 2.652 0 0 0 21 17.25l-5.877-5.877M11.42 15.17l2.496-3.03c.317-.384.74-.626 1.208-.766M11.42 15.17l-4.655 5.653a2.548 2.548 0 1 1-3.586-3.586l6.837-5.63m5.108-.233c.55-.164 1.163-.188 1.743-.14a4.5 4.5 0 0 0 4.486-6.336l-3.276 3.277a3.004 3.004 0 0 1-2.25-2.25l3.276-3.276a4.5 4.5 0 0 0-6.336 4.486c.091 1.076-.071 2.264-.904 2.95l-.102.085m-1.745 1.437L5.909 7.5H4.5L2.25 3.75l1.5-1.5L7.5 4.5v1.409l4.26 4.26m-1.745 1.437 1.745-1.437m6.615 8.206L15.75 15.75M4.867 19.125h.008v.008h-.008v-.008Z"
|
||||
></path>
|
||||
</svg>
|
||||
|
||||
<div class="grow">
|
||||
<p class="font-medium text-neutral-800 dark:text-neutral-200">
|
||||
Cutting-Edge Tools
|
||||
</p>
|
||||
<p
|
||||
class="text-sm text-neutral-500 group-hover:text-neutral-800 dark:text-neutral-400 dark:group-hover:text-neutral-200"
|
||||
>
|
||||
Build Smarter, Faster. Experience next-level efficiency with
|
||||
ScrewFast's cutting-edge construction tools
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a
|
||||
class="group flex gap-x-5 rounded-lg p-4 hover:bg-neutral-100 dark:text-neutral-200 dark:hover:bg-neutral-500/10"
|
||||
href="#"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="1.5"
|
||||
stroke="currentColor"
|
||||
class="mt-1 size-5 flex-shrink-0"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456ZM16.894 20.567 16.5 21.75l-.394-1.183a2.25 2.25 0 0 0-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 0 0 1.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 0 0 1.423 1.423l1.183.394-1.183.394a2.25 2.25 0 0 0-1.423 1.423Z"
|
||||
></path>
|
||||
</svg>
|
||||
|
||||
<div class="grow">
|
||||
<p class="font-medium text-neutral-800 dark:text-neutral-200">
|
||||
Simple Plans
|
||||
</p>
|
||||
<p
|
||||
class="text-sm text-neutral-500 group-hover:text-neutral-800 dark:text-neutral-400 dark:group-hover:text-neutral-200"
|
||||
>
|
||||
Boost your efficiency with ScrewFast's straightforward,
|
||||
value-driven plans
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a
|
||||
class="group flex gap-x-5 rounded-lg p-4 hover:bg-neutral-100 dark:text-neutral-200 dark:hover:bg-neutral-500/10"
|
||||
href="#"
|
||||
>
|
||||
<svg
|
||||
class="mt-1 size-5 flex-shrink-0"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path><circle
|
||||
cx="9"
|
||||
cy="7"
|
||||
r="4"></circle><path d="M22 21v-2a4 4 0 0 0-3-3.87"></path><path
|
||||
d="M16 3.13a4 4 0 0 1 0 7.75"></path></svg
|
||||
>
|
||||
<div class="grow">
|
||||
<p class="font-medium text-neutral-800 dark:text-neutral-200">
|
||||
Community Forum
|
||||
</p>
|
||||
<p
|
||||
class="text-sm text-neutral-500 group-hover:text-neutral-800 dark:text-neutral-400 dark:group-hover:text-neutral-200"
|
||||
>
|
||||
Learn, share, and connect with other ScrewFast users
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="mx-1 flex flex-col pt-4 md:mx-0 md:pt-0">
|
||||
<span
|
||||
class="text-sm font-semibold uppercase text-neutral-800 dark:text-neutral-200"
|
||||
>Success Stories</span
|
||||
>
|
||||
|
||||
<a
|
||||
class="group mt-2 flex items-center gap-x-5 rounded-xl p-3 hover:bg-neutral-100 dark:hover:bg-neutral-500/10"
|
||||
href="#"
|
||||
>
|
||||
<Image
|
||||
src="https://images.unsplash.com/photo-1544005313-94ddf0286df2?q=80&w=1376&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D8&auto=format&fit=facearea&facepad=2&w=320&h=320&q=80"
|
||||
inferSize={true}
|
||||
alt="Image Description"
|
||||
class="size-32 rounded-lg"
|
||||
/>
|
||||
<div class="grow">
|
||||
<p class="text-sm text-neutral-800 dark:text-neutral-400">
|
||||
See how ScrewFast has empowered businesses of all sizes to achieve
|
||||
outstanding results.
|
||||
</p>
|
||||
<p
|
||||
class="mt-3 inline-flex items-center gap-x-1 text-sm font-medium text-orange-400 decoration-2 hover:underline dark:text-orange-300"
|
||||
>
|
||||
Learn more
|
||||
<Icon name="arrowRight" />
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Loading…
Add table
Reference in a new issue