@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,131 @@
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
+ draw,
9
+ egg,
10
+ eggBands,
11
+ grass,
12
+ maze,
13
+ polyP,
14
+ printVariant,
15
+ rabbit,
16
+ sparkle,
17
+ tulip
18
+ } from "./chunk-AISWLDDO.js";
19
+ import {
20
+ SERIF
21
+ } from "./chunk-X23ZWFW2.js";
22
+ import {
23
+ defineTemplate
24
+ } from "./chunk-A44WEVKR.js";
25
+ import {
26
+ Kit,
27
+ preset
28
+ } from "./chunk-T3SGRYUX.js";
29
+ import {
30
+ init_define_POPCRAFT_COMPONENT_IDS
31
+ } from "./chunk-6VMOKHMF.js";
32
+
33
+ // templates/src/print/holidays-easter-activity-sheet.ts
34
+ init_define_POPCRAFT_COMPONENT_IDS();
35
+ var NAME = "Easter activity sheet for kids";
36
+ var PAD = { top: 30, right: 48, bottom: 96, left: 48 };
37
+ function frame(w, h) {
38
+ const s = w / 816, B = 12;
39
+ const wave = polyP([{ x: -B, y: -B }, { x: w + B, y: -B }, ...Array.from({ length: 25 }, (_, i) => ({ x: w + B - (w + 2 * B) * i / 24, y: 128 + Math.sin(i * 0.9) * 8 }))]);
40
+ const tl = [0.03, 0.09, 0.91, 0.97].map((x, i) => tulip(w * x, h + 4, (70 + i % 2 * 22) * s, i % 2 ? -0.06 : 0.06));
41
+ return [
42
+ { name: "Header", paths: [wave], color: "band" },
43
+ { name: "Header sparkles", paths: [sparkle(w * 0.06, 52, 14 * s), sparkle(w * 0.12, 96, 8 * s)], color: "onBand" },
44
+ { name: "Header sparkles", paths: [sparkle(w * 0.93, 46, 16 * s), sparkle(w * 0.87, 92, 9 * s)], color: "onBand" },
45
+ { name: "Grass", paths: grass(-B, w + B, h + B, 52 * s, 9, 80), color: "grass" },
46
+ { name: "Tulip stems", paths: tl.flatMap((t) => t.stem), color: "grassDeep", o: { strokeWidth: 3.4 * s } },
47
+ { name: "Tulip leaves", paths: tl.flatMap((t) => t.leaves), color: "grassDeep" },
48
+ { name: "Tulips", paths: tl.slice(0, 2).flatMap((t) => t.cup), color: "tulip" },
49
+ { name: "Tulips", paths: tl.slice(2).flatMap((t) => t.cup), color: "tulipYellow" }
50
+ ];
51
+ }
52
+ var holidays_easter_activity_sheet_default = defineTemplate({
53
+ id: "print-holidays-easter-activity-sheet",
54
+ meta: {
55
+ name: NAME,
56
+ description: "A printable Easter activity sheet for children: three eggs in outline to decorate, a maze to take the rabbit to its basket, and a word builder for SPRINGTIME with lines to write on, under a pastel header and above a border of tulips and grass. US Letter with bleed, and an A4 copy",
57
+ category: "document",
58
+ tags: ["easter", "spring", "kids", "children", "activity sheet", "coloring page", "colouring", "maze", "eggs", "bunny", "sunday school", "printable", "print"],
59
+ platforms: ["print"],
60
+ formats: ["document"],
61
+ useCases: ["education", "event"],
62
+ created: "2026-10-10",
63
+ updated: "2026-10-10"
64
+ },
65
+ stableNumbers: true,
66
+ build() {
67
+ const k = new Kit(NAME, preset("us-letter"));
68
+ k.quantizeGeometry = true;
69
+ k.brand(
70
+ { paper: "#FFFDF7", text: "#3D3360", onPaper: "#6A5F8E", primary: "#D9577A", onPrimary: "#FFFFFF", line: "#CFC6E4", card: "#F4F0FB", onCard: "#3D3360" },
71
+ { name: "St Mark\u2019s Sunday School" }
72
+ );
73
+ k.palette({ ink: "#3D3360", band: "#C9E7D9", onBand: "#FFFFFF", grass: "#9ED39B", grassDeep: "#5DA466", tulip: "#F28CA6", tulipYellow: "#F7C85C", outline: "#3D3360", soft: "#F4F0FB", basket: "#C99561", rabbit: "#BFA58C" });
74
+ k.textStyle("Title 48", { ...SERIF, size: 48, fontWeight: 700, letterSpacing: -1, lineHeight: 52 });
75
+ k.textStyle("Band sub 15", { size: 15, fontWeight: 600, letterSpacing: 2.6, lineHeight: 20 });
76
+ k.textStyle("Head 20", { ...SERIF, size: 21, fontWeight: 700, lineHeight: 25 });
77
+ k.textStyle("Hint 12.5", { size: 12.5, fontWeight: 400, lineHeight: 18 });
78
+ k.textStyle("Big word 40", { size: 34, fontWeight: 900, letterSpacing: 5, lineHeight: 42 });
79
+ k.textStyle("Name 12", { size: 12, fontWeight: 600, lineHeight: 18 });
80
+ k.textStyle("Foot 10", { size: 10, fontWeight: 500, lineHeight: 14 });
81
+ k.component("Panel head", { gap: 2, width: 320, props: { Title: "Puzzle", Hint: "What to do" } }, (id) => {
82
+ k.propText(id, "Title", { style: "Head 20", color: "onCard", width: "FILL", name: "Panel title" });
83
+ k.propText(id, "Hint", { style: "Hint 12.5", color: "onCard", width: "FILL", name: "Panel hint" });
84
+ });
85
+ const panel = (parent, title, hint, name, width = "FILL") => {
86
+ const p = k.stack(parent, { width, gap: 10, padding: 18, fill: "card", radius: 22, name });
87
+ k.instance(p, "Panel head", { Title: title, Hint: hint }, { name: "Panel head", width: "FILL" });
88
+ return p;
89
+ };
90
+ const sheet = k.sheet;
91
+ const { width: W } = k.node(sheet);
92
+ k.flowSheet(sheet, 14, PAD, "paper", "MIN", "MIN");
93
+ draw(k, sheet, frame(W, k.node(sheet).height));
94
+ const head = k.stack(sheet, { width: "FILL", height: 92, gap: 2, justify: "CENTER", align: "CENTER", name: "Header" });
95
+ k.text(head, "Spring Garden Puzzles", { style: "Title 48", color: "ink", autoWidth: true, name: "Title" });
96
+ k.text(head, "HAPPY EASTER!", { style: "Band sub 15", color: "ink", autoWidth: true, name: "Subtitle" });
97
+ k.stack(sheet, { height: 6, name: "Gap" });
98
+ const top = k.stack(sheet, { direction: "HORIZONTAL", width: "FILL", justify: "SPACE_BETWEEN", name: "Name row" });
99
+ k.text(top, "Name: ________________________", { style: "Name 12", color: "text", autoWidth: true, name: "Name" });
100
+ k.text(top, "Age: ______", { style: "Name 12", color: "text", autoWidth: true, name: "Age" });
101
+ const eggs = panel(sheet, "Decorate the eggs", "Colour them in, follow the lines or invent your own patterns: stripes, spots, zigzags, flowers.", "Egg panel");
102
+ const ea = k.stack(eggs, { width: "FILL", height: 230, name: "Egg art" });
103
+ const shapes = [[120, 120, 150, 200, -0.12, "zigzag"], [340, 116, 160, 212, 0.05, "waves"], [560, 120, 150, 200, 0.14, "dots"]];
104
+ draw(k, ea, [
105
+ { name: "Egg outlines", paths: shapes.map(([x, y, w, h, t]) => egg(x, y, w, h, t)), color: "outline", o: { strokeWidth: 3 } },
106
+ { name: "Egg guides", paths: shapes.flatMap(([x, y, w, h, t, kind]) => eggBands(x, y, w, h, t, kind).lines), color: "outline", o: { strokeWidth: 1.6, opacity: 0.6 } },
107
+ { name: "Egg guide dots", paths: shapes.flatMap(([x, y, w, h, t, kind]) => eggBands(x, y, w, h, t, kind).dots), color: "outline", o: { strokeWidth: 1.6, opacity: 0.6 } }
108
+ ]);
109
+ const row = k.stack(sheet, { direction: "HORIZONTAL", gap: 16, width: "FILL", name: "Puzzles" });
110
+ const mz = panel(row, "Hop to the basket", "Help the rabbit find the way to its basket of eggs.", "Maze panel");
111
+ const mart = k.stack(mz, { width: 300, height: 284, name: "Maze art" });
112
+ const cell = 25;
113
+ const rb = rabbit(16, 36, 46, 1);
114
+ draw(k, mart, [
115
+ { name: "Maze walls", paths: maze(0, 40, 12, 9, cell, 327), color: "outline", o: { strokeWidth: 3 } },
116
+ { name: "Rabbit", paths: rb.body, color: "rabbit" },
117
+ { name: "Basket", paths: [polyP([{ x: 268, y: 266 }, { x: 300, y: 266 }, { x: 296, y: 284 }, { x: 272, y: 284 }]), { closed: false, points: [{ x: 270, y: 266 }, { x: 298, y: 266, handleIn: { x: 284, y: 248 } }] }], color: "basket", o: { strokeWidth: 2.4 } },
118
+ { name: "Basket eggs", paths: [egg(278, 262, 10, 13), egg(290, 262, 10, 13, 0.3)], color: "tulip" }
119
+ ]);
120
+ const wb = panel(row, "Word builder", "How many words can you make from the letters of this word? Rest, ring, time\u2026", "Word panel");
121
+ k.text(wb, "SPRINGTIME", { style: "Big word 40", color: "onCard", align: "CENTER", width: "FILL", name: "Big word" });
122
+ k.text(wb, "_________________ _________________\n_________________ _________________\n_________________ _________________\n_________________ _________________\n_________________ _________________", { style: "Name 12", color: "onCard", align: "CENTER", width: "FILL", name: "Lines" });
123
+ k.text(sheet, "Happy Easter from {{brand.name}}. Bring your sheet on Sunday for a sticker!", { style: "Foot 10", color: "onPaper", align: "CENTER", width: "FILL", name: "Foot" });
124
+ k.variants(sheet, [printVariant("a4", { art: frame, pad: PAD, masterWidth: W })]);
125
+ return k.finish();
126
+ }
127
+ });
128
+
129
+ export {
130
+ holidays_easter_activity_sheet_default
131
+ };
@@ -140,7 +140,7 @@ function startHyperyTeams() {
140
140
  maybePromptForTeam();
141
141
  void followFileTeam(linkedKey);
142
142
  });
