🎁Best Gift For Family🎁The Granny Square Card Deck-[50 Mix & Match Designs]

$25.98 $69.98 Save 63%
Quantity
Share the love
Free worldwide shipping
Free returns
Sustainably made
Secure payments
Description

✨The Granny Square Card Deck is available in 8 languages, including:

  • English, French, German, Italian, Spanish, Dutch, Danish, and Portuguese.

🌈 Your Pocket Crochet Revolution! 🧶✨

Calling all crochet enthusiasts and color lovers! 📣 Get ready to revolutionize your granny square game with this innovative, portable card deck. It's like having a crochet guru in your pocket! 👵🏼💪

🃏 What's in the Box:

  • 50 vibrant 4x4" cards with stunning granny square designs
  • 32-page booklet packed with crochet wisdom
  • Stylish, sturdy box for on-the-go crafting

🌟 Why You'll Be Obsessed:

  • Endless mix-and-match possibilities
  • Visual learning made easy with color photos and stitch charts
  • Perfect for crafting anywhere, anytime
  • Foolproof color combinations every time

💡 Genius Features:

  • Comprehensive guide to reading crochet charts
  • Two joining methods explained
  • Expert advice on yarn and hook selection
  • Color placement tips for stunning results

🎨 Unleash Your Creativity:

  • Design unique blankets, bags, or wall art
  • Create custom color palettes
  • Challenge yourself with new patterns
  • Perfect for impromptu crochet sessions

💬 Crocheters Are Raving:

"It's like having 50 crochet patterns in my purse!" - Bronwyn L. ⭐⭐⭐⭐⭐

"These cards sparked my creativity. I'm hooked!" - Watne C. ⭐⭐⭐⭐⭐

🎁 The Perfect Gift For:

  • Crochet newbies and experts alike
  • Color enthusiasts
  • On-the-go crafters
  • Visual learners

Our Guarantee

We truly believe we make some of the most innovative products in the world, and we want to make sure we back that up with an asterisk-free ironclad 180-day guarantee.
If you don't have a positive experience for ANY reason, we will do WHATEVER it takes to make sure you are 100% satisfied with your purchase.
Buying items online can be a daunting task, so we want you to realize that there is absolutely ZERO risk in buying something and trying it out. If you don't like it, no hard feelings we'll make it right.
We have 24/7/365 Ticket and Email Support. Please contact us if you need assistance.
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.