PageSourceSearch

https://torontocustomtshirts.ca/static/js/63.118bac6e.chunk.js

js torontocustomtshirts.ca collected 2026-10-04 03:17:53 UTC 14,969 bytes, 2 lines download raw bytes

1"use strict";(self.webpackChunkfrontend=self.webpackChunkfrontend||[]).push([[63],{4063(e,t,a){a.r(t),a.d(t,{default:()=>b});var s=a(5043),r=a(5685),o=a(8326),n=a(9292),i=a(614),c=a(4211),l=a(1282),d=a(4467),m=a(9624),p=a(1818),x=a(7379),h=a(579);const u=[{key:"",label:"All Designs"},{key:"anime",label:"Anime"},{key:"animated-films",label:"Animated Films"},{key:"cartoons",label:"Cartoons"},{key:"horror",label:"Horror"},{key:"movies",label:"Movies"},{key:"tv",label:"TV"},{key:"comic-books",label:"Comic Books"},{key:"sci-fi",label:"Sci-Fi"},{key:"videogames",label:"Videogames"},{key:"funny-memes",label:"Funny / Memes"},{key:"pop-culture-lifestyle",label:"Pop Culture"},{key:"magic-fantasy",label:"Magic & Fantasy"},{key:"seasonal",label:"Seasonal"}],g=[{k:"newest",l:"Newest"},{k:"most-reviewed",l:"Most Reviewed"},{k:"price-asc",l:"Price: Low to High"},{k:"price-desc",l:"Price: High to Low"},{k:"name",l:"Name (A\u2013Z)"}],y=[{k:"",l:"All Garments"},{k:"tshirt",l:"Tees",titleHints:["t-shirt","tshirt","tee"]},{k:"hoodie",l:"Hoodies",titleHints:["hoodie"]},{k:"sweatshirt",l:"Sweatshirts",titleHints:["sweatshirt","crewneck"]}];function b(){const{category:e,subcategory:t}=(0,r.g)(),a=(0,r.Zp)(),[b,f]=(0,s.useState)([]),[w,k]=(0,s.useState)(""),[v,j]=(0,s.useState)(""),[N,A]=(0,s.useState)(""),[C,z]=(0,s.useState)(""),[S,T]=(0,s.useState)("newest"),[E,_]=(0,s.useState)(1);(0,s.useEffect)(()=>{const e=setTimeout(()=>z(N),250);return()=>clearTimeout(e)},[N]),(0,s.useEffect)(()=>{const a={};e&&(a.category=e),t&&(a.subcategory=t),w&&(a.badge=w),C&&(a.q=C),(0,p.Jgb)(a).then(f).catch(()=>f([])),_(1)},[e,t,w,C]),(0,s.useEffect)(()=>{_(1)},[v,S]);const M=(0,s.useMemo)(()=>{let e=[...b];if(v){const t=y.find(e=>e.k===v);e=e.filter(e=>{var a,s;if(null!==(a=e.garment_types)&&void 0!==a&&a.length)return e.garment_types.includes(v);const r=(e.name||"").toLowerCase();return null===t||void 0===t||null===(s=t.titleHints)||void 0===s?void 0:s.some(e=>r.includes(e))})}return"price-asc"===S?e.sort((e,t)=>e.price-t.price):"price-desc"===S?e.sort((e,t)=>t.price-e.price):"name"===S?e.sort((e,t)=>e.name.localeCompare(t.name)):"most-reviewed"===S&&e.sort((e,t)=>{const a=(t.review_count||0)-(e.review_count||0);return 0!==a?a:(t.review_avg||0)-(e.review_avg||0)||new Date(t.created_at)-new Date(e.created_at)}),e},[b,S,v]),D=Math.max(1,Math.ceil(M.length/20)),H=M.slice(20*(E-1),20*E),R=e?u.find(t=>t.key===e):null,O=(null===R||void 0===R?void 0:R.label)||(e?(e||"").replace(/[-_]+/g," ").replace(/\b\w/g,e=>e.toUpperCase()).trim():"Designs");const q=e?"Custom ".concat(O," T-Shirts & Hoodies in Toronto & GTA"):"Ready-Made Custom T-Shirts & Hoodies \u2014 Toronto & GTA",G=e?"Shop ".concat(O," ready-made t-shirts, hoodies & sweatshirts printed locally in Toronto & the GTA \u2014 no minimums. Pick a design and garment, or create your own online."):"Browse 100+ ready-made graphic tee & hoodie designs printed locally in Toronto & the GTA \u2014 no minimums. Pick a design and garment, or create your own online.",I=R?{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:"https://torontocustomtshirts.ca/"},{"@type":"ListItem",position:2,name:"Ready-Made",item:"https://torontocustomtshirts.ca/ready-made"},{"@type":"ListItem",position:3,name:R.label,item:"https://torontocustomtshirts.ca/ready-made/".concat(R.key)}]}:null,L=R?{"@context":"https://schema.org","@type":"CollectionPage",name:"".concat(R.label," Designs \u2014 Toronto Custom T-Shirts"),description:"".concat(R.label," ready-made graphic apparel printed locally in Toronto/GTA."),url:"undefined"!==typeof window?window.location.href:"",isPartOf:{"@type":"WebSite",name:"Toronto Custom T-Shirts"}}:null;return(0,h.jsxs)("div",{className:"min-h-screen bg-black",children:[(0,h.jsx)(m.A,{title:q,description:G,keywords:"ready made t-shirt designs Toronto, anime t-shirts Canada, horror t-shirts, retro graphic tees Toronto, pre-made designs Canada",path:e?"/ready-made/category/".concat(e):"/ready-made"}),L&&(0,h.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(L)}}),I&&(0,h.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(I)}}),(0,h.jsx)(c.A,{}),e?(0,h.jsx)("section",{className:"border-b border-[#222]",children:(0,h.jsx)("div",{className:"max-w-[1500px] mx-auto px-6 lg:px-10 py-16",children:(0,h.jsx)(x.A,{scope:"ready-made",categoryKey:e,activeSubcategory:t,onSubcategoryChange:t=>a(t?"/ready-made/category/".concat(e,"/").concat(t):"/ready-made/category/".concat(e))})})}):(0,h.jsx)("section",{className:"border-b border-[#222]",children:(0,h.jsxs)("div",{className:"max-w-[1500px] mx-auto px-6 lg:px-10 py-16",children:[(0,h.jsxs)("nav",{className:"flex items-center gap-2 font-mono text-[11px] tracking-widest text-zinc-500 mb-3","data-testid":"rm-breadcrumb",children:[(0,h.jsx)(r.N_,{to:"/",className:"hover:text-white transition-colors",children:"HOME"}),(0,h.jsx)(o.A,{size:12}),(0,h.jsx)("span",{className:"text-white",children:"READY_MADE"})]}),(0,h.jsx)("h1",{className:"font-display text-7xl md:text-9xl uppercase leading-[0.85]",children:"Ready-Made Drops"}),(0,h.jsx)("p",{className:"text-zinc-400 mt-6 max-w-2xl font-body text-lg",children:"Pre-designed apparel printed on premium tees. Pick your garment, color, and size \u2014 printed locally with same-week pickup in Mississauga."}),(0,h.jsxs)(r.N_,{to:"/ready-made/categories","data-testid":"rm-browse-categories-link",className:"inline-flex items-center gap-2 mt-6 font-mono text-xs tracking-widest text-zinc-300 hover:text-white underline underline-offset-4",children:["BROWSE BY CATEGORY ",(0,h.jsx)(o.A,{size:12})]})]})}),(0,h.jsxs)("section",{className:"max-w-[1500px] mx-auto px-6 lg:px-10 py-10",children:[(0,h.jsxs)("div",{className:"flex flex-wrap gap-3 mb-6 items-center","data-testid":"rm-filters",children:[(0,h.jsxs)("div",{className:"flex items-center gap-2 bg-[#0A0A0A] border border-[#222] px-3 py-2 flex-1 min-w-[220px] max-w-md",children:[(0,h.jsx)(n.A,{size:16,className:"text-zinc-500 shrink-0"}),(0,h.jsx)("input",{"data-testid":"rm-search",value:N,onChange:e=>A(e.target.value),placeholder:"Search designs...","aria-label":"Search ready-made designs",className:"bg-transparent outline-none flex-1 text-sm font-body"}),N&&(0,h.jsx)("button",{type:"button",onClick:()=>A(""),"data-testid":"rm-search-clear","aria-label":"Clear search",className:"text-zinc-500 hover:text-white transition-colors",children:(0,h.jsx)(i.A,{size:14})})]}),[{k:"",l:"All"},{k:"trending",l:"Trending"},{k:"new-drop",l:"New Drop"},{k:"bestseller",l:"Bestseller"}].map(e=>(0,h.jsx)("button",{"data-testid":"badge-filter-".concat(e.k||"all"),onClick:()=>k(e.k),className:"font-mono text-[11px] tracking-widest uppercase px-4 py-2 border transition-all ".concat(w===e.k?"bg-[var(--tc-red)] text-white border-[var(--tc-red)]":"border-[#222] text-zinc-400 hover:text-white"),children:e.l},e.k)),(0,h.jsx)("select",{"data-testid":"rm-sort",value:S,onChange:e=>T(e.target.value),className:"bg-[#0A0A0A] border border-[#222] px-3 py-2 text-sm font-body ml-auto",children:g.map(e=>(0,h.jsx)("option",{value:e.k,children:e.l},e.k))})]}),(0,h.jsxs)("div",{className:"flex flex-wrap items-center gap-2 mb-4","data-testid":"rm-garment-filter",children:[(0,h.jsx)("span",{className:"font-mono text-[10px] tracking-widest text-zinc-500 mr-1 hidden sm:inline",children:"GARMENT"}),y.map(e=>(0,h.jsx)("button",{"data-testid":"rm-garment-filter-".concat(e.k||"all"),onClick:()=>j(e.k),className:"font-mono text-[11px] tracking-widest uppercase px-4 py-2 border transition-all ".concat(v===e.k?"bg-[var(--tc-red)] text-white border-[var(--tc-red)]":"border-[#222] text-zinc-400 hover:text-white"),children:e.l},e.k||"all")),(0,h.jsxs)("span",{className:"ml-auto font-mono text-[10px] tracking-widest text-zinc-500","data-testid":"rm-result-count",children:[M.length," ",1===M.length?"design":"designs"]})]}),(0,h.jsx)("div",{className:"flex flex-wrap gap-2 mb-10 overflow-x-auto","data-testid":"rm-categories",children:u.map(t=>(0,h.jsx)("button",{"data-testid":"rm-cat-".concat(t.key||"all"),onClick:()=>a(t.key?"/ready-made/".concat(t.key):"/ready-made"),className:"font-ui text-xs font-bold uppercase tracking-wider px-4 py-2 border transition-all whitespace-nowrap ".concat((e||"")===t.key?"bg-white text-black border-white":"border-[#222] text-zinc-400 hover:text-white"),children:t.label},t.key))}),0===H.length?(0,h.jsx)("div",{className:"py-32 text-center text-zinc-500 font-mono text-sm tracking-widest","data-testid":"rm-empty",children:"NO DESIGNS FOUND"}):(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-5 ga
1p-3","data-testid":"rm-grid",children:H.map(e=>(0,h.jsx)(d.A,{product:e},e.id))}),D>1&&(0,h.jsx)("div",{className:"flex justify-center gap-2 mt-12","data-testid":"rm-pagination",children:Array.from({length:D},(e,t)=>(0,h.jsx)("button",{onClick:()=>_(t+1),className:"w-10 h-10 font-mono text-sm border ".concat(E===t+1?"bg-[var(--tc-red)] text-white border-[var(--tc-red)]":"border-[#222] text-zinc-400 hover:text-white"),children:t+1},t))})]})]}),e&&(0,h.jsx)("section",{className:"border-t border-[#1a1a1a] max-w-[1500px] mx-auto px-6 lg:px-10",children:(0,h.jsx)(x.m,{scope:"ready-made",categoryKey:e})}),(0,h.jsx)(l.A,{})]})}},7379(e,t,a){a.d(t,{A:()=>c,m:()=>l});var s=a(5043),r=a(5685),o=a(8326),n=a(1818),i=a(579);function c(e){var t;let{scope:a,categoryKey:c,subcategoryKey:l,activeSubcategory:d,onSubcategoryChange:m}=e;const[p,x]=(0,s.useState)(null);if((0,s.useEffect)(()=>{let e=!1;if(!c)return void x(null);const t=c.replace(/[-_]+/g," ").replace(/\b\w/g,e=>e.toUpperCase()).trim(),s={key:c,label:t,h1:"".concat(t," Designs"),subtitle:"Ready-to-print ".concat(t," designs on premium tees, hoodies and sweatshirts \u2014 printed locally in Toronto & the GTA with no minimums."),product_count:0};return fetch("".concat(n.nC7,"/categories/").concat(a,"/").concat(encodeURIComponent(c))).then(e=>e.ok?e.json():null).then(t=>{e||x(t||s)}).catch(()=>{e||x(s)}),()=>{e=!0}},[a,c]),(0,s.useEffect)(()=>{var e;if(null===p||void 0===p||null===(e=p.faq)||void 0===e||!e.length)return;const t=document.createElement("script");return t.type="application/ld+json",t.dataset.categorySeo="1",t.textContent=JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:p.faq.map(e=>({"@type":"Question",name:e.q,acceptedAnswer:{"@type":"Answer",text:e.a}}))}),document.head.appendChild(t),()=>{document.head.querySelectorAll('script[data-category-seo="1"]').forEach(e=>e.remove())}},[null===p||void 0===p?void 0:p.faq]),!p)return null;const h="customize"===a?"/customize/category":"/ready-made/category";return(0,i.jsxs)("section",{className:"mb-8 space-y-6","data-testid":"category-hero",children:[(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsxs)("nav",{className:"font-mono text-[10px] tracking-widest text-zinc-500 flex items-center gap-2",children:[(0,i.jsx)(r.N_,{to:"/",className:"hover:text-white",children:"HOME"}),(0,i.jsx)(o.A,{size:11}),(0,i.jsx)(r.N_,{to:"customize"===a?"/customize":"/ready-made",className:"hover:text-white",children:"customize"===a?"CUSTOMIZE":"READY-MADE"}),(0,i.jsx)(o.A,{size:11}),(0,i.jsx)(r.N_,{to:"customize"===a?"/customize/categories":"/ready-made/categories",className:"hover:text-white",children:"CATEGORIES"}),(0,i.jsx)(o.A,{size:11}),(0,i.jsx)("span",{className:"text-white",children:(p.label||p.key).toUpperCase()}),d&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(o.A,{size:11}),(0,i.jsx)("span",{className:"text-white",children:d.toUpperCase()})]})]}),(0,i.jsxs)("h1",{className:"font-display text-4xl sm:text-5xl lg:text-6xl uppercase tracking-tight","data-testid":"category-h1",children:[p.h1,d?" \xb7 ".concat(d):""]}),(0,i.jsx)("p",{className:"font-body text-base sm:text-lg text-zinc-300 max-w-3xl",children:p.subtitle}),(0,i.jsxs)("div",{className:"font-mono text-[10px] tracking-widest text-zinc-500",children:[p.product_count," PRODUCTS IN THIS CATEGORY"]})]}),(null===(t=p.subcategories)||void 0===t?void 0:t.length)>0&&m&&(0,i.jsxs)("div",{className:"flex flex-wrap gap-2 border-t border-b border-[#1a1a1a] py-3","data-testid":"category-subcategory-chips",children:[(0,i.jsx)("button",{type:"button",onClick:()=>m(""),"data-testid":"subcat-chip-all",className:"px-3 py-1.5 border font-mono text-[10px] tracking-widest transition-colors ".concat(d?"border-[#222] text-zinc-400 hover:border-white hover:text-white":"bg-white text-black border-white"),children:"ALL"}),p.subcategories.map(e=>(0,i.jsxs)(r.N_,{to:"".concat(h,"/").concat(c,"/").concat(e.key),"data-testid":"subcat-chip-".concat(e.key),onClick:t=>{m&&(t.preventDefault(),m(e.key))},className:"px-3 py-1.5 border font-mono text-[10px] tracking-widest transition-colors ".concat(d===e.key?"bg-white text-black border-white":"border-[#222] text-zinc-400 hover:border-white hover:text-white"),children:[e.key.toUpperCase()," ",(0,i.jsxs)("span",{className:"opacity-60",children:["(",e.n,")"]})]},e.key))]})]})}function l(e){var t,a,c,l;let{scope:d,categoryKey:m}=e;
1const[p,x]=(0,s.useState)(null);if((0,s.useEffect)(()=>{let e=!1;if(m)return fetch("".concat(n.nC7,"/categories/").concat(d,"/").concat(encodeURIComponent(m))).then(e=>e.ok?e.json():null).then(t=>{e||x(t)}).catch(()=>{}),()=>{e=!0};x(null)},[d,m]),!p||(null===(t=p.faq)||void 0===t||!t.length)&&(null===(a=p.related)||void 0===a||!a.length))return null;const h="customize"===d?"/customize/category":"/ready-made/category";return(0,i.jsxs)("section",{className:"mt-16 space-y-10 border-t border-[#1a1a1a] pt-10","data-testid":"category-footer",children:[(null===(c=p.faq)||void 0===c?void 0:c.length)>0&&(0,i.jsxs)("div",{children:[(0,i.jsx)("h2",{className:"font-display text-2xl uppercase tracking-tight mb-4",children:"Frequently Asked"}),(0,i.jsx)("div",{className:"space-y-3 max-w-3xl",children:p.faq.map((e,t)=>(0,i.jsxs)("details",{className:"border border-[#222] bg-[#0a0a0a] p-4 group","data-testid":"category-faq-".concat(t),children:[(0,i.jsxs)("summary",{className:"font-ui font-bold cursor-pointer flex items-center justify-between",children:[(0,i.jsx)("span",{children:e.q}),(0,i.jsx)(o.A,{size:16,className:"transition-transform group-open:rotate-90"})]}),(0,i.jsx)("p",{className:"mt-2 font-body text-zinc-300",children:e.a})]},t))})]}),(null===(l=p.related)||void 0===l?void 0:l.length)>0&&(0,i.jsxs)("div",{children:[(0,i.jsx)("h2",{className:"font-display text-2xl uppercase tracking-tight mb-4",children:"Related Categories"}),(0,i.jsx)("div",{className:"flex flex-wrap gap-2",children:p.related.map(e=>(0,i.jsx)(r.N_,{to:"".concat(h,"/").concat(e),"data-testid":"related-cat-".concat(e),className:"border border-[#222] px-4 py-2 font-mono text-xs tracking-widest text-zinc-300 hover:border-white hover:text-white",children:e.toUpperCase()},e))})]})]})}}}]);
2//# sourceMappingURL=63.118bac6e.chunk.js.map

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.