happihourdrink.com
Open in
urlscan Pro
2620:127:f00f:5::
Public Scan
Submitted URL: http://happihourdrink.com/
Effective URL: https://happihourdrink.com/
Submission: On November 06 via api from US — Scanned from CA
Effective URL: https://happihourdrink.com/
Submission: On November 06 via api from US — Scanned from CA
Form analysis
19 forms found in the DOMPOST /cart
<form @scroll="$refs?.header?.classList?.toggle('shadow', $el.scrollTop)" data-cart-drawer-checkout-form="" action="/cart" method="post" class="max-h-full w-full overflow-y-auto overflow-x-hidden scrollbar-none min-h-full flex flex-col"
style="padding-top: 0px;">
<style>
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_sticky_header_HfUCTX"] {
;
padding-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
}
@media screen and (min-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_sticky_header_HfUCTX"] {
;
padding-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
}
}
@container (max-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_sticky_header_HfUCTX"] {
;
padding-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
}
}
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_sticky_header_HfUCTX"]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<div data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_sticky_header_HfUCTX" x-show="_cart.showConditionally(`always`) || $editor?.select_block_id === `layout_sticky_header_HfUCTX`" x-ref="header" x-effect="() => {
const show = _cart.showConditionally(`always`)
if (open) {
$nextTick(() => {
$el.parentElement.style.paddingTop = (show ? $el.clientHeight : 0) + 'px'; $el.parentElement.scrollTop = '0'
})
}
if ($cart.state.items?.filter(item=> item.quantity)?.length === 0) {
$el.parentElement.style.paddingTop = (show ? $el.clientHeight : 0) + 'px'; $el.parentElement.scrollTop = '0'
}
}" class="absolute top-0 z-20 inset-x-0 flex flex-wrap color_scheme_1 border-b border-b-theme-border">
<ig-shipping-progress-container></ig-shipping-progress-container>
<div class="w-full @container progress-bar" x-show="_cart.showConditionally(`always`) || $editor?.select_block_id === `progress_bar_Kr33cp`"
x-init="()=>{ const node = document.querySelector('[data-progress-bar]')?.cloneNode(true); if (!node) return; node?.removeAttribute('data-progress-bar'); $el.appendChild(node)}">
<section x-data="{ settings: utils.JSONParse($el.getAttribute('data-settings')), current: 0, targets: utils.JSONParse($el.getAttribute('data-targets')), percentages: [], currentIndex: 0 }" x-effect="() => {
current = $cart.state?.[settings.incentive_type] ?? 0;
percentages = targets.map((target, i, arr)=> [Math.max(0, Math.min(1, (current - (arr[i - 1] ?? 0)) / (target - (arr[i - 1] ?? 0)))) * 100, i, target])?.sort((a,b)=> a[2] - b[2]);
currentIndex = percentages.find(([percent])=> percent > 0 && percent < 100)?.[1] ?? percentages.find(([percent,i,target]) => percent === 0)?.[1] ?? percentages.findLast(([percent,i,target]) => percent === 100)?.[1]
}"
data-settings="{"incentive_type":"total_price","success_bg_color":"#ffd100","success_border_color":"#ffd100","base_bg_color":"#ffffff","base_border_color":"#ffffff","bar_height_border_width_radius":"8px \/ 4px | 1px | 100px","section_height":"65px \/ 61px","container_spacing":"px-container-xs","responsive_visibility_cart":"cart-only","color_scheme":{"error":"json not allowed for this object"}}"
data-targets="[10000]"
class="@max-md:[&.cart-only]:flex relative flex h-[--height] flex-col gap-dynamic items-center justify-center overflow-hidden md:h-[--height-md] @max-md:px-[--layout-container-gutter] scheme-f2533934-76e0-4e86-b684-a221de7f1053 cart-only px-container-xs"
style="--height-md: 65px;--height: 61px;
--bar-height-md: 8px;--bar-height: 4px;
--border-md: 1px;--border: 1px;
--radius-md: 100px;--radius: 100px;
--gap-md: ;--gap: ;
--success-bg-color: #ffd100;--success-border-color: #ffd100;
--base-bg-color: #ffffff;--base-border-color: #ffffff;">
<footer class="flex items-center justify-center">
<div x-data="{ index: +`0` }" class="flex" data-target="10000">
<div x-show="index === (targets.length - 1) && percentages[percentages.length - 1][0] === 100" style="display: none;">
<div class="_input-richtext richtext-md">
<h6><strong>You've unlocked Free Shipping</strong></h6>
</div>
</div>
<div x-show="index === currentIndex && percentages[percentages.length - 1][0] !== 100" x-html="$el.getAttribute('data-content')?.replace('[difference]',
settings.incentive_type === 'total_price'
? utils.formatMoney(targets[currentIndex] - current)
: `${targets[currentIndex] - current}`
)" data-content="
<div class="_input-richtext richtext-md"><h6>Only [difference] more for free shipping!</h6></div>
">
<div class="_input-richtext richtext-md">
<h6>Only $100.00 more for free shipping!</h6>
</div>
</div>
</div>
</footer>
<main class="flex w-full items-center gap-2">
<div x-data="{ percent: percentages.find(([percent, i, target])=> i === +`0`)[0], order: percentages.findIndex(([percent, i, target])=> i === +`0`) }" x-effect="()=> {
order = percentages.findIndex(([percent, i, target])=> i === +`0`)
percent = percentages[order][0];
}" class="flex w-full rounded-[--radius] bg-[--base-bg-color] p-[--border] transition-all duration-150 ease-linear @md:p-[--border] @md:rounded-[--radius-md]"
:style="`background: linear-gradient(90deg, var(--success-border-color), var(--success-border-color) ${percent}%, var(--base-border-color) ${percent}%, var(--base-border-color)); order: ${order};`" data-target="10000"
style="background: linear-gradient(90deg, var(--success-border-color), var(--success-border-color) 0%, var(--base-border-color) 0%, var(--base-border-color)); order: 0;">
<div class="relative h-[--bar-height] flex-1 overflow-hidden rounded-[--radius] bg-[--base-bg-color] @md:h-[--bar-height-md] @md:rounded-[--radius-md]">
<div class="relative h-full bg-[--success-bg-color] transition-all duration-150 ease-linear" :style="`width: ${percent}%`" style="width: 0%"></div>
</div>
</div>
</main>
</section>
</div>
<style>
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--cart_navigation_eAqJHb"] {
;
padding-top: 12px;
padding-bottom: 12px;
padding-left: 20px;
padding-right: 20px;
}
@media screen and (min-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--cart_navigation_eAqJHb"] {
;
padding-top: 12px;
padding-bottom: 12px;
padding-left: 20px;
padding-right: 20px;
}
}
@container (max-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--cart_navigation_eAqJHb"] {
;
padding-top: 12px;
padding-bottom: 12px;
padding-left: 20px;
padding-right: 20px;
}
}
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--cart_navigation_eAqJHb"]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<div data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--cart_navigation_eAqJHb" class="flex justify-between gap-4 items-center w-full"
x-show="_cart.showConditionally(`always`) || $editor?.select_block_id === `cart_navigation_eAqJHb`">
<h2 data-content="
<strong>Your Cart ([quantity])</strong>" class="text-16" x-html="$el.getAttribute('data-content').replace('[quantity]',$cart.state.item_count)">
<strong>Your Cart (0)</strong>
</h2>
<button type="button" @click="$modal.setId('')" class="cart-drawer-close">
<svg data-icon-handle="x-mark" class="bg-current shrink-0 inline-flex items-center justify-center align-middle" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-x-mark--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="x-mark"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }"
style="mask: var(--icon-x-mark); -webkit-mask: var(--icon-x-mark); aspect-ratio: var(--icon-x-mark-aspect-ratio, 1); height: 20px; color:currentColor;" role=""></svg>
</button>
</div>
</div>
<style>
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_4BErnP"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
padding-top: 40px;
padding-bottom: 24px;
padding-left: 24px;
padding-right: 24px;
--grid-cols: 1;
grid-template-columns: repeat(var(--grid-cols, 1), minmax(0, 1fr));
justify-content: center;
place-items: center;
text-align: center;
align-items: start;
align-content: start;
gap: 8px;
}
@media screen and (min-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_4BErnP"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
padding-top: 40px;
padding-bottom: 32px;
padding-left: 24px;
padding-right: 24px;
--grid-cols: 1;
justify-content: center;
place-items: center;
text-align: center;
align-items: start;
align-content: start;
gap: 8px;
}
}
@container (max-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_4BErnP"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
padding-top: 40px;
padding-bottom: 24px;
padding-left: 24px;
padding-right: 24px;
--grid-cols: 1;
grid-template-columns: repeat(var(--grid-cols, 1), minmax(0, 1fr));
justify-content: center;
place-items: center;
text-align: center;
align-items: start;
align-content: start;
gap: 8px;
}
}
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_4BErnP"]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<div data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_4BErnP" class="grid" x-show="_cart.showConditionally(`cart_empty`) || $editor?.select_block_id === `layout_grid_4BErnP`" data-style-content-grid="">
<style>
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_7TXehL"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
@media screen and (min-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_7TXehL"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
}
@container (max-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_7TXehL"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
}
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_7TXehL"]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<div data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_7TXehL" style="color: " x-show="_cart.showConditionally(`cart_empty`) || $editor?.select_block_id === `dynamic_richtext_7TXehL`" data-content="
<div class="_input-richtext text-32/17"><p>Your Cart is Empty</p></div>
" x-html="_cart.renderDynamicTextWithFormattedPrice($el.getAttribute('data-content'))">
<div class="_input-richtext text-32/17">
<p>Your Cart is Empty</p>
</div>
</div>
</div>
<style>
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_4J9hCQ"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
padding-top: 0;
padding-bottom: 0;
padding-left: 24px;
padding-right: 24px;
--grid-cols: 1;
grid-template-columns: repeat(var(--grid-cols, 1), minmax(0, 1fr));
justify-content: start;
place-items: start;
text-align: left;
align-items: start;
align-content: start;
gap: 18px;
}
@media screen and (min-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_4J9hCQ"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
padding-top: 0;
padding-bottom: 0;
padding-left: 24px;
padding-right: 24px;
--grid-cols: 1;
justify-content: start;
place-items: start;
text-align: left;
align-items: start;
align-content: start;
gap: 18px;
}
}
@container (max-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_4J9hCQ"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
padding-top: 0;
padding-bottom: 0;
padding-left: 24px;
padding-right: 24px;
--grid-cols: 1;
grid-template-columns: repeat(var(--grid-cols, 1), minmax(0, 1fr));
justify-content: start;
place-items: start;
text-align: left;
align-items: start;
align-content: start;
gap: 18px;
}
}
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_4J9hCQ"]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<div data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_4J9hCQ" class="grid" x-show="_cart.showConditionally(`cart_empty`) || $editor?.select_block_id === `layout_grid_4J9hCQ`" data-style-content-grid="">
<style>
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--collection_cards_qNKyyR"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: unset;
order: unset;
text-align: inherit;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
@media screen and (min-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--collection_cards_qNKyyR"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: unset;
order: unset;
text-align: inherit;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
}
@container (max-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--collection_cards_qNKyyR"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: unset;
order: unset;
text-align: inherit;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
}
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--collection_cards_qNKyyR"]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<style>
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--collection_cards_qNKyyR"]) [data-style-collection-cards] {
;
gap: 16px;
--grid-cols: 1;
grid-template-columns: unset;
grid-auto-flow: column dense;
grid-auto-columns: calc((100% - (16px * (var(--grid-cols) - 1))) / var(--grid-cols));
grid-template-rows: repeat(3, auto);
justify-content: start;
place-items: start;
text-align: left;
align-items: start;
align-content: start;
}
@media screen and (min-width: 768px) {
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--collection_cards_qNKyyR"]) [data-style-collection-cards] {
;
gap: 16px;
--grid-cols: 1;
grid-template-columns: unset;
grid-auto-flow: column dense;
grid-auto-columns: calc((100% - (16px * (var(--grid-cols) - 1))) / var(--grid-cols));
grid-template-rows: repeat(3, auto);
justify-content: start;
place-items: start;
text-align: left;
align-items: start;
align-content: start;
}
}
@container (max-width: 768px) {
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--collection_cards_qNKyyR"]) [data-style-collection-cards] {
;
gap: 16px;
--grid-cols: 1;
grid-template-columns: unset;
grid-auto-flow: column dense;
grid-auto-columns: calc((100% - (16px * (var(--grid-cols) - 1))) / var(--grid-cols));
grid-template-rows: repeat(3, auto);
justify-content: start;
place-items: start;
text-align: left;
align-items: start;
align-content: start;
}
}
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--collection_cards_qNKyyR"]) [data-style-collection-cards]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<style>
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--collection_cards_qNKyyR"]) [data-style-scrollbar] {
;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
@media screen and (min-width: 768px) {
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--collection_cards_qNKyyR"]) [data-style-scrollbar] {
;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
}
@container (max-width: 768px) {
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--collection_cards_qNKyyR"]) [data-style-scrollbar] {
;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
}
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--collection_cards_qNKyyR"]) [data-style-scrollbar]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<style>
@media screen and (max-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--collection_cards_qNKyyR"] [data-style-collection-cards]> :where(*):nth-of-type(1n+1) {
scroll-snap-align: start;
}
}
@media screen and (min-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--collection_cards_qNKyyR"] [data-style-collection-cards]> :where(*):nth-of-type(1n+1) {
scroll-snap-align: start;
}
}
</style>
<div class="flex flex-col" data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--collection_cards_qNKyyR" data-grid-slider="" x-data="{ ..._sections.initContentSlider($refs.container, undefined,`false` === 'true') }"
style="--slider-height: 0px;">
<div class="relative grid overflow-x-auto scrollbar-none overflow-y-hidden snap-x " x-ref="container" @resize.window="content_slider.handleResize" x-init="$nextTick(() => content_slider.handleResize())" @scroll="content_slider.handleScroll"
@scrollend="content_slider.handleInfiniteScroll" data-style-collection-cards="">
<div class=" shrink-0 max-w-full w-full h-full">
<section class="card-loading collection-card--collection-card-cart-drawer" data-collection-handle="bundles" data-collection-id="314241351857" x-data="{}"
x-init="$nextTick(() => _sections.hydrateCollectionCard($el, 'collection-card-cart-drawer', $el.getAttribute('data-collection-handle'), $el.getAttribute('data-collection-id'), ['h-full']))"></section>
<script type="application/json" data-collection-data="bundles">
{
"default_sort_by": "manual",
"description": "",
"featured_image": {
"alt": null,
"id": 29102049886385,
"position": 1,
"preview_image": {
"aspect_ratio": 1.0,
"height": 1126,
"width": 1126,
"src": "\/\/happihourdrink.com\/cdn\/shop\/files\/HappitoMeetYou_r1_29805.png?v=1728062324"
},
"aspect_ratio": 1.0,
"height": 1126,
"media_type": "image",
"src": "\/\/happihourdrink.com\/cdn\/shop\/files\/HappitoMeetYou_r1_29805.png?v=1728062324",
"width": 1126
},
"handle": "bundles",
"id": "314241351857",
"image": {
"alt": null,
"id": 29102049886385,
"position": 1,
"preview_image": {
"aspect_ratio": 1.0,
"height": 1126,
"width": 1126,
"src": "\/\/happihourdrink.com\/cdn\/shop\/files\/HappitoMeetYou_r1_29805.png?v=1728062324"
},
"aspect_ratio": 1.0,
"height": 1126,
"media_type": "image",
"src": "\/\/happihourdrink.com\/cdn\/shop\/files\/HappitoMeetYou_r1_29805.png?v=1728062324",
"width": 1126
},
"published_at": "2024-07-10T03:43:25-0400",
"template_suffix": "bundles",
"title": "Bundles",
"tags": ["Bundles", "Shopify Product"],
"products_count": 4,
"products": "happi-to-meet-youhappi-birthday-variety-packhappi-best-sellers-variety-packhappi-best-seller-bundle-copy",
"url": "/collections/bundles",
"metafields": {
"smart": {}
}
}
</script>
</div>
<div class=" shrink-0 max-w-full w-full h-full">
<section class="card-loading collection-card--collection-card-cart-drawer" data-collection-handle="flavors" data-collection-id="314241384625" x-data="{}"
x-init="$nextTick(() => _sections.hydrateCollectionCard($el, 'collection-card-cart-drawer', $el.getAttribute('data-collection-handle'), $el.getAttribute('data-collection-id'), ['h-full']))"></section>
<script type="application/json" data-collection-data="flavors">
{
"default_sort_by": "manual",
"description": "",
"featured_image": {
"alt": null,
"id": 29109527183537,
"position": 1,
"preview_image": {
"aspect_ratio": 1.0,
"height": 950,
"width": 950,
"src": "\/\/happihourdrink.com\/cdn\/shop\/files\/Glowup-PDP.png?v=1726157036"
},
"aspect_ratio": 1.0,
"height": 950,
"media_type": "image",
"src": "\/\/happihourdrink.com\/cdn\/shop\/files\/Glowup-PDP.png?v=1726157036",
"width": 950
},
"handle": "flavors",
"id": "314241384625",
"image": {
"alt": null,
"id": 29109527183537,
"position": 1,
"preview_image": {
"aspect_ratio": 1.0,
"height": 950,
"width": 950,
"src": "\/\/happihourdrink.com\/cdn\/shop\/files\/Glowup-PDP.png?v=1726157036"
},
"aspect_ratio": 1.0,
"height": 950,
"media_type": "image",
"src": "\/\/happihourdrink.com\/cdn\/shop\/files\/Glowup-PDP.png?v=1726157036",
"width": 950
},
"published_at": "2024-07-10T03:43:47-0400",
"template_suffix": "flavors",
"title": "Flavors",
"tags": ["Bundles", "For Any Time", "For Calm", "For Mood Boost", "For Relaxing", "For Sleep", "Shopify Product"],
"products_count": 11,
"products": "glow-in-blood-orange-ginger-12ozglow-in-blood-orange-gingerdancenightcap-turkish-apple-tearaspberry-honeysuckle-10mgraspberry-honeysucklelime-wild-mintlemon-elderflowerhappi-variety-packhappi-sampler-packglow-thc-free",
"url": "/collections/flavors",
"metafields": {
"smart": {}
}
}
</script>
</div>
<div class=" shrink-0 max-w-full w-full h-full">
<section class="card-loading collection-card--collection-card-cart-drawer" data-collection-handle="gummies" data-collection-id="314215399601" x-data="{}"
x-init="$nextTick(() => _sections.hydrateCollectionCard($el, 'collection-card-cart-drawer', $el.getAttribute('data-collection-handle'), $el.getAttribute('data-collection-id'), ['h-full']))"></section>
<script type="application/json" data-collection-data="gummies">
{
"default_sort_by": "manual",
"description": "",
"featured_image": {
"alt": null,
"id": 29111943889073,
"position": 1,
"preview_image": {
"aspect_ratio": 1.0,
"height": 720,
"width": 720,
"src": "\/\/happihourdrink.com\/cdn\/shop\/files\/Raspberry-Wana-PDP2.png?v=1726175096"
},
"aspect_ratio": 1.0,
"height": 720,
"media_type": "image",
"src": "\/\/happihourdrink.com\/cdn\/shop\/files\/Raspberry-Wana-PDP2.png?v=1726175096",
"width": 720
},
"handle": "gummies",
"id": "314215399601",
"image": {
"alt": null,
"id": 29111943889073,
"position": 1,
"preview_image": {
"aspect_ratio": 1.0,
"height": 720,
"width": 720,
"src": "\/\/happihourdrink.com\/cdn\/shop\/files\/Raspberry-Wana-PDP2.png?v=1726175096"
},
"aspect_ratio": 1.0,
"height": 720,
"media_type": "image",
"src": "\/\/happihourdrink.com\/cdn\/shop\/files\/Raspberry-Wana-PDP2.png?v=1726175096",
"width": 720
},
"published_at": "2024-07-09T09:17:49-0400",
"template_suffix": "gummies",
"title": "Gummies",
"tags": ["Bundles", "Shopify Product"],
"products_count": 7,
"products": "inspire-raspberry-limeaderelax-blueberry-lemonadebalance-passionfruit-pineappledaytime-bundlenighttime-bundleberry-lovers-bundlethe-boost-bundle",
"url": "/collections/gummies",
"metafields": {
"smart": {}
}
}
</script>
</div>
</div>
<div x-data="{ ..._scrollbar.init($refs.scrollBar, $refs.scrollThumb, $refs.container, 200) }" data-scrollbar="" class="scrollbar-no-buttons" x-effect="() => { $el.classList.toggle('!hidden', (Math.round(scrollbar.width * 10) / 10) === 1) }"
data-style-scrollbar="">
<div class="flex-1 scrollbar-scrollbar" role="scrollbar">
<div class="-my-2 flex w-full cursor-pointer items-center py-2 scrollbar" @click="handleScrollBarClick($event)" x-ref="scrollBar">
<div class="flex w-full items-center rounded-full scrollbar-track">
<button type="button" x-ref="scrollThumb" @click.stop="" @pointerdown.prevent.stop="handleScrollThumbPointerDown" @keydown.prevent.stop.left="handlePrevClick" @keydown.prevent.stop.right="handleNextClick"
:disabled="($data?.content_slider?.state?.infinite && $data?.content_slider?.state?.block_scroll_events)" aria-label="Scroll thumb" :style="`left: ${scrollbar.left * 100}%; width: ${scrollbar.width * 100}%;`"
class="relative h-full min-w-10 cursor-grab rounded-full scrollbar-thumb" style="left: NaN%; width: NaN%;">
<span class="absolute inset-0 -my-2 w-full"></span>
</button>
</div>
</div>
</div>
<div class="flex items-center justify-between scrollbar-controls" data-style-scrollbar-buttons-layout="">
<button type="button" class="relative flex items-center justify-center rounded-full transition-all scrollbar-button group opacity-30 pointer-events-none"
:class="(scrollbar.currentPage === 1 && +`200` && !$data?.content_slider?.state?.infinite) || ($data?.content_slider?.state?.infinite && $data?.content_slider?.state?.block_scroll_events) ? 'opacity-30 pointer-events-none' : ''"
:disabled="(scrollbar.currentPage === 1 && !!+`200` && !$data?.content_slider?.state?.infinite) || ($data?.content_slider?.state?.infinite && $data?.content_slider?.state?.block_scroll_events)"
aria-label="Scroll left" @click="handlePrevClick($event, $data.content_slider)" disabled="disabled">
<svg class="mr-[calc(var(--icon-size)/3)] rotate-180 size-[--icon-size] stroke-2 animated-icon" fill="none" viewBox="0 0 10 10" aria-hidden="true" stroke="currentColor">
<path class="opacity-0 transition group-hover:opacity-100" d="M0 5h7"></path>
<path class="transition group-hover:translate-x-[calc(var(--icon-size)/4)]" d="M1 1l4 4-4 4"></path>
</svg>
<svg class="absolute left-1/2 top-1/2 size-[--icon-size-md] -translate-x-1/2 -translate-y-1/2 bg-current simple-icon"
style="mask: var(--scroll-button-prev); -webkit-mask: var(--scroll-button-prev); aspect-ratio: var(--scroll-button-prev-aspect-ratio, 1);">
</svg>
</button>
<div class="mx-auto select-none text-center scrollbar-counter">
<span
x-html="$data?.content_slider?.state?.infinite ? `${scrollbar.currentPage > scrollbar.pages / 2 ? scrollbar.currentPage - scrollbar.pages / 2 : scrollbar.currentPage} / ${scrollbar.pages / 2}` : `${scrollbar.currentPage} / ${scrollbar.pages}`">1
/ 3</span>
</div>
<button type="button" class="relative flex items-center justify-center rounded-full transition-all scrollbar-button group opacity-30 pointer-events-none"
:class="((scrollbar.no_next_page && !$data?.content_slider?.state?.infinite) && +`200` ) || ($data?.content_slider?.state?.infinite && $data?.content_slider?.state?.block_scroll_events) ? 'opacity-30 pointer-events-none' : ''"
:disabled="((scrollbar.no_next_page && !$data?.content_slider?.state?.infinite) && !!+`200`) || ($data?.content_slider?.state?.infinite && $data?.content_slider?.state?.block_scroll_events)"
aria-label="Scroll right" @click="handleNextClick($event, $data.content_slider)" disabled="disabled">
<svg class="ml-[calc(var(--icon-size)/3)] size-[--icon-size] stroke-2 animated-icon" fill="none" viewBox="0 0 10 10" aria-hidden="true" stroke="currentColor">
<path class="opacity-0 transition group-hover:opacity-100" d="M0 5h7"></path>
<path class="transition group-hover:translate-x-[calc(var(--icon-size)/4)]" d="M1 1l4 4-4 4"></path>
</svg>
<svg class="absolute left-1/2 top-1/2 size-[--icon-size-md] -translate-x-1/2 -translate-y-1/2 bg-current simple-icon"
style="mask: var(--scroll-button-next); -webkit-mask: var(--scroll-button-next); aspect-ratio: var(--scroll-button-next-aspect-ratio, 1);">
</svg>
</button>
</div>
</div>
</div>
</div>
<style>
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_h3Laxe"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: 1;
order: unset;
text-align: inherit;
margin-top: 40px;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
padding-top: 18px;
padding-bottom: 40px;
padding-left: 24px;
padding-right: 24px;
--grid-cols: 1;
grid-template-columns: repeat(var(--grid-cols, 1), minmax(0, 1fr));
justify-content: center;
place-items: center;
text-align: center;
align-items: end;
align-content: end;
gap: 18px;
}
@media screen and (min-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_h3Laxe"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: 1;
order: unset;
text-align: inherit;
margin-top: 40px;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
padding-top: 18px;
padding-bottom: 40px;
padding-left: 24px;
padding-right: 24px;
--grid-cols: 1;
justify-content: center;
place-items: center;
text-align: center;
align-items: end;
align-content: end;
gap: 18px;
}
}
@container (max-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_h3Laxe"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: 1;
order: unset;
text-align: inherit;
margin-top: 40px;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
padding-top: 18px;
padding-bottom: 40px;
padding-left: 24px;
padding-right: 24px;
--grid-cols: 1;
grid-template-columns: repeat(var(--grid-cols, 1), minmax(0, 1fr));
justify-content: center;
place-items: center;
text-align: center;
align-items: end;
align-content: end;
gap: 18px;
}
}
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_h3Laxe"]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<div data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_h3Laxe" class="grid" x-show="_cart.showConditionally(`cart_empty`) || $editor?.select_block_id === `layout_grid_h3Laxe`" data-style-content-grid="">
<style>
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--button_d6pjzE"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: 1;
order: unset;
text-align: inherit;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
@media screen and (min-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--button_d6pjzE"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: 1;
order: unset;
text-align: inherit;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
}
@container (max-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--button_d6pjzE"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: 1;
order: unset;
text-align: inherit;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
}
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--button_d6pjzE"]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<div data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--button_d6pjzE" class="">
<a href="/collections/all-products" class="w-full button-secondary ">
Shop All
</a>
</div>
</div>
<style>
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_YDWnqB"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
padding-top: 12px;
padding-bottom: 24px;
padding-left: 24px;
padding-right: 24px;
--grid-cols: 1;
grid-template-columns: repeat(var(--grid-cols, 1), minmax(0, 1fr));
justify-content: start;
place-items: start;
text-align: left;
align-items: start;
align-content: start;
gap: 24px;
}
@media screen and (min-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_YDWnqB"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
padding-top: 12px;
padding-bottom: 24px;
padding-left: 24px;
padding-right: 24px;
--grid-cols: 1;
justify-content: start;
place-items: start;
text-align: left;
align-items: start;
align-content: start;
gap: 24px;
}
}
@container (max-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_YDWnqB"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
padding-top: 12px;
padding-bottom: 24px;
padding-left: 24px;
padding-right: 24px;
--grid-cols: 1;
grid-template-columns: repeat(var(--grid-cols, 1), minmax(0, 1fr));
justify-content: start;
place-items: start;
text-align: left;
align-items: start;
align-content: start;
gap: 24px;
}
}
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_YDWnqB"]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<div data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_grid_YDWnqB" class="grid" x-show="_cart.showConditionally(`items_added`) || $editor?.select_block_id === `layout_grid_YDWnqB`" data-style-content-grid=""
style="display: none;">
<style>
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--line_items_with_upsells_6HgQzg"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: unset;
order: unset;
text-align: inherit;
}
@media screen and (min-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--line_items_with_upsells_6HgQzg"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: unset;
order: unset;
text-align: inherit;
}
}
@container (max-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--line_items_with_upsells_6HgQzg"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: unset;
order: unset;
text-align: inherit;
}
}
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--line_items_with_upsells_6HgQzg"]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<style>
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--line_items_with_upsells_6HgQzg"]) [data-style-line-item] {
;
padding-top: 0;
padding-bottom: 16px;
padding-left: 0;
padding-right: 0;
}
@media screen and (min-width: 768px) {
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--line_items_with_upsells_6HgQzg"]) [data-style-line-item] {
;
padding-top: 0;
padding-bottom: 16px;
padding-left: 0;
padding-right: 0;
}
}
@container (max-width: 768px) {
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--line_items_with_upsells_6HgQzg"]) [data-style-line-item] {
;
padding-top: 0;
padding-bottom: 16px;
padding-left: 0;
padding-right: 0;
}
}
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--line_items_with_upsells_6HgQzg"]) [data-style-line-item]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<div data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--line_items_with_upsells_6HgQzg" class="flex flex-col gap-2"
style=" --w-md: auto;--w: auto; --h-md: 96px;--h: 96px; --aspect-md: auto;--aspect: auto; --gap-md: 16px;--gap: 16px;"
x-effect="() => { if ($editor?.select_block_id === `line_items_with_upsells_6HgQzg` && !$cart?.state?.item_count) { _cart.add({items: [{id: Object.values(_products).find((p, i, arr)=>(p.available && p.variants.length>1) ||i ===arr.length -1)?.variants?.find(v=> v.available)?.id, quantity: 1}]})} }">
<template x-for="(item, index) in $cart.state.items" :key="index">
<section class="flex items-start flex-wrap gap-dynamic border-b border-b-theme-border"
x-show="!item?.properties?._p_id_link || !$cart.state?.items?.some(line=> line.quantity && line?.properties?._p_id && line?.properties?._p_id === item?.properties?._p_id_link)" data-style-line-item=""
:class="item?.quantity ? '' : 'hidden'"
x-effect="product = await _product.getHydratedProductData(item.handle, item.product_id), variant = product?.variants?.find(v => v.id === item.variant_id), sub_items = $cart.state.items.filter(line => line.quantity && line.properties?._p_id_link && line.properties?._p_id_link === item?.properties?._p_id)"
x-data="{
isChanging: false,
product: _products[item?.handle],
variant: _products[item?.handle]?.variants?.find(v => v.id === item?.variant_id), sub_items: $cart.state.items.filter(line=> line.quantity && line.properties?._p_id_link && line.properties?._p_id_link === item?.properties?._p_id)
}">
<picture class="w-dynamic h-dynamic relative aspect-dynamic">
<img x-show="item?.featured_image?.url" :src="item?.featured_image?.url" :alt="item?.featured_image?.alt ?? item?.title" :srcset="utils.getImageSrcSet(item?.featured_image?.url ?? '', 256)" width="256" height="256" loading="lazy"
onload="this.classList.remove('!opacity-0')" class="relative h-full w-full object-cover !opacity-0" sizes="(max-width: 768px) 20vw, (max-width: 1024px) 33vw, 33vw">
</picture>
<main class="flex flex-1 flex-col">
<div class="gap-dynamic flex" style=" --w-md: 18px;--w: 18px; --h-md: 18px;--h: 18px; --gap-md: 12px;--gap: 12px;">
<h3 x-html="item?.product_title" class="flex-1 text-14" role="button" tabindex="0" @click.prevent.stop="barba.go(item?.url); $modal.setId('')"></h3>
<button type="button" class="h-0 w-4 overflow-visible" :disabled="$cart.loading" @click="_cart.updateLineItemQuantity(0, index); sub_items?.forEach(item => _cart.updateLineItemQuantity(0, item.index))">
<svg data-icon-handle="x-mark" class="bg-current shrink-0 w-dynamic h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-x-mark--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="x-mark"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-x-mark); -webkit-mask: var(--icon-x-mark); aspect-ratio: var(--icon-x-mark-aspect-ratio, 1); "></svg>
</button>
</div>
<h4 class="mt-1 text-12" x-html="item?.variant_title" x-show="item?.variant_title && item?.variant_title !== 'Default Title'"></h4>
<div class="mt-1 text-12" x-data="{ properties: Object.entries(item?.properties ?? {})?.filter(([key]) => !/^_/gi.test(key)) }" x-effect="properties = Object.entries(item?.properties ?? {})?.filter(([key]) => !/^_/gi.test(key))"
x-show="properties?.length" x-html="properties.map(([key,val])=>`<div>${key}: ${val}</div>`)"></div>
<div class="flex items-baseline gap-2 mt-1.5">
<div class="line-through richtext-md h5 !opacity-50" x-show="Math.max(item?.original_price, item?.selling_plan_allocation?.compare_at_price ?? 0) > item?.final_price"
x-html="utils.formatMoney(Math.max(item?.original_price, item?.selling_plan_allocation?.compare_at_price ?? 0))"></div>
<div class="mt-1.5 text-14" x-html="utils.formatMoney(item?.final_price)"></div>
</div>
<div class="mt-1.5" x-show="item?.line_level_discount_allocations?.length">
<template x-for="discount in (item?.discounts ?? [])">
<div class="flex w-full justify-between gap-2 richtext-md h5 !opacity-50">
<div x-html="discount?.title"></div>
<div x-html="$cart?.isChanging || $cart?.loading ? '': utils.formatMoney(-discount?.amount / item?.quantity)"></div>
</div>
</template>
</div>
<div class="py-3.5" x-show="sub_items?.length">
<hr class="w-full border-t border-t-theme-border">
</div>
<template x-for="sub_item in sub_items">
<section x-show="!!sub_item.quantity" x-effect="sub_product = await _product.getHydratedProductData(sub_item.handle, sub_item.product_id), sub_variant = sub_product?.variants?.find(v => v.id === sub_item.variant_id)"
x-data="{ sub_product: _products[sub_item.handle], sub_variant: _products[sub_item.handle]?.variants?.find(v => v.id === sub_item.variant_id) }">
<div class="flex gap-4">
<picture class="relative h-8 w-8">
<img x-show="sub_product?.metafields?.smart?.upsell_cart_drawer_image?.src || sub_product?.featured_media?.src" :src="sub_product?.metafields?.smart?.upsell_cart_drawer_image?.src ?? sub_product?.featured_media?.src"
:alt="sub_product?.metafields?.smart?.upsell_cart_drawer_image?.alt ?? sub_product?.title" :srcset="utils.getImageSrcSet(sub_product?.metafields?.smart?.upsell_cart_drawer_image?.src ?? sub_product?.featured_media?.src, 96)"
alt="" src="" width="64" height="64" loading="lazy" onload="this.classList.remove('!opacity-0')" class="relative h-full w-full object-contain !opacity-0" sizes="(max-width: 768px) 10vw, (max-width: 1024px) 15vw, 20vw">
</picture>
<main class="flex flex-1 flex-col">
<div class="gap-dynamic flex" style=" --w-md: 18px;--w: 18px; --h-md: 18px;--h: 18px; --gap-md: 12px;--gap: 12px;">
<h3 x-html="sub_item?.product_title" class="flex-1 richtext-md h6" role="button" tabindex="0" @click.prevent.stop="barba.go(sub_item?.url); $modal.setId('')"></h3>
</div>
<h4 class="mt-1 richtext-md h6 !opacity-65" x-html="sub_item?.variant_title" x-show="sub_item?.variant_title && sub_item?.variant_title !== 'Default Title'"></h4>
<div class="mt-1 text-12" x-data="{ properties: Object.entries(sub_item?.properties ?? {})?.filter(([key]) => !/^_/gi.test(key)) }"
x-effect="properties = Object.entries(sub_item?.properties ?? {})?.filter(([key]) => !/^_/gi.test(key))" x-show="properties?.length" x-html="properties.map(([key,val])=>`<div>${key}: ${val}</div>`)"></div>
<div class="mt-1.5 text-14" x-html="utils.formatMoney(sub_item?.final_price)"></div>
</main>
</div>
<div class="py-3.5">
<hr class="w-full border-t border-t-theme-border">
</div>
</section>
</template>
<div class="mt-2 grid grid-cols-[auto,auto] gap-2">
<div class="flex items-center justify-between gap-2">
<div class="flex w-min">
<div class="flex items-center justify-between input-quantity-stepper-cart" @click.prevent.stop="()=>{}">
<span class="flex-1" data-quantity-label="">Quantity</span>
<span class="flex items-center">
<button type="button" class="p-0.5" aria-label="Decrease quantity" :disabled="$cart.loading" @click="()=> {
const target = Math.max(0, item?.quantity - 1)
_cart.updateLineItemQuantity(target, index);
sub_items?.forEach(item => {
_cart.updateLineItemQuantity(target, item.index)
})
}">
<svg data-icon-handle="minus" class="bg-current shrink-0 size-[0.9em]" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-minus--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="minus"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }"
style="mask: var(--icon-minus); -webkit-mask: var(--icon-minus); aspect-ratio: var(--icon-minus-aspect-ratio, 1); "></svg>
</button>
<label aria-label="Quantity" class="flex items-center justify-center">
<input type="number" min="0" name="value" class="w-8 min-w-0 appearance-none bg-inherit text-center outline-none disabled:pointer-events-none disabled:select-none"
@change="value = Math.max(0, Math.min(variant?.inventory_management === 'shopify' && variant?.inventory_policy === 'deny' ? variant?.inventory_quantity - item?.quantity : 999, $event.target.value))"
disabled="disabled" :value="item?.quantity">
</label>
<button type="button" class="p-0.5" aria-label="Increase quantity"
:disabled="$cart.loading || (variant?.inventory_management === 'shopify' && variant?.inventory_policy === 'deny' && (variant?.inventory_quantity - item?.quantity) <= 0)" @click="() => {
const value = Math.min(variant?.inventory_management === 'shopify' && variant?.inventory_policy === 'deny' ? variant?.inventory_quantity: 999, item?.quantity + 1);
_cart.updateLineItemQuantity(value, index);
sub_items?.forEach(item => {
_cart.updateLineItemQuantity(value, item.index)
})
}">
<svg data-icon-handle="plus" class="bg-current shrink-0 size-[0.9em]" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-plus--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="plus"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-plus); -webkit-mask: var(--icon-plus); aspect-ratio: var(--icon-plus-aspect-ratio, 1); "></svg>
</button>
</span>
</div>
</div>
<div x-show="sub_items?.length" class="text-14" x-html="utils.formatMoney(sub_items?.reduce((acc,item)=>acc+=item.final_price, item.final_price))"></div>
</div>
</div>
</main>
<div class="w-full shrink-0" x-show="variant?.selling_plan_allocations?.length" x-cloak="">
<div x-data="{ open: false,
focusIndex: 0,
values: [...(product?.requires_selling_plan ? [] : [`undefined`]), ...(variant?.selling_plan_allocations?.map(({ selling_plan })=> `${selling_plan?.id}`) ?? [])],
titles: [...(product?.requires_selling_plan ? [] : ['One time purchase']), ...(variant?.selling_plan_allocations?.map(({ selling_plan })=> selling_plan?.name) ?? [])],
disabledItems: [],
value: `${item?.selling_plan_allocation?.selling_plan?.id}`,
title: item?.selling_plan_allocation?.selling_plan?.name ?? 'One time purchase',
pos: { top: 0, left:0, width: 0, height:0 },
select: $refs.select }"
x-effect="()=> { values = [...(product?.requires_selling_plan ? [] : [`undefined`]), ...(variant?.selling_plan_allocations?.map(({ selling_plan })=> `${selling_plan?.id}`) ?? [])]; focusIndex = values.findIndex(val=> val === `${item?.selling_plan_allocation?.selling_plan?.id}`); titles = [...(product?.requires_selling_plan ? [] : ['One time purchase']), ...(variant?.selling_plan_allocations?.map(({ selling_plan })=> selling_plan?.name) ?? [])]; disabledItems = []; }"
x-show="!!values.length" x-init="pos = select.getBoundingClientRect()">
<button class="w-full input-select input-select--font" :class="isChanging ? 'button-loading' : ''" :disabled="$cart?.isChanging" type="button" x-ref="select" aria-label="" @click.prevent.stop="open = !open"
@keydown.space.prevent="open = !open" @keydown.enter.prevent="open = !open" aria-haspopup="listbox" aria-expanded="false">
<span class="w-full truncate text-left" x-html="titles[focusIndex] || '' || 'Choose an option'">item?.selling_plan_allocation?.selling_plan?.name ?? 'One time purchase'</span>
</button>
<input type="hidden" name="" :disabled="!values.length" :value="value">
<template x-teleport="body">
<template x-if="open">
<ul x-data="{ show: false }" x-init="$nextTick(() => { show = true }); pos = select.getBoundingClientRect()" x-effect="value = values[focusIndex], title = titles[focusIndex]" x-trap="open || show"
:style="`top: ${pos.top + pos.height + 2}px; width: ${pos.width}px; left: ${pos.left}px;`" @click.outside.capture="() => { ;if (!select?.contains($event.target) && select !== $event.target) { open = false } }"
@scroll.window="pos = select.getBoundingClientRect()" @resize.window="pos = select.getBoundingClientRect()" @keydown.esc="open = false" @keydown.left.prevent.stop="focusIndex = focusIndex > 0 ? focusIndex -1 : values.length - 1"
@keydown.up.prevent.stop="focusIndex = focusIndex > 0 ? focusIndex -1 : values.length - 1" @keydown.down.prevent.stop="focusIndex = focusIndex + 1 < values.length ? focusIndex + 1 : 0"
@keydown.right.prevent.stop="focusIndex = focusIndex + 1 < values.length ? focusIndex + 1 : 0"
@keydown.space.prevent.stop="isChanging = true; open = false; await _cart.change({ id: item?.key, selling_plan: +value, quantity: item?.quantity }); isChanging = false;"
@keydown.enter.prevent.stop="isChanging = true; open = false; await _cart.change({ id: item?.key, selling_plan: +value, quantity: item?.quantity }); isChanging = false;; open = false"
class="fixed z-[2147483647] mt-1 max-h-60 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg outline-none ring-1 ring-black/5 transition-opacity duration-75 focus:outline-none sm:text-sm" aria-label=""
aria-orientation="vertical" role="listbox" tabindex="0" x-show="show" x-cloak="" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0">
<template x-for="(value, i) in values">
<li class="relative cursor-default select-none py-2 pl-10 pr-4 text-gray-900 ac:bg-gray-100 hf:bg-gray-100"
@click.prevent.stop="isChanging = true; open = false; await _cart.change({ id: item?.key, selling_plan: +value, quantity: item?.quantity }); isChanging = false;; focusIndex = i; open = false" :disabled="!!disabledItems[i]"
:class="i === focusIndex ? 'active' : disabledItems[i] ? 'opacity-40' :''" x-effect="i === focusIndex && $el.parentElement ? $el.parentElement.scrollTop = $el.offsetTop - 120 : null" role="option" tabindex="-1"
:aria-selected="i === focusIndex">
<span class="block truncate input-select--font" x-html="titles[i]"></span>
<span class="absolute inset-y-0 left-0 flex items-center pl-3 text-theme-accent" :class="value === `${item?.selling_plan_allocation?.selling_plan?.id}` ? 'opacity-100':'opacity-0'">
<svg data-icon-handle="check-mark" class="bg-current shrink-0 size-5 opacity-60" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-check-mark--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="check-mark"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }"
style="mask: var(--icon-check-mark); -webkit-mask: var(--icon-check-mark); aspect-ratio: var(--icon-check-mark-aspect-ratio, 1); "></svg>
</span>
</li>
</template>
</ul>
</template>
</template>
</div>
</div>
</section>
</template>
</div>
<style>
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--upsell_products_gipfJt"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
}
@media screen and (min-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--upsell_products_gipfJt"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
}
}
@container (max-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--upsell_products_gipfJt"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
}
}
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--upsell_products_gipfJt"]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<style>
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--upsell_products_gipfJt"]) [data-style-divider] {
;
background-color: #636569;
width: 100%;
height: 1px;
margin: auto;
}
@media screen and (min-width: 768px) {
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--upsell_products_gipfJt"]) [data-style-divider] {
;
background-color: #636569;
width: 100%;
height: 1px;
margin: auto;
}
}
@container (max-width: 768px) {
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--upsell_products_gipfJt"]) [data-style-divider] {
;
background-color: #636569;
width: 100%;
height: 1px;
margin: auto;
}
}
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--upsell_products_gipfJt"]) [data-style-divider]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<style>
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--upsell_products_gipfJt"]) [data-style-container] {
;
background-color: ;
border-color: ;
margin-top: 0;
margin-bottom: 0;
margin-left: -24px;
margin-right: -24px;
padding-top: 0;
padding-bottom: 0;
padding-left: 24px;
padding-right: 24px;
border-style: solid;
border-width: 0;
border-radius: 0;
max-height: ;
max-width: ;
overflow: ;
}
@media screen and (min-width: 768px) {
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--upsell_products_gipfJt"]) [data-style-container] {
;
background-color: ;
border-color: ;
margin-top: 0;
margin-bottom: 0;
margin-left: -24px;
margin-right: -24px;
padding-top: 0;
padding-bottom: 0;
padding-left: 24px;
padding-right: 24px;
border-width: 0;
border-radius: 0;
max-height: ;
max-width: ;
overflow: ;
}
}
@container (max-width: 768px) {
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--upsell_products_gipfJt"]) [data-style-container] {
;
background-color: ;
border-color: ;
margin-top: 0;
margin-bottom: 0;
margin-left: -24px;
margin-right: -24px;
padding-top: 0;
padding-bottom: 0;
padding-left: 24px;
padding-right: 24px;
border-style: solid;
border-width: 0;
border-radius: 0;
max-height: ;
max-width: ;
overflow: ;
}
}
:where([data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--upsell_products_gipfJt"]) [data-style-container]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<section data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--upsell_products_gipfJt" class="@container"
x-show="(_cart.showConditionally(`always`) || $editor?.select_block_id === `upsell_products_gipfJt`) && $cart.upsell_products?.length" style="display: none;">
<header class="mb-6">
<div class="_input-richtext text-16">
<p><strong>You May Also Like</strong></p>
</div>
</header>
<main class="grid gap-[calc(var(--gap)/2)] md:gap-[calc(var(--gap-md)/2)] overflow-x-auto overflow-y-none scrollbar-none border-y-none" style=" --w-md: 100%;--w: 100%; --h-md: unset;--h: unset; --gap-md: 44px;--gap: 44px;"
data-style-container="" data-fallback-products="
[
{ "id": 8072569847985, "handle": "lime-wild-mint", "collections": ["5mg-thc","best-sellers","all-products","flavor-packs","flavors","for-socializing"], "requires_selling_plan": false, "selling_plan_groups": [{"id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755","name":"Subscribe and Save ","options":[{"name":"Subscribe and Save ","position":1,"values":["2 weeks","4 weeks","8 weeks"]}],"selling_plans":[{"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}},{"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}},{"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}],"app_id":"5859381"}], "options": ["Title"], "option1": "Title", "option2": null, "option3": null, "price": 2200, "price_min": 2200, "price_varies": true, "compare_at_price": null, "compare_at_price_min": 0, "compare_at_price_varies": false, "options_with_values": [{"name":"Title","position":1,"values":["4-Pack","12-Pack","24-Pack"]}], "title": "Lime Wild Mint", "featured_media": {"alt":null,"id":29109550186673,"position":1,"preview_image":{"aspect_ratio":1.0,"height":1289,"width":1289,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Lime-PDP.png?v=1727986615"},"aspect_ratio":1.0,"height":1289,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Lime-PDP.png?v=1727986615","width":1289}, "featured_image": "\/\/happihourdrink.com\/cdn\/shop\/files\/Lime-PDP.png?v=1727986615", "media": [{"alt":null,"id":29109550186673,"position":1,"preview_image":{"aspect_ratio":1.0,"height":1289,"width":1289,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Lime-PDP.png?v=1727986615"},"aspect_ratio":1.0,"height":1289,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Lime-PDP.png?v=1727986615","width":1289},{"alt":null,"id":29104288071857,"position":2,"preview_image":{"aspect_ratio":1.0,"height":1333,"width":1333,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Hour_r1_03E_0127Lime_CanCarton.jpg?v=1727986853"},"aspect_ratio":1.0,"height":1333,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Hour_r1_03E_0127Lime_CanCarton.jpg?v=1727986853","width":1333},{"alt":null,"id":29111447421105,"position":3,"preview_image":{"aspect_ratio":1.0,"height":1920,"width":1920,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Hour_r1_03E_0135_Lime_Glass-sqr.jpg?v=1727986421"},"aspect_ratio":1.0,"height":1920,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Hour_r1_03E_0135_Lime_Glass-sqr.jpg?v=1727986421","width":1920}], "seo_description": null, "description": "\u003cp dir=\"ltr\"\u003e\u003cspan\u003e5 mg THC\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e25 calories\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e6 g sugar\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e6 g carbohydrates\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e8 oz per can\u003c\/span\u003e\u003c\/p\u003e", "vendor": "Happi Hour", "url":"\/products\/lime-wild-mint", "available": true, "tags": ["For Any Time","Shopify Product"], "gift_card": null, "complementary_products":[ { "id": 8072569782449, "handle": "raspberry-honeysuckle", "collections": ["5mg-thc","all-products","flavor-packs","flavors","for-socializing"], "requires_selling_plan": false, "selling_plan_groups": [{"id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755","name":"Subscribe and Save ","options":[{"name":"Subscribe and Save ","position":1,"values":["2 weeks","4 weeks","8 weeks"]}],"selling_plans":[{"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}},{"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}},{"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}],"app_id":"5859381"}], "options": ["Title"], "option1": "Title", "option2": null, "option3": null, "price": 2200, "price_min": 2200, "price_varies": true, "compare_at_price": null, "compare_at_price_min": 0, "compare_at_price_varies": false, "options_with_values": [{"name":"Title","position":1,"values":["4-Pack","12-Pack","24-Pack"]}], "title": "Raspberry Honeysuckle", "featured_media": {"alt":null,"id":29110037872817,"position":1,"preview_image":{"aspect_ratio":1.0,"height":950,"width":950,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Raspberry-PDP.png?v=1726161028"},"aspect_ratio":1.0,"height":950,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Raspberry-PDP.png?v=1726161028","width":950}, "featured_image": "\/\/happihourdrink.com\/cdn\/shop\/files\/Raspberry-PDP.png?v=1726161028", "media": [{"alt":null,"id":29110037872817,"position":1,"preview_image":{"aspect_ratio":1.0,"height":950,"width":950,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Raspberry-PDP.png?v=1726161028"},"aspect_ratio":1.0,"height":950,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Raspberry-PDP.png?v=1726161028","width":950},{"alt":null,"id":29148064055473,"position":2,"preview_image":{"aspect_ratio":1.0,"height":950,"width":950,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Raspberry_CanCarton_retouch_v2.jpg?v=1726535687"},"aspect_ratio":1.0,"height":950,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Raspberry_CanCarton_retouch_v2.jpg?v=1726535687","width":950},{"alt":null,"id":29148050882737,"position":3,"preview_image":{"aspect_ratio":1.0,"height":950,"width":950,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Raspberry_Glass_retouch_v5.jpg?v=1726535712"},"aspect_ratio":1.0,"height":950,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Raspberry_Glass_retouch_v5.jpg?v=1726535712","width":950}], "seo_description": null, "description": "\u003cp dir=\"ltr\"\u003e\u003cspan\u003e5mg THC\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e25 calories\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e5 g sugar\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e6 g carbohydrates\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e8 oz per can\u003c\/span\u003e\u003c\/p\u003e", "vendor": "Happi Hour", "url":"\/products\/raspberry-honeysuckle", "available": true, "tags": ["For Any Time","Shopify Product"], "gift_card": null, "complementary_product_handles":["glow-in-blood-orange-ginger","dance","lemon-elderflower","lime-wild-mint"], "metafields": { "smart":{ "color":"#e20aa3" ,"default_variant":{"id":44405758722225,"title":"12-Pack","option1":"12-Pack","option2":null,"option3":null,"sku":"449712","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Raspberry Honeysuckle - 12-Pack","public_title":"12-Pack","options":["12-Pack"],"price":6600,"weight":3402,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":5610}],"price":5610,"compare_at_price":6600,"per_delivery_price":5610,"selling_plan_id":1791131825,"selling_plan_group_id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755"},{"price_adjustments":[{"position":1,"price":5610}],"price":5610,"compare_at_price":6600,"per_delivery_price":5610,"selling_plan_id":1791164593,"selling_plan_group_id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755"},{"price_adjustments":[{"position":1,"price":5610}],"price":5610,"compare_at_price":6600,"per_delivery_price":5610,"selling_plan_id":1791197361,"selling_plan_group_id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755"}]} ,"effect":"TO SOCIALIZE" ,"features":[ {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Icon_THC_5_355d9b99-c716-4bfe-8a94-fcde5b14368e.svg?v=1725479697","text":"5MG THC"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Icon_cal_25_4846206a-a055-4b2c-a7c7-4cba73ee57d8.svg?v=1725479750","text":"25 Calories"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Icon_all_natural_bc54560c-6254-48a3-b323-e0b6317a2c39.svg?v=1725479453","text":"All Natural"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Icon_100_vegan_054cd80d-2633-45dc-a000-febddc117350.svg?v=1725479296","text":"100% Vegan"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_29.svg?v=1720608455","text":"Zero Alcohol"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_31.svg?v=1720608456","text":"Feel Happi"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_33.svg?v=1720608455","text":" Lab Tested"}] ,"flavor_profile":"Berry" ,"gallery_badge_1":{ "alt": "", "aspect_ratio": 1.0, "height": 1484, "id": 29370311671985, "media_type": "image", "preview_image": "\/\/happihourdrink.com\/cdn\/shop\/files\/HS24-GOLD-1484x1484px.png?v=1729516127", "src": "//happihourdrink.com/cdn/shop/files/HS24-GOLD-1484x1484px.png?v=1729516127", "variants": null, "width": 1484, "focal_point": "50.0% 50.0%" } ,"ingredients": "\u003cp\u003eCarbonated Water\u003c\/p\u003e\u003cp\u003eOrganic Agave Nectar\u003c\/p\u003e\u003cp\u003eRaspberry Juice (From Concentrate)\u003c\/p\u003e\u003cp\u003eOrganic Lemon Juice (From Concentrate)\u003c\/p\u003e\u003cp\u003eNatural Flavors\u003c\/p\u003e\u003cp\u003eHemp Extract\u003c\/p\u003e\u003cp\u003ePotassium Sorbate (Preservative)\u003c\/p\u003e\u003cp\u003eAscorbic Acid (Vitamin C)\u003c\/p\u003e" ,"product_description": "\u003cp\u003eBursting with a sweet-tart berry flavor, Raspberry hits all the right notes with a hint of honeysuckle. It’s like singing loud with the windows down.\u003c\/p\u003e" ,"siblings":[ {"product":"raspberry-honeysuckle","sibling_name":"Raspberry 5mg","title":"5mg"}, {"product":"raspberry-honeysuckle-10mg","sibling_name":"Raspberry 10mg","title":"10mg"}] ,"strength":"5mg"} }, "selected_or_first_available_variant_id": 44405758689457, "selected_variant_id": null, "reviews": { "rating": 4.9, "review_count": 148 }, "variants": [{ "available": true, "featured_media": null, "option1": "4-Pack", "option2": null, "option3": null, "options": ["4-Pack"], "price": 2200, "compare_at_price": null, "id": 44405758689457, "sku": "44974", "title": "4-Pack", "inventory_quantity": 3483, "inventory_policy": "deny", "inventory_management": "shopify", "selling_plan_allocations": [{ "checkout_charge_amount": 1870, "compare_at_price": 2200, "per_delivery_price": 1870, "price": 1870, "selling_plan": {"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 1870, "compare_at_price": 2200, "per_delivery_price": 1870, "price": 1870, "selling_plan": {"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 1870, "compare_at_price": 2200, "per_delivery_price": 1870, "price": 1870, "selling_plan": {"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" }], "metafields": { "smart":{} } },{ "available": true, "featured_media": null, "option1": "12-Pack", "option2": null, "option3": null, "options": ["12-Pack"], "price": 6600, "compare_at_price": null, "id": 44405758722225, "sku": "449712", "title": "12-Pack", "inventory_quantity": 1159, "inventory_policy": "deny", "inventory_management": "shopify", "selling_plan_allocations": [{ "checkout_charge_amount": 5610, "compare_at_price": 6600, "per_delivery_price": 5610, "price": 5610, "selling_plan": {"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 5610, "compare_at_price": 6600, "per_delivery_price": 5610, "price": 5610, "selling_plan": {"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 5610, "compare_at_price": 6600, "per_delivery_price": 5610, "price": 5610, "selling_plan": {"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" }], "metafields": { "smart":{ "default_variant":true ,"highlight":"Most Popular"} } },{ "available": true, "featured_media": null, "option1": "24-Pack", "option2": null, "option3": null, "options": ["24-Pack"], "price": 13200, "compare_at_price": null, "id": 44405758754993, "sku": "449724", "title": "24-Pack", "inventory_quantity": 580, "inventory_policy": "deny", "inventory_management": "shopify", "selling_plan_allocations": [{ "checkout_charge_amount": 11220, "compare_at_price": 13200, "per_delivery_price": 11220, "price": 11220, "selling_plan": {"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 11220, "compare_at_price": 13200, "per_delivery_price": 11220, "price": 11220, "selling_plan": {"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 11220, "compare_at_price": 13200, "per_delivery_price": 11220, "price": 11220, "selling_plan": {"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" }], "metafields": { "smart":{} } }] }, { "id": 8143712026801, "handle": "dance", "collections": ["5mg-thc","all-products","flavor-packs","flavors","to-boost"], "requires_selling_plan": false, "selling_plan_groups": [{"id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755","name":"Subscribe and Save ","options":[{"name":"Subscribe and Save ","position":1,"values":["2 weeks","4 weeks","8 weeks"]}],"selling_plans":[{"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}},{"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}},{"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}],"app_id":"5859381"}], "options": ["Size"], "option1": "Size", "option2": null, "option3": null, "price": 2600, "price_min": 2600, "price_varies": true, "compare_at_price": null, "compare_at_price_min": 0, "compare_at_price_varies": false, "options_with_values": [{"name":"Size","position":1,"values":["4-Pack","12-Pack","24-Pack"]}], "title": "Dance", "featured_media": {"alt":null,"id":29423979036849,"position":1,"preview_image":{"aspect_ratio":1.0,"height":950,"width":950,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/HappiDance_PDP.png?v=1730217546"},"aspect_ratio":1.0,"height":950,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/HappiDance_PDP.png?v=1730217546","width":950}, "featured_image": "\/\/happihourdrink.com\/cdn\/shop\/files\/HappiDance_PDP.png?v=1730217546", "media": [{"alt":null,"id":29423979036849,"position":1,"preview_image":{"aspect_ratio":1.0,"height":950,"width":950,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/HappiDance_PDP.png?v=1730217546"},"aspect_ratio":1.0,"height":950,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/HappiDance_PDP.png?v=1730217546","width":950},{"alt":null,"id":29420426297521,"position":2,"preview_image":{"aspect_ratio":1.0,"height":950,"width":950,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/HappiDance_Can_Carton.jpg?v=1730146626"},"aspect_ratio":1.0,"height":950,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/HappiDance_Can_Carton.jpg?v=1730146626","width":950},{"alt":null,"id":29420391006385,"position":3,"preview_image":{"aspect_ratio":1.0,"height":950,"width":950,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/HappiDance_Can_Glass.jpg?v=1730146205"},"aspect_ratio":1.0,"height":950,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/HappiDance_Can_Glass.jpg?v=1730146205","width":950},{"alt":null,"id":29424071344305,"position":4,"preview_image":{"aspect_ratio":1.0,"height":950,"width":950,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Dance_Table_sqr_01e13143-5d72-4021-b9fe-8ae077a36413.png?v=1730218547"},"aspect_ratio":1.0,"height":950,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Dance_Table_sqr_01e13143-5d72-4021-b9fe-8ae077a36413.png?v=1730218547","width":950}], "seo_description": null, "description": "\u003cp dir=\"ltr\"\u003e\u003cspan\u003e5mg THC • 5mg THCV • 5mg CBD\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e30 calories\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e7 g sugar\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e7 g carbohydrates\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e8 oz per can\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e \u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003eGreat for day or nighttime\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003eContains Ginseng\u003c\/span\u003e\u003c\/p\u003e", "vendor": "Happi", "url":"\/products\/dance", "available": true, "tags": ["For Mood Boost"], "gift_card": null, "complementary_product_handles":["glow-in-blood-orange-ginger","nightcap-turkish-apple-tea","raspberry-honeysuckle","lime-wild-mint"], "metafields": { "smart":{ "color":"#f7e00e" ,"default_variant":{"id":44742930890929,"title":"12-Pack","option1":"12-Pack","option2":null,"option3":null,"sku":"3577612","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Dance - 12-Pack","public_title":"12-Pack","options":["12-Pack"],"price":7800,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":6630}],"price":6630,"compare_at_price":7800,"per_delivery_price":6630,"selling_plan_id":1791131825,"selling_plan_group_id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755"},{"price_adjustments":[{"position":1,"price":6630}],"price":6630,"compare_at_price":7800,"per_delivery_price":6630,"selling_plan_id":1791164593,"selling_plan_group_id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755"},{"price_adjustments":[{"position":1,"price":6630}],"price":6630,"compare_at_price":7800,"per_delivery_price":6630,"selling_plan_id":1791197361,"selling_plan_group_id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755"}]} ,"effect":"TO BOOST" ,"features":[ {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Icon_cannab_dance.svg?v=1728487981","text":"Dance"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_27.svg?v=1720608455","text":"30 Calories"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_28.svg?v=1720608456","text":"Real Organic"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Icon_100_vegan_054cd80d-2633-45dc-a000-febddc117350.svg?v=1725479296","text":"100% Vegan"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_29.svg?v=1720608455","text":"Zero Alcohol"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_33.svg?v=1720608455","text":" Lab Tested"}] ,"flavor":"MANGO SWEET BASIL" ,"ingredients": "\u003cp\u003eWater\u003c\/p\u003e\u003cp\u003eOrganic Mango Juice Concentrate\u003c\/p\u003e\u003cp\u003eOrganic Mango Puree\u003c\/p\u003e\u003cp\u003eOrganic Agave Nectar\u003c\/p\u003e\u003cp\u003eOrganic Lime Juice Concentrate\u003c\/p\u003e\u003cp\u003eHemp Extract\u003c\/p\u003e\u003cp\u003eNatural Flavor\u003c\/p\u003e\u003cp\u003eGinseng Extract\u003c\/p\u003e\u003cp\u003eBasil Extract\u003c\/p\u003e" ,"product_description": "\u003cp\u003eJuicy and zingy, Happi Dance can boost your spirits with an uplifting blend of mouth-watering mango and a hint of basil that is sure to enhance any celebration. Feel the beat with every sip and dance like nobody’s watching.\u003c\/p\u003e" ,"strength":"5mg" ,"tag":"NEW"} }, "selected_or_first_available_variant_id": 44742930858161, "selected_variant_id": null, "reviews": { "rating": 0.0, "review_count": 0 }, "variants": [{ "available": true, "featured_media": null, "option1": "4-Pack", "option2": null, "option3": null, "options": ["4-Pack"], "price": 2600, "compare_at_price": null, "id": 44742930858161, "sku": "357764", "title": "4-Pack", "inventory_quantity": 3050, "inventory_policy": "deny", "inventory_management": "shopify", "selling_plan_allocations": [{ "checkout_charge_amount": 2210, "compare_at_price": 2600, "per_delivery_price": 2210, "price": 2210, "selling_plan": {"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 2210, "compare_at_price": 2600, "per_delivery_price": 2210, "price": 2210, "selling_plan": {"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 2210, "compare_at_price": 2600, "per_delivery_price": 2210, "price": 2210, "selling_plan": {"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" }], "metafields": { "smart":{} } },{ "available": true, "featured_media": null, "option1": "12-Pack", "option2": null, "option3": null, "options": ["12-Pack"], "price": 7800, "compare_at_price": null, "id": 44742930890929, "sku": "3577612", "title": "12-Pack", "inventory_quantity": 1016, "inventory_policy": "deny", "inventory_management": "shopify", "selling_plan_allocations": [{ "checkout_charge_amount": 6630, "compare_at_price": 7800, "per_delivery_price": 6630, "price": 6630, "selling_plan": {"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 6630, "compare_at_price": 7800, "per_delivery_price": 6630, "price": 6630, "selling_plan": {"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 6630, "compare_at_price": 7800, "per_delivery_price": 6630, "price": 6630, "selling_plan": {"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" }], "metafields": { "smart":{ "highlight":"MOST POPULAR"} } },{ "available": true, "featured_media": null, "option1": "24-Pack", "option2": null, "option3": null, "options": ["24-Pack"], "price": 15600, "compare_at_price": null, "id": 44742930923697, "sku": "3577624", "title": "24-Pack", "inventory_quantity": 511, "inventory_policy": "deny", "inventory_management": "shopify", "selling_plan_allocations": [{ "checkout_charge_amount": 13260, "compare_at_price": 15600, "per_delivery_price": 13260, "price": 13260, "selling_plan": {"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 13260, "compare_at_price": 15600, "per_delivery_price": 13260, "price": 13260, "selling_plan": {"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 13260, "compare_at_price": 15600, "per_delivery_price": 13260, "price": 13260, "selling_plan": {"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" }], "metafields": { "smart":{} } }] }, { "id": 8072569815217, "handle": "glow-in-blood-orange-ginger", "collections": ["5mg-thc","best-sellers","all-products","flavor-packs","flavors","for-relaxing"], "requires_selling_plan": false, "selling_plan_groups": [{"id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755","name":"Subscribe and Save ","options":[{"name":"Subscribe and Save ","position":1,"values":["2 weeks","4 weeks","8 weeks"]}],"selling_plans":[{"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}},{"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}},{"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}],"app_id":"5859381"}], "options": ["Size"], "option1": "Size", "option2": null, "option3": null, "price": 2400, "price_min": 2400, "price_varies": true, "compare_at_price": null, "compare_at_price_min": 0, "compare_at_price_varies": false, "options_with_values": [{"name":"Size","position":1,"values":["4-Pack","12-Pack","24-Pack"]}], "title": "Glow", "featured_media": {"alt":null,"id":29109490647217,"position":1,"preview_image":{"aspect_ratio":1.0,"height":950,"width":950,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Glow-PDP.png?v=1726156704"},"aspect_ratio":1.0,"height":950,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Glow-PDP.png?v=1726156704","width":950}, "featured_image": "\/\/happihourdrink.com\/cdn\/shop\/files\/Glow-PDP.png?v=1726156704", "media": [{"alt":null,"id":29109490647217,"position":1,"preview_image":{"aspect_ratio":1.0,"height":950,"width":950,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Glow-PDP.png?v=1726156704"},"aspect_ratio":1.0,"height":950,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Glow-PDP.png?v=1726156704","width":950},{"alt":null,"id":29147939176625,"position":2,"preview_image":{"aspect_ratio":1.0,"height":950,"width":950,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Glow_CanCarton_retouch.jpg?v=1726535172"},"aspect_ratio":1.0,"height":950,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Glow_CanCarton_retouch.jpg?v=1726535172","width":950},{"alt":null,"id":29142092873905,"position":3,"preview_image":{"aspect_ratio":1.0,"height":950,"width":950,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_glow_glass_retouch.jpg?v=1726535499"},"aspect_ratio":1.0,"height":950,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_glow_glass_retouch.jpg?v=1726535499","width":950},{"alt":null,"id":29168444702897,"position":4,"preview_image":{"aspect_ratio":1.0,"height":950,"width":950,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Glow_Benefit_retouch.jpg?v=1726753624"},"aspect_ratio":1.0,"height":950,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Glow_Benefit_retouch.jpg?v=1726753624","width":950},{"alt":null,"id":29111250256049,"position":5,"preview_image":{"aspect_ratio":1.0,"height":758,"width":758,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Glow_Table-sqr2.jpg?v=1726170008"},"aspect_ratio":1.0,"height":758,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Glow_Table-sqr2.jpg?v=1726170008","width":758}], "seo_description": null, "description": "\u003cp dir=\"ltr\"\u003e\u003cspan\u003e5mg THC • 5mg CBD • 3mg CBG • 2mg CBN\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e30 calories\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e7 g sugar\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e8 g carbohydrates\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e8 oz per can\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e \u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003eGreat for daytime\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003eContains Lion’s mane mushroom\u003c\/span\u003e\u003c\/p\u003e", "vendor": "Happi Hour", "url":"\/products\/glow-in-blood-orange-ginger", "available": true, "tags": ["For Relaxing","Shopify Product"], "gift_card": null, "complementary_product_handles":["dance","nightcap-turkish-apple-tea","raspberry-honeysuckle","lime-wild-mint"], "metafields": { "smart":{ "color":"#fa7931" ,"default_variant":{"id":44405758820529,"title":"12-Pack","option1":"12-Pack","option2":null,"option3":null,"sku":"450212","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Glow - 12-Pack","public_title":"12-Pack","options":["12-Pack"],"price":7200,"weight":3402,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":6120}],"price":6120,"compare_at_price":7200,"per_delivery_price":6120,"selling_plan_id":1791131825,"selling_plan_group_id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755"},{"price_adjustments":[{"position":1,"price":6120}],"price":6120,"compare_at_price":7200,"per_delivery_price":6120,"selling_plan_id":1791164593,"selling_plan_group_id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755"},{"price_adjustments":[{"position":1,"price":6120}],"price":6120,"compare_at_price":7200,"per_delivery_price":6120,"selling_plan_id":1791197361,"selling_plan_group_id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755"}]} ,"effect":"TO RELAX" ,"features":[ {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Icon_cannab_glow_20d1a112-b957-4fa8-8ffa-f40fade5a1d9.svg?v=1725478342","text":"Glow"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_27.svg?v=1720608455","text":"30 Calories"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Icon_all_natural_bc54560c-6254-48a3-b323-e0b6317a2c39.svg?v=1725479453","text":"All Natural"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Icon_100_vegan_054cd80d-2633-45dc-a000-febddc117350.svg?v=1725479296","text":"100% Vegan"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_29.svg?v=1720608455","text":"Zero Alcohol"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_31.svg?v=1720608456","text":"Feel Happi"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_33.svg?v=1720608455","text":" Lab Tested"}] ,"flavor":"BLOOD ORANGE GINGER" ,"flavor_profile":"Citrus" ,"gallery_badge_1":{ "alt": "", "aspect_ratio": 1.0, "height": 1484, "id": 29370315342001, "media_type": "image", "preview_image": "\/\/happihourdrink.com\/cdn\/shop\/files\/HSA23-SILVER-1484x1484px.png?v=1729516254", "src": "//happihourdrink.com/cdn/shop/files/HSA23-SILVER-1484x1484px.png?v=1729516254", "variants": null, "width": 1484, "focal_point": "50.0% 50.0%" } ,"ingredients": "\u003cp\u003eCarbonated Water\u003cbr \/\u003e\nOrganic Orange Juice (From Concentrate)\u003cbr \/\u003e\nOrganic Agave Nectar\u003cbr \/\u003e\nBlood Orange Juice (From Concentrate)\u003cbr \/\u003e\nNatural Flavors\u003cbr \/\u003e\nHemp Extract\u003cbr \/\u003e\nOrganic Lion’s Mane Extract\u003cbr \/\u003e\nAscorbic Acid (Vitamin C)\u003cbr \/\u003e\nPotassium Sorbate (Preservative)\u003c\/p\u003e" ,"product_description": "\u003cp\u003eCitrusy and uplifting, Glow shimmers with blood orange juice and a gentle twist of ginger. It’s golden hour in a glass.\u003c\/p\u003e" ,"siblings":[ {"product":"glow-in-blood-orange-ginger","sibling_name":"Glow 5mg","title":"5mg"}, {"product":"glow-in-blood-orange-ginger-12oz","sibling_name":"Glow up 10mg","title":"10mg"}] ,"sibling_products":[] ,"strength":"5mg" ,"tag":"BEST-SELLER"} }, "selected_or_first_available_variant_id": 44405758787761, "selected_variant_id": null, "reviews": { "rating": 4.9, "review_count": 146 }, "variants": [{ "available": true, "featured_media": null, "option1": "4-Pack", "option2": null, "option3": null, "options": ["4-Pack"], "price": 2400, "compare_at_price": null, "id": 44405758787761, "sku": "45024", "title": "4-Pack", "inventory_quantity": 3552, "inventory_policy": "deny", "inventory_management": "shopify", "selling_plan_allocations": [{ "checkout_charge_amount": 2040, "compare_at_price": 2400, "per_delivery_price": 2040, "price": 2040, "selling_plan": {"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 2040, "compare_at_price": 2400, "per_delivery_price": 2040, "price": 2040, "selling_plan": {"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 2040, "compare_at_price": 2400, "per_delivery_price": 2040, "price": 2040, "selling_plan": {"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" }], "metafields": { "smart":{} } },{ "available": true, "featured_media": null, "option1": "12-Pack", "option2": null, "option3": null, "options": ["12-Pack"], "price": 7200, "compare_at_price": null, "id": 44405758820529, "sku": "450212", "title": "12-Pack", "inventory_quantity": 1183, "inventory_policy": "deny", "inventory_management": "shopify", "selling_plan_allocations": [{ "checkout_charge_amount": 6120, "compare_at_price": 7200, "per_delivery_price": 6120, "price": 6120, "selling_plan": {"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 6120, "compare_at_price": 7200, "per_delivery_price": 6120, "price": 6120, "selling_plan": {"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 6120, "compare_at_price": 7200, "per_delivery_price": 6120, "price": 6120, "selling_plan": {"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" }], "metafields": { "smart":{ "default_variant":true ,"highlight":"Most Popular"} } },{ "available": true, "featured_media": null, "option1": "24-Pack", "option2": null, "option3": null, "options": ["24-Pack"], "price": 14400, "compare_at_price": null, "id": 44405758853297, "sku": "450224", "title": "24-Pack", "inventory_quantity": 596, "inventory_policy": "deny", "inventory_management": "shopify", "selling_plan_allocations": [{ "checkout_charge_amount": 12240, "compare_at_price": 14400, "per_delivery_price": 12240, "price": 12240, "selling_plan": {"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 12240, "compare_at_price": 14400, "per_delivery_price": 12240, "price": 12240, "selling_plan": {"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 12240, "compare_at_price": 14400, "per_delivery_price": 12240, "price": 12240, "selling_plan": {"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" }], "metafields": { "smart":{} } }] }, { "id": 8072569716913, "handle": "lemon-elderflower", "collections": ["2-5mg-thc","all-products","flavor-packs","flavors","for-socializing"], "requires_selling_plan": false, "selling_plan_groups": [{"id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755","name":"Subscribe and Save ","options":[{"name":"Subscribe and Save ","position":1,"values":["2 weeks","4 weeks","8 weeks"]}],"selling_plans":[{"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}},{"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}},{"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}],"app_id":"5859381"}], "options": ["Title"], "option1": "Title", "option2": null, "option3": null, "price": 2000, "price_min": 2000, "price_varies": true, "compare_at_price": null, "compare_at_price_min": 0, "compare_at_price_varies": false, "options_with_values": [{"name":"Title","position":1,"values":["4-Pack","12-Pack","24-Pack"]}], "title": "Lemon Elderflower", "featured_media": {"alt":null,"id":29110028763313,"position":1,"preview_image":{"aspect_ratio":1.0,"height":950,"width":950,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Lemon-PDP.png?v=1726160948"},"aspect_ratio":1.0,"height":950,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Lemon-PDP.png?v=1726160948","width":950}, "featured_image": "\/\/happihourdrink.com\/cdn\/shop\/files\/Lemon-PDP.png?v=1726160948", "media": [{"alt":null,"id":29110028763313,"position":1,"preview_image":{"aspect_ratio":1.0,"height":950,"width":950,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Lemon-PDP.png?v=1726160948"},"aspect_ratio":1.0,"height":950,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Lemon-PDP.png?v=1726160948","width":950},{"alt":null,"id":29104281649329,"position":2,"preview_image":{"aspect_ratio":1.0,"height":1365,"width":1365,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Hour_r1_03E_0148_Lemon_CanCarton.jpg?v=1726171354"},"aspect_ratio":1.0,"height":1365,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Hour_r1_03E_0148_Lemon_CanCarton.jpg?v=1726171354","width":1365},{"alt":null,"id":29111463674033,"position":3,"preview_image":{"aspect_ratio":1.0,"height":750,"width":750,"src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Hour_r3_03E_0172Lemon_Glass-sqr.jpg?v=1726171459"},"aspect_ratio":1.0,"height":750,"media_type":"image","src":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Hour_r3_03E_0172Lemon_Glass-sqr.jpg?v=1726171459","width":750}], "seo_description": null, "description": "\u003cp dir=\"ltr\"\u003e\u003cspan\u003e2.5mg THC\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e20 calories\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e4 g sugar\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e5 g carbohydrates\u003c\/span\u003e\u003c\/p\u003e\n\u003cp dir=\"ltr\"\u003e\u003cspan\u003e8 oz per can\u003c\/span\u003e\u003c\/p\u003e", "vendor": "Happi Hour", "url":"\/products\/lemon-elderflower", "available": true, "tags": ["For Any Time","Shopify Product"], "gift_card": null, "complementary_product_handles":["lime-wild-mint","raspberry-honeysuckle","balance-passionfruit-pineapple"], "metafields": { "smart":{ "color":"#f9dd08" ,"default_variant":{"id":44405758623921,"title":"12-Pack","option1":"12-Pack","option2":null,"option3":null,"sku":"405312","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Lemon Elderflower - 12-Pack","public_title":"12-Pack","options":["12-Pack"],"price":6000,"weight":3402,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":5100}],"price":5100,"compare_at_price":6000,"per_delivery_price":5100,"selling_plan_id":1791131825,"selling_plan_group_id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755"},{"price_adjustments":[{"position":1,"price":5100}],"price":5100,"compare_at_price":6000,"per_delivery_price":5100,"selling_plan_id":1791164593,"selling_plan_group_id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755"},{"price_adjustments":[{"position":1,"price":5100}],"price":5100,"compare_at_price":6000,"per_delivery_price":5100,"selling_plan_id":1791197361,"selling_plan_group_id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755"}]} ,"effect":"TO SOCIALIZE" ,"features":[ {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Icon_THC_2-5_4492053e-8b19-451a-92d3-5f2c68eb3466.svg?v=1725479322","text":"2.5MG THC"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Icon_cal_20_8fd9db51-41a4-4156-bcaa-1768f6f4120c.svg?v=1725479401","text":"20 Calories"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_28.svg?v=1720608456","text":"Real Organic"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Icon_100_vegan_054cd80d-2633-45dc-a000-febddc117350.svg?v=1725479296","text":"100% Vegan"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_29.svg?v=1720608455","text":"Zero Alcohol"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_31.svg?v=1720608456","text":"Feel Happi"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_33.svg?v=1720608455","text":" Lab Tested"}] ,"flavor_profile":"Citrus" ,"ingredients": "\u003cp\u003eCarbonated Water\u003c\/p\u003e\u003cp\u003eOrganic Lemon Juice (From Concentrate)\u003c\/p\u003e\u003cp\u003eOrganic Agave Nectar\u003c\/p\u003e\u003cp\u003eNatural Flavors\u003c\/p\u003e\u003cp\u003eHemp Extract\u003c\/p\u003e\u003cp\u003ePotassium Sorbate (Preservative)\u003c\/p\u003e\u003cp\u003eAscorbic Acid (Vitamin C)\u003c\/p\u003e" ,"product_description": "\u003cp\u003eLight and sparkly, Lemon dazzles with cheerful citrus and floral notes that will brighten any occasion. It’s like spending the day out on the lake.\u003c\/p\u003e" ,"strength":"2.5mg"} }, "selected_or_first_available_variant_id": 44405758591153, "selected_variant_id": null, "reviews": { "rating": 4.8, "review_count": 113 }, "variants": [{ "available": true, "featured_media": null, "option1": "4-Pack", "option2": null, "option3": null, "options": ["4-Pack"], "price": 2000, "compare_at_price": null, "id": 44405758591153, "sku": "40534", "title": "4-Pack", "inventory_quantity": 4601, "inventory_policy": "deny", "inventory_management": "shopify", "selling_plan_allocations": [{ "checkout_charge_amount": 1700, "compare_at_price": 2000, "per_delivery_price": 1700, "price": 1700, "selling_plan": {"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 1700, "compare_at_price": 2000, "per_delivery_price": 1700, "price": 1700, "selling_plan": {"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 1700, "compare_at_price": 2000, "per_delivery_price": 1700, "price": 1700, "selling_plan": {"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" }], "metafields": { "smart":{} } },{ "available": true, "featured_media": null, "option1": "12-Pack", "option2": null, "option3": null, "options": ["12-Pack"], "price": 6000, "compare_at_price": null, "id": 44405758623921, "sku": "405312", "title": "12-Pack", "inventory_quantity": 1534, "inventory_policy": "deny", "inventory_management": "shopify", "selling_plan_allocations": [{ "checkout_charge_amount": 5100, "compare_at_price": 6000, "per_delivery_price": 5100, "price": 5100, "selling_plan": {"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 5100, "compare_at_price": 6000, "per_delivery_price": 5100, "price": 5100, "selling_plan": {"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 5100, "compare_at_price": 6000, "per_delivery_price": 5100, "price": 5100, "selling_plan": {"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" }], "metafields": { "smart":{ "default_variant":true ,"highlight":"Most Popular"} } },{ "available": true, "featured_media": null, "option1": "24-Pack", "option2": null, "option3": null, "options": ["24-Pack"], "price": 12000, "compare_at_price": null, "id": 44405758656689, "sku": "405324", "title": "24-Pack", "inventory_quantity": 769, "inventory_policy": "deny", "inventory_management": "shopify", "selling_plan_allocations": [{ "checkout_charge_amount": 10200, "compare_at_price": 12000, "per_delivery_price": 10200, "price": 10200, "selling_plan": {"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 10200, "compare_at_price": 12000, "per_delivery_price": 10200, "price": 10200, "selling_plan": {"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 10200, "compare_at_price": 12000, "per_delivery_price": 10200, "price": 10200, "selling_plan": {"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" }], "metafields": { "smart":{} } }] }], "metafields": { "smart":{ "color":"#48cf45" ,"default_variant":{"id":44405758918833,"title":"12-Pack","option1":"12-Pack","option2":null,"option3":null,"sku":"858612","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Lime Wild Mint - 12-Pack","public_title":"12-Pack","options":["12-Pack"],"price":6600,"weight":3402,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":5610}],"price":5610,"compare_at_price":6600,"per_delivery_price":5610,"selling_plan_id":1791131825,"selling_plan_group_id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755"},{"price_adjustments":[{"position":1,"price":5610}],"price":5610,"compare_at_price":6600,"per_delivery_price":5610,"selling_plan_id":1791164593,"selling_plan_group_id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755"},{"price_adjustments":[{"position":1,"price":5610}],"price":5610,"compare_at_price":6600,"per_delivery_price":5610,"selling_plan_id":1791197361,"selling_plan_group_id":"9b56cb92a8d4a20a2702e79f4b81b7b266ec7755"}]} ,"effect":"TO SOCIALIZE" ,"features":[ {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Icon_THC_5_355d9b99-c716-4bfe-8a94-fcde5b14368e.svg?v=1725479697","text":"5MG THC"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Icon_cal_25_4846206a-a055-4b2c-a7c7-4cba73ee57d8.svg?v=1725479750","text":"25 Calories"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_28.svg?v=1720608456","text":"Real Organic"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Happi_Icon_100_vegan_054cd80d-2633-45dc-a000-febddc117350.svg?v=1725479296","text":"100% Vegan"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_29.svg?v=1720608455","text":"Zero Alcohol"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_31.svg?v=1720608456","text":"Feel Happi"}, {"image":"\/\/happihourdrink.com\/cdn\/shop\/files\/Group_33.svg?v=1720608455","text":" Lab Tested"}] ,"flavor_profile":"Citrus" ,"gallery_badge_1":{ "alt": "", "aspect_ratio": 1.0, "height": 1484, "id": 29370315342001, "media_type": "image", "preview_image": "\/\/happihourdrink.com\/cdn\/shop\/files\/HSA23-SILVER-1484x1484px.png?v=1729516254", "src": "//happihourdrink.com/cdn/shop/files/HSA23-SILVER-1484x1484px.png?v=1729516254", "variants": null, "width": 1484, "focal_point": "50.0% 50.0%" } ,"ingredients": "\u003cp\u003eCarbonated Water\u003c\/p\u003e\u003cp\u003eOrganic Agave Nectar\u003c\/p\u003e\u003cp\u003eOrganic Lime Juice (From Concentrate)\u003c\/p\u003e\u003cp\u003eOrganic Pomegranate Juice (From Concentrate)\u003c\/p\u003e\u003cp\u003eNatural Flavors\u003c\/p\u003e\u003cp\u003eHemp Extract\u003c\/p\u003e\u003cp\u003ePotassium Sorbate (Preservative)\u003c\/p\u003e\u003cp\u003eAscorbic Acid (Vitamin C)\u003c\/p\u003e" ,"product_description": "\u003cp\u003eFresh and vibrant, Lime Wild Mint pairs refreshingly tangy lime with sparkling mint flavors. It’s made for good laughs with great company.\u003c\/p\u003e" ,"strength":"5mg" ,"tag":"BEST-SELLER"} }, "selected_or_first_available_variant_id": 44405758886065, "selected_variant_id": null, "reviews": { "rating": 4.8, "review_count": 94 }, "variants": [{ "available": true, "featured_media": null, "option1": "4-Pack", "option2": null, "option3": null, "options": ["4-Pack"], "price": 2200, "compare_at_price": null, "id": 44405758886065, "sku": "85864", "title": "4-Pack", "inventory_quantity": 2907, "inventory_policy": "deny", "inventory_management": "shopify", "selling_plan_allocations": [{ "checkout_charge_amount": 1870, "compare_at_price": 2200, "per_delivery_price": 1870, "price": 1870, "selling_plan": {"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 1870, "compare_at_price": 2200, "per_delivery_price": 1870, "price": 1870, "selling_plan": {"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 1870, "compare_at_price": 2200, "per_delivery_price": 1870, "price": 1870, "selling_plan": {"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" }], "metafields": { "smart":{} } },{ "available": true, "featured_media": null, "option1": "12-Pack", "option2": null, "option3": null, "options": ["12-Pack"], "price": 6600, "compare_at_price": null, "id": 44405758918833, "sku": "858612", "title": "12-Pack", "inventory_quantity": 965, "inventory_policy": "deny", "inventory_management": "shopify", "selling_plan_allocations": [{ "checkout_charge_amount": 5610, "compare_at_price": 6600, "per_delivery_price": 5610, "price": 5610, "selling_plan": {"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 5610, "compare_at_price": 6600, "per_delivery_price": 5610, "price": 5610, "selling_plan": {"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 5610, "compare_at_price": 6600, "per_delivery_price": 5610, "price": 5610, "selling_plan": {"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" }], "metafields": { "smart":{ "default_variant":true ,"highlight":"Most Popular"} } },{ "available": true, "featured_media": null, "option1": "24-Pack", "option2": null, "option3": null, "options": ["24-Pack"], "price": 13200, "compare_at_price": null, "id": 44405758951601, "sku": "858624", "title": "24-Pack", "inventory_quantity": 490, "inventory_policy": "deny", "inventory_management": "shopify", "selling_plan_allocations": [{ "checkout_charge_amount": 11220, "compare_at_price": 13200, "per_delivery_price": 11220, "price": 11220, "selling_plan": {"id":1791131825,"name":"Delivered every 2 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"2 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 11220, "compare_at_price": 13200, "per_delivery_price": 11220, "price": 11220, "selling_plan": {"id":1791164593,"name":"Delivered every 4 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"4 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" },{ "checkout_charge_amount": 11220, "compare_at_price": 13200, "per_delivery_price": 11220, "price": 11220, "selling_plan": {"id":1791197361,"name":"Delivered every 8 weeks","description":null,"options":[{"name":"Subscribe and Save ","position":1,"value":"8 weeks"}],"recurring_deliveries":true,"price_adjustments":[{"order_count":null,"position":1,"value_type":"percentage","value":15}],"checkout_charge":{"value_type":"percentage","value":100}}, "selling_plan_group_id": "9b56cb92a8d4a20a2702e79f4b81b7b266ec7755" }], "metafields": { "smart":{} } }] }
]
" x-effect="()=> { if ($cart.state.item_count && open) _cart.renderUpsellProducts($el, `ai`, `complementary`, `manual`, `product-card-flat-w-button-cart`, +`3`)}">
</main>
</section>
</div>
<style>
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_sticky_footer_87XHgG"] {
;
padding-top: 24px;
padding-bottom: 24px;
padding-left: 24px;
padding-right: 24px;
}
@media screen and (min-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_sticky_footer_87XHgG"] {
;
padding-top: 24px;
padding-bottom: 24px;
padding-left: 24px;
padding-right: 24px;
}
}
@container (max-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_sticky_footer_87XHgG"] {
;
padding-top: 24px;
padding-bottom: 24px;
padding-left: 24px;
padding-right: 24px;
}
}
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_sticky_footer_87XHgG"]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<div data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--layout_sticky_footer_87XHgG" x-show="_cart.showConditionally(`items_added`) || $editor?.select_block_id === `layout_sticky_footer_87XHgG`" x-effect="() => {
const show = _cart.showConditionally(`items_added`)
if (open) {
$nextTick(() => {
$el.parentElement.style.paddingBottom = (show ? $el.offsetHeight : 0) + 12 + 'px'
})
}
}" class="absolute bottom-0 inset-x-0 shadow-invert flex flex-wrap color_scheme_1 border-t border-t-theme-border" style="display: none;">
<style>
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--checkout_button_RWp68J"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
padding-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
}
@media screen and (min-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--checkout_button_RWp68J"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
padding-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
}
}
@container (max-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--checkout_button_RWp68J"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
padding-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
}
}
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--checkout_button_RWp68J"]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<div class="border-y-none" x-data="{ checkingOut: false }" x-show="_cart.showConditionally(`items_added`) || $editor?.select_block_id === `checkout_button_RWp68J`"
data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--checkout_button_RWp68J" style="display: none;">
<button type="submit" name="checkout" value="Checkout" @click="checkingOut = true; await utils.delay(5000); checkingOut = false" class="button-secondary w-full"
x-effect="()=> { $el.toggleAttribute('disabled', $cart.loading || $cart.debounce_updates?.length) }" :class="$cart.loading || $cart.debounce_updates?.length || checkingOut ? 'button-loading pointer-events-none': '' "
:disabled="$cart.loading || $cart.debounce_updates?.length"
data-content="
<svg data-icon-handle="lock" class="bg-current shrink-0 inline-flex items-center justify-center align-middle" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-lock--url`) }" :class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="lock" x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-lock); -webkit-mask: var(--icon-lock); aspect-ratio: var(--icon-lock-aspect-ratio, 1); height: 1.25em; color:currentColor;"></svg> Checkout"
x-html="_cart.renderDynamicTextWithFormattedPrice($el.getAttribute('data-content'))">
<svg data-icon-handle="lock" class="bg-current shrink-0 inline-flex items-center justify-center align-middle" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-lock--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="lock"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }"
style="mask: var(--icon-lock); -webkit-mask: var(--icon-lock); aspect-ratio: var(--icon-lock-aspect-ratio, 1); height: 1.25em; color:currentColor;" role=""></svg> Checkout</button>
</div>
<style>
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--cart_note_ggMazM"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: unset;
order: unset;
text-align: inherit;
padding-top: 24px;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
}
@media screen and (min-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--cart_note_ggMazM"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: unset;
order: unset;
text-align: inherit;
padding-top: 24px;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
}
}
@container (max-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--cart_note_ggMazM"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: unset;
order: unset;
text-align: inherit;
padding-top: 24px;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
}
}
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--cart_note_ggMazM"]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<div class="border-y-none flex flex-col gap-4" x-data="{ checkbox_checked: $el.querySelector(`input[type='checkbox']`)?.checked ?? false }" x-show="_cart.showConditionally(`always`) || $editor?.select_block_id === `cart_note_ggMazM`"
data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--cart_note_ggMazM">
<label class="input-checkbox">
<span class="relative shrink-0">
<input type="checkbox" name="attributes[Cart-note]" value="" @change="value = $el.checked; checkbox_checked = value" aria-label="This is a gift">
<span class="absolute inset-0 flex items-center justify-center">
<svg class=""></svg>
</span>
</span>
<span>This is a gift</span>
</label>
<div x-show="checkbox_checked" style="display: none;">
<label class="relative input-textarea" x-data="{ active: !!$el.children[0].value && !!$el.children[1]?.textContent, label: $el }" :class="active ? 'active' : ''">
<textarea name="note" aria-label="Cart note" placeholder="Write you gift note here" class="relative w-full bg-transparent" @input="active = !!$el.value && !!label.children[1]?.textContent; value = $el.value; "></textarea>
<span class="absolute opacity-0">Cart note</span>
</label>
</div>
</div>
<style>
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_jYCqxG"] {
;
max-width: fit-content;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: auto;
order: unset;
text-align: inherit;
margin-top: 24px;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
@media screen and (min-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_jYCqxG"] {
;
max-width: fit-content;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: auto;
order: unset;
text-align: inherit;
margin-top: 24px;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
}
@container (max-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_jYCqxG"] {
;
max-width: fit-content;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: auto;
order: unset;
text-align: inherit;
margin-top: 24px;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
}
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_jYCqxG"]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<div data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_jYCqxG" style="display: none;" x-show="_cart.showConditionally(`items_added`) || $editor?.select_block_id === `dynamic_richtext_jYCqxG`" data-content="
<div class="_input-richtext richtext-md"><h4><strong>Subtotal</strong></h4></div>
" x-html="_cart.renderDynamicTextWithFormattedPrice($el.getAttribute('data-content'))">
<div class="_input-richtext richtext-md">
<h4><strong>Subtotal</strong></h4>
</div>
</div>
<style>
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_YFDjt7"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: 1;
order: unset;
text-align: right;
margin-top: 24px;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
@media screen and (min-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_YFDjt7"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: 1;
order: unset;
text-align: right;
margin-top: 24px;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
}
@container (max-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_YFDjt7"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: 1;
order: unset;
text-align: right;
margin-top: 24px;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
}
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_YFDjt7"]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<div data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_YFDjt7" style="display: none;" x-show="_cart.showConditionally(`items_added`) || $editor?.select_block_id === `dynamic_richtext_YFDjt7`" data-content="
<div class="_input-richtext richtext-md igSubtotal"><h4><strong>[cart.total_price]</strong></h4></div>
" x-html="_cart.renderDynamicTextWithFormattedPrice($el.getAttribute('data-content'))">
<div class="_input-richtext richtext-md igSubtotal">
<h4><strong>$0.00</strong></h4>
</div>
</div>
<style>
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_Wr7cX6"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
margin-top: 12px;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
@media screen and (min-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_Wr7cX6"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
margin-top: 12px;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
}
@container (max-width: 768px) {
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_Wr7cX6"] {
;
max-width: 100%;
width: 100%;
grid-column: span min(1, var(--grid-cols, 1));
grid-row: span 1;
flex: initial;
order: unset;
text-align: inherit;
margin-top: 12px;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
}
[data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_Wr7cX6"]:where(:hover, :focus-visible, :active, .active):not(.button-loading) {
;
}
</style>
<div data-style-id="sections--17726909415601__modal_cart_drawer_YqiUXh--dynamic_richtext_Wr7cX6" style="display: none;" x-show="_cart.showConditionally(`items_added`) || $editor?.select_block_id === `dynamic_richtext_Wr7cX6`" data-content="
<div class="_input-richtext richtext-md"><h6>Shipping and taxes calculated at checkout.</h6></div>
" x-html="_cart.renderDynamicTextWithFormattedPrice($el.getAttribute('data-content'))">
<div class="_input-richtext richtext-md">
<h6>Shipping and taxes calculated at checkout.</h6>
</div>
</div>
</div>
</form>
/search
<form class="flex items-stretch gap-4" action="/search">
<label class="relative flex w-full input-text-inline-dark" x-data="{ active: !!$refs.input.value && !!$refs.label?.textContent.trim(), label: $el, type: `search` }"
:class="active && false ? 'button-loading active' : active ? 'active' : false ? 'button-loading active' : ''">
<div class="relative flex w-full flex-1">
<input name="q" x-ref="input" type="search" placeholder="Search" data-placeholder="Search" :placeholder="active ? '': $el.getAttribute('data-placeholder')" autocorrect="off" aria-label="Search" :type="type" autocomplete="off" :disabled="false"
value="" :value="$store.search.query" @input.prevent="active = !!$el.value && !!$refs.label?.textContent.trim(); value = $el.value; $store.search.query = value"
@focus="active = !!$refs.input.value && !!$refs.label?.textContent.trim()" @blur="active = !!$refs.input.value && !!$refs.label?.textContent.trim()" class="appearance-none flex-1 bg-transparent !outline-none">
<span class="absolute opacity-0" x-ref="label"></span>
</div>
<button type="submit" aria-label="Submit form" class=" !outline-none hf:opacity-70 rounded-sm hf:bg-inherit hf:bg-opacity-10 flex items-center">
</button>
<button type="submit" disabled="disabled" aria-label="Submit form" class="px-2 -order-1 !outline-none hf:opacity-70 rounded-sm hf:bg-inherit hf:bg-opacity-10 flex items-center">
<svg data-icon-handle="search" class="bg-current shrink-0 inline-flex items-center justify-center align-middle" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-search--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="search"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }"
style="mask: var(--icon-search); -webkit-mask: var(--icon-search); aspect-ratio: var(--icon-search-aspect-ratio, 1); height: 1.25em; color:currentColor;" role=""></svg>
</button>
</label>
</form>
POST /cart/add
<form data-x-if="" data-style-section-container="" method="post" action="/cart/add" class="flex h-full" @submit.prevent.stop="() => {}" style="flex-flow: ; max-height: calc(var(--max-h) - var(--pt) - var(--pb));">
<input type="hidden" name="id" :value="card?.selected_variant?.id">
<input type="hidden" name="quantity" value="1">
<div data-style-id="sections--17726909284529__card_product_card_JAPLGU--layout_flex_wrap_CkfkVN" class="relative">
<figure data-style-id="sections--17726909284529__card_product_card_JAPLGU--image_DJz4n3" class="overflow-hidden shrink-0" x-show="primary_image || secondary_image"
x-data="{ primary_image: card?.product?.media?.[0], secondary_image: card?.product?.media?.[1] }">
<div data-style-skeleton="" class="relative isolate" x-show="!card?.hydrated">
<div class="h-full w-full animate-pulse rounded-md bg-gray-200/70">
</div>
</div>
<picture x-show="card?.hydrated" class="relative isolate block overflow-hidden group bg-inherit w-dynamic h-dynamic aspect-dynamic" data-style-image-container=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')" x-effect="() => {
if (`product_image` === 'variant_image' && card?.selected_variant?.featured_media) {
primary_image = card?.selected_variant?.featured_media;
}
if (`product_image` === 'metafield_image') {
primary_image = $data.getDynamicValue('[selected_variant.metafields.smart.image]') ?? primary_image
}
secondary_image = card?.product?.media?.find(media => media.id !== primary_image?.id)
}">
<img src="" x-show="!!primary_image" alt="" srcset="" :src="primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image" :alt="primary_image?.alt ?? card?.product?.title"
:srcset="primary_image ? utils.getImageSrcSet(primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image ?? '', 800) : ''" width="732" height="732" loading="lazy" onload="this.classList.remove('!opacity-0')"
class="pointer-events-none relative h-full w-full select-none overflow-hidden object-dynamic !opacity-0" sizes="(max-width: 768px) 50vw, (max-width: 1024px) 33vw, 25vw">
</picture>
</figure>
<div data-style-id="sections--17726909284529__card_product_card_JAPLGU--layout_child_overlay_FYWqjU" class="absolute inset-0 pointer-events-none [&>*]:pointer-events-auto flex flex-col "
style="align-items: var(--align-items); justify-content: var(--justify-content);">
<div data-style-container="">
<div x-show="$data.showConditionally('always')" data-style-id="sections--17726909284529__card_product_card_JAPLGU--labels_rjJREV">
<div data-style-container="">
<template x-for="value in getContentLabels($el.getAttribute('data-labels-key'))" data-labels-key="product.metafields.description.featured">
<div data-loop-item="" class="label-primary" x-html="value"></div>
</template>
<div x-cloak="" x-show="getDiscountLabel($el.getAttribute('data-label-type'))" class="label-primary" data-label-type="percentage" x-html="getDiscountLabel($el.getAttribute('data-label-type'))">
</div>
<div class="label-primary" x-cloak="" x-show="!card?.product?.available"> Sold out </div>
</div>
</div>
</div>
</div>
</div>
<div data-style-id="sections--17726909284529__card_product_card_JAPLGU--layout_flex_wrap_ttdBqe" class="relative">
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-20 uppercase"><p>[product.metafields.smart.effect]</p></div>
" data-content-check="[product.metafields.smart.effect]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_JAPLGU--dynamic_text_EmaWRH" x-show="!!content_check.trim()" x-cloak=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')"
style="color: ">
<div x-html="content"></div>
</div>
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-24/20"><p><strong>[product.title]</strong></p></div>
" data-content-check="[product.title]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_JAPLGU--dynamic_text_pa3Yqt" x-show="!!content_check.trim()" x-cloak=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')"
style="color: ">
<div x-html="content"></div>
</div>
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-15/12 uppercase"><p>[product.metafields.smart.flavor]</p></div>
" data-content-check="[product.metafields.smart.flavor]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_JAPLGU--dynamic_text_EWxJaD" x-show="!!content_check.trim()" x-cloak=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')"
style="color: ">
<div x-html="content"></div>
</div>
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-13/11 uppercase"><p>Starting at [product.price]</p></div>
" data-content-check="Starting at [product.price]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_JAPLGU--dynamic_text_RYXWDd" x-show="!!content_check.trim()" x-cloak="" style="color: ">
<div x-html="content"></div>
</div>
<div data-style-id="sections--17726909284529__card_product_card_JAPLGU--rating_qjChEq" x-show="$data.showConditionally('always') && (card?.product?.reviews?.review_count > +`9` || !'9')">
<div class="flex items-center gap-2" style="">
<div class="relative" style="--gap: 2px; --gap-md: 2px; --h: 14px; --h-md: 16px;">
<div class="flex gap-dynamic text-[--color-review-stars-base]">
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
</div>
<div class="absolute left-0 top-0 flex gap-dynamic text-[--color-review-stars]" style="clip-path: polygon(0 0,0% 0, 0% 100%, 0 100%)"
:style="`clip-path: polygon(0 0, ${((card?.product?.reviews?.rating ?? 0) / 5) * 100}% 0, ${((card?.product?.reviews?.rating ?? 0) / 5) * 100}% 100%, 0 100%);`">
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
</div>
</div>
<span class="richtext-md h6" x-cloak="" x-show="!!card?.product?.reviews" data-content="
([count])" x-html="$el.getAttribute('data-content').replace('[count]', card?.product?.reviews?.review_count).replace('[rating]',card?.product?.reviews?.rating || 'No rating')">
</span>
</div>
</div>
</div>
<div data-style-id="sections--17726909284529__card_product_card_JAPLGU--layout_flex_YqkWeh" class="relative">
<div data-style-id="sections--17726909284529__card_product_card_JAPLGU--quick_view_button_k7pgE9" x-show="$data.showConditionally('always')">
<button type="button" @click.prevent.stop="$quickView.renderQuickView(card?.product_handle, $data, $refs?.bundle_button, card?.selected_variant?.id)" class="w-full button-primary-outline" :class="card?.isAdding ? 'button-loading':''" x-html="$el.getAttribute('data-content')
.replace('[price|no-decimals]', utils.formatMoney(card?.selected_variant?.price, window?.money_format?.replace(/\{(\s*)amount(\s*)}/gi, '{$1amount_no_decimals$2}')))
.replace('[price]', utils.formatMoney(card?.selected_variant?.price))
.replace('[compare_at_price|no-decimals]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price, window?.money_format?.replace(/\{(\s*)amount(\s*)}/gi, '{$1amount_no_decimals$2}'))}</span>`)
.replace('[compare_at_price]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price)}</span>`) ?? ''" data-content="
Quick Shop">
</button>
</div>
</div>
</form>
POST /cart/add
<form data-x-if="" data-style-section-container="" method="post" action="/cart/add" class="flex h-full" @submit.prevent.stop="() => {}" style="flex-flow: ; max-height: calc(var(--max-h) - var(--pt) - var(--pb));"><input type="hidden"
id="_igTestGroups" class="_igTestGroups" name="properties[_igTestGroups]" value="4f2e8663c9e8"><input type="hidden" id="_igTestGroup" class="_igTestGroup" name="properties[_igTestGroup]" value="0299aeba-252d-4584-a9ca-4f2e8663c9e8">
<input type="hidden" name="id" :value="card?.selected_variant?.id" value="44405758820529">
<input type="hidden" name="quantity" value="1">
<div data-style-id="sections--17726909284529__card_product_card_JAPLGU--layout_flex_wrap_CkfkVN" class="relative">
<figure data-style-id="sections--17726909284529__card_product_card_JAPLGU--image_DJz4n3" class="overflow-hidden shrink-0" x-show="primary_image || secondary_image"
x-data="{ primary_image: card?.product?.media?.[0], secondary_image: card?.product?.media?.[1] }">
<div data-style-skeleton="" class="relative isolate" x-show="!card?.hydrated" style="display: none;">
<div class="h-full w-full animate-pulse rounded-md bg-gray-200/70">
</div>
</div>
<picture x-show="card?.hydrated" class="relative isolate block overflow-hidden group bg-inherit w-dynamic h-dynamic aspect-dynamic" data-style-image-container=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')" x-effect="() => {
if (`product_image` === 'variant_image' && card?.selected_variant?.featured_media) {
primary_image = card?.selected_variant?.featured_media;
}
if (`product_image` === 'metafield_image') {
primary_image = $data.getDynamicValue('[selected_variant.metafields.smart.image]') ?? primary_image
}
secondary_image = card?.product?.media?.find(media => media.id !== primary_image?.id)
}" title="/products/glow-in-blood-orange-ginger?variant=44405758820529">
<img src="//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704" x-show="!!primary_image" alt="Glow"
srcset="//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=48 48w,//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=96 96w,//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=256 256w,//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=384 384w,//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=460 460w,//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=640 640w,//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=1200 1200w"
:src="primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image" :alt="primary_image?.alt ?? card?.product?.title"
:srcset="primary_image ? utils.getImageSrcSet(primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image ?? '', 800) : ''" width="732" height="732" loading="lazy" onload="this.classList.remove('!opacity-0')"
class="pointer-events-none relative h-full w-full select-none overflow-hidden object-dynamic !opacity-0" sizes="(max-width: 768px) 50vw, (max-width: 1024px) 33vw, 25vw">
</picture>
</figure>
<div data-style-id="sections--17726909284529__card_product_card_JAPLGU--layout_child_overlay_FYWqjU" class="absolute inset-0 pointer-events-none [&>*]:pointer-events-auto flex flex-col "
style="align-items: var(--align-items); justify-content: var(--justify-content);">
<div data-style-container="">
<div x-show="$data.showConditionally('always')" data-style-id="sections--17726909284529__card_product_card_JAPLGU--labels_rjJREV">
<div data-style-container="">
<template x-for="value in getContentLabels($el.getAttribute('data-labels-key'))" data-labels-key="product.metafields.description.featured">
<div data-loop-item="" class="label-primary" x-html="value"></div>
</template>
<div x-show="getDiscountLabel($el.getAttribute('data-label-type'))" class="label-primary" data-label-type="percentage" x-html="getDiscountLabel($el.getAttribute('data-label-type'))" style="display: none;"></div>
<div class="label-primary" x-show="!card?.product?.available" style="display: none;"> Sold out </div>
</div>
</div>
</div>
</div>
</div>
<div data-style-id="sections--17726909284529__card_product_card_JAPLGU--layout_flex_wrap_ttdBqe" class="relative">
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-20 uppercase"><p>[product.metafields.smart.effect]</p></div>
" data-content-check="[product.metafields.smart.effect]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_JAPLGU--dynamic_text_EmaWRH" x-show="!!content_check.trim()"
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')"
style="color: " title="/products/glow-in-blood-orange-ginger?variant=44405758820529">
<div x-html="content">
<div class="_input-richtext text-20 uppercase">
<p>TO RELAX</p>
</div>
</div>
</div>
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-24/20"><p><strong>[product.title]</strong></p></div>
" data-content-check="[product.title]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_JAPLGU--dynamic_text_pa3Yqt" x-show="!!content_check.trim()"
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')"
style="color: " title="/products/glow-in-blood-orange-ginger?variant=44405758820529">
<div x-html="content">
<div class="_input-richtext text-24/20">
<p><strong>Glow</strong></p>
</div>
</div>
</div>
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-15/12 uppercase"><p>[product.metafields.smart.flavor]</p></div>
" data-content-check="[product.metafields.smart.flavor]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_JAPLGU--dynamic_text_EWxJaD" x-show="!!content_check.trim()"
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')"
style="color: " title="/products/glow-in-blood-orange-ginger?variant=44405758820529">
<div x-html="content">
<div class="_input-richtext text-15/12 uppercase">
<p>BLOOD ORANGE GINGER</p>
</div>
</div>
</div>
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-13/11 uppercase"><p>Starting at [product.price]</p></div>
" data-content-check="Starting at [product.price]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_JAPLGU--dynamic_text_RYXWDd" x-show="!!content_check.trim()" style="color: ">
<div x-html="content">
<div class="_input-richtext text-13/11 uppercase">
<p>Starting at $24.00</p>
</div>
</div>
</div>
<div data-style-id="sections--17726909284529__card_product_card_JAPLGU--rating_qjChEq" x-show="$data.showConditionally('always') && (card?.product?.reviews?.review_count > +`9` || !'9')">
<div class="flex items-center gap-2" style="">
<div class="relative" style="--gap: 2px; --gap-md: 2px; --h: 14px; --h-md: 16px;">
<div class="flex gap-dynamic text-[--color-review-stars-base]">
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
</div>
<div class="absolute left-0 top-0 flex gap-dynamic text-[--color-review-stars]" style="clip-path: polygon(0 0, 98.00000000000001% 0, 98.00000000000001% 100%, 0 100%);"
:style="`clip-path: polygon(0 0, ${((card?.product?.reviews?.rating ?? 0) / 5) * 100}% 0, ${((card?.product?.reviews?.rating ?? 0) / 5) * 100}% 100%, 0 100%);`">
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
</div>
</div>
<span class="richtext-md h6" x-show="!!card?.product?.reviews" data-content="
([count])" x-html="$el.getAttribute('data-content').replace('[count]', card?.product?.reviews?.review_count).replace('[rating]',card?.product?.reviews?.rating || 'No rating')"> (146)</span>
</div>
</div>
</div>
<div data-style-id="sections--17726909284529__card_product_card_JAPLGU--layout_flex_YqkWeh" class="relative">
<div data-style-id="sections--17726909284529__card_product_card_JAPLGU--quick_view_button_k7pgE9" x-show="$data.showConditionally('always')">
<button type="button" @click.prevent.stop="$quickView.renderQuickView(card?.product_handle, $data, $refs?.bundle_button, card?.selected_variant?.id)" class="w-full button-primary-outline" :class="card?.isAdding ? 'button-loading':''" x-html="$el.getAttribute('data-content')
.replace('[price|no-decimals]', utils.formatMoney(card?.selected_variant?.price, window?.money_format?.replace(/\{(\s*)amount(\s*)}/gi, '{$1amount_no_decimals$2}')))
.replace('[price]', utils.formatMoney(card?.selected_variant?.price))
.replace('[compare_at_price|no-decimals]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price, window?.money_format?.replace(/\{(\s*)amount(\s*)}/gi, '{$1amount_no_decimals$2}'))}</span>`)
.replace('[compare_at_price]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price)}</span>`) ?? ''" data-content="
Quick Shop"> Quick Shop</button>
</div>
</div>
</form>
POST /cart/add
<form data-x-if="" data-style-section-container="" method="post" action="/cart/add" class="flex h-full" @submit.prevent.stop="() => {}" style="flex-flow: ; max-height: calc(var(--max-h) - var(--pt) - var(--pb));">
<input type="hidden" name="id" :value="card?.selected_variant?.id">
<input type="hidden" name="quantity" value="1">
<div data-style-id="sections--17726909284529__card_product_card_zKmMwx--layout_flex_wrap_NBqnVd" class="relative">
<figure data-style-id="sections--17726909284529__card_product_card_zKmMwx--image_HEeAzg" class="overflow-hidden shrink-0" x-show="primary_image || secondary_image"
x-data="{ primary_image: card?.product?.media?.[0], secondary_image: card?.product?.media?.[1] }">
<div data-style-skeleton="" class="relative isolate" x-show="!card?.hydrated">
<div class="h-full w-full animate-pulse rounded-md bg-gray-200/70">
</div>
</div>
<picture x-show="card?.hydrated" class="relative isolate block overflow-hidden group bg-inherit w-dynamic h-dynamic aspect-dynamic" data-style-image-container=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')" x-effect="() => {
if (`product_image` === 'variant_image' && card?.selected_variant?.featured_media) {
primary_image = card?.selected_variant?.featured_media;
}
if (`product_image` === 'metafield_image') {
primary_image = $data.getDynamicValue('[selected_variant.metafields.smart.image]') ?? primary_image
}
secondary_image = card?.product?.media?.find(media => media.id !== primary_image?.id)
}">
<img src="" x-show="!!primary_image" alt="" srcset="" :src="primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image" :alt="primary_image?.alt ?? card?.product?.title"
:srcset="primary_image ? utils.getImageSrcSet(primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image ?? '', 800) : ''" width="732" height="732" loading="lazy" onload="this.classList.remove('!opacity-0')"
class="pointer-events-none relative h-full w-full select-none overflow-hidden object-dynamic !opacity-0" sizes="(max-width: 768px) 50vw, (max-width: 1024px) 33vw, 25vw">
</picture>
</figure>
</div>
<div data-style-id="sections--17726909284529__card_product_card_zKmMwx--layout_flex_wrap_igBGn6" class="relative">
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-14"><p>[product.title]</p></div>
" data-content-check="[product.title]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_zKmMwx--dynamic_text_Yrgb3c" x-show="!!content_check.trim()" x-cloak=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')"
style="color: ">
<div x-html="content"></div>
</div>
</div>
</form>
POST /cart/add
<form data-x-if="" data-style-section-container="" method="post" action="/cart/add" class="flex h-full" @submit.prevent.stop="() => {}" style="flex-flow: ; max-height: calc(var(--max-h) - var(--pt) - var(--pb));"><input type="hidden"
id="_igTestGroups" class="_igTestGroups" name="properties[_igTestGroups]" value="4f2e8663c9e8"><input type="hidden" id="_igTestGroup" class="_igTestGroup" name="properties[_igTestGroup]" value="0299aeba-252d-4584-a9ca-4f2e8663c9e8">
<input type="hidden" name="id" :value="card?.selected_variant?.id" value="44405758820529">
<input type="hidden" name="quantity" value="1">
<div data-style-id="sections--17726909284529__card_product_card_zKmMwx--layout_flex_wrap_NBqnVd" class="relative">
<figure data-style-id="sections--17726909284529__card_product_card_zKmMwx--image_HEeAzg" class="overflow-hidden shrink-0" x-show="primary_image || secondary_image"
x-data="{ primary_image: card?.product?.media?.[0], secondary_image: card?.product?.media?.[1] }">
<div data-style-skeleton="" class="relative isolate" x-show="!card?.hydrated" style="display: none;">
<div class="h-full w-full animate-pulse rounded-md bg-gray-200/70">
</div>
</div>
<picture x-show="card?.hydrated" class="relative isolate block overflow-hidden group bg-inherit w-dynamic h-dynamic aspect-dynamic" data-style-image-container=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')" x-effect="() => {
if (`product_image` === 'variant_image' && card?.selected_variant?.featured_media) {
primary_image = card?.selected_variant?.featured_media;
}
if (`product_image` === 'metafield_image') {
primary_image = $data.getDynamicValue('[selected_variant.metafields.smart.image]') ?? primary_image
}
secondary_image = card?.product?.media?.find(media => media.id !== primary_image?.id)
}" title="/products/glow-in-blood-orange-ginger?variant=44405758820529">
<img src="//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704" x-show="!!primary_image" alt="Glow"
srcset="//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=48 48w,//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=96 96w,//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=256 256w,//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=384 384w,//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=460 460w,//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=640 640w,//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=1200 1200w"
:src="primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image" :alt="primary_image?.alt ?? card?.product?.title"
:srcset="primary_image ? utils.getImageSrcSet(primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image ?? '', 800) : ''" width="732" height="732" loading="lazy" onload="this.classList.remove('!opacity-0')"
class="pointer-events-none relative h-full w-full select-none overflow-hidden object-dynamic !opacity-0" sizes="(max-width: 768px) 50vw, (max-width: 1024px) 33vw, 25vw">
</picture>
</figure>
</div>
<div data-style-id="sections--17726909284529__card_product_card_zKmMwx--layout_flex_wrap_igBGn6" class="relative">
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-14"><p>[product.title]</p></div>
" data-content-check="[product.title]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_zKmMwx--dynamic_text_Yrgb3c" x-show="!!content_check.trim()"
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')"
style="color: " title="/products/glow-in-blood-orange-ginger?variant=44405758820529">
<div x-html="content">
<div class="_input-richtext text-14">
<p>Glow</p>
</div>
</div>
</div>
</div>
</form>
POST /cart/add
<form data-x-if="" data-style-section-container="" method="post" action="/cart/add" class="flex h-full" @submit.prevent.stop="() => {}" style="flex-flow: ; max-height: calc(var(--max-h) - var(--pt) - var(--pb));">
<input type="hidden" name="id" :value="card?.selected_variant?.id">
<input type="hidden" name="quantity" value="1">
<div data-style-id="sections--17726909284529__card_product_card_DL3NAr--layout_flex_VKfFaK" class="relative">
<figure data-style-id="sections--17726909284529__card_product_card_DL3NAr--image_kn9GT3" class="overflow-hidden shrink-0" x-show="primary_image || secondary_image"
x-data="{ primary_image: card?.product?.media?.[0], secondary_image: card?.product?.media?.[1] }">
<div data-style-skeleton="" class="relative isolate" x-show="!card?.hydrated">
<div class="h-full w-full animate-pulse rounded-md bg-gray-200/70">
</div>
</div>
<picture x-show="card?.hydrated" class="relative isolate block overflow-hidden group bg-inherit w-dynamic h-dynamic aspect-dynamic" data-style-image-container=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')" x-effect="() => {
if (`variant_image` === 'variant_image' && card?.selected_variant?.featured_media) {
primary_image = card?.selected_variant?.featured_media;
}
if (`variant_image` === 'metafield_image') {
primary_image = $data.getDynamicValue('[selected_variant.metafields.smart.image]') ?? primary_image
}
secondary_image = card?.product?.media?.find(media => media.id !== primary_image?.id)
}">
<img src="" x-show="!!primary_image" alt="" srcset="" :src="primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image" :alt="primary_image?.alt ?? card?.product?.title"
:srcset="primary_image ? utils.getImageSrcSet(primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image ?? '', 800) : ''" width="732" height="732" loading="lazy" onload="this.classList.remove('!opacity-0')"
class="pointer-events-none relative h-full w-full select-none overflow-hidden object-dynamic !opacity-0" sizes="(max-width: 768px) 50vw, (max-width: 1024px) 33vw, 25vw">
</picture>
</figure>
<div data-style-id="sections--17726909284529__card_product_card_DL3NAr--layout_child_overlay_68CK7j" class="absolute inset-0 pointer-events-none [&>*]:pointer-events-auto flex flex-col "
style="align-items: var(--align-items); justify-content: var(--justify-content);">
<div data-style-container="">
<div x-show="$data.showConditionally('always')" data-style-id="sections--17726909284529__card_product_card_DL3NAr--labels_36WLyx">
<div data-style-container="">
<template x-for="value in getContentLabels($el.getAttribute('data-labels-key'))" data-labels-key="product.metafields.smart.tag">
<div data-loop-item="" class="label-primary" x-html="value"></div>
</template>
<div x-cloak="" x-show="getDiscountLabel($el.getAttribute('data-label-type'))" class="label-primary" data-label-type="percentage" x-html="getDiscountLabel($el.getAttribute('data-label-type'))">
</div>
<div class="label-primary" x-cloak="" x-show="!card?.product?.available"> Sold out </div>
</div>
</div>
</div>
</div>
</div>
<div data-style-id="sections--17726909284529__card_product_card_DL3NAr--layout_flex_dNyCX4" class="relative">
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-20 uppercase"><p>[product.metafields.smart.effect]</p></div>
" data-content-check="[product.metafields.smart.effect]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_DL3NAr--dynamic_text_pGLWR3" x-show="!!content_check.trim()" x-cloak="" style="color: ">
<div x-html="content"></div>
</div>
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-24/20"><p><strong>[product.title]</strong></p></div>
" data-content-check="[product.title]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_DL3NAr--dynamic_text_xzGGbd" x-show="!!content_check.trim()" x-cloak=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')"
style="color: ">
<div x-html="content"></div>
</div>
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-15/12 uppercase"><p>[product.metafields.smart.flavor]</p></div>
" data-content-check="[product.metafields.smart.flavor]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_DL3NAr--dynamic_text_bLWPAQ" x-show="!!content_check.trim()" x-cloak="" style="color: ">
<div x-html="content"></div>
</div>
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-13/11 uppercase"><p>Starting at [product.price]</p></div>
" data-content-check="Starting at [product.price]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_DL3NAr--dynamic_text_zhVKUV" x-show="!!content_check.trim()" x-cloak="" style="color: ">
<div x-html="content"></div>
</div>
<div data-style-id="sections--17726909284529__card_product_card_DL3NAr--rating_wFn6et" x-show="$data.showConditionally('always') && (card?.product?.reviews?.review_count > +`9` || !'9')">
<div class="flex items-center gap-2" style="">
<div class="relative" style="--gap: 2px; --gap-md: 2px; --h: 14px; --h-md: 16px;">
<div class="flex gap-dynamic text-[--color-review-stars-base]">
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
</div>
<div class="absolute left-0 top-0 flex gap-dynamic text-[--color-review-stars]" style="clip-path: polygon(0 0,0% 0, 0% 100%, 0 100%)"
:style="`clip-path: polygon(0 0, ${((card?.product?.reviews?.rating ?? 0) / 5) * 100}% 0, ${((card?.product?.reviews?.rating ?? 0) / 5) * 100}% 100%, 0 100%);`">
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
</div>
</div>
<span class="richtext-md h6" x-cloak="" x-show="!!card?.product?.reviews" data-content="
([count])" x-html="$el.getAttribute('data-content').replace('[count]', card?.product?.reviews?.review_count).replace('[rating]',card?.product?.reviews?.rating || 'No rating')">
</span>
</div>
</div>
</div>
<div data-style-id="sections--17726909284529__card_product_card_DL3NAr--layout_flex_exQMMC" class="relative">
<div data-style-id="sections--17726909284529__card_product_card_DL3NAr--quick_view_button_4EgGAe" x-show="$data.showConditionally('always')">
<button type="button" @click.prevent.stop="$quickView.renderQuickView(card?.product_handle, $data, $refs?.bundle_button, card?.selected_variant?.id)" class="w-full button-primary-outline" :class="card?.isAdding ? 'button-loading':''" x-html="$el.getAttribute('data-content')
.replace('[price|no-decimals]', utils.formatMoney(card?.selected_variant?.price, window?.money_format?.replace(/\{(\s*)amount(\s*)}/gi, '{$1amount_no_decimals$2}')))
.replace('[price]', utils.formatMoney(card?.selected_variant?.price))
.replace('[compare_at_price|no-decimals]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price, window?.money_format?.replace(/\{(\s*)amount(\s*)}/gi, '{$1amount_no_decimals$2}'))}</span>`)
.replace('[compare_at_price]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price)}</span>`) ?? ''" data-content="
Quick Shop">
</button>
</div>
</div>
</form>
POST /cart/add
<form data-x-if="" data-style-section-container="" method="post" action="/cart/add" class="flex h-full" @submit.prevent.stop="() => {}" style="flex-flow: ; max-height: calc(var(--max-h) - var(--pt) - var(--pb));"><input type="hidden"
id="_igTestGroups" class="_igTestGroups" name="properties[_igTestGroups]" value="4f2e8663c9e8"><input type="hidden" id="_igTestGroup" class="_igTestGroup" name="properties[_igTestGroup]" value="0299aeba-252d-4584-a9ca-4f2e8663c9e8">
<input type="hidden" name="id" :value="card?.selected_variant?.id" value="44405758820529">
<input type="hidden" name="quantity" value="1">
<div data-style-id="sections--17726909284529__card_product_card_DL3NAr--layout_flex_VKfFaK" class="relative">
<figure data-style-id="sections--17726909284529__card_product_card_DL3NAr--image_kn9GT3" class="overflow-hidden shrink-0" x-show="primary_image || secondary_image"
x-data="{ primary_image: card?.product?.media?.[0], secondary_image: card?.product?.media?.[1] }">
<div data-style-skeleton="" class="relative isolate" x-show="!card?.hydrated" style="display: none;">
<div class="h-full w-full animate-pulse rounded-md bg-gray-200/70">
</div>
</div>
<picture x-show="card?.hydrated" class="relative isolate block overflow-hidden group bg-inherit w-dynamic h-dynamic aspect-dynamic" data-style-image-container=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')" x-effect="() => {
if (`variant_image` === 'variant_image' && card?.selected_variant?.featured_media) {
primary_image = card?.selected_variant?.featured_media;
}
if (`variant_image` === 'metafield_image') {
primary_image = $data.getDynamicValue('[selected_variant.metafields.smart.image]') ?? primary_image
}
secondary_image = card?.product?.media?.find(media => media.id !== primary_image?.id)
}" title="/products/glow-in-blood-orange-ginger?variant=44405758820529">
<img src="//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704" x-show="!!primary_image" alt="Glow"
srcset="//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=48 48w,//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=96 96w,//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=256 256w,//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=384 384w,//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=460 460w,//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=640 640w,//happihourdrink.com/cdn/shop/files/Glow-PDP.png?v=1726156704&width=1200 1200w"
:src="primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image" :alt="primary_image?.alt ?? card?.product?.title"
:srcset="primary_image ? utils.getImageSrcSet(primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image ?? '', 800) : ''" width="732" height="732" loading="lazy" onload="this.classList.remove('!opacity-0')"
class="pointer-events-none relative h-full w-full select-none overflow-hidden object-dynamic !opacity-0" sizes="(max-width: 768px) 50vw, (max-width: 1024px) 33vw, 25vw">
</picture>
</figure>
<div data-style-id="sections--17726909284529__card_product_card_DL3NAr--layout_child_overlay_68CK7j" class="absolute inset-0 pointer-events-none [&>*]:pointer-events-auto flex flex-col "
style="align-items: var(--align-items); justify-content: var(--justify-content);">
<div data-style-container="">
<div x-show="$data.showConditionally('always')" data-style-id="sections--17726909284529__card_product_card_DL3NAr--labels_36WLyx">
<div data-style-container="">
<template x-for="value in getContentLabels($el.getAttribute('data-labels-key'))" data-labels-key="product.metafields.smart.tag">
<div data-loop-item="" class="label-primary" x-html="value"></div>
</template>
<div data-loop-item="" class="label-primary" x-html="value">BEST-SELLER</div>
<div x-show="getDiscountLabel($el.getAttribute('data-label-type'))" class="label-primary" data-label-type="percentage" x-html="getDiscountLabel($el.getAttribute('data-label-type'))" style="display: none;"></div>
<div class="label-primary" x-show="!card?.product?.available" style="display: none;"> Sold out </div>
</div>
</div>
</div>
</div>
</div>
<div data-style-id="sections--17726909284529__card_product_card_DL3NAr--layout_flex_dNyCX4" class="relative">
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-20 uppercase"><p>[product.metafields.smart.effect]</p></div>
" data-content-check="[product.metafields.smart.effect]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_DL3NAr--dynamic_text_pGLWR3" x-show="!!content_check.trim()" style="color: ">
<div x-html="content">
<div class="_input-richtext text-20 uppercase">
<p>TO RELAX</p>
</div>
</div>
</div>
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-24/20"><p><strong>[product.title]</strong></p></div>
" data-content-check="[product.title]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_DL3NAr--dynamic_text_xzGGbd" x-show="!!content_check.trim()"
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')"
style="color: " title="/products/glow-in-blood-orange-ginger?variant=44405758820529">
<div x-html="content">
<div class="_input-richtext text-24/20">
<p><strong>Glow</strong></p>
</div>
</div>
</div>
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-15/12 uppercase"><p>[product.metafields.smart.flavor]</p></div>
" data-content-check="[product.metafields.smart.flavor]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_DL3NAr--dynamic_text_bLWPAQ" x-show="!!content_check.trim()" style="color: ">
<div x-html="content">
<div class="_input-richtext text-15/12 uppercase">
<p>BLOOD ORANGE GINGER</p>
</div>
</div>
</div>
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-13/11 uppercase"><p>Starting at [product.price]</p></div>
" data-content-check="Starting at [product.price]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_DL3NAr--dynamic_text_zhVKUV" x-show="!!content_check.trim()" style="color: ">
<div x-html="content">
<div class="_input-richtext text-13/11 uppercase">
<p>Starting at $24.00</p>
</div>
</div>
</div>
<div data-style-id="sections--17726909284529__card_product_card_DL3NAr--rating_wFn6et" x-show="$data.showConditionally('always') && (card?.product?.reviews?.review_count > +`9` || !'9')">
<div class="flex items-center gap-2" style="">
<div class="relative" style="--gap: 2px; --gap-md: 2px; --h: 14px; --h-md: 16px;">
<div class="flex gap-dynamic text-[--color-review-stars-base]">
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
</div>
<div class="absolute left-0 top-0 flex gap-dynamic text-[--color-review-stars]" style="clip-path: polygon(0 0, 98.00000000000001% 0, 98.00000000000001% 100%, 0 100%);"
:style="`clip-path: polygon(0 0, ${((card?.product?.reviews?.rating ?? 0) / 5) * 100}% 0, ${((card?.product?.reviews?.rating ?? 0) / 5) * 100}% 100%, 0 100%);`">
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
</div>
</div>
<span class="richtext-md h6" x-show="!!card?.product?.reviews" data-content="
([count])" x-html="$el.getAttribute('data-content').replace('[count]', card?.product?.reviews?.review_count).replace('[rating]',card?.product?.reviews?.rating || 'No rating')"> (146)</span>
</div>
</div>
</div>
<div data-style-id="sections--17726909284529__card_product_card_DL3NAr--layout_flex_exQMMC" class="relative">
<div data-style-id="sections--17726909284529__card_product_card_DL3NAr--quick_view_button_4EgGAe" x-show="$data.showConditionally('always')">
<button type="button" @click.prevent.stop="$quickView.renderQuickView(card?.product_handle, $data, $refs?.bundle_button, card?.selected_variant?.id)" class="w-full button-primary-outline" :class="card?.isAdding ? 'button-loading':''" x-html="$el.getAttribute('data-content')
.replace('[price|no-decimals]', utils.formatMoney(card?.selected_variant?.price, window?.money_format?.replace(/\{(\s*)amount(\s*)}/gi, '{$1amount_no_decimals$2}')))
.replace('[price]', utils.formatMoney(card?.selected_variant?.price))
.replace('[compare_at_price|no-decimals]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price, window?.money_format?.replace(/\{(\s*)amount(\s*)}/gi, '{$1amount_no_decimals$2}'))}</span>`)
.replace('[compare_at_price]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price)}</span>`) ?? ''" data-content="
Quick Shop"> Quick Shop</button>
</div>
</div>
</form>
POST /cart/add
<form data-x-if="" data-style-section-container="" method="post" action="/cart/add" class="flex h-full" @submit.prevent.stop="() => {}" style="flex-flow: ; max-height: calc(var(--max-h) - var(--pt) - var(--pb));">
<input type="hidden" name="id" :value="card?.selected_variant?.id">
<input type="hidden" name="quantity" value="1">
<div data-style-id="sections--17726909284529__card_product_card_UENwPf--layout_flex_wrap_DJiUbX" class="relative">
<figure data-style-id="sections--17726909284529__card_product_card_UENwPf--image_A6RBzM" class="overflow-hidden shrink-0" x-show="primary_image || secondary_image"
x-data="{ primary_image: card?.product?.media?.[0], secondary_image: card?.product?.media?.[1] }">
<div data-style-skeleton="" class="relative isolate" x-show="!card?.hydrated">
<div class="h-full w-full animate-pulse rounded-md bg-gray-200/70">
</div>
</div>
<picture x-show="card?.hydrated" class="relative isolate block overflow-hidden group bg-inherit w-dynamic h-dynamic aspect-dynamic" data-style-image-container=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')" x-effect="() => {
if (`variant_image` === 'variant_image' && card?.selected_variant?.featured_media) {
primary_image = card?.selected_variant?.featured_media;
}
if (`variant_image` === 'metafield_image') {
primary_image = $data.getDynamicValue('[selected_variant.metafields.smart.image]') ?? primary_image
}
secondary_image = card?.product?.media?.find(media => media.id !== primary_image?.id)
}">
<img src="" x-show="!!primary_image" alt="" srcset="" :src="primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image" :alt="primary_image?.alt ?? card?.product?.title"
:srcset="primary_image ? utils.getImageSrcSet(primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image ?? '', 800) : ''" width="732" height="732" loading="lazy" onload="this.classList.remove('!opacity-0')"
class="pointer-events-none relative h-full w-full select-none overflow-hidden object-dynamic !opacity-0" sizes="(max-width: 768px) 50vw, (max-width: 1024px) 33vw, 25vw">
</picture>
</figure>
<div data-style-id="sections--17726909284529__card_product_card_UENwPf--layout_child_overlay_FwWKgd" class="absolute inset-0 pointer-events-none [&>*]:pointer-events-auto flex flex-col "
style="align-items: var(--align-items); justify-content: var(--justify-content);">
<div data-style-container="">
<div x-show="$data.showConditionally('always')" data-style-id="sections--17726909284529__card_product_card_UENwPf--labels_KbaRaV">
<div data-style-container="">
<template x-for="value in getContentLabels($el.getAttribute('data-labels-key'))" data-labels-key="product.metafields.smart.tag">
<div data-loop-item="" class="label-primary" x-html="value"></div>
</template>
<div x-cloak="" x-show="getDiscountLabel($el.getAttribute('data-label-type'))" class="label-primary" data-label-type="percentage" x-html="getDiscountLabel($el.getAttribute('data-label-type'))">
</div>
<div class="label-primary" x-cloak="" x-show="!card?.product?.available"> Sold out </div>
</div>
</div>
</div>
</div>
</div>
<div data-style-id="sections--17726909284529__card_product_card_UENwPf--layout_flex_wrap_wGcQtH" class="relative">
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-20 uppercase"><p>[product.metafields.smart.effect]</p></div>
" data-content-check="[product.metafields.smart.effect]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_UENwPf--dynamic_text_jXaYpQ" x-show="!!content_check.trim()" x-cloak="" style="color: #cc27b0">
<div x-html="content"></div>
</div>
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-24/20"><p><strong>[product.title]</strong></p></div>
" data-content-check="[product.title]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_UENwPf--dynamic_text_R3NWah" x-show="!!content_check.trim()" x-cloak=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')"
style="color: ">
<div x-html="content"></div>
</div>
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-15/12 uppercase"><p>[product.metafields.smart.flavor]</p></div>
" data-content-check="[product.metafields.smart.flavor]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_UENwPf--dynamic_text_AA8XP8" x-show="!!content_check.trim()" x-cloak="" style="color: ">
<div x-html="content"></div>
</div>
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-13/11 uppercase"><p>Starting at [product.price]</p></div>
" data-content-check="Starting at [product.price]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_UENwPf--dynamic_text_zCtNjU" x-show="!!content_check.trim()" x-cloak="" style="color: ">
<div x-html="content"></div>
</div>
<div data-style-id="sections--17726909284529__card_product_card_UENwPf--rating_XiKVh3" x-show="$data.showConditionally('always') && (card?.product?.reviews?.review_count > +`9` || !'9')">
<div class="flex items-center gap-2" style="">
<div class="relative" style="--gap: 2px; --gap-md: 2px; --h: 14px; --h-md: 16px;">
<div class="flex gap-dynamic text-[--color-review-stars-base]">
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
</div>
<div class="absolute left-0 top-0 flex gap-dynamic text-[--color-review-stars]" style="clip-path: polygon(0 0,0% 0, 0% 100%, 0 100%)"
:style="`clip-path: polygon(0 0, ${((card?.product?.reviews?.rating ?? 0) / 5) * 100}% 0, ${((card?.product?.reviews?.rating ?? 0) / 5) * 100}% 100%, 0 100%);`">
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic shrink-0" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); "></svg>
</div>
</div>
<span class="richtext-md h6" x-cloak="" x-show="!!card?.product?.reviews" data-content="
[count] Reviews" x-html="$el.getAttribute('data-content').replace('[count]', card?.product?.reviews?.review_count).replace('[rating]',card?.product?.reviews?.rating || 'No rating')">
</span>
</div>
</div>
</div>
<div data-style-id="sections--17726909284529__card_product_card_UENwPf--layout_flex_t6bYwH" class="relative">
<div data-style-id="sections--17726909284529__card_product_card_UENwPf--quick_view_button_GhneNM" x-show="$data.showConditionally('always')">
<button type="button" @click.prevent.stop="$quickView.renderQuickView(card?.product_handle, $data, $refs?.bundle_button, card?.selected_variant?.id)" class="w-full button-primary-outline" :class="card?.isAdding ? 'button-loading':''" x-html="$el.getAttribute('data-content')
.replace('[price|no-decimals]', utils.formatMoney(card?.selected_variant?.price, window?.money_format?.replace(/\{(\s*)amount(\s*)}/gi, '{$1amount_no_decimals$2}')))
.replace('[price]', utils.formatMoney(card?.selected_variant?.price))
.replace('[compare_at_price|no-decimals]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price, window?.money_format?.replace(/\{(\s*)amount(\s*)}/gi, '{$1amount_no_decimals$2}'))}</span>`)
.replace('[compare_at_price]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price)}</span>`) ?? ''" data-content="
Quick Shop">
</button>
</div>
</div>
</form>
POST /cart/add
<form data-x-if="" data-style-section-container="" method="post" action="/cart/add" class="flex h-full" @submit.prevent.stop="() => {}" style="flex-flow: ; max-height: calc(var(--max-h) - var(--pt) - var(--pb));"><input type="hidden"
id="_igTestGroups" class="_igTestGroups" name="properties[_igTestGroups]" value="4f2e8663c9e8"><input type="hidden" id="_igTestGroup" class="_igTestGroup" name="properties[_igTestGroup]" value="0299aeba-252d-4584-a9ca-4f2e8663c9e8">
<input type="hidden" name="id" :value="card?.selected_variant?.id" value="44405983412401">
<input type="hidden" name="quantity" value="1">
<div data-style-id="sections--17726909284529__card_product_card_UENwPf--layout_flex_wrap_DJiUbX" class="relative">
<figure data-style-id="sections--17726909284529__card_product_card_UENwPf--image_A6RBzM" class="overflow-hidden shrink-0" x-show="primary_image || secondary_image"
x-data="{ primary_image: card?.product?.media?.[0], secondary_image: card?.product?.media?.[1] }">
<div data-style-skeleton="" class="relative isolate" x-show="!card?.hydrated" style="display: none;">
<div class="h-full w-full animate-pulse rounded-md bg-gray-200/70">
</div>
</div>
<picture x-show="card?.hydrated" class="relative isolate block overflow-hidden group bg-inherit w-dynamic h-dynamic aspect-dynamic" data-style-image-container=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')" x-effect="() => {
if (`variant_image` === 'variant_image' && card?.selected_variant?.featured_media) {
primary_image = card?.selected_variant?.featured_media;
}
if (`variant_image` === 'metafield_image') {
primary_image = $data.getDynamicValue('[selected_variant.metafields.smart.image]') ?? primary_image
}
secondary_image = card?.product?.media?.find(media => media.id !== primary_image?.id)
}" title="/products/nightcap-turkish-apple-tea?variant=44405983412401">
<img src="//happihourdrink.com/cdn/shop/files/Nightcap-PDP.png?v=1726160718" x-show="!!primary_image" alt="Nightcap"
srcset="//happihourdrink.com/cdn/shop/files/Nightcap-PDP.png?v=1726160718&width=48 48w,//happihourdrink.com/cdn/shop/files/Nightcap-PDP.png?v=1726160718&width=96 96w,//happihourdrink.com/cdn/shop/files/Nightcap-PDP.png?v=1726160718&width=256 256w,//happihourdrink.com/cdn/shop/files/Nightcap-PDP.png?v=1726160718&width=384 384w,//happihourdrink.com/cdn/shop/files/Nightcap-PDP.png?v=1726160718&width=460 460w,//happihourdrink.com/cdn/shop/files/Nightcap-PDP.png?v=1726160718&width=640 640w,//happihourdrink.com/cdn/shop/files/Nightcap-PDP.png?v=1726160718&width=1200 1200w"
:src="primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image" :alt="primary_image?.alt ?? card?.product?.title"
:srcset="primary_image ? utils.getImageSrcSet(primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image ?? '', 800) : ''" width="732" height="732" loading="lazy" onload="this.classList.remove('!opacity-0')"
class="pointer-events-none relative h-full w-full select-none overflow-hidden object-dynamic !opacity-0" sizes="(max-width: 768px) 50vw, (max-width: 1024px) 33vw, 25vw">
</picture>
</figure>
<div data-style-id="sections--17726909284529__card_product_card_UENwPf--layout_child_overlay_FwWKgd" class="absolute inset-0 pointer-events-none [&>*]:pointer-events-auto flex flex-col "
style="align-items: var(--align-items); justify-content: var(--justify-content);">
<div data-style-container="">
<div x-show="$data.showConditionally('always')" data-style-id="sections--17726909284529__card_product_card_UENwPf--labels_KbaRaV">
<div data-style-container="">
<template x-for="value in getContentLabels($el.getAttribute('data-labels-key'))" data-labels-key="product.metafields.smart.tag">
<div data-loop-item="" class="label-primary" x-html="value"></div>
</template>
<div x-show="getDiscountLabel($el.getAttribute('data-label-type'))" class="label-primary" data-label-type="percentage" x-html="getDiscountLabel($el.getAttribute('data-label-type'))" style="display: none;"></div>
<div class="label-primary" x-show="!card?.product?.available" style="display: none;"> Sold out </div>
</div>
</div>
</div>
</div>
</div>
<div data-style-id="sections--17726909284529__card_product_card_UENwPf--layout_flex_wrap_wGcQtH" class="relative">
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-20 uppercase"><p>[product.metafields.smart.effect]</p></div>
" data-content-check="[product.metafields.smart.effect]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_UENwPf--dynamic_text_jXaYpQ" x-show="!!content_check.trim()" style="color: #cc27b0">
<div x-html="content">
<div class="_input-richtext text-20 uppercase">
<p>TO SLEEP</p>
</div>
</div>
</div>
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-24/20"><p><strong>[product.title]</strong></p></div>
" data-content-check="[product.title]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_UENwPf--dynamic_text_R3NWah" x-show="!!content_check.trim()"
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')"
style="color: " title="/products/nightcap-turkish-apple-tea?variant=44405983412401">
<div x-html="content">
<div class="_input-richtext text-24/20">
<p><strong>Nightcap</strong></p>
</div>
</div>
</div>
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-15/12 uppercase"><p>[product.metafields.smart.flavor]</p></div>
" data-content-check="[product.metafields.smart.flavor]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_UENwPf--dynamic_text_AA8XP8" x-show="!!content_check.trim()" style="color: ">
<div x-html="content">
<div class="_input-richtext text-15/12 uppercase">
<p>Turkish Apple</p>
</div>
</div>
</div>
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-13/11 uppercase"><p>Starting at [product.price]</p></div>
" data-content-check="Starting at [product.price]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_UENwPf--dynamic_text_zCtNjU" x-show="!!content_check.trim()" style="color: ">
<div x-html="content">
<div class="_input-richtext text-13/11 uppercase">
<p>Starting at $24.00</p>
</div>
</div>
</div>
<div data-style-id="sections--17726909284529__card_product_card_UENwPf--rating_XiKVh3" x-show="$data.showConditionally('always') && (card?.product?.reviews?.review_count > +`9` || !'9')">
<div class="flex items-center gap-2" style="">
<div class="relative" style="--gap: 2px; --gap-md: 2px; --h: 14px; --h-md: 16px;">
<div class="flex gap-dynamic text-[--color-review-stars-base]">
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
</div>
<div class="absolute left-0 top-0 flex gap-dynamic text-[--color-review-stars]" style="clip-path: polygon(0 0, 98.00000000000001% 0, 98.00000000000001% 100%, 0 100%);"
:style="`clip-path: polygon(0 0, ${((card?.product?.reviews?.rating ?? 0) / 5) * 100}% 0, ${((card?.product?.reviews?.rating ?? 0) / 5) * 100}% 100%, 0 100%);`">
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
<svg data-icon-handle="star" class="bg-current shrink-0 h-dynamic" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-star--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="star"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-star); -webkit-mask: var(--icon-star); aspect-ratio: var(--icon-star-aspect-ratio, 1); " role=""></svg>
</div>
</div>
<span class="richtext-md h6" x-show="!!card?.product?.reviews" data-content="
[count] Reviews" x-html="$el.getAttribute('data-content').replace('[count]', card?.product?.reviews?.review_count).replace('[rating]',card?.product?.reviews?.rating || 'No rating')"> 100 Reviews</span>
</div>
</div>
</div>
<div data-style-id="sections--17726909284529__card_product_card_UENwPf--layout_flex_t6bYwH" class="relative">
<div data-style-id="sections--17726909284529__card_product_card_UENwPf--quick_view_button_GhneNM" x-show="$data.showConditionally('always')">
<button type="button" @click.prevent.stop="$quickView.renderQuickView(card?.product_handle, $data, $refs?.bundle_button, card?.selected_variant?.id)" class="w-full button-primary-outline" :class="card?.isAdding ? 'button-loading':''" x-html="$el.getAttribute('data-content')
.replace('[price|no-decimals]', utils.formatMoney(card?.selected_variant?.price, window?.money_format?.replace(/\{(\s*)amount(\s*)}/gi, '{$1amount_no_decimals$2}')))
.replace('[price]', utils.formatMoney(card?.selected_variant?.price))
.replace('[compare_at_price|no-decimals]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price, window?.money_format?.replace(/\{(\s*)amount(\s*)}/gi, '{$1amount_no_decimals$2}'))}</span>`)
.replace('[compare_at_price]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price)}</span>`) ?? ''" data-content="
Quick Shop"> Quick Shop</button>
</div>
</div>
</form>
POST /cart/add
<form data-x-if="" data-style-section-container="" method="post" action="/cart/add" class="flex h-full" @submit.prevent.stop="() => {}" style="flex-flow: ; max-height: calc(var(--max-h) - var(--pt) - var(--pb));">
<input type="hidden" name="id" :value="card?.selected_variant?.id">
<input type="hidden" name="quantity" value="1">
<div data-style-id="sections--17726909284529__card_product_card_EGPL3V--layout_flex_wrap_YKzWrn" class="relative">
<figure data-style-id="sections--17726909284529__card_product_card_EGPL3V--image_TCXJPf" class="overflow-hidden shrink-0" x-show="primary_image || secondary_image"
x-data="{ primary_image: card?.product?.media?.[0], secondary_image: card?.product?.media?.[1] }">
<div data-style-skeleton="" class="relative isolate" x-show="!card?.hydrated">
<div class="h-full w-full animate-pulse rounded-md bg-gray-200/70">
</div>
</div>
<picture x-show="card?.hydrated" class="relative isolate block overflow-hidden group bg-inherit w-dynamic h-dynamic aspect-dynamic" data-style-image-container=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')" x-effect="() => {
if (`product_image` === 'variant_image' && card?.selected_variant?.featured_media) {
primary_image = card?.selected_variant?.featured_media;
}
if (`product_image` === 'metafield_image') {
primary_image = $data.getDynamicValue('[selected_variant.metafields.smart.image]') ?? primary_image
}
secondary_image = card?.product?.media?.find(media => media.id !== primary_image?.id)
}">
<img src="" x-show="!!primary_image" alt="" srcset="" :src="primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image" :alt="primary_image?.alt ?? card?.product?.title"
:srcset="primary_image ? utils.getImageSrcSet(primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image ?? '', 800) : ''" width="732" height="732" loading="lazy" onload="this.classList.remove('!opacity-0')"
class="pointer-events-none relative h-full w-full select-none overflow-hidden object-dynamic !opacity-0" sizes="(max-width: 768px) 50vw, (max-width: 1024px) 33vw, 25vw">
</picture>
</figure>
</div>
<div data-style-id="sections--17726909284529__card_product_card_EGPL3V--layout_flex_wrap_Tx6Qtf" class="relative">
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-14"><p><strong>[product.title]</strong></p></div>
" data-content-check="[product.title]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_EGPL3V--dynamic_text_Bt3f3h" x-show="!!content_check.trim()" x-cloak=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')"
style="color: ">
<div x-html="content"></div>
</div>
<fieldset data-style-id="sections--17726909284529__card_product_card_EGPL3V--variant_selector_select_7rWGfQ"
x-show="card?.product?.variants?.length && card?.product?.variants?.[0]?.title !== 'Default Title' && $data.showConditionally('always')" x-cloak="">
<legend class="flex w-full max-w-full truncate richtext-md h5" data-legend="
" x-effect="$el.innerHTML = $el.getAttribute('data-legend').replace('[value]', card?.selected_variant?.title)">
</legend>
<div x-data="{ open: false,
focusIndex: 0,
values: card?.product?.variants?.map(v => v.id) || [],
titles: card?.product?.variants?.map(v => v.title) || [],
disabledItems: [],
value: card?.selected_variant?.id,
title: card?.selected_variant?.title,
pos: { top: 0, left:0, width: 0, height:0 },
select: $refs.select }"
x-effect="()=> { values = card?.product?.variants?.map(v => v.id) || []; focusIndex = values.findIndex(val=> val === card?.selected_variant?.id); titles = card?.product?.variants?.map(v => v.title) || []; disabledItems = []; }"
x-show="!!values.length" x-init="pos = select.getBoundingClientRect()">
<button class="w-full input-select input-select--font" :class="false ? 'button-loading' : ''" :disabled="false" type="button" x-ref="select" aria-label="Variants" @click.prevent.stop="open = !open" @keydown.space.prevent="open = !open"
@keydown.enter.prevent="open = !open" aria-haspopup="listbox" aria-expanded="false">
<span class="w-full truncate text-left" x-html="titles[focusIndex] || 'Variants' || 'Choose an option'">card?.selected_variant?.title</span>
</button>
<input type="hidden" name="" :disabled="!values.length" :value="value">
<template x-teleport="body">
<template x-if="open">
<ul x-data="{ show: false }" x-init="$nextTick(() => { show = true }); pos = select.getBoundingClientRect()" x-effect="value = values[focusIndex], title = titles[focusIndex]" x-trap="open || show"
:style="`top: ${pos.top + pos.height + 2}px; width: ${pos.width}px; left: ${pos.left}px;`" @click.outside.capture="() => { ;if (!select?.contains($event.target) && select !== $event.target) { open = false } }"
@scroll.window="pos = select.getBoundingClientRect()" @resize.window="pos = select.getBoundingClientRect()" @keydown.esc="open = false" @keydown.left.prevent.stop="focusIndex = focusIndex > 0 ? focusIndex -1 : values.length - 1"
@keydown.up.prevent.stop="focusIndex = focusIndex > 0 ? focusIndex -1 : values.length - 1" @keydown.down.prevent.stop="focusIndex = focusIndex + 1 < values.length ? focusIndex + 1 : 0"
@keydown.right.prevent.stop="focusIndex = focusIndex + 1 < values.length ? focusIndex + 1 : 0" @keydown.space.prevent.stop="$data.setSelectedVariant(value);" @keydown.enter.prevent.stop="$data.setSelectedVariant(value);; open = false"
class="fixed z-[2147483647] mt-1 max-h-60 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg outline-none ring-1 ring-black/5 transition-opacity duration-75 focus:outline-none sm:text-sm" aria-label="Variants"
aria-orientation="vertical" role="listbox" tabindex="0" x-show="show" x-cloak="" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0">
<template x-for="(value, i) in values">
<li class="relative cursor-default select-none py-2 pl-10 pr-4 text-gray-900 ac:bg-gray-100 hf:bg-gray-100" @click.prevent.stop="$data.setSelectedVariant(value);; focusIndex = i; open = false" :disabled="!!disabledItems[i]"
:class="i === focusIndex ? 'active' : disabledItems[i] ? 'opacity-40' :''" x-effect="i === focusIndex && $el.parentElement ? $el.parentElement.scrollTop = $el.offsetTop - 120 : null" role="option" tabindex="-1"
:aria-selected="i === focusIndex">
<span class="block truncate input-select--font" x-html="titles[i]"></span>
<span class="absolute inset-y-0 left-0 flex items-center pl-3 text-theme-accent" :class="value === card?.selected_variant?.id ? 'opacity-100':'opacity-0'">
<svg data-icon-handle="check-mark" class="bg-current shrink-0 size-5 opacity-60" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-check-mark--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="check-mark"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }"
style="mask: var(--icon-check-mark); -webkit-mask: var(--icon-check-mark); aspect-ratio: var(--icon-check-mark-aspect-ratio, 1); "></svg>
</span>
</li>
</template>
</ul>
</template>
</template>
</div>
</fieldset>
</div>
<div data-style-id="sections--17726909284529__card_product_card_EGPL3V--layout_flex_wrap_ayFTp6" class="relative">
<div data-style-id="sections--17726909284529__card_product_card_EGPL3V--quick_view_button_qxFk9d" x-show="$data.showConditionally('always')">
<button type="submit" class="w-full button-primary" :class="card?.isAdding ? 'button-loading':''" x-effect="$el.classList.toggle('!hidden', !card?.selected_variant?.available)"
x-html="$el.getAttribute('data-content').replace('[price]', utils.formatMoney(card?.selected_variant?.price)).replace('[compare_at_price]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price)}</span>`) ?? ''"
@click.prevent.stop="handleAddToCart($event)"
data-content="
<svg data-icon-handle="lock" class="bg-current shrink-0 inline-flex items-center justify-center align-middle" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-lock--url`) }" :class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="lock" x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-lock); -webkit-mask: var(--icon-lock); aspect-ratio: var(--icon-lock-aspect-ratio, 1); height: 1.25em; color:currentColor;"></svg> Add • [price]">
</button>
<button type="button" disabled="disabled" class="w-full button-primary" x-effect="$el.classList.toggle('!hidden', card?.selected_variant?.available)"
x-html="$el.getAttribute('data-content').replace('[price]', utils.formatMoney(card?.selected_variant?.price)).replace('[compare_at_price]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price)}</span>`) ?? ''"
data-content="
Out of Stock">
</button>
</div>
</div>
</form>
POST /cart/add
<form data-x-if="" data-style-section-container="" method="post" action="/cart/add" class="flex h-full" @submit.prevent.stop="() => {}" style="flex-flow: ; max-height: calc(var(--max-h) - var(--pt) - var(--pb));"><input type="hidden"
id="_igTestGroups" class="_igTestGroups" name="properties[_igTestGroups]" value="4f2e8663c9e8"><input type="hidden" id="_igTestGroup" class="_igTestGroup" name="properties[_igTestGroup]" value="0299aeba-252d-4584-a9ca-4f2e8663c9e8">
<input type="hidden" name="id" :value="card?.selected_variant?.id" value="44405758886065">
<input type="hidden" name="quantity" value="1">
<div data-style-id="sections--17726909284529__card_product_card_EGPL3V--layout_flex_wrap_YKzWrn" class="relative">
<figure data-style-id="sections--17726909284529__card_product_card_EGPL3V--image_TCXJPf" class="overflow-hidden shrink-0" x-show="primary_image || secondary_image"
x-data="{ primary_image: card?.product?.media?.[0], secondary_image: card?.product?.media?.[1] }">
<div data-style-skeleton="" class="relative isolate" x-show="!card?.hydrated" style="display: none;">
<div class="h-full w-full animate-pulse rounded-md bg-gray-200/70">
</div>
</div>
<picture x-show="card?.hydrated" class="relative isolate block overflow-hidden group bg-inherit w-dynamic h-dynamic aspect-dynamic" data-style-image-container=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')" x-effect="() => {
if (`product_image` === 'variant_image' && card?.selected_variant?.featured_media) {
primary_image = card?.selected_variant?.featured_media;
}
if (`product_image` === 'metafield_image') {
primary_image = $data.getDynamicValue('[selected_variant.metafields.smart.image]') ?? primary_image
}
secondary_image = card?.product?.media?.find(media => media.id !== primary_image?.id)
}" title="/products/lime-wild-mint?variant=44405758886065">
<img src="//happihourdrink.com/cdn/shop/files/Lime-PDP.png?v=1727986615" x-show="!!primary_image" alt="Lime Wild Mint"
srcset="//happihourdrink.com/cdn/shop/files/Lime-PDP.png?v=1727986615&width=48 48w,//happihourdrink.com/cdn/shop/files/Lime-PDP.png?v=1727986615&width=96 96w,//happihourdrink.com/cdn/shop/files/Lime-PDP.png?v=1727986615&width=256 256w,//happihourdrink.com/cdn/shop/files/Lime-PDP.png?v=1727986615&width=384 384w,//happihourdrink.com/cdn/shop/files/Lime-PDP.png?v=1727986615&width=460 460w,//happihourdrink.com/cdn/shop/files/Lime-PDP.png?v=1727986615&width=640 640w,//happihourdrink.com/cdn/shop/files/Lime-PDP.png?v=1727986615&width=1200 1200w"
:src="primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image" :alt="primary_image?.alt ?? card?.product?.title"
:srcset="primary_image ? utils.getImageSrcSet(primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image ?? '', 800) : ''" width="732" height="732" loading="lazy" onload="this.classList.remove('!opacity-0')"
class="pointer-events-none relative h-full w-full select-none overflow-hidden object-dynamic !opacity-0" sizes="(max-width: 768px) 50vw, (max-width: 1024px) 33vw, 25vw">
</picture>
</figure>
</div>
<div data-style-id="sections--17726909284529__card_product_card_EGPL3V--layout_flex_wrap_Tx6Qtf" class="relative">
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-14"><p><strong>[product.title]</strong></p></div>
" data-content-check="[product.title]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_EGPL3V--dynamic_text_Bt3f3h" x-show="!!content_check.trim()"
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')"
style="color: " title="/products/lime-wild-mint?variant=44405758886065">
<div x-html="content">
<div class="_input-richtext text-14">
<p><strong>Lime Wild Mint</strong></p>
</div>
</div>
</div>
<fieldset data-style-id="sections--17726909284529__card_product_card_EGPL3V--variant_selector_select_7rWGfQ"
x-show="card?.product?.variants?.length && card?.product?.variants?.[0]?.title !== 'Default Title' && $data.showConditionally('always')">
<legend class="flex w-full max-w-full truncate richtext-md h5" data-legend="
" x-effect="$el.innerHTML = $el.getAttribute('data-legend').replace('[value]', card?.selected_variant?.title)">
</legend>
<div x-data="{ open: false,
focusIndex: 0,
values: card?.product?.variants?.map(v => v.id) || [],
titles: card?.product?.variants?.map(v => v.title) || [],
disabledItems: [],
value: card?.selected_variant?.id,
title: card?.selected_variant?.title,
pos: { top: 0, left:0, width: 0, height:0 },
select: $refs.select }"
x-effect="()=> { values = card?.product?.variants?.map(v => v.id) || []; focusIndex = values.findIndex(val=> val === card?.selected_variant?.id); titles = card?.product?.variants?.map(v => v.title) || []; disabledItems = []; }"
x-show="!!values.length" x-init="pos = select.getBoundingClientRect()">
<button class="w-full input-select input-select--font" :class="false ? 'button-loading' : ''" :disabled="false" type="button" x-ref="select" aria-label="Variants" @click.prevent.stop="open = !open" @keydown.space.prevent="open = !open"
@keydown.enter.prevent="open = !open" aria-haspopup="listbox" aria-expanded="false">
<span class="w-full truncate text-left" x-html="titles[focusIndex] || 'Variants' || 'Choose an option'">4-Pack</span>
</button>
<input type="hidden" name="" :disabled="!values.length" :value="value" value="44405758886065">
<template x-teleport="body" data-teleport-template="true">
<template x-if="open">
<ul x-data="{ show: false }" x-init="$nextTick(() => { show = true }); pos = select.getBoundingClientRect()" x-effect="value = values[focusIndex], title = titles[focusIndex]" x-trap="open || show"
:style="`top: ${pos.top + pos.height + 2}px; width: ${pos.width}px; left: ${pos.left}px;`" @click.outside.capture="() => { ;if (!select?.contains($event.target) && select !== $event.target) { open = false } }"
@scroll.window="pos = select.getBoundingClientRect()" @resize.window="pos = select.getBoundingClientRect()" @keydown.esc="open = false" @keydown.left.prevent.stop="focusIndex = focusIndex > 0 ? focusIndex -1 : values.length - 1"
@keydown.up.prevent.stop="focusIndex = focusIndex > 0 ? focusIndex -1 : values.length - 1" @keydown.down.prevent.stop="focusIndex = focusIndex + 1 < values.length ? focusIndex + 1 : 0"
@keydown.right.prevent.stop="focusIndex = focusIndex + 1 < values.length ? focusIndex + 1 : 0" @keydown.space.prevent.stop="$data.setSelectedVariant(value);" @keydown.enter.prevent.stop="$data.setSelectedVariant(value);; open = false"
class="fixed z-[2147483647] mt-1 max-h-60 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg outline-none ring-1 ring-black/5 transition-opacity duration-75 focus:outline-none sm:text-sm" aria-label="Variants"
aria-orientation="vertical" role="listbox" tabindex="0" x-show="show" x-cloak="" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0">
<template x-for="(value, i) in values">
<li class="relative cursor-default select-none py-2 pl-10 pr-4 text-gray-900 ac:bg-gray-100 hf:bg-gray-100" @click.prevent.stop="$data.setSelectedVariant(value);; focusIndex = i; open = false" :disabled="!!disabledItems[i]"
:class="i === focusIndex ? 'active' : disabledItems[i] ? 'opacity-40' :''" x-effect="i === focusIndex && $el.parentElement ? $el.parentElement.scrollTop = $el.offsetTop - 120 : null" role="option" tabindex="-1"
:aria-selected="i === focusIndex">
<span class="block truncate input-select--font" x-html="titles[i]"></span>
<span class="absolute inset-y-0 left-0 flex items-center pl-3 text-theme-accent" :class="value === card?.selected_variant?.id ? 'opacity-100':'opacity-0'">
<svg data-icon-handle="check-mark" class="bg-current shrink-0 size-5 opacity-60" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-check-mark--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="check-mark"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }"
style="mask: var(--icon-check-mark); -webkit-mask: var(--icon-check-mark); aspect-ratio: var(--icon-check-mark-aspect-ratio, 1); "></svg>
</span>
</li>
</template>
</ul>
</template>
</template>
</div>
</fieldset>
</div>
<div data-style-id="sections--17726909284529__card_product_card_EGPL3V--layout_flex_wrap_ayFTp6" class="relative">
<div data-style-id="sections--17726909284529__card_product_card_EGPL3V--quick_view_button_qxFk9d" x-show="$data.showConditionally('always')">
<button type="submit" class="w-full button-primary" :class="card?.isAdding ? 'button-loading':''" x-effect="$el.classList.toggle('!hidden', !card?.selected_variant?.available)"
x-html="$el.getAttribute('data-content').replace('[price]', utils.formatMoney(card?.selected_variant?.price)).replace('[compare_at_price]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price)}</span>`) ?? ''"
@click.prevent.stop="handleAddToCart($event)"
data-content="
<svg data-icon-handle="lock" class="bg-current shrink-0 inline-flex items-center justify-center align-middle" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-lock--url`) }" :class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="lock" x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-lock); -webkit-mask: var(--icon-lock); aspect-ratio: var(--icon-lock-aspect-ratio, 1); height: 1.25em; color:currentColor;"></svg> Add • [price]">
<svg data-icon-handle="lock" class="bg-current shrink-0 inline-flex items-center justify-center align-middle" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-lock--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="lock"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }"
style="mask: var(--icon-lock); -webkit-mask: var(--icon-lock); aspect-ratio: var(--icon-lock-aspect-ratio, 1); height: 1.25em; color:currentColor;" role=""></svg> Add • $22.00</button>
<button type="button" disabled="disabled" class="w-full button-primary !hidden" x-effect="$el.classList.toggle('!hidden', card?.selected_variant?.available)"
x-html="$el.getAttribute('data-content').replace('[price]', utils.formatMoney(card?.selected_variant?.price)).replace('[compare_at_price]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price)}</span>`) ?? ''"
data-content="
Out of Stock"> Out of Stock</button>
</div>
</div>
</form>
POST /cart/add
<form data-x-if="" data-style-section-container="" method="post" action="/cart/add" class="flex h-full" @submit.prevent.stop="() => {}" style="flex-flow: ; max-height: calc(var(--max-h) - var(--pt) - var(--pb));">
<input type="hidden" name="id" :value="card?.selected_variant?.id">
<input type="hidden" name="quantity" value="1">
<div data-style-id="sections--17726909284529__card_product_card_GdwfGt--layout_flex_wrap_Rnc8Wb" class="relative">
<figure data-style-id="sections--17726909284529__card_product_card_GdwfGt--image_jUFC3C" class="overflow-hidden shrink-0" x-show="primary_image || secondary_image"
x-data="{ primary_image: card?.product?.media?.[0], secondary_image: card?.product?.media?.[1] }">
<div data-style-skeleton="" class="relative isolate" x-show="!card?.hydrated">
<div class="h-full w-full animate-pulse rounded-md bg-gray-200/70">
</div>
</div>
<picture x-show="card?.hydrated" class="relative isolate block overflow-hidden group bg-inherit w-dynamic h-dynamic aspect-dynamic" data-style-image-container=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')" x-effect="() => {
if (`product_image` === 'variant_image' && card?.selected_variant?.featured_media) {
primary_image = card?.selected_variant?.featured_media;
}
if (`product_image` === 'metafield_image') {
primary_image = $data.getDynamicValue('[selected_variant.metafields.smart.image]') ?? primary_image
}
secondary_image = card?.product?.media?.find(media => media.id !== primary_image?.id)
}">
<img src="" x-show="!!primary_image" alt="" srcset="" :src="primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image" :alt="primary_image?.alt ?? card?.product?.title"
:srcset="primary_image ? utils.getImageSrcSet(primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image ?? '', 800) : ''" width="732" height="732" loading="lazy" onload="this.classList.remove('!opacity-0')"
class="pointer-events-none relative h-full w-full select-none overflow-hidden object-dynamic !opacity-0" sizes="(max-width: 768px) 50vw, (max-width: 1024px) 33vw, 25vw">
</picture>
</figure>
</div>
<div data-style-id="sections--17726909284529__card_product_card_GdwfGt--layout_flex_wrap_FWzDqG" class="relative">
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-14"><p><strong>[product.title]</strong></p></div>
" data-content-check="[product.title]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_GdwfGt--dynamic_text_XyfqaA" x-show="!!content_check.trim()" x-cloak=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')"
style="color: ">
<div x-html="content"></div>
</div>
<fieldset data-style-id="sections--17726909284529__card_product_card_GdwfGt--variant_selector_select_JfHUm7"
x-show="card?.product?.variants?.length && card?.product?.variants?.[0]?.title !== 'Default Title' && $data.showConditionally('always')" x-cloak="">
<legend class="flex w-full max-w-full truncate richtext-md h5" data-legend="
" x-effect="$el.innerHTML = $el.getAttribute('data-legend').replace('[value]', card?.selected_variant?.title)">
</legend>
<div x-data="{ open: false,
focusIndex: 0,
values: card?.product?.variants?.map(v => v.id) || [],
titles: card?.product?.variants?.map(v => v.title) || [],
disabledItems: [],
value: card?.selected_variant?.id,
title: card?.selected_variant?.title,
pos: { top: 0, left:0, width: 0, height:0 },
select: $refs.select }"
x-effect="()=> { values = card?.product?.variants?.map(v => v.id) || []; focusIndex = values.findIndex(val=> val === card?.selected_variant?.id); titles = card?.product?.variants?.map(v => v.title) || []; disabledItems = []; }"
x-show="!!values.length" x-init="pos = select.getBoundingClientRect()">
<button class="w-full input-select input-select--font" :class="false ? 'button-loading' : ''" :disabled="false" type="button" x-ref="select" aria-label="Variants" @click.prevent.stop="open = !open" @keydown.space.prevent="open = !open"
@keydown.enter.prevent="open = !open" aria-haspopup="listbox" aria-expanded="false">
<span class="w-full truncate text-left" x-html="titles[focusIndex] || 'Variants' || 'Choose an option'">card?.selected_variant?.title</span>
</button>
<input type="hidden" name="" :disabled="!values.length" :value="value">
<template x-teleport="body">
<template x-if="open">
<ul x-data="{ show: false }" x-init="$nextTick(() => { show = true }); pos = select.getBoundingClientRect()" x-effect="value = values[focusIndex], title = titles[focusIndex]" x-trap="open || show"
:style="`top: ${pos.top + pos.height + 2}px; width: ${pos.width}px; left: ${pos.left}px;`" @click.outside.capture="() => { ;if (!select?.contains($event.target) && select !== $event.target) { open = false } }"
@scroll.window="pos = select.getBoundingClientRect()" @resize.window="pos = select.getBoundingClientRect()" @keydown.esc="open = false" @keydown.left.prevent.stop="focusIndex = focusIndex > 0 ? focusIndex -1 : values.length - 1"
@keydown.up.prevent.stop="focusIndex = focusIndex > 0 ? focusIndex -1 : values.length - 1" @keydown.down.prevent.stop="focusIndex = focusIndex + 1 < values.length ? focusIndex + 1 : 0"
@keydown.right.prevent.stop="focusIndex = focusIndex + 1 < values.length ? focusIndex + 1 : 0" @keydown.space.prevent.stop="$data.setSelectedVariant(value);" @keydown.enter.prevent.stop="$data.setSelectedVariant(value);; open = false"
class="fixed z-[2147483647] mt-1 max-h-60 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg outline-none ring-1 ring-black/5 transition-opacity duration-75 focus:outline-none sm:text-sm" aria-label="Variants"
aria-orientation="vertical" role="listbox" tabindex="0" x-show="show" x-cloak="" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0">
<template x-for="(value, i) in values">
<li class="relative cursor-default select-none py-2 pl-10 pr-4 text-gray-900 ac:bg-gray-100 hf:bg-gray-100" @click.prevent.stop="$data.setSelectedVariant(value);; focusIndex = i; open = false" :disabled="!!disabledItems[i]"
:class="i === focusIndex ? 'active' : disabledItems[i] ? 'opacity-40' :''" x-effect="i === focusIndex && $el.parentElement ? $el.parentElement.scrollTop = $el.offsetTop - 120 : null" role="option" tabindex="-1"
:aria-selected="i === focusIndex">
<span class="block truncate input-select--font" x-html="titles[i]"></span>
<span class="absolute inset-y-0 left-0 flex items-center pl-3 text-theme-accent" :class="value === card?.selected_variant?.id ? 'opacity-100':'opacity-0'">
<svg data-icon-handle="check-mark" class="bg-current shrink-0 size-5 opacity-60" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-check-mark--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="check-mark"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }"
style="mask: var(--icon-check-mark); -webkit-mask: var(--icon-check-mark); aspect-ratio: var(--icon-check-mark-aspect-ratio, 1); "></svg>
</span>
</li>
</template>
</ul>
</template>
</template>
</div>
</fieldset>
</div>
<div data-style-id="sections--17726909284529__card_product_card_GdwfGt--layout_flex_wrap_H4L4LD" class="relative">
<div data-style-id="sections--17726909284529__card_product_card_GdwfGt--quick_view_button_xFF94Y" x-show="$data.showConditionally('always')">
<button type="submit" class="w-full button-primary" :class="card?.isAdding ? 'button-loading':''" x-effect="$el.classList.toggle('!hidden', !card?.selected_variant?.available)"
x-html="$el.getAttribute('data-content').replace('[price]', utils.formatMoney(card?.selected_variant?.price)).replace('[compare_at_price]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price)}</span>`) ?? ''"
@click.prevent.stop="handleAddToCart($event)"
data-content="
<svg data-icon-handle="lock" class="bg-current shrink-0 inline-flex items-center justify-center align-middle" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-lock--url`) }" :class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="lock" x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-lock); -webkit-mask: var(--icon-lock); aspect-ratio: var(--icon-lock-aspect-ratio, 1); height: 1.25em; color:currentColor;"></svg> Add • [price]">
</button>
<button type="button" disabled="disabled" class="w-full button-primary" x-effect="$el.classList.toggle('!hidden', card?.selected_variant?.available)"
x-html="$el.getAttribute('data-content').replace('[price]', utils.formatMoney(card?.selected_variant?.price)).replace('[compare_at_price]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price)}</span>`) ?? ''"
data-content="
Out of Stock">
</button>
</div>
</div>
</form>
POST /cart/add
<form data-x-if="" data-style-section-container="" method="post" action="/cart/add" class="flex h-full" @submit.prevent.stop="() => {}" style="flex-flow: ; max-height: calc(var(--max-h) - var(--pt) - var(--pb));"><input type="hidden"
id="_igTestGroups" class="_igTestGroups" name="properties[_igTestGroups]" value="4f2e8663c9e8"><input type="hidden" id="_igTestGroup" class="_igTestGroup" name="properties[_igTestGroup]" value="0299aeba-252d-4584-a9ca-4f2e8663c9e8">
<input type="hidden" name="id" :value="card?.selected_variant?.id" value="44405758886065">
<input type="hidden" name="quantity" value="1">
<div data-style-id="sections--17726909284529__card_product_card_GdwfGt--layout_flex_wrap_Rnc8Wb" class="relative">
<figure data-style-id="sections--17726909284529__card_product_card_GdwfGt--image_jUFC3C" class="overflow-hidden shrink-0" x-show="primary_image || secondary_image"
x-data="{ primary_image: card?.product?.media?.[0], secondary_image: card?.product?.media?.[1] }">
<div data-style-skeleton="" class="relative isolate" x-show="!card?.hydrated" style="display: none;">
<div class="h-full w-full animate-pulse rounded-md bg-gray-200/70">
</div>
</div>
<picture x-show="card?.hydrated" class="relative isolate block overflow-hidden group bg-inherit w-dynamic h-dynamic aspect-dynamic" data-style-image-container=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')" x-effect="() => {
if (`product_image` === 'variant_image' && card?.selected_variant?.featured_media) {
primary_image = card?.selected_variant?.featured_media;
}
if (`product_image` === 'metafield_image') {
primary_image = $data.getDynamicValue('[selected_variant.metafields.smart.image]') ?? primary_image
}
secondary_image = card?.product?.media?.find(media => media.id !== primary_image?.id)
}" title="/products/lime-wild-mint?variant=44405758886065">
<img src="//happihourdrink.com/cdn/shop/files/Lime-PDP.png?v=1727986615" x-show="!!primary_image" alt="Lime Wild Mint"
srcset="//happihourdrink.com/cdn/shop/files/Lime-PDP.png?v=1727986615&width=48 48w,//happihourdrink.com/cdn/shop/files/Lime-PDP.png?v=1727986615&width=96 96w,//happihourdrink.com/cdn/shop/files/Lime-PDP.png?v=1727986615&width=256 256w,//happihourdrink.com/cdn/shop/files/Lime-PDP.png?v=1727986615&width=384 384w,//happihourdrink.com/cdn/shop/files/Lime-PDP.png?v=1727986615&width=460 460w,//happihourdrink.com/cdn/shop/files/Lime-PDP.png?v=1727986615&width=640 640w,//happihourdrink.com/cdn/shop/files/Lime-PDP.png?v=1727986615&width=1200 1200w"
:src="primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image" :alt="primary_image?.alt ?? card?.product?.title"
:srcset="primary_image ? utils.getImageSrcSet(primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image ?? '', 800) : ''" width="732" height="732" loading="lazy" onload="this.classList.remove('!opacity-0')"
class="pointer-events-none relative h-full w-full select-none overflow-hidden object-dynamic !opacity-0" sizes="(max-width: 768px) 50vw, (max-width: 1024px) 33vw, 25vw">
</picture>
</figure>
</div>
<div data-style-id="sections--17726909284529__card_product_card_GdwfGt--layout_flex_wrap_FWzDqG" class="relative">
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-14"><p><strong>[product.title]</strong></p></div>
" data-content-check="[product.title]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_GdwfGt--dynamic_text_XyfqaA" x-show="!!content_check.trim()"
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')"
style="color: " title="/products/lime-wild-mint?variant=44405758886065">
<div x-html="content">
<div class="_input-richtext text-14">
<p><strong>Lime Wild Mint</strong></p>
</div>
</div>
</div>
<fieldset data-style-id="sections--17726909284529__card_product_card_GdwfGt--variant_selector_select_JfHUm7"
x-show="card?.product?.variants?.length && card?.product?.variants?.[0]?.title !== 'Default Title' && $data.showConditionally('always')">
<legend class="flex w-full max-w-full truncate richtext-md h5" data-legend="
" x-effect="$el.innerHTML = $el.getAttribute('data-legend').replace('[value]', card?.selected_variant?.title)">
</legend>
<div x-data="{ open: false,
focusIndex: 0,
values: card?.product?.variants?.map(v => v.id) || [],
titles: card?.product?.variants?.map(v => v.title) || [],
disabledItems: [],
value: card?.selected_variant?.id,
title: card?.selected_variant?.title,
pos: { top: 0, left:0, width: 0, height:0 },
select: $refs.select }"
x-effect="()=> { values = card?.product?.variants?.map(v => v.id) || []; focusIndex = values.findIndex(val=> val === card?.selected_variant?.id); titles = card?.product?.variants?.map(v => v.title) || []; disabledItems = []; }"
x-show="!!values.length" x-init="pos = select.getBoundingClientRect()">
<button class="w-full input-select input-select--font" :class="false ? 'button-loading' : ''" :disabled="false" type="button" x-ref="select" aria-label="Variants" @click.prevent.stop="open = !open" @keydown.space.prevent="open = !open"
@keydown.enter.prevent="open = !open" aria-haspopup="listbox" aria-expanded="false">
<span class="w-full truncate text-left" x-html="titles[focusIndex] || 'Variants' || 'Choose an option'">4-Pack</span>
</button>
<input type="hidden" name="" :disabled="!values.length" :value="value" value="44405758886065">
<template x-teleport="body" data-teleport-template="true">
<template x-if="open">
<ul x-data="{ show: false }" x-init="$nextTick(() => { show = true }); pos = select.getBoundingClientRect()" x-effect="value = values[focusIndex], title = titles[focusIndex]" x-trap="open || show"
:style="`top: ${pos.top + pos.height + 2}px; width: ${pos.width}px; left: ${pos.left}px;`" @click.outside.capture="() => { ;if (!select?.contains($event.target) && select !== $event.target) { open = false } }"
@scroll.window="pos = select.getBoundingClientRect()" @resize.window="pos = select.getBoundingClientRect()" @keydown.esc="open = false" @keydown.left.prevent.stop="focusIndex = focusIndex > 0 ? focusIndex -1 : values.length - 1"
@keydown.up.prevent.stop="focusIndex = focusIndex > 0 ? focusIndex -1 : values.length - 1" @keydown.down.prevent.stop="focusIndex = focusIndex + 1 < values.length ? focusIndex + 1 : 0"
@keydown.right.prevent.stop="focusIndex = focusIndex + 1 < values.length ? focusIndex + 1 : 0" @keydown.space.prevent.stop="$data.setSelectedVariant(value);" @keydown.enter.prevent.stop="$data.setSelectedVariant(value);; open = false"
class="fixed z-[2147483647] mt-1 max-h-60 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg outline-none ring-1 ring-black/5 transition-opacity duration-75 focus:outline-none sm:text-sm" aria-label="Variants"
aria-orientation="vertical" role="listbox" tabindex="0" x-show="show" x-cloak="" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0">
<template x-for="(value, i) in values">
<li class="relative cursor-default select-none py-2 pl-10 pr-4 text-gray-900 ac:bg-gray-100 hf:bg-gray-100" @click.prevent.stop="$data.setSelectedVariant(value);; focusIndex = i; open = false" :disabled="!!disabledItems[i]"
:class="i === focusIndex ? 'active' : disabledItems[i] ? 'opacity-40' :''" x-effect="i === focusIndex && $el.parentElement ? $el.parentElement.scrollTop = $el.offsetTop - 120 : null" role="option" tabindex="-1"
:aria-selected="i === focusIndex">
<span class="block truncate input-select--font" x-html="titles[i]"></span>
<span class="absolute inset-y-0 left-0 flex items-center pl-3 text-theme-accent" :class="value === card?.selected_variant?.id ? 'opacity-100':'opacity-0'">
<svg data-icon-handle="check-mark" class="bg-current shrink-0 size-5 opacity-60" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-check-mark--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="check-mark"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }"
style="mask: var(--icon-check-mark); -webkit-mask: var(--icon-check-mark); aspect-ratio: var(--icon-check-mark-aspect-ratio, 1); "></svg>
</span>
</li>
</template>
</ul>
</template>
</template>
</div>
</fieldset>
</div>
<div data-style-id="sections--17726909284529__card_product_card_GdwfGt--layout_flex_wrap_H4L4LD" class="relative">
<div data-style-id="sections--17726909284529__card_product_card_GdwfGt--quick_view_button_xFF94Y" x-show="$data.showConditionally('always')">
<button type="submit" class="w-full button-primary" :class="card?.isAdding ? 'button-loading':''" x-effect="$el.classList.toggle('!hidden', !card?.selected_variant?.available)"
x-html="$el.getAttribute('data-content').replace('[price]', utils.formatMoney(card?.selected_variant?.price)).replace('[compare_at_price]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price)}</span>`) ?? ''"
@click.prevent.stop="handleAddToCart($event)"
data-content="
<svg data-icon-handle="lock" class="bg-current shrink-0 inline-flex items-center justify-center align-middle" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-lock--url`) }" :class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="lock" x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }" style="mask: var(--icon-lock); -webkit-mask: var(--icon-lock); aspect-ratio: var(--icon-lock-aspect-ratio, 1); height: 1.25em; color:currentColor;"></svg> Add • [price]">
<svg data-icon-handle="lock" class="bg-current shrink-0 inline-flex items-center justify-center align-middle" x-data="{ url: getComputedStyle(document.documentElement).getPropertyValue(`--icon-lock--url`) }"
:class="url ? 'cursor-pointer hf:opacity-70 transition-all duration-75': ''" :role="url ? 'link':''" :tabindex="url ? '0' : undefined" aria-label="lock"
x-init="if (url) { $el.onclick = (e) => utils.isExternalURL(url) ? window.open(url) : barba.go(url) }"
style="mask: var(--icon-lock); -webkit-mask: var(--icon-lock); aspect-ratio: var(--icon-lock-aspect-ratio, 1); height: 1.25em; color:currentColor;" role=""></svg> Add • $22.00</button>
<button type="button" disabled="disabled" class="w-full button-primary !hidden" x-effect="$el.classList.toggle('!hidden', card?.selected_variant?.available)"
x-html="$el.getAttribute('data-content').replace('[price]', utils.formatMoney(card?.selected_variant?.price)).replace('[compare_at_price]', `<span style='text-decoration: line-through; opacity: 0.5;'>${utils.formatMoney(card.selected_variant?.compare_at_price)}</span>`) ?? ''"
data-content="
Out of Stock"> Out of Stock</button>
</div>
</div>
</form>
POST /cart/add
<form data-x-if="" data-style-section-container="" method="post" action="/cart/add" class="flex h-full" @submit.prevent.stop="() => {}" style="flex-flow: ; max-height: calc(var(--max-h) - var(--pt) - var(--pb));">
<input type="hidden" name="id" :value="card?.selected_variant?.id">
<input type="hidden" name="quantity" value="1">
<div data-style-id="sections--17726909284529__card_product_card_GY3EpN--layout_flex_wrap_UrhJfB" class="relative">
<figure data-style-id="sections--17726909284529__card_product_card_GY3EpN--image_XwiFBQ" class="overflow-hidden shrink-0" x-show="primary_image || secondary_image"
x-data="{ primary_image: card?.product?.media?.[0], secondary_image: card?.product?.media?.[1] }">
<div data-style-skeleton="" class="relative isolate" x-show="!card?.hydrated">
<div class="h-full w-full animate-pulse rounded-md bg-gray-200/70">
</div>
</div>
<picture x-show="card?.hydrated" class="relative isolate block overflow-hidden group bg-inherit w-dynamic h-dynamic aspect-dynamic" data-style-image-container=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')" x-effect="() => {
if (`product_image` === 'variant_image' && card?.selected_variant?.featured_media) {
primary_image = card?.selected_variant?.featured_media;
}
if (`product_image` === 'metafield_image') {
primary_image = $data.getDynamicValue('[selected_variant.metafields.smart.image]') ?? primary_image
}
secondary_image = card?.product?.media?.find(media => media.id !== primary_image?.id)
}">
<img src="" x-show="!!primary_image" alt="" srcset="" :src="primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image" :alt="primary_image?.alt ?? card?.product?.title"
:srcset="primary_image ? utils.getImageSrcSet(primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image ?? '', 800) : ''" width="732" height="732" loading="lazy" onload="this.classList.remove('!opacity-0')"
class="pointer-events-none relative h-full w-full select-none overflow-hidden object-dynamic !opacity-0" sizes="(max-width: 768px) 50vw, (max-width: 1024px) 33vw, 25vw">
</picture>
</figure>
</div>
<div data-style-id="sections--17726909284529__card_product_card_GY3EpN--layout_flex_wrap_aLRwU7" class="relative">
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-14"><p>[product.title]</p></div>
" data-content-check="[product.title]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_GY3EpN--dynamic_text_BgbbRz" x-show="!!content_check.trim()" x-cloak=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')"
style="color: ">
<div x-html="content"></div>
</div>
</div>
</form>
POST /cart/add
<form data-x-if="" data-style-section-container="" method="post" action="/cart/add" class="flex h-full" @submit.prevent.stop="() => {}" style="flex-flow: ; max-height: calc(var(--max-h) - var(--pt) - var(--pb));"><input type="hidden"
id="_igTestGroups" class="_igTestGroups" name="properties[_igTestGroups]" value="4f2e8663c9e8"><input type="hidden" id="_igTestGroup" class="_igTestGroup" name="properties[_igTestGroup]" value="0299aeba-252d-4584-a9ca-4f2e8663c9e8">
<input type="hidden" name="id" :value="card?.selected_variant?.id" value="44405758623921">
<input type="hidden" name="quantity" value="1">
<div data-style-id="sections--17726909284529__card_product_card_GY3EpN--layout_flex_wrap_UrhJfB" class="relative">
<figure data-style-id="sections--17726909284529__card_product_card_GY3EpN--image_XwiFBQ" class="overflow-hidden shrink-0" x-show="primary_image || secondary_image"
x-data="{ primary_image: card?.product?.media?.[0], secondary_image: card?.product?.media?.[1] }">
<div data-style-skeleton="" class="relative isolate" x-show="!card?.hydrated" style="display: none;">
<div class="h-full w-full animate-pulse rounded-md bg-gray-200/70">
</div>
</div>
<picture x-show="card?.hydrated" class="relative isolate block overflow-hidden group bg-inherit w-dynamic h-dynamic aspect-dynamic" data-style-image-container=""
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')" x-effect="() => {
if (`product_image` === 'variant_image' && card?.selected_variant?.featured_media) {
primary_image = card?.selected_variant?.featured_media;
}
if (`product_image` === 'metafield_image') {
primary_image = $data.getDynamicValue('[selected_variant.metafields.smart.image]') ?? primary_image
}
secondary_image = card?.product?.media?.find(media => media.id !== primary_image?.id)
}" title="/products/lemon-elderflower?variant=44405758623921">
<img src="//happihourdrink.com/cdn/shop/files/Lemon-PDP.png?v=1726160948" x-show="!!primary_image" alt="Lemon Elderflower"
srcset="//happihourdrink.com/cdn/shop/files/Lemon-PDP.png?v=1726160948&width=48 48w,//happihourdrink.com/cdn/shop/files/Lemon-PDP.png?v=1726160948&width=96 96w,//happihourdrink.com/cdn/shop/files/Lemon-PDP.png?v=1726160948&width=256 256w,//happihourdrink.com/cdn/shop/files/Lemon-PDP.png?v=1726160948&width=384 384w,//happihourdrink.com/cdn/shop/files/Lemon-PDP.png?v=1726160948&width=460 460w,//happihourdrink.com/cdn/shop/files/Lemon-PDP.png?v=1726160948&width=640 640w,//happihourdrink.com/cdn/shop/files/Lemon-PDP.png?v=1726160948&width=1200 1200w"
:src="primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image" :alt="primary_image?.alt ?? card?.product?.title"
:srcset="primary_image ? utils.getImageSrcSet(primary_image?.src ?? primary_image?.preview_image?.src ?? primary_image ?? '', 800) : ''" width="732" height="732" loading="lazy" onload="this.classList.remove('!opacity-0')"
class="pointer-events-none relative h-full w-full select-none overflow-hidden object-dynamic !opacity-0" sizes="(max-width: 768px) 50vw, (max-width: 1024px) 33vw, 25vw">
</picture>
</figure>
</div>
<div data-style-id="sections--17726909284529__card_product_card_GY3EpN--layout_flex_wrap_aLRwU7" class="relative">
<div x-data="{ content: renderDynamicText($el.getAttribute('data-content')), content_check: renderDynamicText($el.getAttribute('data-content-check')) }" data-content="
<div class="_input-richtext text-14"><p>[product.title]</p></div>
" data-content-check="[product.title]" x-effect="() => { if (card?.selected_variant || card?.hydrated) { content = renderDynamicText($el.getAttribute('data-content')) } }"
data-style-id="sections--17726909284529__card_product_card_GY3EpN--dynamic_text_BgbbRz" x-show="!!content_check.trim()"
:title="`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`" role="button" tabindex="0"
@click.prevent.stop="barba.go(`${_stores.router?.pathname?.replace(/^.*?(\/collections\/[^/]*)?.*$/gi,'$1')?.replace(/^\/$/gi,'') ?? ''}/products/${card?.product?.handle}?variant=${card?.selected_variant?.id}`); $modal.setId('')"
style="color: " title="/products/lemon-elderflower?variant=44405758623921">
<div x-html="content">
<div class="_input-richtext text-14">
<p>Lemon Elderflower</p>
</div>
</div>
</div>
</div>
</form>
POST /contact#sections--17726909317297__content_grid_YFGBcp
<form method="post" action="/contact#sections--17726909317297__content_grid_YFGBcp" id="sections--17726909317297__content_grid_YFGBcp" accept-charset="UTF-8" class="" data-style-form="true"><input type="hidden" name="form_type"
value="customer"><input type="hidden" name="utf8" value="✓">
<label class="relative flex w-full input-text-inline" x-data="{ active: !!$refs.input.value && !!$refs.label?.textContent.trim(), label: $el, type: `text` }"
:class="active && false ? 'button-loading active' : active ? 'active' : false ? 'button-loading active' : ''">
<div class="relative flex w-full flex-1">
<input name="contact[email]" x-ref="input" type="text" placeholder="Enter your email" data-placeholder="Enter your email" :placeholder="active ? '': $el.getAttribute('data-placeholder')" autocorrect="off" aria-label="Email" :type="type"
autocomplete="email" required="required" :disabled="false" value="" @input="active = !!$el.value && !!$refs.label?.textContent.trim(); value = $el.value; "
@focus="active = !!$refs.input.value && !!$refs.label?.textContent.trim()" @blur="active = !!$refs.input.value && !!$refs.label?.textContent.trim()" class="appearance-none flex-1 bg-transparent !outline-none">
<span class="absolute opacity-0" x-ref="label">Email</span>
</div>
<button type="submit" aria-label="Submit form" class="px-2 !outline-none hf:opacity-70 rounded-sm hf:bg-inherit hf:bg-opacity-10 flex items-center"> Submit </button>
</label>
<input type="hidden" name="customer[tags]" value="Newsletter">
</form>
<form class="agp__buttonType__buttonContainer agp__buttonType__buttonContainer--pass"><input class="agp__buttonType__button agp__button" type="submit" value="YES, LET ME IN!"
style="color: rgb(255, 255, 255); background-color: rgb(99, 101, 105); border-color: rgb(0, 128, 96); border-radius: 4px; border-width: 0px;"></form>
<form class="agp__buttonType__buttonContainer agp__buttonType__buttonContainer--fail"><input class="agp__buttonType__button agp__button" type="submit" value="NO, NOT QUITE."
style="color: rgb(99, 101, 105); border-color: rgb(99, 101, 105); border-radius: 4px; border-width: 3px;"></form>
Text Content
FREE SHIPPING ON ORDERS $100+ | 2-DAY SHIPPING IS NOW AVAILABLE FOR 6 OR LESS 4-PACKS FREE SHIPPING ON ORDERS $100+ | 2-DAY SHIPPING IS NOW AVAILABLE FOR 6 OR LESS 4-PACKS FREE SHIPPING ON ORDERS $100+ | 2-DAY SHIPPING IS NOW AVAILABLE FOR 6 OR LESS 4-PACKS FREE SHIPPING ON ORDERS $100+ | 2-DAY SHIPPING IS NOW AVAILABLE FOR 6 OR LESS 4-PACKS FREE SHIPPING ON ORDERS $100+ | 2-DAY SHIPPING IS NOW AVAILABLE FOR 6 OR LESS 4-PACKS FREE SHIPPING ON ORDERS $100+ | 2-DAY SHIPPING IS NOW AVAILABLE FOR 6 OR LESS 4-PACKS FREE SHIPPING ON ORDERS $100+ | 2-DAY SHIPPING IS NOW AVAILABLE FOR 6 OR LESS 4-PACKS FREE SHIPPING ON ORDERS $100+ | 2-DAY SHIPPING IS NOW AVAILABLE FOR 6 OR LESS 4-PACKS FREE SHIPPING ON ORDERS $100+ | 2-DAY SHIPPING IS NOW AVAILABLE FOR 6 OR LESS 4-PACKS FREE SHIPPING ON ORDERS $100+ | 2-DAY SHIPPING IS NOW AVAILABLE FOR 6 OR LESS 4-PACKS YOU'VE UNLOCKED FREE SHIPPING ONLY $100.00 MORE FOR FREE SHIPPING! * Shop All * Drinks * Gummies * Find In-Store * Subscribe & Save 0 YOU'VE UNLOCKED FREE SHIPPING ONLY $100.00 MORE FOR FREE SHIPPING! YOUR CART (0) Your Cart is Empty 1 / 3 Shop All -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- Quantity item?.selling_plan_allocation?.selling_plan?.name ?? 'One time purchase' You May Also Like Checkout This is a gift Cart note SUBTOTAL $0.00 SHIPPING AND TAXES CALCULATED AT CHECKOUT. SHOP ALL to relax 1 / 2 to sleep 1 / 1 to socialize 1 / 4 to boost 1 / 1 bundles 1 / 4 variety packs 1 / 2 DRINKS 1 / 1 1 / 1 1 / 1 1 / 1 1 / 1 1 / 1 gummies 1 / 3 FIND IN-STORE SUBSCRIBE & SAVE BESTSELLERS ㅤLog In / Create Account ㅤOrder Status SHOP ALL Free Shipping on All Orders Over $50 Close Drawer STRENGTH 2.5 MG 1 / 1 5MG 1 / 5 10MG 1 / 2 OCCASION To Relax 1 / 2 To Sleep 1 / 1 To Boost 1 / 1 To Socialize 1 / 3 VARIETY PACKS 1 / 2 BUNDLES 1 / 4 Close Drawer Close Drawer Show full details Close Drawer Close 1 / 0 1 / 0 Sold out Sold out TO RELAX Glow BLOOD ORANGE GINGER Starting at $24.00 (146) Quick Shop Glow Sold out BEST-SELLER Sold out TO RELAX Glow BLOOD ORANGE GINGER Starting at $24.00 (146) Quick Shop Sold out Sold out TO SLEEP Nightcap Turkish Apple Starting at $24.00 100 Reviews Quick Shop card?.selected_variant?.title Lime Wild Mint 4-Pack Add • $22.00 Out of Stock card?.selected_variant?.title Lime Wild Mint 4-Pack Add • $22.00 Out of Stock Lemon Elderflower Shop Read More A Party in a Can A Party in a Can Meet Happi Dance, our newest seltzer made for an uplifting mood boost that is sure to enhance any celebration! Meet Happi Dance, our newest seltzer made for an uplifting mood boost that is sure to enhance any celebration! Shop Happi Dance Shop Happi Dance Shop THC Seltzers By Strength By Occasion By Flavor Variety Packs Bundles Happi Glow #1 Best-Seller "Refreshing, delicious & you get the results! I love the flavor, just the right amount of effervescence. This beverage is another dimension. I will be buying & trying more." -Grace K. Quick Shop Best-Sellers 1 / 4 The buzz is real. Find your happi The buzz is real. Find your happi 100% all natural goodness. There are zero chemicals or synthetics in our product. Happi is made with delta-9 THC derived naturally from hemp. Because the THC in Happi is derived naturally, we deliver 100% all natural goodness that falls right within the DEA and FDA guidelines. At just 20-50 calories, Happi is a guilt-free option. Find your Happi place in just 12-15 minutes. Most Happi customers describe their Happi feeling as a “light buzz” that slowly builds then tapers off. This is something we like to call the Happi Effect—a subtle sipping experience that keeps pace with you, not the other way around. Drink Happi. Feel Happi. “MY TRIED AND TRUE FAVORITE! AFTER A BUSY/STRESSFUL DAY THIS HITS THE SPOT EVERY TIME. I’VE BEEN KNOWN TO HAVE 2 ON A PARTICULARLY CRAZY DAY!” LUCY L. “I DON’T DRINK ALCOHOL BUT SOMETIMES I WANT AN ADULT BEVERAGE TO FEEL FESTIVE. THIS IS PERFECT. I FEEL THE FUN, BUT NONE OF THE ILL EFFECTS THAT ALCOHOL CAUSES. AND IT HAS A GREAT TASTE WITH NO STRANGE AFTERTASTE. I LOVE IT!” MELINDA B. "GREAT VALUE, GREAT PRODUCT. NICE TO BE ABLE TO ENJOY A LOW CALORIE BEVERAGE THAT ISN’T ALCOHOL BUT STILL GIVES YOU A BUZZ." ARIEL L. Shop Gummies 1 / 3 Connect with Us @happihourdrink Subscribe to our emails Email Submit Shop Drinks -------------------------------------------------------------------------------- Variety Packs -------------------------------------------------------------------------------- Bundles -------------------------------------------------------------------------------- Gummies -------------------------------------------------------------------------------- To Relax -------------------------------------------------------------------------------- To Socialize -------------------------------------------------------------------------------- To Sleep -------------------------------------------------------------------------------- To Boost Support FAQs -------------------------------------------------------------------------------- Test Results -------------------------------------------------------------------------------- Terms & Conditions -------------------------------------------------------------------------------- Shipping & Returns -------------------------------------------------------------------------------- Privacy Policy -------------------------------------------------------------------------------- Find Happi Near You Quick Links About Us -------------------------------------------------------------------------------- Recipes -------------------------------------------------------------------------------- Careers -------------------------------------------------------------------------------- Wholesale -------------------------------------------------------------------------------- Contact Us -------------------------------------------------------------------------------- Refer a Friend COPYRIGHT Happi © 2024 Follow Us -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- WE’RE HAPPI YOU’RE HERE! Please confirm you're over 21 years old. By entering this site you are agreeing to the Terms of Use and Privacy Policy.