Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag
Casualruby©Letter cartoon canvas tote bag

Casualruby©Letter cartoon canvas tote bag

Price

$39.00 $30.00
2 sold

color classification

Please select a color classification

Quantity

Free worldwide shipping
Free returns
Sustainably made
Secure payments

✔ Secure Haven

Our tote bags feature a zip-top closure, ensuring your essentials are always safe and secure, no matter where your day takes you.

✔ Organized Interior

Thoughtfully designed compartments provide a dedicated space for your phone, credit cards, keys, documents, and more. With our tote, there's a spot for everything.

✔ Featherweight Yet Sturdy

Despite its robust build, our tote bag is surprisingly lightweight, making it your ideal companion for work, leisure, and everything in between

✔ Adaptable Companion

Whether you're heading to the office, the gym, a shopping spree, or the beach, our tote bag effortlessly adapts to your lifestyle.

✔ Gift Ready

Looking for a unique Birthday or Christmas gift? Our stylish tote bag is a perfect choice, delighting both women and men with its artistic flair and practicality.

United States & Canada: 7-15 days.
European Regions: 7-12 days.
Japan: 3-7 days.
United Arab Emirates (UAE): 5-10 days.
Please note that these are estimated delivery times and can vary based on external factors outside of Casualruby’s and our courier's control. These factors can include, but are not limited to, extreme weather conditions, technical malfunctions, and customs delays.

At Casualruby, we're committed to delivering our handcrafted treasures to you, no matter where you are in the world. Every piece is a culmination of meticulous craftsmanship, personalized customization, and our brand's promise of quality.

Production Time:

Our entire collection is custom-made to ensure you receive a piece that is truly yours. We have partnered with China's premier Tote Bag factories, where skilled artisans bring Casualruby’s designs to life. Due to the detailed nature of our handcrafted items, please allow 2-5 days for production.

Shipping & Delivery:

Once your customized order is crafted to perfection, it is handed over to our trusted logistics partners for delivery. We strive to ensure that your purchase reaches you in pristine condition and in a timely manner. Here are our estimated shipping times based on regions:

Tracking Your Order:

Once your order has been dispatched, we will provide you with a tracking number, allowing you to follow your handcrafted item's journey from our factory to your doorstep.

In Conclusion:

We appreciate your patience and understanding as we work to provide you with a piece that is not only of exceptional quality but also uniquely yours. For any queries or concerns regarding our shipping policy or the status of your order, please feel free to contact our dedicated customer service team.

Thank you for choosing Casualruby – where craftsmanship meets world-class delivery.

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.

Customer Reviews

4
Dela R.

OMG I love it :))) I just NEED one of this😭😭😭It's a need not a want!✨️

Dulce A.

My absolute favorite new accessory, this tote seems sturdy and practical for everyday use

Anne G.

Love it!!! Quality is awesome!

Zoee L.

I adore how durable this tote is, along with how the organizational pocket and the keychain holder are so useful. The design is beautiful, and looking at my tote makes me happy every time I use it.