@popcraft/kit 0.25.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/dist/chunks/{agent-45ZGYKTC.js → agent-NTEAEZBN.js} +1 -1
  2. package/dist/chunks/{build-K6QBTLT7.js → build-W5O2ZVN7.js} +2 -2
  3. package/dist/chunks/{builtin-ZS3HJHZL.js → builtin-KX2SGDND.js} +3 -3
  4. package/dist/chunks/{check-template-RZ7IO333.js → check-template-B2KKE6BW.js} +2 -2
  5. package/dist/chunks/{chunk-ZKHYC3QO.js → chunk-37WES5PM.js} +2 -2
  6. package/dist/chunks/chunk-45JABNLR.js +161 -0
  7. package/dist/chunks/chunk-4OGILN7Y.js +141 -0
  8. package/dist/chunks/{chunk-63X37RCC.js → chunk-5NWVUAWR.js} +4 -4
  9. package/dist/chunks/{chunk-QREG6HEK.js → chunk-67SLLJJB.js} +40 -40
  10. package/dist/chunks/chunk-6DV5JZ5M.js +121 -0
  11. package/dist/chunks/chunk-7Q67MXXL.js +140 -0
  12. package/dist/chunks/{chunk-R5CW4CNP.js → chunk-A6GPFR5O.js} +11 -11
  13. package/dist/chunks/chunk-AISWLDDO.js +895 -0
  14. package/dist/chunks/{chunk-ADZXK6SM.js → chunk-AQGECTRJ.js} +1 -1
  15. package/dist/chunks/chunk-ASWWZNTY.js +130 -0
  16. package/dist/chunks/chunk-BNEFANT2.js +134 -0
  17. package/dist/chunks/{chunk-REJO7GXO.js → chunk-CFEKYNGQ.js} +2 -2
  18. package/dist/chunks/{chunk-5HG4LWF5.js → chunk-D4HEDPVN.js} +161 -0
  19. package/dist/chunks/chunk-DRESZDOP.js +130 -0
  20. package/dist/chunks/{chunk-3W2MSVJA.js → chunk-EBLHS2EG.js} +5 -5
  21. package/dist/chunks/chunk-EHTLT6XJ.js +131 -0
  22. package/dist/chunks/{chunk-2AQK4IIV.js → chunk-EVFG2K4L.js} +1 -1
  23. package/dist/chunks/{chunk-6TJIEERG.js → chunk-F4NTIOTT.js} +26 -26
  24. package/dist/chunks/chunk-FC7B22QS.js +150 -0
  25. package/dist/chunks/{chunk-V6COW3DB.js → chunk-G6MIC23V.js} +1 -1
  26. package/dist/chunks/{chunk-4QBQ4RAA.js → chunk-GODXMHO3.js} +4 -4
  27. package/dist/chunks/chunk-GT22XGDH.js +152 -0
  28. package/dist/chunks/chunk-HL4M53ZR.js +143 -0
  29. package/dist/chunks/{chunk-MPI6SCA7.js → chunk-IDL5KKIC.js} +5 -5
  30. package/dist/chunks/{chunk-HR7HCFPX.js → chunk-IM6HORNC.js} +5 -5
  31. package/dist/chunks/{chunk-UVMU6CXR.js → chunk-IWCZDFXL.js} +17 -17
  32. package/dist/chunks/{chunk-OCSLBM6W.js → chunk-JXAJ6OST.js} +1 -1
  33. package/dist/chunks/{chunk-5WGMPGKY.js → chunk-KS7DVWDB.js} +1 -1
  34. package/dist/chunks/chunk-NHDBQ4G7.js +137 -0
  35. package/dist/chunks/chunk-NKPU5TF2.js +103 -0
  36. package/dist/chunks/chunk-NO734F3F.js +146 -0
  37. package/dist/chunks/{chunk-ASWAIYNC.js → chunk-NR2SFSJU.js} +3 -3
  38. package/dist/chunks/{chunk-CJY4TNOS.js → chunk-O3BEBIDN.js} +3 -1
  39. package/dist/chunks/{chunk-UDO3ZU5T.js → chunk-OR6HMJRM.js} +1 -1
  40. package/dist/chunks/chunk-OTICJQ4T.js +267 -0
  41. package/dist/chunks/chunk-PWZZRGWI.js +141 -0
  42. package/dist/chunks/{chunk-AE6S2M2B.js → chunk-QX4U3VTU.js} +25 -25
  43. package/dist/chunks/{chunk-TRUFIU5W.js → chunk-R3YD6VL6.js} +3 -3
  44. package/dist/chunks/{chunk-YSYZW4VZ.js → chunk-SFPM3UJA.js} +7 -7
  45. package/dist/chunks/chunk-SNXQM4UO.js +115 -0
  46. package/dist/chunks/chunk-T3LV66CQ.js +139 -0
  47. package/dist/chunks/chunk-TDGIO2S7.js +145 -0
  48. package/dist/chunks/chunk-TFNV2UP4.js +87 -0
  49. package/dist/chunks/chunk-UJZXKOTP.js +136 -0
  50. package/dist/chunks/{chunk-QAVWMRRM.js → chunk-V5HI55XO.js} +2 -2
  51. package/dist/chunks/chunk-VVNPBBPL.js +174 -0
  52. package/dist/chunks/{chunk-22RNC42G.js → chunk-YHA45NK5.js} +1 -1
  53. package/dist/chunks/{chunk-27EVM272.js → chunk-YPMT4Y4N.js} +2 -2
  54. package/dist/chunks/chunk-YRSDFRCX.js +122 -0
  55. package/dist/chunks/chunk-ZNARVSMD.js +140 -0
  56. package/dist/chunks/{chunk-3DWOQ4LW.js → chunk-ZTBKAGBN.js} +2 -2
  57. package/dist/chunks/{client-6DUSRTZG.js → client-25NJXQWL.js} +1 -1
  58. package/dist/chunks/{client-XYPBNSQ7.js → client-7AQTKZHV.js} +2 -2
  59. package/dist/chunks/{client-TRFNJJHQ.js → client-LWBTUXQK.js} +2 -2
  60. package/dist/chunks/{client-actions-SSUZUEG7.js → client-actions-3HIRRSOL.js} +4 -4
  61. package/dist/chunks/{dangerous-UX4DHJ7U.js → dangerous-XJOHEWL6.js} +3 -3
  62. package/dist/chunks/{editor-seams-V7ZP7XH3.js → editor-seams-4DREZRTT.js} +9 -9
  63. package/dist/chunks/{editor-store-OIHZT244.js → editor-store-C4VWC23J.js} +1 -1
  64. package/dist/chunks/{export-watermark-4NAP5RVM.js → export-watermark-OKGRZNOU.js} +5 -5
  65. package/dist/chunks/{eyedropper-QXEY7LVL.js → eyedropper-WZYSTUTM.js} +1 -1
  66. package/dist/chunks/{generate-media-JAEHWNF6.js → generate-media-DFSHOPOI.js} +2 -2
  67. package/dist/chunks/{host-IKFYVZS7.js → host-4ZE7SIWR.js} +6 -6
  68. package/dist/chunks/{integrations-U5X2BHVK.js → integrations-LPC35FKX.js} +1 -1
  69. package/dist/chunks/{kit-modules-BAUMECYQ.js → kit-modules-BAKTDLOZ.js} +1 -1
  70. package/dist/chunks/{libraries-Q5TCHWGI.js → libraries-ACERXG2O.js} +5 -5
  71. package/dist/chunks/{live-4XQEGNLA.js → live-ZIVBFX3G.js} +3 -3
  72. package/dist/chunks/{media-tool-OSQR45HY.js → media-tool-2ZPIQKJD.js} +1 -1
  73. package/dist/chunks/{new-file-VVLWHEJ4.js → new-file-XS3KCMGM.js} +3 -3
  74. package/dist/chunks/{plugin-44ZW5UEP.js → plugin-6RNMUP5I.js} +2 -2
  75. package/dist/chunks/{plugin-import-3ISLDX7T.js → plugin-import-UC5BHZFE.js} +13 -13
  76. package/dist/chunks/{presence-WVU4OIUA.js → presence-TLDOMBPD.js} +2 -2
  77. package/dist/chunks/{project-EG7XFEJU.js → project-NMPK4R5M.js} +1 -1
  78. package/dist/chunks/{publish-site-WFIX42D3.js → publish-site-R46ZILSS.js} +6 -6
  79. package/dist/chunks/{publish-store-6BS7OIP4.js → publish-store-MIPHEDLV.js} +4 -4
  80. package/dist/chunks/{raster-actions-37XUQSVZ.js → raster-actions-7EI5THLB.js} +1 -1
  81. package/dist/chunks/{runner-HZ7MU6ER.js → runner-I66TTKKZ.js} +16 -16
  82. package/dist/chunks/{store-PHWBXKNY.js → store-7WMR3JKP.js} +5 -5
  83. package/dist/chunks/{sync-IJNKHQRF.js → sync-OFINS45Q.js} +5 -5
  84. package/dist/chunks/{tabs-G6OTEGA5.js → tabs-PEH6VX3X.js} +8 -8
  85. package/dist/chunks/{team-M2EN4JT5.js → team-GGW3O32G.js} +1 -1
  86. package/dist/chunks/{tools-WDFCY4BH.js → tools-TKCA46ZS.js} +2 -2
  87. package/dist/chunks/{ui-commands-QHFGR33P.js → ui-commands-6K4PYKU5.js} +11 -11
  88. package/dist/chunks/{versions-S7COCZSQ.js → versions-KHRNQFGF.js} +5 -5
  89. package/dist/index.js +4 -4
  90. package/dist/seed/files.json +1 -1
  91. package/dist/templates/count.js +1 -1
  92. package/dist/templates/index.js +125 -101
  93. package/dist/templates/index.json +756 -0
  94. package/dist/templates/motion/landing-hero/index.js +4 -4
  95. package/dist/templates/motion/launch-trailer/document.js +125 -101
  96. package/dist/templates/motion/launch-trailer/index.js +4 -4
  97. package/dist/templates/motion/launch-trailer/scenes.js +3 -3
  98. package/dist/templates/motion/template-wall.js +2 -2
  99. package/dist/templates/print/holidays-christmas-church-newsletter.js +94 -0
  100. package/dist/templates/print/holidays-christmas-eve-invitation.js +94 -0
  101. package/dist/templates/print/holidays-christmas-gift-tags.js +94 -0
  102. package/dist/templates/print/holidays-diwali-party-invitation.js +95 -0
  103. package/dist/templates/print/holidays-easter-activity-sheet.js +94 -0
  104. package/dist/templates/print/holidays-easter-egg-hunt-flyer.js +94 -0
  105. package/dist/templates/print/holidays-eid-dinner-invitation.js +95 -0
  106. package/dist/templates/print/holidays-eid-gift-tags.js +94 -0
  107. package/dist/templates/print/holidays-halloween-party-invitation.js +95 -0
  108. package/dist/templates/print/holidays-halloween-treat-labels.js +94 -0
  109. package/dist/templates/print/holidays-halloween-trunk-or-treat-poster.js +94 -0
  110. package/dist/templates/print/holidays-hanukkah-activity-sheet.js +94 -0
  111. package/dist/templates/print/holidays-hanukkah-party-invitation.js +94 -0
  112. package/dist/templates/print/holidays-lunar-new-year-banquet-menu.js +95 -0
  113. package/dist/templates/print/holidays-new-years-eve-poster.js +94 -0
  114. package/dist/templates/print/holidays-thanksgiving-dinner-menu.js +94 -0
  115. package/dist/templates/print/holidays-thanksgiving-place-cards.js +94 -0
  116. package/dist/templates/print/holidays-valentines-dinner-menu.js +94 -0
  117. package/dist/templates/saas/email-decks.js +2 -2
  118. package/dist/templates/saas/index.js +37 -37
  119. package/dist/templates/saas/launch-kit.js +2 -2
  120. package/dist/templates/saas/launch-video.js +2 -2
  121. package/dist/templates/saas/stores.js +2 -2
  122. package/dist/templates/saas/style-bento.js +2 -2
  123. package/dist/templates/saas/style-dark.js +2 -2
  124. package/dist/templates/saas/style-editorial.js +2 -2
  125. package/dist/templates/saas/style-gradient.js +2 -2
  126. package/dist/templates/saas/style-pastel.js +2 -2
  127. package/dist/templates/saas/style-swiss.js +2 -2
  128. package/dist/templates/slideshow/index.js +3 -3
  129. package/dist/templates/social/holidays-diwali-sweet-shop-post.js +96 -0
  130. package/dist/templates/social/holidays-lunar-new-year-bakery-post.js +96 -0
  131. package/dist/templates/social/holidays-new-years-eve-shop-hours.js +96 -0
  132. package/dist/templates/social/holidays-thanksgiving-pie-orders-post.js +96 -0
  133. package/dist/templates/social/holidays-valentines-florist-post.js +96 -0
  134. package/dist/templates/themes/black-friday-coupons.js +2 -2
  135. package/dist/templates/themes/black-friday-neon.js +2 -2
  136. package/dist/templates/themes/blueprint.js +2 -2
  137. package/dist/templates/themes/broadsheet.js +2 -2
  138. package/dist/templates/themes/cyberpunk.js +2 -2
  139. package/dist/templates/themes/departure-board.js +2 -2
  140. package/dist/templates/themes/festival-presale-family-a.js +2 -2
  141. package/dist/templates/themes/festival-presale-family-b.js +2 -2
  142. package/dist/templates/themes/holidays-shared.js +172 -0
  143. package/dist/templates/themes/holidays.js +107 -1
  144. package/dist/templates/themes/index.js +72 -48
  145. package/dist/templates/themes/lunar-new-year.js +2 -2
  146. package/dist/templates/themes/noir.js +2 -2
  147. package/dist/templates/themes/psychedelic.js +2 -2
  148. package/dist/templates/themes/space-opera.js +2 -2
  149. package/dist/templates/themes/studio.js +3 -3
  150. package/dist/templates/themes/tour-tickets.js +2 -2
  151. package/dist/templates/themes/vaporwave.js +2 -2
  152. package/package.json +1 -1
  153. package/src/templates/print/holidays-christmas-church-newsletter.ts +246 -0
  154. package/src/templates/print/holidays-christmas-eve-invitation.ts +121 -0
  155. package/src/templates/print/holidays-christmas-gift-tags.ts +117 -0
  156. package/src/templates/print/holidays-diwali-party-invitation.ts +98 -0
  157. package/src/templates/print/holidays-easter-activity-sheet.ts +108 -0
  158. package/src/templates/print/holidays-easter-egg-hunt-flyer.ts +118 -0
  159. package/src/templates/print/holidays-eid-dinner-invitation.ts +104 -0
  160. package/src/templates/print/holidays-eid-gift-tags.ts +94 -0
  161. package/src/templates/print/holidays-halloween-party-invitation.ts +101 -0
  162. package/src/templates/print/holidays-halloween-treat-labels.ts +86 -0
  163. package/src/templates/print/holidays-halloween-trunk-or-treat-poster.ts +148 -0
  164. package/src/templates/print/holidays-hanukkah-activity-sheet.ts +112 -0
  165. package/src/templates/print/holidays-hanukkah-party-invitation.ts +112 -0
  166. package/src/templates/print/holidays-lunar-new-year-banquet-menu.ts +110 -0
  167. package/src/templates/print/holidays-new-years-eve-poster.ts +117 -0
  168. package/src/templates/print/holidays-thanksgiving-dinner-menu.ts +110 -0
  169. package/src/templates/print/holidays-thanksgiving-place-cards.ts +80 -0
  170. package/src/templates/print/holidays-valentines-dinner-menu.ts +95 -0
  171. package/src/templates/social/holidays-diwali-sweet-shop-post.ts +121 -0
  172. package/src/templates/social/holidays-lunar-new-year-bakery-post.ts +110 -0
  173. package/src/templates/social/holidays-new-years-eve-shop-hours.ts +118 -0
  174. package/src/templates/social/holidays-thanksgiving-pie-orders-post.ts +115 -0
  175. package/src/templates/social/holidays-valentines-florist-post.ts +102 -0
  176. package/src/templates/themes/holidays-shared.ts +903 -0
  177. package/src/templates/themes/holidays.ts +24 -1
  178. package/types/templates/src/print/holidays-christmas-church-newsletter.d.ts +2 -0
  179. package/types/templates/src/print/holidays-christmas-eve-invitation.d.ts +2 -0
  180. package/types/templates/src/print/holidays-christmas-gift-tags.d.ts +2 -0
  181. package/types/templates/src/print/holidays-diwali-party-invitation.d.ts +2 -0
  182. package/types/templates/src/print/holidays-easter-activity-sheet.d.ts +2 -0
  183. package/types/templates/src/print/holidays-easter-egg-hunt-flyer.d.ts +2 -0
  184. package/types/templates/src/print/holidays-eid-dinner-invitation.d.ts +2 -0
  185. package/types/templates/src/print/holidays-eid-gift-tags.d.ts +2 -0
  186. package/types/templates/src/print/holidays-halloween-party-invitation.d.ts +2 -0
  187. package/types/templates/src/print/holidays-halloween-treat-labels.d.ts +2 -0
  188. package/types/templates/src/print/holidays-halloween-trunk-or-treat-poster.d.ts +2 -0
  189. package/types/templates/src/print/holidays-hanukkah-activity-sheet.d.ts +2 -0
  190. package/types/templates/src/print/holidays-hanukkah-party-invitation.d.ts +2 -0
  191. package/types/templates/src/print/holidays-lunar-new-year-banquet-menu.d.ts +2 -0
  192. package/types/templates/src/print/holidays-new-years-eve-poster.d.ts +2 -0
  193. package/types/templates/src/print/holidays-thanksgiving-dinner-menu.d.ts +2 -0
  194. package/types/templates/src/print/holidays-thanksgiving-place-cards.d.ts +2 -0
  195. package/types/templates/src/print/holidays-valentines-dinner-menu.d.ts +2 -0
  196. package/types/templates/src/social/holidays-diwali-sweet-shop-post.d.ts +2 -0
  197. package/types/templates/src/social/holidays-lunar-new-year-bakery-post.d.ts +2 -0
  198. package/types/templates/src/social/holidays-new-years-eve-shop-hours.d.ts +2 -0
  199. package/types/templates/src/social/holidays-thanksgiving-pie-orders-post.d.ts +2 -0
  200. package/types/templates/src/social/holidays-valentines-florist-post.d.ts +2 -0
  201. package/types/templates/src/themes/holidays-shared.d.ts +374 -0
  202. package/dist/chunks/chunk-OWZLREWX.js +0 -18
  203. package/dist/chunks/{chunk-IFJTWD4O.js → chunk-2R3MZKA2.js} +3 -3
  204. package/dist/chunks/{chunk-P67L32AF.js → chunk-3DBNMCGN.js} +3 -3
  205. package/dist/chunks/{chunk-DZDTVMUO.js → chunk-3VHOXVMF.js} +3 -3
  206. package/dist/chunks/{chunk-2PQI2R5L.js → chunk-64RMGOTG.js} +0 -0
  207. package/dist/chunks/{chunk-7BDCMMSD.js → chunk-6Y46SDFE.js} +3 -3
  208. package/dist/chunks/{chunk-6VCQ4ZEG.js → chunk-AFARXTNQ.js} +3 -3
  209. package/dist/chunks/{chunk-ITSYENCT.js → chunk-BI3M4RUH.js} +3 -3
  210. package/dist/chunks/{chunk-25FM5JIR.js → chunk-BP7CHO7K.js} +3 -3
  211. package/dist/chunks/{chunk-D22534DX.js → chunk-DPTFZDOS.js} +3 -3
  212. package/dist/chunks/{chunk-JWLR6K62.js → chunk-FNUM5W3W.js} +3 -3
  213. package/dist/chunks/{chunk-JPH6HOYU.js → chunk-HJQU5POV.js} +3 -3
  214. package/dist/chunks/{chunk-HQYZ4URA.js → chunk-IJ65QZLL.js} +3 -3
  215. package/dist/chunks/{chunk-47VVF5TM.js → chunk-INT2OPPY.js} +8 -8
  216. package/dist/chunks/{chunk-AYVAHMWQ.js → chunk-JPMLUHZX.js} +3 -3
  217. package/dist/chunks/{chunk-LFYNAAAQ.js → chunk-LMRTRVPC.js} +3 -3
  218. package/dist/chunks/{chunk-HJIMF4NA.js → chunk-NGMCQZA6.js} +3 -3
  219. package/dist/chunks/{chunk-B3ASV6KS.js → chunk-PQBYL7AI.js} +3 -3
  220. package/dist/chunks/{chunk-NHXNUDC5.js → chunk-QD4QORNR.js} +3 -3
  221. package/dist/chunks/{chunk-P6TPDLAF.js → chunk-S3C6L5KF.js} +3 -3
  222. package/dist/chunks/{chunk-TIRPXUK2.js → chunk-S7L2D7NH.js} +3 -3
  223. package/dist/chunks/{chunk-QFGFR5FQ.js → chunk-TYOOL27R.js} +3 -3
  224. package/dist/chunks/{chunk-32V4D45K.js → chunk-TYW7EXV6.js} +3 -3
  225. package/dist/chunks/{chunk-3QIDCP4M.js → chunk-VOEAQIQT.js} +3 -3
  226. package/dist/chunks/{chunk-ASVDOX62.js → chunk-VVUQG4ME.js} +3 -3
  227. package/dist/chunks/{chunk-ZXZ22FKF.js → chunk-XTWKSMJC.js} +3 -3
  228. package/dist/chunks/{chunk-6NG5K7WN.js → chunk-YHEMML5Q.js} +3 -3
  229. package/dist/chunks/{chunk-MVFPEBMY.js → chunk-ZKRSVNY4.js} +3 -3
