TAMSS MALL
Cover Circényssa
Logo Circényssa
Boutique Officielle Certifiée

Circényssa

"Voir Circé partout même quand elle n'est pas nommée.."

Sfax 3 Références 4.9 Score de Confiance
Facebook
Instagram

À Propos de Nous

Navigation Rayons

Collection Exclusive

Découvrez notre sélection rigoureuse de produits.

Trier par :
0 && this.currentStock <= 5; }, get shouldForceQuote() { return this.isQuoteMode || (this.isService && this.currentPrice <= 0); }, get displaySku() { return (this.selectedVariant && this.selectedVariant.sku) ? this.selectedVariant.sku : "PROD-UVJHS"; }, get activeVariantLabel() { if (!this.selectedVariant) return ''; return this.selectedVariant.label || this.selectedVariant.name || ''; }, init() { if (!this.isAuth) { let storageKey = 'smartbs_wishlist_' + this.tenantId; let wl = JSON.parse(localStorage.getItem(storageKey) || '[]'); this.inWishlist = wl.includes(this.id); } window.addEventListener('wishlist-updated', (e) => { if (e.detail.product_id === this.id) { this.inWishlist = e.detail.added; } }); }, get currentPrice() { let p = this.selectedVariant ? parseFloat(this.selectedVariant.price) : this.basePrice; return p > 0 ? p : this.basePrice; }, formatPrice(p) { return Number(p).toLocaleString('fr-TN', { minimumFractionDigits: 3, maximumFractionDigits: 3, useGrouping: false }); }, handleCardNavigation(event) { if (event.defaultPrevented || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return; event.preventDefault(); if (typeof window.smartTrack === 'function') { window.smartTrack(this.isService ? 'service_click' : 'product_click', { entity_type: this.isService ? 'service' : 'product', item_id: this.id, item_name: "Ensemble \"Saphir Cisel\u00e9\"" }); } this.openQuickView(); }, openQuickView() { const activeGallery = this.galleryImages && this.galleryImages.length ? this.galleryImages : [this.activeImage].filter(Boolean); const mappedVariants = (this.variants || []).map(v => ({ ...v, price_formatted: this.formatPrice(v.price || 0) })); window.dispatchEvent(new CustomEvent('open-product-quickview', { detail: { id: this.id, url: "https:\/\/tamssmall.tn\/catalogue\/produit\/ensemble-saphir-cisele-z9o8s", name: "Ensemble \"Saphir Cisel\u00e9\"", summary: "L'harmonie parfaite entre modernit\u00e9 et tradition.\r\nSuccombez au charme irr\u00e9sistible de cet ensemble veste et short. Confectionn\u00e9 dans un tissu richement brod\u00e9 \u00e0 la machine, il se distingue par une touche d'exception : un...", type: this.isService ? 'service' : 'product', is_service: this.isService, is_quote_mode: this.isQuoteMode, should_force_quote: this.shouldForceQuote, manage_stock: this.productManageStock, allow_backorder: this.allowBackorder, stock: this.currentStock, sku: this.displaySku, unit: "pi\u00e8ce", currency: "TND", image: this.activeImage || "https:\/\/tamssmall.tn\/storage\/products\/57HtMr0C-1776332202.webp", active_image: this.activeImage || "https:\/\/tamssmall.tn\/storage\/products\/57HtMr0C-1776332202.webp", gallery: activeGallery, price: this.currentPrice, price_formatted: this.formatPrice(this.currentPrice), compare_price_formatted: "0,000", seller: {"name":"Circ\u00e9nyssa","url":"https:\/\/tamssmall.tn\/catalogue\/boutique\/circenyssa-zPLF","logo":"https:\/\/tamssmall.tn\/storage\/sellers\/logos\/VgKKB3BOsxtQKNvrHX5XOPd8VvuHlzaEDWOmeblw.jpg"}, category: "V\u00eatements", wa_link: "https:\/\/wa.me\/21625723918?text=Bonjour%2C+je+suis+int%C3%A9ress%C3%A9+par+%3A+Ensemble+%22Saphir+Cisel%C3%A9%22", booking_enabled: true, variants: mappedVariants, selected_variant: this.selectedVariant ? { ...this.selectedVariant, price_formatted: this.formatPrice(this.selectedVariant.price || 0) } : null } })); }, selectVariant(v) { if (this.selectedVariant && this.selectedVariant.id === v.id) { this.selectedVariant = null; this.activeImage = "https:\/\/tamssmall.tn\/storage\/products\/57HtMr0C-1776332202.webp"; } else { this.selectedVariant = v; if(v.image) this.activeImage = v.image; } }, selectGalleryImage(img, idx) { this.selectedVariant = null; this.activeImage = img; this.galleryIndex = idx; }, stepGallery(direction) { if (!this.galleryImages.length) return; this.selectedVariant = null; this.galleryIndex = (this.galleryIndex + direction + this.galleryImages.length) % this.galleryImages.length; this.activeImage = this.galleryImages[this.galleryIndex]; }, openQuantityPopup() { if (this.variants.length > 0 && !this.selectedVariant) { if (typeof Toastify !== 'undefined') { Toastify({ text: this.trans.choose_option, duration: 2500, gravity: 'bottom', position: 'center', style: { background: '#f59e0b', color: '#fff', borderRadius: '10px', fontWeight: 'bold', marginBottom: '80px' } }).showToast(); } else { alert(this.trans.choose_option); } return; } if (this.purchaseBlocked && !this.isQuoteMode) { if (typeof Toastify !== 'undefined') { Toastify({ text: this.trans.out_of_stock, duration: 2500, gravity: 'bottom', position: 'center', style: { background: '#ef4444', color: '#fff', borderRadius: '10px', fontWeight: 'bold', marginBottom: '80px' } }).showToast(); } else { alert(this.trans.out_of_stock); } return; } this.qty = 1; this.openQty = true; }, toggleWishlist() { this.inWishlist = !this.inWishlist; if (!this.isAuth) { let storageKey = 'smartbs_wishlist_' + this.tenantId; let wl = JSON.parse(localStorage.getItem(storageKey) || '[]'); if (this.inWishlist) { if (!wl.includes(this.id)) wl.push(this.id); } else { wl = wl.filter(id => id !== this.id); } localStorage.setItem(storageKey, JSON.stringify(wl)); window.dispatchEvent(new CustomEvent('wishlist-updated', { detail: { count: wl.length, product_id: this.id, added: this.inWishlist } })); } else { const url = 'https://tamssmall.tn/wishlist/toggle'; fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': document.querySelector('meta[name=\'csrf-token\']').content, 'Accept': 'application/json' }, body: JSON.stringify({ product_id: this.id }) }).then(res => res.json()) .then(data => { window.dispatchEvent(new CustomEvent('wishlist-updated', { detail: { added: this.inWishlist, product_id: this.id } })); }) .catch(err => { this.inWishlist = !this.inWishlist; }); } if (typeof Toastify !== 'undefined') { Toastify({ text: this.inWishlist ? this.trans.added_fav : this.trans.removed_fav, duration: 2000, gravity: 'bottom', position: 'center', style: { background: this.inWishlist ? '#f43f5e' : '#64748b', borderRadius: '10px', fontWeight: 'bold', marginBottom: '80px' } }).showToast(); } }, addToCart() { this.openQty = false; let variantId = this.selectedVariant ? this.selectedVariant.id : null; let variantSku = this.selectedVariant ? this.selectedVariant.sku : null; let variantName = this.selectedVariant ? this.selectedVariant.name : null; let payload = { quantity: this.qty, variant_id: variantId, variant_sku: variantSku, variant_name: variantName }; const addUrl = 'https://tamssmall.tn/panier/ajouter/' + this.id; const csrfToken = document.querySelector('meta[name=\'csrf-token\']')?.content; fetch(addUrl, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': csrfToken, 'Accept': 'application/json' }, body: JSON.stringify(payload) }).then(res => res.json()).then(data => { const count = data.cart_count ?? data.count ?? '+1'; const total = data.cart_total_formatted ?? data.total_formatted ?? null; document.querySelectorAll('.cart-count-badge').forEach(el => el.innerText = count); if (total) document.querySelectorAll('.cart-total-price').forEach(el => el.innerText = total); window.dispatchEvent(new Event('cart-updated')); if (typeof window.smartTrack === 'function') { window.smartTrack('add_to_cart', { entity_type: this.isService ? 'service' : 'product', item_id: this.id, item_name: "Ensemble \"Saphir Cisel\u00e9\"", quantity: this.qty }); } let successMsg = ''; if(this.isQuoteMode) { successMsg = variantName ? this.trans.opt_add_quote.replace(':name', variantName) : this.trans.prod_add_quote; } else { successMsg = variantName ? this.trans.opt_add.replace(':name', variantName) : this.trans.prod_add; } if (typeof Toastify !== 'undefined') { Toastify({ text: '✅ ' + successMsg, duration: 2500, gravity: 'bottom', position: 'center', style: { background: '#10b981', color: '#fff', borderRadius: '10px', fontWeight: 'bold', marginBottom: '80px' } }).showToast(); } else { alert(successMsg + ' !'); } }).catch(error => { console.error('Erreur:', error); }); } }" @mouseenter="isHovered = true" @mouseleave="isHovered = false" class="group relative bg-white rounded-[2rem] p-3 md:p-4 border border-slate-100 hover:border-slate-200 transition-all duration-500 hover:shadow-2xl hover:shadow-slate-200/50 flex flex-col h-full" style="--primary-color: #095155; --secondary-color: #ff429a;">
En Rupture

Vite, plus que

Ensemble "Saphir Ciselé"

Aucun avis
0 && this.currentStock <= 5; }, get shouldForceQuote() { return this.isQuoteMode || (this.isService && this.currentPrice <= 0); }, get displaySku() { return (this.selectedVariant && this.selectedVariant.sku) ? this.selectedVariant.sku : "PROD-NDB4L"; }, get activeVariantLabel() { if (!this.selectedVariant) return ''; return this.selectedVariant.label || this.selectedVariant.name || ''; }, init() { if (!this.isAuth) { let storageKey = 'smartbs_wishlist_' + this.tenantId; let wl = JSON.parse(localStorage.getItem(storageKey) || '[]'); this.inWishlist = wl.includes(this.id); } window.addEventListener('wishlist-updated', (e) => { if (e.detail.product_id === this.id) { this.inWishlist = e.detail.added; } }); }, get currentPrice() { let p = this.selectedVariant ? parseFloat(this.selectedVariant.price) : this.basePrice; return p > 0 ? p : this.basePrice; }, formatPrice(p) { return Number(p).toLocaleString('fr-TN', { minimumFractionDigits: 3, maximumFractionDigits: 3, useGrouping: false }); }, handleCardNavigation(event) { if (event.defaultPrevented || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return; event.preventDefault(); if (typeof window.smartTrack === 'function') { window.smartTrack(this.isService ? 'service_click' : 'product_click', { entity_type: this.isService ? 'service' : 'product', item_id: this.id, item_name: "Veste \"H\u00e9ritage R\u00e9tro\"" }); } this.openQuickView(); }, openQuickView() { const activeGallery = this.galleryImages && this.galleryImages.length ? this.galleryImages : [this.activeImage].filter(Boolean); const mappedVariants = (this.variants || []).map(v => ({ ...v, price_formatted: this.formatPrice(v.price || 0) })); window.dispatchEvent(new CustomEvent('open-product-quickview', { detail: { id: this.id, url: "https:\/\/tamssmall.tn\/catalogue\/produit\/veste-heritage-retro-bwcwv", name: "Veste \"H\u00e9ritage R\u00e9tro\"", summary: "Voyagez dans le temps avec une pi\u00e8ce d'exception.\r\nLa veste \"H\u00e9ritage R\u00e9tro\" n'est pas un v\u00eatement, c'est une d\u00e9claration de style. Inspir\u00e9e des silhouettes audacieuses des d\u00e9cennies pass\u00e9es, cette veste vintage poss\u00e8de...", type: this.isService ? 'service' : 'product', is_service: this.isService, is_quote_mode: this.isQuoteMode, should_force_quote: this.shouldForceQuote, manage_stock: this.productManageStock, allow_backorder: this.allowBackorder, stock: this.currentStock, sku: this.displaySku, unit: "pi\u00e8ce", currency: "TND", image: this.activeImage || "https:\/\/tamssmall.tn\/storage\/products\/7iMZdIXA-1776332202.webp", active_image: this.activeImage || "https:\/\/tamssmall.tn\/storage\/products\/7iMZdIXA-1776332202.webp", gallery: activeGallery, price: this.currentPrice, price_formatted: this.formatPrice(this.currentPrice), compare_price_formatted: "0,000", seller: {"name":"Circ\u00e9nyssa","url":"https:\/\/tamssmall.tn\/catalogue\/boutique\/circenyssa-zPLF","logo":"https:\/\/tamssmall.tn\/storage\/sellers\/logos\/VgKKB3BOsxtQKNvrHX5XOPd8VvuHlzaEDWOmeblw.jpg"}, category: "V\u00eatements", wa_link: "https:\/\/wa.me\/21625723918?text=Bonjour%2C+je+suis+int%C3%A9ress%C3%A9+par+%3A+Veste+%22H%C3%A9ritage+R%C3%A9tro%22", booking_enabled: true, variants: mappedVariants, selected_variant: this.selectedVariant ? { ...this.selectedVariant, price_formatted: this.formatPrice(this.selectedVariant.price || 0) } : null } })); }, selectVariant(v) { if (this.selectedVariant && this.selectedVariant.id === v.id) { this.selectedVariant = null; this.activeImage = "https:\/\/tamssmall.tn\/storage\/products\/7iMZdIXA-1776332202.webp"; } else { this.selectedVariant = v; if(v.image) this.activeImage = v.image; } }, selectGalleryImage(img, idx) { this.selectedVariant = null; this.activeImage = img; this.galleryIndex = idx; }, stepGallery(direction) { if (!this.galleryImages.length) return; this.selectedVariant = null; this.galleryIndex = (this.galleryIndex + direction + this.galleryImages.length) % this.galleryImages.length; this.activeImage = this.galleryImages[this.galleryIndex]; }, openQuantityPopup() { if (this.variants.length > 0 && !this.selectedVariant) { if (typeof Toastify !== 'undefined') { Toastify({ text: this.trans.choose_option, duration: 2500, gravity: 'bottom', position: 'center', style: { background: '#f59e0b', color: '#fff', borderRadius: '10px', fontWeight: 'bold', marginBottom: '80px' } }).showToast(); } else { alert(this.trans.choose_option); } return; } if (this.purchaseBlocked && !this.isQuoteMode) { if (typeof Toastify !== 'undefined') { Toastify({ text: this.trans.out_of_stock, duration: 2500, gravity: 'bottom', position: 'center', style: { background: '#ef4444', color: '#fff', borderRadius: '10px', fontWeight: 'bold', marginBottom: '80px' } }).showToast(); } else { alert(this.trans.out_of_stock); } return; } this.qty = 1; this.openQty = true; }, toggleWishlist() { this.inWishlist = !this.inWishlist; if (!this.isAuth) { let storageKey = 'smartbs_wishlist_' + this.tenantId; let wl = JSON.parse(localStorage.getItem(storageKey) || '[]'); if (this.inWishlist) { if (!wl.includes(this.id)) wl.push(this.id); } else { wl = wl.filter(id => id !== this.id); } localStorage.setItem(storageKey, JSON.stringify(wl)); window.dispatchEvent(new CustomEvent('wishlist-updated', { detail: { count: wl.length, product_id: this.id, added: this.inWishlist } })); } else { const url = 'https://tamssmall.tn/wishlist/toggle'; fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': document.querySelector('meta[name=\'csrf-token\']').content, 'Accept': 'application/json' }, body: JSON.stringify({ product_id: this.id }) }).then(res => res.json()) .then(data => { window.dispatchEvent(new CustomEvent('wishlist-updated', { detail: { added: this.inWishlist, product_id: this.id } })); }) .catch(err => { this.inWishlist = !this.inWishlist; }); } if (typeof Toastify !== 'undefined') { Toastify({ text: this.inWishlist ? this.trans.added_fav : this.trans.removed_fav, duration: 2000, gravity: 'bottom', position: 'center', style: { background: this.inWishlist ? '#f43f5e' : '#64748b', borderRadius: '10px', fontWeight: 'bold', marginBottom: '80px' } }).showToast(); } }, addToCart() { this.openQty = false; let variantId = this.selectedVariant ? this.selectedVariant.id : null; let variantSku = this.selectedVariant ? this.selectedVariant.sku : null; let variantName = this.selectedVariant ? this.selectedVariant.name : null; let payload = { quantity: this.qty, variant_id: variantId, variant_sku: variantSku, variant_name: variantName }; const addUrl = 'https://tamssmall.tn/panier/ajouter/' + this.id; const csrfToken = document.querySelector('meta[name=\'csrf-token\']')?.content; fetch(addUrl, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': csrfToken, 'Accept': 'application/json' }, body: JSON.stringify(payload) }).then(res => res.json()).then(data => { const count = data.cart_count ?? data.count ?? '+1'; const total = data.cart_total_formatted ?? data.total_formatted ?? null; document.querySelectorAll('.cart-count-badge').forEach(el => el.innerText = count); if (total) document.querySelectorAll('.cart-total-price').forEach(el => el.innerText = total); window.dispatchEvent(new Event('cart-updated')); if (typeof window.smartTrack === 'function') { window.smartTrack('add_to_cart', { entity_type: this.isService ? 'service' : 'product', item_id: this.id, item_name: "Veste \"H\u00e9ritage R\u00e9tro\"", quantity: this.qty }); } let successMsg = ''; if(this.isQuoteMode) { successMsg = variantName ? this.trans.opt_add_quote.replace(':name', variantName) : this.trans.prod_add_quote; } else { successMsg = variantName ? this.trans.opt_add.replace(':name', variantName) : this.trans.prod_add; } if (typeof Toastify !== 'undefined') { Toastify({ text: '✅ ' + successMsg, duration: 2500, gravity: 'bottom', position: 'center', style: { background: '#10b981', color: '#fff', borderRadius: '10px', fontWeight: 'bold', marginBottom: '80px' } }).showToast(); } else { alert(successMsg + ' !'); } }).catch(error => { console.error('Erreur:', error); }); } }" @mouseenter="isHovered = true" @mouseleave="isHovered = false" class="group relative bg-white rounded-[2rem] p-3 md:p-4 border border-slate-100 hover:border-slate-200 transition-all duration-500 hover:shadow-2xl hover:shadow-slate-200/50 flex flex-col h-full" style="--primary-color: #095155; --secondary-color: #ff429a;">
En Rupture

Vite, plus que

Veste "Héritage Rétro"

Aucun avis
0 && this.currentStock <= 5; }, get shouldForceQuote() { return this.isQuoteMode || (this.isService && this.currentPrice <= 0); }, get displaySku() { return (this.selectedVariant && this.selectedVariant.sku) ? this.selectedVariant.sku : "PROD-D5SMU"; }, get activeVariantLabel() { if (!this.selectedVariant) return ''; return this.selectedVariant.label || this.selectedVariant.name || ''; }, init() { if (!this.isAuth) { let storageKey = 'smartbs_wishlist_' + this.tenantId; let wl = JSON.parse(localStorage.getItem(storageKey) || '[]'); this.inWishlist = wl.includes(this.id); } window.addEventListener('wishlist-updated', (e) => { if (e.detail.product_id === this.id) { this.inWishlist = e.detail.added; } }); }, get currentPrice() { let p = this.selectedVariant ? parseFloat(this.selectedVariant.price) : this.basePrice; return p > 0 ? p : this.basePrice; }, formatPrice(p) { return Number(p).toLocaleString('fr-TN', { minimumFractionDigits: 3, maximumFractionDigits: 3, useGrouping: false }); }, handleCardNavigation(event) { if (event.defaultPrevented || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return; event.preventDefault(); if (typeof window.smartTrack === 'function') { window.smartTrack(this.isService ? 'service_click' : 'product_click', { entity_type: this.isService ? 'service' : 'product', item_id: this.id, item_name: "Textile \/ Mode" }); } this.openQuickView(); }, openQuickView() { const activeGallery = this.galleryImages && this.galleryImages.length ? this.galleryImages : [this.activeImage].filter(Boolean); const mappedVariants = (this.variants || []).map(v => ({ ...v, price_formatted: this.formatPrice(v.price || 0) })); window.dispatchEvent(new CustomEvent('open-product-quickview', { detail: { id: this.id, url: "https:\/\/tamssmall.tn\/catalogue\/produit\/textile-mode-mkkkj", name: "Textile \/ Mode", summary: "L'\u00e9l\u00e9gance mystique \u00e0 porter de main.\r\nPlongez dans le luxe absolu avec notre cape en velours de soie noir profond. Enti\u00e8rement brod\u00e9e \u00e0 la main pour capturer l'\u00e9clat d'un ciel nocturne, cette pi\u00e8ce d'exception allie nob...", type: this.isService ? 'service' : 'product', is_service: this.isService, is_quote_mode: this.isQuoteMode, should_force_quote: this.shouldForceQuote, manage_stock: this.productManageStock, allow_backorder: this.allowBackorder, stock: this.currentStock, sku: this.displaySku, unit: "pi\u00e8ce", currency: "TND", image: this.activeImage || "https:\/\/tamssmall.tn\/storage\/products\/iKm9Lkii-1776332202.webp", active_image: this.activeImage || "https:\/\/tamssmall.tn\/storage\/products\/iKm9Lkii-1776332202.webp", gallery: activeGallery, price: this.currentPrice, price_formatted: this.formatPrice(this.currentPrice), compare_price_formatted: "0,000", seller: {"name":"Circ\u00e9nyssa","url":"https:\/\/tamssmall.tn\/catalogue\/boutique\/circenyssa-zPLF","logo":"https:\/\/tamssmall.tn\/storage\/sellers\/logos\/VgKKB3BOsxtQKNvrHX5XOPd8VvuHlzaEDWOmeblw.jpg"}, category: "V\u00eatements", wa_link: "https:\/\/wa.me\/21625723918?text=Bonjour%2C+je+suis+int%C3%A9ress%C3%A9+par+%3A+Textile+%2F+Mode", booking_enabled: true, variants: mappedVariants, selected_variant: this.selectedVariant ? { ...this.selectedVariant, price_formatted: this.formatPrice(this.selectedVariant.price || 0) } : null } })); }, selectVariant(v) { if (this.selectedVariant && this.selectedVariant.id === v.id) { this.selectedVariant = null; this.activeImage = "https:\/\/tamssmall.tn\/storage\/products\/iKm9Lkii-1776332202.webp"; } else { this.selectedVariant = v; if(v.image) this.activeImage = v.image; } }, selectGalleryImage(img, idx) { this.selectedVariant = null; this.activeImage = img; this.galleryIndex = idx; }, stepGallery(direction) { if (!this.galleryImages.length) return; this.selectedVariant = null; this.galleryIndex = (this.galleryIndex + direction + this.galleryImages.length) % this.galleryImages.length; this.activeImage = this.galleryImages[this.galleryIndex]; }, openQuantityPopup() { if (this.variants.length > 0 && !this.selectedVariant) { if (typeof Toastify !== 'undefined') { Toastify({ text: this.trans.choose_option, duration: 2500, gravity: 'bottom', position: 'center', style: { background: '#f59e0b', color: '#fff', borderRadius: '10px', fontWeight: 'bold', marginBottom: '80px' } }).showToast(); } else { alert(this.trans.choose_option); } return; } if (this.purchaseBlocked && !this.isQuoteMode) { if (typeof Toastify !== 'undefined') { Toastify({ text: this.trans.out_of_stock, duration: 2500, gravity: 'bottom', position: 'center', style: { background: '#ef4444', color: '#fff', borderRadius: '10px', fontWeight: 'bold', marginBottom: '80px' } }).showToast(); } else { alert(this.trans.out_of_stock); } return; } this.qty = 1; this.openQty = true; }, toggleWishlist() { this.inWishlist = !this.inWishlist; if (!this.isAuth) { let storageKey = 'smartbs_wishlist_' + this.tenantId; let wl = JSON.parse(localStorage.getItem(storageKey) || '[]'); if (this.inWishlist) { if (!wl.includes(this.id)) wl.push(this.id); } else { wl = wl.filter(id => id !== this.id); } localStorage.setItem(storageKey, JSON.stringify(wl)); window.dispatchEvent(new CustomEvent('wishlist-updated', { detail: { count: wl.length, product_id: this.id, added: this.inWishlist } })); } else { const url = 'https://tamssmall.tn/wishlist/toggle'; fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': document.querySelector('meta[name=\'csrf-token\']').content, 'Accept': 'application/json' }, body: JSON.stringify({ product_id: this.id }) }).then(res => res.json()) .then(data => { window.dispatchEvent(new CustomEvent('wishlist-updated', { detail: { added: this.inWishlist, product_id: this.id } })); }) .catch(err => { this.inWishlist = !this.inWishlist; }); } if (typeof Toastify !== 'undefined') { Toastify({ text: this.inWishlist ? this.trans.added_fav : this.trans.removed_fav, duration: 2000, gravity: 'bottom', position: 'center', style: { background: this.inWishlist ? '#f43f5e' : '#64748b', borderRadius: '10px', fontWeight: 'bold', marginBottom: '80px' } }).showToast(); } }, addToCart() { this.openQty = false; let variantId = this.selectedVariant ? this.selectedVariant.id : null; let variantSku = this.selectedVariant ? this.selectedVariant.sku : null; let variantName = this.selectedVariant ? this.selectedVariant.name : null; let payload = { quantity: this.qty, variant_id: variantId, variant_sku: variantSku, variant_name: variantName }; const addUrl = 'https://tamssmall.tn/panier/ajouter/' + this.id; const csrfToken = document.querySelector('meta[name=\'csrf-token\']')?.content; fetch(addUrl, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': csrfToken, 'Accept': 'application/json' }, body: JSON.stringify(payload) }).then(res => res.json()).then(data => { const count = data.cart_count ?? data.count ?? '+1'; const total = data.cart_total_formatted ?? data.total_formatted ?? null; document.querySelectorAll('.cart-count-badge').forEach(el => el.innerText = count); if (total) document.querySelectorAll('.cart-total-price').forEach(el => el.innerText = total); window.dispatchEvent(new Event('cart-updated')); if (typeof window.smartTrack === 'function') { window.smartTrack('add_to_cart', { entity_type: this.isService ? 'service' : 'product', item_id: this.id, item_name: "Textile \/ Mode", quantity: this.qty }); } let successMsg = ''; if(this.isQuoteMode) { successMsg = variantName ? this.trans.opt_add_quote.replace(':name', variantName) : this.trans.prod_add_quote; } else { successMsg = variantName ? this.trans.opt_add.replace(':name', variantName) : this.trans.prod_add; } if (typeof Toastify !== 'undefined') { Toastify({ text: '✅ ' + successMsg, duration: 2500, gravity: 'bottom', position: 'center', style: { background: '#10b981', color: '#fff', borderRadius: '10px', fontWeight: 'bold', marginBottom: '80px' } }).showToast(); } else { alert(successMsg + ' !'); } }).catch(error => { console.error('Erreur:', error); }); } }" @mouseenter="isHovered = true" @mouseleave="isHovered = false" class="group relative bg-white rounded-[2rem] p-3 md:p-4 border border-slate-100 hover:border-slate-200 transition-all duration-500 hover:shadow-2xl hover:shadow-slate-200/50 flex flex-col h-full" style="--primary-color: #095155; --secondary-color: #ff429a;">
En Rupture

Vite, plus que

Textile / Mode

Aucun avis

Sur devis

Reference

Stock