143
- void import("./sync-IJNKHQRF.js").then(({ onSyncStatus, syncStatus }) => {
143
+ void import("./sync-OFINS45Q.js").then(({ onSyncStatus, syncStatus }) => {
144
144
  linkedKey = syncStatus().link?.key ?? null;
145
145
  void followFileTeam(linkedKey);
146
146
  onSyncStatus((_s, link) => {
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-KG6CLCGF.js";
10
10
  import {
11
11
  vaporwave_default
12
- } from "./chunk-AYVAHMWQ.js";
12
+ } from "./chunk-JPMLUHZX.js";
13
13
  import {
14
14
  winter_cosy_default
15
15
  } from "./chunk-B6GIKFBY.js";
@@ -18,7 +18,7 @@ import {
18
18
  } from "./chunk-LJSDX4WU.js";
19
19
  import {
20
20
  tour_tickets_default
21
- } from "./chunk-HJIMF4NA.js";
21
+ } from "./chunk-NGMCQZA6.js";
22
22
  import {
23
23
  transit_map_default
24
24
  } from "./chunk-VQBSXFZJ.js";
@@ -30,7 +30,7 @@ import {
30
30
  } from "./chunk-XWZMO4J3.js";
31
31
  import {
32
32
  studio_default
33
- } from "./chunk-B3ASV6KS.js";
33
+ } from "./chunk-PQBYL7AI.js";
34
34
  import {
35
35
  summer_heatwave_default
36
36
  } from "./chunk-IVBJ7MTY.js";
@@ -45,22 +45,22 @@ import {
45
45
  } from "./chunk-AM4QLGDM.js";
46
46
  import {
47
47
  space_opera_default
48
- } from "./chunk-3QIDCP4M.js";
48
+ } from "./chunk-VOEAQIQT.js";
49
49
  import {
50
50
  new_year_default
51
51
  } from "./chunk-CLRKVDHX.js";
52
52
  import {
53
53
  noir_default
54
- } from "./chunk-TIRPXUK2.js";
54
+ } from "./chunk-S7L2D7NH.js";
55
55
  import {
56
56
  printshop_default
57
57
  } from "./chunk-J57CGYSM.js";
58
58
  import {
59
59
  psychedelic_default
60
- } from "./chunk-JPH6HOYU.js";
60
+ } from "./chunk-HJQU5POV.js";
61
61
  import {
62
62
  lunar_new_year_default
63
- } from "./chunk-DZDTVMUO.js";
63
+ } from "./chunk-3VHOXVMF.js";
64
64
  import {
65
65
  machined_default
66
66
  } from "./chunk-G4XRS4WU.js";
