@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.
- package/dist/chunks/{agent-45ZGYKTC.js → agent-NTEAEZBN.js} +1 -1
- package/dist/chunks/{build-K6QBTLT7.js → build-W5O2ZVN7.js} +2 -2
- package/dist/chunks/{builtin-ZS3HJHZL.js → builtin-KX2SGDND.js} +3 -3
- package/dist/chunks/{check-template-RZ7IO333.js → check-template-B2KKE6BW.js} +2 -2
- package/dist/chunks/{chunk-ZKHYC3QO.js → chunk-37WES5PM.js} +2 -2
- package/dist/chunks/chunk-45JABNLR.js +161 -0
- package/dist/chunks/chunk-4OGILN7Y.js +141 -0
- package/dist/chunks/{chunk-63X37RCC.js → chunk-5NWVUAWR.js} +4 -4
- package/dist/chunks/{chunk-QREG6HEK.js → chunk-67SLLJJB.js} +40 -40
- package/dist/chunks/chunk-6DV5JZ5M.js +121 -0
- package/dist/chunks/chunk-7Q67MXXL.js +140 -0
- package/dist/chunks/{chunk-R5CW4CNP.js → chunk-A6GPFR5O.js} +11 -11
- package/dist/chunks/chunk-AISWLDDO.js +895 -0
- package/dist/chunks/{chunk-ADZXK6SM.js → chunk-AQGECTRJ.js} +1 -1
- package/dist/chunks/chunk-ASWWZNTY.js +130 -0
- package/dist/chunks/chunk-BNEFANT2.js +134 -0
- package/dist/chunks/{chunk-REJO7GXO.js → chunk-CFEKYNGQ.js} +2 -2
- package/dist/chunks/{chunk-5HG4LWF5.js → chunk-D4HEDPVN.js} +161 -0
- package/dist/chunks/chunk-DRESZDOP.js +130 -0
- package/dist/chunks/{chunk-3W2MSVJA.js → chunk-EBLHS2EG.js} +5 -5
- package/dist/chunks/chunk-EHTLT6XJ.js +131 -0
- package/dist/chunks/{chunk-2AQK4IIV.js → chunk-EVFG2K4L.js} +1 -1
- package/dist/chunks/{chunk-6TJIEERG.js → chunk-F4NTIOTT.js} +26 -26
- package/dist/chunks/chunk-FC7B22QS.js +150 -0
- package/dist/chunks/{chunk-V6COW3DB.js → chunk-G6MIC23V.js} +1 -1
- package/dist/chunks/{chunk-4QBQ4RAA.js → chunk-GODXMHO3.js} +4 -4
- package/dist/chunks/chunk-GT22XGDH.js +152 -0
- package/dist/chunks/chunk-HL4M53ZR.js +143 -0
- package/dist/chunks/{chunk-MPI6SCA7.js → chunk-IDL5KKIC.js} +5 -5
- package/dist/chunks/{chunk-HR7HCFPX.js → chunk-IM6HORNC.js} +5 -5
- package/dist/chunks/{chunk-UVMU6CXR.js → chunk-IWCZDFXL.js} +17 -17
- package/dist/chunks/{chunk-OCSLBM6W.js → chunk-JXAJ6OST.js} +1 -1
- package/dist/chunks/{chunk-5WGMPGKY.js → chunk-KS7DVWDB.js} +1 -1
- package/dist/chunks/chunk-NHDBQ4G7.js +137 -0
- package/dist/chunks/chunk-NKPU5TF2.js +103 -0
- package/dist/chunks/chunk-NO734F3F.js +146 -0
- package/dist/chunks/{chunk-ASWAIYNC.js → chunk-NR2SFSJU.js} +3 -3
- package/dist/chunks/{chunk-CJY4TNOS.js → chunk-O3BEBIDN.js} +3 -1
- package/dist/chunks/{chunk-UDO3ZU5T.js → chunk-OR6HMJRM.js} +1 -1
- package/dist/chunks/chunk-OTICJQ4T.js +267 -0
- package/dist/chunks/chunk-PWZZRGWI.js +141 -0
- package/dist/chunks/{chunk-AE6S2M2B.js → chunk-QX4U3VTU.js} +25 -25
- package/dist/chunks/{chunk-TRUFIU5W.js → chunk-R3YD6VL6.js} +3 -3
- package/dist/chunks/{chunk-YSYZW4VZ.js → chunk-SFPM3UJA.js} +7 -7
- package/dist/chunks/chunk-SNXQM4UO.js +115 -0
- package/dist/chunks/chunk-T3LV66CQ.js +139 -0
- package/dist/chunks/chunk-TDGIO2S7.js +145 -0
- package/dist/chunks/chunk-TFNV2UP4.js +87 -0
- package/dist/chunks/chunk-UJZXKOTP.js +136 -0
- package/dist/chunks/{chunk-QAVWMRRM.js → chunk-V5HI55XO.js} +2 -2
- package/dist/chunks/chunk-VVNPBBPL.js +174 -0
- package/dist/chunks/{chunk-22RNC42G.js → chunk-YHA45NK5.js} +1 -1
- package/dist/chunks/{chunk-27EVM272.js → chunk-YPMT4Y4N.js} +2 -2
- package/dist/chunks/chunk-YRSDFRCX.js +122 -0
- package/dist/chunks/chunk-ZNARVSMD.js +140 -0
- package/dist/chunks/{chunk-3DWOQ4LW.js → chunk-ZTBKAGBN.js} +2 -2
- package/dist/chunks/{client-6DUSRTZG.js → client-25NJXQWL.js} +1 -1
- package/dist/chunks/{client-XYPBNSQ7.js → client-7AQTKZHV.js} +2 -2
- package/dist/chunks/{client-TRFNJJHQ.js → client-LWBTUXQK.js} +2 -2
- package/dist/chunks/{client-actions-SSUZUEG7.js → client-actions-3HIRRSOL.js} +4 -4
- package/dist/chunks/{dangerous-UX4DHJ7U.js → dangerous-XJOHEWL6.js} +3 -3
- package/dist/chunks/{editor-seams-V7ZP7XH3.js → editor-seams-4DREZRTT.js} +9 -9
- package/dist/chunks/{editor-store-OIHZT244.js → editor-store-C4VWC23J.js} +1 -1
- package/dist/chunks/{export-watermark-4NAP5RVM.js → export-watermark-OKGRZNOU.js} +5 -5
- package/dist/chunks/{eyedropper-QXEY7LVL.js → eyedropper-WZYSTUTM.js} +1 -1
- package/dist/chunks/{generate-media-JAEHWNF6.js → generate-media-DFSHOPOI.js} +2 -2
- package/dist/chunks/{host-IKFYVZS7.js → host-4ZE7SIWR.js} +6 -6
- package/dist/chunks/{integrations-U5X2BHVK.js → integrations-LPC35FKX.js} +1 -1
- package/dist/chunks/{kit-modules-BAUMECYQ.js → kit-modules-BAKTDLOZ.js} +1 -1
- package/dist/chunks/{libraries-Q5TCHWGI.js → libraries-ACERXG2O.js} +5 -5
- package/dist/chunks/{live-4XQEGNLA.js → live-ZIVBFX3G.js} +3 -3
- package/dist/chunks/{media-tool-OSQR45HY.js → media-tool-2ZPIQKJD.js} +1 -1
- package/dist/chunks/{new-file-VVLWHEJ4.js → new-file-XS3KCMGM.js} +3 -3
- package/dist/chunks/{plugin-44ZW5UEP.js → plugin-6RNMUP5I.js} +2 -2
- package/dist/chunks/{plugin-import-3ISLDX7T.js → plugin-import-UC5BHZFE.js} +13 -13
- package/dist/chunks/{presence-WVU4OIUA.js → presence-TLDOMBPD.js} +2 -2
- package/dist/chunks/{project-EG7XFEJU.js → project-NMPK4R5M.js} +1 -1
- package/dist/chunks/{publish-site-WFIX42D3.js → publish-site-R46ZILSS.js} +6 -6
- package/dist/chunks/{publish-store-6BS7OIP4.js → publish-store-MIPHEDLV.js} +4 -4
- package/dist/chunks/{raster-actions-37XUQSVZ.js → raster-actions-7EI5THLB.js} +1 -1
- package/dist/chunks/{runner-HZ7MU6ER.js → runner-I66TTKKZ.js} +16 -16
- package/dist/chunks/{store-PHWBXKNY.js → store-7WMR3JKP.js} +5 -5
- package/dist/chunks/{sync-IJNKHQRF.js → sync-OFINS45Q.js} +5 -5
- package/dist/chunks/{tabs-G6OTEGA5.js → tabs-PEH6VX3X.js} +8 -8
- package/dist/chunks/{team-M2EN4JT5.js → team-GGW3O32G.js} +1 -1
- package/dist/chunks/{tools-WDFCY4BH.js → tools-TKCA46ZS.js} +2 -2
- package/dist/chunks/{ui-commands-QHFGR33P.js → ui-commands-6K4PYKU5.js} +11 -11
- package/dist/chunks/{versions-S7COCZSQ.js → versions-KHRNQFGF.js} +5 -5
- package/dist/index.js +4 -4
- package/dist/seed/files.json +1 -1
- package/dist/templates/count.js +1 -1
- package/dist/templates/index.js +125 -101
- package/dist/templates/index.json +756 -0
- package/dist/templates/motion/landing-hero/index.js +4 -4
- package/dist/templates/motion/launch-trailer/document.js +125 -101
- package/dist/templates/motion/launch-trailer/index.js +4 -4
- package/dist/templates/motion/launch-trailer/scenes.js +3 -3
- package/dist/templates/motion/template-wall.js +2 -2
- package/dist/templates/print/holidays-christmas-church-newsletter.js +94 -0
- package/dist/templates/print/holidays-christmas-eve-invitation.js +94 -0
- package/dist/templates/print/holidays-christmas-gift-tags.js +94 -0
- package/dist/templates/print/holidays-diwali-party-invitation.js +95 -0
- package/dist/templates/print/holidays-easter-activity-sheet.js +94 -0
- package/dist/templates/print/holidays-easter-egg-hunt-flyer.js +94 -0
- package/dist/templates/print/holidays-eid-dinner-invitation.js +95 -0
- package/dist/templates/print/holidays-eid-gift-tags.js +94 -0
- package/dist/templates/print/holidays-halloween-party-invitation.js +95 -0
- package/dist/templates/print/holidays-halloween-treat-labels.js +94 -0
- package/dist/templates/print/holidays-halloween-trunk-or-treat-poster.js +94 -0
- package/dist/templates/print/holidays-hanukkah-activity-sheet.js +94 -0
- package/dist/templates/print/holidays-hanukkah-party-invitation.js +94 -0
- package/dist/templates/print/holidays-lunar-new-year-banquet-menu.js +95 -0
- package/dist/templates/print/holidays-new-years-eve-poster.js +94 -0
- package/dist/templates/print/holidays-thanksgiving-dinner-menu.js +94 -0
- package/dist/templates/print/holidays-thanksgiving-place-cards.js +94 -0
- package/dist/templates/print/holidays-valentines-dinner-menu.js +94 -0
- package/dist/templates/saas/email-decks.js +2 -2
- package/dist/templates/saas/index.js +37 -37
- package/dist/templates/saas/launch-kit.js +2 -2
- package/dist/templates/saas/launch-video.js +2 -2
- package/dist/templates/saas/stores.js +2 -2
- package/dist/templates/saas/style-bento.js +2 -2
- package/dist/templates/saas/style-dark.js +2 -2
- package/dist/templates/saas/style-editorial.js +2 -2
- package/dist/templates/saas/style-gradient.js +2 -2
- package/dist/templates/saas/style-pastel.js +2 -2
- package/dist/templates/saas/style-swiss.js +2 -2
- package/dist/templates/slideshow/index.js +3 -3
- package/dist/templates/social/holidays-diwali-sweet-shop-post.js +96 -0
- package/dist/templates/social/holidays-lunar-new-year-bakery-post.js +96 -0
- package/dist/templates/social/holidays-new-years-eve-shop-hours.js +96 -0
- package/dist/templates/social/holidays-thanksgiving-pie-orders-post.js +96 -0
- package/dist/templates/social/holidays-valentines-florist-post.js +96 -0
- package/dist/templates/themes/black-friday-coupons.js +2 -2
- package/dist/templates/themes/black-friday-neon.js +2 -2
- package/dist/templates/themes/blueprint.js +2 -2
- package/dist/templates/themes/broadsheet.js +2 -2
- package/dist/templates/themes/cyberpunk.js +2 -2
- package/dist/templates/themes/departure-board.js +2 -2
- package/dist/templates/themes/festival-presale-family-a.js +2 -2
- package/dist/templates/themes/festival-presale-family-b.js +2 -2
- package/dist/templates/themes/holidays-shared.js +172 -0
- package/dist/templates/themes/holidays.js +107 -1
- package/dist/templates/themes/index.js +72 -48
- package/dist/templates/themes/lunar-new-year.js +2 -2
- package/dist/templates/themes/noir.js +2 -2
- package/dist/templates/themes/psychedelic.js +2 -2
- package/dist/templates/themes/space-opera.js +2 -2
- package/dist/templates/themes/studio.js +3 -3
- package/dist/templates/themes/tour-tickets.js +2 -2
- package/dist/templates/themes/vaporwave.js +2 -2
- package/package.json +1 -1
- package/src/templates/print/holidays-christmas-church-newsletter.ts +246 -0
- package/src/templates/print/holidays-christmas-eve-invitation.ts +121 -0
- package/src/templates/print/holidays-christmas-gift-tags.ts +117 -0
- package/src/templates/print/holidays-diwali-party-invitation.ts +98 -0
- package/src/templates/print/holidays-easter-activity-sheet.ts +108 -0
- package/src/templates/print/holidays-easter-egg-hunt-flyer.ts +118 -0
- package/src/templates/print/holidays-eid-dinner-invitation.ts +104 -0
- package/src/templates/print/holidays-eid-gift-tags.ts +94 -0
- package/src/templates/print/holidays-halloween-party-invitation.ts +101 -0
- package/src/templates/print/holidays-halloween-treat-labels.ts +86 -0
- package/src/templates/print/holidays-halloween-trunk-or-treat-poster.ts +148 -0
- package/src/templates/print/holidays-hanukkah-activity-sheet.ts +112 -0
- package/src/templates/print/holidays-hanukkah-party-invitation.ts +112 -0
- package/src/templates/print/holidays-lunar-new-year-banquet-menu.ts +110 -0
- package/src/templates/print/holidays-new-years-eve-poster.ts +117 -0
- package/src/templates/print/holidays-thanksgiving-dinner-menu.ts +110 -0
- package/src/templates/print/holidays-thanksgiving-place-cards.ts +80 -0
- package/src/templates/print/holidays-valentines-dinner-menu.ts +95 -0
- package/src/templates/social/holidays-diwali-sweet-shop-post.ts +121 -0
- package/src/templates/social/holidays-lunar-new-year-bakery-post.ts +110 -0
- package/src/templates/social/holidays-new-years-eve-shop-hours.ts +118 -0
- package/src/templates/social/holidays-thanksgiving-pie-orders-post.ts +115 -0
- package/src/templates/social/holidays-valentines-florist-post.ts +102 -0
- package/src/templates/themes/holidays-shared.ts +903 -0
- package/src/templates/themes/holidays.ts +24 -1
- package/types/templates/src/print/holidays-christmas-church-newsletter.d.ts +2 -0
- package/types/templates/src/print/holidays-christmas-eve-invitation.d.ts +2 -0
- package/types/templates/src/print/holidays-christmas-gift-tags.d.ts +2 -0
- package/types/templates/src/print/holidays-diwali-party-invitation.d.ts +2 -0
- package/types/templates/src/print/holidays-easter-activity-sheet.d.ts +2 -0
- package/types/templates/src/print/holidays-easter-egg-hunt-flyer.d.ts +2 -0
- package/types/templates/src/print/holidays-eid-dinner-invitation.d.ts +2 -0
- package/types/templates/src/print/holidays-eid-gift-tags.d.ts +2 -0
- package/types/templates/src/print/holidays-halloween-party-invitation.d.ts +2 -0
- package/types/templates/src/print/holidays-halloween-treat-labels.d.ts +2 -0
- package/types/templates/src/print/holidays-halloween-trunk-or-treat-poster.d.ts +2 -0
- package/types/templates/src/print/holidays-hanukkah-activity-sheet.d.ts +2 -0
- package/types/templates/src/print/holidays-hanukkah-party-invitation.d.ts +2 -0
- package/types/templates/src/print/holidays-lunar-new-year-banquet-menu.d.ts +2 -0
- package/types/templates/src/print/holidays-new-years-eve-poster.d.ts +2 -0
- package/types/templates/src/print/holidays-thanksgiving-dinner-menu.d.ts +2 -0
- package/types/templates/src/print/holidays-thanksgiving-place-cards.d.ts +2 -0
- package/types/templates/src/print/holidays-valentines-dinner-menu.d.ts +2 -0
- package/types/templates/src/social/holidays-diwali-sweet-shop-post.d.ts +2 -0
- package/types/templates/src/social/holidays-lunar-new-year-bakery-post.d.ts +2 -0
- package/types/templates/src/social/holidays-new-years-eve-shop-hours.d.ts +2 -0
- package/types/templates/src/social/holidays-thanksgiving-pie-orders-post.d.ts +2 -0
- package/types/templates/src/social/holidays-valentines-florist-post.d.ts +2 -0
- package/types/templates/src/themes/holidays-shared.d.ts +374 -0
- package/dist/chunks/chunk-OWZLREWX.js +0 -18
- package/dist/chunks/{chunk-IFJTWD4O.js → chunk-2R3MZKA2.js} +3 -3
- package/dist/chunks/{chunk-P67L32AF.js → chunk-3DBNMCGN.js} +3 -3
- package/dist/chunks/{chunk-DZDTVMUO.js → chunk-3VHOXVMF.js} +3 -3
- package/dist/chunks/{chunk-2PQI2R5L.js → chunk-64RMGOTG.js} +0 -0
- package/dist/chunks/{chunk-7BDCMMSD.js → chunk-6Y46SDFE.js} +3 -3
- package/dist/chunks/{chunk-6VCQ4ZEG.js → chunk-AFARXTNQ.js} +3 -3
- package/dist/chunks/{chunk-ITSYENCT.js → chunk-BI3M4RUH.js} +3 -3
- package/dist/chunks/{chunk-25FM5JIR.js → chunk-BP7CHO7K.js} +3 -3
- package/dist/chunks/{chunk-D22534DX.js → chunk-DPTFZDOS.js} +3 -3
- package/dist/chunks/{chunk-JWLR6K62.js → chunk-FNUM5W3W.js} +3 -3
- package/dist/chunks/{chunk-JPH6HOYU.js → chunk-HJQU5POV.js} +3 -3
- package/dist/chunks/{chunk-HQYZ4URA.js → chunk-IJ65QZLL.js} +3 -3
- package/dist/chunks/{chunk-47VVF5TM.js → chunk-INT2OPPY.js} +8 -8
- package/dist/chunks/{chunk-AYVAHMWQ.js → chunk-JPMLUHZX.js} +3 -3
- package/dist/chunks/{chunk-LFYNAAAQ.js → chunk-LMRTRVPC.js} +3 -3
- package/dist/chunks/{chunk-HJIMF4NA.js → chunk-NGMCQZA6.js} +3 -3
- package/dist/chunks/{chunk-B3ASV6KS.js → chunk-PQBYL7AI.js} +3 -3
- package/dist/chunks/{chunk-NHXNUDC5.js → chunk-QD4QORNR.js} +3 -3
- package/dist/chunks/{chunk-P6TPDLAF.js → chunk-S3C6L5KF.js} +3 -3
- package/dist/chunks/{chunk-TIRPXUK2.js → chunk-S7L2D7NH.js} +3 -3
- package/dist/chunks/{chunk-QFGFR5FQ.js → chunk-TYOOL27R.js} +3 -3
- package/dist/chunks/{chunk-32V4D45K.js → chunk-TYW7EXV6.js} +3 -3
- package/dist/chunks/{chunk-3QIDCP4M.js → chunk-VOEAQIQT.js} +3 -3
- package/dist/chunks/{chunk-ASVDOX62.js → chunk-VVUQG4ME.js} +3 -3
- package/dist/chunks/{chunk-ZXZ22FKF.js → chunk-XTWKSMJC.js} +3 -3
- package/dist/chunks/{chunk-6NG5K7WN.js → chunk-YHEMML5Q.js} +3 -3
- 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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
10082
|
-
import("./editor-seams-
|
|
10083
|
-
import("./live-
|
|
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-
|
|
27
|
+
} from "./chunk-TYOOL27R.js";
|
|
22
28
|
import {
|
|
23
29
|
style_sketch_default
|
|
24
30
|
} from "./chunk-C3RQ5SGY.js";
|
|
25
31
|
import {
|
|
26
|
-
|
|
27
|
-
} from "./chunk-
|
|
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-
|
|
39
|
+
} from "./chunk-ZKRSVNY4.js";
|
|
34
40
|
import {
|
|
35
41
|
style_glass_default
|
|
36
42
|
} from "./chunk-MCUL7OFO.js";
|
|
37
43
|
import {
|
|
38
|
-
|
|
39
|
-
} from "./chunk-
|
|
44
|
+
lottie_default
|
|
45
|
+
} from "./chunk-M6YXBDH5.js";
|
|
40
46
|
import {
|
|
41
47
|
stores_default
|
|
42
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-S3C6L5KF.js";
|
|
43
49
|
import {
|
|
44
50
|
style_bento_default
|
|
45
|
-
} from "./chunk-
|
|
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-
|
|
57
|
+
} from "./chunk-BI3M4RUH.js";
|
|
55
58
|
import {
|
|
56
59
|
launch_kit_default
|
|
57
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-QD4QORNR.js";
|
|
58
61
|
import {
|
|
59
62
|
launch_video_default
|
|
60
|
-
} from "./chunk-
|
|
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";
|
|
@@ -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
|
+
};
|