Black Sequin Cutout Halter Maxi Gown

$79.00
/** * 优惠码组件模型类 * 处理优惠码的显示和交互逻辑 */ class SpzCustomDiscountCodeModel extends SPZ.BaseElement { constructor(element) { super(element); // 复制按钮和内容的类名 this.copyBtnClass = "discount_code_btn" this.copyClass = "discount_code_value" } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { // 初始化服务 this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.xhr_ = SPZServices.xhrFor(this.win); } /** * 渲染优惠码组件 * @param {Object} data - 渲染数据 */ doRender_(data) { return this.templates_ .findAndRenderTemplate(this.element, Object.assign(this.getDefaultData(), data) ) .then((el) => { this.clearDom(); this.element.appendChild(el); // 绑定复制代码功能 this.copyCode(el, data); }); } /** * 获取渲染模板 * @param {Object} data - 渲染数据 */ getRenderTemplate(data) { const renderData = Object.assign(this.getDefaultData(), data); return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { this.clearDom(); return el; }); } /** * 清除DOM内容 */ clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } /** * 获取默认数据 * @returns {Object} 默认数据对象 */ getDefaultData() { return { isMobile: appDiscountUtils.judgeMobile(), isRTL: appDiscountUtils.judgeRTL(), image_domain: this.win.SHOPLAZZA.image_domain, copyBtnClass: this.copyBtnClass, copyClass: this.copyClass } } /** * 复制优惠码功能 * @param {Element} el - 当前元素 */ copyCode(el) { const copyBtnList = el.querySelectorAll(`.${this.copyBtnClass}`); if (copyBtnList.length > 0) { copyBtnList.forEach(item => { item.onclick = async () => { // 确保获取正确的元素和内容 const codeElement = item.querySelector(`.${this.copyClass}`); if (!codeElement) return; // 获取纯文本内容 const textToCopy = codeElement.innerText.trim(); // 尝试使用现代API,如果失败则使用备用方案 try { if (navigator.clipboard && navigator.clipboard.writeText) { await navigator.clipboard.writeText(textToCopy); } else { throw new Error('Clipboard API not available'); } // 显示复制成功提示 this.showCopySuccessToast(textToCopy, el); } catch (err) { console.error('Modern clipboard API failed, trying fallback...', err); // 使用备用复制方案 this.fallbackCopy(textToCopy, el); } const discountId = item.dataset["discountId"]; // 跳转决策: is_redirection + link(可选覆盖) const setting = { is_redirection: item.dataset["redirection"] === "true", link: item.dataset["link"], }; const landingUrl = `/promotions/discount-default/${discountId}`; const finalUrl = appDiscountUtils.resolveDiscountHref(setting, landingUrl); if (finalUrl && appDiscountUtils.inProductBody(this.element)) { this.win.open(finalUrl, '_blank', 'noopener'); } } }) } } /** * 使用 execCommand 的复制方案 * @param {string} codeText - 要复制的文本 * @param {Element} el - 当前元素 */ fallbackCopy(codeText, el) { const textarea = this.win.document.createElement('textarea'); textarea.value = codeText; // 设置样式使文本框不可见 textarea.style.position = 'fixed'; textarea.style.left = '-9999px'; textarea.style.top = '0'; // 添加 readonly 属性防止移动端虚拟键盘弹出 textarea.setAttribute('readonly', 'readonly'); this.win.document.body.appendChild(textarea); textarea.focus(); textarea.select(); try { this.win.document.execCommand('copy'); // 显示复制成功提示 this.showCopySuccessToast(codeText, el); } catch (err) { console.error('Copy failed:', err); } this.win.document.body.removeChild(textarea); } /** * 创建 Toast 元素 * @returns {Element} 创建的 Toast 元素 */ createToastEl_() { const toast = document.createElement('ljs-toast'); toast.setAttribute('layout', 'nodisplay'); toast.setAttribute('hidden', ''); toast.setAttribute('id', 'discount-code-toast'); toast.style.zIndex = '1051'; return toast; } /** * 挂载 Toast 元素到 body * @returns {Element} 挂载的 Toast 元素 */ mountToastToBody_() { const existingToast = this.win.document.getElementById('discount-code-toast'); if (existingToast) { return existingToast; } const toast = this.createToastEl_(); this.win.document.body.appendChild(toast); return toast; } /** * 复制成功的提醒 * @param {string} codeText - 要复制的文本 * @param {Element} el - 当前元素 */ showCopySuccessToast(codeText, el) { const $toast = this.mountToastToBody_(); SPZ.whenApiDefined($toast).then(toast => { toast.showToast("Discount code copied !"); this.codeCopyInSessionStorage(codeText); }); } /** * 复制优惠码成功后要存一份到本地存储中,购物车使用 * @param {string} codeText - 要复制的文本 */ codeCopyInSessionStorage(codeText) { try { sessionStorage.setItem('other-copied-coupon', codeText); } catch (error) { console.error(error) } } } // 注册自定义元素 SPZ.defineElement('spz-custom-discount-code-model', SpzCustomDiscountCodeModel);
/** * Custom discount code component that handles displaying and managing discount codes * @extends {SPZ.BaseElement} */ class SpzCustomDiscountCode extends SPZ.BaseElement { constructor(element) { super(element); // API endpoint for fetching discount codes this.getDiscountCodeApi = "\/api\/storefront\/promotion\/code\/list"; // Debounce timer for resize events this.timer = null; // Current variant ID this.variantId = "27e2708d-52d0-4ef8-9b6a-d76576d9dd05"; // Store discount code data this.discountCodeData = {} } /** * Check if layout is supported * @param {string} layout - Layout type * @return {boolean} */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** * Initialize component after build */ buildCallback() { this.templates_ = SPZServices.templatesForDoc(); this.viewport_ = this.getViewport(); // Bind methods to maintain context this.render = this.render.bind(this); this.resize = this.resize.bind(this); this.switchVariant = this.switchVariant.bind(this); } /** * Setup component when mounted */ mountCallback() { this.getData(); // Add event listeners this.viewport_.onResize(this.resize); this.win.document.addEventListener('dj.variantChange', this.switchVariant); } /** * Cleanup when component is unmounted */ unmountCallback() { this.viewport_.removeResize(this.resize); this.win.document.removeEventListener('dj.variantChange', this.switchVariant); // 清除定时器 if (this.timer) { clearTimeout(this.timer); this.timer = null; } } /** * Handle resize events with debouncing */ resize() { if (this.timer) { clearTimeout(this.timer) this.timer = null; } this.timer = setTimeout(() => { if (appDiscountUtils.inProductBody(this.element)) { this.render(); } else { this.renderSkeleton(); } }, 200); } /** * Handle variant changes * @param {Event} event - Variant change event */ switchVariant(event) { const variant = event.detail.selected; if (variant.product_id == '8f13d619-90fb-41da-9671-26630d9dfb0a' && variant.id != this.variantId) { this.variantId = variant.id; this.getData(); } } /** * Fetch discount code data from API */ getData() { if (appDiscountUtils.inProductBody(this.element)) { const reqBody = { product_id: "8f13d619-90fb-41da-9671-26630d9dfb0a", variant_id: this.variantId, product_type: "default", } if (!reqBody.product_id || !reqBody.variant_id) return; this.discountCodeData = {}; this.win.fetch(this.getDiscountCodeApi, { method: "POST", body: JSON.stringify(reqBody), headers: { "Content-Type": "application/json" } }).then(async (response) => { if (response.ok) { let data = await response.json(); if (data.list && data.list.length > 0) { data.list[0].product_setting.template_config = JSON.parse(data.list[0].product_setting.template_config); // Format timestamps to local timezone const zone = this.win.SHOPLAZZA.shop.time_zone; data.list = data.list.map(item => { if(+item.ends_at !== -1) { item.ends_at = appDiscountUtils.convertTimestampToFormat(+item.ends_at, zone); } item.starts_at = appDiscountUtils.convertTimestampToFormat(+item.starts_at, zone); return item; }); } this.discountCodeData = data; this.render(); } else { this.clearDom(); } }).catch(err => { console.error("discount_code", err) this.clearDom(); }); } else { this.renderSkeleton(); } } /** * Clear component DOM except template */ clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } /** * Render discount codes with formatted dates */ render() { // Render using discount code model SPZ.whenApiDefined(document.querySelector('#spz_custom_discount_code_model')).then(renderApi => { renderApi.doRender_({ discountCodeData: this.discountCodeData }) }).catch(err => { this.clearDom(); }) } renderSkeleton() { // Render template for non-product pages this.templates_ .findAndRenderTemplate(this.element, { isMobile: appDiscountUtils.judgeMobile() }) .then((el) => { this.clearDom(); this.element.appendChild(el); }) .catch(err => { this.clearDom(); }); } } // Register custom element SPZ.defineElement('spz-custom-discount-code', SpzCustomDiscountCode);
color:  black
Size:  S
Quantity

Description

SIZE INFORMATION

SIZE LENGTH (CM) CHEST (CM)
S 130 96
M 131 100
L 132 104
XL 133 108
XXL 134 112

Please allow a measurement error of 1-3 cm (1 cm = 0.39 inch).

✨ Product Overview

Step into unapologetic glamour with our Black Sequin Cutout Halter Maxi Gown—a head-turning masterpiece designed for moments that demand bold confidence and red-carpet allure. Crafted from shimmering black sequins and tailored to hug every curve, this gown is the ultimate choice for nightclub dance floors, black-tie galas, birthday celebrations, and glamorous evening photoshoots. The deep black hue and sparkling sequins catch light to create a mesmerizing, eye-catching glow, while the daring cutouts add a modern edge that balances elegance with sultry sensuality.

🌟 Key Features

  • All-Over Black Sequin Fabric: The entire gown is covered in dense, high-shine black sequins that reflect light with every movement, creating a dynamic, luminous effect that shifts from deep black to silver under different lighting. The sequin fabric has a subtle stretch, hugging your curves while moving fluidly—perfect for dancing under club lights or posing for flash photography.
  • Daring Halter Neck & Keyhole Cutout: A sleek halter strap wraps around the neck, framing a dramatic twisted keyhole cutout at the bust that reveals just the right amount of skin. This design elongates your neck, highlights your collarbones, and adds a sultry, modern edge to the classic maxi silhouette.
  • Sultry Side Cutouts & Open Back: Strategic side cutouts at the waist and an open back reveal your silhouette, sculpting a defined hourglass shape while maintaining an air of refined elegance. The open back keeps the look lightweight and breathable, even during long events.
  • Form-Fitting Mermaid Maxi Silhouette: The gown hugs your figure from bust to hem, flowing into a floor-length mermaid skirt that skims your hips and flares slightly at the hem. This statuesque silhouette elongates your legs, adds dramatic movement, and is perfect for making a grand entrance or capturing stunning photos.
  • Premium Craftsmanship: Each gown is meticulously sewn by skilled artisans, with strict quality checks to ensure secure sequin attachments, clean stitching, and perfect drape of the fabric. A soft inner lining prevents irritation and ensures all-night comfort, so you can shine without sacrificing wearability.

📏 Size & Fit

  • Inclusive Sizing: Available in sizes S–XXL (refer to our size chart for precise measurements) or custom-made to your exact body measurements for a flawless, personalized fit. The stretchy sequin fabric offers gentle give, accommodating a range of body types while maintaining a sleek, tailored look.
  • Handmade Artistry: Every sequin is carefully applied, and every seam is reinforced to ensure durability. This level of craftsmanship ensures your gown is a one-of-a-kind luxury piece, not a mass-produced fast-fashion item.
  • Length: Standard maxi length (hits at the ankle with a subtle train), with custom length adjustments available upon request to suit your height and preferred vibe.

🛍️ Why Choose This Gown?

  • Scene-Stealing Glamour: The black sequins and cutout design are uniquely eye-catching, ensuring you’ll be the center of attention at any event.
  • Timeless Versatility: This gown transitions seamlessly between settings: shine at a rooftop cocktail party, turn heads at a music festival, or stun on a red carpet. It’s the ultimate “little (sparkly) black dress” for every glamorous occasion.
  • Transparent Production: We provide real-time updates on your order’s progress, from the initial sequin application to final shipping, so you can watch your gown come to life and enjoy complete peace of mind.
  • Customer-Centric Support: Our team is available 24/7 to assist with sizing, customizations, and order inquiries, ensuring a seamless shopping experience from click to delivery.

💡 Styling Tips

  • Club & Night Out: Pair with strappy black stiletto heels, long crystal drop earrings, and a small sequin clutch. Style your hair in loose waves or a high ponytail to highlight the halter neckline and open back.
  • Black-Tie Gala: Elevate the look with metallic silver stiletto heels, a diamond tennis bracelet, and a sleek updo. Opt for a bold red lip and smoky eye to contrast the black sequins, creating a classic, sophisticated ensemble.
  • Birthday Celebration: Swap heels for strappy nude sandals, add a statement choker necklace, and layer a sheer black kimono for a playful, party-ready look that’s perfect for cake-cutting photos.
  • Evening Photoshoot: Keep accessories minimal—just a pair of clear heels and soft, glowing makeup—to capture the gown’s luminous sequins and cutout details in warm, studio lighting.

📦 Shipping & Delivery

  • Production Time: 18–25 business days (handmade to order; custom measurements may require extra time due to intricate sequin work).
  • Shipping: Express delivery (DHL/FedEx) available worldwide, with full tracking information provided for every order to ensure fast, secure delivery.
  • Returns: We accept returns for standard sizes within 14 days of delivery (items must be unworn and in original condition); custom-made orders are final (please confirm your measurements carefully before ordering).

🌟 Final Note

This gown is more than just clothing—it’s a celebration of your boldness and beauty. Whether you’re dancing until dawn, posing for a viral photo, or walking into a room full of eyes, our Black Sequin Cutout Halter Maxi Gown will make you feel like the star you are.
Add to cart today and let us craft your perfect moment of unapologetic sparkle!