@@ -81,16 +81,13 @@ import {
81
81
  } from "./chunk-ONY2SIHS.js";
82
82
  import {
83
83
  holidays_default
84
- } from "./chunk-OWZLREWX.js";
84
+ } from "./chunk-TFNV2UP4.js";
85
85
  import {
86
86
  festival_presale_family_a_default
87
- } from "./chunk-32V4D45K.js";
87
+ } from "./chunk-TYW7EXV6.js";
88
88
  import {
89
89
  festival_presale_family_b_default
90
- } from "./chunk-6VCQ4ZEG.js";
91
- import {
92
- departure_board_default
93
- } from "./chunk-25FM5JIR.js";
90
+ } from "./chunk-AFARXTNQ.js";
94
91
  import {
95
92
  diwali_default
96
93
  } from "./chunk-MQSAGHE4.js";
@@ -100,15 +97,15 @@ import {
100
97
  import {
101
98
  everyday_default
102
99
  } from "./chunk-OINGSM6H.js";
103
- import {
104
- claymation_default
105
- } from "./chunk-UO5JRF3V.js";
106
100
  import {
107
101
  comic_book_default
108
102
  } from "./chunk-RUVZAZ23.js";
109
103
  import {
110
104
  cyberpunk_default
111
- } from "./chunk-6NG5K7WN.js";
105
+ } from "./chunk-YHEMML5Q.js";
106
+ import {
107
+ departure_board_default
108
+ } from "./chunk-BP7CHO7K.js";
112
109
  import {
113
110
  black_friday_ticker_default
114
111
  } from "./chunk-UBGQCHHL.js";
@@ -117,25 +114,22 @@ import {
117
114
  } from "./chunk-WL4ZYNBA.js";
118
115
  import {
119
116
  blueprint_default
120
- } from "./chunk-ASVDOX62.js";
117
+ } from "./chunk-VVUQG4ME.js";
121
118
  import {
122
119
  broadsheet_default
123
- } from "./chunk-JWLR6K62.js";
120
+ } from "./chunk-FNUM5W3W.js";
124
121
  import {
125
- bauhaus_default
126
- } from "./chunk-EFDBUY67.js";
122
+ claymation_default
123
+ } from "./chunk-UO5JRF3V.js";
127
124
  import {
128
125
  black_friday_coupons_default
129
- } from "./chunk-7BDCMMSD.js";
126
+ } from "./chunk-6Y46SDFE.js";
130
127
  import {
131
128
  black_friday_neon_default
132
- } from "./chunk-HQYZ4URA.js";
129
+ } from "./chunk-IJ65QZLL.js";
133
130
  import {
134
131
  black_friday_scratch_default
135
132
  } from "./chunk-DTFBGVE2.js";
136
- import {
137
- arcade_default
138
- } from "./chunk-IECJMYFV.js";
139
133
  import {
140
134
  art_deco_default
141
135
  } from "./chunk-DVP23MAI.js";