@@ -0,0 +1,143 @@
1
+ import { createRequire as __popcraftRequire } from 'node:module';
2
+ import { fileURLToPath as __popcraftPath } from 'node:url';
3
+ import { dirname as __popcraftDirname } from 'node:path';
4
+ const require = __popcraftRequire(import.meta.url);
5
+ const __filename = __popcraftPath(import.meta.url);
6
+ const __dirname = __popcraftDirname(__filename);
7
+ import {
8
+ disc,
9
+ draw,
10
+ maple,
11
+ mapleVeins,
12
+ polyP,
13
+ rectPath,
14
+ redraw,
15
+ restyleAll,
16
+ scaleGaps
17
+ } from "./chunk-AISWLDDO.js";
18
+ import {
19
+ SERIF
20
+ } from "./chunk-X23ZWFW2.js";
21
+ import {
22
+ verticalPadding
23
+ } from "./chunk-EK5CFFJO.js";
24
+ import {
25
+ defineTemplate
26
+ } from "./chunk-A44WEVKR.js";
27
+ import {
28
+ Kit,
29
+ preset
30
+ } from "./chunk-T3SGRYUX.js";
31
+ import {
32
+ init_define_POPCRAFT_COMPONENT_IDS
33
+ } from "./chunk-6VMOKHMF.js";
34
+
35
+ // templates/src/social/holidays-thanksgiving-pie-orders-post.ts
36
+ init_define_POPCRAFT_COMPONENT_IDS();
37
+ var NAME = "Thanksgiving pie orders post";
38
+ function pie(cx, cy, r) {
39
+ const crimp = polyP(Array.from({ length: 72 }, (_, i) => {
40
+ const a = i * Math.PI / 36, rr = r * (i % 2 ? 0.93 : 1);
41
+ return { x: cx + Math.cos(a) * rr, y: cy + Math.sin(a) * rr };
42
+ }));
43
+ const strips = [], under = [];
44
+ const inner = r * 0.8, sw = r * 0.11;
45
+ for (let i = -3; i <= 3; i++) {
46
+ const o = i * inner / 3.6, half = Math.sqrt(Math.max(0, inner * inner - o * o));
47
+ strips.push(rectPath(cx + o - sw / 2, cy - half, sw, half * 2));
48
+ under.push(rectPath(cx - half, cy + o - sw / 2, half * 2, sw));
49
+ }
50
+ const vents = [0, 1, 2, 3].map((i) => disc(cx + Math.cos(i * Math.PI / 2 + 0.78) * r * 0.42, cy + Math.sin(i * Math.PI / 2 + 0.78) * r * 0.42, r * 0.03));
51
+ return { tin: [disc(cx, cy, r * 1.08)], crust: [crimp], filling: [disc(cx, cy, inner)], under, strips, vents };
52
+ }
53
+ function art(w, h, safe = { top: 0, bottom: 0 }) {
54
+ const s = w / 1080, B = 0;
55
+ const clothTop = h - 230 * s - safe.bottom;
56
+ const checks = [], checks2 = [];
57
+ const sz = 46 * s;
58
+ for (let y = clothTop, row = 0; y < h + sz; y += sz, row++) for (let x = -B, col = 0; x < w + sz; x += sz, col++) {
59
+ if ((row + col) % 2 === 0) checks.push(rectPath(x, y, sz, sz));
60
+ if (row % 2 === 0 && col % 2 === 0) checks2.push(rectPath(x, y, sz, sz));
61
+ }
62
+ const p = pie(w - 250 * s, clothTop + 20 * s, 230 * s);
63
+ const leaves = [[0.06, 0.05, 80, 0.4], [0.88, 0.09, 140, -0.6], [0.76, 0.24, 96, 1.4], [0.95, 0.33, 110, 2.4], [0.8, 0.45, 84, -1], [0.93, 0.56, 70, 0.9], [0.74, 0.62, 56, 2], [0.42, 0.04, 54, -0.3]].map(([x, y, sz2, t]) => ({ m: maple(w * x, safe.top * 0.4 + h * y, sz2 * s, t), v: mapleVeins(w * x, safe.top * 0.4 + h * y, sz2 * s, t) }));
64
+ return [
65
+ { name: "Cloth", paths: checks, color: "gingham", o: { opacity: 0.55 } },
66
+ { name: "Cloth weave", paths: checks2, color: "gingham", o: { opacity: 0.5 } },
67
+ { name: "Pie shadow", paths: [disc(w - 236 * s, clothTop + 44 * s, 250 * s)], color: "shadow", o: { opacity: 0.25 } },
68
+ { name: "Pie tin", paths: p.tin, color: "tin" },
69
+ { name: "Pie crust", paths: p.crust, color: "crust" },
70
+ { name: "Pie filling", paths: p.filling, color: "filling" },
71
+ { name: "Lattice under", paths: p.under, color: "crustDeep" },
72
+ { name: "Lattice", paths: p.strips, color: "crust" },
73
+ { name: "Lattice edges", paths: p.strips, color: "crustDeep", o: { strokeWidth: 2 * s, opacity: 0.6 } },
74
+ ...leaves.map((l) => ({ name: "Leaf", paths: l.m, color: "rust" })),
75
+ ...leaves.map((l) => ({ name: "Leaf veins", paths: l.v, color: "rustDeep", o: { strokeWidth: 2 * s } }))
76
+ ];
77
+ }
78
+ var holidays_thanksgiving_pie_orders_post_default = defineTemplate({
79
+ id: "social-holidays-thanksgiving-pie-orders-post",
80
+ meta: {
81
+ name: NAME,
82
+ description: "A neighbourhood bakery\u2019s Thanksgiving pie-order post in a warm retro style: a lattice pie from above on a gingham cloth, maple leaves blowing across a mustard ground, \u201CPie orders close Sunday\u201D in a heavy serif, four pies with prices and the pick-up day. 4:5 for the feed and 9:16 for stories",
83
+ category: "social",
84
+ tags: ["thanksgiving", "bakery", "pie", "pre-order", "pumpkin pie", "small business", "autumn", "fall", "retro", "gingham", "instagram", "story", "post"],
85
+ platforms: ["instagram", "facebook"],
86
+ formats: ["portrait-post", "story"],
87
+ useCases: ["sale", "announcement"],
88
+ created: "2026-10-10",
89
+ updated: "2026-10-10"
90
+ },
91
+ stableNumbers: true,
92
+ build() {
93
+ const k = new Kit(NAME, preset("ig-portrait"));
94
+ k.quantizeGeometry = true;
95
+ k.brand(
96
+ { paper: "#E9B44C", text: "#3A1F10", onPaper: "#8A3412", primary: "#9C3D17", onPrimary: "#FFF6E5", line: "#C98F2C" },
97
+ { name: "Rise & Shine Bakery", site: "riseandshinebakes.com" }
98
+ );
99
+ k.palette({ gingham: "#B5442A", tin: "#B9B3A8", crust: "#F3C77A", crustDeep: "#C98A3A", filling: "#A94A1E", shadow: "#5E3518", rust: "#B4512A", rustDeep: "#7E3216" });
100
+ k.textStyle("Kicker 26", { size: 26, fontWeight: 800, letterSpacing: 5, lineHeight: 34 });
101
+ k.textStyle("Title 100", { ...SERIF, size: 100, fontWeight: 800, letterSpacing: -2.6, lineHeight: 96 });
102
+ k.textStyle("Pie 32", { ...SERIF, size: 32, fontWeight: 600, lineHeight: 40 });
103
+ k.textStyle("Price 32", { size: 32, fontWeight: 800, lineHeight: 40, fontFeatures: { tnum: 1 } });
104
+ k.textStyle("Body 27", { size: 27, fontWeight: 500, lineHeight: 36 });
105
+ k.component("Pie line", { direction: "HORIZONTAL", gap: 20, width: 620, justify: "SPACE_BETWEEN", padding: { top: 10, right: 0, bottom: 10, left: 0 }, props: { Pie: "Pie", Price: "$0" } }, (id) => {
106
+ k.propText(id, "Pie", { style: "Pie 32", color: "text", autoWidth: true, name: "Pie name" });
107
+ k.propText(id, "Price", { style: "Price 32", color: "onPaper", autoWidth: true, name: "Pie price" });
108
+ });
109
+ const sheet = k.sheet;
110
+ const { width: W, height: H } = k.node(sheet);
111
+ k.flowSheet(sheet, 0, { top: 150, right: 376, bottom: 260, left: 84 }, "paper", "MIN", "MIN");
112
+ draw(k, sheet, art(W, H));
113
+ k.text(sheet, "THANKSGIVING PIES", { style: "Kicker 26", color: "onPaper", width: "FILL", name: "Kicker" });
114
+ k.stack(sheet, { height: 16, name: "Gap" });
115
+ k.text(sheet, "Pie orders close Sunday", { style: "Title 100", color: "text", width: "FILL", name: "Title" });
116
+ k.stack(sheet, { height: 28, name: "Gap" });
117
+ const list = k.stack(sheet, { width: 620, name: "Pies" });
118
+ for (const [i, [n, p]] of [["Classic pumpkin", "$28"], ["Apple crumble", "$30"], ["Bourbon pecan", "$34"], ["Sweet potato", "$28"]].entries()) {
119
+ k.instance(list, "Pie line", { Pie: n, Price: p }, { name: "Pie line", width: "FILL" });
120
+ if (i < 3) k.rect(list, "FILL", 2, "line", { name: "Rule" });
121
+ }
122
+ k.stack(sheet, { height: 24, name: "Gap" });
123
+ k.text(sheet, "Order by Sunday 22 November, pick up Wednesday 25th, 7 am \u2013 6 pm. {{brand.site}}", { style: "Body 27", color: "text", width: "FILL", name: "Body" });
124
+ k.textStyle("Title 112", { ...SERIF, size: 112, fontWeight: 800, letterSpacing: -3, lineHeight: 106 });
125
+ const story = {
126
+ preset: "ig-story",
127
+ adjust: (kit, id) => {
128
+ const { width: w, height: h } = kit.node(id);
129
+ const safe = verticalPadding(84);
130
+ redraw(kit, id, art(w, h, { top: safe.top - 84, bottom: 0 }));
131
+ kit.patch(id, { padding: { top: safe.top + 120, right: w - safe.left - 620, bottom: safe.bottom, left: safe.left } });
132
+ restyleAll(kit, id, [["Title", "Title 112"]]);
133
+ scaleGaps(kit, id, 1.3);
134
+ }
135
+ };
136
+ k.variants(sheet, [story]);
137
+ return k.finish();
138
+ }
139
+ });
140
+
141
+ export {
142
+ holidays_thanksgiving_pie_orders_post_default
143
+ };
@@ -15,14 +15,14 @@ import {
15
15
  } from "./chunk-AZKWGJHU.js";
