Files
agent_test/template/product/detail.html

709 lines
38 KiB
HTML
Raw Normal View History

2026-03-08 23:40:18 +07:00
{% assign no_image_url = 'no-image.png' | asset_url %}
{% assign _product = page.product_info %}
{% assign _rating_summary = _product.review.summary %}
2026-03-10 15:07:29 +07:00
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui@5/dist/fancybox/fancybox.css" />
<script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@5/dist/fancybox/fancybox.umd.js"></script>
2026-03-08 23:40:18 +07:00
<style>
.font-inter {
font-family: 'Inter', sans-serif;
}
.star-row {
display: grid;
2026-03-10 15:07:29 +07:00
grid-template-columns: 10px 12px 232px 40px;
2026-03-08 23:40:18 +07:00
align-items: center;
column-gap: 9px;
}
.star-bar {
2026-03-10 15:07:29 +07:00
width: 232px;
2026-03-08 23:40:18 +07:00
height: 6px;
border-radius: 9999px;
background: #e6e6e6;
overflow: hidden;
}
2026-03-10 15:07:29 +07:00
.star-bar>span {
2026-03-08 23:40:18 +07:00
display: block;
height: 100%;
background: #0084ff;
}
.product-description img,
.product-description iframe,
.product-description table {
max-width: 100%;
}
.product-description table {
width: 100%;
}
2026-03-10 15:07:29 +07:00
.product-thumbs-swiper .swiper-slide {
opacity: 0.5;
border: 2px solid transparent;
border-radius: 2px;
cursor: pointer;
}
.product-thumbs-swiper .swiper-slide-thumb-active {
opacity: 1;
border-color: #57aeff;
}
2026-03-08 23:40:18 +07:00
</style>
2026-03-10 15:07:29 +07:00
<div class="layout-container flex flex-col gap-3 py-5">
<div class="flex items-center gap-2 text-[13px] text-black">
{% assign _product_paths = _product.productPath[0].path | to_array %}
{% if _product_paths.size > 0 %}
{% for _path_entry in _product_paths %}
{% assign _path = _path_entry.value %}
{% if _path.url != '' %}
<a href="{{ _path.url }}" class="hover:text-[#e4057c]">{{ _path.name | strip }}</a>
{% else %}
<span>{{ _path.name | strip }}</span>
{% endif %}
{% unless forloop.last %}
<svg class="w-2.5 h-2.5 text-[#888]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path>
</svg>
{% endunless %}
{% endfor %}
{% elsif _product.categoryInfo.size > 0 %}
<a href="{{ _product.categoryInfo[0].url }}" class="hover:text-[#e4057c]">{{ _product.categoryInfo[0].name | strip
}}</a>
{% else %}
<span>Chi tiết sản phẩm</span>
{% endif %}
</div>
{% if false %}
2026-03-08 23:40:18 +07:00
<div class="flex items-center gap-2 text-[13px] text-black">
<a href="/" class="hover:text-[#e4057c]">Trang chủ</a>
2026-03-10 15:07:29 +07:00
{% assign _product_paths = _product.productPath[0].path | to_array %}
{% if _product_paths.size > 0 %}
{% for _path_entry in _product_paths %}
{% assign _path = _path_entry.value %}
2026-03-08 23:40:18 +07:00
<img src="{{ 'icon_arrow_next.svg' | asset_url }}" alt="" class="w-[10px] h-[10px]" />
<a href="{{ _path.url }}" class="hover:text-[#e4057c]">{{ _path.name }}</a>
{% endfor %}
{% elsif _product.categoryInfo.size > 0 %}
<img src="{{ 'icon_arrow_next.svg' | asset_url }}" alt="" class="w-[10px] h-[10px]" />
<a href="{{ _product.categoryInfo[0].url }}" class="hover:text-[#e4057c]">{{ _product.categoryInfo[0].name }}</a>
{% endif %}
2026-03-10 15:07:29 +07:00
<img src="{{ 'icon_arrow_next.svg' | asset_url }}" alt="" class="w-[10px] h-[10px]" />
<span class="text-black line-clamp-1">{{ _product.productName }}</span>
2026-03-08 23:40:18 +07:00
</div>
2026-03-10 15:07:29 +07:00
{% endif %}
2026-03-08 23:40:18 +07:00
<div class="flex flex-col gap-2">
<div class="flex items-center gap-3">
<h1 class="text-[20px] font-bold tracking-[-0.4px] text-black leading-none">{{ _product.productName }}</h1>
{% if _product.productType.isNew == 1 %}
<span class="h-5 rounded-[4px] bg-[#fff3f3] text-[#e40000] text-[12px] px-[11px] leading-5">Mẫu mới</span>
{% elsif _product.productType.isHot == 1 %}
<span class="h-5 rounded-[4px] bg-[#fff6ed] text-[#fc7600] text-[12px] px-[11px] leading-5">Bán chạy</span>
{% endif %}
</div>
<div class="flex items-center gap-3 text-[14px] tracking-[-0.28px]">
<span class="text-[#959595]">Đã bán {{ _product.buy_count | default: 0 }}</span>
<span class="text-[#959595] flex items-center gap-1">
<img src="{{ 'icon_rating_star.svg' | asset_url }}" alt="" class="w-[13px] h-[13px]" />
{{ _rating_summary.avgRate | default: 0 }}
</span>
<a href="#product-spec" class="text-[#0084ff] flex items-center gap-1">
2026-03-10 15:07:29 +07:00
<span
class="inline-flex items-center justify-center w-5 h-5 rounded-full border border-[#0084ff] text-[11px]">i</span>
2026-03-08 23:40:18 +07:00
Thông số
</a>
</div>
</div>
<div class="flex items-start gap-3">
2026-03-10 15:07:29 +07:00
<section class="flex-1 min-w-0 flex flex-col gap-3">
2026-03-08 23:40:18 +07:00
<div class="bg-white rounded-[8px] px-3 py-[10px] flex flex-col gap-2">
2026-03-10 15:07:29 +07:00
<!-- Main image swiper -->
<div
class="swiper product-main-swiper w-full max-w-[460px] aspect-square mx-auto rounded-[8px] overflow-hidden bg-white">
<div class="swiper-wrapper">
{% if _product.productImageGallery.size > 0 %}
{% for _image in _product.productImageGallery limit:13 %}
<div class="swiper-slide flex items-center justify-center">
<a data-fancybox="product-gallery"
href="{{ _image.large | default: _image.original | default: _image.small }}"
class="block w-full h-full">
<img src="{{ _image.large | default: _image.original | default: _image.small }}"
alt="{{ _product.productName }}" class="w-full h-full object-contain"
onerror="this.onerror=null;this.src='{{ no_image_url }}'" />
</a>
</div>
{% endfor %}
{% else %}
<div class="swiper-slide flex items-center justify-center">
<a data-fancybox="product-gallery" href="{{ _product.productImage.large }}" class="block w-full h-full">
<img src="{{ _product.productImage.large }}" alt="{{ _product.productName }}"
class="w-full h-full object-contain" onerror="this.onerror=null;this.src='{{ no_image_url }}'" />
</a>
</div>
{% endif %}
</div>
2026-03-08 23:40:18 +07:00
</div>
2026-03-10 15:07:29 +07:00
<!-- Thumbnails swiper -->
<div class="swiper product-thumbs-swiper mt-1">
<div class="swiper-wrapper">
{% if _product.productImageGallery.size > 0 %}
{% for _image in _product.productImageGallery limit:13 %}
<div class="swiper-slide !w-[52px] !h-[52px] rounded-[2px] overflow-hidden">
<img src="{{ _image.small | default: _image.original | default: _image.large }}"
alt="{{ _product.productName }}" class="w-full h-full object-cover"
onerror="this.onerror=null;this.src='{{ no_image_url }}'" />
</div>
{% endfor %}
{% else %}
<div class="swiper-slide !w-[52px] !h-[52px] rounded-[2px] overflow-hidden">
<img src="{{ _product.productImage.small }}" alt="{{ _product.productName }}"
class="w-full h-full object-cover" onerror="this.onerror=null;this.src='{{ no_image_url }}'" />
</div>
{% endif %}
</div>
2026-03-08 23:40:18 +07:00
</div>
</div>
<div class="bg-white rounded-[8px] px-3 py-2 flex flex-col gap-3">
<h2 class="font-inter text-[16px] font-bold tracking-[-0.32px]">MIQ cam kết</h2>
<div class="h-px bg-[#ececec]"></div>
<div class="grid grid-cols-2 gap-x-[40px] gap-y-3 text-[13px] text-black tracking-[-0.26px]">
2026-03-10 15:07:29 +07:00
<p class="flex items-start gap-2">
<img src="https://www.figma.com/api/mcp/asset/1eb5d75b-4d86-4183-afc5-4ea470d2b03a" alt=""
class="w-7 h-7 shrink-0" />
Hư gì đổi nấy 12 tháng tận nhà (miễn phí tháng đầu)
</p>
<p class="flex items-start gap-2">
<img src="https://www.figma.com/api/mcp/asset/67ff0e18-ae1e-4a60-b2f7-7adce5447103" alt=""
class="w-7 h-7 shrink-0" />
{% if _product.warranty != '' %}{{ _product.warranty }}{% else %}Bảo hành chính hãng 2 năm, có người đến tận
nhà{% endif %}
</p>
<p class="flex items-start gap-2">
<img src="https://www.figma.com/api/mcp/asset/67ff0e18-ae1e-4a60-b2f7-7adce5447103" alt=""
class="w-7 h-7 shrink-0" />
{% if _product.price > 0 %}Giá bán minh bạch, cập nhật theo dữ liệu sản phẩm.{% else %}Giá đang được cập
nhật, vui lòng liên hệ để nhận báo giá.{% endif %}
</p>
<p class="flex items-start gap-2">
<img src="https://www.figma.com/api/mcp/asset/ad1d1545-2457-4297-9260-befa7a7ae7c3" alt=""
class="w-7 h-7 shrink-0" />
Nếu dùng cho hoạt động kinh doanh (nhà máy, khách sạn, giặt ủi,...) thì không được bảo hành.
</p>
<p class="flex items-start gap-2">
<img src="https://www.figma.com/api/mcp/asset/8ccb7b02-0447-4725-9436-399b0fdcdea2" alt=""
class="w-7 h-7 shrink-0" />
{% if _product.package_accessory != '' %}{{ _product.package_accessory }}{% else %}Lắp đặt miễn phí lúc giao
hàng{% endif %}
</p>
2026-03-08 23:40:18 +07:00
</div>
</div>
<div class="bg-white rounded-[8px] p-3 flex flex-col gap-3">
<h3 class="text-[16px] font-bold tracking-[-0.32px]">Tham khảo thêm sản phẩm đang xem</h3>
<div class="min-h-[98px] rounded-[8px] border border-[#ebebeb] flex items-center gap-3 px-3 py-[9px]">
2026-03-10 15:07:29 +07:00
<img src="{{ _product.productImage.small }}" alt="{{ _product.productName }}"
class="w-20 h-20 rounded-[2px] object-cover" onerror="this.onerror=null;this.src='{{ no_image_url }}'" />
<div class="flex-1 min-w-0 flex flex-col gap-1">
2026-03-08 23:40:18 +07:00
<p class="text-[14px] font-semibold leading-6 tracking-[-0.28px]">{{ _product.productName }}</p>
<div class="flex items-center gap-2 flex-wrap">
{% if _product.price > 0 %}
2026-03-10 15:07:29 +07:00
<p class="text-[15px] font-bold text-[#cd0000]">{{ _product.price | format_number }}₫</p>
2026-03-08 23:40:18 +07:00
{% else %}
<p class="text-[15px] font-bold text-[#cd0000]">Liên hệ</p>
{% endif %}
{% if _product.marketPrice > 0 %}
2026-03-10 15:07:29 +07:00
<p class="text-[13px] text-[#9d9d9d] line-through">{{ _product.marketPrice | format_number }}₫</p>
2026-03-08 23:40:18 +07:00
{% endif %}
</div>
2026-03-10 15:07:29 +07:00
<p class="text-[13px] leading-6 tracking-[-0.26px]">{% if _product.warranty != '' %}{{ _product.warranty
}}{% else %}Thông tin bảo hành đang cập nhật.{% endif %}</p>
2026-03-08 23:40:18 +07:00
</div>
</div>
</div>
<div class="bg-white rounded-[8px] px-3 py-[15px] flex flex-col gap-2">
<h3 class="text-[16px] font-bold tracking-[-0.32px]">Đặc điểm nổi bật</h3>
{% if _product.productSummary != '' %}
2026-03-10 15:07:29 +07:00
<div class="text-[13px] leading-[22px] tracking-[-0.26px] whitespace-pre-line">{{ _product.productSummary }}
</div>
2026-03-08 23:40:18 +07:00
{% else %}
<ul class="list-disc ps-5 text-[13px] leading-[22px] tracking-[-0.26px]">
<li>Sản phẩm đang được cập nhật phần mô tả nổi bật.</li>
<li>Vui lòng xem thêm thông tin chi tiết ở phần mô tả bên dưới.</li>
</ul>
{% endif %}
</div>
<div id="product-spec" class="bg-white rounded-[8px] px-3 py-[22px] flex flex-col gap-4">
<div class="flex items-center justify-center gap-3">
2026-03-10 15:07:29 +07:00
<button id="tab-btn-spec"
class="w-[205px] h-10 rounded-[4px] border border-[#0084ff] bg-[#edf7ff] text-[16px] text-[#0084ff] font-bold tracking-[-0.32px]">Thông
số kỹ thuật</button>
<button id="tab-btn-info"
class="w-[205px] h-10 rounded-[4px] border border-[#e6e6e6] bg-white text-[16px] text-black font-bold tracking-[-0.32px]">Thông
tin sản phẩm</button>
2026-03-08 23:40:18 +07:00
</div>
2026-03-10 15:07:29 +07:00
<!-- Tab: Thông số kỹ thuật -->
<div id="tab-content-spec">
<div class="h-10 rounded-[4px] bg-[#f2f4f7] flex items-center justify-between px-2">
<p class="font-inter font-semibold text-[13px] tracking-[-0.26px]">Tổng quan</p>
<img src="{{ 'icon_arrow_next.svg' | asset_url }}" alt="" class="w-5 h-5 rotate-90" />
</div>
<div class="grid grid-cols-[196px_1fr] gap-x-[88px] gap-y-[24px] px-3 mt-4 text-[13px] tracking-[-0.26px]">
<p>Tên sản phẩm</p>
<p>{{ _product.productName }}</p>
<p>Danh mục</p>
<p>{% if _product.categoryInfo.size > 0 %}{{ _product.categoryInfo[0].name }}{% else %}Đang cập nhật{% endif
%}</p>
<p>Thương hiệu</p>
<p>{% if _product.brand.name != '' %}{{ _product.brand.name }}{% else %}Đang cập nhật{% endif %}</p>
<p>Model</p>
<p>{% if _product.productModel != '' %}{{ _product.productModel }}{% else %}Đang cập nhật{% endif %}</p>
<p>SKU</p>
<p>{% if _product.productSKU != '' %}{{ _product.productSKU }}{% else %}Đang cập nhật{% endif %}</p>
<p>Bảo hành</p>
<p>{% if _product.warranty != '' %}{{ _product.warranty }}{% else %}Đang cập nhật{% endif %}</p>
<p>Đơn vị tính</p>
<p>{{ _product.priceUnit }}</p>
<p>Cập nhật</p>
<p>{{ _product.lastUpdate }}</p>
</div>
2026-03-08 23:40:18 +07:00
</div>
2026-03-10 15:07:29 +07:00
<!-- Tab: Thông tin sản phẩm -->
<div id="tab-content-info" class="hidden">
<div class="h-10 rounded-[4px] bg-[#f2f4f7] flex items-center justify-between px-2">
<p class="font-inter font-semibold text-[13px] tracking-[-0.26px]">Mô tả sản phẩm</p>
<img src="{{ 'icon_arrow_next.svg' | asset_url }}" alt="" class="w-5 h-5 rotate-90" />
</div>
<div class="relative mt-4 px-3">
<div id="product-description-content"
class="product-description text-[13px] leading-[22px] tracking-[-0.26px] text-black overflow-hidden max-h-[420px] transition-all duration-300 ease-in-out">
{% if _product.productDescription != '' %}
{{ _product.productDescription }}
{% else %}
<p>Thông tin mô tả sản phẩm đang được cập nhật.</p>
{% endif %}
</div>
<div id="product-description-fade"
class="pointer-events-none absolute left-3 right-3 bottom-0 h-20 bg-gradient-to-t from-white to-transparent">
</div>
</div>
<div class="mt-3 flex justify-center">
<button id="btn-toggle-description" type="button"
class="hidden h-10 rounded-[4px] border border-[#8c8c8c] px-6 text-[#6b6b6b] text-[13px] font-medium">
Xem thêm
</button>
</div>
2026-03-08 23:40:18 +07:00
</div>
</div>
2026-03-10 15:07:29 +07:00
{% comment %}
2026-03-08 23:40:18 +07:00
<div class="bg-white rounded-[12px] px-3 py-4 flex flex-col gap-5">
<h3 class="text-[18px] font-semibold tracking-[-0.36px]">Đánh giá {{ _product.productName }}</h3>
<div class="flex items-center justify-center gap-5">
<div class="w-[112px] flex flex-col items-center gap-1">
2026-03-10 15:07:29 +07:00
<p class="text-[32px] font-extrabold font-inter tracking-[-0.64px]">{{ _rating_summary.avgRate | default: 0
}}<span class="text-[13px] text-[#9d9d9d] font-normal">/5</span></p>
<p class="text-[13px] font-inter">{{ page.product_info.comment.summary.total | default: 0 }} khách hài lòng
</p>
2026-03-08 23:40:18 +07:00
<p class="text-[13px] text-[#9d9d9d] font-inter">{{ _rating_summary.total | default: 0 }} đánh giá</p>
</div>
<div class="w-[315px] flex flex-col gap-2 text-[13px]">
2026-03-10 15:07:29 +07:00
<div class="star-row"><span>5</span><span></span>
<div class="star-bar"><span style="width:0%"></span></div><span>0%</span>
</div>
<div class="star-row"><span>4</span><span></span>
<div class="star-bar"><span style="width:0%"></span></div><span>0%</span>
</div>
<div class="star-row"><span>3</span><span></span>
<div class="star-bar"><span style="width:0%"></span></div><span>0%</span>
</div>
<div class="star-row"><span>2</span><span></span>
<div class="star-bar"><span style="width:0%"></span></div><span>0%</span>
</div>
<div class="star-row"><span>1</span><span></span>
<div class="star-bar"><span style="width:0%"></span></div><span>0%</span>
</div>
2026-03-08 23:40:18 +07:00
</div>
2026-03-10 15:07:29 +07:00
<img src="{{ _product.productImage.small }}" alt="{{ _product.productName }}"
class="w-20 h-20 rounded-[4px] object-cover" onerror="this.onerror=null;this.src='{{ no_image_url }}'" />
<img src="{{ _product.productImage.small }}" alt="{{ _product.productName }}"
class="w-20 h-20 rounded-[4px] object-cover" onerror="this.onerror=null;this.src='{{ no_image_url }}'" />
<img src="{{ _product.productImage.small }}" alt="{{ _product.productName }}"
class="w-20 h-20 rounded-[4px] object-cover" onerror="this.onerror=null;this.src='{{ no_image_url }}'" />
2026-03-08 23:40:18 +07:00
</div>
2026-03-10 15:07:29 +07:00
<div class="w-full grid gap-2 text-[13px] tracking-[-0.26px]">
2026-03-08 23:40:18 +07:00
<div class="flex items-center gap-1">
<p class="font-bold">MIQ</p>
<span class="text-[#35b327]"></span>
<p class="text-[#35b327] font-medium">Thông tin đánh giá đang được cập nhật</p>
</div>
<p>★★★★★ <span class="mx-2 text-[#9d9d9d]">|</span> Chưa có nội dung đánh giá hiển thị</p>
2026-03-10 15:07:29 +07:00
<p>Khách hàng có thể để lại đánh giá sau khi mua hàng để hoàn thiện phần trải nghiệm thực tế cho sản phẩm này.
</p>
2026-03-08 23:40:18 +07:00
</div>
2026-03-10 15:07:29 +07:00
<div class="h-px bg-[#e8e8e8] w-full"></div>
2026-03-08 23:40:18 +07:00
2026-03-10 15:07:29 +07:00
<div class="w-full grid gap-2 text-[13px] tracking-[-0.26px]">
2026-03-08 23:40:18 +07:00
<div class="flex items-center gap-1">
<p class="font-bold">MIQ</p>
<span class="text-[#35b327]"></span>
<p class="text-[#35b327] font-medium">Chưa có bình luận nổi bật</p>
</div>
<p>Đội ngũ tư vấn sẽ cập nhật phản hồi khách hàng khi có dữ liệu mới.</p>
</div>
<div class="flex items-center justify-center gap-2">
2026-03-10 15:07:29 +07:00
<button
class="w-[231px] h-10 rounded-[4px] border border-[#8c8c8c] text-[#6b6b6b] text-[13px] font-medium">Xem {{
_rating_summary.total | default: 0 }} đánh giá</button>
<button class="w-[231px] h-10 rounded-[4px] bg-[#0084ff] text-white text-[13px] font-medium">Viết đánh
giá</button>
</div>
</div>
{% endcomment %}
{% assign _rating_total = _rating_summary.total | default: 0 | plus: 0 %}
{% assign _rating_avg = _rating_summary.avgRate | default: 0 %}
{% assign _happy_total = page.product_info.comment.summary.total | default: _rating_total %}
<div class="bg-white rounded-[12px] px-3 py-4 flex flex-col gap-5">
<h3 class="text-[18px] font-semibold tracking-[-0.36px]">Đánh giá {{ _product.productName }}</h3>
<div class="flex items-center justify-center gap-5">
<div class="w-[112px] flex flex-col items-center gap-1 shrink-0">
<div class="flex items-center gap-[2px]">
<span class="text-[#f9a000] text-[18px] leading-none"></span>
<p class="text-[32px] leading-none font-extrabold font-inter tracking-[-0.64px]">{{ _rating_avg }}</p>
<p class="text-[13px] text-[#9d9d9d] font-inter">/5</p>
</div>
<p class="text-[13px] font-inter text-black">{{ _happy_total }} khách hài lòng</p>
<p class="text-[13px] text-[#9d9d9d] font-inter">{{ _rating_total }} đánh giá</p>
</div>
<div class="w-[315px] flex flex-col gap-2 text-[13px] shrink-0">
{% assign _rating_keys = '5,4,3,2,1' | split: ',' %}
{% for _star in _rating_keys %}
{% assign _rate_point = _star | plus: 0 %}
{% assign _rate_count = 0 %}
{% if _rating_summary.list_rate.size > 0 %}
{% for _rate in _rating_summary.list_rate %}
{% assign _rate_key = _rate.rate | default: _rate.star | default: _rate.key | default: _rate.id | plus: 0 %}
{% if _rate_key == _rate_point %}
{% assign _rate_count = _rate.total | default: _rate.count | default: _rate.value | plus: 0 %}
{% endif %}
{% endfor %}
{% endif %}
{% assign _rate_percent = 0 %}
{% if _rating_total > 0 %}
{% assign _rate_percent = _rate_count | times: 100.0 | divided_by: _rating_total %}
{% endif %}
<div class="star-row">
<span class="text-[13px] font-medium">{{ _star }}</span>
<span class="text-[#f9a000] text-[12px] leading-none"></span>
<div class="star-bar">
<span
style="width:{% if _rate_percent > 100 %}100{% elsif _rate_percent < 0 %}0{% else %}{{ _rate_percent }}{% endif %}%"></span>
</div>
<span class="text-[13px] font-medium tracking-[-0.26px]">
{% if _rate_percent > 0 %}{{ _rate_percent | round: 1 }}%{% else %}0{% endif %}
</span>
</div>
{% endfor %}
</div>
<img src="{{ _product.productImage.small }}" alt="{{ _product.productName }}"
class="w-20 h-20 rounded-[4px] object-cover shrink-0"
onerror="this.onerror=null;this.src='{{ no_image_url }}'" />
<img src="{{ _product.productImage.small }}" alt="{{ _product.productName }}"
class="w-20 h-20 rounded-[4px] object-cover shrink-0"
onerror="this.onerror=null;this.src='{{ no_image_url }}'" />
<img src="{{ _product.productImage.small }}" alt="{{ _product.productName }}"
class="w-20 h-20 rounded-[4px] object-cover shrink-0"
onerror="this.onerror=null;this.src='{{ no_image_url }}'" />
</div>
<div class="w-full grid gap-2 text-[13px] tracking-[-0.26px]">
<div class="flex items-center gap-[6px]">
<p class="font-bold">Nguyễn Lê Tuấn</p>
<svg class="w-[15px] h-[15px] shrink-0" viewBox="0 0 24 24" fill="none" aria-hidden="true">
<circle cx="12" cy="12" r="9.5" stroke="#35b327" />
<path d="M8.5 12.5L11 15L15.5 9.8" stroke="#35b327" stroke-width="1.5" stroke-linecap="round"
stroke-linejoin="round" />
</svg>
<p class="text-[#35b327] font-medium">Đã mua tại MIQ</p>
</div>
<div class="flex items-center gap-2">
<span class="text-[#f9a000] text-[12px] leading-none tracking-[1px]">★★★★★</span>
<span class="w-px h-[14px] bg-[#d5d5d5]"></span>
<span class="text-[#df0000] text-[12px] leading-none"></span>
<p class="font-medium">Sẽ giới thiệu cho bạn bè, người thân</p>
</div>
<p class="font-medium">Tủ lạnh có ngăn chứa rất rộng rãi để được nhiều thực phẩm, có app theo dõi rất tiện
lợi,
mua được ngay dịp sale giá rẻ, có dịp mình sẽ ủng hộ nữa</p>
</div>
<div class="h-px bg-[#e8e8e8] w-full"></div>
<div class="w-full grid gap-2 text-[13px] tracking-[-0.26px]">
<div class="flex items-center gap-[6px]">
<p class="font-bold">Nguyễn Lê Tuấn</p>
<svg class="w-[15px] h-[15px] shrink-0" viewBox="0 0 24 24" fill="none" aria-hidden="true">
<circle cx="12" cy="12" r="9.5" stroke="#35b327" />
<path d="M8.5 12.5L11 15L15.5 9.8" stroke="#35b327" stroke-width="1.5" stroke-linecap="round"
stroke-linejoin="round" />
</svg>
<p class="text-[#35b327] font-medium">Đã mua tại MIQ</p>
</div>
<div class="flex items-center gap-2">
<span class="text-[#f9a000] text-[12px] leading-none tracking-[1px]">★★★★★</span>
<span class="w-px h-[14px] bg-[#d5d5d5]"></span>
<span class="text-[#df0000] text-[12px] leading-none"></span>
<p class="font-medium">Sẽ giới thiệu cho bạn bè, người thân</p>
</div>
<p class="font-medium">Tủ lạnh có ngăn chứa rất rộng rãi để được nhiều thực phẩm, có app theo dõi rất tiện
lợi,
mua được ngay dịp sale giá rẻ, có dịp mình sẽ ủng hộ nữa</p>
</div>
<div class="flex items-center justify-center gap-2">
<button
class="w-[231px] h-10 rounded-[4px] border border-[#8c8c8c] text-[#6b6b6b] text-[13px] font-medium">Xem {{
_rating_total }} đánh giá</button>
<button class="w-[231px] h-10 rounded-[4px] bg-[#0084ff] text-white text-[13px] font-medium">Viết đánh
giá</button>
2026-03-08 23:40:18 +07:00
</div>
</div>
</section>
2026-03-10 15:07:29 +07:00
<aside class="w-[392px] shrink-0 flex flex-col gap-3">
2026-03-08 23:40:18 +07:00
<div class="bg-white rounded-[8px] px-3 py-[14px] flex flex-col gap-[11px]">
2026-03-10 15:07:29 +07:00
<img src="{{ 'category_qc_lg.png' | asset_url }}" alt="" class="w-full h-[144px] rounded-[8px] object-cover" />
<img src="{{ 'category_qc_samsung.png' | asset_url }}" alt=""
class="w-full h-[144px] rounded-[8px] object-cover" />
2026-03-08 23:40:18 +07:00
<div class="flex items-center gap-2 flex-wrap">
{% if _product.categoryInfo.size > 0 %}
{% for _category in _product.categoryInfo limit:3 %}
2026-03-10 15:07:29 +07:00
<a href="{{ _category.url }}"
class="px-3 h-7 rounded-[4px] border {% if forloop.first %}border-[#50aaff] text-[#0084ff]{% else %}border-[#e8e8e8] text-black{% endif %} text-[13px] font-medium inline-flex items-center">{{
_category.name }}</a>
2026-03-08 23:40:18 +07:00
{% endfor %}
{% else %}
2026-03-10 15:07:29 +07:00
<span
class="px-3 h-7 rounded-[4px] border border-[#50aaff] text-[#0084ff] text-[13px] font-medium inline-flex items-center">Sản
phẩm</span>
2026-03-08 23:40:18 +07:00
{% endif %}
</div>
</div>
<div class="rounded-[8px] p-[4px] bg-gradient-to-b from-[#6b1440] via-[#e4057c] to-[#6b1440]">
<div class="bg-white rounded-[6px] p-[11px] flex flex-col gap-3">
<p class="text-[13px] font-semibold tracking-[-0.26px]">Loại dịch vụ lắp đặt</p>
{% if _product.addon.size > 0 %}
2026-03-10 15:07:29 +07:00
<input type="hidden" id="selected-addon-id" value="{{ _product.addon[0].addon_id | default: '' }}">
<div id="install-option-group" class="flex flex-col gap-2">
{% for _addon in _product.addon limit:3 %}
{% assign _addon_old_price = _addon.market_price | default: 0 | plus: 0 %}
{% assign _addon_price = _addon.price | default: 0 | plus: 0 %}
<div
class="js-install-option relative rounded-[8px] border p-[11px] h-[65px] transition-all cursor-pointer {% if forloop.first %}border-[#e4057c] bg-[#fff6f6] is-selected{% else %}border-[#e2e2e2] bg-white{% endif %}"
data-addon-id="{{ _addon.addon_id }}" role="radio" tabindex="0"
aria-checked="{% if forloop.first %}true{% else %}false{% endif %}">
<div class="flex items-center justify-between gap-3">
<div class="flex items-center gap-2">
<span
class="js-install-radio w-3 h-3 rounded-full border {% if forloop.first %}border-[#a0045c]{% else %}border-[#a9a9a9]{% endif %} inline-flex items-center justify-center">
<span
class="js-install-radio-dot w-[5px] h-[5px] rounded-full bg-[#a0045c] {% unless forloop.first %}hidden{% endunless %}"></span>
</span>
<p class="text-[13px] font-semibold tracking-[-0.26px]">{{ _addon.title }}</p>
</div>
<div class="flex items-center gap-2">
{% if _addon_old_price > _addon_price and _addon_old_price > 0 %}
<p class="text-[11px] text-[#868686] line-through">{{ _addon_old_price | format_number }}đ</p>
{% endif %}
{% if _addon_price > 0 %}
<p class="text-[14px] font-bold text-[#e40000]">{{ _addon_price | format_number }}đ</p>
{% else %}
<p class="text-[14px] font-bold text-[#e40000]">Miễn phí</p>
{% endif %}
</div>
</div>
<div class="flex items-center gap-1 ps-5 mt-1">
{% if forloop.first %}
<svg class="w-3 h-3 shrink-0 text-[#35b327]" viewBox="0 0 24 24" fill="none" aria-hidden="true">
<circle cx="12" cy="12" r="9.5" stroke="currentColor" />
<path d="M8.5 12.5L11 15L15.5 9.8" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"
stroke-linejoin="round" />
</svg>
<p class="text-[12px]">Gói tiêu chuẩn</p>
{% elsif forloop.index == 2 %}
<span class="text-[#ff7300] text-[10px] leading-none font-semibold">VIP</span>
<p class="text-[12px] text-[#ff7300]">Bảo hành 4 năm (2 năm chính hãng, 2 năm MIQ)</p>
{% else %}
<span class="text-[#ff7300] text-[10px] leading-none font-semibold">VIP</span>
<p class="text-[12px] text-[#ff7300]">Tuỳ chọn dịch vụ đi kèm</p>
{% endif %}
</div>
<span
class="js-install-selected-dot absolute left-[17px] bottom-[8px] w-[6px] h-[6px] rounded-full bg-[#90004b] {% unless forloop.first %}hidden{% endunless %}"></span>
</div>
{% endfor %}
</div>
{% comment %}
2026-03-08 23:40:18 +07:00
{% for _addon in _product.addon limit:3 %}
2026-03-10 15:07:29 +07:00
<div
class="rounded-[8px] border {% if forloop.first %}border-[#e4057c] bg-[#fff6f6]{% else %}border-[#e2e2e2]{% endif %} p-[13px] grid grid-cols-2 gap-x-[12px] gap-y-2">
2026-03-08 23:40:18 +07:00
<div class="flex items-center gap-2">
<span class="w-3 h-3 rounded-full border border-[#a9a9a9]"></span>
<p class="text-[13px] font-semibold tracking-[-0.26px]">{{ _addon.title }}</p>
</div>
<div class="text-right">
{% if _addon.price > 0 %}
2026-03-10 15:07:29 +07:00
<p class="text-[14px] font-bold text-[#e40000]">{{ _addon.price | format_number }}đ</p>
2026-03-08 23:40:18 +07:00
{% else %}
<p class="text-[14px] font-bold text-[#35b327]">Miễn phí</p>
{% endif %}
</div>
<div class="col-span-2 flex items-center gap-1 ps-5">
<span class="text-[#35b327]"></span>
2026-03-10 15:07:29 +07:00
<p class="text-[12px]">{% if forloop.first %}Gói tiêu chuẩn{% else %}Tuỳ chọn dịch vụ đi kèm{% endif %}
</p>
2026-03-08 23:40:18 +07:00
</div>
</div>
{% endfor %}
2026-03-10 15:07:29 +07:00
{% endcomment %}
2026-03-08 23:40:18 +07:00
{% else %}
<div class="rounded-[8px] border border-[#e4057c] bg-[#fff6f6] p-[13px]">
<p class="text-[13px] font-semibold tracking-[-0.26px]">Chưa có gói dịch vụ bổ sung</p>
</div>
{% endif %}
{% if _product.specialOffer.all.size > 0 %}
<div class="rounded-[8px] border border-[#e2e2e2] overflow-hidden">
<div class="h-[43px] bg-[#f9fafb] px-2 flex items-center">
<p class="text-[14px] font-semibold tracking-[-0.28px]">Khuyến mãi</p>
</div>
<div class="p-[10px] flex flex-col gap-3">
{% for _offer in _product.specialOffer.all limit:3 %}
<p class="text-[13px] tracking-[-0.26px] flex items-start gap-2">
2026-03-10 15:07:29 +07:00
<span
class="inline-flex items-center justify-center w-4 h-4 rounded-full bg-[#a0045c] text-white text-[13px] shrink-0">{{
forloop.index }}</span>
2026-03-08 23:40:18 +07:00
<span class="line-clamp-3">{{ _offer.title }}</span>
</p>
{% endfor %}
</div>
</div>
{% endif %}
{% if _product.specialOffer.gift.size > 0 %}
<div class="h-px bg-[#ececec]"></div>
<p class="text-[13px] font-medium tracking-[-0.26px]">Hình ảnh quà khuyến mãi</p>
<div class="flex items-center gap-2 flex-wrap">
{% for _gift in _product.specialOffer.gift limit:2 %}
{% if _gift.thumbnail != '' and _gift.thumbnail contains '/' %}
{% assign _gift_image = _gift.thumbnail %}
{% else %}
{% assign _gift_image = no_image_url %}
{% endif %}
<div class="w-[128px] h-12 rounded-[4px] border border-[#ebebeb] p-[6px] flex items-center gap-1">
2026-03-10 15:07:29 +07:00
<img src="{{ _gift_image }}" alt="{{ _gift.title }}" class="w-9 h-9 rounded-[4px] object-cover"
onerror="this.onerror=null;this.src='{{ no_image_url }}'" />
2026-03-08 23:40:18 +07:00
<p class="text-[10px] font-medium leading-[14px] line-clamp-2">{{ _gift.title }}</p>
</div>
{% endfor %}
</div>
{% endif %}
<div class="h-px bg-[#ececec]"></div>
<div class="flex items-center gap-3">
2026-03-10 15:07:29 +07:00
<button id="btn-add-to-cart" type="button" data-product-name="{{ _product.productName }}"
data-product-image="{{ _product.productImage.small | default: _product.productImage.large | default: no_image_url }}"
data-product-price="{% if _product.price > 0 %}{{ _product.price | format_number }}đ{% else %}Liên hệ{% endif %}"
class="w-[166px] h-12 rounded-[4px] border border-[#0084ff] bg-white text-[#0084ff] flex flex-col items-center justify-center gap-1 shrink-0">
<svg class="w-5 h-5" viewBox="0 0 24 24" fill="none" aria-hidden="true">
<path
d="M2.25 3.75H3.73C4.14 3.75 4.48 4.04 4.55 4.44L5.97 12.69C6.09 13.41 6.71 13.94 7.44 13.94H17.53C18.2 13.94 18.79 13.5 18.99 12.86L20.54 7.86C20.78 7.08 20.2 6.28 19.39 6.28H6.11"
stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" />
<path
d="M9.25 20.25C9.94 20.25 10.5 19.69 10.5 19C10.5 18.31 9.94 17.75 9.25 17.75C8.56 17.75 8 18.31 8 19C8 19.69 8.56 20.25 9.25 20.25Z"
stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" />
<path
d="M16.75 20.25C17.44 20.25 18 19.69 18 19C18 18.31 17.44 17.75 16.75 17.75C16.06 17.75 15.5 18.31 15.5 19C15.5 19.69 16.06 20.25 16.75 20.25Z"
stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" />
<path d="M12.25 8.25V11.75" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
stroke-linejoin="round" />
<path d="M10.5 10H14" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"
stroke-linejoin="round" />
</svg>
<span class="block text-[13px] leading-none tracking-[-0.26px]">Thêm vào giỏ</span>
</button>
<button id="btn-buy-now"
class="w-[166px] h-12 rounded-[4px] bg-[#fc7600] text-white text-[13px] font-semibold tracking-[-0.26px] shrink-0">Mua
ngay</button>
2026-03-08 23:40:18 +07:00
</div>
</div>
</div>
<div class="bg-white rounded-[8px] p-3 flex flex-col gap-2">
<p class="text-[14px] font-semibold leading-6 tracking-[-0.28px]">Sản phẩm đã xem</p>
<div class="grid grid-cols-2 gap-3">
2026-03-10 15:07:29 +07:00
<a href="{{ _product.productUrl }}"
class="h-[76px] rounded-[4px] border border-[#d9d9d9] p-2 flex items-center gap-2 no-underline">
<img src="{{ _product.productImage.small }}" alt="{{ _product.productName }}"
class="w-[60px] h-[60px] rounded-[4px] object-cover"
onerror="this.onerror=null;this.src='{{ no_image_url }}'" />
2026-03-08 23:40:18 +07:00
<div class="flex-1 min-w-0">
<p class="text-[11px] leading-4 line-clamp-2 text-black">{{ _product.productName }}</p>
{% if _product.price > 0 %}
2026-03-10 15:07:29 +07:00
<p class="text-[13px] leading-6 font-semibold text-[#d90000]">{{ _product.price | format_number }}đ</p>
2026-03-08 23:40:18 +07:00
{% else %}
<p class="text-[13px] leading-6 font-semibold text-[#d90000]">Liên hệ</p>
{% endif %}
</div>
</a>
2026-03-10 15:07:29 +07:00
<a href="{{ _product.productUrl }}"
class="h-[76px] rounded-[4px] border border-[#d9d9d9] p-2 flex items-center gap-2 no-underline">
<img src="{{ _product.productImage.small }}" alt="{{ _product.productName }}"
class="w-[60px] h-[60px] rounded-[4px] object-cover"
onerror="this.onerror=null;this.src='{{ no_image_url }}'" />
2026-03-08 23:40:18 +07:00
<div class="flex-1 min-w-0">
<p class="text-[11px] leading-4 line-clamp-2 text-black">{{ _product.productName }}</p>
{% if _product.marketPrice > 0 %}
2026-03-10 15:07:29 +07:00
<p class="text-[13px] leading-6 font-semibold text-[#d90000]">{{ _product.marketPrice | format_number }}đ
</p>
2026-03-08 23:40:18 +07:00
{% elsif _product.price > 0 %}
2026-03-10 15:07:29 +07:00
<p class="text-[13px] leading-6 font-semibold text-[#d90000]">{{ _product.price | format_number }}đ</p>
2026-03-08 23:40:18 +07:00
{% else %}
<p class="text-[13px] leading-6 font-semibold text-[#d90000]">Liên hệ</p>
{% endif %}
</div>
</a>
</div>
</div>
</aside>
</div>
2026-03-10 15:07:29 +07:00
</div>
2026-03-08 23:40:18 +07:00
2026-03-10 15:07:29 +07:00
<!-- Toast thêm vào giỏ -->
<div id="cart-toast" class="fixed bottom-6 right-6 z-50 hidden transition-all">
<div
class="bg-[#35b327] text-white px-5 py-3 rounded-[8px] shadow-lg flex items-center gap-3 text-[14px] font-medium">
<svg class="w-5 h-5 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
</svg>
Đã thêm sản phẩm vào giỏ hàng!
2026-03-08 23:40:18 +07:00
</div>
</div>