1<!DOCTYPE html> 2<html lang="en" style="height:100%;"> 3 <head> 4
4<script> 5 window.dataLayer = window.dataLayer || []; 6 </script>
6 7 8 <!-- CYBERBIZ Google Tag Manager --> 9
9<script>
vendor: 345 bytes, lines 9-13
9(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 10 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 11 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 12 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 13 })(window,document,'script','cyb','
13GTM-TXD9LVJ
vendor: 3 bytes, line 13
13');
13</script>
13 14 <!-- End CYBERBIZ Google Tag Manager --> 15 16 <meta charset="utf-8"> 17<meta http-equiv="X-UA-Compatible" content="IE=edge"> 18<meta name="viewport" content="width=device-width, initial-scale=1"> 19<link rel="icon" href="https://cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?convert=false&sha=9f6d9c1fb602ddee"> 20<link rel="apple-touch-icon" href="https://cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?convert=false&sha=9f6d9c1fb602ddee"> 21 22<meta property="og:site_name" content="brumetaipei" /> 23 24<!-- og tag --> 25 26 <meta name="keywords" content="" /> 27 <meta name="description" content="" /> 28 <meta property="og:title" content="brumetaipei " /> 29 <meta property="og:description" content="" /> 30 <meta property="og:url" content="https://www.labrume.com.tw" /> 31 <meta property="og:type" content="website" /> 32 33 34<!-- og image --> 35 36 37 <meta property="og:image" content="https://cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee" /> 38 39 40 41<title> 42 43 brumetaipei 44 45</title> 46 47 48
49<script src='//cdn-general.cybassets.com/frontend/shop/useSettingsData-e958d46bfee2e69f.js' type='text/javascript'></script>
49 50 51 52 53
53<script> 54 window.setSettingsData({"draggable_sections":{"404":[],"index":["_index_product_banner","1758546879927_1","1758548715483_1","_index_4_blocks","_main_slider_custom","1675175248497_3","_index_4_blocks_2"],"product":["product_info","product_description","board_comments","related_products"],"collection":[],"category":[],"blog":[],"article":[],"cart":[],"contact":[],"express_delivery":[],"search":[],"combo_product":["combo_product_info","combo_product_desc","board_comments"]},"sections":{"navbar":{"type":"navbar","visible":true,"settings":{"navbar_image_logo_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee","navbar_image_logo_tablet_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee","navbar_image_logo_mobile_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee","main_nav":"main-menu","slider_primary_linklist":"main-menu","slider_primary_linklist_set_open":true,"nav_show_three_dimension":true,"search_enabled":true,"display_only_index":true,"dict_header_banner_image_url":"","dict_header_banner_image_tablet_url":"","dict_header_banner_image_mobile_url":"","dict_header_banner_link":"/collections/new-arrival","display_count_down":true,"navbar_display_style":"displayDefault","header_banner_start":"2026-08-01T14:30:00+08:00","header_banner_end":"2026-08-20T00:00:00+08:00","timer_text_color":"#eee1d2","timer_bg_color":"#2a0e05","menu_display_style":"three_dimension_menu","link_menu_enabled":false,"link_menu":"undefined","display_banner_type":"textBanner","header_banner_simple_text_size":"12","header_banner_simple_text_color":"#ffffff","header_banner_simple_bg":"#2a0c0c","logo_height":"","mobile_logo_position":"left","navbar_pc_title_font_size_scale":"90","navbar_pc_body_font_size_scale":"100","navbar_mobile_title_font_size_scale":"90","navbar_mobile_body_font_size_scale":"100","breadcrumb_referrer_enabled":false,"header_banner_simple_text":"ð ä¸å¤éå®ï½8/1â8/19 å®çæ¶è²»æ»¿ NT$7,700 ç¾æ NT$520ï¼åªæ å¯ç´¯è¨ææµï¼ä»¥é¦æ°£ç»çµ¦éè¦ç人ï¼ä¹é給åªåçæ´»çèªå·±ã","link_open_in_new_tab":true},"custom_name":"å°è¦½å"},"footer":{"type":"footer","visible":true,"settings":{"footer_link":"footer","display_facebook":true,"shop_facebook":"https://www.facebook.com/labrumetaipei?mibextid=LQQJ4d","display_instagram":true,"shop_instagram":"https://instagram.com/brume.taipei?igshid=YmMyMTA2M2Y=","display_line":true,"shop_line":"https://line.me/R/ti/p/@901hnpwy","display_youtube":false,"shop_youtube":"https://www.youtube.com/","footer_link_arrangement":"display_x","display_facebook_fan_block":true},"block_order":["default_link_list_2","default_contact_info","1675419928503_2"],"blocks":{"default_link_list":{"type":"link_list_setting","custom_name":"é¸å®","thumbnail":"list","draggable":true,"visible":true,"settings":{"dict_link_list_block_title":"About Us","footer_link":"footer"}},"default_contact_info":{"type":"contact_info_setting","custom_name":"è¯çµ¡è³è¨","thumbnail":"contactInfo","draggable":true,"visible":false,"settings":{"dict_contact_info_block_title":"Informations","display_phone":false,"dict_phone_number":"09-87654321","display_fax_number":false,"dict_shop_fax_number":"02-22345678","display_shop_email":true,"dict_shop_email":"[email protected]","display_shop_address":true,"dict_shop_address":"Waterloo, IN 46793, United States","display_office_time":true,"dict_shop_office_time":"10:30am - 6:30pm","dict_tax_id":""}},"default_link_list_2":{"type":"link_list_setting","custom_name":"é¸å®","visible":true,"settings":{"dict_link_list_block_title":"Menu","footer_link":"footer"}},"1675419928503_2":{"type":"rich_text_editor_setting","custom_name":"èªè¨æå","visible":true,"settings":{"dict_rich_text_title":"","dict_rich_text_content":"\u003cp\u003e馿¾åéæéå ¬å¸\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eBRUME INTERNATIONAL CO.,LTD\u003c/p\u003e\n\u003cp\u003eçµ±ä¸ç·¨èï¼83118482\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n\u003cp\u003eæ¾å±±éå¸ï¼\u003c/p\u003e\n\u003cp\u003eå°ç£å°å叿¾å±±åå京æ±è·¯äºæ®µ250å··2å¼39è\u003c/p\u003e\n\u003cp\u003eè¯çµ¡ä¿¡ç®±ï¼[email protected]\u003c/p\u003e\n\u003cp\u003e客ææéï¼13:00-21:00\u003c/p\u003e\n"}}},"custom_name":"é è ³"},"_main_slider_custom":{"type":"_main_slider_custom","visible":false,"blocks":{"display_main_slider_item_1":{"type":"image","visible":true,"settings":{"dict_link":"","dict_image_url":"/theme_src/i18n_serenity/default_img/main_slider_item_1.png","dict_tablet_image_url":"/theme_src/i18n_serenity/default_img/main_slider_item_1_mobile.png","dict_mobile_image_url":"/theme_src/i18n_serenity/default_img/main_slider_item_1_mobile.png","slide_contents_display":"left","slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff","dict_slide_btn_link":""},"custom_name":"ç´ æ"},"display_main_slider_item_2":{"type":"image","visible":true,"settings":{"dict_link":"","dict_image_url":"/theme_src/i18n_serenity/default_img/main_slider_item_2.png","dict_tablet_image_url":"/theme_src/i18n_serenity/default_img/main_slider_item_2_mobile.png","dict_mobile_image_url":"/theme_src/i18n_serenity/default_img/main_slider_item_2_mobile.png","slide_contents_display":"left","slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff","dict_slide_btn_link":""},"custom_name":"ç´ æ"},"display_main_slider_item_3":{"type":"image","visible":true,"settings":{"dict_link":"","dict_image_url":"","dict_tablet_image_url":"","dict_mobile_image_url":""},"custom_name":"ç´ æ"},"display_main_slider_item_4":{"type":"image","visible":false,"settings":{"dict_link":"","dict_image_url":"","dict_tablet_image_url":"","dict_mobile_image_url":""},"custom_name":"ç´ æ"},"display_main_slider_item_5":{"type":"image","visible":false,"settings":{"dict_link":"","dict_image_url":"","dict_tablet_image_url":"","dict_mobile_image_url":""},"custom_name":"ç´ æ"}},"block_order":["display_main_slider_item_1","display_main_slider_item_2"],"settings":{"margin_x":"160","margin_bottom":"48","mobile_margin_x":"16","mobile_margin_bottom":"24","swiper_delay":"3","image_number":"1","image_space":"12","mobile_image_number":"1","mobile_image_space":"8","transition_speed":"0.3"},"custom_name":"輪æç´ æ"},"_index_product_banner":{"type":"_index_product_banner","visible":true,"settings":{"dict_link":"/collections/all","dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0","cta_btn_display_style":"bottomPosition","cta_btn_text":"La brume boutique","cta_btn_bg_color":"#271f16","cta_btn_text_color":"#d6cebe","margin_x":"0","margin_bottom":"10","mobile_margin_x":"0","mobile_margin_bottom":"10","display_cta_btn":true,"dict_cta_btn_text":"Découvrez nos parfums","link_open_in_new_tab":false},"custom_name":"æ©«å¹ å»£å"},"_index_8_blocks":{"type":"_index_8_blocks","visible":true,"settings":{"dict_title":"New Arrivals","collection_handle":"å± å®¶çæ´»é£¾å","limit":"4","margin_x":"0","margin_bottom":"48","mobile_margin_x":"","mobile_margin_bottom":"24","product_display":"displayAll"},"custom_name":"åååé¡"},"_index_4_blogs":{"type":"_index_4_blogs","visible":true,"blocks":{"index_4_blogs_1":{"type":"blog","visible":true,"settings":{"blog_handle":"news"}},"index_4_blogs_2":{"type":"blog","visible":true,"settings":{"blog_handle":"news"}},"index_4_blogs_3":{"type":"blog","visible":true,"settings":{"blog_handle":"news"}},"index_4_blogs_4":{"type":"blog","visible":true,"settings":{"blog_handle":"news"}}},"block_order":["index_4_blogs_1","index_4_blogs_2","index_4_blogs_3","index_4_blogs_4"],"settings":{"dict_title":"More Information"}},"_index_4_blocks":{"type":"_index_4_blocks","visible":true,"blocks":{"index_4_blocks_block_1":{"type":"image","visible":true,"settings":{"title":"","dict_link":"/collections/la-brume-daan-é¸å®","dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTczMTMwXzQwQTAxQThDLUQ0NTktNEI3MS1BRkUyLTU3QUFFNENGQkM1MC5qcGcuanBlZyJdXQ.jpeg?sha=3c84613798f5136a","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MjUxODQzXzgwNkQ1NjhELTU1MDctNEFCRS04NTU5LTdCQzRBQUIyNTZB
54Mi5qcGcuanBlZyJdXQ.jpeg?sha=aff48e880ed5e92c","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MjUxODQzXzgwNkQ1NjhELTU1MDctNEFCRS04NTU5LTdCQzRBQUIyNTZBMi5qcGcuanBlZyJdXQ.jpeg?sha=aff48e880ed5e92c","block_propotion":"50","dict_image_description":""},"custom_name":"åç"},"index_4_blocks_block_2":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTcxNDc0X0lNR18wNTU4LmpwZy5qcGVnIl1d.jpeg?sha=aea479433f20db3e","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MjUyNjE3X0VGMjAyNzA3LTVGOUQtNDdBRC1BRjI2LUMzNjY0QUM1NEMwNC5qcGcuanBlZyJdXQ.jpeg?sha=3b6ac491b319749c","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MjUyNjE3X0VGMjAyNzA3LTVGOUQtNDdBRC1BRjI2LUMzNjY0QUM1NEMwNC5qcGcuanBlZyJdXQ.jpeg?sha=3b6ac491b319749c","dict_link":"/collections/scented-candle","block_propotion":"33","dict_image_description":"\u003cp\u003e\u003c/p\u003e\n","dict_image_title":""}},"index_4_blocks_block_3":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTczNTAwX0ExQkNBMjYxLTNGNUEtNERCOC05N0I1LTkyQjhBRDU5RTdCQy0yLmpwZy5qcGVnIl1d.jpeg?sha=067399b4fe0d8568","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NDE5NDM1XzA2RTBBNURDLUNBNTctNEFENS1CRkRBLUIwNjI5RTg5OTkzMC5KUEcuanBlZyJdXQ.jpeg?sha=8d10e98b496a9c23","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NDE5NDM1XzA2RTBBNURDLUNBNTctNEFENS1CRkRBLUIwNjI5RTg5OTkzMC5KUEcuanBlZyJdXQ.jpeg?sha=8d10e98b496a9c23","dict_link":"/collections/la-brume-é¸å®","block_propotion":"33","dict_image_description":""}},"1675173266255_0":{"type":"image","custom_name":"åç","visible":false,"settings":{"dict_image_url":"","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NDE5NTI2X0NCMEM0MUY1LTdBQzktNDNGQy05MTJDLTQ3ODM4NDhDMTMxQS5qcGcuanBlZyJdXQ.jpeg?sha=7968753eb59555e1","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NDE5NTI2X0NCMEM0MUY1LTdBQzktNDNGQy05MTJDLTQ3ODM4NDhDMTMxQS5qcGcuanBlZyJdXQ.jpeg?sha=7968753eb59555e1","dict_link":"","block_propotion":"25","dict_image_description":""}}},"block_order":["index_4_blocks_block_1","index_4_blocks_block_2","index_4_blocks_block_3","1675173266255_0"],"custom_name":"èªè¨æçè¨è¨","settings":{"margin_x":"0","margin_bottom":"48","mobile_margin_x":"0","mobile_margin_bottom":"24","mobile_columns":2,"margin_block":"10","mobile_margin_block":"10","mobile_align":"left"}},"_index_4_blocks_2":{"type":"_index_4_blocks","custom_name":"èªè¨æçè¨è¨","visible":false,"settings":{"margin_x":"160","margin_bottom":"48","mobile_margin_x":"16","mobile_margin_bottom":"24","mobile_columns":1,"margin_block":"10","mobile_margin_block":"10","mobile_align":"left"},"blocks":{"_index_4_blocks_2_block_1":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"/theme_src/i18n_serenity/default_img/index_4_blocks_2_block_1.png","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","dict_image_description":""}},"_index_4_blocks_2_block_2":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"/theme_src/i18n_serenity/default_img/index_4_blocks_2_block_2.png","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","dict_image_description":""}},"_index_4_blocks_2_block_3":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"/theme_src/i18n_serenity/default_img/index_4_blocks_2_block_3.png","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","dict_image_description":""}}},"block_order":["_index_4_blocks_2_block_1","_index_4_blocks_2_block_2","_index_4_blocks_2_block_3"]},"express_delivery_index_4_blocks":{"type":"_index_4_blocks","visible":false,"blocks":{"express_delivery_display_index_4_block_1":{"type":"image","visible":true,"settings":{"title":"","dict_link":"","dict_image_url":"/theme_src/i18n_serenity/default_img/index_4_blocks_1_block_1.png","dict_tablet_image_url":"","dict_mobile_image_url":""}}},"block_order":["express_delivery_display_index_4_block_1"]},"custom_text":{"type":"custom_text","visible":true,"settings":{}},"blog":{"type":"blog","visible":true,"settings":{"article_limit_in_blog_page":"6"}},"article":{"type":"article","visible":true,"settings":{"display_blog_menu":true,"dict_blog_tags_title":"Categories","blog_latest_post_limit":"2"}},"category":{"type":"category","visible":true,"settings":{"category_sidebar_set_open":false,"category_product_block_limit":"4","category_product_swiper_item_limit":"
546","category_product_item_limit":"18"}},"shop_setting":{"type":"shop_setting","visible":true,"settings":{"favicon_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee","og_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee","shop_title":"è¥æ°´La brume","shop_description":"è¥æ°´La brumeèªçæ¼2020å¹´æ«ï¼åçååèªæ³æãèé§ãï¼éææºèªãèåãï¼ãä¸åè¥æ°´ï¼æ°´åå©è¬ç©èä¸çããæå叿æ¯ååæé¦æ°çä½ ï¼å¨é¸æä¸¦ç©¿ä¸å¿æé¦æ°´æï¼é½è½æåå°é£ä»½ç´ç²¹è浪漫çå弿ã å´é¸ä¾èªä¸çåå°çå°ç¾é¦æ°åçï¼æ¯ä¸ç¶é¦æ°´å¦åèè¡åï¼éé馿°£å±ç¾ç¨ç¹åå³ï¼ä¹çºä½ ççæ´»ç䏿·±å»ä¸ç¾å¥½çè¨æ¶ã","shop_keywords":"è¥æ°´,è¥æ°´La brume,馿°´,å°ç¾é¦æ°´,馿°,è ç","prevent_right_click":false},"custom_name":"å
¨ç«è¨å®"},"color_settings":{"type":"color_settings","visible":true,"settings":{"button_color":"#3f2e1e","button_text_color":"#bbb19e","accent_color":"#926f2f","heading_color":"#402f1f","text_color":"#bbb19e","price_color":"#402f1f","discount_price_color":"#924a23","theme_bg_color":"#FFFFFF","product_border_color":"#bbb19e","nav_logo_bg_color":"#402f1f","nav_menu_bg_color":"#FFFFFF","nav_menu_text_color":"#402f1f","nav_menu_icon_color":"#bbb19e","footer_bg_color":"#f4eee2","footer_text_color":"#402f1f","checkout_button_color":"#402f1f","checkout_accent_color":"#906e2f","tips_text_color":"#0C5460"},"custom_name":"é¡è²è¨å®"},"popup":{"type":"popup","visible":true,"blocks":{"popup_block_1":{"type":"image","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzA3MTE5OTczX0Z1bGxTaXplUmVuZGVyX1ZTQ08uanBlZy5qcGVnIl1d.jpeg?sha=4da3969b4b8d3cce","icon_size":"small","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzA3MTE5OTczX0Z1bGxTaXplUmVuZGVyX1ZTQ08uanBlZy5qcGVnIl1d.jpeg?sha=4da3969b4b8d3cce","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzA3MTIwMDQ4X0Z1bGxTaXplUmVuZGVyX1ZTQ08tMi5qcGVnLmpwZWciXV0.jpeg?sha=93f1148cf7ef0e88","dict_link":"/collections/æ°æ¥åªæ ä»»2ä»¶10off"},"custom_name":"åç"},"1714638990991_0":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzI2MTM0MzEzX0I2RUUwRjNBLTZFQzUtNDRBNi1CQkNDLUM2OUM4NkMyMUM0MC5qcGcuanBlZyJdXQ.jpeg?sha=10d667e6dfbe4098","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzI2MTM0MzEzX0I2RUUwRjNBLTZFQzUtNDRBNi1CQkNDLUM2OUM4NkMyMUM0MC5qcGcuanBlZyJdXQ.jpeg?sha=10d667e6dfbe4098","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzI2MTM0MzEzX0I2RUUwRjNBLTZFQzUtNDRBNi1CQkNDLUM2OUM4NkMyMUM0MC5qcGcuanBlZyJdXQ.jpeg?sha=10d667e6dfbe4098","dict_icon_image_url":"","icon_size":"small","dict_link":"/collections/dorsay-parfums"}},"1730702544373_0":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzkwODY1OTAwX0xhX2JydW1lX2Fubml2ZXJzYXJ5X3NtYWxsLmpwZy5qcGVnIl1d.jpeg?sha=a36a8072a0abfed1","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzkwODY1OTAwX0xhX2JydW1lX2Fubml2ZXJzYXJ5X3NtYWxsLmpwZy5qcGVnIl1d.jpeg?sha=a36a8072a0abfed1","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzkwODY1OTAwX0xhX2JydW1lX2Fubml2ZXJzYXJ5X3NtYWxsLmpwZy5qcGVnIl1d.jpeg?sha=a36a8072a0abfed1","dict_icon_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzkwODY1OTAwX0xhX2JydW1lX2Fubml2ZXJzYXJ5X3NtYWxsLmpwZy5qcGVnIl1d.jpeg?sha=a36a8072a0abfed1","icon_size":"middle","dict_link":"/collections/all"}}},"block_order":["1730702544373_0"],"settings":{},"custom_name":"å½çªå»£å"},"product_info":{"type":"product_info","visible":true,"settings":{"display_product_sku":true,"dict_vip_custom_price_text":"","dict_vip_custom_price_href":""},"custom_name":"åºæ¬è¨å®"},"product_description":{"type":"product_description","visible":true,"custom_name":"ååä»ç´¹"},"board_comments":{"type":"board_comments","visible":true,"settings":{},"custom_name":"ååè©è«","thumbnail":"list","draggable":false},"related_products":{"type":"related_products","visible":true,"settings":{"display_related_cols":true,"use_custom_related_cols":true,"dict_group_related_cols_related_product":"Related Products","related_products_limit":"8"},"custom_name":"ç¸éåå"},"contact":{"type":"contact","visible":true,"settings":{"show_google_map":true,"show_google_map_iframe":"\u003ciframe src=\"https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3613.6479170127777!2d121.56760821400371!3d25.07991984260527!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3442ac6fbd841bbd%3A0x64e16bcf25e3da31!2zMTE05Y-w5YyX5biC5YWn5rmW5Y2A55Ge5YWJ6LevNTEz5be3MzDomZ8!5e0!3m2!1szh-TW!2stw!4v1485156761267\" width=\"600\" height=\"450\" frameborder=\"0\" style=\"border:0\" allowfullscreen\u003e\u003c/iframe\u003e"}},"collection":{"type":"collection","visible":true,"settings":{"collection_sidebar":"main-menu","collection_sidebar_set_open":true,"collection_pagination_limit":"24","is_infinite_scroll":false},"custom_name":"åååé¡è¨å®"},"404":{"type":"404","visible":true,"settings":{"image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc2MTA1NjY4X0Q3NEY2RDE3LTNFNjMtNEUwQi05RjQwLTlCMDVEODlCNDg5NS5qcGcuanBlZyJdXQ.jpeg?sha=cdefa3462b943431","dict_404_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc2MTA1NjY4X0Q3NEY2RDE3LTNFNjMtNEUwQi05RjQwLTlCMDVEODlCNDg5NS5qcGcuanBlZyJdXQ.jpeg?sha=cdefa3462b943431","dict_title_text":"Sorry, this page does not exist or has been removed","dict_btn_text":"Back to Home"},"custom_name":"404é "},"blogs_all":{"type":"blogs_all","visible":true,"settings":{}},"bundle_discounts":{"type":"bundle_discounts","visible":true,"settings":{}},"cart":{"type":"cart","visible":true,"settings":{}},"cart_empty":{"type":"cart_empty","visible":true,"settings":{}},"page":{"type":"page","visible":true,"settings":{}},"search":{"type":"search","visible":true,"settings":{"search_link_list":"main-menu"}},"customers/account":{"type":"customers/account","visible":true,"settings":{}},"customers/account_edit":{"type":"customers/account_edit","visible":true,"settings":{}},"customers/activate_account":{"type":"customers/activate_account","visible":true,"settings":{}},"customers/addresses":{"type":"customers/addresses","visible":true,"settings":{}},"customers/bonus_points":{"type":"customers/bonus_points","visible":true,"settings":{}},"customers/cancel":{"type":"customers/cancel","visible":true,"settings":{}},"customers/coupons":{"type":"customers/coupons","visible":true,"settings":{}},"customers/forgot_password":{"type":"customers/forgot_password","visible":true,"settings":{}},"customers/login":{"type":"customers/login","visible":true,"settings":{}},"customers/message":{"type":"customers/message","visible":true,"settings":{}},"customers/messages":{"type":"customers/messages","visible":true,"settings":{}},"customers/modify_password":{"type":"customers/modify_password","visible":true,"settings":{}},"customers/order":{"type":"customers/order","visible":true,"settings":{}},"customers/orders":{"type":"customers/orders","visible":true,"settings":{}},"customers/periodic_order":{"type":"customers/periodic_order","visible":true,"settings":{}},"customers/periodic_orders":{"type":"customers/periodic_orders","visible":true,"settings":{}},"customers/register":{"type":"customers/register","visible":true,"settings":{}},"customers/reset_password":{"type":"customers/reset_password","visible":true,"settings":{}},"customers/return":{"type":"customers/return","visible":true,"settings":{}},"customers/tracking_items":{"type":"customers/tracking_items","visible":true,"settings":{}},"express_delivery-navbar":{"type":"express_delivery-navbar","visible":true,"settings":{}},"express_delivery-content":{"type":"express_delivery-content","visible":true,"settings":{}},"1675175248497_3":{"type":"_index_4_blogs","custom_name":"åé é 籤","visible":false,"settings":{"dict_title":"","margin_x":"0","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"50","article_c
54olumns":"4"},"blocks":{"1675175248500_0":{"type":"blog","custom_name":"é¨è½æ ¼","visible":true,"settings":{"blog_handle":"news"}}},"block_order":["1675175248500_0"]},"combo_product_info":{"type":"combo_product_info","visible":true,"settings":{}},"combo_product_desc":{"type":"combo_product_desc","visible":true,"settings":{}},"customers/other_valid_orders":{"type":"customers/other_valid_orders","visible":true,"settings":{}},"1758546879927_1":{"type":"_index_product_banner","custom_name":"æ©«å¹
廣å","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NTM1X2RoYWxmIDIwMjUtMDktMjIgMjEzNTQ0LjI5Ni5qcGcuanBlZyJdXQ.jpeg?sha=38d85264591df504","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/collections/la-brume-é¸å®","cta_btn_display_style":"bottomPosition","cta_btn_bg_color":"#271f16","cta_btn_text_color":"#d6cebe","margin_x":"0","margin_bottom":"10","mobile_margin_x":"0","mobile_margin_bottom":"10","display_cta_btn":true,"dict_cta_btn_text":"La brume songshan store"},"blocks":{},"block_order":[]},"1758548715483_1":{"type":"_index_product_banner","custom_name":"æ©«å¹
廣å","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NzYyX2RoYWxmIDIwMjUtMDktMjIgMjEzOTI2LjY2Mi5qcGcuanBlZyJdXQ.jpeg?sha=78a6cff17c812b56","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074","dict_link":"/collections/la-brume-daan-é¸å®","display_cta_btn":true,"cta_btn_display_style":"bottomPosition","dict_cta_btn_text":"La brume daan store","cta_btn_bg_color":"#271f16","cta_btn_text_color":"#d6cebe","margin_x":"0","margin_bottom":"10","mobile_margin_x":"0","mobile_margin_bottom":"10"},"blocks":{},"block_order":[]},"announcement_bar":{"type":"announcement_bar","visible":true,"blocks":{"announcement_bar_block_1":{"type":"text","visible":true,"settings":{"display_only_index":true,"display_period":"limited","dict_link":"/collections/all","link_open_in_new_tab":true,"dict_image_url":"","dict_image_tablet_url":"","dict_image_mobile_url":"","image_alt":"","dict_content":"\u003cp\u003eï½é±å¹´æ
¶éå®ï½å®çæ¶è²»æ»¿6,880å³è´éå® éæç³æµèæ´é¦æé\u003c/p\u003e\n","text_size":"12","text_color":"#ffffff","bg_color":"#2a0c0c","timer_text_color":"#eee1d2","timer_bg_color":"#2a0e05","migrated_from_navbar":true},"custom_name":"æå"},"1788341130395_2":{"type":"countdown","custom_name":"忏","visible":true,"settings":{"display_only_index":false,"display_period":"limited","dict_title_text":"","timer_text_color":"#f8e3be","timer_bg_color":"#3d0909"}},"1788341400320_2":{"type":"countdown","custom_name":"忏","visible":true,"settings":{"display_only_index":false,"display_period":"limited","dict_title_text":"La brume daan é±å¹´æ
¶ï½å
¨éå¸åå®ç¶²ä»»é¸ 2 件馿°´ï¼é¦æ°åå享 95 æ","timer_text_color":"#f8e0c2","timer_bg_color":"#430e0e"}}},"block_order":["announcement_bar_block_1","1788341400320_2"],"settings":{"display_mode":"vertical","carousel_interval":"3"},"custom_name":"ç½®é å
¬å"}},"navbar_image_logo":true,"show_default_all_products":true,"one_dimension_limit":"6","two_dimension_limit":"10","header_banner_display":true,"header_banner_link":"/","display_main_slider":true,"display_phone":true,"phone_number":"0912345678","display_fax_number":true,"shop_fax_number":"0222345678","display_shop_email":true,"shop_email":"[email protected]","display_shop_address":true,"shop_address":"測試å°å","display_office_time":true,"shop_office_time":"10:00-17:00","index_event_slider_display":true,"index_event_slider_item_1_display":true,"dict_index_event_slider_item_1_link":"#","index_event_slider_item_2_display":true,"dict_index_event_slider_item_2_title":"Autumn Shoes are now in store","dict_index_event_slider_item_2_link":"#","index_event_slider_item_3_display":true,"dict_index_event_slider_item_3_title":"Purchase any 3 items and get 20% off!","dict_index_event_slider_item_3_link":"#","index_event_slider_item_4_display":true,"dict_index_event_slider_item_4_title":"FINAL SALE/Summer shoes are now on clearance sale!","dict_index_event_slider_item_4_link":"#","index_event_slider_item_5_display":true,"dict_index_event_slider_item_5_title":"Sale ends soon","dict_index_event_slider_item_5_link":"#","index_event_slider_item_6_display":true,"dict_index_event_slider_item_6_title":"Register now and get $50 off","dict_index_event_slider_item_6_link":"#","index_event_slider_item_7_display":false,"dict_index_event_slider_item_7_title":"","dict_index_event_slider_item_7_link":"","
54index_event_slider_item_8_display":false,"dict_index_event_slider_item_8_title":"","dict_index_event_slider_item_8_link":"#","index_event_slider_item_9_display":false,"dict_index_event_slider_item_9_title":"","dict_index_event_slider_item_9_link":"#","index_event_slider_item_10_display":false,"dict_index_event_slider_item_10_title":"","dict_index_event_slider_item_10_link":"#","index_4_slider_display":true,"dict_index_4_slider_title":"Instagram","index_4_slider_item_1_display":true,"dict_index_4_slider_item_1_link":"#","index_4_slider_item_2_display":true,"dict_index_4_slider_item_2_link":"#","index_4_slider_item_3_display":true,"dict_index_4_slider_item_3_link":"#","index_4_slider_item_4_display":true,"dict_index_4_slider_item_4_link":"#","index_4_slider_item_5_display":true,"dict_index_4_slider_item_5_link":"#","index_4_slider_item_6_display":false,"dict_index_4_slider_item_6_link":"#","index_4_slider_item_7_display":false,"dict_index_4_slider_item_7_link":"#","index_4_slider_item_8_display":false,"dict_index_4_slider_item_8_link":"#","index_video_blocks_display":true,"dict_index_video_blocks_title":"Youtube","dict_index_video_blocks_video_link":"https://www.youtube.com/watch?v=3bI4IUIVjCk","collection_sidebar":"main-menu","collection_sidebar_set_open":false,"collection_pagination_limit":"24","product_slogan_display":false,"display_product_total_sold":false,"display_periodic_order_label":false,"cart_quantity_limit":"0","is_empty_clickable":true,"is_first_selected":false,"display_product_images_color":false,"discount_product_images_color_expand":false,"display_product_discounts_list":true,"display_discount_price_name":true,"discount_price_slogan_url":"","dict_discount_price_name":"","display_discount_price_suggestion_name":false,"dict_discount_price_suggestion_name":"","display_product_section_description":true,"dict_product_section_description":"Description","description_section_spec_setting":true,"dict_product_description_section_spec":"Brand Overview","description_section_shipping_setting":true,"dict_product_description_section_shipping":"Stores Available","vip_custom_price_visible":false,"display_global_event_1":false,"dict_show_global_event_1_link":"#","display_global_event_2":false,"dict_show_global_event_2_link":"#","display_global_event_3":false,"dict_show_global_event_3_link":"#","display_contact_address":true,"dict_contact_address":"Test Address","show_google_map":true,"show_google_map_iframe":"\u003ciframe src=\"https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3613.6479170127777!2d121.56760821400371!3d25.07991984260527!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3442ac6fbd841bbd%3A0x64e16bcf25e3da31!2zMTE05Y-w5YyX5biC5YWn5rmW5Y2A55Ge5YWJ6LevNTEz5be3MzDomZ8!5e0!3m2!1szh-TW!2stw!4v1485156761267\" width=\"600\" height=\"450\" frameborder=\"0\" style=\"border:0\" allowfullscreen\u003e\u003c/iframe\u003e","display_selected_blog":true,"selected_blog":"news","google_font":"{\"ja\":{\"value\":\"Noto Sans JP\"},\"zh-TW\":{\"value\":\"Abyssinica SIL\"},\"en\":{\"value\":\"Noto Sans TC\"},\"zh-CN\":{\"value\":\"Noto Sans TC\"}}","styled_shop_menu":"buttonType","product_scale":"default_scale","display_inventory_policy":false,"display_product_vendor":true,"product_video_display_location":"before","product_text_align":"center","product_labels":{"items":[{"id":"sale_label","kind":"system","title":"ç¹å¹æ¨ç±¤","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"large"},{"id":"out_of_stock_label","kind":"system","title":"缺貨æ¨ç±¤","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"periodic_event_label","kind":"system","title":"宿å®é¡æ¨ç±¤","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"eff473ca-e065-4885-a4c9-37995bab1b13","kind":"custom","title":"èªå®ç¾©æ¨ç±¤ 1","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"15a3c75c-cd6b-4b99-bdc3-2ac924638606","kind":"custom","title":"èªå®ç¾©æ¨ç±¤ 2","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"64243541-4c17-4977-b03e-1d7606123624","kind":"custom","title":"èªå®ç¾©æ¨ç±¤ 3","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"55d63c86-37a8-4d4d-8cc8-b73c7e551bbe","kind":"custom","title":"èªå®ç¾©æ¨ç±¤ 4","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"460083df-a59c-42e5-93b5-c77d485cc7a8","kind":"custom","title":"èªå®ç¾©æ¨ç±¤ 5","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"}]},"nav_icon_style":"icon_type_default","product_card_hover_effect":"button","product_image_border_radius":"0"}); 55 </script>
55 56 57 58 59 60 61 62 63 64
64<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","url":"https://www.labrume.com.tw","logo":"https://cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee"}</script>
64<script type="application/ld+json">{"@context":"https://schema.org/","@type":"WebSite","name":"brumetaipei","url":"https://www.labrume.com.tw","potentialAction":{"@type":"SearchAction","target":"www.labrume.com.tw/search?q={search_term_string}","query-input":"required name=search_term_string"}}</script>
64 65 66 67 68 <!-- for vendor --> 69 <!-- cyb_snippet _bootstrap start --> 70 71<!-- cyb_snippet _bootstrap end --> 72 <link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/vendor-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' /> 73 74 <!-- common css rulesets --> 75 <link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/common-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' /> 76 77 <!-- for navbar --> 78 <link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/navbar-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' /> 79 80 <!-- for footer --> 81 <link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/footer-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' /> 82 83 <!-- theme assets --> 84 <link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/main-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' /> 85 86 <!-- for vendor --> 87
87<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/vendor-e958d46bfee2e69f.js' type='text/javascript'></script>
87 88 89
89<script> 90 window.sci = "eyJzaG9wX2lkIjoyMzgwNiwic2hvcF9wbGFuIjoiYWR2YW5jZV9wbHVzIiwi\nZGltX2FmZmlsaWF0ZSI6bnVsbCwiY3VzdG9tZXJfaWQiOm51bGwsImN1c3Rv\nbWVyX25hbWUiOm51bGwsInNob3BfbmFtZSI6ImJydW1ldGFpcGVpIiwic2hh\ncmVfYXR0cmlidXRpb25fZW5hYmxlZCI6ZmFsc2V9\n"; 91 </script>
91 92 93 94<meta name="csrf-param" content="authenticity_token" /> 95<meta name="csrf-token" content="XNXgdZKrVBIx08dvE5CYDyGyEKIhLlkEgLzDMUiZwzq94F40zD1ZACc6Vu57tz4VjeMM6qNR-sLjxm2ulKlbYw" />
96<script>(function () { 97 window.gaConfigurations = {"useProductIdInProductEvents":false}; 98})(); 99</script>
vendor: 1 bytes, line 99
99
100<script>(function () { 101 window.CYBERBIZ_PageContext = {"page_type":"home"}; 102})(); 103</script>
103 104<link href="//cdn-general.cybassets.com/frontend/shop/quark-e958d46bfee2e69f.css" rel="stylesheet" type="text/css" media="all" /> 105
105<script> 106 window.shopScriptHelper = { 107 i18nLocale: "en", 108 i18nLocaleDefault: "zh-TW", 109 availableCurrencies: ["AUD","CAD","CHF","CNY","EUR","GBP","HKD","JPY","KRW","MYR","SGD","THB","TWD","USD","VND"], 110 defaultCurrency: "TWD", 111 currenciesInfo: [{"html_unit":"NT${{amount_no_decimals}}","email_unit":"NT${{amount_no_decimals}}","name":"æ°å°å¹£ (TWD)","html":"NT${{amount_no_decimals}}","unit":"","trailing_zeros":false,"money_format":"%u%n","decimal_precision":0,"format":"NT${{amount_no_decimals}}","code":"TWD","symbol":"NT$","email":"NT${{amount_no_decimals}}"},{"html_unit":"\u0026#165;{{amount}}","email_unit":"Â¥{{amount}}","name":"人æ°å¹£ (CNY)","html":"\u0026#165;{{amount}}","unit":"RMB","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"\u0026#165;{{amount}}","code":"CNY","symbol":"Â¥","email":"Â¥{{amount}}"},{"html_unit":"${{amount}} USD","email_unit":"${{amount}} USD","name":"ç¾å (USD)","html":"${{amount}}","unit":"USD","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"${{amount}} USD","code":"USD","symbol":"$","email":"${{amount}}"},{"html_unit":"\u0026euro;{{amount}} EUR","email_unit":"â¬{{amount}} EUR","name":"æå (EUR)","html":"\u0026euro;{{amount}}","unit":"EUR","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"\u0026euro;{{amount}} EUR","code":"EUR","symbol":"â¬","email":"â¬{{amount}}"},{"html_unit":"HK${{amount}}","email_unit":"HK${{amount}}","name":"港å (HKD)","html":"${{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"HK${{amount}}","code":"HKD","symbol":"HK$","email":"${{amount}}"},{"html_unit":"\u0026#165;{{amount_no_decimals}}","email_unit":"Â¥{{amount_no_decimals}}","name":"æ¥å¹£ (JPY)","html":"\u0026#165;{{amount_no_decimals}}","unit":"","trailing_zeros":false,"money_format":"%u%n","decimal_precision":0,"format":"\u0026#165;{{amount_no_decimals}}","code":"JPY","symbol":"Â¥","email":"Â¥{{amount_no_decimals}}"},{"html_unit":"฿{{amount}}","email_unit":"฿{{amount}}","name":"æ³°é (THB)","html":"฿{{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"฿{{amount}}","code":"THB","symbol":"฿","email":"฿{{amount}}"},{"html_unit":"{{amount_no_decimals}}â«","email_unit":"{{amount_no_decimals}}â«","name":"è¶åç¾ (VND)","html":"{{amount_no_decimals}}â«","unit":"","trailing_zeros":false,"money_format":"%n%u","decimal_precision":0,"format":"{{amount_no_decimals}}â«","code":"VND","symbol":"â«","email":"{{amount_no_decimals}}â«"},{"html_unit":"RM {{amount}}","email_unit":"RM {{amount}}","name":"馬ä¾è¥¿äºä»¤å (MYR)","html":"RM {{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"RM {{amount}}","code":"MYR","symbol":"RM ","email":"RM {{amount}}"},{"html_unit":"S${{amount}}","email_unit":"S${{amount}}","name":"æ°å å¡å (SGD)","html":"S${{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"S${{amount}}","code":"SGD","symbol":"S$","email":"S${{amount}}"},{"html_unit":"â©{{amount_no_decimals}}","email_unit":"â©{{amount_no_decimals}}","name":"éå (KRW)","html":"â©{{amount_no_decimals}}","unit":"","trailing_zeros":false,"money_format":"%u%n","decimal_precision":0,"format":"â©{{amount_no_decimals}}","code":"KRW","symbol":"â©","email":"â©{{amount_no_decimals}}"},{"html_unit":"A${{amount}}","email_unit":"A${{amount}}","name":"澳洲å (AUD)","html":"A${{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"A${{amount}}","code":"AUD","symbol":"A$","email":"A${{amount}}"},{"html_unit":"£{{amount}}","email_unit":"£{{amount}}","name":"è±é (GBP)","html":"£{{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"£{{amount}}","code":"GBP","symbol":"£","email":"£{{amount}}"},{"html_unit":"CA${{amount}}","email_unit":"CA${{amount}}","name":"å æ¿å¤§å (CAD)","html":"CA${{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"CA${{amount}}","code":"CAD","symbol":"CA$","email":"CA${{amount}}"},{"html_unit":"CHF {{amount}}","email_unit":"CHF {{amount}}","name":"ç士æ³é (CHF)","html":"CHF {{amount}}","unit":"","trailing_zeros":false,"money_format":"%u %n","decimal_precision":2,"format":"CHF {{amount}}","code":"CHF","symbol":"CHF","email":"CHF {{amount}}"}], 112 vueOverrideTranslations: {"en":{"vue":{}}}, 113 hasI18nInContextEditing: false, 114 shopMultipleCurrenciesCheckout: false, 115 hasLocalizedShopPriceFormat: true, 116 } 117 </script>
117 118 119 120
120<script 121 src="//cdn-general.cybassets.com/frontend/shop/tolgeeIntegration-e958d46bfee2e69f.js"> 122 </script>
122 123
123<script defer> 124 /* 125 * Enable in-context translation for Liquid part on the page. 126 * This must be executed last to prevent conflicts with other Vue apps. 127 * So put it to `onload`, which will be executed after DOM ready's app mount 128 */ 129 window.onload = function() { 130 if ( 131 window.shopScriptHelper && 132 window.shopScriptHelper.hasI18nInContextEditing 133 ) { 134 window.initTolgeeForLiquid() 135 } 136 } 137 </script>
137 138
139<script> var google_con_event_labels = []</script>
vendor: 1 bytes, line 139
139
140<script src="//cdn-general.cybassets.com/frontend/shop/pageEventHandler-e958d46bfee2e69f.js"></script>
vendor: 1 bytes, line 140
140
141<script src="//cdn-general.cybassets.com/frontend/shop/globalAnalysis-e4c650eb0b.js"></script>
141 142
142<script> 143 window.c12t = {"customer_id":null}; 144 </script>
144 145 146 <meta name="request-id" content="D916AB4A022C5F324F69FC3927EC340A"/> 147 148<link rel="canonical" href="https://www.labrume.com.tw/en/"> 149<link rel="alternate" hreflang="zh-TW" href="https://www.labrume.com.tw/zh-TW/"> 150<link rel="alternate" hreflang="zh-CN" href="https://www.labrume.com.tw/zh-CN/"> 151<link rel="alternate" hreflang="en" href="https://www.labrume.com.tw/en/"> 152<link rel="alternate" hreflang="x-default" href="https://www.labrume.com.tw/zh-TW/">
153<script src="//cdn-general.cybassets.com/frontend/shop/carousel-e958d46bfee2e69f.js"></script>
153 154
154<script> 155 window.parent.postMessage({ type: 'previewShopInit', currentUrl: window.location.href }, '*'); 156 </script>
156 157
158<script src="//cdn-general.cybassets.com/frontend/appStoreSDK/main.2798231628aa7fab87a9.js"></script>
vendor: 1 bytes, line 158
158
159<script>window.CYBERBIZ_AppScriptSettings = {"shop_add_ons":"W3sidmVuZG9yX3R5cGUiOiJDWUJFUkJJWiBHb29nbGUgQW5hbHl0aWNzIDQi\nLCJhcHBfaWQiOiJRVWo1WnFvZUlPUjlaM2JaS2trMG44N3l5a0FpOWU0NURE\naDJ0YlFnaUJBIiwic2V0dGluZ3MiOnsiZ3RhZ19pZCI6IkctRjM3SjBNWTI4\nTiwgRy00QjdSSzdGSFdIIn19LHsidmVuZG9yX3R5cGUiOiJDaGF0IEJveCIs\nImFwcF9pZCI6ImM5ZDgzZjA5OTYxNzRmYmJhODZlYmEwNDFhZTg5OGEyIiwi\nc2V0dGluZ3MiOnsid2lkZ2V0X2tleSI6IjZidEs0NEpOb1JPUVVDSzAifX0s\neyJ2ZW5kb3JfdHlwZSI6IkRpZ2l0YWwgSW50ZWxsaWdlbmNlIFRyYWNrZXIi\nLCJhcHBfaWQiOiIxYjUwYTg2ZGMyZDE0MTgzODhmZGVkZjdhMGQ0MzlhZSIs\nInNldHRpbmdzIjp7fX1d\n"} 160</script>
vendor: 1 bytes, line 160
160
161<script src="https://cdn.cybassets.com/appmarket/api/common/attachments/entrypoint/9d6f4550aad572e9f70abb70ae5a6552482cf617ea5e4d5a32ed4ebbb5d60d54.js"></script>
vendor: 1 bytes, line 161
161
162<script src="https://cdn.cybassets.com/appmarket/api/common/attachments/entrypoint/8766542902afa60f4adda3c555c06025d2c27771ea85a6fc657a91cddbe5c59f.js"></script>
vendor: 1 bytes, line 162
162
163<script src="https://cdn.cybassets.com/appmarket/api/common/attachments/entrypoint/35cd1f36a4a855bacbaa53900f8e17b376d4cab44c73812eef261aef6435163d.js"></script>
vendor: 1 bytes, line 163
163
164<script>window.CYBERBIZ.initializeSDK.initialize();</script>
vendor: 1 bytes, line 164
164
165<script src="//cdn-general.cybassets.com/frontend/shop/setAffliateCookie-e958d46bfee2e69f.js"></script>
165 166 167 168 169 170 171 172 173 174 175 176 <style id="color_settings"> 177 :root { 178 179 --button: #3f2e1e; 180 181 182 183 --button_text: #bbb19e; 184 185 186 187 --accent: #926f2f; 188 189 190 191 --heading: #402f1f; 192 193 194 195 --text: #bbb19e; 196 197 198 199 --price: #402f1f; 200 201 202 203 --discount_price: #924a23; 204 205 206 207 --theme_bg: #FFFFFF; 208 209 210 211 --nav_logo_bg: #402f1f; 212 213 214 215 --nav_menu_bg: #FFFFFF; 216 217 218 219 --nav_menu_text: #402f1f; 220 221 222 223 --nav_menu_icon: #bbb19e; 224 225 226 227 --footer_bg: #f4eee2; 228 229 230 231 --footer_text: #402f1f; 232 233 234 235 --checkout_button: #402f1f; 236 237 238 239 --checkout_accent: #906e2f; 240 241 242 243 --product_border: #bbb19e; 244 245 246 247 --tips_text: #0C5460; 248 249 250 251 252 253 } 254</style> 255 256 257 258 259 <style> 260 .copyright { 261 262 display: none; 263 } 264 </style> 265 266 267 <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 74 bytes, lines 267-268
267 268 <script async src="https://www.googletagmanager.com/gtag/js?id=
268G-F37J0MY28N
vendor: 22 bytes, lines 268-269
268"></script> 269
269<script> 270 window.dataLayer = window.dataLayer || []; 271 function gtag(){dataLayer.push(arguments);} 272 gtag('js', new Date()); 273 274 275 </script>
275 276
276<script> 277 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 278 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 279 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 280 })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 281 282 ga('create', '', 'auto', {'name': 'cyberbiz'}); 283 ga('cyberbiz.require', 'displayfeatures'); 284 ga('cyberbiz.set', 'dimension1', '23806'); 285 ga('cyberbiz.require', 'ec'); 286 ga('cyberbiz.send', 'pageview'); 287 </script>
287 288 </head> 289 290 <body style="display: flex; flex-direction: column;">
vendor: 74 bytes, lines 290-292
290 291 <noscript><iframe 292 src="//www.googletagmanager.com/ns.html?id=
292GTM-TXD9LVJ
vendor: 117 bytes, lines 292-298
292" 293 height="0" 294 width="0" 295 style="display:none;visibility:hidden"> 296 </iframe></noscript> 297 298
298<!-- Navigation --> 299 <!-- cyb_snippet liquid_helper start -->
300<script> 301 function getDiscountPriceName() { 302 return "true" === "true" ? "" : ""; 303 } 304 305 function getDiscountPriceSuggestionName() { 306 return "false" === "true" ? "" : ""; 307 } 308 309 document.addEventListener('DOMContentLoaded', function() { 310 const languageHandle = Cookies.get("language"); 311 const defaultLanguage = {"handle":"zh-TW","currency_code":"TWD","title":"ç¹é«ä¸æ"}; 312 const languages = [{"handle":"zh-TW","currency_code":"TWD","title":"ç¹é«ä¸æ"},{"handle":"zh-CN","currency_code":"CNY","title":"ç®ä½ä¸æ"},{"handle":"en","currency_code":"USD","title":"English"}]; 313 const currency = window.shopScriptHelper.defaultCurrency; 314 const currencies = window.shopScriptHelper.currenciesInfo; 315 window.liquidHelper = { 316 shopInternational: true, 317 defaultLanguage: defaultLanguage, 318 language: languages.find(function(l) { 319 return l.handle === languageHandle; 320 }) || defaultLanguage, 321 shopMultipleCurrenciesCheckout: false, 322 shopMultipleCurrencies: true, 323 defaultCurrencyFormat: "NT${{amount_no_decimals}}", 324 defaultCurrency: currency, 325 getCurrency: function() { 326 const currencyValue = Cookies.get("currencyValue") || currency; 327 return currencies.find(function(c) { return c.code === currencyValue; } 328 )}, 329 getDefaultCurrency: function() { return currencies.find(function(c) { 330 return c.code === currency; 331 })}, 332 getAvailableCurrencies: function() { return currencies.map(c => c.code) },
333 getCurrencyFormatInfo: function(currency) { 334 const currencyInfo = currencies.find(c => c.code === currency) 335 return _.pick(currencyInfo, [ 336 'decimal_precision', 337 'symbol', 338 'money_format', 339 'unit', 340 'trailing_zeros', 341 'html_unit', 342 'code', 343 ]); 344 }, 345 cartQuantityLimit: (function() { 346 const limit = Number("0" || undefined); 347 return limit <= 0 || isNaN(limit) ? Number.POSITIVE_INFINITY : limit; 348 })(), 349 isFirstVariantSelected: false , 350 isImageColorsUsed: false , 351 isEmptyClickable: true , 352 hasAddBuyProduct: '' !== "" ? true : false, 353 hasPriceWithDiscountPlugin: 'true' ? true : false, 354 conversionBonus: 1, 355 hasLocalizedShopPriceFormat: true, 356 hasCustomerCartPlugin: true, 357 isCartEnabled: true, 358 cdnHost: '//cdn-general.cybassets.com', 359 hasShopCustomPasswordRulePlugin: false, 360 hasDisableProductQuantityValidation: false, 361 hasBreadcrumbReferrerEnabled: false, 362 }; 363 }); 364</script>
364 365 366<!-- cyb_snippet liquid_helper end --> 367
368<script src='//cdn-general.cybassets.com/frontend/shop/navbarSection-e958d46bfee2e69f.js' type='text/javascript'></script>
368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385<style> 386 387 #navbar { 388 --navbar-pc-title-scale: 0.9; 389 --navbar-pc-body-scale: 1.0; 390 --navbar-mobile-title-scale: 0.9; 391 --navbar-mobile-body-scale: 1.0; 392 } 393 394 395 396 397 398</style> 399 400 401 <span id="navbar" class="drawer drawer--left font-size-setting-enabled"> 402 <header id="header" class="qk-w--100vw qk-pos--fixed qk-t--0 qk-l--0"> 403 404 405 406 <div id="announcement-bar"></div> 407 408 409 410 411 <div class="computer_nav qk-hidden--mobile "> 412 <div class="header_logo qk-bg--nav_logo_bg"> 413 <div class="qk-pos--rel"> 414 <div class="qk-text--center"> 415 <!-- logo start --> 416 417 <nav class="logo qk-display--il_bk"> 418 <a href="/" class="qk-w--100"> 419 <img 420 src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee" 421 class="qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--pc_logo qk-hidden--mobile" 422 style="width: auto; height: 52px;" 423 alt="" 424 height="52" 425 width="auto" 426 > 427 </a> 428 </nav> 429 430 <!-- logo end --> 431 <!-- tool-nav start --> 432 433 <!-- cyb_snippet tool_nav start --> 434 435 436 437 438 439 440<nav class="tool-nav qk-pos--rel qk-float--r qk-display--flex"> 441 <ul class="link_shelf_top qk-display--flex qk-flex--row qk-justify--end qk-align--center qk-pos--abs qk-r--0"> 442 443 444 445 <li class="i18n-selector qk-fs--body qk-text--nav_menu_icon qk-bd--nav_menu_icon qk-btn"></li> 446 447 <!-- member --> 448 449 <li class="customer_account qk-pos--rel qk-pd--05"> 450 <div class="dropdown qk-pos--static"> 451 <div class="qk-cursor--pointer" data-toggle="dropdown"> 452 <div data-icon-type="custom_icon_type_account"></div> 453 <span class="text"></span> 454 </div> 455 <div class="member qk-dropdown_menu dropdown-menu qk-pos--abs qk-r--0 qk-bd--default qk-bd--product_border qk-bg--theme_bg" role="menu"> 456 <ul id="customer-logined-menu" style="display: none"> 457 <li> 458 <div class="qk-fs--body qk-text--heading"> 459 <p class="customer-name qk-whitespace-break-spaces"></p> 460 <p>Welcome!</p> 461 </div> 462 </li> 463 </ul> 464 <ul id="customer-not-login-menu"> 465 <li class="button qk-text--center"> 466 <a href="/en/account/login" class="btn-login qk-btn qk-btn--lg qk-btn--primary qk-w--100">Log in</a> 467 </li> 468 <li class="button qk-text--center"> 469 <a href="/en/account/signup" class="btn-orders qk-btn qk-btn--lg qk-btn--secondary qk-w--100 qk-bg--transparent">Sign up</a> 470 </li> 471 </ul> 472 <span class="menu-bd qk-bd_t--default qk-bd--product_border"></span> 473 <ul class="member-menu qk-bd_t--default qk-bd--product_border"> 474 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg"> 475 <a href="/en/account/index" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">My Account</a> 476 </li> 477 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg"> 478 <a href="/en/account/orders" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">My Order(s)</a> 479 </li> 480 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg"> 481 <a href="/en/account/coupons" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">My Coupon(s)</a> 482 </li> 483 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg"> 484 <a href="/en/account/tracking_items" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">My Wishlist</a> 485 </li> 486 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg customer-logout-li" style="display: none"> 487 <a href="/en/account/logout" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">Logout</a> 488 </li> 489 </ul> 490 </div> 491 </div> 492 </li> 493 494 <!-- for money symbol --> 495 <div id="money-symbol" data-money-symbol="NT${{amount_no_decimals}}" hidden></div> 496 <!-- cart --> 497 498 <li class="cart qk-pos--rel qk-pd--05"> 499 <!--é»è ¦ççè³¼ç©è»é¸å®--> 500 <div class="dropdown qk-pos--static"> 501 <div data-toggle="dropdown" class="shopcart qk-cursor--pointer" > 502 <div data-icon-type="custom_icon_type_cart"></div>
503 <span class="global-cart-count qk-circle qk-circle--sm qk-bg--accent qk-text--white qk-vert--mid qk-pos--abs qk-bd" style="display: none;">0</span> 504 <span class="global-cart-loading"></span> 505 </div> 506 <div class="qk-dropdown_menu dropdown-menu qk-pos--abs qk-r--0 qk-bd--default qk-bd--product_border qk-bg--theme_bg" role="menu"> 507 <div class="cart_list global-cart-item-list custom-scrollbar qk-of_x--hidden qk-of_y--scroll qk-of_y--overlay qk-display--flex qk-flex--column qk-justify--between default_scale"></div> 508 <p class="cart_empty qk-fs--body qk-text--heading qk-text--center">There are no items in your cart.</p> 509 <ul> 510 <li class="button qk-text--center"> 511 <a class="btn-checkout qk-btn qk-btn--lg qk-btn--primary qk-w--100" href="/en/cart" style="display: none">BUY NOW</a> 512 <a class="btn-tracking qk-btn qk-btn--lg qk-btn--secondary qk-w--100 qk-bg--transparent" href="/en/account/tracking_items">Go to Wishlist</a> 513 </li> 514 </ul> 515 </div> 516 </div> 517 </li> 518 519 <!-- search --> 520 521 <li class="search qk-pos--rel qk-pd--05" id="search-icon"> 522 <div class="dropdown qk-pos--static"> 523 <div class="qk-cursor--pointer" data-toggle="dropdown"> 524 <div data-icon-type="custom_icon_type_search"></div> 525 </div> 526 <div class="qk-dropdown_menu dropdown-menu qk-pos--abs qk-r--0 qk-bd--default qk-bd--product_border qk-bg--theme_bg" role="menu"> 527 <div class="search-area qk-display--flex qk-flex--row qk-justify--start qk-align--center qk-vert--mid"> 528 <form action="/search" class="form-inline qk-search_form qk-display--flex qk-justfify--between qk-align--center qk-flex--1"> 529 <input class="search-input form-control qk-inputbox qk-inputbox--lg qk-flex--1 qk-w--100 qk-bg--transparent qk-text--heading" type="search" placeholder="Search" aria-label="Search" name="q" value="" /> 530 <button class="search-btn qk-btn qk-btn--lg qk-btn--primary qk-pd--0" type="submit">Search</button> 531 </form> 532 </div> 533 </div> 534 </div> 535 </li> 536 537 <!-- express delivery --> 538 539 </ul> 540</nav> 541 542<!-- cyb_snippet tool_nav end --> 543 544 <!-- tool-nav end --> 545 </div> 546 </div> 547 </div> 548 549 <div class="header_nav qk-bg--nav_menu_bg"> 550 <div class="qk-pd_x--15"> 551 <div class="qk-pos--relative center"> 552 <!-- main-nav start --> 553 <nav class="main_nav qk-display--init"> 554 <!-- cyb_snippet _main_nav_skeleton start --><ul 555 class="main_nav_skeleton link_shelf_top qk-display--flex qk-flex--row qk-flex--wrap qk-justify--center qk-align--center qk-body" 556 style="justify-content: center; visibility: hidden;" 557 aria-hidden="true" 558 ><span> 559 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/new-arrival" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">New Arrivals æ°åä¸å¸</a></li> 560 </span><span> 561 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/all" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">Boutique ååº</a></li> 562 </span><span> 563 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/la-brume-é¸å®" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">Brands æ¾å±±é¸å</a></li> 564 </span><span> 565 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/la-brume-daan-é¸å®" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">Daan brands 大å®é¸å</a></li> 566 </span><span> 567 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/discovery-set" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">Discovery Sets æ¢ç´¢é«é©</a></li> 568 </span><span> 569 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/pages/about-us" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">About éæ¼æå</a></li> 570 </span></ul><!-- cyb_snippet _main_nav_skeleton end --> 571 </nav>
572 <!-- main-nav end --> 573 </div> 574 </div> 575 </div> 576 577 </div> 578 579 <div class="qk-hidden--pc "> 580 <!-- mobile-nav start --> 581 <nav class="mobile-nav qk-bg--nav_logo_bg"> 582 <ul class="qk-display--flex qk-flex--row qk-justify--between qk-align--center qk-pd_x--05 qk-pd_y--0"> 583 <!-- menu --> 584 585 <li class="sidebar-menu-icon drawer-toggle qk-text--center qk-pd_x--05 qk-pd_y--0 qk-display--flex qk-align--center"> 586 <div data-icon-type="custom_icon_type_menu"></div> 587 </li> 588 589 <!-- logo --> 590 591 <li class="logo qk-mg_r--auto qk-pd_x--05 qk-pd_y--0"> 592 593 <a href="/" class="qk-display--il_flex qk-align--center qk-h--100 qk-hidden--phone"> 594 <img 595 src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee" 596 height="25" 597 width="auto" 598 alt="" 599 > 600 </a> 601 602 603 <a href="/" class="qk-display--il_flex qk-align--center qk-h--100 qk-hidden--tablet"> 604 <img 605 src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee" 606 height="25" 607 width="auto" 608 alt="" 609 > 610 </a> 611 612 </li> 613 614 615 <!-- search --> 616 617 <li class="search qk-text--center qk-pd_x--05 qk-pd_y--0 qk-display--flex qk-align--center "> 618 <div class="dropdown qk-pos--static qk-text--center"> 619 <div class="qk-cursor--pointer" data-toggle="dropdown"> 620 <div data-icon-type="custom_icon_type_search"></div> 621 </div> 622 <div 623 class="qk-dropdown_menu dropdown-menu qk-w--100vw qk-bg--theme_bg qk-bd--default qk-bd--product_border qk-mg--0" 624 role="menu" 625 > 626 <div class="search-area qk-display--flex qk-flex--row qk-justify--start qk-align--center qk-sp_bt--5 qk-w--100"> 627 <form action="/search" class="form-inline qk-display--flex qk-justfify--center qk-flex--1"> 628 <div class="form-inline qk-search_form qk-display--flex qk-justfify--center qk-align--center qk-flex--1"> 629 <input 630 class="form-control qk-flex--1 qk-inputbox qk-inputbox--lg qk-bg--transparent qk-text--heading" 631 type="search" 632 placeholder="Search" 633 aria-label="Search" 634 name="q" 635 value="" 636 > 637 <button class="search-btn qk-btn qk-btn--lg qk-btn--primary qk-pd--0" type="submit"> 638 Search 639 </button> 640 </div> 641 </form> 642 </div> 643 </div> 644 </div> 645 </li> 646 647 <!-- express delivery --> 648 649 650 </ul> 651 </nav> 652 <!-- mobile-nav end --> 653 </div> 654 655 </header>
655<script> 656 (function () { 657 var isNavbarTransparent = false; 658 659 function measureHeaderOffset() { 660 var header = document.getElementById('header'); 661 if (!header) return null; 662 663 var headerHeight = header.getBoundingClientRect().height; 664 665 if (isNavbarTransparent && window.matchMedia('(min-width: 992px)').matches) { 666 var computerNav = document.querySelector('.computer_nav'); 667 if (computerNav) { 668 headerHeight -= computerNav.getBoundingClientRect().height; 669 } 670 } 671 672 var floatFilter = document.getElementById('float-filter'); 673 var floatFilterHeight = floatFilter 674 ? floatFilter.getBoundingClientRect().height 675 : 0; 676 677 return headerHeight - floatFilterHeight; 678 } 679 680 window.measureHeaderOffset = measureHeaderOffset; 681 682 var offset = measureHeaderOffset(); 683 if (offset !== null) { 684 document.body.style.paddingTop = offset + 'px'; 685 } 686 })(); 687 </script>
687 688 689 <!-- Sidebar --> 690 <nav class="drawer-nav drawer-nav_width qk-bg--nav_menu_bg " role="navigation"> 691 <div class="drawer-menu"> 692 <!-- cyb_snippet side_menu start --> 693 694 695<ul id="index_sidebar_shelf_top" class="sidebar qk-pd_b--1"> 696 697 <li class="logo qk-pos--rel qk-bg--nav_logo_bg qk-pd_x--1 qk-pd_y--05"> 698 <a href="/" class="qk-pd--0"> 699 <img src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee" height="32" width="auto" alt="logo"> 700 </a> 701 <button class="drawer-toggle qk-pos--abs qk-bg--transparent qk-pd--0"></button> 702 </li> 703 704 705 706 707 708 <!-- cyb_snippet components/side_menu/menu start --> 709 710 <li class="category_title qk-fs--breadcrumb qk-bd--nav_menu_text qk-text--nav_menu_text qk-bd_b--default qk-fw--500">主é¸å®</li> 711 712 713 714 715 716 <li class="qk-pos--rel qk-pd--0"> 717 718 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/new-arrival">New Arrivals æ°åä¸å¸</a> 719 720 </li> 721 722 723 724 725 726 <li class="qk-pos--rel qk-pd--0"> 727 <button class="linklist bt-toggle qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-text--nav_menu_text qk-bg--nav_menu_bg qk-pos--rel" data-toggle="collapse" data-target=".collapse_index_sidebar_2" aria-expanded=" true "> 728 729 <a class="qk-text--nav_menu_text" href="/collections/all"> Boutique ååº </a> 730 731 </button> 732 <ul id="index_sidebar_shelf_second_2" class="collapse_index_sidebar_2 collapse shelf_second show qk-pd--0"> 733 734 735 736 737 <li class="qk-pos--rel qk-pd--0"> 738 739 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/new-arrival"> 740 New Arrivals æ°åä¸å¸ 741 </a> 742 743 </li> 744 745 746 747 748 749 <li class="qk-pos--rel qk-pd--0"> 750 751 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/eau-de-toilette"> 752 Eau de Toilette æ·¡é¦æ°´ 753 </a> 754 755 </li> 756 757 758 759 760 761 <li class="qk-pos--rel qk-pd--0"> 762 763 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/eau-de-parfum"> 764 Eau de Parfum æ·¡é¦ç²¾ 765 </a> 766 767 </li> 768 769 770 771 772 773 <li class="qk-pos--rel qk-pd--0"> 774 775 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/extrait-de-parfum"> 776 Extrait de Parfum é¦ç²¾ 777 </a> 778 779 </li> 780 781 782 783 784 785 <li class="qk-pos--rel qk-pd--0"> 786 787 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/travel-editions"> 788 Travel Editions æ è¡é¦æ°´ 789 </a> 790 791 </li> 792 793 794 795 796 797 <li class="qk-pos--rel qk-pd--0"> 798 799 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/discovery-set"> 800 Discovery Sets æ¢ç´¢è©¦é¦ 801 </a> 802 803 </li> 804 805 806 807 808 809 <li class="qk-pos--rel qk-pd--0"> 810 811 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/home-fragrance"> 812 Home Fragrance 空é馿° 813 </a> 814 815 </li> 816 817 818 819 820 821 <li class="qk-pos--rel qk-pd--0"> 822 823 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/scented-candle"> 824 Scented Candle 馿°è ç 825 </a> 826 827 </li> 828 829 830 831 832 833 <li class="qk-pos--rel qk-pd--0"> 834 835 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/scented-objects-馿°ç©ä»¶"> 836 Scented Objects 馿°ç©ä»¶ 837 </a> 838 839 </li> 840 841 842 843 844 845 <li class="qk-pos--rel qk-pd--0"> 846 847 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/incense-paper"> 848 Incense & Scent Papers ç·é¦ï¼é¦ç´ 849 </a> 850 851 </li> 852 853 854 855 856 857 <li class="qk-pos--rel qk-pd--0"> 858 859 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/body-care"> 860 Body Care 身é«ä¿é¤ 861 </a> 862 863 </li> 864 865 866 867 868 869 <li class="qk-pos--rel qk-pd--0"> 870 871 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/all"> 872 All Products ææåå 873 </a> 874 875 </li> 876 877 878 </ul> 879 </li> 880 881 882 883 884 885 <li class="qk-pos--rel qk-pd--0"> 886 <button class="linklist bt-toggle qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-text--nav_menu_text qk-bg--nav_menu_bg qk-pos--rel" data-toggle="collapse" data-target=".collapse_index_sidebar_3" aria-expanded=" true "> 887 888 <a class="qk-text--nav_menu_text" href="/collections/la-brume-é¸å®"> Brands æ¾å±±é¸å </a> 889 890 </button> 891 <ul id="index_sidebar_shelf_second_3" class="collapse_index_sidebar_3 collapse shelf_second show qk-pd--0"> 892 893 894 895 896 <li class="qk-pos--rel qk-pd--0"> 897 898 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/bontemps"> 899 BONTEMPS PARIS 900 </a> 901 902 </li> 903 904 905 906 907 908 <li class="qk-pos--rel qk-pd--0"> 909 910 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/æµ®ä¸èª-earthly-records-day-pass-incense-paper"> 911 Earthly Records 912 </a> 913 914 </li> 915 916 917 918 919 920 <li class="qk-pos--rel qk-pd--0"> 921 922 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/headspace"> 923 HEADSPACE 924 </a> 925 926 </li> 927 928 929 930 931 932 <li class="qk-pos--rel qk-pd--0"> 933 934 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/liis"> 935 Liis 936 </a> 937 938 </li> 939 940 941 942 943 944 <li class="qk-pos--rel qk-pd--0"> 945 946 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/marie-jeanne"> 947 MARIE JEANNE 948 </a> 949 950 </li> 951 952 953 954 955 956 <li class="qk-pos--rel qk-pd--0"> 957 958 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/neandertal"> 959 NEANDERTAL 960 </a> 961 962 </li> 963 964 965 966 967 968 <li class="qk-pos--rel qk-pd--0"> 969 970 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/notes-de-bas-de-paje"> 971 NOTES DE BAS DE PAJE 972 </a> 973 974 </li> 975 976 977 978 979 980 <li class="qk-pos--rel qk-pd--0"> 981 982 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/oddity-fragrance"> 983 Oddity fragrance 984 </a> 985 986 </li> 987 988 989 990 991 992 <li class="qk-pos--rel qk-pd--0"> 993 994 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/racyne-perfumes"> 995 Racyne 996 </a> 997 998 </li> 999 1000 1001 1002 1003 1004 <li class="qk-pos--rel qk-pd--0"> 1005 1006 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/sora-dora"> 1007 SORA DORA 1008 </a> 1009 1010 </li> 1011 1012 1013 1014 1015 1016 <li class="qk-pos--rel qk-pd--0"> 1017 1018 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/sonavojago-fragrance"> 1019 Sona VojaÄo 1020 </a> 1021 1022 </li> 1023 1024 1025 1026 1027 1028 <li class="qk-pos--rel qk-pd--0"> 1029 1030 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/venue"> 1031 VENUE 1032 </a> 1033 1034 </li> 1035 1036 1037 </ul> 1038 </li> 1039 1040 1041 1042 1043 1044 <li class="qk-pos--rel qk-pd--0"> 1045 <button class="linklist bt-toggle qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-text--nav_menu_text qk-bg--nav_menu_bg qk-pos--rel" data-toggle="collapse" data-target=".collapse_index_sidebar_4" aria-expanded=" true "> 1046 1047 <a class="qk-text--nav_menu_text" href="/collections/la-brume-daan-é¸å®"> Daan brands 大å®é¸å </a> 1048 1049 </button> 1050 <ul id="index_sidebar_shelf_second_4" class="collapse_index_sidebar_4 collapse shelf_second show qk-pd--0"> 1051 1052 1053 1054 1055 <li class="qk-pos--rel qk-pd--0"> 1056 1057 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/agar-archive"> 1058 Agar Archive 1059 </a> 1060 1061 </li> 1062 1063 1064 1065 1066 1067 <li class="qk-pos--rel qk-pd--0"> 1068 1069 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/almost-fever"> 1070 almost fever 1071 </a> 1072 1073 </li> 1074 1075 1076 1077 1078 1079 <li class="qk-pos--rel qk-pd--0"> 1080 1081 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/dinshare-é»å°"> 1082 DINshare 1083 </a> 1084 1085 </li> 1086 1087 1088 1089 1090 1091 <li class="qk-pos--rel qk-pd--0"> 1092 1093 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/kintsugi-perfumes"> 1094 KINTSUGI PERFUMES 1095 </a> 1096 1097 </li> 1098 1099 1100 1101 1102 1103 <li class="qk-pos--rel qk-pd--0"> 1104 1105 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/liis"> 1106 Liis 1107 </a> 1108 1109 </li> 1110 1111 1112 1113 1114 1115 <li class="qk-pos--rel qk-pd--0"> 1116 1117 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/nown-unown"> 1118 nown unown 1119 </a> 1120 1121 </li> 1122 1123 1124 1125 1126 1127 <li class="qk-pos--rel qk-pd--0"> 1128 1129 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/oddity-fragrance"> 1130 Oddity fragrance 1131 </a> 1132 1133 </li> 1134 1135 1136 1137 1138 1139 <li class="qk-pos--rel qk-pd--0"> 1140 1141 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/odeaur"> 1142 Ådeaur 1143 </a> 1144 1145 </li> 1146 1147 1148 1149 1150 1151 <li class="qk-pos--rel qk-pd--0"> 1152 1153 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/olfactif"> 1154 Olfactif 1155 </a> 1156 1157 </li> 1158 1159 1160 1161 1162 1163 <li class="qk-pos--rel qk-pd--0"> 1164 1165 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/racyne-perfumes"> 1166 Racyne 1167 </a> 1168 1169 </li> 1170 1171 1172 1173 1174 1175 <li class="qk-pos--rel qk-pd--0"> 1176 1177 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/sora-dora"> 1178 SORA DORA 1179 </a> 1180 1181 </li> 1182 1183 1184 1185 1186 1187 <li class="qk-pos--rel qk-pd--0"> 1188 1189 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/venue"> 1190 VENUE 1191 </a> 1192 1193 </li> 1194 1195 1196 </ul> 1197 </li> 1198 1199 1200 1201 1202 1203 <li class="qk-pos--rel qk-pd--0"> 1204 1205 <a class="qk-fw--bold qk-dis
1205play--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/discovery-set">Discovery Sets æ¢ç´¢é«é©</a> 1206 1207 </li> 1208 1209 1210 1211 1212 1213 <li class="qk-pos--rel qk-pd--0"> 1214 <button class="linklist bt-toggle qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-text--nav_menu_text qk-bg--nav_menu_bg qk-pos--rel" data-toggle="collapse" data-target=".collapse_index_sidebar_6" aria-expanded=" true "> 1215 1216 <a class="qk-text--nav_menu_text" href="/pages/about-us"> About éæ¼æå </a> 1217 1218 </button> 1219 <ul id="index_sidebar_shelf_second_6" class="collapse_index_sidebar_6 collapse shelf_second show qk-pd--0"> 1220 1221 1222 1223 1224 <li class="qk-pos--rel qk-pd--0"> 1225 1226 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/pages/our-journey-stories-æ·ç¨èæ äº"> 1227 Our Journey æ·ç¨æ äº 1228 </a> 1229 1230 </li> 1231 1232 1233 1234 1235 1236 <li class="qk-pos--rel qk-pd--0"> 1237 1238 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/pages/æå¡å¶åº¦ï¼åç´è¾¦æ³-20250616155817"> 1239 Member Benefits æå¡å¶åº¦ 1240 </a> 1241 1242 </li> 1243 1244 1245 </ul> 1246 </li> 1247 1248 1249
1250<script> 1251 $('button a').on('click', function(e) {e.stopPropagation()}); 1252</script>
1252 1253 1254<!-- cyb_snippet components/side_menu/menu end --> 1255 1256 1257 1258 1259 <li class="category_account-title qk-bd--nav_menu_text qk-fs--breadcrumb qk-text--nav_menu_text qk-bd_y--default qk-fw--500">Account</li> 1260 <li class="qk-pos--rel qk-pd--0"> 1261 <div class="customer-logined-menu qk-display--il_bk qk-w--100 qk-text--left" style="display: none"> 1262 <a href="/en/account/index" class="qk-text--nav_menu_text qk-fw--bold qk-fs--body">My Account</a> 1263 </div> 1264 </li> 1265 <li class="qk-pos--rel qk-pd--0"> 1266 <div class="customer-logined-menu qk-display--il_bk qk-w--100 qk-text--left" style="display: none"> 1267 <a href="/en/account/orders" class="qk-text--nav_menu_text qk-fw--bold qk-fs--body">My Order(s)</a> 1268 </div> 1269 </li> 1270 <li class="qk-pos--rel qk-pd--0"> 1271 <div class="customer-logined-menu qk-display--il_bk qk-w--100 qk-text--left" style="display: none"> 1272 <a href="/en/account/logout" class="qk-text--nav_menu_text qk-fw--bold qk-fs--body">Logout</a> 1273 </div> 1274 </li> 1275 <li class="qk-pos--rel qk-pd--0"> 1276 <a href="/en/account/login"> 1277 <div class="customer-not-login-menu qk-bd--nav_menu_text qk-bg--nav_menu_text customer-not-login-menu_login qk-display--il_flex qk-justify--center qk-align--center qk-w--100 qk-text--center "> 1278 <span class="qk-text--nav_menu_bg qk-fw--500 qk-fs--body"> 1279 Log in 1280 </span> 1281 </div> 1282 </a> 1283 </li> 1284 <li class="qk-pos--rel qk-pd--0"> 1285 <a href="/en/account/signup"> 1286 <div class="customer-not-login-menu qk-bd--nav_menu_text customer-not-login-menu_signup qk-display--il_flex qk-justify--center qk-align--center qk-w--100 qk-text--center qk-bd--nav_menu_text qk-bd--default"> 1287 <span class="qk-text--nav_menu_text qk-fs--body qk-fw--500"> 1288 Sign up 1289 </span> 1290 </div> 1291 </a> 1292 </li> 1293 1294 1295 1296 1297 <li class="category_title qk-bd--nav_menu_text qk-fs--breadcrumb qk-text--nav_menu_text qk-bd_y--default qk-fw--500"> 1298 1299 Language 1300 1301 1302 ï½ 1303 1304 1305 Currency 1306 1307 </li> 1308 <li id="side-menu-modal__button" class="qk-text--nav_menu_text qk-fw--bold language_button qk-fs--body qk-text--nav_menu_text"> 1309 </li> 1310 1311 1312</ul> 1313 1314<link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/sidebar-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' /> 1315
1316<script> 1317 $(document).ready(function(){ 1318 // å´éé¸å® 1319 if ($('.drawer').length){ 1320 $('.drawer').drawer(); 1321 $('.bt-toggle').click(function(){ 1322 setTimeout(function(){ 1323 $('.drawer')[0].iScroll.refresh() 1324 },500) 1325 }) 1326 } 1327 }); 1328</script>
1328 1329
1330<script> 1331 $(document).ready(function(){ 1332 const languageSize = 3 1333 const currencySize = 15 1334 1335 const initLanguageAndCurrency = ({language,code})=> { 1336 const contentSelector = $("#side-menu-modal__button"); 1337 let content = '' 1338 const isMutipleCurrencies = true 1339 const isMultiLanguages = true 1340 if ( isMultiLanguages && languageSize > 1 ) content = language || (liquidHelper.language && liquidHelper.language.title) 1341 if ( isMutipleCurrencies && (code && content === '')) content = code 1342 else if (isMutipleCurrencies && (code && content !=='')) content = `${content}ï½${code}` 1343 contentSelector.text(content) 1344 } 1345 1346 let code = '' 1347 let language = '' 1348 if (liquidHelper.language) language = liquidHelper.language 1349 if (liquidHelper.getCurrency()) code = liquidHelper.getCurrency().code 1350 1351 initLanguageAndCurrency({ language:language.title, code }) 1352 1353 $("#side-menu-modal__button").click(function() { 1354 const clickable = languageSize > 1 || currencySize > 1 1355 if (clickable) { 1356 $('.drawer').drawer('close'); 1357 const event = new CustomEvent("i18n_selector_clicked"); 1358 document.dispatchEvent(event); 1359 } 1360 }); 1361 1362 document.addEventListener('i18n_modal_confirmed', (e) => { 1363 const { languageTitle, currency } = e.detail; 1364 initLanguageAndCurrency({ language: languageTitle, code: currency }); 1365 }); 1366 }); 1367 1368</script>
1368 1369 1370 1371<!-- cyb_snippet side_menu end --> 1372 1373 </div> 1374 </nav> 1375 <!-- Bottombar --> 1376 1377 <div 1378 id="mobile-bottom-bar" 1379 class="qk-display--flex qk-justify--around qk-bg--nav_logo_bg qk-w--100vw qk-pos--fixed qk-b--0 qk-hidden--pc" 1380 > 1381 <!-- home --> 1382 <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1"> 1383 <a id="home-nav-icon" href="/"> 1384 <div data-icon-type="custom_icon_type_home"></div> 1385 </a> 1386 </div> 1387 <!-- tracking items --> 1388 <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1"> 1389 <a href="/en/account/tracking_items"> 1390 <div data-icon-type="custom_icon_type_tracking_items" c></div> 1391 </a> 1392 </div> 1393 <!-- cart --> 1394 1395 <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1"> 1396 <a 1397 href="/en/cart" 1398 class="qk-display--il_flex qk-flex--row qk-justify--center qk-align--center qk-vert--mid qk-pos--rel" 1399 > 1400 <div data-icon-type="custom_icon_type_cart"></div> 1401 <span 1402 class="number global-cart-count qk-circle qk-circle--sm qk-bg--accent qk-text--white qk-text--center qk-vert--mid qk-pos--abs" 1403 style="display: none;" 1404 >0</span 1405 > 1406 </a> 1407 </div> 1408 1409 <!-- member --> 1410 1411 <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1"> 1412 <a id="customer-phone-nav-icon" href="/en/account/login"> 1413 <div data-icon-type="custom_icon_type_account"></div> 1414 </a> 1415 </div> 1416 1417 </div> 1418 1419 1420 </span> 1421 1422<div id="index-popular-tags"></div> 1423 1424<style id="timer_color"> 1425 :root { 1426 1427 --timer_text: #eee1d2; 1428 1429 1430 1431 --timer_bg: #2a0e05; 1432 1433 } 1434</style> 1435
1436<script> 1437 window.language = {"account_name":"Bank Account Name","add_cart_error_try_again":"Network error, please try again.","add_to_cart":"ADD TO CART","addcart_rate_limit_desc":"seconds until you can try again. We recommend staying on this page.","address1":"Return Address","all_filters":"All Filters","apply_fail":"Application Failed","apply_return":"Return Application","apply_return_success":"Refund Request Sent","apply_success":"Successful Application","arrive_soon":"Arriving Soon","articles_total":"Total of {{ totalArticleCounts }} articles","bank_account":"Bank Account","bank_branch_name":"Name of Branch","bonus_redemption":"Exchange Credit Point(s)","cancel":"Cancel","cart_price_total":"Total","check_order":"My Order(s)","choose_branch_bank":"Select Bank Branch","choose_return_reason":"Select Return Reason","city":"City","common_price":"Retail Price","comply_group_number":"Comply {{comply_group_number}} group(s) of discount, ","confirm":"Confirm","confirm_return":"Apply Refund","confirm_submit":"Submit","congratulations_for_verify_mobile_success":"Congratulations, you've successfully verified your phone!","contact_form":"Contact Form","continue_reading":"Continue Reading","country_placeholder":"Select country","coupon_free_shipping":"Free Shipping Coupon","coupon_items":"Coupon Discount Item","date_error":"Date error","default_sort":"Store Recommendations","deliver_error":"Delivery Error","discount_detail":"Discount Details","email":"Email Address","email_placeholder":"Enter your email, e.g.: [email protected]","enter_account_name":"Enter bank account name","enter_bank_account":"Enter bank account number","enter_return_reason":"Please specify the return reason...","error_message":"An error has occurred when sending a verification message; please try again later.","fail_operation":"Something went wrong; please try again later!","filter_button":"Filter","filter_no_result":"Sorry, no results","free":"Free","gift_price":"Discount Price","gift_purchase":"Gift with purchase","go_check_email":"Please check your mailbox; we've just sent you an email.","group_percent_discount":"{{percent_discount}} % off item(s) in the group.","has_stock":"In Stock","include_discount_and_shipping_fee":"Including discount and shipping fee","invalid_email":"Invalid Email","invalid_name":"Name required","invalid_phone_number":"Phone number required","invalid_question_content":"Please enter your message","keep_shopping":"Keep Shopping","keyin_address1":"Please enter the address we should collect the returning goods","keyin_city":"Please enter city name","keyin_zip":"Please enter postal code","less_then_one":"Quantity must be greater than 0; please select the amount to purchase.","line_item_quantity":"Quantity: {{ lineItemQuantity }}","literal_points":"point(s)","login_btn":"Log in","mail_send_fail":"Failed to send mail.","message_confirmation_token_error":"Error in verification code.","messenger_error_please_try_again":"An error has occurred when sending the message; please try again later.","mobile_number_error":"Mobile phone number in error.","name":"Name","name_placeholder":"Enter your name","new_password_is_sent":"New password is sent.","new_product_defect":"Defect on New Product","nn_collection_save_more_money_title":"for {{price}}","no_stock":"Out of Stock","notification_enabled":"Notification enabled","notify_me_when_stock_arrives":"Sold out! Notify me when the product is available.","onsale":"On Sale","order_date":"Order Date","order_number":"Order Number","order_retrun_confirm":"Are you sure you want to request a refund?","ori_price":"Original Price","others":"Others","over_cart_limit":"Quantity exceeds shopping cart limit; please remove some items and place the order again.","over_product_quantity":"Quantity exceeds the purchase limit; please reduce the quantity selected.","over_stock_count":"Quantity exceeds inventory stock. Remaining {{ count }}","over_stock_quantity":"The quantity entered exceeds the stock quantity. Please decrease your order.","phone_number":"Phone Number","phone_number_placeholder":"Enter your phone number","piece":"{{quantity}} item(s)","please_choose_bank":"Select Bank","please_choose_product":"Please select specifications.","please_choose_variant":"Please select product specifications.","please_enter_number":"Please enter a number.","please_reselect":"Try removing some filters to
1437see more items","please_send_and_confirm_verify_code":"Please send and confirm the verification code.","pre_order":"Pre-order Goods","price_asc":"Price Low To High","price_desc":"Price High To Low","price_filter":"Price","price_includes_tax":"(includes consumption tax of {{ tax }})","product_content_defect":"Wrong Product or Incomplete Product","product_defect":"Defective Product","product_limit_buy":"Limited purchase of this product {{ count }} items","product_rate_limit_btn":"Re-enter product page","product_rate_limit_desc":"seconds until you can re-enter the product page. We recommend staying on this page.","product_rate_limit_title":"High demand right now, please wait","product_rate_limit_warn":"Leaving this page may increase your wait time.","product_sold":"Sold {{ productSold }} products","products_total":"Total of {{ totalProductCounts }} products","quantity":"Quantity","quantity_over_product_stock":"The quantity entered exceeds available product stock. Please decrease your order.","question_content":"Message","question_content_placeholder":"Please enter your message","question_submit_fail":"Something went wrong; please try again later!","question_submit_success":"The question has been sent successfully. We will contact you as soon as possible!","question_type":"Question Type","reached_favorable":"Promotion Reached","recent_days_sold_desc":"Best Seller","reenter_password_still_error":"Error: Password does not match.","refund":"Refund Amount","refund_account":"Refund Account","refund_info":"Refund Information","refund_invoice_check":"I agree to the cancellation of the invoice or the \"Tax Payment Certificate\", and give consent to {{company_name}} to be handled at discretion in order to expedite the refund process.","resend_verify_code":"Resend verification code.","reset_all_filters":"Reset All Filters","reset_filter_button":"Reset Filter","return":"Return","return_address":"Return Address","return_email_notification":"A copy of the refund details have been sent to your email","return_info":"Return Information","return_instruction":"Return Information","return_msg_Australia":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter \"My Account\", find your order and click \"View Status\", then click on \"Apply Refund\" as soon as possible.\u003cbr\u003e 2. After receiving the refund application, we will contact you to retrieve the goods. If you have any return questions, you can leave a message to the shop on the \"Order(s)\" page. Please do not send back the goods before confirming with the shop.\u003cbr\u003e 3. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 4. Once your returned item is received and inspected, an exchange or a refund will be made according to the shop's return policy.\u003cbr\u003e 5. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e","return_msg_Japan":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter \"My Account\", find your order and click \"View Status\", then click on \"Apply Refund\" as soon as possible. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e 2. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 3. After receiving the refund application, we will contact you to retrieve the goods. \u003cbr\u003e 4. If you have any return questions, you can leave a message to the shop on the \"Order(s)\" page. Please do not send back the goods before confirming with the shop.\u003cbr\u003e 5. Once your returned item is received and inspected, an exchange or a refund will be made according to the shop's return policy.\u003cbr\u003e","return_msg_Japan_to_Taiwan":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter \"My Account\", find your order and click \"View Status\", then click on \"Apply Refund\" as soon as possible. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e 2. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 3. After receiving the refund application, we will c
1437ontact you to retrieve the goods. \u003cbr\u003e 4. If you have any return questions, you can leave a message to the shop on the \"Order(s)\" page. Please do not send back the goods before confirming with the shop.\u003cbr\u003e 5. Once your returned item is received and inspected, an exchange or a refund will be made according to the shop's return policy.\u003cbr\u003e","return_msg_SEA":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter \"My Account\", find your order and click \"View Status\", then click on \"Apply Refund\" as soon as possible. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e 2. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 3. After receiving the refund application, we will contact you to retrieve the goods. \u003cbr\u003e 4. If you have any return questions, you can leave a message to the shop on the \"Order(s)\" page. Please do not send back the goods before confirming with the shop.\u003cbr\u003e 5. Once your returned item is received and inspected, an exchange or a refund will be made according to the shop's return policy.\u003cbr\u003e","return_msg_Taiwan":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter to \" My Account\", find your order and click \"My Order(s)\", then click on \"Apply Refund\" as soon as possible. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e 2. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 3. After receiving the refund application, we will contact you to retrieve the goods. If you have any return questions, you can click \"Message Shop\" on the \"My Order(s)\" page. Please do not send back the goods by yourself.\u003cbr\u003e 4. Please print this application form and send it with the goods.\u003cbr\u003e 5. Once your returned item is received and reviewed, a refund will be made to your original payment method; it would take up to 5 to 10 days until it shows on your bank statement.\u003cbr\u003e","return_msg_USA":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter \"My Account\", find your order and click \"View Status\", then click on \"Apply Refund\" as soon as possible. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e 2. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 3. After receiving the refund application, we will contact you to retrieve the goods. \u003cbr\u003e 4. If you have any return questions, you can leave a message to the shop on the \"Order(s)\" page. Please do not send back the goods before confirming with the shop.\u003cbr\u003e 5. Once your returned item is received and inspected, an exchange or a refund will be made according to the shop's return policy.\u003cbr\u003e","return_product":"Product Return Request","return_reason":"Return Reason","save_more_money_discount":"to enjoy {{percent_discount}}% off.","save_more_money_dollar":"Get {{dollar}} discount","search_article_label":"Article results ({{ totalArticleCounts }})","search_no_result":"Sorry, no results found by searching: {{ queryString }}. Please try a different word.","search_product_label":"Product results ({{ totalProductCounts }})","search_total":"Search: {{ queryString }} / {{ totalSearchCount }} item(s) found","select_sort_by":"Sort By","sell_from_asc":"Store Essentials","sell_from_desc":"New Arrivals","send_too_many_times_try_again_later":"Sent too many times, please try again later.","sending_msg_few_minutes_get":"SMS sending⦠You'll receive a verification code in a few minutes.","shipping_fee":"Shipping Fee","sold_out":"Sold Out","state_placeholder":"Select state / province","submit":"Submit","subtotal":"Subtotal","success_operation":"Message Sent!","successfully_copy_tracking_number":"Tracking number copied successfully","system_busy_try_again":"System busy; please try again later.","tax":"Tax","thanks_for_advise":"Thanks for your feedback.","thanks_you_have_signed_up":"Thanks for registering!","total_bonus_redemption":"Total Credit Point(s) Redemption","tw_city_placeholder":"County / City","tw_district_placeholder":"District","unreach_favorable":"Promotion Unreached","verification_error_please_correct":"Error during verification, please try again.","verify_success":"Verification code confirmed.","view_product":"View Product","vip_shipping_free":"Free Shipping For Members","zip":"ZIP / Postcode","suggested_range":"Suggested Range","periodic_order_label":"Subscription","check_account_length":"Bank Account Length Validation"} 1438 $(document).ready(function(){ 1439 if(window.location.pathname != '' && window.location.pathname != '/' ){ 1440 document.getElementById('index-popular-tags').style.display = 'none' 1441 } 1442 // åæ¸è¨æ 1443 1444 var leftDay = $('.left_day'); 1445 var leftHour = $('.left_hour'); 1446 var leftMin = $('.left_min'); 1447 var leftSec = $('.left_sec'); 1448 var nowTime = '' * 1; 1449 var startTime = '' ? '' * 1 : nowTime; 1450 var endTime = '' * 1; 1451 1452 function paddedFormat(num) { 1453 return num < 10 ? "0" + num : num; 1454 }; 1455 1456 function startCountDown(duration) { 1457 var left_day, left_hour, left_min, left_sec = 0; 1458 var countInterval = setInterval(function () { 1459 leftDay.html(paddedFormat(parseInt(duration / 3600 / 24))); 1460 leftHour.html(paddedFormat(parseInt(duration / 3600) % 24)); 1461 leftMin.html(paddedFormat(parseInt(duration / 60) % 60)); 1462 leftSec.html(paddedFormat(parseInt(duration) % 60)); 1463 duration = duration - 1; 1464 if (duration < 0) { 1465 clearInterval(countInterval); 1466 }; 1467 }, 1000); 1468 }; 1469 1470 if (startTime <= nowTime && endTime > nowTime) {
1471 startTime = nowTime; 1472 startCountDown(endTime - startTime); 1473 } 1474 1475 1476 function adjustContentTop() { 1477 const offset = window.measureHeaderOffset(); 1478 if (offset === null) return; 1479 $("body").css({ "padding-top": offset + "px" }); 1480 } 1481 1482 window.adjustContentTop = adjustContentTop; 1483 1484 // navbarè¨å®éæ 1485 1486 1487 // Call it first once DOM is ready to prevent CLS 1488 adjustContentTop(); 1489 1490 // å»¶é²åå§åï¼çå¾ app banner åå§å宿 1491 $(window).on("resize", adjustContentTop); 1492 1493 // ä½¿ç¨ setTimeout ç¢ºä¿ banner çæ å·²ç¶ç¢ºå® 1494 $(window).on("load", function() { 1495 setTimeout(function() { 1496 adjustContentTop(); 1497 }, 200); // 給 banner è¶³å¤ æéåå§å 1498 }); 1499 1500 $('img.header_banner').on('load', adjustContentTop); 1501 1502 window.renderNavbarSection('.main_nav', { 1503 navbarCollections: null, 1504 navbarItems: [{"id":1239740,"title":"New Arrivals æ°åä¸å¸","url":"/collections/new-arrival","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769966,"title":"Boutique ååº","url":"/collections/all","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":[{"id":1769968,"title":"New Arrivals æ°åä¸å¸","url":"/collections/new-arrival","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769973,"title":"Eau de Toilette æ·¡é¦æ°´","url":"/collections/eau-de-toilette","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769974,"title":"Eau de Parfum æ·¡é¦ç²¾","url":"/collections/eau-de-parfum","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769975,"title":"Extrait de Parfum é¦ç²¾","url":"/collections/extrait-de-parfum","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769976,"title":"Travel Editions æ è¡é¦æ°´","url":"/collections/travel-editions","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769984,"title":"Discovery Sets æ¢ç´¢è©¦é¦","url":"/collections/discovery-set","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769977,"title":"Home Fragrance 空é馿°","url":"/collections/home-fragrance","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769978,"title":"Scented Candle 馿°è ç","url":"/collections/scented-candle","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1785718,"title":"Scented Objects 馿°ç©ä»¶","url":"/collections/scented-objects-馿°ç©ä»¶","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769979,"title":"Incense \u0026 Scent Papers ç·é¦ï¼é¦ç´","url":"/collections/incense-paper","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769980,"title":"Body Care 身é«ä¿é¤","url":"/collections/body-care","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769981,"title":"All Products ææåå","url":"/collections/all","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null}]},{"id":1793718,"title":"Brands æ¾å±±é¸å","url":"/collections/la-brume-é¸å®","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":[{"id":2149018,"title":"BONTEMPS PARIS","url":"/collections/bontemps","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793727,"title":"Earthly Records","url":"/collections/æµ®ä¸èª-earthly-records-day-pass-incense-paper","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793731,"title":"HEADSPACE","url":"/collections/headspace","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":2072281,"title":"Liis","url":"/collections/liis","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793734,"title":"MARIE JEANNE","url":"/collections/marie-jeanne","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793732,"title":"NEANDERTAL","url":"/collections/neandertal","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793728,"title":"NOTES DE BAS DE PAJE","url":"/collections/notes-de-bas-de-paje","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793742,"title":"Oddity fragrance","url":"/collections/oddity-fragrance","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793743,"title":"Racyne","url":"/collections/racyne-perfumes","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":2072278,"title":"SORA DORA","url":"/collections/sora-dora","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793730,"title":"Sona VojaÄo","url":"/collections/sonavojago-fragrance","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null}
1504,{"id":2072279,"title":"VENUE","url":"/collections/venue","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null}]},{"id":1793706,"title":"Daan brands 大å®é¸å","url":"/collections/la-brume-daan-é¸å®","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":[{"id":2153635,"title":"Agar Archive","url":"/collections/agar-archive","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793708,"title":"almost fever","url":"/collections/almost-fever","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793709,"title":"DINshare","url":"/collections/dinshare-é»å°","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793710,"title":"KINTSUGI PERFUMES","url":"/collections/kintsugi-perfumes","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793711,"title":"Liis","url":"/collections/liis","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":2005324,"title":"nown unown","url":"/collections/nown-unown","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793712,"title":"Oddity fragrance","url":"/collections/oddity-fragrance","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793713,"title":"Ådeaur","url":"/collections/odeaur","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793714,"title":"Olfactif","url":"/collections/olfactif","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793715,"title":"Racyne","url":"/collections/racyne-perfumes","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793716,"title":"SORA DORA","url":"/collections/sora-dora","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1943520,"title":"VENUE","url":"/collections/venue","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null}]},{"id":1769983,"title":"Discovery Sets æ¢ç´¢é«é©","url":"/collections/discovery-set","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769954,"title":"About éæ¼æå","url":"/pages/about-us","item_type":"page","subtitle":null,"icon_image_url":null,"menuItems":[{"id":1769960,"title":"Our Journey æ·ç¨æ äº","url":"/pages/our-journey-stories-æ·ç¨èæ äº","item_type":"page","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769957,"title":"Member Benefits æå¡å¶åº¦","url":"/pages/æå¡å¶åº¦ï¼åç´è¾¦æ³-20250616155817","item_type":"page","subtitle":null,"icon_image_url":null,"menuItems":null}]}], 1505 settings: { 1506 menuDisplayStyle: "three_dimension_menu", 1507 pcLogoImgUrl: "//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee", 1508 mobileLogoImgUrl: "//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee", 1509 navbarDisplayStyle: "displayDefault", 1510 } 1511 } 1512 ); 1513 1514 1515 // for link menu 1516 const linkMenuElement = document.querySelector('.link-nav'); 1517 const data = [] 1518 data.forEach((item) => { 1519 const wrapper = document.createElement('a'); 1520 const link = document.createElement('ul'); 1521 1522 wrapper.href = item.url; 1523 link.textContent = item.title; 1524 link.classList.add('link-item'); 1525 1526 wrapper.appendChild(link); 1527 linkMenuElement.appendChild(wrapper); 1528 }); 1529 1530 // for safe-area space on iOS devices 1531 const userAgent = navigator.userAgent; 1532 const isIOS = /iPad|iPhone|iPod/.test(userAgent) && !window.MSStream; 1533 const isLiff = /Line\/[\d.]+/i.test(userAgent); 1534 const $mobileBottomBar = $('#mobile-bottom-bar'); 1535 1536 if ($mobileBottomBar.length && isIOS && isLiff) { 1537 $mobileBottomBar.addClass('is-ios-liff'); 1538 } 1539 }); 1540 document.addEventListener('DOMContentLoaded', function() { 1541 window.getCartAmount = function() { 1542 return parseInt($('.global-cart-count').html()); 1543 }; 1544 }); 1545</script>
1545 1546
1547<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/navbar-e958d46bfee2e69f.js' type='text/javascript'></script>
vendor: 1 bytes, line 1547
1547
1548<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/currencies-e958d46bfee2e69f.js' type='text/javascript'></script>
1548 1549<!-- cyb_snippet i18n_modal start --> 1550 1551
1551<script src='//cdn-general.cybassets.com/frontend/shop/i18nSetting-e958d46bfee2e69f.js' type='text/javascript'></script>
1551 1552
1552<script type="text/javascript"> 1553 $(document).ready(function() { 1554 const props = { 1555 isMultiLanguages: true, 1556 isMultiCurrencies: true, 1557 } 1558 1559 props.languageOptions = [{"handle":"zh-TW","currency_code":"TWD","title":"ç¹é«ä¸æ"},{"handle":"zh-CN","currency_code":"CNY","title":"ç®ä½ä¸æ"},{"handle":"en","currency_code":"USD","title":"English"}] 1560 1561 1562 props.currencyOptions = [{"html_unit":"A${{amount}}","email_unit":"A${{amount}}","name":"澳洲å (AUD)","html":"A${{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"A${{amount}}","code":"AUD","symbol":"A$","email":"A${{amount}}"},{"html_unit":"CA${{amount}}","email_unit":"CA${{amount}}","name":"å æ¿å¤§å (CAD)","html":"CA${{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"CA${{amount}}","code":"CAD","symbol":"CA$","email":"CA${{amount}}"},{"html_unit":"CHF {{amount}}","email_unit":"CHF {{amount}}","name":"ç士æ³é (CHF)","html":"CHF {{amount}}","unit":"","trailing_zeros":false,"money_format":"%u %n","decimal_precision":2,"format":"CHF {{amount}}","code":"CHF","symbol":"CHF","email":"CHF {{amount}}"},{"html_unit":"\u0026#165;{{amount}}","email_unit":"Â¥{{amount}}","name":"人æ°å¹£ (CNY)","html":"\u0026#165;{{amount}}","unit":"RMB","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"\u0026#165;{{amount}}","code":"CNY","symbol":"Â¥","email":"Â¥{{amount}}"},{"html_unit":"\u0026euro;{{amount}} EUR","email_unit":"â¬{{amount}} EUR","name":"æå (EUR)","html":"\u0026euro;{{amount}}","unit":"EUR","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"\u0026euro;{{amount}} EUR","code":"EUR","symbol":"â¬","email":"â¬{{amount}}"},{"html_unit":"£{{amount}}","email_unit":"£{{amount}}","name":"è±é (GBP)","html":"£{{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"£{{amount}}","code":"GBP","symbol":"£","email":"£{{amount}}"},{"html_unit":"HK${{amount}}","email_unit":"HK${{amount}}","name":"港å (HKD)","html":"${{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"HK${{amount}}","code":"HKD","symbol":"HK$","email":"${{amount}}"},{"html_unit":"\u0026#165;{{amount_no_decimals}}","email_unit":"Â¥{{amount_no_decimals}}","name":"æ¥å¹£ (JPY)","html":"\u0026#165;{{amount_no_decimals}}","unit":"","trailing_zeros":false,"money_format":"%u%n","decimal_precision":0,"format":"\u0026#165;{{amount_no_decimals}}","code":"JPY","symbol":"Â¥","email":"Â¥{{amount_no_decimals}}"},{"html_unit":"â©{{amount_no_decimals}}","email_unit":"â©{{amount_no_decimals}}","name":"éå (KRW)","html":"â©{{amount_no_decimals}}","unit":"","trailing_zeros":false,"money_format":"%u%n","decimal_precision":0,"format":"â©{{amount_no_decimals}}","code":"KRW","symbol":"â©","email":"â©{{amount_no_decimals}}"},{"html_unit":"RM {{amount}}","email_unit":"RM {{amount}}","name":"馬ä¾è¥¿äºä»¤å (MYR)","html":"RM {{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"RM {{amount}}","code":"MYR","symbol":"RM ","email":"RM {{amount}}"},{"html_unit":"S${{amount}}","email_unit":"S${{amount}}","name":"æ°å å¡å (SGD)","html":"S${{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"S${{amount}}","code":"SGD","symbol":"S$","email":"S${{amount}}"},{"html_unit":"฿{{amount}}","email_unit":"฿{{amount}}","name":"æ³°é (THB)","html":"฿{{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"฿{{amount}}","code":"THB","symbol":"฿","email":"฿{{amount}}"},{"html_unit":"NT${{amount_no_decimals}}","email_unit":"NT${{amount_no_decimals}}","name":"æ°å°å¹£ (TWD)","html":"NT${{amount_no_decimals}}","unit":"","trailing_zeros":false,"money_format":"%u%n","decimal_precision":0,"format":"NT${{amount_no_decimals}}","code":"TWD","symbol":"NT$","email":"NT${{amount_no_decimals}}"},{"html_unit":"${{amount}} USD","email_unit":"${{amount}} USD","name":"ç¾å (USD)","html":"${{amount}}","unit":"USD","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"${{amount}} USD","code":"USD","symbol":"$","email":"${{amount}}"},{"html_unit":"{{amount_no_decimals}}â«","email_unit":"{{amount_no_decimals}}â«","name":"è¶åç¾ (VND)","html":"{{amount_no_decimals}}â«","unit":"","trailing_zeros":false,"money_format":"%n%u","decimal_precision":0,"format":"{{amount_no_decimals}}â«","code":"VND","symbol":"â«","email":"{{amount_no_decimals}}â«"}] 1563 1564 window.renderI18nSetting('.i18n-selector', props) 1565 }) 1566 </script>
1566 1567 1568 1569<!-- cyb_snippet i18n_modal end --> 1570<!-- cyb_snippet _load_fonts start -->
1571<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/load_fonts-e958d46bfee2e69f.js' type='text/javascript'></script>
vendor: 1 bytes, line 1571
1571
1572<script> 1573 document.addEventListener('DOMContentLoaded', function() { 1574 window.loadFontSetting("{\"ja\":{\"value\":\"Noto Sans JP\"},\"zh-TW\":{\"value\":\"Abyssinica SIL\"},\"en\":{\"value\":\"Noto Sans TC\"},\"zh-CN\":{\"value\":\"Noto Sans TC\"}}") 1575 }) 1576</script>
1576 1577 1578<!-- cyb_snippet _load_fonts end --> 1579<!-- cyb_snippet _custom_icon start -->
1580<script src='//cdn-general.cybassets.com/frontend/shop/navIcon-e958d46bfee2e69f.js' type='text/javascript'></script>
1580 1581
1582<script> 1583 (function() { 1584 const iconUrlMap = new Map([ 1585 ['custom_icon_type_home', null], 1586 ['custom_icon_type_tracking_items', null], 1587 ['custom_icon_type_account', null], 1588 ['custom_icon_type_cart', null], 1589 ['custom_icon_type_search', null], 1590 ['custom_icon_type_menu', null] 1591 ]); 1592 const elements = document.querySelectorAll('[data-icon-type]'); 1593 elements.forEach((element, index) => { 1594 const iconAttributes = element.getAttribute('data-icon-type'); 1595 1596 const uniqueId = `icon_${iconAttributes}_${index}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`; 1597 element.id = uniqueId; 1598 window.renderNavCustomIcon(`#${uniqueId}`, { 1599 navIconStyle: "icon_type_default", 1600 customIconUrl: iconUrlMap.get(iconAttributes) || '', 1601 iconAttributes: iconAttributes, 1602 currentTemplate: "index", 1603 }); 1604 }); 1605 })(); 1606</script>
1606 1607 1608<!-- cyb_snippet _custom_icon end --> 1609 1610 1611 1612 1613 1614
1614<script src='//cdn-general.cybassets.com/frontend/shop/announcementBar-e958d46bfee2e69f.js' type='text/javascript'></script>
1614 1615 1616 1617 1618 1619 1620
1620<script> 1621 $(document).ready(function() { 1622 window.renderAnnouncementBar('#announcement-bar', { 1623 sectionId: "announcement_bar", 1624 isIndex: true, 1625 }); 1626 }); 1627 </script>
1627 1628 1629 1630 1631 1632 1633 1634 <!-- template --> 1635 <div id="template" style="flex:1 0 auto; background-color: var(--theme_bg);"> 1636 <div class="index"> 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646
1647<script src='//cdn-general.cybassets.com/frontend/shop/productBanner-e958d46bfee2e69f.js' type='text/javascript'></script>
1647 1648 1649 1650<style> 1651 [id="_index_product_banner"] { 1652 margin: 0 0px 10px !important; 1653 } 1654 @media (max-width: 991px) { 1655 [id="_index_product_banner"] { 1656 margin: 0 0px 10px !important; 1657 } 1658 } 1659</style> 1660 1661<section id="_index_product_banner" class="index-product-banner qk-display--bk qk-pos--rel"> 1662 <div id="index_product_banner-_index_product_banner"></div> 1663</section> 1664
1665<script> 1666 $(document).ready(function() { 1667 let isDynamicLoading = false; 1668 if (isDynamicLoading) { 1669 window.DynamicLoading.setupComponent({ 1670 sectionId:'#index_product_banner-_index_product_banner', 1671 callbackData:{ 1672 sectionId: "_index_product_banner", 1673 section: {"type":"_index_product_banner","visible":true,"settings":{"dict_link":"","dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0","cta_btn_display_style":"bottomPosition","cta_btn_text":"La brume boutique","cta_btn_bg_color":"#271f16","cta_btn_text_color":"#d6cebe","margin_x":"0","margin_bottom":"10","mobile_margin_x":"0","mobile_margin_bottom":"10","display_cta_btn":true,"dict_cta_btn_text":"Découvrez nos parfums","link_open_in_new_tab":false},"custom_name":"æ©«å¹ å»£å","schedule":{"enabled_default":true,"schedule_lists":[]}}, 1674 dictMobileImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0", 1675 dictTabletImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0", 1676 dictImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0", 1677 }, 1678 entryName:'renderProductBanner', 1679 source:'//cdn-general.cybassets.com/frontend/shop/productBanner-e958d46bfee2e69f.js', 1680 }); 1681 }else{ 1682 window.renderProductBanner('#index_product_banner-_index_product_banner', 1683 { 1684 sectionId: "_index_product_banner", 1685 section: {"type":"_index_product_banner","visible":true,"settings":{"dict_link":"","dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0","cta_btn_display_style":"bottomPosition","cta_btn_text":"La brume boutique","cta_btn_bg_color":"#271f16","cta_btn_text_color":"#d6cebe","margin_x":"0","margin_bottom":"10","mobile_margin_x":"0","mobile_margin_bottom":"10","display_cta_btn":true,"dict_cta_btn_text":"Découvrez nos parfums","link_open_in_new_tab":false},"custom_name":"æ©«å¹ å»£å","schedule":{"enabled_default":true,"schedule_lists":[]}}, 1686 dictMobileImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0", 1687 dictTabletImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0", 1688 dictImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0", 1689 }); 1690 } 1691 }); 1692</script>
1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703
1704<script src='//cdn-general.cybassets.com/frontend/shop/productBanner-e958d46bfee2e69f.js' type='text/javascript'></script>
1704 1705 1706 1707<style> 1708 [id="1758546879927_1"] { 1709 margin: 0 0px 10px !important; 1710 } 1711 @media (max-width: 991px) { 1712 [id="1758546879927_1"] { 1713 margin: 0 0px 10px !important; 1714 } 1715 } 1716</style> 1717 1718<section id="1758546879927_1" class="index-product-banner qk-display--bk qk-pos--rel"> 1719 <div id="index_product_banner-1758546879927_1"></div> 1720</section> 1721
1722<script> 1723 $(document).ready(function() { 1724 let isDynamicLoading = false; 1725 if (isDynamicLoading) { 1726 window.DynamicLoading.setupComponent({ 1727 sectionId:'#index_product_banner-1758546879927_1', 1728 callbackData:{ 1729 sectionId: "1758546879927_1", 1730 section: {"type":"_index_product_banner","custom_name":"æ©«å¹ å»£å","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NTM1X2RoYWxmIDIwMjUtMDktMjIgMjEzNTQ0LjI5Ni5qcGcuanBlZyJdXQ.jpeg?sha=38d85264591df504","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/collections/la-brume-é¸å®","cta_btn_display_style":"bottomPosition","cta_btn_bg_color":"#271f16","cta_btn_text_color":"#d6cebe","margin_x":"0","margin_bottom":"10","mobile_margin_x":"0","mobile_margin_bottom":"10","display_cta_btn":true,"dict_cta_btn_text":"La brume songshan store"},"blocks":{},"block_order":[],"schedule":{"enabled_default":true,"schedule_lists":[]}}, 1731 dictMobileImageUrl:"", 1732 dictTabletImageUrl:"", 1733 dictImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NTM1X2RoYWxmIDIwMjUtMDktMjIgMjEzNTQ0LjI5Ni5qcGcuanBlZyJdXQ.jpeg?sha=38d85264591df504", 1734 }, 1735 entryName:'renderProductBanner', 1736 source:'//cdn-general.cybassets.com/frontend/shop/productBanner-e958d46bfee2e69f.js', 1737 }); 1738 }else{ 1739 window.renderProductBanner('#index_product_banner-1758546879927_1', 1740 { 1741 sectionId: "1758546879927_1", 1742 section: {"type":"_index_product_banner","custom_name":"æ©«å¹ å»£å","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NTM1X2RoYWxmIDIwMjUtMDktMjIgMjEzNTQ0LjI5Ni5qcGcuanBlZyJdXQ.jpeg?sha=38d85264591df504","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/collections/la-brume-é¸å®","cta_btn_display_style":"bottomPosition","cta_btn_bg_color":"#271f16","cta_btn_text_color":"#d6cebe","margin_x":"0","margin_bottom":"10","mobile_margin_x":"0","mobile_margin_bottom":"10","display_cta_btn":true,"dict_cta_btn_text":"La brume songshan store"},"blocks":{},"block_order":[],"schedule":{"enabled_default":true,"schedule_lists":[]}}, 1743 dictMobileImageUrl:"", 1744 dictTabletImageUrl:"", 1745 dictImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NTM1X2RoYWxmIDIwMjUtMDktMjIgMjEzNTQ0LjI5Ni5qcGcuanBlZyJdXQ.jpeg?sha=38d85264591df504", 1746 }); 1747 } 1748 }); 1749</script>
1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760
1761<script src='//cdn-general.cybassets.com/frontend/shop/productBanner-e958d46bfee2e69f.js' type='text/javascript'></script>
1761 1762 1763 1764<style> 1765 [id="1758548715483_1"] { 1766 margin: 0 0px 10px !important; 1767 } 1768 @media (max-width: 991px) { 1769 [id="1758548715483_1"] { 1770 margin: 0 0px 10px !important; 1771 } 1772 } 1773</style> 1774 1775<section id="1758548715483_1" class="index-product-banner qk-display--bk qk-pos--rel"> 1776 <div id="index_product_banner-1758548715483_1"></div> 1777</section> 1778
1779<script> 1780 $(document).ready(function() { 1781 let isDynamicLoading = false; 1782 if (isDynamicLoading) { 1783 window.DynamicLoading.setupComponent({ 1784 sectionId:'#index_product_banner-1758548715483_1', 1785 callbackData:{ 1786 sectionId: "1758548715483_1", 1787 section: {"type":"_index_product_banner","custom_name":"æ©«å¹ å»£å","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NzYyX2RoYWxmIDIwMjUtMDktMjIgMjEzOTI2LjY2Mi5qcGcuanBlZyJdXQ.jpeg?sha=78a6cff17c812b56","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074","dict_link":"/collections/la-brume-daan-é¸å®","display_cta_btn":true,"cta_btn_display_style":"bottomPosition","dict_cta_btn_text":"La brume daan store","cta_btn_bg_color":"#271f16","cta_btn_text_color":"#d6cebe","margin_x":"0","margin_bottom":"10","mobile_margin_x":"0","mobile_margin_bottom":"10"},"blocks":{},"block_order":[],"schedule":{"enabled_default":true,"schedule_lists":[]}}, 1788 dictMobileImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074", 1789 dictTabletImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074", 1790 dictImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NzYyX2RoYWxmIDIwMjUtMDktMjIgMjEzOTI2LjY2Mi5qcGcuanBlZyJdXQ.jpeg?sha=78a6cff17c812b56", 1791 }, 1792 entryName:'renderProductBanner', 1793 source:'//cdn-general.cybassets.com/frontend/shop/productBanner-e958d46bfee2e69f.js', 1794 }); 1795 }else{ 1796 window.renderProductBanner('#index_product_banner-1758548715483_1', 1797 { 1798 sectionId: "1758548715483_1", 1799 section: {"type":"_index_product_banner","custom_name":"æ©«å¹ å»£å","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NzYyX2RoYWxmIDIwMjUtMDktMjIgMjEzOTI2LjY2Mi5qcGcuanBlZyJdXQ.jpeg?sha=78a6cff17c812b56","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074","dict_link":"/collections/la-brume-daan-é¸å®","display_cta_btn":true,"cta_btn_display_style":"bottomPosition","dict_cta_btn_text":"La brume daan store","cta_btn_bg_color":"#271f16","cta_btn_text_color":"#d6cebe","margin_x":"0","margin_bottom":"10","mobile_margin_x":"0","mobile_margin_bottom":"10"},"blocks":{},"block_order":[],"schedule":{"enabled_default":true,"schedule_lists":[]}}, 1800 dictMobileImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074", 1801 dictTabletImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074", 1802 dictImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NzYyX2RoYWxmIDIwMjUtMDktMjIgMjEzOTI2LjY2Mi5qcGcuanBlZyJdXQ.jpeg?sha=78a6cff17c812b56", 1803 }); 1804 } 1805 }); 1806</script>
1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820<link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/_index_4_blocks-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' />
1821<script src='//cdn-general.cybassets.com/frontend/shop/productDisplay-e958d46bfee2e69f.js' type='text/javascript'></script>
1821 1822 1823<style> 1824 [id="_index_4_blocks"] { 1825 margin: 0 0px 48px !important; 1826 } 1827 1828 @media (min-width: 992px) { 1829 [id="_index_4_blocks"] .block:not(.last-row) { 1830 margin-bottom: 10px !important; 1831 } 1832 [id="_index_4_blocks"] .block-default-width-margin:not(:first-of-type), 1833 [id="_index_4_blocks"] .block-not-first-margin { 1834 margin-left: 10px !important; 1835 } 1836 } 1837 1838 @media (max-width: 991px) { 1839 [id="_index_4_blocks"] { 1840 margin: 0 0px 24px !important; 1841 } 1842 [id="_index_4_blocks"] > .qk-display--flex.qk-flex--wrap { 1843 gap: 10px; 1844 justify-content: flex-start; 1845 } 1846 [id="_index_4_blocks"] .block { 1847 flex: 0 0 calc((100% - (2 - 1) * 10px) / 2); 1848 } 1849 } 1850 1851 .video-block-loading { 1852 background-color: #eeee; 1853 position: absolute; 1854 top: 0; 1855 bottom: 0; 1856 left: 0; 1857 width: 100%; 1858 height: 100%; 1859 } 1860</style> 1861
1862<script> 1863 1864 $(document).ready(function() { 1865 let isDynamicLoading = false; 1866 if (isDynamicLoading) { 1867 window.DynamicLoading.setupComponent({ 1868 sectionId:'_index_4_blocks', 1869 componentType:'liquid', 1870 }); 1871 } 1872 1873 1874 1875 1876 1877 1878 1879 }) 1880</script>
1880 1881
1882<script> 1883 function buildYoutubeEmbedUrl(url, options) { 1884 const YT_REGEX = /^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=|shorts\/)([^#&?]*).*/; 1885 const match = (url || '').match(YT_REGEX); 1886 const videoId = match && match[2].length === 11 ? match[2] : ''; 1887 1888 if (!videoId) { 1889 return ''; 1890 } 1891 1892 const autoPlay = options && options.autoPlay; 1893 const hideControls = options && options.hideControls; 1894 const loop = options && options.loop; 1895 1896 const searchParams = new URLSearchParams(); 1897 1898 searchParams.set('autoplay', autoPlay ? '1' : '0'); 1899 // è¥èªåææ¾ï¼é è¨éé³ä»¥ç¬¦åç覽å¨éå¶ 1900 searchParams.set('mute', autoPlay ? '1' : '0'); 1901 searchParams.set('playsinline', '1'); 1902 1903 searchParams.set('controls', hideControls ? '0' : '1'); 1904 searchParams.set('rel', '0'); 1905 1906 if (loop) { 1907 searchParams.set('loop', '1'); 1908 searchParams.set('playlist', videoId); 1909 } 1910 1911 return 'https://www.youtube.com/embed/' + videoId + '?' + searchParams.toString(); 1912 } 1913 1914 function parseYtUrlOnLoad(target, url, autoPlay, hideControls, loop) { 1915 const finalUrl = buildYoutubeEmbedUrl(url, { 1916 autoPlay: autoPlay, 1917 hideControls: hideControls, 1918 loop: loop, 1919 }); 1920 1921 if (!finalUrl || target.src === finalUrl) { 1922 return; 1923 } 1924 1925 const handleVideoLoad = function () { 1926 try { 1927 const wrapper = $(target).closest('.embed-responsive')[0]; 1928 if (wrapper) { 1929 // éé loading skeleton 1930 const loading = wrapper.querySelector('.video-block-loading'); 1931 if (loading) { 1932 loading.style.display = 'none'; 1933 } 1934 } 1935 } catch (e) { 1936 console.error('iframe onload èç失æ', e); 1937 } finally { 1938 target.removeEventListener('load', handleVideoLoad); 1939 } 1940 }; 1941 1942 target.addEventListener('load', handleVideoLoad); 1943 1944 target.src = finalUrl; 1945 if (hideControls && autoPlay) { 1946 target.style.pointerEvents = 'none'; 1947 } 1948 1949 // 夿·æ¯ä¸æ¯ YouTube shortsï¼æ±ºå®è¦ä¸è¦å ä¸ .short-youtube class 1950 try { 1951 const isShort = (url || '').indexOf('/shorts/') !== -1; 1952 if (isShort) { 1953 const wrapper = $(target).closest('.embed-responsive')[0]; 1954 if (wrapper) { 1955 wrapper.classList.add('short-youtube'); 1956 } 1957 } 1958 } catch (e) { 1959 console.error('isShort 夿·å¤±æ', e); 1960 } 1961 } 1962 1963 1964 window.addEventListener('load', function () { 1965 const sectionEl = document.getElementById('_index_4_blocks'); 1966 if (!sectionEl) return; 1967 1968 const options = { 1969 threshold: 0.25, 1970 }; 1971 1972 1973 1974 1975 1976 1977 1978 1979 }); 1980</script>
1980 1981 1982<section id="_index_4_blocks" class="index-4-blocks"> 1983 <div class="qk-display--flex qk-flex--wrap"> 1984 1985 1986 1987 1988 <div class="block image mobile-2-col" style="width: calc(50% - 5.0px);"> 1989 1990 <div class="img-card" id="index_4_blocks_block_1"> 1991 1992 1993 1994 <img 1995 src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTczMTMwXzQwQTAxQThDLUQ0NTktNEI3MS1BRkUyLTU3QUFFNENGQkM1MC5qcGcuanBlZyJdXQ.jpeg?sha=3c84613798f5136a" 1996 class="qk-w--100 qk-hidden--mobile" 1997 alt="" 1998 > 1999 2000 2001 2002 2003 <img 2004 src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MjUxODQzXzgwNkQ1NjhELTU1MDctNEFCRS04NTU5LTdCQzRBQUIyNTZBMi5qcGcuanBlZyJdXQ.jpeg?sha=aff48e880ed5e92c" 2005 class="qk-w--100 qk-display--bk qk-hidden--phone qk-hidden--pc" 2006 alt="" 2007 > 2008 2009 2010 2011 2012 <img 2013 src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MjUxODQzXzgwNkQ1NjhELTU1MDctNEFCRS04NTU5LTdCQzRBQUIyNTZBMi5qcGcuanBlZyJdXQ.jpeg?sha=aff48e880ed5e92c" 2014 class="qk-w--100 qk-display--bk qk-hidden--pc qk-hidden--tablet" 2015 alt="" 2016 > 2017 2018 2019 2020 <div class="advance-rich-text-content-container"> 2021 2022 </div> 2023 </div> 2024 2025 </div> 2026 2027 2028 2029 <div class="block image mobile-2-col block-not-first-margin" style="width: calc(33% - 3.3px);"> 2030 2031 <div class="img-card" id="index_4_blocks_block_2"> 2032 2033 2034 2035 <img 2036 src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTcxNDc0X0lNR18wNTU4LmpwZy5qcGVnIl1d.jpeg?sha=aea479433f20db3e" 2037 class="qk-w--100 qk-hidden--mobile" 2038 alt="" 2039 > 2040 2041 2042 2043 2044 <img 2045 src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MjUyNjE3X0VGMjAyNzA3LTVGOUQtNDdBRC1BRjI2LUMzNjY0QUM1NEMwNC5qcGcuanBlZyJdXQ.jpeg?sha=3b6ac491b319749c" 2046 class="qk-w--100 qk-display--bk qk-hidden--phone qk-hidden--pc" 2047 alt="" 2048 > 2049 2050 2051 2052 2053 <img 2054 src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MjUyNjE3X0VGMjAyNzA3LTVGOUQtNDdBRC1BRjI2LUMzNjY0QUM1NEMwNC5qcGcuanBlZyJdXQ.jpeg?sha=3b6ac491b319749c" 2055 class="qk-w--100 qk-display--bk qk-hidden--pc qk-hidden--tablet" 2056 alt="" 2057 > 2058 2059 2060 2061 <div class="advance-rich-text-content-container"> 2062 <p></p> 2063 2064 </div> 2065 </div> 2066 2067 </div> 2068 2069 2070 2071 <div class="block image mobile-2-col last-row" style="width: calc(33% - 0.0px);"> 2072 2073 <div class="img-card" id="index_4_blocks_block_3"> 2074 2075 2076 2077 <img 2078 src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTczNTAwX0ExQkNBMjYxLTNGNUEtNERCOC05N0I1LTkyQjhBRDU5RTdCQy0yLmpwZy5qcGVnIl1d.jpeg?sha=067399b4fe0d8568" 2079 class="qk-w--100 qk-hidden--mobile" 2080 alt="" 2081 > 2082 2083 2084 2085 2086 <img 2087 src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NDE5NDM1XzA2RTBBNURDLUNBNTctNEFENS1CRkRBLUIwNjI5RTg5OTkzMC5KUEcuanBlZyJdXQ.jpeg?sha=8d10e98b496a9c23" 2088 class="qk-w--100 qk-display--bk qk-hidden--phone qk-hidden--pc" 2089 alt="" 2090 > 2091 2092 2093 2094 2095 <img 2096 src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NDE5NDM1XzA2RTBBNURDLUNBNTctNEFENS1CRkRBLUIwNjI5RTg5OTkzMC5KUEcuanBlZyJdXQ.jpeg?sha=8d10e98b496a9c23" 2097 class="qk-w--100 qk-display--bk qk-hidden--pc qk-hidden--tablet" 2098 alt="" 2099 > 2100 2101 2102 2103 <div class="advance-rich-text-content-container"> 2104 2105 </div> 2106 </div> 2107 2108 </div> 2109 2110 </div> 2111</section> 2112 2113 2114 2115 2116 <!-- å å ¥è³¼ç©è» --> 2117 2118 <!-- cyb_snippet new_addcart_modal start --> 2119<link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/vue_product_modal-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' /> 2120 2121<div id="new-addcart-modal" class="container"> 2122 <transition name="modal"> 2123 <product-modal 2124 v-if="showProductModal" 2125 :only-description="onlyDescription" 2126 :product-url="popProductUrl" 2127 :color="color" 2128 :is-collection="isCollection" 2129 :is-show-description="isShowDescription" 2130 :is-quick-buy="isQuickBuy" 2131 :selected-variant-id="selectedVariantId" 2132 :categories="categories" 2133 :call-back="checkoutAddToCartCallback" 2134 ref="productModal" 2135 > 2136 </product-modal> 2137 </transition> 2138</div> 2139 2140<!-- cyb_snippet components/product_modal/product_modal start -->
2141<script type="text/x-template" id="product-modal"> 2142 <div class="modal-mask qk-h--100 qk-w--100 qk-l--0 qk-t--0 qk-pos--fixed" @click="closeModal"> 2143 <div class="modal-content qk-bd--none qk-center qk-bg--theme_bg" :class="{'only-description': onlyDescription}" @click.stop> 2144 <button class="btn-close qk-circle qk-circle--md qk-pos--abs qk-op--100 qk-bg--theme_bg qk-text--heading qk-bd--product_border qk-bd--default" @click="closeModal"></button> 2145 <div class="modal-body custom-scrollbar qk-w--100"> 2146 <div v-if="!isLoading"> 2147 <div id="checkout-product" class="row"> 2148 <div class="col-sm-6 col-xs-4"> 2149 <photo-swiper 2150 :mediaItems="swiperItems" 2151 :current-image-index="currentImageIndex" 2152 :current-variant="currentVariant" 2153 :video-after-image="videoAfterImage" 2154 ></photo-swiper> 2155 </div> 2156 <div class="col-sm-6 col-xs-8"> 2157 <h4 class="qk-fs--hd2 qk-fw--bold qk-text--heading qk-mg--0" v-html="product.title"></h4> 2158 <p class="product_brief qk-text--text qk-fs--body" v-html="product.brief"></p> 2159 <p class="product_slogan qk-text--heading qk-fs--body" v-html="product.slogan"></p> 2160 <div class="swiper_thumbnails" style="margin-bottom: 10px;"> 2161 <swiper-thumbnails 2162 :mediaItems="swiperItems" 2163 :current-image-index="currentImageIndex" 2164 :title="product.title" 2165 @update-current-image-index="(thumbnailIndex) => { currentImageIndex = thumbnailIndex }" 2166 ></swiper-thumbnails> 2167 </div> 2168 2169 <div v-if="!hidePrice" style="margin-bottom: 10px;"> 2170 2171 <span class="price-title qk-fs--body qk-fw--500 qk-text--heading">${ priceTitleTag }</span> 2172 2173 <div> 2174 <span v-html="variantPrice" class="variant-price qk-fs--hd1 qk-fw--bold" :class="[isDiscountPrice ? 'qk-text--discount_price' : 'qk-text--price']"></span> 2175 <del v-html="marketPrice" class="variant-del-price qk-fs--body qk-fw--500 qk-text--text"></del> 2176 </div> 2177 </div> 2178 <div v-if="!onlyDescription" class="controls"> 2179 <div class="variant-quantity qk-display--flex qk-flex--column"> 2180 <div v-if="hasVariant" class="product-variant-options"> 2181 <div v-for="(option, index) in optionInfo" class="product-variant-option" :class="{'product-variant-option--hidden': shouldHideSingleVariantOptions}"> 2182 <div class="advance variant-select-option" v-if="styledShopMenu==='dropDownType'"> 2183 2184 <label>${option.name}</label> 2185 <svg height="20" width="20" viewBox="0 0 20 20" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"><path d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"> </path></svg> 2186 <select class="qk-bg--theme_bg" :class="{'select_placeholder-color': currentOption[`option${index + 1}`] === null}" v-show="!isMobileSize" :value="String(currentOption[`option${index + 1}`])" @change="setOption(`option${index + 1}`, $event.target.value, option.types )" @click="onClickSelectModal(option,`option${index + 1}`)"> 2187 <option value="null" class="select_option-hidden">Please select ${option.name}</option> 2188 <option :style="{ visibility : isMobileSize ? 'hidden' : 'visible' }" v-for="(types) in option.types" :disabled="!types.isValid" :value="types.name">${types.name}</option> 2189 </select> 2190 <span class="select_placeholder-color" v-if="currentOption[`option${index + 1}`] === null" v-show="isMobileSize" @click="onClickSelectModal(option,`option${index + 1}`)">Please select ${option.name}</span>
2191 <span v-else :value="currentOption[`option${index + 1}`]" v-show="isMobileSize" @click="onClickSelectModal(option,`option${index + 1}`)" v-html="currentOption[`option${index + 1}`]"></span> 2192 </div> 2193 <advance-option v-else :option-key="'option' + (index + 1)" :option="option" :current-option="currentOption" :toggle-current-option="toggleCurrentOption"/> 2194 </div> 2195 </div> 2196 <div class="product_discounts_list qk-bg--theme_bg qk-bd--default qk-bd--product_border qk-pd--1 qk-mg_b--1" v-show="displayProductDiscountsList && ((displayPeriodicSalesPages && product.showableSalesPages.length > 0) || !!discountsList)"> 2197 <div class="list_block custom-scrollbar qk-of_x--hidden"> 2198 <h4 class="qk-text--heading qk-fs--body">Applicable Promotions 2199 </h4> 2200 <template v-if="displayPeriodicSalesPages"> 2201 <div v-for="salesPage in product.showableSalesPages" class="discount-list"> 2202 <span class="discount-label qk-fs--breadcrumb qk-bd--default qk-bd--accent qk-bg--white qk-display--il_bk qk-text--accent">Subscription 2203 </span> 2204 <a class="discount-title qk-text--accent qk-fs--body" :href="salesPage.path">${ salesPage.title }</a> 2205 </div> 2206 </template> 2207 <template v-for="discounts in discountsList"> 2208 <div v-for="discount in discounts" class="discount-list"> 2209 <a v-if="discount.url" :href="discount.url" class="discount-title qk-text--accent qk-fs--body"> 2210 ${ discount.title } 2211 </a> 2212 <span v-else class="discount-title qk-text--accent qk-fs--body">${ discount.title }</span> 2213 </div> 2214 </template> 2215 </div> 2216 </div> 2217 <div v-if="showPurchaseControls" class="product-quantity qk-bd--product_border" v-show="!isMobileSize"> 2218 <div class="btn-group qk-w--100" role="group" aria-label="First group"> 2219 <button class="btn add-down qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityDecrease">ï¼</button> 2220 <input class="btn item-quantity qk-bd--default qk-bd--border qk-w--100 qk-text--heading" type="text" name="quantity" :value="quantity" @change="quantityChange"> 2221 <button class="btn add-up qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityIncrease">ï¼</button> 2222 </div> 2223 </div> 2224 </div> 2225 <div v-if="showPurchaseControls" class="add-button-wrapper"> 2226 <!-- cyb_snippet _product_modal_button start --> 2227<button 2228 class="btn btn-default add-button qk-cursor--pointer qk-w--100 qk-btn--primary" 2229 :class="{selected: isChoose, adding: adding || isHideAddCartBtn, secondary: isSecondaryBtn, 'qk-btn--disabled': isHideAddCartBtn && isNewNnCollection, 'qk-bd--none': isHideAddCartBtn && isNewNnCollection}" 2230 type="button" 2231 :disabled="isHideAddCartBtn" 2232 @click="addProduct" 2233> 2234 ${ addCartText } 2235</button> 2236 2237<!-- cyb_snippet _product_modal_button end --> 2238 </div> 2239 <div class="product-others qk-fs--body"> 2240 <span class="product-love"> 2241 <a class="btn-love qk-text--text qk-bg--theme_bg qk-bd--default qk-bd--product_border qk-display--il_bk qk-text--center qk-cursor--pointer qk-tst qk-tst_timing--ease_io qk-tst_dur--15" @click="addWishList"> 2242 <svg 2243 width="15" 2244 height="15"
2245 viewBox="0 0 24 24" 2246 fill="none" 2247 xmlns="http://www.w3.org/2000/svg"> 2248 <path 2249 d="M21.3899 4.54287C20.8146 4.01265 20.1366 3.60344 19.3969 3.34002C18.6572 3.0766 17.8711 2.96444 17.0863 3.01034C16.5593 3.01219 16.0362 3.09923 15.5375 3.26802C15.0194 3.44412 14.5265 3.68572 14.071 3.98682C13.6676 4.25092 13.2787 4.53613 12.906 4.84124C12.5762 5.09996 12.2648 5.38092 11.974 5.6821C11.6833 5.38092 11.3719 5.09996 11.042 4.84124C10.6516 4.53452 10.2443 4.24928 9.82221 3.98682C9.3967 3.69278 8.93642 3.45138 8.45163 3.26802C7.93995 3.0948 7.40254 3.0077 6.86175 3.01034C6.07688 2.96365 5.2906 3.07544 4.55076 3.3389C3.81091 3.60236 3.13296 4.01199 2.55813 4.54287C2.02401 5.11052 1.61146 5.77922 1.3453 6.50873C1.07914 7.23825 0.964875 8.01351 1.00937 8.78786C1.01359 9.36893 1.11073 9.94569 1.29719 10.4967C1.45989 11.0166 1.68054 11.517 1.95507 11.9886C2.20373 12.4073 2.47838 12.8104 2.77742 13.1956C3.09266 13.5889 3.32566 13.8601 3.46271 14.0093C3.56921 14.1255 3.6837 14.2343 3.80536 14.3348L11.4395 21.7669C11.5066 21.8412 11.5891 21.9002 11.6813 21.94C11.7736 21.9798 11.8734 21.9994 11.974 21.9975C12.0836 22.0067 12.1938 21.9906 12.296 21.9506C12.3983 21.9106 12.4898 21.8477 12.5634 21.7669L20.1838 14.3484C21.8272 12.9359 22.8376 10.9363 22.9935 8.78786C23.0307 8.0097 22.9078 7.23217 22.6321 6.50246C22.3565 5.77274 21.9339 5.10606 21.3899 4.54287V4.54287Z" 2250 stroke="currentColor" 2251 stroke-width="2" 2252 stroke-linecap="round" 2253 stroke-linejoin="round" /> 2254 </svg> 2255 Add to Wishlist 2256 </a> 2257 </span> 2258 <span class="product_sold qk-text--text" v-if="false"> 2259 <span>Sold : 2260 ${ product.totalSold } 2261 Item(s) 2262 </span> 2263 </span> 2264 <span class="product_bonus qk-text--text" v-if="false"> 2265 Redeemable credit(s) per item 2266 <span class="val qk-fw--600 qk-fs--hd2" v-if="currentVariant">${currentVariant.maxUsableBonus}</span> 2267 <span class="val qk-fw--600 qk-fs--hd2" v-else>${maxUsableBonus}</span> 2268 credit(s) 2269 <span v-html="bonusToPrice"/> 2270 </span> 2271 </div> 2272 <div class='product_limit_buy qk-fs--body' v-show="product.minBuy > 0 || product.limitBuy > 0"> 2273 ${limitBuyText} 2274 </div> 2275 </div> 2276 </div> 2277 </div> 2278 <div v-if="isShowDescription" class="row"> 2279 <div class="col-sm-12"> 2280 2281 <div v-if="product.bodyHtml"> 2282 <h5 class="section-heading qk-bd--heading qk-fs--hd2 qk-text--heading"> 2283 Description 2284 </h5> 2285 <div class="ckeditor"> 2286 <div v-html="product.bodyHtml"></div> 2287 </div> 2288 </div> 2289 2290 2291 <div v-if="otherDescriptions['product_description_section_spec']"> 2292 <h5 class="section-heading qk-bd--heading qk-fs--hd2 qk-text--heading"> 2293 Brand Overview 2294 </h5> 2295 <div class="ckeditor"> 2296 <div v-html="otherDescriptions['product_description_section_spec']"></div> 2297 </div> 2298 </div> 2299 2300 2301 <div v-if="otherDescriptions['product_description_section_shipping']"> 2302 <h5 class="section-heading qk-bd--heading qk-fs--hd2 qk-text--heading"> 2303 Stores Available 2304 </h5> 2305 <div class="ckeditor"> 2306 <div v-html="otherDescriptions['product_description_section_shipping']"></div> 2307 </div> 2308 </div> 2309 2310 </div> 2311 </div> 2312 </div> 2313 <div v-show="isLoading" style="text-align: center; padding-bottom: 20px;"> 2314 <i class="fas fa-spinner fa-spin fa-fw fa-2x"></i> 2315 </div> 2316 </div> 2317 <!-- cyb_snippet _product_modal_button_mobile start --> 2318 <div 2319 v-if="showPurchaseControls" 2320 v-show="isMobileSize" 2321 class="mobile_footer" 2322 :class="{'mobile_footer-z': variantSize > 1 }"> 2323 <div class="product-quantity"> 2324 <div class="btn-group qk-w--100" role="group" aria-label="First group"> 2325 <button class="btn add-down qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityDecrease">ï¼</button> 2326 <input class="btn item-quantity qk-bd--default qk-bd--border qk-w--100 qk-text--heading" type="text" name="quantity" :value="quantity" @change="quantityChange"> 2327 <button class="btn add-up qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityIncrease">ï¼</button> 2328 </div> 2329 </div> 2330 <button 2331 v-if="!isLoading && !onlyDescription" 2332 class="btn btn-mobile add-button qk-btn qk-btn--primary qk-btn--lg" 2333 :class="{selected: isChoose, adding: adding || isHideAddCartBtn, 'qk-btn--disabled': isHideAddCartBtn && isNewNnCollection, 'qk-bd--none': isHideAddCartBtn && isNewNnCollection}" 2334 type="button" 2335 :disabled="isHideAddCartBtn" 2336 @click="addProduct"> 2337 ${ addCartText } 2338 </button> 2339</div> 2340<div 2341 class="mobile-modal" 2342 :class="{ 'modal-open': isModalSelectShow && isMobileSize }"> 2343 <div class="mobile_modal-content"> 2344 <div class="modal_close-button"> 2345 <button class="btn-close qk-circle qk-circle--md qk-pos--abs qk-op--100 qk-text--heading qk-bd--product_border qk-bd--default" @click="onChangeModalSelect(false,true)"></button> 2346 </div> 2347 2348 <p>Please select ${modalOption.name}</p> 2349 <div class="modal_select-templete qk-display--flex qk-of_y--auto qk-w--100"> 2350 <div class="options-container"> 2351 <label :class="{'seleced-option': currentOption && currentOption[selectOption] === data.name, 'avoid-clicks':!data.isValid}" v-for="data in modalOption.types" @click="setOption(selectOption, data.name, modalOption.types)">${data.name}</label> 2352 </div> 2353 </div> 2354 <div v-if="variantSize > 1" class="modal_select_footer qk-display--flex"> 2355 <button type="button" class="modal_cancel qk-bd--default qk-btn--secondary qk-bd--button qk-text--button" @click="onChangeModalSelect(false,false)">Cancel</button> 2356 <button type="button" class="qk-btn qk-btn--primary qk-btn--lg qk-fs--body qk-bd--button qk-test--button_text" @click="onChangeModalSelect(false,true)">Finish</button> 2357 </div> 2358 </div> 2359</div> 2360 2361<!-- cyb_snippet _product_modal_button_mobile end --> 2362 </div> 2363 </div> 2364</script>
2364 2365 2366<!-- cyb_snippet components/product_modal/color_image_option start -->
2367<script id="color-image-option" type="text/x-template"> 2368 <div class="color-image qk-display--flex qk-flex--wrap qk-align--center"> 2369 <div class="title">Color</div> 2370 <div 2371 v-for="(imageColor, index) in imageColors" 2372 :class="{ 2373 'focus': !currentOption[optionKey] === option.types[index].name && currentImageIndex === index, 2374 'selected': currentOption[optionKey] === option.types[index].name, 2375 'disabled': !option.types[index].isValid 2376 }" 2377 class="image-option img-flex qk-bd--default qk-bd--transparent qk-display--block qk-pos--rel" 2378 @mouseleave="setCurrentImageIndex(index)" 2379 @mouseover="getOptionImageIndex(index)" 2380 @click="setOption(optionKey, index)" 2381 > 2382 <img v-if="imageColor !== 'noColorImage'" :src="imageColor.large" alt="image"> 2383 <img v-else src="/assets/no-image-large.png" alt="image"> 2384 </div> 2385 </div> 2386</script>
2386 2387
2388<script type="text/javascript"> 2389 $(document).ready(function() { 2390 window.themeHelper.productModalComponents['color-image-option'] = { 2391 template: '#color-image-option', 2392 delimiters: ['${', '}'], 2393 props: { 2394 optionKey: String, 2395 option: Object, 2396 product: Object, 2397 imageColors: Array, 2398 isChoose: Boolean, 2399 currentImageIndex: Number, 2400 setCurrentImageIndex: Function, 2401 getOptionImageIndex: Function, 2402 currentOption: Object, 2403 toggleCurrentOption: Function, 2404 }, 2405 methods: { 2406 setOption: function(optionKey, index) { 2407 const type = this.option.types[index]; 2408 if(type.isValid){ 2409 this.toggleCurrentOption(optionKey, type.name); 2410 } 2411 } 2412 } 2413 }; 2414 }); 2415</script>
2415 2416 2417<!-- cyb_snippet components/product_modal/color_image_option end --> 2418<!-- cyb_snippet components/product_modal/advance_option start -->
2419<script id="advance-option" type="text/x-template"> 2420 <div class="advance"> 2421 <div class="title qk-text--heading qk-fs--body">${option.name}</div> 2422 <div 2423 v-for="type in option.types" 2424 :class="{ 2425 'selected': currentOption[optionKey] === type.name, 2426 'disabled': !type.isValid 2427 }" 2428 @click="setOption(optionKey, type)" 2429 class="option qk-btn qk-bd--button qk-text--button qk-pd_x--1" 2430 > 2431 ${type.name} 2432 </div> 2433 </div> 2434</script>
2434 2435
2436<script type="text/javascript"> 2437 $(document).ready(function() { 2438 window.themeHelper.productModalComponents['advance-option'] = { 2439 template: '#advance-option', 2440 delimiters: ['${', '}'], 2441 props: { 2442 optionKey: String, 2443 option: Object, 2444 product: Object, 2445 currentOption: Object, 2446 toggleCurrentOption: Function, 2447 }, 2448 methods: { 2449 setOption: function(optionKey, type) { 2450 if(type.isValid){ 2451 this.toggleCurrentOption(optionKey, type.name); 2452 } 2453 } 2454 } 2455 }; 2456 }); 2457</script>
2457 2458 2459<!-- cyb_snippet components/product_modal/advance_option end --> 2460 2461<!-- cyb_snippet components/product_modal/photo_swiper start --> 2462 2463
2464<script id="photo-swiper" type="text/x-template"> 2465 <div ref="photoSwiper" id="photo_swiper" class="photos swiper swiper-container"> 2466 <div class="swiper-wrapper"> 2467 <template v-if="hasImage"> 2468 <div v-for="(item, index) in mediaItems" :key="index" class="photo swiper-slide qk-align--center qk-display--flex qk-justify--center qk-vert--text_top default_scale"> 2469 <video-player v-if="item.url" :video="item" 2470 :video-poster=" !!mediaItems[firstImageIndex] ? mediaItems[firstImageIndex].large : '//cdn-general.cybassets.com/img_loading.svg' " 2471 > 2472 </video-player> 2473 <img v-else class="qk-center" :src="item.large" alt="image"/> 2474 </div> 2475 </template> 2476 <div v-else class="photo swiper-slide qk-align--center qk-display--flex qk-justify--center qk-vert--text_top default_scale"> 2477 <img src="//cdn-general.cybassets.com/assets/no-image-large-2b95ea56c455be9ce081d81c14eded925df68bf8fa38809e46f6af8fcdd5f9bc.png" alt="image" /> 2478 </div> 2479 </div> 2480 <div v-show="showBtn" class="photo-prev qk-swiper_btn--prev qk-hidden--mobile qk-swiper_btn qk-swiper_btn--lg qk-swiper_btn--v2 qk-mg_l--05"></div> 2481 <div v-show="showBtn" class="photo-next qk-swiper_btn--next qk-hidden--mobile qk-swiper_btn qk-swiper_btn--lg qk-swiper_btn--v2 qk-mg_l--05"></div> 2482 2483 <div class="photo-pagination qk-bd--default qk-bd--body qk-text--center qk-text--body qk-fs--breadcrumb qk-visible-sm"> 2484 <span class="current-index qk-text--default_dark">${currentImageIndex +1 }</span><span class="pagination-slash">/</span> 2485 <span>${mediaItems.length}</span> 2486 </div> 2487 </div> 2488</script>
2488 2489
2490<script> 2491 $(document).ready(function () { 2492 window.themeHelper.productModalComponents['photo-swiper'] = { 2493 template: '#photo-swiper', 2494 delimiters: ['${', '}'], 2495 props: { 2496 mediaItems: Array, 2497 currentImageIndex: Number, 2498 currentVariant: Object, 2499 videoAfterImage: Boolean, 2500 }, 2501 data: function () { 2502 return { 2503 swiper: {}, 2504 swiperOption: { 2505 preventInteractionOnTransition: true, 2506 rewind: true, 2507 spaceBetween: 5, 2508 slidesPerView: 1, 2509 navigation: { 2510 nextEl: '.photo-next', 2511 prevEl: '.photo-prev' 2512 } 2513 }, 2514 showBtn: true, 2515 isVariantReposition: false, 2516 } 2517 }, 2518 mounted: function() { 2519 this.swiper = new Swiper('#photo_swiper', this.swiperOption); 2520 this.swiper.on('slideChange', this.slideOnChange); 2521 }, 2522 watch: { 2523 currentImageIndex: function() { 2524 this.slideToIndex(); 2525 }, 2526 currentVariant: { 2527 immediate: true, 2528 handler: function() { 2529 this.showBtn = this.mediaItems.length > 1; 2530 this.isVariantReposition = true; 2531 this.$nextTick(() => { 2532 if (this.swiper) { 2533 this.swiper.update(); 2534 this.swiper.slideToLoop(this.initialItemIndex) 2535 this.slideOnChange(); 2536 this.isVariantReposition = false; 2537 } 2538 }); 2539 }, 2540 }, 2541 }, 2542 computed: { 2543 hasImage: function() { 2544 return this.mediaItems.length > 0; 2545 }, 2546 hasVideo: function() { 2547 return this.mediaItems.findIndex(item => !!item.url) !== -1; 2548 }, 2549 variantPhotos: function() { 2550 if (this.currentVariant?.photos?.length) { 2551 return this.currentVariant.photos; 2552 } else { 2553 return null; 2554 } 2555 }, 2556 initialItemIndex: function() { 2557 if (this.hasVideo && !this.videoAfterImage) { 2558 // Focus on photo if "variant with photos" selected, video otherwise 2559 return this.variantPhotos?.length ? 1 : 0; 2560 } else { 2561 // Focus on first photo 2562 return 0; 2563 } 2564 }, 2565 }, 2566 methods: { 2567 slideOnChange: function() { 2568 themeHelper.EventBus.$emit('photoOnChange', this.swiper.realIndex, this.isVariantReposition); 2569 }, 2570 slideToIndex: function() { 2571 if(this.swiper.realIndex != this.currentImageIndex) { 2572 this.swiper.slideToLoop(this.currentImageIndex); 2573 this.swiper.update(); 2574 } 2575 }, 2576 } 2577 }; 2578 }); 2579</script>
2579 2580 2581 2582<!-- cyb_snippet components/product_modal/video_player start -->
2583<script id="video-player" type="text/x-template"> 2584 <div class="videoPlayer__wrapper" @click="handleVideoClick"> 2585 <video 2586 id='modal-video' 2587 class="videoPlayer__video qk-cursor--pointer qk-center" 2588 :poster="videoPoster" 2589 loop defaultMuted muted playsinline webkit-playsinline autoplay 2590 > 2591 <source :src="videoUrl" type="video/mp4"> 2592 <p>Your browser does not support HTML 5 video.</p> 2593 </video> 2594 <button id="modal-video-button" class="videoPlayer__pauseButton"></button> 2595 </div> 2596</script>
2596 2597
2598<script> 2599 $(document).ready(function () { 2600 window.themeHelper.productModalComponents['video-player'] = { 2601 template: '#video-player', 2602 delimiters: ['${', '}'], 2603 props: { 2604 video: Object, 2605 videoPoster: String, 2606 }, 2607 data: function() { 2608 return { 2609 videoElement: null, 2610 buttonElement: null, 2611 }; 2612 }, 2613 mounted: function() { 2614 this.videoElement = $('#modal-video')[0]; 2615 this.buttonElement = $('#modal-video-button'); 2616 this.setVideoVolumeZero(); 2617 this.videoElement.addEventListener('canplay', (event) => { 2618 this.sendGtag('play'); 2619 }, { once: true }); 2620 }, 2621 computed: { 2622 videoUrl: function() { 2623 return this.video.url; 2624 } 2625 }, 2626 methods: { 2627 sendGtag: function(action) { 2628 window.productVideoView && productVideoView(action); 2629 }, 2630 setVideoVolumeZero: function() { 2631 this.videoElement.volume = 0; 2632 }, 2633 handleVideoClick: function() { 2634 if (this.videoElement.paused){ 2635 this.videoElement.play(); 2636 this.sendGtag('play'); 2637 } else { 2638 this.videoElement.pause(); 2639 this.sendGtag('paused'); 2640 } 2641 this.handleVideoButtonDisplay(this.buttonElement, this.videoElement); 2642 }, 2643 handleVideoButtonDisplay: function(button, video) { 2644 button.toggleClass('videoPlayer__playButton', video.paused); 2645 button.toggleClass('videoPlayer__pauseButton', !video.paused); 2646 }, 2647 } 2648 }; 2649 }); 2650</script>
2650 2651 2652<!-- cyb_snippet components/product_modal/video_player end --> 2653 2654<!-- cyb_snippet components/product_modal/photo_swiper end --> 2655<!-- cyb_snippet components/product_modal/swiper_thumbnails start -->
2656<script id="swiper-thumbnails" type="text/x-template"> 2657 <div 2658 v-for="(thumbnail, index) in allThumbnails" 2659 :key="index" 2660 class="product-thumbnail img-flex qk-of--hidden qk-display--il_bk qk-cursor--pointer qk-bd--default qk-bd--transparent default_scale" 2661 :class="{ focus: index === currentImageIndex }" 2662 @mouseover="updateCurrentImageIndex(index)" 2663 > 2664 <template v-if="thumbnail.isVideo"> 2665 <video class="qk-w--100 qk-h--100" :src="thumbnail.url" defaultMuted playsinline></video> 2666 <button class="videoPlayer__playButton"></button> 2667 </template> 2668 <img v-else :src="thumbnail.url" :alt="title" class="qk-w--100 qk-h--100"> 2669 </div> 2670</script>
2670 2671
2672<script type="text/javascript"> 2673 $(document).ready(function () { 2674 window.themeHelper.productModalComponents['swiper-thumbnails'] = { 2675 template: '#swiper-thumbnails', 2676 delimiters: ['${', '}'], 2677 props: { 2678 title: String, 2679 mediaItems: Array, 2680 currentImageIndex: Number, 2681 }, 2682 emits: ['updateCurrentImageIndex'], 2683 methods: { 2684 updateCurrentImageIndex: function(thumbnailIndex) { 2685 if (thumbnailIndex !== this.currentImageIndex ) { 2686 this.$emit('updateCurrentImageIndex', thumbnailIndex); 2687 } 2688 }, 2689 }, 2690 mounted() { 2691 // can be removed after replacing video thumbnail with img 2692 const thumbnailVideo = $('.product-thumbnail video')[0]; 2693 if (!!thumbnailVideo) { 2694 thumbnailVideo.volume = 0; 2695 const promise = thumbnailVideo.play(); 2696 promise.then(() => { 2697 thumbnailVideo.pause(); 2698 }) 2699 } 2700 }, 2701 computed: { 2702 allThumbnails: function() { 2703 return this.mediaItems.map(item => ({ 2704 isVideo: !!item.url, 2705 url: item.url || item.medium 2706 })); 2707 }, 2708 }, 2709 watch: { 2710 allThumbnails: { 2711 handler(){ 2712 this.updateCurrentImageIndex(this.currentImageIndex); 2713 } 2714 } 2715 } 2716 }; 2717 }); 2718</script>
2718 2719 2720<!-- cyb_snippet components/product_modal/swiper_thumbnails end --> 2721 2722 2723<!-- cyb_snippet _product_modal_js start -->
2724<script type="text/javascript"> 2725 $(document).ready(function() { 2726 var categoryLevels = []; 2727 var productCategoryLevels = null; 2728 var pageMainProductId = null; 2729 window.themeHelper.productModalComponents['product-modal'] = { 2730 template: '#product-modal', 2731 delimiters: [ 2732 '${', '}' 2733 ], 2734 props: { 2735 onlyDescription: Boolean, 2736 cartItems: Array, 2737 groupId: Number, 2738 productUrl: String, 2739 color: String, // unused 2740 collectionId: Number, 2741 categories: Array, 2742 // 夿·æ¯å¦æè²ç¥¨å±é 2743 isCollection: { 2744 type: Boolean, 2745 required: false, 2746 default: false, 2747 }, 2748 // 夿·å å ¥è³¼ç©è»çæ¹æ³ 2749 isNnCollection: Boolean, 2750 isNewNnCollection: Boolean, 2751 isBundleDiscount: Boolean, 2752 2753 // 夿·æ¯å¦é¡¯ç¤ºååæè¿° 2754 isShowDescription: { 2755 type: Boolean, 2756 default: true 2757 }, 2758 2759 // 夿·æ¯å¦çºç«å³è³¼è²· 2760 isQuickBuy: { 2761 type: Boolean, 2762 default: false 2763 }, 2764 selectedVariantId: Number, 2765 callBack: Function 2766 }, 2767 data: function() { 2768 return { 2769 styledShopMenu: "buttonType", 2770 selectOption: '', 2771 selectCurrentStr:'', 2772 isModalSelectShow: false, 2773 modalOption: {}, 2774 adding: false, 2775 currentImageIndex: 0, 2776 _navState: { variantId: null, photoIndex: 0 }, 2777 currentOption: { 2778 option1: null, 2779 option2: null, 2780 option3: null 2781 }, 2782 currentVariant: null, 2783 variantNotifications: null, 2784 currentVariantIndex: null, 2785 product: {}, 2786 isChoose: false, 2787 isLoading: true, 2788 isEmptyClickable: liquidHelper.isEmptyClickable, 2789 quantity: 1, 2790 maxUsableBonus: 0, 2791 isDiscountPrice: false, 2792 displayProductDiscountsList: true, 2793 displayPeriodicSalesPages:false, 2794 discountsList: null, 2795 hasVideoPlugin: true, 2796 videoDisplayLocation: "before", 2797 hasStockNotificationPlugin: true, 2798 isDisplayPriceRange: null, 2799 hasVariantPriceRangePlugin: true, 2800 hasHideSingleVariantOptionsPlugin: false, 2801 } 2802 }, 2803 mounted: function() { 2804 this.getProductDetail(); 2805 $('.custom-scrollbar').addCustomScrollbar(); 2806 themeHelper.EventBus.$on('photoOnChange', this.photoOnChange); 2807 }, 2808 beforeUnmount: function() { 2809 themeHelper.EventBus.$off('photoOnChange', this.photoOnChange); 2810 }, 2811 computed: { 2812 photoUrls: function() { 2813 return this.product.photoUrls.length > 0 2814 ? this.product.photoUrls 2815 : [this.featuredImage]; 2816 }, 2817 photoUrlsMap: function() { 2818 var map = {}; 2819 var urls = this.product.photoUrls; 2820 this.product.photos.forEach(function(photo, index) { 2821 map[photo.photo.id] = urls[index]; 2822 }); 2823 2824 return map; 2825 }, 2826 featuredImage: function() { 2827 return this.product.featuredImage; 2828 }, 2829 swiperPhotos: function() { 2830 if (!this.photoUrls.length) { 2831 return [this.featuredImage]; 2832 } 2833 2834 if (this.currentVariant && this.currentVariant.photos.length) { 2835 var map = this.photoUrlsMap; 2836 return this.currentVariant.photos.map(function(p) { 2837 return map[p.id]; 2838 }); 2839 } 2840 2841 return this.photoUrls; 2842 }, 2843 productVideo: function() { 2844 return this.product.video; 2845 }, 2846 videoAfterImage: function() { 2847 return this.videoDisplayLocation === 'after'; 2848 }, 2849 swiperItems: function() { 2850 const media = [...this.swiperPhotos]; 2851 if ( 2852 this.hasVideoPlugin && this.productVideo.url 2853 ) { 2854 this.videoAfterImage 2855 ? media.push(this.productVideo) 2856 : media.unshift(this.productVideo); 2857 } 2858 return media; 2859 }, 2860 firstImageIndex: function() { 2861 return this.hasVideoPlugin && this.productVideo.url && !this.videoAfterImage 2862 ? 1 2863 : 0 2864 }, 2865 otherDescriptions: function() { 2866 var descriptions = {}; 2867 this.product.otherDescriptions.forEach(function(od) { 2868 descriptions[od.settingName] = od.bodyHtml; 2869 }) 2870 return descriptions 2871 }, 2872 variantOptions: function() { 2873 return themeHelper.variantOptions(this.product); 2874 }, 2875 firstValidVariant: function() { 2876 var self = this; 2877 var result = this.product.variants.find(function(variant) { 2878 // å¢å product modal è¯çµ¡åºå®¶ property 2879 variant.imgUrl = ""; 2880 variant.productTitle = ""; 2881 2882 return variant.available; 2883 }); 2884 2885 return result 2886 ? result 2887 : null; 2888 }, 2889 selectedValidVariant: function() { 2890 var self = this; 2891 var result = this.variantOptions.find(function(variant) { 2892 return variant.id === self.selectedVariantId; 2893 }); 2894 2895 return result 2896 ? result 2897 : null; 2898 }, 2899 totalInventoryQuantity: function(product) { 2900 return themeHelper.totalInventoryQuantity(this.product) 2901 }, 2902 addCartText: function() { 2903 var variants = parseInt(""); 2904 let isRegisteredNotification = this.currentVariant && this.variantNotifications && this.variantNotifications[this.currentVariant.id] 2905 if (this.isNnCollection || this.isBundleDiscount) { 2906 if (this.currentVariant && !themeHelper.variantIsAvailable(this.currentVariant)) { 2907 if (this.currentVariant.inventoryPolicy === 'continue') { 2908 if (this.isNnCollection) { 2909 return this.isChoose && !this.isNewNnCollection 2910 ? 'Ordered' 2911 : 'Pre-order'; 2912 } 2913 } else { 2914 return 'Sold out'; 2915 } 2916 } 2917 if (this.totalInventoryQuantity === 0) { 2918 return 'Sold out'; 2919 } 2920 return this.isChoose && !this.isNewNnCollection 2921 ? 'Selected' 2922 : 'Select'; 2923 } else { 2924 if (this.isQuickBuy) { 2925 if (this.currentVariant && !themeHelper.variantIsAvailable(this.currentVariant)) { 2926 if (this.currentVariant.inventoryPolicy === 'continue'){ 2927 return 'Order Now' 2928 } 2929 return this.hasStockNotificationPlugin 2930 ? (isRegisteredNotification 2931 ? 'Notification enabled' 2932 : 'Sold out! Notify me when the product is available.') 2933 : 'Contact Shop' 2934 } 2935 return 'BUY NOW'; 2936 } else { 2937 if (this.currentVariant) { 2938 if (!themeHelper.variantIsAvailable(this.currentVariant)) { 2939 if (this.currentVariant.inventoryPolicy === 'continue'){ 2940 return 'Pre-order' 2941 } 2942 return this.hasStockNotificationPlugin 2943 ? (isRegisteredNotification 2944 ? 'Notification enabled' 2945 : 'Sold out! Notify me when the product is available.') 2946 : 'Contact Shop' 2947 } 2948 } else { 2949 if (this.totalInventoryQuantity === 0) { 2950 return 'Sold out'; 2951 } 2952 } 2953 return 'ADD TO CART'; 2954 } 2955 } 2956 }, 2957 cartItem: function() { 2958 if (!this.currentVariant) { 2959 return null 2960 } 2961 return { 2962 id: this.currentVariant.id, 2963 groupId: this.groupId, 2964 productId: this.product.id, 2965 title: this.product.title, 2966 photo: this.currentVariant.imgUrl || this.featuredImage.large, 2967 quantity: this.quantity, 2968 price: this.currentVariant.price, 2969 variant: this.currentVariant, 2970 product: this.product 2971 } 2972 }, 2973 options: function() { 2974 return this.product.options; 2975 }, 2976 optionTypes: function() { 2977 2978 // å æ ¹æè¨å®çvariantsä¾æåº 2979 var self = this; 2980 2981 var option1 = []; 2982 var option2 = []; 2983 var option3 = [];
2984 this.product.variants.forEach(function(item) { 2985 if (item.option1 !== null) { 2986 option1.push(item.option1); 2987 } 2988 if (item.option2 !== null) { 2989 option2.push(item.option2); 2990 } 2991 if (item.option3 !== null) { 2992 option3.push(item.option3); 2993 } 2994 }) 2995 var filteredOptionTypes = []; 2996 this.product.optionTypes.forEach(function(item, index) { 2997 filteredOptionTypes.push(self.getUniqueVariant(eval('option' + ( 2998 index + 1 2999 ))).join(',')); 3000 }); 3001 return filteredOptionTypes; 3002 }, 3003 optionInfo: function() { 3004 var self = this; 3005 3006 return self.options.map(function(option, index) { 3007 return { 3008 name: option, 3009 types: self.getOptions('option' + ( 3010 index + 1 3011 ), self.optionTypes[index].split(',')) 3012 } 3013 }); 3014 }, 3015 hasVariant: function() { 3016 return this.product.options.length > 0; 3017 }, 3018 shouldHideSingleVariantOptions: function() { 3019 return this.hasHideSingleVariantOptionsPlugin && 3020 this.product.variants && 3021 this.product.variants.length <= 1; 3022 }, 3023 variantSize: function() { 3024 if(this.product.options){ 3025 return this.product.options.length; 3026 } 3027 }, 3028 firstVariant: function() { 3029 return this.product.variants[0]; 3030 }, 3031 firstCheapestVariant: function() { 3032 return this.product.variants.find((v)=> (v.price === this.priceStats.minPrice)); 3033 }, 3034 priceStats: function() { 3035 return this.product.variants.reduce(function(acc, variant) { 3036 return { 3037 minPrice: variant.price < acc.minPrice ? variant.price : acc.minPrice, 3038 maxPrice: variant.price > acc.maxPrice ? variant.price : acc.maxPrice, 3039 }; 3040 }, { 3041 minPrice: this.firstVariant.price, 3042 maxPrice: this.firstVariant.price, 3043 }); 3044 }, 3045 hidePrice: function() { 3046 return this.product && this.product.hidePrice === true; 3047 }, 3048 salesModePurchasable: function() { 3049 return !(this.product && this.product.salesModePurchasable === false); 3050 }, 3051 // - 任鏿æ£ï¼ç´ é ç¶ ï¼ã鏿ãåªæ¯å é²è©¦ç®æ¸ å®ï¼ä¸æç´æ¥ä¸å®ï¼æ åªæèå¹åå 3052 // - å ¶ä»æ å¢ï¼ååé ã群çµé ãå¤å±¤ç´åé¡ãæå°ãé¦é åååå¡ï¼ï¼ä¸å¯è³¼è²·ï¼å«èå¹ï¼å°±æ´çµæ¶æ 3053 showPurchaseControls: function() { 3054 if (this.isNnCollection || this.isBundleDiscount) { 3055 return !this.hidePrice; 3056 } 3057 return this.salesModePurchasable; 3058 }, 3059 variantPrice: function() { 3060 if (this.hidePrice) { 3061 return ''; 3062 } 3063 var from = liquidHelper.defaultCurrency; 3064 if (this.currentVariant) { 3065 return moneySymbol(this.currentVariant.price, from); 3066 } 3067 if (this.product.variants.length === 1) { 3068 return moneySymbol(this.firstVariant.price, from); 3069 } 3070 3071 var minPrice = this.priceStats.minPrice; 3072 var maxPrice = this.priceStats.maxPrice; 3073 3074 if (minPrice !== maxPrice && (!this.hasVariantPriceRangePlugin || this.isDisplayPriceRange)) { 3075 this.isDiscountPrice = false; 3076 return moneySymbol(minPrice, from) + '~' + moneySymbol(maxPrice, from); 3077 } else { 3078 return moneySymbol(minPrice, from); 3079 } 3080 }, 3081 marketPrice: function() { 3082 if (this.hidePrice) { 3083 this.isDiscountPrice = false; 3084 return; 3085 } 3086 var from = liquidHelper.defaultCurrency; 3087 if (this.currentVariant) { 3088 this.isDiscountPrice = false; 3089 if (this.currentVariant.compareAtPrice && this.currentVariant.compareAtPrice > this.currentVariant.price) { 3090 this.isDiscountPrice = true; 3091 return moneySymbol(this.currentVariant.compareAtPrice, from); 3092 } 3093 } else { 3094 if (!_.includes(this.variantPrice, '~')) { 3095 const price = Number(this.variantPrice.replace(/[^0-9.
3095-]/g, "")) 3096 // æªé¸ææ¬¾å¼ä¹ä¸é¡¯ç¤ºåéæï¼é¡¯ç¤ºç¬¬ä¸åæä¾¿å®ç款å¼çå®å¹ 3097 if (this.firstCheapestVariant.compareAtPrice && this.firstCheapestVariant.compareAtPrice > price){ 3098 this.isDiscountPrice = true; 3099 return moneySymbol(this.firstCheapestVariant.compareAtPrice, from); 3100 } 3101 // æªé¸ææ¬¾å¼æè¦æ¹åä¸è¬å¹æ ¼é¡è² 3102 this.isDiscountPrice = false; 3103 } 3104 } 3105 }, 3106 isShowDropdownList: function() { 3107 if (this.product.options.length > 0) { 3108 return true; 3109 } 3110 return this.product.variants.length > 1 3111 }, 3112 priceTitleTag: function() { 3113 return this.marketPrice 3114 ? getDiscountPriceName() 3115 : getDiscountPriceSuggestionName(); 3116 }, 3117 isHideAddCartBtn: function() { 3118 if (this.addCartText === 'Sold out') { 3119 return true; 3120 } 3121 return false; 3122 }, 3123 isSecondaryBtn: function() { 3124 if (this.addCartText === 'Contact Shop') { 3125 return true; 3126 } 3127 return false; 3128 }, 3129 variantsMaxUsableBonus: function() { 3130 var variants = this.product.variants; 3131 var maxUsableBonusArray = variants.map(function(item) { 3132 return item.maxUsableBonus 3133 }); 3134 return Math.max.apply(null, maxUsableBonusArray); 3135 }, 3136 bonusToPrice: function() { 3137 const bonus = this.currentVariant 3138 ? this.currentVariant.maxUsableBonus 3139 : this.maxUsableBonus; 3140 const price = Math.floor(bonus / window.liquidHelper.conversionBonus); 3141 const priceWithMoney = window.themeHelper.productDisplayCurrencyBlock(price); 3142 return "equivalent to value".replace('value', priceWithMoney); 3143 }, 3144 isMobileSize: function() { 3145 return window.innerWidth <= 580 3146 }, 3147 limitBuyText: function () { 3148 const minCount = this.product.minBuy; 3149 const maxCount = this.product.limitBuy; 3150 if (minCount > 0 && maxCount > 0) { 3151 return 'For this product, each order requires a minimum purchase of minCount units and allows a maximum purchase of maxCount units.'.replace('minCount', minCount).replace('maxCount', maxCount); 3152 } 3153 if (minCount > 0) { 3154 return 'This product requires a minimum order of minCount pieces per order'.replace('minCount', minCount); 3155 } 3156 if (maxCount > 0) { 3157 return 'For this product, each order allows a maximum purchase of maxCount units.'.replace('maxCount', maxCount); 3158 } 3159 return ''; 3160 } 3161 }, 3162 methods: { 3163 onClickSelectModal: function(objData, selectOptionStr) { 3164 this.isModalSelectShow = true; 3165 this.modalOption = objData; 3166 this.selectOption = selectOptionStr 3167 this.selectCurrentStr = this.currentOption && (String(this.currentOption[selectOptionStr]) || null) 3168 }, 3169 onChangeModalSelect: function(flag, isSelect) { 3170 if(!isSelect){ 3171 this.setOption(this.selectOption,this.selectCurrentStr,this.modalOption.types) 3172 } 3173 this.isModalSelectShow = flag; 3174 }, 3175 setOption: function(optionKey, type, dataArr) { 3176 let flag = true 3177 dataArr.forEach(item => { 3178 if (item.name === type) { 3179 flag = item.isValid 3180 } 3181 }) 3182 if (flag) { 3183 this.toggleCurrentOption(optionKey, type) 3184 } 3185 }, 3186 addToWishListEvent: function() { 3187 try { 3188 if (appMarketAddToWishListEvent) { 3189 var product = this.product; 3190 var currentVariant = this.currentVariant 3191 var element = $(`.btn[data-id=${product.id}]`); 3192 var index; 3193 var listName; 3194 if (element) { 3195 index = element.data('position') 3196 listName = element.data('list') 3197 } 3198 // sku_properties:é¸ä¸æ¬¾å¼ç option pairs(ç¶åèªç³»),é¡åå zip å¼ 3199 var optionValues = [currentVariant.option1, currentVariant.option2, currentVariant.option3]; 3200 var properties = [];
3201 (product.options || []).forEach(function(optionName, i) { 3202 if (optionName && optionValues[i]) { 3203 properties.push({ name: optionName, value: optionValues[i] }); 3204 } 3205 }); 3206 var dataSet = { 3207 name: product.title, 3208 category: product.productType, 3209 categories: (this.categories && this.categories.length) ? this.categories : (categoryLevels.length ? categoryLevels : (product.id === pageMainProductId ? productCategoryLevels : undefined)), 3210 sku: currentVariant.sku, 3211 price: currentVariant.price, 3212 compare_at_price: currentVariant.compareAtPrice, 3213 properties: properties, 3214 quantity: currentVariant.inventoryQuantity, 3215 variant: currentVariant.title, 3216 listName: listName || null, 3217 productId: product.id, 3218 variantId: currentVariant.id, 3219 index: Number(index) || 0, 3220 } 3221 appMarketAddToWishListEvent(dataSet) 3222 } 3223 } catch (e) { 3224 console.error(e) 3225 } 3226 }, 3227 addWishList: function() { 3228 if (this.currentVariant === null) { 3229 window.msg('Please select product specifications', 'warning').show(); 3230 return; 3231 } 3232 var productVariantId = this.currentVariant.id; 3233 var addToWishListEvent = this.addToWishListEvent 3234 $.ajax({ 3235 method: 'POST', 3236 url: '/tracking_items', 3237 dataType: 'json', 3238 data: { 3239 product_variant_id: productVariantId 3240 }, 3241 success: function(response) { 3242 if (response.message) { 3243 window.msg(response.message, 'success').show(); 3244 addToWishListEvent() 3245 } 3246 3247 if (response.error) { 3248 window.msg(response.error, 'error').show(); 3249 3250 } 3251 if (response.info) { 3252 window.msg(response.info, 'info').show(); 3253 } 3254 if (response.success === false) { 3255 if (window.liquidHelper && window.liquidHelper.language && window.liquidHelper.language.handle) { 3256 window.location = "/" + window.liquidHelper.language.handle + "/account/login"; 3257 } else { 3258 window.location = "/account/login"; 3259 } 3260 } 3261 } 3262 }); 3263 }, 3264 setChoose: function(currentVariant) { 3265 this.maxUsableBonus = 0; 3266 var quantity = 1; 3267 var cartItem = null; 3268 if (!this.isNnCollection && this.cartItems) { 3269 cartItem = this.normalGetChoosenItem(currentVariant); 3270 } 3271 if (this.isNnCollection) { 3272 cartItem = this.nnCollectionGetChoosenItem(currentVariant); 3273 } 3274 this.isChoose = !! cartItem; 3275 if (this.isNewNnCollection) { 3276 return 3277 } 3278 this.quantity = cartItem 3279 ? cartItem.quantity 3280 : this.quantity; 3281 3282 // product modal è¯çµ¡åºå®¶æ å¢ 3283 if (currentVariant) { 3284 var photoIndex = 0; 3285 if (! currentVariant.imgUrl) { 3286 currentVariant.imgUrl = this.swiperPhotos.length > 0 3287 ? (this.swiperPhotos[photoIndex] && this.swiperPhotos[photoIndex].large) 3288 : this.featuredImage.large; 3289 } 3290 currentVariant.productTitle = this.product.title + ' - ' + this.currentVariant.title; 3291 } 3292 }, 3293 normalGetChoosenItem: function(currentVariant) { 3294 return this.cartItems.find(function(cartItem) { 3295 return currentVariant && cartItem.id === currentVariant.id; 3296 }); 3297 }, 3298 nnCollectionGetChoosenItem: function(currentVariant) { 3299 var isSelected = null; 3300 if (! currentVariant) { 3301 return isSelected; 3302 } 3303 if (this.isNewNnCollection) { 3304 var cart = store.get(`SpecialCollectionCart_${this.collectionId}`); 3305 isSelected = cart && cart.find((item) => item.variant_id == currentVariant.id) || null; 3306 } else { 3307 store.each(function(value, key) { 3308 var productId = _.includes(key, 'Pro' + currentVariant.productId); 3309 var variantID = _.includes(key, 'Var' + currentVariant.id); 3310 if (productId && variantID) { 3311 isSelected = store.get(key); 3312 } 3313 }); 3314 } 3315 3316 return isSelected; 3317 }, 3318 // get product detail 3319 getProductDetail: function() { 3320 var self = this; 3321 3322 $.ajax({ 3323 url: self.productUrl + '.json', 3324 type: 'GET', 3325 timeout: 30000, 3326 beforeSend: function() { 3327 self.isLoading = true; 3328 }, 3329 error: function(xhr) { 3330 self.closeModal(); 3331 if (xhr.status === 429) { 3332 window.showAddCartRateLimitModal(5); 3333 return; 3334 } 3335 window.msg('Network error, please try again later', 'error').show(); 3336 } 3337 }).done(function(data) { 3338 if (data.id) { 3339 var productData = [themeHelper.toCamelCase(data)]; 3340 self.product = themeHelper.priceWithDiscount(productData, liquidHelper.hasPriceWithDiscountPlugin)[0]; 3341 self.maxUsableBonus = self.variantsMaxUsableBonus; 3342 if (self.product.variants.length === 1 || liquidHelper.isFirstVariantSelected || self.selectedVariantId) { 3343 self.currentVariant = self.firstValidVariant; 3344 // 妿已ç¶èªé¸ååï¼åååé 䏿»å å ¥è³¼ç©è»é¡¯ç¤ºèªé¸åå 3345 if (self.selectedVariantId) { 3346 self.currentVariant = self.selectedValidVariant; 3347 } 3348 if (self.currentVariant) { 3349 self.setChoose(self.currentVariant); 3350 self.setDefaultOption(); 3351 } 3352 } 3353 if (self.displayProductDiscountsList) { 3354 self.setUpDiscountsTag(data); 3355 } 3356 self.isLoading = false;
3357 if (self.product && self.product.variants) { 3358 self.product.variants.forEach(function(discountedVariant) { 3359 var rawVariant = data.variants.find(function(v) { return v.id === discountedVariant.id; }); 3360 if (rawVariant) { rawVariant.price = discountedVariant.price; } 3361 }); 3362 } 3363 viewItem && viewItem(data, { collectionId: '', collectionName: null, categories: (self.categories && self.categories.length) ? self.categories : (categoryLevels.length ? categoryLevels : (data.id === pageMainProductId ? productCategoryLevels : undefined)) }); 3364 3365 (function() { 3366 // Read login status from cacheable, skip GET /pv_notification if not login. 3367 if (window.store && window.store.get('customer')) { 3368 var cacheableCustomer = window.store.get('customer'); 3369 if (cacheableCustomer.notLogin) { 3370 return; 3371 } 3372 } 3373 $.ajax({ 3374 url: '/pv_notification', 3375 method: 'GET', 3376 dataType: 'json', 3377 data: { 3378 product_id: parseInt(data.id) 3379 }, 3380 success: function(response) { 3381 self.variantNotifications = response.variants; 3382 } 3383 }) 3384 })(); 3385 } else { 3386 window.msg('Network error, please try again later', 'error').show(); 3387 self.closeModal() 3388 } 3389 }) 3390 }, 3391 // product image btn 3392 photoOnChange: function(photoIndex, isVariantReposition) { 3393 var visiblePhotos = (this.currentVariant && this.currentVariant.photos.length) 3394 ? this.currentVariant.photos 3395 : this.product.photos.map(function(p) { return p.photo; }); 3396 var result = themeHelper.buildNavigateItemImagePayload(this._navState, { 3397 product: this.product, 3398 currentVariant: this.currentVariant, 3399 visiblePhotos: visiblePhotos, 3400 slideIndex: photoIndex, 3401 videoOffset: this.firstImageIndex, 3402 }); 3403 this._navState = result.nextState; 3404 if (result.payload && !isVariantReposition) { 3405 window.navigateItemImage(result.payload); 3406 } 3407 this.currentImageIndex = photoIndex; 3408 }, 3409 toggleCurrentOption: function(key, value) { 3410 this.currentOption[key] = 3411 (this.currentOption[key] === value || value === 'null') ? null : value; 3412 var variantIndex = this.getVariantIndex(); 3413 if (variantIndex !== -1) { 3414 this.currentVariant = this.product.variants[variantIndex]; 3415 } else { 3416 this.currentVariant = null; 3417 } 3418 this.setChoose(this.product.variants[variantIndex]); 3419 if (this.currentOption[key] !== null) { 3420 var optionIndex = parseInt(key.replace('option', '')) - 1; 3421 appStoreSelectItemEvent(this.product, this.product.options[optionIndex], this.currentOption[key], this.currentVariant); 3422 } 3423 }, 3424 toggleNotification: function() { 3425 var self = this; 3426 var variantId = this.currentVariant.id; 3427 3428 $.ajax({ 3429 url: '/toggle_pv_notification', 3430 method: 'POST', 3431 dataType: 'json', 3432 data: { 3433 product_variant_id: variantId 3434 }, 3435 success: function(response) { 3436 self.variantNotifications[variantId] = response.notice; 3437 window.msg(response.message, "success").show(); 3438 }, 3439 error: function(xhr) { 3440 var response = xhr.responseJSON; 3441 var msg = response && response.error || "Network error, please try again later"; 3442 window.msg(msg, "error").show(); 3443 } 3444 }) 3445 }, 3446 getOptionImageIndex: function(index) { 3447 this.currentImageIndex = index; 3448 }, 3449 quantityDecrease: function() { 3450 if (this.cartItem) { 3451 themeHelper.EventBus.$emit('quantityDecrease', this.cartItem, false); 3452 this.quantity = this.cartItem.quantity 3453 } else { 3454 window.msg("Please select product specifications", 'warning').show(); 3455 } 3456 }, 3457 quantityIncrease: function() { 3458 if (this.cartItem) { 3459 themeHelper.EventBus.$emit('quantityIncrease', this.cartItem, false); 3460 this.quantity = this.cartItem.quantity 3461 } else { 3462 window.msg("Please select product specifications", 'warning').show(); 3463 } 3464 }, 3465 quantityChange: function(el) { 3466 if (this.cartItem) { 3467 themeHelper.EventBus.$emit('quantityChange', parseInt(el.target.value), this.cartItem, false); 3468 this.quantity = this.cartItem.quantity; 3469 el.target.value = this.cartItem.quantity; 3470 } else { 3471 window.msg("Please select product specifications", 'warning').show(); 3472 } 3473 }, 3474 addProduct: function() { 3475 if (this.addCartText === 'Contact Shop') { 3476 $('#messagebuy-Modal').data('variant', this.currentVariant); 3477 $('#messagebuy-Modal').modal('show'); 3478 $('#messagebuy-Modal').css("background-color", "rgba(0, 0, 0, .6)"); 3479 } else if ( 3480 this.addCartText === 'Notification enabled' ||
3481 this.addCartText === 'Sold out! Notify me when the product is available.' 3482 ) { 3483 this.toggleNotification(); 3484 } else { 3485 if (this.cartItem) { 3486 try { 3487 if (this.isChoose) { 3488 themeHelper.EventBus.$emit('updateStore', 'update', this.cartItem, this.callBack) 3489 } else { 3490 themeHelper.EventBus.$emit('updateStore', 'add', this.cartItem, this.callBack) 3491 } 3492 3493 this.adding = true; 3494 this.closeModal(); 3495 } catch (e) { 3496 window.msg("Unusual product specification; please select again.", 'error').show(); 3497 } 3498 } else { 3499 window.msg("Please select product specifications", 'warning').show(); 3500 } 3501 } 3502 }, 3503 closeModal: function() { 3504 themeHelper.EventBus.$emit('closeProductModal'); 3505 }, 3506 setDefaultOption: function() { 3507 var self = this; 3508 Object.keys(self.currentOption).map(function(optionKey) { 3509 self.currentOption[optionKey] = self.currentVariant[optionKey]; 3510 }); 3511 }, 3512 getVariantIndex: function() { 3513 var self = this; 3514 return self.product.variants.findIndex(function(variant, index) { 3515 var isVariant = true; 3516 Object.keys(self.currentOption).forEach(function(option) { 3517 if (variant[option] !== self.currentOption[option]) { 3518 isVariant = false; 3519 } 3520 }); 3521 return isVariant; 3522 }); 3523 }, 3524 3525 // 篩é¸éè¤åé 3526 getUniqueVariant: function(variants) { 3527 return variants.filter(function(value, index, self) { 3528 return self.indexOf(value) === index; 3529 }); 3530 }, 3531 groupBy(xs, key) { 3532 return xs.reduce(function(rv, x) { 3533 (rv[x[key]] = rv[x[key]] || []).push(x); 3534 return rv; 3535 }, {}); 3536 }, 3537 setUpDiscountsTag(data) { 3538 var self = this; 3539 var languagePrefix = '/' + ((window.shopScriptHelper && window.shopScriptHelper.i18nLocale) || 'zh-TW'); 3540 $.ajax({ 3541 url: languagePrefix + self.productUrl + '/discounts_list', 3542 method: 'GET', 3543 success: function(result) { 3544 if (result.length > 0) { 3545 var discounts_list = self.groupBy(result, 'campaign_type'); 3546 self.discountsList = discounts_list; 3547 } else { 3548 self.discountsList = null; 3549 } 3550 } 3551 }); 3552 }, 3553 getOptions: function(optionKey, optionTypes) { 3554 var self = this; 3555 return optionTypes.map(function(optionType, index) { 3556 var isValid = true; 3557 3558 // é¸åºå å«ç®åtypeçvariant 3559 var matchVariants = self.product.variants.filter(function(variant) { 3560 return variant[optionKey] === optionType; 3561 }); 3562 3563 // 篩é¸å·²å¾é¸type 3564 Object.keys(self.currentOption).forEach(function(currentOptionKey) { 3565 if (currentOptionKey !== optionKey) { 3566 matchVariants = matchVariants.filter(function(variant) { 3567 if (self.currentOption[currentOptionKey]) { 3568 return variant[currentOptionKey] === self.currentOption[currentOptionKey] 3569 } else { 3570 return true; 3571 } 3572 }); 3573 } 3574 }); 3575 if (matchVariants.length === 0) { 3576 isValid = false; 3577 } 3578 if (! self.isEmptyClickable) { 3579 isValid = false; 3580 matchVariants.find(function(item) { 3581 if (item.inventoryQuantity === null || item.inventoryQuantity > 0 || item.inventoryPolicy === 'continue') { 3582 isValid = true; 3583 } 3584 }); 3585 } 3586 return {name: optionType, isValid: isValid} 3587 }); 3588 } 3589 } 3590 }; 3591 }); 3592</script>
3592 3593 3594<!-- cyb_snippet _product_modal_js end --> 3595 3596<!-- cyb_snippet components/product_modal/product_modal end --> 3597 3598<!-- cyb_snippet messagebuy_modal start --> 3599 3600 3601<!-- cyb_snippet messagebuy_modal end --> 3602<!-- cyb_snippet components/rate_limit_modal start --> 3603<link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/rate_limit_modal-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' /> 3604 3605<div class="modal fade" id="rate-limit-modal" tabindex="-1" role="dialog" aria-hidden="true" data-backdrop="static" data-keyboard="false"> 3606 <div class="modal-dialog modal-dialog-centered" role="document"> 3607 <div class="modal-content"> 3608 <div class="modal-body"> 3609 <div class="qk-text--default_dark rate-limit-text"> 3610 <p id="rate-limit-title">High demand right now, please wait</p> 3611 <p class="qk-fs--body qk-fw--500 rate-limit-message"> 3612 <span class="qk-text--error" id="rate-limit-countdown"></span> 3613 <span id="rate-limit-desc"></span> 3614 </p> 3615 <p class="qk-fs--body qk-fw--500 rate-limit-message" id="rate-limit-warn">Leaving this page may increase your wait time.</p> 3616 </div> 3617 <button id="rate-limit-btn" class="btn qk-btn qk-btn--primary" disabled>Re-enter product page</button> 3618 </div> 3619 </div> 3620 </div> 3621</div> 3622
3623<script> 3624 window.showRateLimitModal = function(countdownSec) { 3625 var countdown = countdownSec || 5; 3626 var $modal = $('#rate-limit-modal'); 3627 var $btn = $modal.find('#rate-limit-btn'); 3628 var $countdownEl = $modal.find('#rate-limit-countdown'); 3629 3630 $btn.show(); 3631 $modal.find('#rate-limit-desc').text(language["product_rate_limit_desc"]); 3632 $countdownEl.text(countdown); 3633 $btn.prop('disabled', true); 3634 $modal.modal('show'); 3635 3636 var timer = setInterval(function() { 3637 countdown--; 3638 $countdownEl.text(countdown); 3639 if (countdown <= 0) { 3640 clearInterval(timer); 3641 $btn.prop('disabled', false); 3642 } 3643 }, 1000); 3644 3645 $btn.off('click').on('click', function() { 3646 location.reload(); 3647 }); 3648 } 3649 3650 window.showAddCartRateLimitModal = function(countdownSec) { 3651 var countdown = countdownSec || 5; 3652 var $modal = $('#rate-limit-modal'); 3653 var $countdownEl = $modal.find('#rate-limit-countdown'); 3654 3655 $modal.find('#rate-limit-btn').hide(); 3656 $modal.find('#rate-limit-desc').text(language["addcart_rate_limit_desc"]); 3657 $countdownEl.text(countdown); 3658 $modal.modal('show'); 3659 3660 var timer = setInterval(function() { 3661 countdown--; 3662 $countdownEl.text(countdown); 3663 if (countdown <= 0) { 3664 clearInterval(timer); 3665 $modal.modal('hide'); 3666 } 3667 }, 1000); 3668 } 3669</script>
3669 3670 3671<!-- cyb_snippet components/rate_limit_modal end --> 3672
3673<script> 3674 $(document).ready(function() { 3675 const shouldSkipQuantityCheck = false; 3676 const newAddCartModalApp = new window.themeHelper.LiquidVueHandler({ 3677 componentNames: Object.keys(window.themeHelper.productModalComponents), 3678 mountSelector: '#new-addcart-modal', 3679 autoMount: false, 3680 }); 3681 3682 newAddCartModalApp.createApp({ 3683 el: '#new-addcart-modal', 3684 delimiters: ['${', '}'], 3685 data() { 3686 return { 3687 collectionId: 0, 3688 categories: [], 3689 color: '', // unused 3690 isCollection: true, 3691 productQuantity: 0, 3692 onlyDescription: false, 3693 showProductModal: false, 3694 popProductUrl: '', 3695 loading: false, 3696 }; 3697 }, 3698 mounted: function() { 3699 themeHelper.EventBus.$on('closeProductModal',this.closeProductModal); 3700 themeHelper.EventBus.$on('updateStore', this.addProduct); 3701 themeHelper.EventBus.$on('quantityDecrease', this.quantityDecrease); 3702 themeHelper.EventBus.$on('quantityIncrease', this.quantityIncrease); 3703 themeHelper.EventBus.$on('quantityChange', this.quantityChange); 3704 }, 3705 methods: { 3706 addProduct: function(actionType, productData, checkoutAddToCartCallback){ 3707 var self = this; 3708 var pageViewId = window.CYBERBIZ && window.CYBERBIZ.dis && window.CYBERBIZ.dis.pageViewId; 3709 $.ajax({ 3710 method: 'POST', 3711 url: '/cart/add', 3712 headers: pageViewId ? { 'X-Cyb-Page-View-Id': pageViewId } : {}, 3713 data: { 3714 id: productData.id, 3715 quantity: productData.quantity, 3716 }, 3717 dataType: 'json', 3718 beforeSend: function() { 3719 self.loading = true; 3720 themeHelper.ajaxLoadingMsg('loading'); 3721 $('.shopcart').dropdown('hide') 3722 $('.global-cart-count').hide(); 3723 $('.global-cart-loading').show(); 3724 $('.global-cart-loading').html('<i class="fa fa-spinner fa-pulse" style="vertical-align: middle;"></i>'); 3725 }, 3726 error: function(xhr) { 3727 $('.global-cart-loading').hide(); 3728 $('.global-cart-count').show(); 3729 self.loading = false; 3730 if (xhr.status === 429) { 3731 themeHelper.ajaxLoadingMsg('hide', 0); 3732 self.closeProductModal(); 3733 window.showAddCartRateLimitModal(5); 3734 return; 3735 } 3736 themeHelper.ajaxLoadingMsg('fail', 2000); 3737 } 3738 }).done(function(data, status, request){ 3739 // product modal ç«å³è³¼è²·æé 3740 window.sendAddToCartEvent && sendAddToCartEvent({ 3741 price: productData.price, 3742 quantity: productData.quantity, 3743 id: productData.product.id, 3744 name: productData.product.title, 3745 category: productData.product.productType, 3746 brand: productData.product.vendor, 3747 qc: productData.variant.qc, 3748 variant: { 3749 id: productData.variant.id, 3750 title: productData.variant.title, 3751 sku: productData.variant.sku, 3752 price: productData.variant.price, 3753 qc: productData.variant.qc, 3754 }, 3755 position: "ååå½åºè¦çª", 3756 request, 3757 }) 3758 if (self.isQuickBuy) { 3759 if (window.liquidHelper && window.liquidHelper.language && window.liquidHelper.language.handle) { 3760 window.location = "/" + window.liquidHelper.language.handle + "/cart"; 3761 } else { 3762 window.location = "/cart"; 3763 } 3764 } else { 3765 themeHelper.ajaxLoadingMsg('success'); 3766 pullNavCart(); 3767 $('.shopcart').dropdown('show') 3768 $('.global-cart-loading').hide(); 3769 self.loading = false; 3770 } 3771 if(typeof checkoutAddToCartCallback === 'function'){ 3772 var callbackData = { 3773 id: productData.id, 3774 quantity: productData.quantity, 3775 title: productData.product ? productData.product.title : productData.title || '' 3776 }; 3777 checkoutAddToCartCallback(callbackData) 3778 } 3779 peh.emit('product:add_to_cart', [{ 3780 variantId: productData.id, 3781 quantity: productData.quantity 3782 }], self.collectionId); 3783 }).fail(function(e){ 3784 if (e.status === 429) { 3785 return; 3786 } 3787 let err_msg = e.responseJSON.err_msg; 3788 err_msg && err_msg.length > 0 ? 3789 window.msg(e.responseJSON.err_msg, 'warning').show(): 3790 window.msg("Network error, please try again.", 'warning').show(); 3791 }) 3792 }, 3793 quantityDecrease: function(cartItem, isAdded){ 3794 if (cartItem.quantity > 1) { 3795 cartItem.quantity -= 1; 3796 } else { 3797 window.msg("Quantity must be greater than 0;
3797 please select the amount to purchase.", 'warning').show(); 3798 } 3799 }, 3800 quantityIncrease: function(cartItem, isAdded){ 3801 const limitQuantity = cartItem.variant.inventoryQuantity; 3802 const limitBuy = cartItem.product.limitBuy 3803 if (limitBuy && cartItem.quantity >= limitBuy) { 3804 product_limit_buy = "Limited purchase of this product limitBuy items".replace('limitBuy', limitBuy) 3805 window.msg(product_limit_buy, 'warning').show(); 3806 return; 3807 } else if (cartItem.quantity >= liquidHelper.cartQuantityLimit) { 3808 window.msg("Quantity exceeds shopping cart limit; please remove some items and place the order again.", 'warning').show(); 3809 } else if ( cartItem.quantity < limitQuantity || limitQuantity === null || 3810 cartItem.variant.inventoryPolicy == "continue" || shouldSkipQuantityCheck) { 3811 cartItem.quantity += 1; 3812 } else { 3813 this.showInventoryMessage(limitQuantity); 3814 } 3815 }, 3816 quantityChange: function(quantity, cartItem, isAdded){ 3817 const limitBuy = cartItem.product.limitBuy 3818 var limitQuantity = cartItem.variant.inventoryQuantity; 3819 var inventoryPolicy = cartItem.variant.inventoryPolicy; 3820 if (Number.isInteger(quantity)) { 3821 if (quantity >= 1) { 3822 if (limitBuy && quantity >= limitBuy) { 3823 product_limit_buy = "Limited purchase of this product limitBuy items".replace('limitBuy', limitBuy) 3824 window.msg(product_limit_buy, 'warning').show(); 3825 } else if (quantity > liquidHelper.cartQuantityLimit) { 3826 window.msg("Quantity exceeds shopping cart limit; please remove some items and place the order again.", 'warning').show(); 3827 } else if (quantity <= limitQuantity || limitQuantity === null || inventoryPolicy == "continue" || shouldSkipQuantityCheck) { 3828 cartItem.quantity = quantity; 3829 } else { 3830 cartItem.quantity = limitQuantity; 3831 this.showInventoryMessage(limitQuantity); 3832 } 3833 } else { 3834 window.msg("Quantity must be greater than 0; please select the amount to purchase.", 'warning').show(); 3835 } 3836 } else { 3837 window.msg("Quantity input error", 'warning').show(); 3838 } 3839 }, 3840 popModal: function(productUrl, collectionId, color, isCollection, isShowDescription, isQuickBuy, variantId, checkoutAddToCartCallback, categories){ 3841 this.showProductModal = true; 3842 this.collectionId = collectionId; 3843 this.categories = categories || []; 3844 this.popProductUrl = productUrl; 3845 this.color = color || ''; // unused 3846 this.isCollection = isCollection || false; 3847 this.isShowDescription = isShowDescription != false; 3848 this.isQuickBuy = isQuickBuy || false; 3849 this.selectedVariantId = parseInt(variantId) || undefined; 3850 this.checkoutAddToCartCallback = checkoutAddToCartCallback; 3851 document.body.style.overflow = "hidden"; 3852 }, 3853 closeProductModal: function() { 3854 this.showProductModal = false; 3855 document.body.style.overflow = ""; 3856 }, 3857 showInventoryMessage: function(inventoryQuantity) { 3858 const stockMessage = "Quantity exceeds inventory stock. Remaining count".replace('count', inventoryQuantity || 0); 3859 window.msg(stockMessage, 'warning').show(); 3860 }, 3861 } 3862 }); 3863 3864 for (const componentName in window.themeHelper.productModalComponents) { 3865 newAddCartModalApp.component( 3866 componentName, 3867 window.themeHelper.productModalComponents[componentName], 3868 ); 3869 } 3870 3871 window.new_addcart_modal = newAddCartModalApp.mount(); 3872 }); 3873</script>
3873 3874 3875<!-- cyb_snippet new_addcart_modal end --> 3876
3876<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/new_cart-e958d46bfee2e69f.js' type='text/javascript'></script>
3876 3877 3878</div> 3879 3880 </div> 3881 3882 <!-- Footer --> 3883 3884 3885 3886 3887 3888 3889 3890<style> 3891 3892 3893 @media(min-width: 991px) { 3894 .display_x .left-content > div { 3895 max-width: calc(100% / 2); 3896 } 3897 } 3898</style> 3899 3900<div id="index-recommendation"></div> 3901 3902<footer id="footer" class="qk-fs--body qk-bg--footer_bg"> 3903 3904 3905 <div class="qk-container display_x"> 3906 <div class="footer_content qk-mg--0 qk-display--flex qk-justify--between"> 3907 <div class="left-content qk-flex--1"> 3908 3909 3910 <div class="link-list-container"> 3911 3912 <p class="footer_title qk-fs--title qk-text--footer_text">Menu</p> 3913 3914 <div class="item horizontal qk-text--left"> 3915 <ul class="qk-display--flex qk-flex--wrap"> 3916 3917 3918 <li class="qk-display--il_bk"> 3919 3920 <a 3921 class="qk-text--footer_text" 3922 href="/account/index" 3923 rel="noopener noreferrer" 3924 target="_blank">My Account æå¡å°å</a> 3925 3926 </li> 3927 3928 <li class="qk-display--il_bk"> 3929 3930 <a 3931 class="qk-text--footer_text" 3932 href="/pages/éæè²¨æ¿ç" 3933 rel="noopener noreferrer" 3934 target="_blank">Return Policy éæè²¨æ¿ç</a> 3935 3936 </li> 3937 3938 <li class="qk-display--il_bk"> 3939 3940 <a 3941 class="qk-text--footer_text" 3942 href="/pages/terms" 3943 rel="noopener noreferrer" 3944 target="_blank">Terms of Service æåæ¢æ¬¾</a> 3945 3946 </li> 3947 3948 <li class="qk-display--il_bk"> 3949 3950 <a 3951 class="qk-text--footer_text" 3952 href="/pages/privacy" 3953 rel="noopener noreferrer" 3954 target="_blank">Privacy Policy é±ç§æ¿ç</a> 3955 3956 </li> 3957 3958 <li class="qk-display--il_bk"> 3959 3960 <a 3961 class="qk-text--footer_text" 3962 href="/pages/ééæ¿ç" 3963 rel="noopener noreferrer" 3964 target="_blank">Shipping Policy ééæ¿ç</a> 3965 3966 </li> 3967 3968 3969 </ul> 3970 </div> 3971 </div> 3972 3973 3974 3975 <div id="1675419928503_2" class="rich-text-editor-container qk-text--footer_text item qk-flex--1"> 3976 3977 <p class="footer_title qk-fs--title rich-text-editor-title"></p> 3978 3979 <div class="rich-text-content-container"> 3980 <p>馿¾åéæéå ¬å¸ </p> 3981<p>BRUME INTERNATIONAL CO.,LTD</p> 3982<p>çµ±ä¸ç·¨èï¼83118482</p> 3983<p></p> 3984<p>æ¾å±±éå¸ï¼</p> 3985<p>å°ç£å°å叿¾å±±åå京æ±è·¯äºæ®µ250å··2å¼39è</p> 3986<p>è¯çµ¡ä¿¡ç®±ï¼[email protected]</p> 3987<p>客ææéï¼13:00-21:00</p> 3988 3989 </div> 3990 </div> 3991 3992 3993 </div> 3994 <div class="right-content qk-display--flex qk-flex--column"> 3995 3996 <div class="media qk-display--il"> 3997 <div class="item social_media qk-h--auto qk-float--l"> 3998 <ul> 3999 4000 <li class="qk-display--il_bk"> 4001 <a target="_blank" rel="noopener noreferrer" href="https://www.facebook.com/labrumetaipei?mibextid=LQQJ4d"> 4002 <svg 4003 class="facebook-svg" 4004 xmlns="http://www.w3.org/2000/svg" 4005 width="40" 4006 height="40"
4007 viewBox="0 0 40 40"> 4008 <path class="qk-svg--footer_text" d="M40 20.1208C40 30.1027 32.6767 38.3778 23.1167 39.8795V25.9409H27.765L28.65 20.1742H23.1167V16.4324C23.1167 14.8541 23.89 13.3174 26.3667 13.3174H28.8817V8.4073C28.8817 8.4073 26.5983 8.01729 24.4167 8.01729C19.86 8.01729 16.8833 10.779 16.8833 15.7774V20.1725H11.8183V25.9393H16.8833V39.8779C7.325 38.3745 0 30.101 0 20.1208C0 9.07564 8.955 0.120483 20 0.120483C31.045 0.120483 40 9.07398 40 20.1208Z" /> 4009 </svg> 4010 </a> 4011 </li> 4012 4013 4014 <li class="qk-display--il_bk"> 4015 <a target="_blank" rel="noopener noreferrer" href="https://instagram.com/brume.taipei?igshid=YmMyMTA2M2Y="> 4016 <svg 4017 class="instagram-svg" 4018 xmlns="http://www.w3.org/2000/svg" 4019 width="40" 4020 height="40" 4021 viewBox="0 0 40 40"> 4022 <rect class="qk-svg--footer_text" width="40" height="40" rx="20" /> 4023 <path class="qk-svg--footer_bg" d="M15.0302 8.08393C13.7534 8.14417 12.8814 8.34793 12.1192 8.64745C11.3303 8.95489 10.6616 9.36745 9.99636 10.0351C9.33107 10.7028 8.92139 11.3719 8.61611 12.162C8.32066 12.9259 8.1205 13.7986 8.0641 15.0761C8.0077 16.3536 7.99522 16.7643 8.00146 20.023C8.0077 23.2817 8.0221 23.6902 8.08402 24.9704C8.14498 26.2469 8.34802 27.1186 8.64755 27.8811C8.95547 28.67 9.36755 29.3384 10.0355 30.0039C10.7034 30.6694
402311.3721 31.0782 12.1641 31.3839C12.9273 31.6789 13.8002 31.88 15.0775 31.9359C16.3547 31.9918 16.7659 32.0048 20.0237 31.9986C23.2815 31.9923 23.6916 31.9779 24.9716 31.9172C26.2515 31.8565 27.1186 31.652 27.8813 31.3539C28.6702 31.0453 29.3391 30.6339 30.0042 29.9658C30.6692 29.2976 31.0787 28.628 31.3837 27.8374C31.6794 27.0742 31.8803 26.2013 31.9357 24.925C31.9916 23.6441 32.0048 23.2352 31.9986 19.9769C31.9923 16.7187 31.9777 16.3102 31.917 15.0305C31.8563 13.7508 31.653 12.8818 31.3537 12.1188C31.0453 11.3299 30.6337 10.662 29.966 9.99601C29.2983 9.33001 28.6282 8.92081 27.8379 8.61649C27.0742 8.32105 26.2018 8.11969 24.9245 8.06449C23.6472 8.00929 23.2361 7.99513 19.9771 8.00137C16.7181 8.00761 16.3101 8.02153 15.0302 8.08393ZM15.1703 29.7771C14.0003 29.7262 13.365 29.5318 12.9417 29.3691C12.381 29.1531 11.9817 28.892 11.5597 28.4742C11.1378 28.0563 10.8786 27.6555 10.6597 27.0961C10.4953 26.6727 10.2973 26.0381 10.2426 24.8681C10.1831 23.6036 10.1706 23.2239 10.1636 20.0201C10.1567 16.8164 10.1689 16.4372 10.2244 15.1721C10.2743 14.0031 10.4699 13.3671 10.6324 12.9439C10.8484 12.3826 11.1085 11.9839 11.5273 11.5623C11.9461 11.1406 12.3457 10.8809 12.9057 10.662C13.3286 10.4969 13.9631 10.3006 15.1327 10.2449C16.3982 10.1849 16.7774 10.1729 19.9807 10.1659C23.184 10.159 23.5642 10.171 24.8302 10.2267C25.9992 10.2775 26.6355 10.4712 27.0581 10.6347C27.619 10.8507 28.0181 11.1101 28.4398 11.5296C28.8615 11.9491 29.1214 12.3473 29.3403 12.9084C29.5057 13.3301 29.702 13.9644 29.7572 15.1347C29.8174 16.4002 29.8311 16.7796 29.8369 19.9827C29.8426 23.1857 29.8314 23.5661 29.7759 24.8307C29.7248 26.0007 29.5309 26.6362 29.3679 27.0601C29.1519 27.6205 28.8915 28.0201 28.4725 28.4415C28.0534 28.863 27.6543 29.1226 27.0941 29.3415C26.6717 29.5064 26.0364 29.7032 24.8679 29.7589C23.6023 29.8184 23.2231 29.8309 20.0186 29.8378C16.8141 29.8448 16.4361 29.8318 15.1706 29.7771M24.9531 13.5864C24.9535 13.8713 25.0385 14.1495 25.1971 14.3861C25.3558 14.6226 25.581 14.8068 25.8443 14.9154C26.1077 15.0239 26.3973 15.0519 26.6765 14.9959C26.9558 14.9398 27.2122 14.8022 27.4132 14.6004C27.6142 14.3986 27.7509 14.1418 27.806 13.8623C27.861 13.5828 27.8319 13.2933 27.7224 13.0304C27.6129 12.7675 27.4279 12.5429 27.1908 12.3851C26.9536 12.2274 26.675 12.1435 26.3902 12.144C26.0084 12.1448 25.6425 12.2972 25.373 12.5677C25.1035 12.8381 24.9524 13.2046 24.9531 13.5864ZM13.8386 20.012C13.8453 23.4152 16.6091 26.1677 20.0117 26.1613C23.4142 26.1548 26.1687 23.3912 26.1622 19.988C26.1557 16.5848 23.3911 13.8315 19.9881 13.8382C16.5851 13.8449 13.8321 16.6092 13.8386 20.012ZM16 20.0076C15.9985 19.2165 16.2315 18.4427 16.6698 17.784C17.108 17.1253 17.7317 16.6114 18.462 16.3072C19.1924 16.003 19.9965 15.9222 20.7727 16.075C21.549 16.2278 22.2625 16.6073 22.823 17.1656C23.3836 17.724 23.766 18.436 23.9218 19.2116C24.0777 19.9872 24.0001 20.7917 23.6988 21.5232C23.3975 22.2547 22.886 22.8804 22.2291 23.3213C21.5721 23.7621 20.7992 23.9983 20.0081 23.9998C19.4827 24.0009 18.9623 23.8985 18.4766 23.6985C17.9909 23.4985 17.5493 23.2047 17.1771 22.834C16.8049 22.4632 16.5094 22.0228 16.3074 21.5379C16.1054 21.0529 16.001 20.533 16 20.0076Z" /> 4024 </svg> 4025 </a> 4026 </li> 4027 4028 4029 <li class="qk-display--il_bk"> 4030 <a target="_blank" rel="noopener noreferrer" href="https://line.me/R/ti/p/@901hnpwy"> 4031 <svg 4032 class="line-svg" 4033 xmlns="http://www.w3.org/2000/svg" 4034 width="40" 4035 height="40"
4036 viewBox="0 0 40 40"> 4037 <rect class="qk-svg--footer_text" width="40" height="40" rx="20" /> 4038 <path class="qk-svg--footer_bg" d="M32.5946 18.2214C32.5946 12.5857 26.9449 8 20.0002 8C13.0555 8 7.40576 12.5857 7.40576 18.2214C7.40576 23.2743 11.8873 27.5053 17.9396 28.3048C18.3506 28.392 18.908 28.575 19.0487 28.9269C19.1754 29.245 19.1303 29.7433 19.0881 30.0642C19.0881 30.0642 18.9417 30.9537 18.908 31.1423C18.8517 31.4604 18.6546 32.3866 20.0002 31.8207C21.343 31.2549 27.2545 27.5503 29.895 24.5101C31.7191 22.5058 32.5946 20.4762 32.5946 18.2214Z" /> 4039 <path class="qk-svg--footer_text" d="M17.4413 15.4965H16.5574C16.4223 15.4965 16.3125 15.6062 16.3125 15.7414V21.2279C16.3125 21.363 16.4223 21.4728 16.5574 21.4728H17.4413C17.5764 21.4728 17.6862 21.363 17.6862 21.2279V15.7414C17.6862 15.6062 17.5764 15.4965 17.4413 15.4965Z" /> 4040 <path class="qk-svg--footer_text" d="M23.5219 15.4965H22.638C22.5028 15.4965 22.3931 15.6063 22.3931 15.7414V19.0012L19.8792 15.6063C19.8736 15.5978 19.868 15.5894 19.8595 15.5809C19.8595 15.5809 19.8595 15.5809 19.8595 15.5781C19.8539 15.5725 19.8483 15.5668 19.8455 15.564C19.8426 15.564 19.8426 15.5612 19.8398 15.5584C19.8342 15.5556 19.8314 15.55 19.8258 15.5471C19.8229 15.5443 19.8229 15.5443 19.8201 15.5415C19.8173 15.5387 19.8117 15.5359 19.8089 15.5331C19.8061 15.5303 19.8032 15.5303 19.8004 15.5274C19.7948 15.5246 19.792 15.5218 19.7863 15.519C19.7835 15.519 19.7807 15.5162 19.7779 15.5162C19.7723 15.5134 19.7695 15.5105 19.7638 15.5105C19.761 15.5105 19.7582 15.5077 19.7554 15.5077C19.7498 15.5049 19.7469 15.5049 19.7413 15.5021C19.7385 15.5021 19.7357 15.5021 19.7329 15.4993C19.7272 15.4993 19.7244 15.4965 19.7188 15.4965C19.716 15.4965 19.7132 15.4965 19.7075 15.4937C19.7019 15.4937 19.6991 15.4937 19.6935 15.4908C19.6878 15.4908 19.685 15.4908 19.6822 15.4908C19.6794 15.4908 19.6766 15.4908 19.6737 15.4908H18.7898C18.6547 15.4908 18.5449 15.6006 18.5449 15.7358V21.2222C18.5449 21.3574 18.6547 21.4671 18.7898 21.4671H19.6737C19.8089 21.4671 19.9187 21.3574 19.9187 21.2222V17.9709L22.4353 21.3714C22.4522 21.3968 22.4747 21.4165 22.4972 21.4305C22.4972 21.4305 22.5 21.4305 22.5 21.4334C22.5057 21.4362 22.5113 21.439 22.5141 21.4418C22.5169 21.4418 22.5197 21.4446 22.5226 21.4446C22.5254 21.4474 22.531 21.4474 22.5338 21.4503C22.5366 21.4531 22.5423 21.4531 22.5451 21.4559C22.5479 21.4559 22.5507 21.4587 22.5535 21.4587C22.5591 21.4615 22.5648 21.4615 22.5704 21.4643H22.5732C22.5929 21.47 22.6154 21.4728 22.6352 21.4728H23.5191C23.6542 21.4728 23.764 21.363 23.764 21.2279V15.7414C23.7668 15.6063 23.657 15.4965 23.5219 15.4965Z" /> 4041 <path class="qk-svg--footer_text" d="M15.313 20.099H12.9118V15.7414C12.9118 15.6062 12.802 15.4965 12.6669 15.4965H11.783C11.6479 15.4965 11.5381 15.6062 11.5381 15.7414V21.2279C11.5381 21.2926 11.5634 21.3545 11.6056 21.3968L11.6085 21.3996L11.6113 21.4024C11.6563 21.4446 11.7154 21.4699 11.7802 21.4699H15.3102C15.4453 21.4699 15.5551 21.3602 15.5551 21.225V20.3411C15.5579 20.2116 15.4482 20.099 15.313 20.099Z" /> 4042 <path class="qk-svg--footer_text" d="M28.4001 16.8702C28.5352 16.8702 28.645 16.7604 28.645 16.6253V15.7414C28.645 15.6062 28.5352 15.4965 28.4001 15.4965H24.87C24.8053 15.4965 24.7433 15.5218 24.7011 15.5668L24.6983 15.5697C24.6983 15.5725 24.6955 15.5725 24.6955 15.5753C24.6533 15.6203 24.6279 15.6794 24.6279 15.7442V21.2307C24.6279 21.2954 24.6533 21.3573 24.6955 21.3996L24.6983 21.4024L24.7011 21.4052C24.7462 21.4474 24.8053 21.4756 24.87 21.4756H28.4001C28.5352 21.4756 28.645 21.3658 28.645 21.2307V20.3467C28.645 20.2116 28.5352 20.1018 28.4001 20.1018H25.9988V19.1757H28.4001C28.5352 19.1757 28.645 19.0659 28.645 18.9308V18.0469C28.645 17.9118 28.5352 17.802 28.4001 17.802H25.9988V16.8758H28.4001V16.8702Z" /> 4043 </svg> 4044 </a> 4045 </li> 4046 4047 4048 </ul> 4049 </div> 4050 </div> 4051 </div> 4052 </div> 4053 </div> 4054 4055 <div class="copyright qk-text--footer_text qk-bd--footer_text qk-text--left qk-bd_t--default"> 4056 <div class="qk-container container qk-fw--500">
4057 <span>Copyright ©</span> 4058 <a class="qk-text--link" href="/"> 4059 <span>brumetaipei</span> 4060 </a> 4061 <span>All Rights Reserved.</span> 4062 <span>Designed by 4063 </span> 4064 <a 4065 class="qk-text--link" 4066 href="https://www.cyberbiz.io?utm_source=poweredbycyberbiz" 4067 target="_blank" 4068 rel="noopener noreferrer" 4069 title="Designed by CYBERBIZ">CYBERBIZ</a>. 4070 </div> 4071 </div> 4072 4073</footer>
4074<script> 4075 $(document).ready(function() { 4076 let isDynamicLoading = false; 4077 4078 let menusData = { 4079 4080 4081 "footer": { 4082 4083 "type": "items", 4084 "data": [ 4085 4086 4087 4088 { 4089 "title": "My Account æå¡å°å", 4090 "url": "/account/index", 4091 "item_type": "http" 4092 }, 4093 4094 { 4095 "title": "Return Policy éæè²¨æ¿ç", 4096 "url": "/pages/éæè²¨æ¿ç", 4097 "item_type": "page" 4098 }, 4099 4100 { 4101 "title": "Terms of Service æåæ¢æ¬¾", 4102 "url": "/pages/terms", 4103 "item_type": "terms" 4104 }, 4105 4106 { 4107 "title": "Privacy Policy é±ç§æ¿ç", 4108 "url": "/pages/privacy", 4109 "item_type": "privacy" 4110 }, 4111 4112 { 4113 "title": "Shipping Policy ééæ¿ç", 4114 "url": "/pages/ééæ¿ç", 4115 "item_type": "page" 4116 } 4117 4118 4119 ] 4120 4121 }, 4122 4123 4124 4125 4126 }; 4127 4128 if (isDynamicLoading) { 4129 window.DynamicLoading.setupComponent({ 4130 sectionId: '#footer', 4131 callbackData:{ 4132 section: {"type":"footer","visible":true,"settings":{"footer_link":"footer","display_facebook":true,"shop_facebook":"https://www.facebook.com/labrumetaipei?mibextid=LQQJ4d","display_instagram":true,"shop_instagram":"https://instagram.com/brume.taipei?igshid=YmMyMTA2M2Y=","display_line":true,"shop_line":"https://line.me/R/ti/p/@901hnpwy","display_youtube":false,"shop_youtube":"https://www.youtube.com/","footer_link_arrangement":"display_x","display_facebook_fan_block":true},"block_order":["default_link_list_2","default_contact_info","1675419928503_2"],"blocks":{"default_link_list":{"type":"link_list_setting","custom_name":"é¸å®","thumbnail":"list","draggable":true,"visible":true,"settings":{"dict_link_list_block_title":"About Us","footer_link":"footer"}},"default_contact_info":{"type":"contact_info_setting","custom_name":"è¯çµ¡è³è¨","thumbnail":"contactInfo","draggable":true,"visible":false,"settings":{"dict_contact_info_block_title":"Informations","display_phone":false,"dict_phone_number":"09-87654321","display_fax_number":false,"dict_shop_fax_number":"02-22345678","display_shop_email":"true","dict_shop_email":"[email protected]","display_shop_address":true,"dict_shop_address":"Waterloo, IN 46793, United States","display_office_time":true,"dict_shop_office_time":"10:30am - 6:30pm","dict_tax_id":""}},"default_link_list_2":{"type":"link_list_setting","custom_name":"é¸å®","visible":true,"settings":{"dict_link_list_block_title":"Menu","footer_link":"footer"}},"1675419928503_2":{"type":"rich_text_editor_setting","custom_name":"èªè¨æå","visible":true,"settings":{"dict_rich_text_title":"","dict_rich_text_content":"\u003cp\u003e馿¾åéæéå ¬å¸\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eBRUME INTERNATIONAL CO.,LTD\u003c/p\u003e\n\u003cp\u003eçµ±ä¸ç·¨èï¼83118482\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n\u003cp\u003eæ¾å±±éå¸ï¼\u003c/p\u003e\n\u003cp\u003eå°ç£å°å叿¾å±±åå京æ±è·¯äºæ®µ250å··2å¼39è\u003c/p\u003e\n\u003cp\u003eè¯çµ¡ä¿¡ç®±ï¼[email protected]\u003c/p\u003e\n\u003cp\u003e客ææéï¼13:00-21:00\u003c/p\u003e\n"}}},"custom_name":"é è ³"}, 4133 shop: { 4134 name: 'brumetaipei', 4135 cyberbiz_link: 'https://www.cyberbiz.io?utm_source=poweredbycyberbiz', 4136 facebook_fan_page: '', 4137 }, 4138 menus: menusData, 4139 is_display_facebook_fan_block: false 4140 }, 4141 entryName:'renderFooterSection', 4142 source:'//cdn-general.cybassets.com/frontend/shop/footerSection-e958d46bfee2e69f.js', 4143 }); 4144 } 4145 }); 4146</script>
4146 4147 4148<!-- cyb_snippet _tracking_code start --> 4149
4149<script> 4150 window.fbAsyncInit = function() { 4151 FB.init({ 4152 appId : '1640387676574286', 4153 xfbml : true, 4154 version : 'v24.0', 4155 }); 4156 }; 4157 (function(d, s, id){ 4158 var js, fjs = d.getElementsByTagName(s)[0]; 4159 if (d.getElementById(id)) {return;} 4160 js = d.createElement(s); 4161 js.id = id; 4162 js.src = 'https://connect.facebook.net/zh_TW/sdk.js'; 4163 fjs.parentNode.insertBefore(js, fjs); 4164 }(document, 'script', 'facebook-jssdk')); 4165 </script>
4165 4166 4167
4168<script> 4169 // for scupio 4170 if (document.querySelector("meta[name=\"scupio_mid\"]")) { 4171 mid = document.querySelector("meta[name=\"scupio_mid\"]").content; 4172 } else { 4173 mid = ""; 4174 } 4175 if (!window.is_scupio_sent && mid) { 4176 window._bwtm = window._bwtm || [] 4177 window._bwtm.push({ 4178 "mid": mid, 4179 "uid": "" 4180 }); 4181 } 4182</script>
4182 4183 4184<!-- cyb_snippet _tracking_code end --> 4185
4186<script> 4187 $(document).ready(function(){ 4188 if(window.location.pathname != '' && window.location.pathname != '/' ){ 4189 document.getElementById('index-recommendation').style.display = 'none' 4190 } 4191 }); 4192</script>
4192 4193 4194 4195 4196 <!-- Fast-Events --> 4197 <!-- cyb_snippet fast_events start --> 4198 4199
4200<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/fast_events-e958d46bfee2e69f.js' type='text/javascript'></script>
4200 4201<link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/fast_events-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' /> 4202 4203<!-- cyb_snippet fast_events end --> 4204 4205 <div class="bottom-right qk-pos--fixed"> 4206 <!-- gototop --> 4207 <div id="gototop" class="qk-display--none qk-text--center"> 4208 <a href="javascript:void(0)" class="qk-circle qk-circle--lg qk-pos--relative qk-text--center"> 4209 <i class="fas fa-chevron-up"></i> 4210 </a> 4211 </div> 4212 4213 <!-- popup --> 4214 4215 <link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/popup-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' /> 4216 4217 4218 4219 4220 4221 4222<div id="popup-wrapper" class="qk-display--none"></div> 4223 4224<template id="popup-template"> 4225 <div 4226 :class="status" 4227 v-if="hasContent" 4228 id="popup-section" 4229 > 4230 <transition name="backdrop"> 4231 <div 4232 v-if="shouldShowPopup" 4233 @click.capture="minifyPopup" 4234 id="popup-backdrop" 4235 class="qk-w--100vw qk-h--100vh qk-pos--fixed qk-t--0 qk-l--0 qk-tst" 4236 > 4237 </div> 4238 </transition> 4239 <transition name="onShow"> 4240 <div 4241 @click.self="showPopup" 4242 @transitionstart="updateGameStatus('start', this)" 4243 @transitionend="updateGameStatus('end', this)" 4244 class="popup-content qk-display--flex qk-align--center qk-tst qk-tst_dur--30 qk-tst_timing--ease_o" 4245 > 4246 <div 4247 v-for="block in blocks" 4248 :key="block.id" 4249 :class="[block.type, minifiedBlockClasses, block.settings.icon_size]" 4250 class="block qk-tst qk-tst_dur--30 qk-tst_timing--ease_o qk-of--auto" 4251 > 4252 <div v-if="block.type === 'image'" class="qk-pos--rel"> 4253 <img 4254 v-show="!shouldShowPopup" 4255 :src="block.settings.dict_icon_image_url" 4256 class="qk-tst qk-tst_dur--30 qk-tst_timing--ease_o" 4257 alt="popup button" 4258 > 4259 <a 4260 v-show="shouldShowPopup" 4261 :href="block.settings.dict_link" 4262 :target="block.settings.target" 4263 :rel="block.settings.rel" 4264 class="qk-display--flex qk-align--center" 4265 @click="linkClicked" 4266 > 4267 <picture> 4268 <source :srcset="block.settings.dict_mobile_image_url" media="(max-width: 576px)"> 4269 <source :srcset="block.settings.dict_tablet_image_url" media="(max-width: 992px)"> 4270 <img 4271 :src="block.settings.dict_image_url" 4272 class="qk-tst qk-tst_dur--30 qk-tst_timing--ease_o" 4273 alt="popup picture" 4274 /> 4275 </picture> 4276 </a> 4277 </div> 4278 <div v-if="block.type === 'video'"> 4279 <iframe 4280 :src="block.settings.dict_video_link" 4281 frameborder="0" 4282 class="qk-center--y qk-w--100 qk-h--100" 4283 ></iframe> 4284 </div> 4285 <div v-if="block.type === 'game'"> 4286 <div v-show="gameStatus === 'show'" :class="{ 'show-game': gameStatus === 'show' }"> 4287 <iframe 4288 class="cb-game-iframe iframe-loading" 4289 :src="getGameIframeSrc(block)" 4290 style="border: none;" 4291 > 4292 Loading 4293 </iframe> 4294 </div> 4295 <div v-show="gameStatus === 'minified'"> 4296 <img 4297 src="//cdn-general.cybassets.com/game_assets/game_minified_new.png" 4298 class="qk-h--100 qk-w--100" 4299 alt="game minified icon" 4300 /> 4301 </div> 4302 </div> 4303 <div 4304 v-if="block.type === 'carousel'" 4305 :id="`popup-carousel-${block.id}`" 4306 > 4307 </div> 4308 </div> 4309 </div> 4310 </transition> 4311 <transition name="backdrop"> 4312 <div 4313 v-if="shouldShowPopup" 4314 @click.capture="minifyPopup" 4315 class="minify-popup qk-circle qk-circle--md qk-text--black qk-bg--white qk-bd--default qk-bd--border qk-text--center qk-cursor--pointer qk-pos--fixed" 4316 > 4317 </div> 4318 </transition> 4319 </div> 4320</template> 4321
4322<script> 4323 $(document).ready(function() { 4324 const CDN_HOST = '//cdn-general.cybassets.com'; 4325 const section = {"type":"popup","visible":true,"blocks":{"popup_block_1":{"type":"image","visible":true,"settings":{"dict_image_url":"","icon_size":"small","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzA3MTE5OTczX0Z1bGxTaXplUmVuZGVyX1ZTQ08uanBlZy5qcGVnIl1d.jpeg?sha=4da3969b4b8d3cce","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzA3MTIwMDQ4X0Z1bGxTaXplUmVuZGVyX1ZTQ08tMi5qcGVnLmpwZWciXV0.jpeg?sha=93f1148cf7ef0e88","dict_link":"/collections/æ°æ¥åªæ ä»»2ä»¶10off"},"custom_name":"åç"},"1714638990991_0":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzI2MTM0MzEzX0I2RUUwRjNBLTZFQzUtNDRBNi1CQkNDLUM2OUM4NkMyMUM0MC5qcGcuanBlZyJdXQ.jpeg?sha=10d667e6dfbe4098","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzI2MTM0MzEzX0I2RUUwRjNBLTZFQzUtNDRBNi1CQkNDLUM2OUM4NkMyMUM0MC5qcGcuanBlZyJdXQ.jpeg?sha=10d667e6dfbe4098","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzI2MTM0MzEzX0I2RUUwRjNBLTZFQzUtNDRBNi1CQkNDLUM2OUM4NkMyMUM0MC5qcGcuanBlZyJdXQ.jpeg?sha=10d667e6dfbe4098","dict_icon_image_url":"","icon_size":"small","dict_link":"/collections/dorsay-parfums"}},"1730702544373_0":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_icon_image_url":"","icon_size":"middle","dict_link":""}}},"block_order":["1730702544373_0"],"settings":{},"custom_name":"å½çªå»£å"}; 4326 var popupSection = Vue.createApp({ 4327 template: '#popup-template', 4328 delimiters: ['${', '}'], 4329 data() { 4330 const isOmniauthPage = ['omniauth_terms_agreement', 'omniauth_mobile/'] 4331 .some(path => location.pathname.includes(path)); 4332 return { 4333 status: 'minified', 4334 gameStatus: 'show', 4335 blocks: isOmniauthPage 4336 ? [] 4337 : section.block_order && section.block_order.reduce( 4338 function(acc, blockId) { 4339 const block = section.blocks[blockId]; 4340 if (block && block.visible) { 4341 acc.push({ 4342 ...block, 4343 id: blockId, 4344 }); 4345 } 4346 return acc; 4347 }, 4348 [], 4349 ), 4350 hasAddedGameScript: false, 4351 }; 4352 }, 4353 computed: { 4354 hasContent: function() { 4355 return !!(this.blocks && this.blocks.length > 0); 4356 }, 4357 minifiedBlockClasses: function() { 4358 return this.status === 'minified' ? 'qk-pointer--none qk-unselectable' : ''; 4359 }, 4360 shouldShowPopup: function() { 4361 return this.status === 'show'; 4362 } 4363 }, 4364 methods: { 4365 unhidePopup: function(storedStatus) { 4366 this.status = storedStatus; 4367 $('#popup-wrapper').removeClass('qk-display--none'); 4368 }, 4369 showPopup: function() { 4370 if (this.status !== 'show') { 4371 this.status = 'show'; 4372 this.saveStatus(this.status); 4373 } 4374 }, 4375 minifyPopup: function() { 4376 this.status = 'minified'; 4377 this.saveStatus('minified'); 4378 }, 4379 loadStatus: function() { 4380 return JSON.parse(localStorage.getItem('popupStatus')); 4381 }, 4382 saveStatus: function(status) { 4383 if (status) { 4384 localStorage.setItem('popupStatus', JSON.stringify({ 4385 status: status, 4386 setTime: new Date().getTime(), 4387 })); 4388 } 4389 }, 4390 linkClicked: function() { 4391 this.saveStatus('minified'); 4392 }, 4393 parseVideoLink: function(settings) { 4394 settings.dict_video_link = themeHelper.parseYtUrl(settings.dict_video_link); 4395 }, 4396 setupImageSrc: function (settings) {
4397 settings.dict_image_url = this.addCdnHost(settings.dict_image_url); 4398 if (settings.dict_tablet_image_url) { 4399 settings.dict_tablet_image_url = this.addCdnHost(settings.dict_tablet_image_url); 4400 } 4401 if (settings.dict_mobile_image_url) { 4402 settings.dict_mobile_image_url = this.addCdnHost(settings.dict_mobile_image_url); 4403 } 4404 settings.dict_icon_image_url = this.addCdnHost(settings.dict_icon_image_url) || settings.dict_image_url; 4405 }, 4406 addCdnHost: function(url) { 4407 if (!url) { 4408 return url; // only add cdn host if url is not empty 4409 } 4410 4411 try { 4412 new URL(url); 4413 return url; // already a valid url, cdn host not needed 4414 } catch { 4415 return `${CDN_HOST}${url}`; 4416 } 4417 }, 4418 initStatus: function() { 4419 let newStatus = 'show'; 4420 const popupStatus = this.loadStatus(); 4421 const currentTime = new Date().getTime(); 4422 const oneDay = 1000 * 60 * 60 * 24; 4423 const hasStoredStatus = popupStatus && currentTime - popupStatus.setTime < oneDay; 4424 const redirectedByGameLogin = !this.hasRedirectUrl() && this.redirectedByGameLogin(); 4425 const isLoggingIn = this.isLoggingIn(); 4426 const isCartPage = window.location.pathname.split('/').includes('carts'); 4427 4428 if (hasStoredStatus && !redirectedByGameLogin) { 4429 newStatus = popupStatus.status; 4430 } 4431 4432 if (isLoggingIn) { 4433 newStatus = 'minified'; 4434 } else { 4435 localStorage.removeItem('redirectedByPopup'); 4436 } 4437 4438 setTimeout(() => { 4439 this.status = newStatus; 4440 this.gameStatus = newStatus; 4441 this.saveStatus(newStatus); 4442 if(!isCartPage){ 4443 this.unhidePopup(newStatus); 4444 } 4445 }, 1000); 4446 }, 4447 initBlocks: function() { 4448 if (this.hasContent) { 4449 this.blocks.forEach(block => { 4450 switch(block.type) { 4451 case 'image': 4452 this.setupImageSrc(block.settings); 4453 4454 const isOpenInNewTab = block.settings.link_open_in_new_tab; 4455 if (isOpenInNewTab) { 4456 block.settings.target = '_blank'; 4457 block.settings.rel = 'noopener noreferrer'; 4458 } 4459 4460 break; 4461 case 'video': 4462 this.parseVideoLink(block.settings); 4463 break; 4464 } 4465 }) 4466 } 4467 }, 4468 getGameIframeSrc: function (block) { 4469 return `/games/${block.settings.dict_game_handle}` 4470 }, 4471 updateGameStatus: function(type, element) { 4472 if ( 4473 (type === 'start' && this.status === 'minified') 4474 || (type === 'end' && this.status === 'show') 4475 ) { 4476 this.gameStatus = this.status; 4477 } 4478 }, 4479 setupGameRedirects: function() { 4480 window.addEventListener('pagehide', () => { 4481 const isGameActive = document.body.getElementsByClassName('show-game').length; 4482 if (isGameActive) { 4483 localStorage.setItem('redirectedByPopup', 'true'); 4484 this.saveStatus('minified'); 4485 } 4486 }); 4487 }, 4488 hasRedirectUrl: function() { 4489 return (new URLSearchParams(location.search)).has('redirect_url'); 4490 }, 4491 redirectedByGameLogin: function() { 4492 return localStorage.getItem('redirectedByPopup'); 4493 }, 4494 isLoggingIn: function() { 4495 const loginRelatedPathnames = [ 4496 'account/signup', 4497 'account/login', 4498 'account/customer/password/new', 4499 'pages/terms' 4500 ]; 4501 return loginRelatedPathnames.some(path => location.pathname.includes(path)); 4502 } 4503 }, 4504 created: function() { 4505 this.initStatus(); 4506 this.initBlocks(); 4507 this.setupGameRedirects(); 4508 }, 4509 mounted: function() { 4510 this.blocks.forEach((block) => { 4511 if (block.type === 'carousel' && block.settings.dict_c
4511arousel) { 4512 renderCarousel(`#popup-carousel-${block.id}`, { 4513 title: block.settings.dict_carousel, 4514 CDN_HOST, 4515 onLinkClick: () => this.linkClicked(), 4516 }); 4517 } 4518 }); 4519 }, 4520 }); 4521 popupSection.mount('#popup-wrapper'); 4522 }); 4523</script>
4523 4524 4525 4526 4527 </div> 4528 4529 <!-- ajaxloading --> 4530 <div id="ajaxloading" class="qk-display--none qk-h--100vh qk-w--100vw qk-l--0 qk-t--0 qk-pos--fixed"> 4531 <div class="ajaxbody qk-pos--abs qk-l--50 qk-t--50 qk-text--center"> 4532 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="73.4" height="73.4" viewBox="0 0 73.4 73.4"> 4533 <circle class="circle" fill="none" stroke="#898989" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="36.7" cy="36.7" r="35.2"/> 4534 <polyline class="success_path" fill="none" stroke="#898989" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="23.7,36.8 32.4,45.4 49.7,28 "/> 4535 <path class="success_icon" fill="#898989" d="M32.5,46.9c-0.4,0-0.8-0.2-1.1-0.4l-8.6-8.6c-0.6-0.6-0.6-1.5,0-2.1s1.5-0.6,2.1,0l7.5,7.5L48.6,27c0.6-0.6,1.5-0.6,2.1,0s0.6,1.5,0,2.1L33.5,46.5C33.2,46.7,32.9,46.9,32.5,46.9L32.5,46.9z"/> 4536 <line class="fail_path" fill="none" stroke="#898989" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="26.6" y1="26.6" x2="46.8" y2="46.8"/> 4537 <line class="fail_path" fill="none" stroke="#898989" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="46.8" y1="26.6" x2="26.6" y2="46.8"/> 4538 <path class="fail_icon" fill="#898989" d="M38.7,36.7l9.1-9.1c0.6-0.6,0.6-1.5,0-2.1s-1.5-0.6-2.1,0l-9.1,9.1l-9.1-9.1c-0.6-0.6-1.5-0.6-2.1,0s-0.6,1.5,0,2.1l9.1,9.1l-9.1,9.1c-0.6,0.6-0.6,1.5,0,2.1c0.3,0.3,0.7,0.4,1.1,0.4s0.8-0.1,1.1-0.4l9.1-9.1l9.1,9.1c0.3,0.3,0.7,0.4,1.1,0.4s0.8-0.1,1.1-0.4c0.6-0.6,0.6-1.5,0-2.1L38.7,36.7z"/> 4539 </svg> 4540 <div class="success_msg title qk-display--none qk-pos--abs qk-l--0 qk-w--100 qk-text--center">Added to Cart</div> 4541 <div class="success_update_msg title qk-display--none qk-pos--abs qk-l--0 qk-w--100 qk-text--center">Shopping Cart Updated</div> 4542 <div class="fail_msg title qk-display--none qk-pos--abs qk-l--0 qk-w--100 qk-text--center">Network error, please try again!</div> 4543 </div> 4544 </div> 4545
4545<script src="//cdn-general.cybassets.com/assets/referral-code-trace-5fcbbe026a61c36b5f09a1615a1c168688205205d9d3e7ee854181a66b64a6ed.js"></script>
4545</body> 4546 4547
4547<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/sub_vendor-e958d46bfee2e69f.js' type='text/javascript'></script>
4547 4548
4548<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/theme_helper-e958d46bfee2e69f.js' type='text/javascript'></script>
4548 4549 4550 <!-- theme assets --> 4551
4551<script src='//cdn-general.cybassets.com/s/files/23806/theme/90834/assets/js/1675162998_5ba1a53f_main.js?1675162998' type='text/javascript'></script>
4551 4552
4552<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/theme-e958d46bfee2e69f.js' type='text/javascript'></script>
4552 4553 4554 <!-- for cache --> 4555
4555<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/cacheable-e958d46bfee2e69f.js' type='text/javascript'></script>
4555 4556</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.