UrCustomHUB - Wild Garden Embroidered Canvas Bag: Embroider Your Unique Style

people are viewing this right now
$32.99
Tax included. Shipping calculated at checkout.
Color : White
Quantity
Worldwide shipping
Sustainably made
Secure payments
Description

For more embroidery options, please visit our DIY Embroidery Collection

For more Canvas Tote options, please visit our Canvas Embroidery Tote Bag

Immerse yourself in the world of DIY embroidery with UrCustomHUB’s Handcrafted Floral Canvas Tote. This beautifully designed canvas bag, featuring intricate floral patterns, is the perfect companion for your daily outings or as a unique piece of personalized art. Whether you are a beginner or an expert, this kit brings the joy of crafting to all.

🌼 UrCustomHUB - Wild Garden Embroidered Canvas Bag: Embroider Your Unique Style

Designed for All Skill Levels:

  • Perfect for both beginners and experienced embroiderers, our kit comes with clear instructions, ensuring a smooth and enjoyable crafting experience.
  • Each kit is equipped with all the tools you need, allowing you to focus on the joy of creation.

Elegant Floral Patterns:

  • The floral design is modern, fresh, and eye-catching, adding a touch of elegance to your wardrobe or home decor.
  • This DIY project lets you create your personal masterpiece, adding beauty to a functional item like a tote bag.

Quality Craftsmanship Materials:

  • Canvas Bag Dimensions: 35 cm x 38 cm with a handle length of 26 cm, providing ample space to showcase your embroidered artwork.
  • Kit Includes:
    • 1 printed canvas tote bag
    • 1 embroidery pattern
    • 1 embroidery needle
    • Vibrant threads
    • 20cm x 20cm faux bamboo embroidery hoop for support and ease of stitching.

Eco-Friendly Crafting:

  • At UrCustomHUB, we value sustainability, which is why our products are made with eco-friendly materials, offering you a guilt-free crafting experience.
  • Thoughtfully packaged with three layers of protection to ensure your kit arrives safely and in perfect condition.

The Perfect Personalized Gift:

  • Handmade items have a special charm, and this embroidered tote bag makes an ideal gift for friends and family or a special treat for yourself.

Embroidery is not just a craft—it's an experience that soothes and brings beauty to everyday life. Unleash your creativity and enjoy the satisfaction of creating something with your hands.

🌸 Start Your Crafting Journey with UrCustomHUB Today!

For inquiries or more information, reach out to us at service@urcustomhub.com. At UrCustomHUB, we’re dedicated to bringing creativity into your life with our high-quality products and exceptional service.

Customer Reviews

Here are what our customers say.

Write a Review
Customer Reviews
Wow you reached the bottom
Newest
Most liked
Highest ratings
Lowest ratings
×
class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); filePreviewModal.style.display = 'block'; previewLoading.style.display = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { previewLoading.style.display = 'none'; }); fullScreenImage.src = ''; fullScreenImage.style.display = 'none'; fullScreenVideo.style.display = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { previewLoading.style.display = 'none'; }; fullScreenVideo.src = ''; fullScreenVideo.style.display = 'none'; fullScreenImage.style.display = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { filePreviewModal.style.display = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
The review would not show in product details on storefront since it does not support to.