@@ -145,9 +139,15 @@ import {
145
139
  import {
146
140
  back_to_school_default
147
141
  } from "./chunk-DK4X3E45.js";
142
+ import {
143
+ bauhaus_default
144
+ } from "./chunk-EFDBUY67.js";
148
145
  import {
149
146
  april_fools_default
150
147
  } from "./chunk-FOM33PRI.js";
148
+ import {
149
+ arcade_default
150
+ } from "./chunk-IECJMYFV.js";
151
151
  import {
152
152
  init_define_POPCRAFT_COMPONENT_IDS
153
153
  } from "./chunk-6VMOKHMF.js";
@@ -0,0 +1,150 @@
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
+ bandsAround,
9
+ bauble,
10
+ disc,
11
+ doubleRule,
12
+ draw,
13
+ flourishComponent,
14
+ holly,
15
+ perBand,
16
+ pine,
17
+ printVariant,
18
+ snowflake,
19
+ specksIn,
20
+ sprig,
21
+ starPath
22
+ } from "./chunk-AISWLDDO.js";
23
+ import {
24
+ SERIF
25
+ } from "./chunk-X23ZWFW2.js";
26
+ import {
27
+ defineTemplate
28
+ } from "./chunk-A44WEVKR.js";
29
+ import {
30
+ Kit,
31
+ preset
32
+ } from "./chunk-T3SGRYUX.js";
33
+ import {
34
+ init_define_POPCRAFT_COMPONENT_IDS
35
+ } from "./chunk-6VMOKHMF.js";
36
+
37
+ // templates/src/print/holidays-christmas-eve-invitation.ts
38
+ init_define_POPCRAFT_COMPONENT_IDS();
39
+ var NAME = "Christmas Eve open house invitation";
40
+ var PAD = { top: 292, right: 48, bottom: 84, left: 48 };
41
+ function art(w, h) {
42
+ const s = w / 480, B = 14 * s;
43
+ const garland = [
44
+ pine({ x: -B - 10 * s, y: 18 * s }, { x: w * 0.25, y: 58 * s }, { x: w * 0.52, y: 26 * s }, { needle: 30 * s, seed: 3, density: 1.4 }),
45
+ pine({ x: w + B + 10 * s, y: 14 * s }, { x: w * 0.74, y: 62 * s }, { x: w * 0.46, y: 30 * s }, { needle: 30 * s, seed: 5, density: 1.4 }),
46
+ pine({ x: w * 0.3, y: -B - 6 * s }, { x: w * 0.4, y: 40 * s }, { x: w * 0.6, y: 18 * s }, { needle: 22 * s, seed: 9, density: 0.9 }),
47
+ pine({ x: -B, y: 50 * s }, { x: w * 0.12, y: 76 * s }, { x: w * 0.3, y: 54 * s }, { needle: 24 * s, seed: 12, density: 0.8 }),
48
+ pine({ x: w + B, y: 52 * s }, { x: w * 0.86, y: 80 * s }, { x: w * 0.68, y: 56 * s }, { needle: 24 * s, seed: 14, density: 0.8 })
49
+ ];
50
+ const beads = [0.06, 0.2, 0.35, 0.5, 0.64, 0.8, 0.94].map((x, i) => disc(w * x, (44 + (i % 2 ? 14 : 2)) * s, (i % 3 ? 4.5 : 6) * s));
51
+ const hang = [[0.13, 70, 34, "red"], [0.27, 128, 26, "gold"], [0.42, 64, 22, "gold"], [0.58, 150, 38, "red"], [0.74, 82, 28, "gold"], [0.88, 136, 22, "red"]];
52
+ const gold = hang.filter((b) => b[3] === "gold").map(([x, l, r]) => bauble(w * x, 30 * s, r * s, { string: l * s }));
53
+ const red = hang.filter((b) => b[3] === "red").map(([x, l, r]) => bauble(w * x, 30 * s, r * s, { string: l * s }));
54
+ const all = [...gold, ...red];
55
+ const flake = (list) => list.flatMap(([x, y, r], i) => snowflake(w * x, h * y, r * s, i * 0.3));
56
+ const keep = { x: 40 * s, y: 286 * s, w: w - 80 * s, h: h - 330 * s };
57
+ const foot = h - 30 * s;
58
+ const hl = [holly({ x: w / 2 - 6 * s, y: foot }, 50 * s, Math.PI + 0.12), holly({ x: w / 2 + 6 * s, y: foot }, 50 * s, -0.12), holly({ x: w / 2 - 4 * s, y: foot + 4 * s }, 36 * s, Math.PI - 0.45), holly({ x: w / 2 + 4 * s, y: foot + 4 * s }, 36 * s, 0.45)];
59
+ const berries = [disc(w / 2 - 7 * s, foot - 2 * s, 6 * s), disc(w / 2 + 7 * s, foot - 3 * s, 6 * s), disc(w / 2, foot + 7 * s, 6 * s)];
60
+ const mist = sprig({ x: -B, y: h * 0.99 }, { x: w * 0.02, y: h * 0.95 }, { x: w * 0.08, y: h * 0.955 }, { leaves: 5, size: 18 * s, seed: 2 });
61
+ const mist2 = sprig({ x: w + B, y: h * 0.99 }, { x: w * 0.98, y: h * 0.95 }, { x: w * 0.92, y: h * 0.955 }, { leaves: 5, size: 18 * s, seed: 4 });
62
+ return [
63
+ ...perBand("Snow", "snow", bandsAround(w, h, keep, B), (b, i) => specksIn(b, 700 * s * s, 7 + i, 2.4 * s), { opacity: 0.35 }),
64
+ { name: "Snowflakes", paths: flake([[0.05, 0.5, 9], [0.06, 0.74, 7]]), color: "snow", o: { strokeWidth: 1.2 * s, opacity: 0.5 } },
65
+ { name: "Snowflakes", paths: flake([[0.95, 0.56, 8], [0.94, 0.8, 10]]), color: "snow", o: { strokeWidth: 1.2 * s, opacity: 0.5 } },
66
+ { name: "Threads", paths: all.flatMap((b) => b.string), color: "gold", o: { strokeWidth: 1 * s, opacity: 0.9 } },
67
+ { name: "Gold baubles", paths: gold.flatMap((b) => b.body), color: "gold" },
68
+ { name: "Red baubles", paths: red.flatMap((b) => b.body), color: "red" },
69
+ { name: "Bauble shade", paths: all.flatMap((b) => b.shade), color: "ink", o: { opacity: 0.22 } },
70
+ { name: "Bauble bands", paths: all.flatMap((b) => b.band), color: "cream", o: { strokeWidth: 1.4 * s, opacity: 0.75 } },
71
+ { name: "Bauble shine", paths: all.flatMap((b) => b.shine), color: "snow", o: { opacity: 0.55 } },
72
+ { name: "Bauble caps", paths: all.flatMap((b) => b.cap), color: "goldDeep" },
73
+ { name: "Pine stems", paths: garland.map((g) => g.stem), color: "bark", o: { strokeWidth: 2.4 * s } },
74
+ { name: "Pine dark", paths: garland.flatMap((g) => g.dark), color: "pine", o: { strokeWidth: 2.2 * s } },
75
+ { name: "Pine light", paths: garland.flatMap((g) => g.light), color: "pineLight", o: { strokeWidth: 2 * s } },
76
+ { name: "Garland beads", paths: beads, color: "red" },
77
+ { name: "Frame", paths: doubleRule(w, h, 16 * s, 5 * s), color: "gold", o: { strokeWidth: 0.8 * s, opacity: 0.7 } },
78
+ { name: "Corner leaves", paths: mist.dark, color: "pineLight", o: { opacity: 0.8 } },
79
+ { name: "Corner leaves", paths: mist2.dark, color: "pineLight", o: { opacity: 0.8 } },
80
+ { name: "Holly", paths: hl, color: "pineLight" },
81
+ { name: "Holly berries", paths: berries, color: "red" }
82
+ ];
83
+ }
84
+ var holidays_christmas_eve_invitation_default = defineTemplate({
85
+ id: "print-holidays-christmas-eve-invitation",
86
+ meta: {
87
+ name: NAME,
88
+ description: "A printed invitation to a family Christmas Eve open house: gold and red baubles hang from a pine garland over a forest-green card dusted with snow, with the invitation set below in a cream serif, gold small capitals and a sprig of holly. 5 \xD7 7 inches with bleed, and an A6 copy",
89
+ category: "invitation",
90
+ tags: ["christmas", "christmas eve", "holiday party", "open house", "family", "baubles", "ornaments", "pine", "holly", "invitation", "print", "card", "winter"],
91
+ platforms: ["print"],
92
+ formats: ["card"],
93
+ useCases: ["invitation", "event"],
94
+ created: "2026-10-10",
95
+ updated: "2026-10-10"
96
+ },
97
+ stableNumbers: true,
98
+ build() {
99
+ const k = new Kit(NAME, preset("invitation-5x7"));
100
+ k.quantizeGeometry = true;
101
+ k.brand(
102
+ { paper: "#163A2E", text: "#F8F0DE", onPaper: "#E2C47A", primary: "#B83A30", onPrimary: "#FFF6E8" },
103
+ { name: "The Okafor family" }
104
+ );
105
+ k.palette({ gold: "#D8B356", goldDeep: "#9C7A2E", red: "#B83A30", cream: "#F8F0DE", pine: "#2D6247", pineLight: "#5E9470", bark: "#5A4632", snow: "#FFFFFF", ink: "#06140F" });
106
+ k.textStyle("Kicker 11", { size: 11, fontWeight: 600, letterSpacing: 3.6, lineHeight: 16 });
107
+ k.textStyle("Title 60", { ...SERIF, size: 60, fontWeight: 400, fontStyle: "italic", letterSpacing: -1.4, lineHeight: 60 });
108
+ k.textStyle("Host 22", { ...SERIF, size: 22, fontWeight: 400, lineHeight: 28 });
109
+ k.textStyle("When 15", { ...SERIF, size: 15, fontWeight: 700, letterSpacing: 0.2, lineHeight: 21 });
110
+ k.textStyle("Body 12", { ...SERIF, size: 12, fontWeight: 400, lineHeight: 17 });
111
+ k.textStyle("Rsvp 10", { size: 10, fontWeight: 600, letterSpacing: 1.6, lineHeight: 15 });
112
+ const sheet = k.sheet;
113
+ const { width: W, height: H } = k.node(sheet);
114
+ k.flowSheet(sheet, 0, PAD, "paper", "MIN", "CENTER");
115
+ k.rect(sheet, W + 28, 300, [k.gradient({ from: "gold", to: "gold", kind: "RADIAL", fromOpacity: 0.2, toOpacity: 0, handles: [{ x: 0.5, y: 0.45 }, { x: 1, y: 0.45 }, { x: 0.5, y: 1.1 }] })], { name: "Glow", absolute: { x: -14, y: -14 } });
116
+ draw(k, sheet, art(W, H));
117
+ const c = { align: "CENTER", width: "FILL" };
118
+ k.text(sheet, "YOU\u2019RE INVITED TO SPEND", { style: "Kicker 11", color: "onPaper", ...c, name: "Kicker" });
119
+ k.stack(sheet, { height: 8, name: "Gap" });
120
+ k.text(sheet, "Christmas Eve", { style: "Title 60", color: "text", ...c, name: "Title" });
121
+ k.text(sheet, "with {{brand.name}}", { style: "Host 22", color: "text", ...c, name: "Host" });
122
+ k.stack(sheet, { height: 12, name: "Gap" });
123
+ flourishComponent(k, "Star rule", "onPaper", starPath(0, 0, 10, 4.2), { rule: 34 });
124
+ k.instance(sheet, "Star rule", {}, { name: "Divider" });
125
+ k.stack(sheet, { height: 12, name: "Gap" });
126
+ k.text(sheet, "Thursday 24 December \xB7 from 6 pm", { style: "When 15", color: "onPaper", ...c, name: "When" });
127
+ k.text(sheet, "418 Linden Avenue, Oak Park", { style: "Body 12", color: "text", ...c, name: "Where" });
128
+ k.stack(sheet, { height: 12, name: "Gap" });
129
+ k.text(sheet, "Carols round the piano at eight, jollof, mince pies and mulled cider all evening. Bring the little ones, and a jumper you\u2019re not proud of.", { style: "Body 12", color: "text", ...c, name: "Body" });
130
+ k.stack(sheet, { height: 12, name: "Gap" });
131
+ k.text(sheet, "RSVP TO NGOZI BY 18 DECEMBER \xB7 (708) 555-0148", { style: "Rsvp 10", color: "onPaper", ...c, name: "Rsvp" });
132
+ k.textStyle("Title 50", { ...SERIF, size: 50, fontWeight: 400, fontStyle: "italic", letterSpacing: -1.2, lineHeight: 50 });
133
+ k.textStyle("Host 18", { ...SERIF, size: 18, fontWeight: 400, lineHeight: 23 });
134
+ k.textStyle("When 13", { ...SERIF, size: 13, fontWeight: 700, lineHeight: 18 });
135
+ k.textStyle("Body 10.5", { ...SERIF, size: 10.5, fontWeight: 400, lineHeight: 15 });
136
+ k.textStyle("Rsvp 8.5", { size: 8.5, fontWeight: 600, letterSpacing: 1.2, lineHeight: 13 });
137
+ k.textStyle("Kicker 9.5", { size: 9.5, fontWeight: 600, letterSpacing: 3, lineHeight: 14 });
138
+ k.variants(sheet, [printVariant("a6", {
139
+ art,
140
+ pad: PAD,
141
+ masterWidth: W,
142
+ styles: [["Title", "Title 50"], ["Host", "Host 18"], ["When", "When 13"], ["Where", "Body 10.5"], ["Body", "Body 10.5"], ["Rsvp", "Rsvp 8.5"], ["Kicker", "Kicker 9.5"]]
143
+ })]);
144
+ return k.finish();
145
+ }
146
+ });
147
+
148
+ export {
149
+ holidays_christmas_eve_invitation_default
150
+ };
@@ -12,7 +12,7 @@ import {
12
12
  countLabel,
13
13
  loadFixture,
14
14
  officialTemplateCount
15
- } from "./chunk-5HG4LWF5.js";
15
+ } from "./chunk-D4HEDPVN.js";
16
16
  import {
17
17
  defineTemplate
18
18
  } from "./chunk-A44WEVKR.js";
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-474GISCF.js";
14
14
  import {
15
15
  notice
16
- } from "./chunk-QAVWMRRM.js";
16
+ } from "./chunk-V5HI55XO.js";
17
17
  import {
18
18
  effectiveChatModel,
19
19
  setModelPref,
@@ -21,7 +21,7 @@ import {
21
21
  } from "./chunk-6XGGSKFB.js";
22
22
  import {
23
23
  useEditorStore
24
- } from "./chunk-HR7HCFPX.js";
24
+ } from "./chunk-IM6HORNC.js";
25
25
  import {
26
26
  create
27
27
  } from "./chunk-4VEVFATD.js";
