Luxe green and gold palette brings glam vintage vibes to your clips
Includes pearls, flowers, and gemstone-inspired accents for standout style
Interchangeable charms allow endless customization and playful looks
Perfect for statement looks or subtle luxe accents for day-to-night styling
Instantly refresh your clips without buying new ones
Express your personality with charms that match moods, outfits, or events
Collect, mix, and match for endless styling combinations
Align the back of the KitschPop™ charm with the hole of your choice on your KitschPop™ accessory.
Push in while twisting until you feel it POP securely into place.
Pro Tip: More charms, more style! Pair these KitschPop™ Charms with KitschPop™ Charm Accessories (sold separately) to mix & match for a unique, personalized look.
Zinc Alloy
Pearl
Silicone
Acrylic
Glass Diamond
Resin
{
discount_percentage = $event.detail?.percentage || 0;
})"
x-init="$watch('selected', value => {
if (value.length != total_items) {
discount_percentage = 0;
}else{
discount_percentage = 0;
}
})"
x-data="{
renderPrice(price){
let total = price;
if(this.discount_percentage > 0){
total = price - (price * (this.discount_percentage / 100));
}
return Unick.formatMoney(total);
},
selected: [],
fixed_product: false,
discount_percentage: 0,
total_items: 3,
imgSrc(src, width) {
if (!src) return '';
if (/[?&]width=/.test(src)) return src.replace(/([?&]width=)\d+/, '$1' + width);
return src + (src.includes('?') ? '&' : '?') + 'width=' + width;
},
getSrcset(src) {
if (!src) return '';
return [72, 100, 144, 200].map(w => this.imgSrc(src, w) + ' ' + w + 'w').join(', ');
},
add(item) {
this.selected.push(item)
},
remove(id) {
this.selected = this.selected.filter(item => item.id !== id)
},
isInBundle(id) {
return this.selected.some(item => item.id === id)
},
priceBeforeDiscount(){
let total = 0;
this.selected.forEach(function (item) {
total += item.price;
})
return total;
},
totalPrice(){
let total = 0;
this.selected.forEach(function (item) {
total += item.price;
})
total = total - (total * (this.discount_percentage / 100));
let extraDiscount = 0;
let discount = 0;
this.selected.forEach(function (item) {
item.tags.forEach(function (tag) {
if(tag.includes('discount:') || tag.includes('Discount:') || tag.includes('discount: ') || tag.includes('Discount: ')){
discount = tag.split(':')[1];
}
})
})
if(discount > 0){
extraDiscount = total * (discount / 100);
}
return total - extraDiscount;
},
addToCart(){
let cartObj = [];
let bundleTitle = `KitschPop™️ Charms in Vintage Emerald`;
let bundleHandle = `kitschpop-charms-in-vintage-emerald`;
let bundleCount = 3;
let bundleQty = 1;
let index = 0;
// Update button text to 'adding...'
this.$refs.addToCartButton.textContent = 'Adding...';
this.selected.forEach(function (item) {
cartObj.push({
quantity: 1,
id: item.variants[0].id,
properties: {
'_fbt_bundle': bundleTitle,
'_fbt_bundle_handle': bundleHandle,
'_fbt_bundle_count': bundleCount,
}
})
})
if(this.fixed_product && this.total_items == this.selected.length){
cartObj = [];
cartObj.push({
quantity: 1,
id: this.fixed_product,
})
}
fetch(routes.cart_add_url + '.js', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
items: cartObj
})
})
.then(response => {
// Update button text back to 'add to cart'
this.$refs.addToCartButton.textContent = 'Add to cart';
// Update cart with event dispatch
this.$dispatch('update-cart', { cart: response });
// Open cart after adding product
this.$dispatch('toggle-cart-drawer');
});
}
}">
Register to receive a notification when this item comes back in stock.
Please enter a valid email address.
Thanks for signing up! We'll send you an email when the product becomes available.
{
let mainAddToCart = document.querySelector('.product__info-wrapper .button-add-to-cart, .product__info-wrapper .product-form__submit');
if(mainAddToCart) {
let rect = mainAddToCart.getBoundingClientRect();
// Hide floating cart when main button is visible (with some buffer)
show = rect.top > window.innerHeight || rect.bottom < 0;
} else {
// If main button not found, show floating cart
show = true;
}
})"
x-init="$nextTick(() => {
// Delay initialization to ensure Alpine has rendered the main add-to-cart button
setTimeout(() => {
let mainAddToCart = document.querySelector('.product__info-wrapper .button-add-to-cart, .product__info-wrapper .product-form__submit');
if(mainAddToCart) {
let rect = mainAddToCart.getBoundingClientRect();
show = rect.top > window.innerHeight || rect.bottom < 0;
} else {
// Fallback: show sticky cart if main button not found after delay
show = true;
}
}, 500);
})"
class="add-to-cart-footer p-3 bg-white text-black fixed bottom-0 w-full z-20 shadow border-t">
Comp. Value represents the price that was previously offered for the product or the estimated market price for comparable items elsewhere. As prices often fluctuate, we cannot guarantee that the comp value price reflects the prevailing market price at any given time.
Choosing a selection results in a full page refresh.