summaryrefslogtreecommitdiff
path: root/examples/server-islands/src
diff options
context:
space:
mode:
Diffstat (limited to 'examples/server-islands/src')
-rw-r--r--examples/server-islands/src/base.css32
-rw-r--r--examples/server-islands/src/cart.ts20
-rw-r--r--examples/server-islands/src/components/AddToCart.tsx27
-rw-r--r--examples/server-islands/src/components/CartCount.tsx14
-rw-r--r--examples/server-islands/src/components/PersonalBar.astro36
-rw-r--r--examples/server-islands/src/pages/index.astro678
6 files changed, 0 insertions, 807 deletions
diff --git a/examples/server-islands/src/base.css b/examples/server-islands/src/base.css
deleted file mode 100644
index d0ae7cae4..000000000
--- a/examples/server-islands/src/base.css
+++ /dev/null
@@ -1,32 +0,0 @@
-@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap');
-
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
-
-@layer base {
- body {
- @apply font-poppins;
- }
- h1,
- h2,
- h3,
- h4,
- h5,
- h6 {
- @apply font-roboto;
- }
-}
-
-@layer components {
- .size-selector input:checked + label {
- @apply bg-primary text-white;
- }
- .color-selector input:checked + label {
- @apply ring-2 ring-primary;
- }
-
- .input-box {
- @apply block w-full border border-gray-300 px-4 py-3 text-gray-600 text-sm rounded placeholder-gray-400 focus:border-primary focus:ring-0;
- }
-}
diff --git a/examples/server-islands/src/cart.ts b/examples/server-islands/src/cart.ts
deleted file mode 100644
index 355074a38..000000000
--- a/examples/server-islands/src/cart.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-
-const channel = new MessageChannel();
-
-function onNewCartItem(cb: (m: any) => void) {
- let onMessage = (ev: MessageEvent) => {
- cb(ev.data);
- };
- channel.port2.addEventListener('message', onMessage);
- channel.port2.start();
- return () => channel.port2.removeEventListener('message', onMessage);
-}
-
-function addToCart(item: any) {
- channel.port1.postMessage(item);
-}
-
-export {
- onNewCartItem,
- addToCart
-}
diff --git a/examples/server-islands/src/components/AddToCart.tsx b/examples/server-islands/src/components/AddToCart.tsx
deleted file mode 100644
index 5fcfc4eaa..000000000
--- a/examples/server-islands/src/components/AddToCart.tsx
+++ /dev/null
@@ -1,27 +0,0 @@
-import { addToCart } from '../cart';
-
-export default function({ small }) {
- function onClick(ev: Event) {
- ev.preventDefault();
- let item = { name: 'Sofa' };
- addToCart(item);
-
- }
-
- if(small) {
- return (
- <a href="#"
- onClick={onClick}
- className="block w-full py-1 text-center text-white bg-primary border border-primary rounded-b hover:bg-transparent hover:text-primary transition">Add
- to cart</a>
- )
- }
-
- return (
- <a href="#"
- onClick={onClick}
- className="bg-primary border border-primary text-white px-8 py-2 font-medium rounded uppercase flex items-center gap-2 hover:bg-transparent hover:text-primary transition">
- <i className="fa-solid fa-bag-shopping"></i> Add to cart
- </a>
- )
-}
diff --git a/examples/server-islands/src/components/CartCount.tsx b/examples/server-islands/src/components/CartCount.tsx
deleted file mode 100644
index 5c3d3e392..000000000
--- a/examples/server-islands/src/components/CartCount.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import { useEffect, useState } from 'react';
-import { onNewCartItem } from '../cart';
-
-export default function({ count: initialCount }) {
- const [count, setCount] = useState(initialCount);
- useEffect(() => {
- return onNewCartItem(() => setCount(count + 1));
- }, [count]);
-
- return (
- <div className="absolute -right-3 -top-1 w-5 h-5 rounded-full flex items-center justify-center bg-primary text-white text-xs">
-{count}</div>
- );
-}
diff --git a/examples/server-islands/src/components/PersonalBar.astro b/examples/server-islands/src/components/PersonalBar.astro
deleted file mode 100644
index afff16d60..000000000
--- a/examples/server-islands/src/components/PersonalBar.astro
+++ /dev/null
@@ -1,36 +0,0 @@
----
-import CartCount from './CartCount';
-
-const { placeholder } = Astro.props;
-let wishlist = 0;
-let cart = 0;
-
-if (!placeholder) {
- await new Promise((resolve) => setTimeout(resolve, 3000));
-}
----
-
-<a href="#" class="text-center text-gray-700 hover:text-primary transition relative">
- <div class="text-2xl">
- <i class="fa-regular fa-heart"></i>
- </div>
- <div class="text-xs leading-3">Wishlist</div>
- <div
- class="absolute right-0 -top-1 w-5 h-5 rounded-full flex items-center justify-center bg-primary text-white text-xs"
- >
- {wishlist}
- </div>
-</a>
-<a href="#" class="text-center text-gray-700 hover:text-primary transition relative">
- <div class="text-2xl">
- <i class="fa-solid fa-bag-shopping"></i>
- </div>
- <div class="text-xs leading-3">Cart</div>
- <CartCount client:load count={cart} />
-</a>
-<a href="#" class="text-center text-gray-700 hover:text-primary transition relative">
- <div class="text-2xl">
- <i class="fa-regular fa-user"></i>
- </div>
- <div class="text-xs leading-3">Account</div>
-</a>
diff --git a/examples/server-islands/src/pages/index.astro b/examples/server-islands/src/pages/index.astro
deleted file mode 100644
index b12fb0c5e..000000000
--- a/examples/server-islands/src/pages/index.astro
+++ /dev/null
@@ -1,678 +0,0 @@
----
-import '../base.css';
-import AddToCart from '../components/AddToCart';
-import PersonalBar from '../components/PersonalBar.astro';
-import '@fortawesome/fontawesome-free/css/all.min.css';
----
-
-<!doctype html>
-<html lang="en">
- <head>
- <meta charset="UTF-8" />
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <title>Product - Ecommerce Tailwind</title>
-
- <link rel="shortcut icon" href="../assets/images/favicon/favicon.ico" type="image/x-icon" />
-
- <link rel="preconnect" href="https://fonts.googleapis.com" />
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
- <link
- href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&family=Roboto:wght@400;500;700&display=swap"
- rel="stylesheet"
- />
- </head>
-
- <body>
- <!-- header -->
- <header class="py-4 shadow-sm bg-white">
- <div class="container flex items-center justify-between">
- <a href="index.html">
- <img src="../assets/images/logo.svg" alt="Logo" class="w-32" />
- </a>
-
- <div class="w-full max-w-xl relative flex">
- <span class="absolute left-4 top-3 text-lg text-gray-400">
- <i class="fa-solid fa-magnifying-glass"></i>
- </span>
- <input
- type="text"
- name="search"
- id="search"
- class="w-full border border-primary border-r-0 pl-12 py-3 pr-3 rounded-l-md focus:outline-none"
- placeholder="search"
- />
- <button
- class="bg-primary border border-primary text-white px-8 rounded-r-md hover:bg-transparent hover:text-primary transition"
- >Search</button
- >
- </div>
-
- <div class="flex items-center space-x-4">
- <PersonalBar server:defer>
- <PersonalBar placeholder slot="fallback" />
- </PersonalBar>
- </div>
- </div>
- </header>
- <!-- ./header -->
-
- <!-- navbar -->
- <nav class="bg-gray-800">
- <div class="container flex">
- <div class="px-8 py-4 bg-primary flex items-center cursor-pointer relative group">
- <span class="text-white">
- <i class="fa-solid fa-bars"></i>
- </span>
- <span class="capitalize ml-2 text-white">All Categories</span>
-
- <!-- dropdown -->
- <div
- class="absolute w-full left-0 top-full bg-white shadow-md py-3 divide-y divide-gray-300 divide-dashed opacity-0 group-hover:opacity-100 transition duration-300 invisible group-hover:visible"
- >
- <a href="#" class="flex items-center px-6 py-3 hover:bg-gray-100 transition">
- <img
- src="../assets/images/icons/sofa.svg"
- alt="sofa"
- class="w-5 h-5 object-contain"
- />
- <span class="ml-6 text-gray-600 text-sm">Sofa</span>
- </a>
- <a href="#" class="flex items-center px-6 py-3 hover:bg-gray-100 transition">
- <img
- src="../assets/images/icons/terrace.svg"
- alt="terrace"
- class="w-5 h-5 object-contain"
- />
- <span class="ml-6 text-gray-600 text-sm">Terarce</span>
- </a>
- <a href="#" class="flex items-center px-6 py-3 hover:bg-gray-100 transition">
- <img src="../assets/images/icons/bed.svg" alt="bed" class="w-5 h-5 object-contain" />
- <span class="ml-6 text-gray-600 text-sm">Bed</span>
- </a>
- <a href="#" class="flex items-center px-6 py-3 hover:bg-gray-100 transition">
- <img
- src="../assets/images/icons/office.svg"
- alt="office"
- class="w-5 h-5 object-contain"
- />
- <span class="ml-6 text-gray-600 text-sm">office</span>
- </a>
- <a href="#" class="flex items-center px-6 py-3 hover:bg-gray-100 transition">
- <img
- src="../assets/images/icons/outdoor-cafe.svg"
- alt="outdoor"
- class="w-5 h-5 object-contain"
- />
- <span class="ml-6 text-gray-600 text-sm">Outdoor</span>
- </a>
- <a href="#" class="flex items-center px-6 py-3 hover:bg-gray-100 transition">
- <img
- src="../assets/images/icons/bed-2.svg"
- alt="Mattress"
- class="w-5 h-5 object-contain"
- />
- <span class="ml-6 text-gray-600 text-sm">Mattress</span>
- </a>
- </div>
- </div>
-
- <div class="flex items-center justify-between flex-grow pl-12">
- <div class="flex items-center space-x-6 capitalize">
- <a href="../index.html" class="text-gray-200 hover:text-white transition">Home</a>
- <a href="pages/shop.html" class="text-gray-200 hover:text-white transition">Shop</a>
- <a href="#" class="text-gray-200 hover:text-white transition">About us</a>
- <a href="#" class="text-gray-200 hover:text-white transition">Contact us</a>
- </div>
- <a href="#" class="text-gray-200 hover:text-white transition">Login/Register</a>
- </div>
- </div>
- </nav>
- <!-- ./navbar -->
-
- <!-- breadcrumb -->
- <div class="container py-4 flex items-center gap-3">
- <a href="../index.html" class="text-primary text-base">
- <i class="fa-solid fa-house"></i>
- </a>
- <span class="text-sm text-gray-400">
- <i class="fa-solid fa-chevron-right"></i>
- </span>
- <p class="text-gray-600 font-medium">Product</p>
- </div>
- <!-- ./breadcrumb -->
-
- <!-- product-detail -->
- <div class="container grid grid-cols-2 gap-6">
- <div>
- <img src="../assets/images/products/product1.jpg" alt="product" class="w-full" />
- <div class="grid grid-cols-5 gap-4 mt-4">
- <img
- src="../assets/images/products/product2.jpg"
- alt="product2"
- class="w-full cursor-pointer border border-primary"
- />
- <img
- src="../assets/images/products/product3.jpg"
- alt="product2"
- class="w-full cursor-pointer border"
- />
- <img
- src="../assets/images/products/product4.jpg"
- alt="product2"
- class="w-full cursor-pointer border"
- />
- <img
- src="../assets/images/products/product5.jpg"
- alt="product2"
- class="w-full cursor-pointer border"
- />
- <img
- src="../assets/images/products/product6.jpg"
- alt="product2"
- class="w-full cursor-pointer border"
- />
- </div>
- </div>
-
- <div>
- <h2 class="text-3xl font-medium uppercase mb-2">Italian L Shape Sofa</h2>
- <div class="flex items-center mb-4">
- <div class="flex gap-1 text-sm text-yellow-400">
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- </div>
- <div class="text-xs text-gray-500 ml-3">(150 Reviews)</div>
- </div>
- <div class="space-y-2">
- <p class="text-gray-800 font-semibold space-x-2">
- <span>Availability: </span>
- <span class="text-green-600">In Stock</span>
- </p>
- <p class="space-x-2">
- <span class="text-gray-800 font-semibold">Brand: </span>
- <span class="text-gray-600">Apex</span>
- </p>
- <p class="space-x-2">
- <span class="text-gray-800 font-semibold">Category: </span>
- <span class="text-gray-600">Sofa</span>
- </p>
- <p class="space-x-2">
- <span class="text-gray-800 font-semibold">SKU: </span>
- <span class="text-gray-600">BE45VGRT</span>
- </p>
- </div>
- <div class="flex items-baseline mb-1 space-x-2 font-roboto mt-4">
- <p class="text-xl text-primary font-semibold">$45.00</p>
- <p class="text-base text-gray-400 line-through">$55.00</p>
- </div>
-
- <p class="mt-4 text-gray-600">
- Lorem ipsum dolor sit amet consectetur adipisicing elit. Eos eius eum reprehenderit dolore
- vel mollitia optio consequatur hic asperiores inventore suscipit, velit consequuntur,
- voluptate doloremque iure necessitatibus adipisci magnam porro.
- </p>
-
- <div class="pt-4">
- <h3 class="text-sm text-gray-800 uppercase mb-1">Size</h3>
- <div class="flex items-center gap-2">
- <div class="size-selector">
- <input type="radio" name="size" id="size-xs" class="hidden" />
- <label
- for="size-xs"
- class="text-xs border border-gray-200 rounded-sm h-6 w-6 flex items-center justify-center cursor-pointer shadow-sm text-gray-600"
- >XS</label
- >
- </div>
- <div class="size-selector">
- <input type="radio" name="size" id="size-sm" class="hidden" />
- <label
- for="size-sm"
- class="text-xs border border-gray-200 rounded-sm h-6 w-6 flex items-center justify-center cursor-pointer shadow-sm text-gray-600"
- >S</label
- >
- </div>
- <div class="size-selector">
- <input type="radio" name="size" id="size-m" class="hidden" />
- <label
- for="size-m"
- class="text-xs border border-gray-200 rounded-sm h-6 w-6 flex items-center justify-center cursor-pointer shadow-sm text-gray-600"
- >M</label
- >
- </div>
- <div class="size-selector">
- <input type="radio" name="size" id="size-l" class="hidden" />
- <label
- for="size-l"
- class="text-xs border border-gray-200 rounded-sm h-6 w-6 flex items-center justify-center cursor-pointer shadow-sm text-gray-600"
- >L</label
- >
- </div>
- <div class="size-selector">
- <input type="radio" name="size" id="size-xl" class="hidden" />
- <label
- for="size-xl"
- class="text-xs border border-gray-200 rounded-sm h-6 w-6 flex items-center justify-center cursor-pointer shadow-sm text-gray-600"
- >XL</label
- >
- </div>
- </div>
- </div>
-
- <div class="pt-4">
- <h3 class="text-xl text-gray-800 mb-3 uppercase font-medium">Color</h3>
- <div class="flex items-center gap-2">
- <div class="color-selector">
- <input type="radio" name="color" id="red" class="hidden" />
- <label
- for="red"
- class="border border-gray-200 rounded-sm h-6 w-6 cursor-pointer shadow-sm block"
- style="background-color: #fc3d57;"></label>
- </div>
- <div class="color-selector">
- <input type="radio" name="color" id="black" class="hidden" />
- <label
- for="black"
- class="border border-gray-200 rounded-sm h-6 w-6 cursor-pointer shadow-sm block"
- style="background-color: #000;"></label>
- </div>
- <div class="color-selector">
- <input type="radio" name="color" id="white" class="hidden" />
- <label
- for="white"
- class="border border-gray-200 rounded-sm h-6 w-6 cursor-pointer shadow-sm block"
- style="background-color: #fff;"></label>
- </div>
- </div>
- </div>
-
- <div class="mt-4">
- <h3 class="text-sm text-gray-800 uppercase mb-1">Quantity</h3>
- <div class="flex border border-gray-300 text-gray-600 divide-x divide-gray-300 w-max">
- <div
- class="h-8 w-8 text-xl flex items-center justify-center cursor-pointer select-none"
- >
- -
- </div>
- <div class="h-8 w-8 text-base flex items-center justify-center">4</div>
- <div
- class="h-8 w-8 text-xl flex items-center justify-center cursor-pointer select-none"
- >
- +
- </div>
- </div>
- </div>
-
- <div class="mt-6 flex gap-3 border-b border-gray-200 pb-5 pt-5">
- <AddToCart client:load />
- <a
- href="#"
- class="border border-gray-300 text-gray-600 px-8 py-2 font-medium rounded uppercase flex items-center gap-2 hover:text-primary transition"
- >
- <i class="fa-solid fa-heart"></i> Wishlist
- </a>
- </div>
-
- <div class="flex gap-3 mt-4">
- <a
- href="#"
- class="text-gray-400 hover:text-gray-500 h-8 w-8 rounded-full border border-gray-300 flex items-center justify-center"
- >
- <i class="fa-brands fa-facebook-f"></i>
- </a>
- <a
- href="#"
- class="text-gray-400 hover:text-gray-500 h-8 w-8 rounded-full border border-gray-300 flex items-center justify-center"
- >
- <i class="fa-brands fa-twitter"></i>
- </a>
- <a
- href="#"
- class="text-gray-400 hover:text-gray-500 h-8 w-8 rounded-full border border-gray-300 flex items-center justify-center"
- >
- <i class="fa-brands fa-instagram"></i>
- </a>
- </div>
- </div>
- </div>
- <!-- ./product-detail -->
-
- <!-- description -->
- <div class="container pb-16">
- <h3 class="border-b border-gray-200 font-roboto text-gray-800 pb-3 font-medium">
- Product details
- </h3>
- <div class="w-3/5 pt-6">
- <div class="text-gray-600">
- <p>
- Lorem, ipsum dolor sit amet consectetur adipisicing elit. Tenetur necessitatibus
- deleniti natus dolore cum maiores suscipit optio itaque voluptatibus veritatis tempora
- iste facilis non aut sapiente dolor quisquam, ex ab.
- </p>
- <p>
- Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum, quae accusantium
- voluptatem blanditiis sapiente voluptatum. Autem ab, dolorum assumenda earum veniam eius
- illo fugiat possimus illum dolor totam, ducimus excepturi.
- </p>
- <p>
- Lorem ipsum dolor sit amet consectetur adipisicing elit. Error quia modi ut expedita!
- Iure molestiae labore cumque nobis quasi fuga, quibusdam rem? Temporibus consectetur
- corrupti rerum veritatis numquam labore amet.
- </p>
- </div>
-
- <table class="table-auto border-collapse w-full text-left text-gray-600 text-sm mt-6">
- <tr>
- <th class="py-2 px-4 border border-gray-300 w-40 font-medium">Color</th>
- <th class="py-2 px-4 border border-gray-300">Blank, Brown, Red</th>
- </tr>
- <tr>
- <th class="py-2 px-4 border border-gray-300 w-40 font-medium">Material</th>
- <th class="py-2 px-4 border border-gray-300">Latex</th>
- </tr>
- <tr>
- <th class="py-2 px-4 border border-gray-300 w-40 font-medium">Weight</th>
- <th class="py-2 px-4 border border-gray-300">55kg</th>
- </tr>
- </table>
- </div>
- </div>
- <!-- ./description -->
-
- <!-- related product -->
- <div class="container pb-16">
- <h2 class="text-2xl font-medium text-gray-800 uppercase mb-6">Related products</h2>
- <div class="grid grid-cols-4 gap-6">
- <div class="bg-white shadow rounded overflow-hidden group">
- <div class="relative">
- <img src="../assets/images/products/product1.jpg" alt="product 1" class="w-full" />
- <div
- class="absolute inset-0 bg-black bg-opacity-40 flex items-center
- justify-center gap-2 opacity-0 group-hover:opacity-100 transition"
- >
- <a
- href="#"
- class="text-white text-lg w-9 h-8 rounded-full bg-primary flex items-center justify-center hover:bg-gray-800 transition"
- title="view product"
- >
- <i class="fa-solid fa-magnifying-glass"></i>
- </a>
- <a
- href="#"
- class="text-white text-lg w-9 h-8 rounded-full bg-primary flex items-center justify-center hover:bg-gray-800 transition"
- title="add to wishlist"
- >
- <i class="fa-solid fa-heart"></i>
- </a>
- </div>
- </div>
- <div class="pt-4 pb-3 px-4">
- <a href="#">
- <h4
- class="uppercase font-medium text-xl mb-2 text-gray-800 hover:text-primary transition"
- >
- Guyer Chair
- </h4>
- </a>
- <div class="flex items-baseline mb-1 space-x-2">
- <p class="text-xl text-primary font-semibold">$45.00</p>
- <p class="text-sm text-gray-400 line-through">$55.90</p>
- </div>
- <div class="flex items-center">
- <div class="flex gap-1 text-sm text-yellow-400">
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- </div>
- <div class="text-xs text-gray-500 ml-3">(150)</div>
- </div>
- </div>
- <AddToCart small client:load />
- </div>
- <div class="bg-white shadow rounded overflow-hidden group">
- <div class="relative">
- <img src="../assets/images/products/product4.jpg" alt="product 1" class="w-full" />
- <div
- class="absolute inset-0 bg-black bg-opacity-40 flex items-center
- justify-center gap-2 opacity-0 group-hover:opacity-100 transition"
- >
- <a
- href="#"
- class="text-white text-lg w-9 h-8 rounded-full bg-primary flex items-center justify-center hover:bg-gray-800 transition"
- title="view product"
- >
- <i class="fa-solid fa-magnifying-glass"></i>
- </a>
- <a
- href="#"
- class="text-white text-lg w-9 h-8 rounded-full bg-primary flex items-center justify-center hover:bg-gray-800 transition"
- title="add to wishlist"
- >
- <i class="fa-solid fa-heart"></i>
- </a>
- </div>
- </div>
- <div class="pt-4 pb-3 px-4">
- <a href="#">
- <h4
- class="uppercase font-medium text-xl mb-2 text-gray-800 hover:text-primary transition"
- >
- Bed King Size
- </h4>
- </a>
- <div class="flex items-baseline mb-1 space-x-2">
- <p class="text-xl text-primary font-semibold">$45.00</p>
- <p class="text-sm text-gray-400 line-through">$55.90</p>
- </div>
- <div class="flex items-center">
- <div class="flex gap-1 text-sm text-yellow-400">
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- </div>
- <div class="text-xs text-gray-500 ml-3">(150)</div>
- </div>
- </div>
- <AddToCart small client:load />
- </div>
- <div class="bg-white shadow rounded overflow-hidden group">
- <div class="relative">
- <img src="../assets/images/products/product2.jpg" alt="product 1" class="w-full" />
- <div
- class="absolute inset-0 bg-black bg-opacity-40 flex items-center
- justify-center gap-2 opacity-0 group-hover:opacity-100 transition"
- >
- <a
- href="#"
- class="text-white text-lg w-9 h-8 rounded-full bg-primary flex items-center justify-center hover:bg-gray-800 transition"
- title="view product"
- >
- <i class="fa-solid fa-magnifying-glass"></i>
- </a>
- <a
- href="#"
- class="text-white text-lg w-9 h-8 rounded-full bg-primary flex items-center justify-center hover:bg-gray-800 transition"
- title="add to wishlist"
- >
- <i class="fa-solid fa-heart"></i>
- </a>
- </div>
- </div>
- <div class="pt-4 pb-3 px-4">
- <a href="#">
- <h4
- class="uppercase font-medium text-xl mb-2 text-gray-800 hover:text-primary transition"
- >
- Couple Sofa
- </h4>
- </a>
- <div class="flex items-baseline mb-1 space-x-2">
- <p class="text-xl text-primary font-semibold">$45.00</p>
- <p class="text-sm text-gray-400 line-through">$55.90</p>
- </div>
- <div class="flex items-center">
- <div class="flex gap-1 text-sm text-yellow-400">
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- </div>
- <div class="text-xs text-gray-500 ml-3">(150)</div>
- </div>
- </div>
- <AddToCart small client:load />
- </div>
- <div class="bg-white shadow rounded overflow-hidden group">
- <div class="relative">
- <img src="../assets/images/products/product3.jpg" alt="product 1" class="w-full" />
- <div
- class="absolute inset-0 bg-black bg-opacity-40 flex items-center
- justify-center gap-2 opacity-0 group-hover:opacity-100 transition"
- >
- <a
- href="#"
- class="text-white text-lg w-9 h-8 rounded-full bg-primary flex items-center justify-center hover:bg-gray-800 transition"
- title="view product"
- >
- <i class="fa-solid fa-magnifying-glass"></i>
- </a>
- <a
- href="#"
- class="text-white text-lg w-9 h-8 rounded-full bg-primary flex items-center justify-center hover:bg-gray-800 transition"
- title="add to wishlist"
- >
- <i class="fa-solid fa-heart"></i>
- </a>
- </div>
- </div>
- <div class="pt-4 pb-3 px-4">
- <a href="#">
- <h4
- class="uppercase font-medium text-xl mb-2 text-gray-800 hover:text-primary transition"
- >
- Mattrass X
- </h4>
- </a>
- <div class="flex items-baseline mb-1 space-x-2">
- <p class="text-xl text-primary font-semibold">$45.00</p>
- <p class="text-sm text-gray-400 line-through">$55.90</p>
- </div>
- <div class="flex items-center">
- <div class="flex gap-1 text-sm text-yellow-400">
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- <span><i class="fa-solid fa-star"></i></span>
- </div>
- <div class="text-xs text-gray-500 ml-3">(150)</div>
- </div>
- </div>
- <AddToCart small client:load />
- </div>
- </div>
- </div>
- <!-- ./related product -->
-
- <!-- footer -->
- <footer class="bg-white pt-16 pb-12 border-t border-gray-100">
- <div class="container grid grid-cols-3">
- <div class="col-span-1 space-y-8 mr-2">
- <img src="../assets/images/logo.svg" alt="logo" class="w-30" />
- <div class="mr-2">
- <p class="text-gray-500">
- Lorem ipsum dolor sit amet consectetur adipisicing elit. Quia, hic?
- </p>
- </div>
- <div class="flex space-x-6">
- <a href="#" class="text-gray-400 hover:text-gray-500"
- ><i class="fa-brands fa-facebook-square"></i></a
- >
- <a href="#" class="text-gray-400 hover:text-gray-500"
- ><i class="fa-brands fa-instagram-square"></i></a
- >
- <a href="#" class="text-gray-400 hover:text-gray-500"
- ><i class="fa-brands fa-twitter-square"></i></a
- >
- <a href="#" class="text-gray-400 hover:text-gray-500">
- <i class="fa-brands fa-github-square"></i>
- </a>
- </div>
- </div>
-
- <div class="col-span-2 grid grid-cols-2 gap-8">
- <div class="grid grid-cols-2 gap-8">
- <div>
- <h3 class="text-sm font-semibold text-gray-400 uppercase tracking-wider">
- Solutions
- </h3>
- <div class="mt-4 space-y-4">
- <a href="#" class="text-base text-gray-500 hover:text-gray-900 block">Marketing</a>
- <a href="#" class="text-base text-gray-500 hover:text-gray-900 block">Analitycs</a>
- <a href="#" class="text-base text-gray-500 hover:text-gray-900 block">Commerce</a>
- <a href="#" class="text-base text-gray-500 hover:text-gray-900 block">Insights</a>
- </div>
- </div>
-
- <div>
- <h3 class="text-sm font-semibold text-gray-400 uppercase tracking-wider">Support</h3>
- <div class="mt-4 space-y-4">
- <a href="#" class="text-base text-gray-500 hover:text-gray-900 block">Pricing</a>
- <a href="#" class="text-base text-gray-500 hover:text-gray-900 block"
- >Documentation</a
- >
- <a href="#" class="text-base text-gray-500 hover:text-gray-900 block">Guides</a>
- <a href="#" class="text-base text-gray-500 hover:text-gray-900 block">API Status</a>
- </div>
- </div>
- </div>
- <div class="grid grid-cols-2 gap-8">
- <div>
- <h3 class="text-sm font-semibold text-gray-400 uppercase tracking-wider">
- Solutions
- </h3>
- <div class="mt-4 space-y-4">
- <a href="#" class="text-base text-gray-500 hover:text-gray-900 block">Marketing</a>
- <a href="#" class="text-base text-gray-500 hover:text-gray-900 block">Analitycs</a>
- <a href="#" class="text-base text-gray-500 hover:text-gray-900 block">Commerce</a>
- <a href="#" class="text-base text-gray-500 hover:text-gray-900 block">Insights</a>
- </div>
- </div>
-
- <div>
- <h3 class="text-sm font-semibold text-gray-400 uppercase tracking-wider">Support</h3>
- <div class="mt-4 space-y-4">
- <a href="#" class="text-base text-gray-500 hover:text-gray-900 block">Pricing</a>
- <a href="#" class="text-base text-gray-500 hover:text-gray-900 block"
- >Documentation</a
- >
- <a href="#" class="text-base text-gray-500 hover:text-gray-900 block">Guides</a>
- <a href="#" class="text-base text-gray-500 hover:text-gray-900 block">API Status</a>
- </div>
- </div>
- </div>
- </div>
- </div>
- </footer>
- <!-- ./footer -->
-
- <!-- copyright -->
- <div class="bg-gray-800 py-4">
- <div class="container flex items-center justify-between">
- <p class="text-white">&copy; TailCommerce - All Right Reserved</p>
- <div>
- <img src="../assets/images/methods.png" alt="methods" class="h-5" />
- </div>
- </div>
- </div>
- <!-- ./copyright -->
- </body>
-</html>