@@ -1477,7 +1477,7 @@ async function sendMessage(text) {
1477
1477
  if (!useAgentStore.getState().activeThreadId) newThread();
1478
1478
  const mentions = pruneMentions(body, useAgentStore.getState().draftMentions);
1479
1479
  useAgentStore.setState({ draft: "", draftMentions: [], error: null });
1480
- const { runTurn } = await import("./runner-HZ7MU6ER.js");
1480
+ const { runTurn } = await import("./runner-I66TTKKZ.js");
1481
1481
  await runTurn(body, mentions);
1482
1482
  }
1483
1483
  function stop() {
@@ -1580,7 +1580,7 @@ var clearTaskChildren = () => useAgentStore.setState({ taskChildren: {} });
1580
1580
  function subscribeChildTools() {
1581
1581
  let dispose;
1582
1582
  let cancelled = false;
1583
- void import("./runner-HZ7MU6ER.js").then(({ onChildTool }) => {
1583
+ void import("./runner-I66TTKKZ.js").then(({ onChildTool }) => {
1584
1584
  const off = onChildTool((report) => {
1585
1585
  if (report?.status !== "running" || report.jobId) return;
1586
1586
  recordChildTool(report.toolCallId ?? "", report.name);
@@ -0,0 +1,152 @@
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
+ bandsAround,
9
+ confetti,
10
+ disc,
11
+ draw,
12
+ perBand,
13
+ polyP,
14
+ redraw,
15
+ restyleAll,
16
+ scaleGaps,
17
+ sparkle,
18
+ streamer
19
+ } from "./chunk-AISWLDDO.js";
20
+ import {
21
+ SERIF
22
+ } from "./chunk-X23ZWFW2.js";
23
+ import {
24
+ verticalPadding
25
+ } from "./chunk-EK5CFFJO.js";
26
+ import {
27
+ defineTemplate
28
+ } from "./chunk-A44WEVKR.js";
29
+ import {
30
+ Kit,
31
+ preset
32
+ } from "./chunk-T3SGRYUX.js";
33
+ import {
34
+ init_define_POPCRAFT_COMPONENT_IDS
35
+ } from "./chunk-6VMOKHMF.js";
36
+
37
+ // templates/src/social/holidays-new-years-eve-shop-hours.ts
38
+ init_define_POPCRAFT_COMPONENT_IDS();
39
+ var NAME = "New Year\u2019s Eve shop holiday hours post";
40
+ var HOURS = [
41
+ ["Wed 23 Dec", "10 am \u2013 8 pm"],
42
+ ["Thu 24 Dec", "10 am \u2013 4 pm"],
43
+ ["Fri 25 Dec", "Closed"],
44
+ ["Sat 26 Dec", "12 \u2013 6 pm"],
45
+ ["Wed 30 Dec", "10 am \u2013 8 pm"],
46
+ ["Thu 31 Dec", "10 am \u2013 6 pm"],
47
+ ["Fri 1 Jan", "Closed"]
48
+ ];
49
+ function bottle(x, y, s, tilt) {
50
+ const c = Math.cos(tilt), sn = Math.sin(tilt);
51
+ const p = (u, v) => ({ x: x + (u * c - v * sn) * s, y: y + (u * sn + v * c) * s });
52
+ const glass = [polyP([p(-0.16, 0), p(0.16, 0), p(0.16, -0.5), p(0.06, -0.68), p(0.05, -0.92), p(-0.05, -0.92), p(-0.06, -0.68), p(-0.16, -0.5)])];
53
+ const foil = [polyP([p(-0.058, -0.74), p(0.058, -0.74), p(0.05, -0.94), p(-0.05, -0.94)])];
54
+ const label = [polyP([p(-0.16, -0.16), p(0.16, -0.16), p(0.16, -0.38), p(-0.16, -0.38)])];
55
+ const tip = p(0, -1.18);
56
+ const cork = [polyP([{ x: tip.x - 0.035 * s, y: tip.y - 0.05 * s }, { x: tip.x + 0.035 * s, y: tip.y - 0.05 * s }, { x: tip.x + 0.045 * s, y: tip.y + 0.05 * s }, { x: tip.x - 0.045 * s, y: tip.y + 0.05 * s }])];
57
+ const spray = [0, 1, 2, 3, 4, 5, 6, 7].map((i) => {
58
+ const q = p((i % 2 ? 1 : -1) * (0.04 + i * 0.012), -0.98 - i * 0.03);
59
+ return disc(q.x, q.y, (0.014 + i % 3 * 6e-3) * s);
60
+ });
61
+ return { glass, foil, label, cork, spray };
62
+ }
63
+ function art(w, h, safe = { top: 0, bottom: 0 }) {
64
+ const s = w / 1080, B = 0;
65
+ const b = bottle(w - 120 * s, h - 70 * s - safe.bottom * 0.3, 470 * s, -0.36);
66
+ const keep = { x: 60 * s, y: 60 * s + safe.top, w: 700 * s, h: h - 120 * s - safe.top - safe.bottom };
67
+ const bands = bandsAround(w, h, keep, B);
68
+ const st = [streamer({ x: w * 0.62, y: -10 }, w * 0.5, 0.5, 18 * s, 3.5), streamer({ x: w * 0.78, y: -10 }, w * 0.4, 1.05, 16 * s, 3), streamer({ x: -10, y: h - 40 * s }, w * 0.4, -0.12, 14 * s, 2.5)];
69
+ return [
70
+ ...perBand("Confetti", "yellow", bands, (r, i) => confetti(r.w, r.h, Math.round(r.w * r.h / (9e3 * s * s)), 90 + i, 22 * s).bars.map((p) => ({ ...p, points: p.points.map((q) => ({ x: q.x + r.x, y: q.y + r.y })) }))),
71
+ ...perBand("Confetti dots", "coral", bands, (r, i) => confetti(r.w, r.h, Math.round(r.w * r.h / (14e3 * s * s)), 120 + i, 22 * s).dots.map((p) => ({ ...p, points: p.points.map((q) => ({ ...q, x: q.x + r.x, y: q.y + r.y, ...q.handleIn ? { handleIn: { x: q.handleIn.x + r.x, y: q.handleIn.y + r.y } } : {}, ...q.handleOut ? { handleOut: { x: q.handleOut.x + r.x, y: q.handleOut.y + r.y } } : {} })) }))),
72
+ { name: "Streamers", paths: st.slice(0, 2), color: "coral", o: { strokeWidth: 7 * s } },
73
+ { name: "Streamers", paths: st.slice(2), color: "mint", o: { strokeWidth: 7 * s } },
74
+ { name: "Bottle", paths: b.glass, color: "bottle" },
75
+ { name: "Bottle label", paths: b.label, color: "cream" },
76
+ { name: "Bottle foil", paths: b.foil, color: "yellow" },
77
+ { name: "Cork", paths: b.cork, color: "cork" },
78
+ { name: "Spray", paths: b.spray, color: "cream" },
79
+ { name: "Pop", paths: [sparkle(w - 140 * s, h - 700 * s - safe.bottom * 0.3, 40 * s), sparkle(w - 290 * s, h - 660 * s - safe.bottom * 0.3, 26 * s)], color: "yellow" }
80
+ ];
81
+ }
82
+ var holidays_new_years_eve_shop_hours_default = defineTemplate({
83
+ id: "social-holidays-new-years-eve-shop-hours",
84
+ meta: {
85
+ name: NAME,
86
+ description: "A holiday-hours post for a neighbourhood wine shop, Christmas to New Year: confetti and streamers on deep teal, a bottle popping its cork, \u201CPop in before you pop the cork\u201D in big heavy type, every day\u2019s hours with the closed days marked, and the sparkling-wine offer in a yellow pill. 4:5 for the feed and 9:16 for stories",
87
+ category: "social",
88
+ tags: ["new year\u2019s eve", "new year", "holiday hours", "opening hours", "wine shop", "small business", "shop", "champagne", "sale", "confetti", "instagram", "story", "post"],
89
+ platforms: ["instagram", "facebook"],
90
+ formats: ["portrait-post", "story"],
91
+ useCases: ["announcement", "sale"],
92
+ created: "2026-10-10",
93
+ updated: "2026-10-10"
94
+ },
95
+ stableNumbers: true,
96
+ build() {
97
+ const k = new Kit(NAME, preset("ig-portrait"));
98
+ k.quantizeGeometry = true;
99
+ k.brand(
100
+ { paper: "#0C4A47", text: "#FFF7E6", onPaper: "#F5C443", primary: "#F5C443", onPrimary: "#0C2E2C" },
101
+ { name: "Cork & Crate", site: "corkandcrate.co" }
102
+ );
103
+ k.palette({ yellow: "#F5C443", coral: "#F2725E", mint: "#8FDCC2", cream: "#FFF7E6", bottle: "#14302C", cork: "#C99A5B", line: "#2E6B66" });
104
+ k.textStyle("Kicker 26", { ...SERIF, size: 34, fontWeight: 400, fontStyle: "italic", lineHeight: 40 });
105
+ k.textStyle("Title 96", { size: 96, fontWeight: 900, letterSpacing: -3.6, lineHeight: 92 });
106
+ k.textStyle("Day 30", { size: 30, fontWeight: 700, lineHeight: 38, fontFeatures: { tnum: 1 } });
107
+ k.textStyle("Hours 30", { ...SERIF, size: 30, fontWeight: 400, lineHeight: 38, fontFeatures: { tnum: 1 } });
108
+ k.textStyle("Pill 28", { size: 28, fontWeight: 800, lineHeight: 34 });
109
+ k.textStyle("Foot 24", { size: 24, fontWeight: 600, letterSpacing: 1, lineHeight: 30 });
110
+ k.component("Hours row", { direction: "HORIZONTAL", gap: 20, width: 620, justify: "SPACE_BETWEEN", padding: { top: 9, right: 0, bottom: 9, left: 0 }, props: { Day: "Mon 1 Jan", Hours: "9 \u2013 5" } }, (id) => {
111
+ k.propText(id, "Day", { style: "Day 30", color: "text", autoWidth: true, name: "Day" });
112
+ k.propText(id, "Hours", { style: "Hours 30", color: "text", autoWidth: true, name: "Hours" });
113
+ });
114
+ const sheet = k.sheet;
115
+ const { width: W, height: H } = k.node(sheet);
116
+ k.flowSheet(sheet, 0, { top: 84, right: 340, bottom: 70, left: 84 }, "paper", "CENTER", "MIN");
117
+ draw(k, sheet, art(W, H));
118
+ k.text(sheet, "Holiday hours at {{brand.name}}", { style: "Kicker 26", color: "onPaper", width: "FILL", name: "Kicker" });
119
+ k.stack(sheet, { height: 22, name: "Gap" });
120
+ k.text(sheet, "Pop in before you pop the cork", { style: "Title 96", color: "text", width: "FILL", name: "Title" });
121
+ k.stack(sheet, { height: 34, name: "Gap" });
122
+ const list = k.stack(sheet, { width: 620, name: "Hours" });
123
+ for (const [i, [d, hrs]] of HOURS.entries()) {
124
+ k.instance(list, "Hours row", { Day: d, Hours: hrs }, { name: "Hours row", width: "FILL" });
125
+ if (i < HOURS.length - 1) k.rect(list, "FILL", 2, "line", { name: "Rule" });
126
+ }
127
+ k.stack(sheet, { height: 34, name: "Gap" });
128
+ const pill = k.stack(sheet, { direction: "HORIZONTAL", width: "HUG", padding: { top: 16, right: 28, bottom: 16, left: 28 }, radius: 40, fill: "primary", name: "Offer" });
129
+ k.text(pill, "15% off any six bottles of bubbly, to 31 Dec", { style: "Pill 28", color: "onPrimary", autoWidth: true, name: "Offer text" });
130
+ k.stack(sheet, { height: 26, name: "Gap" });
131
+ k.text(sheet, "1408 Elm Street \xB7 {{brand.site}}", { style: "Foot 24", color: "onPaper", width: "FILL", name: "Foot" });
132
+ k.textStyle("Title 116", { size: 106, fontWeight: 900, letterSpacing: -4, lineHeight: 100 });
133
+ k.textStyle("Kicker 40", { ...SERIF, size: 40, fontWeight: 400, fontStyle: "italic", lineHeight: 48 });
134
+ const story = {
135
+ preset: "ig-story",
136
+ adjust: (kit, id) => {
137
+ const { width: w, height: h } = kit.node(id);
138
+ const safe = verticalPadding(84);
139
+ redraw(kit, id, art(w, h, { top: safe.top - 84, bottom: safe.bottom - 84 }));
140
+ kit.patch(id, { padding: { top: safe.top, right: 260, bottom: safe.bottom + 160, left: safe.left } });
141
+ restyleAll(kit, id, [["Title", "Title 116"], ["Kicker", "Kicker 40"]]);
142
+ scaleGaps(kit, id, 1.25);
143
+ }
144
+ };
145
+ k.variants(sheet, [story]);
146
+ return k.finish();
147
+ }
148
+ });
149
+
150
+ export {
151
+ holidays_new_years_eve_shop_hours_default
152
+ };