16
16
  import {
17
17
  syncStatus
18
- } from "./chunk-63X37RCC.js";
18
+ } from "./chunk-5NWVUAWR.js";
19
19
  import {
20
20
  downloadBlob
21
21
  } from "./chunk-F6NIUSR5.js";
22
22
  import {
23
23
  setPluginTabs,
24
24
  useEditorStore
25
- } from "./chunk-HR7HCFPX.js";
25
+ } from "./chunk-IM6HORNC.js";
26
26
  import {
27
27
  TOKEN_IDS,
28
28
  tokenVar
@@ -54,7 +54,7 @@ init_define_POPCRAFT_COMPONENT_IDS();
54
54
  // lib/plugins/api.ts
55
55
  init_define_POPCRAFT_COMPONENT_IDS();
56
56
  async function handlePluginCall(env, method, params = {}) {
57
- const { dispatchPluginCall } = await import("./plugin-44ZW5UEP.js");
57
+ const { dispatchPluginCall } = await import("./plugin-6RNMUP5I.js");
58
58
  return dispatchPluginCall(env, method, params);
59
59
  }
60
60
 
@@ -378,7 +378,7 @@ async function runPlugin(pluginId, commandId, opts = {}) {
378
378
  if (!opened) throw new Error("The browser blocked the new tab");
379
379
  },
380
380
  createDocument: async (opts2) => {
381
- const { createFreshFileOrExplain } = await import("./new-file-VVLWHEJ4.js");
381
+ const { createFreshFileOrExplain } = await import("./new-file-XS3KCMGM.js");
382
382
  const created = await createFreshFileOrExplain({}, { name: opts2?.name });
383
383
  if (!created.ok) throw new Error(created.reason === "plan" ? "Plan limit reached" : created.reason === "guest-limit" ? "Sign in to create another file" : `Could not create file (${created.reason})`);
384
384
  await useEditorStore.getState().openDocument(created.docId);
@@ -538,7 +538,7 @@ if (typeof window !== "undefined") {
538
538
  const name = d.name || "Imported";
539
539
  void (async () => {
540
540
  try {
541
- const { importViaPlugin, applyPluginLayoutIr } = await import("./plugin-import-3ISLDX7T.js");
541
+ const { importViaPlugin, applyPluginLayoutIr } = await import("./plugin-import-UC5BHZFE.js");
542
542
  if (d.ir && typeof d.ir === "object") {
543
543
  await applyPluginLayoutIr(d.ir, { mode, name });
544
544
  return;
@@ -4573,7 +4573,7 @@ function createPopcornSlice(set2, get2) {
4573
4573
  privateMode: false,
4574
4574
  setPrivateMode: (on) => {
4575
4575
  set2({ privateMode: on });
4576
- void import("./presence-WVU4OIUA.js").then((m) => m.setPresencePrivate(on)).catch(() => {
4576
+ void import("./presence-TLDOMBPD.js").then((m) => m.setPresencePrivate(on)).catch(() => {
4577
4577
  });
4578
4578
  },
4579
4579
  /** Reveal every private item THIS user created (they sync to collaborators). Others' stay theirs. */
@@ -6626,7 +6626,7 @@ var useEditorStore = create()(
6626
6626
  // A copy is a new file, so it is cloud-backed like any other (see lib/client/cloud/new-file.ts).
6627
6627
  // Returns '' when it was refused (offline, signed out, plan full) or failed; nothing is left behind.
6628
6628
  duplicateDocument: async (id) => {
6629
- const { duplicateDocumentToCloud } = await import("./sync-IJNKHQRF.js");
6629
+ const { duplicateDocumentToCloud } = await import("./sync-OFINS45Q.js");
6630
6630
  return duplicateDocumentToCloud(id);
6631
6631
  },
6632
6632
  deleteDocument: async (id) => {
@@ -10078,9 +10078,9 @@ if (typeof window !== "undefined") {
10078
10078
  if (typeof window !== "undefined" && navigator.webdriver) {
10079
10079
  window.__vpDesign = async (script, o = {}) => {
10080
10080
  const [{ registerBuiltinTools, runTool }, { editorToolContext }, { createDesignPreview }] = await Promise.all([
10081
- import("./tools-WDFCY4BH.js").then(async (m) => ({ ...m, registerBuiltinTools: (await import("./builtin-ZS3HJHZL.js")).registerBuiltinTools })),
10082
- import("./editor-seams-V7ZP7XH3.js"),
10083
- import("./live-4XQEGNLA.js")
10081
+ import("./tools-TKCA46ZS.js").then(async (m) => ({ ...m, registerBuiltinTools: (await import("./builtin-KX2SGDND.js")).registerBuiltinTools })),
10082
+ import("./editor-seams-4DREZRTT.js"),
10083
+ import("./live-ZIVBFX3G.js")
10084
10084
  ]);
10085
10085
  registerBuiltinTools();
10086
10086
  const args = JSON.stringify({ ...o.name ? { name: o.name } : {}, ...o.size ? { size: o.size } : {}, ...o.frame ? { frame: o.frame } : {}, script });
@@ -4,6 +4,9 @@ import { dirname as __popcraftDirname } from 'node:path';
4
4
  const require = __popcraftRequire(import.meta.url);
5
5
  const __filename = __popcraftPath(import.meta.url);
6
6
  const __dirname = __popcraftDirname(__filename);
7
+ import {
8
+ style_swiss_default
9
+ } from "./chunk-DPTFZDOS.js";
7
10
  import {
8
11
  style_terminal_default
9
12
  } from "./chunk-JTOSIMQO.js";
@@ -13,54 +16,51 @@ import {
13
16
  import {
14
17
  web_default
15
18
  } from "./chunk-MVXK7NGK.js";
19
+ import {
20
+ style_gradient_default
21
+ } from "./chunk-2R3MZKA2.js";
16
22
  import {
17
23
  style_maximal_default
18
24
  } from "./chunk-J36GQWWD.js";
19
25
  import {
20
26
  style_pastel_default
21
- } from "./chunk-QFGFR5FQ.js";
27
+ } from "./chunk-TYOOL27R.js";
22
28
  import {
23
29
  style_sketch_default
24
30
  } from "./chunk-C3RQ5SGY.js";
25
31
  import {
26
- style_swiss_default
27
- } from "./chunk-D22534DX.js";
32
+ style_dark_default
33
+ } from "./chunk-3DBNMCGN.js";
28
34
  import {
29
35
  style_data_default
30
36
  } from "./chunk-PFZZCO3F.js";
31
37
  import {
32
38
  style_editorial_default
33
- } from "./chunk-MVFPEBMY.js";
39
+ } from "./chunk-ZKRSVNY4.js";
34
40
  import {
35
41
  style_glass_default
36
42
  } from "./chunk-MCUL7OFO.js";
37
43
  import {
38
- style_gradient_default
39
- } from "./chunk-IFJTWD4O.js";
44
+ lottie_default
45
+ } from "./chunk-M6YXBDH5.js";
40
46
  import {
41
47
  stores_default
42
- } from "./chunk-P6TPDLAF.js";
48
+ } from "./chunk-S3C6L5KF.js";
43
49
  import {
44
50
  style_bento_default
45
- } from "./chunk-ZXZ22FKF.js";
51
+ } from "./chunk-XTWKSMJC.js";
46
52
  import {
47
53
  style_brutalist_default
48
54
  } from "./chunk-ZZMCAZHY.js";
49
- import {
50
- style_dark_default
51
- } from "./chunk-P67L32AF.js";
52
55
  import {
53
56
  email_decks_default
54
- } from "./chunk-ITSYENCT.js";
57
+ } from "./chunk-BI3M4RUH.js";
55
58
  import {
56
59
  launch_kit_default
57
- } from "./chunk-NHXNUDC5.js";
60
+ } from "./chunk-QD4QORNR.js";
58
61
  import {
59
62
  launch_video_default
60
- } from "./chunk-LFYNAAAQ.js";
61
- import {
62
- lottie_default
63
- } from "./chunk-M6YXBDH5.js";
63
+ } from "./chunk-LMRTRVPC.js";
64
64
  import {
65
65
  init_define_POPCRAFT_COMPONENT_IDS
66
66
  } from "./chunk-6VMOKHMF.js";
@@ -6,7 +6,7 @@ const __filename = __popcraftPath(import.meta.url);
6
6
  const __dirname = __popcraftDirname(__filename);
7
7
  import {
8
8
  useEditorStore
9
- } from "./chunk-HR7HCFPX.js";
9
+ } from "./chunk-IM6HORNC.js";
10
10
  import {
11
11
  announce
12
12
  } from "./chunk-EGMCBOHC.js";
@@ -6,7 +6,7 @@ const __filename = __popcraftPath(import.meta.url);
6
6
  const __dirname = __popcraftDirname(__filename);
7
7
  import {
8
8
  buildTemplateWall
9
- } from "./chunk-V6COW3DB.js";
9
+ } from "./chunk-G6MIC23V.js";
10
10
  import {
11
11
  APPS,
12
12
  BEAT,
@@ -0,0 +1,137 @@
1
+ import { createRequire as __popcraftRequire } from 'node:module';
2
+ import { fileURLToPath as __popcraftPath } from 'node:url';
3
+ import { dirname as __popcraftDirname } from 'node:path';
4
+ const require = __popcraftRequire(import.meta.url);
5
+ const __filename = __popcraftPath(import.meta.url);
6
+ const __dirname = __popcraftDirname(__filename);
7
+ import {
8
+ disc,
9
+ draw,
10
+ dreidel,
11
+ gelt,
12
+ maze,
13
+ menorah,
14
+ printVariant,
15
+ rectPath,
16
+ sparkle,
17
+ starOfDavid,
18
+ wordSearch
19
+ } from "./chunk-AISWLDDO.js";
20
+ import {
21
+ MONO,
22
+ SERIF
23
+ } from "./chunk-X23ZWFW2.js";
24
+ import {
25
+ defineTemplate
26
+ } from "./chunk-A44WEVKR.js";
27
+ import {
28
+ Kit,
29
+ preset
30
+ } from "./chunk-T3SGRYUX.js";
31
+ import {
32
+ init_define_POPCRAFT_COMPONENT_IDS
33
+ } from "./chunk-6VMOKHMF.js";
34
+
35
+ // templates/src/print/holidays-hanukkah-activity-sheet.ts
36
+ init_define_POPCRAFT_COMPONENT_IDS();
37
+ var NAME = "Hanukkah activity sheet for kids";
38
+ var PAD = { top: 26, right: 48, bottom: 40, left: 48 };
39
+ var WORDS = ["LATKES", "DREIDEL", "MENORAH", "CANDLES", "GELT", "SHAMASH", "MACCABEES", "OIL", "LIGHT", "JERUSALEM"];
40
+ function header(w) {
41
+ const B = 12, s = w / 816, y = 140;
42
+ const scallops = [];
43
+ for (let x = -B, i = 0; x < w + B; x += 34 * s, i++) scallops.push(disc(x + 17 * s, y, 17 * s, 12 * s));
44
+ return [
45
+ { name: "Band", paths: [rectPath(-B, -B, w + 2 * B, y + B)], color: "band" },
46
+ { name: "Scallops", paths: scallops, color: "band" },
47
+ { name: "Band sparkles", paths: [[0.05, 0.3, 14], [0.12, 0.72, 9]].map(([x, yy, r]) => sparkle(w * x, 140 * yy, r * s)), color: "onBand" },
48
+ { name: "Band sparkles", paths: [[0.92, 0.22, 18], [0.85, 0.62, 9]].map(([x, yy, r]) => sparkle(w * x, 140 * yy, r * s)), color: "onBand" },
49
+ { name: "Band stars", paths: starOfDavid(w * 0.035, 112, 9 * s), color: "onBand", o: { strokeWidth: 1.6 * s } },
50
+ { name: "Band stars", paths: starOfDavid(w * 0.965, 104, 10 * s), color: "onBand", o: { strokeWidth: 1.6 * s } }
51
+ ];
52
+ }
53
+ var holidays_hanukkah_activity_sheet_default = defineTemplate({
54
+ id: "print-holidays-hanukkah-activity-sheet",
55
+ meta: {
56
+ name: NAME,
57
+ description: "A printable Hanukkah activity sheet for children: a maze to take the dreidel to the gelt, a word search of ten Hanukkah words, and a hanukkiah in outline to colour a candle each night. Blue and white with playful heavy type, and it prints well in black and white. US Letter with bleed, and an A4 copy",
58
+ category: "document",
59
+ tags: ["hanukkah", "chanukah", "kids", "children", "activity sheet", "colouring", "coloring page", "maze", "word search", "hebrew school", "synagogue", "printable", "jewish", "print"],
60
+ platforms: ["print"],
61
+ formats: ["document"],
62
+ useCases: ["education", "event"],
63
+ created: "2026-10-10",
64
+ updated: "2026-10-10"
65
+ },
66
+ stableNumbers: true,
67
+ build() {
68
+ const k = new Kit(NAME, preset("us-letter"));
69
+ k.quantizeGeometry = true;
70
+ k.brand(
71
+ { paper: "#FFFFFF", text: "#14306B", onPaper: "#3F5C99", primary: "#2457C5", onPrimary: "#FFFFFF", line: "#B9CBEF", card: "#EAF0FC", onCard: "#14306B" },
72
+ { name: "Temple Beth Shalom Hebrew School" }
73
+ );
74
+ k.palette({ band: "#2457C5", onBand: "#FFFFFF", gold: "#E8B33C", goldDeep: "#A87A1E", soft: "#EAF0FC", outline: "#14306B", dreidel: "#7FA6EA", dreidelSide: "#4C78CF" });
75
+ k.textStyle("Title 50", { size: 50, fontWeight: 900, letterSpacing: -1.4, lineHeight: 54 });
76
+ k.textStyle("Band sub 15", { ...SERIF, size: 15, fontWeight: 400, fontStyle: "italic", lineHeight: 20 });
77
+ k.textStyle("Head 20", { size: 20, fontWeight: 800, letterSpacing: -0.2, lineHeight: 24 });
78
+ k.textStyle("Hint 12", { ...SERIF, size: 12, fontWeight: 400, lineHeight: 17 });
79
+ k.textStyle("Grid 17", { ...MONO, size: 15.5, fontWeight: 600, letterSpacing: 2.2, lineHeight: 22 });
80
+ k.textStyle("Words 11", { size: 11, fontWeight: 700, letterSpacing: 1.2, lineHeight: 17 });
81
+ k.textStyle("Name 12", { size: 12, fontWeight: 600, lineHeight: 18 });
82
+ k.textStyle("Foot 10", { size: 10, fontWeight: 500, lineHeight: 14 });
83
+ const sheet = k.sheet;
84
+ const { width: W } = k.node(sheet);
85
+ k.flowSheet(sheet, 14, PAD, "paper", "MIN", "MIN");
86
+ draw(k, sheet, header(W));
87
+ const head = k.stack(sheet, { width: "FILL", height: 112, gap: 2, justify: "CENTER", align: "CENTER", name: "Header" });
88
+ k.text(head, "Hanukkah Fun Page", { style: "Title 50", color: "onBand", autoWidth: true, name: "Title" });
89
+ k.text(head, "Eight nights of light, one page of puzzles", { style: "Band sub 15", color: "onBand", autoWidth: true, name: "Subtitle" });
90
+ k.stack(sheet, { height: 8, name: "Gap" });
91
+ const top = k.stack(sheet, { direction: "HORIZONTAL", width: "FILL", justify: "SPACE_BETWEEN", align: "MAX", name: "Name row" });
92
+ k.text(top, "Name: ________________________", { style: "Name 12", color: "text", autoWidth: true, name: "Name" });
93
+ k.text(top, "Age: ______", { style: "Name 12", color: "text", autoWidth: true, name: "Age" });
94
+ const panel = (parent, title, hint, name) => {
95
+ const p = k.stack(parent, { width: "FILL", gap: 8, padding: 18, fill: "card", radius: 18, name });
96
+ k.instance(p, "Panel head", { Title: title, Hint: hint }, { name: "Panel head", width: "FILL" });
97
+ return p;
98
+ };
99
+ k.component("Panel head", { gap: 2, width: 320, props: { Title: "Puzzle", Hint: "What to do" } }, (id) => {
100
+ k.propText(id, "Title", { style: "Head 20", color: "onCard", width: "FILL", name: "Panel title" });
101
+ k.propText(id, "Hint", { style: "Hint 12", color: "onCard", width: "FILL", name: "Panel hint" });
102
+ });
103
+ const row = k.stack(sheet, { direction: "HORIZONTAL", gap: 20, width: "FILL", name: "Puzzles" });
104
+ const mz = panel(row, "Spin to the gelt", "Help the dreidel find its way through the maze to the chocolate coins.", "Maze panel");
105
+ const mart = k.stack(mz, { width: 276, height: 300, name: "Maze art" });
106
+ const cell = 276 / 12;
107
+ const d = dreidel(cell * 0.5, 20, 30, -0.3), g = gelt(276 - cell * 0.5, 292, 8);
108
+ draw(k, mart, [
109
+ { name: "Maze walls", paths: maze(0, 34, 12, 11, cell, 2026), color: "outline", o: { strokeWidth: 3 } },
110
+ { name: "Dreidel", paths: d.body, color: "dreidel" },
111
+ { name: "Dreidel side", paths: d.side, color: "dreidelSide" },
112
+ { name: "Dreidel handle", paths: d.handle, color: "gold" },
113
+ { name: "Gelt", paths: [...g.coin, ...gelt(276 - cell * 0.5 - 14, 290, 7).coin], color: "gold" }
114
+ ]);
115
+ const ws = panel(row, "Word search", "Find the ten words. They run across, down and on the slant.", "Word panel");
116
+ k.text(ws, wordSearch(WORDS, 12, 5786).join("\n"), { style: "Grid 17", color: "onCard", align: "CENTER", width: "FILL", name: "Grid" });
117
+ k.text(ws, WORDS.join(" \xB7 "), { style: "Words 11", color: "onCard", align: "CENTER", width: "FILL", name: "Word list" });
118
+ const col = panel(sheet, "Colour a candle each night", "Each night add one more candle, filling from the right, and light the newest one first. Colour in tonight\u2019s candles, and the shamash in the middle, the helper that lights the others.", "Colouring panel");
119
+ const cart = k.stack(col, { width: "FILL", height: 196, name: "Colouring art", align: "CENTER" });
120
+ const m = menorah(342, 190, 520, 132, 8);
121
+ draw(k, cart, [
122
+ { name: "Outline stand", paths: [...m.stand], color: "outline", o: { strokeWidth: 3 } },
123
+ { name: "Outline foot", paths: m.foot, color: "outline", o: { strokeWidth: 3 } },
124
+ { name: "Outline cups", paths: m.cups, color: "outline", o: { strokeWidth: 2.4 } },
125
+ { name: "Outline candles", paths: m.candles, color: "outline", o: { strokeWidth: 2.4 } },
126
+ { name: "Outline flames", paths: m.flames, color: "outline", o: { strokeWidth: 2 } }
127
+ ]);
128
+ k.text(col, "Night 1 is the candle on the far right. Count them all: with the shamash, you light 44 candles in eight nights.", { style: "Hint 12", color: "onCard", align: "CENTER", width: "FILL", name: "Fact" });
129
+ k.text(sheet, "Chag sameach from {{brand.name}} \xB7 Answers on the back of the classroom door", { style: "Foot 10", color: "onPaper", align: "CENTER", width: "FILL", name: "Foot" });
130
+ k.variants(sheet, [printVariant("a4", { art: header, pad: PAD, masterWidth: W })]);
131
+ return k.finish();
132
+ }
133
+ });
134
+
135
+ export {
136
+ holidays_hanukkah_activity_sheet_default
137
+ };
@@ -0,0 +1,103 @@
1
+ import { createRequire as __popcraftRequire } from 'node:module';
2
+ import { fileURLToPath as __popcraftPath } from 'node:url';
3
+ import { dirname as __popcraftDirname } from 'node:path';
4
+ const require = __popcraftRequire(import.meta.url);
5
+ const __filename = __popcraftPath(import.meta.url);
6
+ const __dirname = __popcraftDirname(__filename);
7
+ import {
8
+ acorn,
9
+ draw,
10
+ leaf,
11
+ maple,
12
+ mapleVeins,
13
+ printVariant,
14
+ seg,
15
+ specksIn
16
+ } from "./chunk-AISWLDDO.js";
17
+ import {
18
+ SERIF
19
+ } from "./chunk-X23ZWFW2.js";
20
+ import {
21
+ defineTemplate
22
+ } from "./chunk-A44WEVKR.js";
23
+ import {
24
+ Kit,
25
+ preset
26
+ } from "./chunk-T3SGRYUX.js";
27
+ import {
28
+ init_define_POPCRAFT_COMPONENT_IDS
29
+ } from "./chunk-6VMOKHMF.js";
30
+
31
+ // templates/src/print/holidays-thanksgiving-place-cards.ts
32
+ init_define_POPCRAFT_COMPONENT_IDS();
33
+ var NAME = "Thanksgiving place cards";
34
+ var CW = 336;
35
+ var CH = 288;
36
+ var PAD = { top: 42, right: 72, bottom: 34, left: 72 };
37
+ function cardArt() {
38
+ const back = [maple(CW * 0.3, 70, 54, Math.PI + 0.3), maple(CW * 0.7, 76, 46, Math.PI - 0.5)].flat();
39
+ const veins = [...mapleVeins(CW * 0.3, 70, 54, Math.PI + 0.3), ...mapleVeins(CW * 0.7, 76, 46, Math.PI - 0.5)];
40
+ const oaks = [leaf({ x: CW * 0.5, y: 100 }, 50, 20, -Math.PI / 2 - 0.5), leaf({ x: CW * 0.5, y: 100 }, 46, 18, -Math.PI / 2 + 0.6), leaf({ x: CW * 0.5, y: 100 }, 40, 16, Math.PI / 2 + 0.3)];
41
+ const ac = acorn(CW * 0.52, 50, 26, Math.PI);
42
+ const front = [maple(CW / 2, 182, 30, 0.2)].flat();
43
+ return [
44
+ { name: "Back oak", paths: oaks, color: "mustard" },
45
+ { name: "Back maple", paths: back, color: "rust" },
46
+ { name: "Back veins", paths: veins, color: "rustDeep", o: { strokeWidth: 1 } },
47
+ { name: "Back acorn", paths: ac.nut, color: "acorn" },
48
+ { name: "Back acorn cap", paths: ac.cap, color: "bark" },
49
+ { name: "Fold", paths: [seg({ x: 0, y: CH / 2 }, { x: CW, y: CH / 2 })], color: "line", o: { stroke: { color: "line", width: 1, dash: [6, 5] } } },
50
+ { name: "Front leaf", paths: front, color: "rust" }
51
+ ];
52
+ }
53
+ function ground(w, h) {
54
+ const B = 12;
55
+ return [0, 1, 2].map((i) => ({ name: "Fibre", paths: specksIn({ x: -B, y: -B + (h + 2 * B) * i / 3, w: w + 2 * B, h: (h + 2 * B) / 3 }, 500, 80 + i, 1.8), color: "fibre", o: { opacity: 0.4 } }));
56
+ }
57
+ var holidays_thanksgiving_place_cards_default = defineTemplate({
58
+ id: "print-holidays-thanksgiving-place-cards",
59
+ meta: {
60
+ name: NAME,
61
+ description: "Six folding place cards for the Thanksgiving table on one sheet: cut along the solid line, fold on the dashed one, and each stands with the guest\u2019s name in a serif italic on the front and autumn leaves on the back. One component, so a colour change reaches all six. US Letter on card with bleed, cut and fold lines marked, and an A4 copy",
62
+ category: "menu",
63
+ tags: ["thanksgiving", "place cards", "name cards", "tent cards", "table setting", "dinner", "friendsgiving", "autumn", "fall", "leaves", "printable", "diy", "print"],
64
+ platforms: ["print"],
65
+ formats: ["card"],
66
+ useCases: ["event"],
67
+ created: "2026-10-10",
68
+ updated: "2026-10-10"
69
+ },
70
+ stableNumbers: true,
71
+ build() {
72
+ const k = new Kit(NAME, preset("us-letter"));
73
+ k.quantizeGeometry = true;
74
+ k.brand(
75
+ { paper: "#EFE3CF", text: "#3B2416", onPaper: "#6E4A2E", primary: "#A8481F", onPrimary: "#FFF8EE", card: "#FFFAF1", onCard: "#3B2416", line: "#B79C7C" },
76
+ { name: "Thanksgiving 2026" }
77
+ );
78
+ k.palette({ rust: "#B4512A", rustDeep: "#7E3216", mustard: "#D69A2D", acorn: "#A86F3D", bark: "#5E3F26", fibre: "#A88A64" });
79
+ k.textStyle("Head 26", { ...SERIF, size: 26, fontWeight: 600, fontStyle: "italic", lineHeight: 30 });
80
+ k.textStyle("Note 11", { size: 11, fontWeight: 500, lineHeight: 16 });
81
+ k.textStyle("Guest 32", { ...SERIF, size: 32, fontWeight: 500, fontStyle: "italic", letterSpacing: -0.4, lineHeight: 36 });
82
+ k.textStyle("Card note 8", { size: 8.5, fontWeight: 700, letterSpacing: 2.2, lineHeight: 12 });
83
+ k.component("Place card", { width: CW, height: CH, fill: "card", stroke: { color: "line", width: 1 }, padding: { top: 206, right: 20, bottom: 20, left: 20 }, gap: 4, align: "CENTER", props: { Name: "Guest", Note: "GRATEFUL FOR YOU" } }, (id) => {
84
+ draw(k, id, cardArt());
85
+ k.propText(id, "Name", { style: "Guest 32", color: "onCard", align: "CENTER", width: "FILL", name: "Guest name" });
86
+ k.propText(id, "Note", { style: "Card note 8", color: "onCard", align: "CENTER", width: "FILL", name: "Card note" });
87
+ });
88
+ const sheet = k.sheet;
89
+ const { width: W, height: H } = k.node(sheet);
90
+ k.flowSheet(sheet, 16, PAD, "paper", "MIN", "CENTER");
91
+ draw(k, sheet, ground(W, H));
92
+ k.text(sheet, "Place cards for the table", { style: "Head 26", color: "text", align: "CENTER", width: "FILL", name: "Title" });
93
+ const grid = k.stack(sheet, { direction: "HORIZONTAL", wrap: true, gap: 0, width: CW * 2, name: "Cards" });
94
+ for (const [n, note] of [["Grandma Mai", "GRATEFUL FOR YOU"], ["Uncle Thanh", "GRATEFUL FOR YOU"], ["Linh", "PIE CAPTAIN"], ["Marcus", "GRATEFUL FOR YOU"], ["Auntie Rose", "GRAVY BOSS"], ["Baby Kai", "FIRST THANKSGIVING"]]) k.instance(grid, "Place card", { Name: n, Note: note }, { name: "Place card" });
95
+ k.text(sheet, "Cut along the solid lines and fold on the dashed line, leaves to the back, so each name stands up. Card stock of 65 lb (176 gsm) or heavier works best. {{brand.name}}", { style: "Note 11", color: "text", align: "CENTER", width: "FILL", name: "Note" });
96
+ k.variants(sheet, [printVariant("a4", { art: ground, pad: PAD, masterWidth: W })]);
97
+ return k.finish();
98
+ }
99
+ });
100
+
101
+ export {
102
+ holidays_thanksgiving_place_cards_default
103
+ };