makeables 0.11.0 → 0.12.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.
@@ -28,7 +28,7 @@ import {
28
28
  submissionMetadataSchema,
29
29
  svgNodeXml,
30
30
  svgPackage
31
- } from "./chunk-DLTVENEP.js";
31
+ } from "./chunk-KLJRRHMY.js";
32
32
 
33
33
  // ../design/dist/chunk-VKBNWHNO.js
34
34
  var t = (id, value, x, baseline, w, size, font, color, extra = {}) => ({
@@ -172,7 +172,7 @@ laminated.material = {
172
172
  speed: 0.4
173
173
  };
174
174
 
175
- // ../design/dist/chunk-KBQZZHRT.js
175
+ // ../design/dist/chunk-OMIJE6EQ.js
176
176
  var andes = design(
177
177
  "andes",
178
178
  "Hack the Andes",
@@ -360,9 +360,9 @@ var archive = design(
360
360
  q(92, 931, 336)
361
361
  ]
362
362
  );
363
- function classic(id, event, title, subtitle, base, ink, accent, font, layout) {
363
+ function classic(id, event, title, subtitle, base, ink2, accent, font, layout) {
364
364
  const variant = layout === "winter" ? "snow" : layout === "postage" ? "postal" : "grid";
365
- const decoration = () => [g("paper", "paper", 0, 0, 1024, 1536, base, accent, { variant, ink })];
365
+ const decoration = () => [g("paper", "paper", 0, 0, 1024, 1536, base, accent, { variant, ink: ink2 })];
366
366
  const x = layout === "terminal" ? 102 : layout === "postage" ? 160 : 140;
367
367
  const y = layout === "winter" ? 397 : layout === "postage" ? 412 : 367;
368
368
  const w = 1024 - x * 2;
@@ -406,34 +406,34 @@ function classic(id, event, title, subtitle, base, ink, accent, font, layout) {
406
406
  layout === "postage" ? 695 : 866,
407
407
  title.length > 1 ? 85 : 105,
408
408
  font,
409
- ink
409
+ ink2
410
410
  )
411
411
  ),
412
- t("name", "$name", 78, 1280, 850, 95, font, ink, upper),
412
+ t("name", "$name", 78, 1280, 850, 95, font, ink2, upper),
413
413
  t("role", "$role", 84, 1338, 390, 27, "mono", accent, { ...upper, prefix: "\u2197 " }),
414
- t("organization", "$organization", 548, 1338, 390, 23, "mono", ink, { align: "right" }),
415
- s("footer-rule", 82, 1380, 860, 1.5, `${ink}70`),
416
- t("location", "$location", 84, 1444, 700, 20, "mono", ink),
414
+ t("organization", "$organization", 548, 1338, 390, 23, "mono", ink2, { align: "right" }),
415
+ s("footer-rule", 82, 1380, 860, 1.5, `${ink2}70`),
416
+ t("location", "$location", 84, 1444, 700, 20, "mono", ink2),
417
417
  t("number", "$number", 765, 1476, 175, 18, "mono", accent, { prefix: "N\xBA ", align: "right" })
418
418
  ];
419
419
  const back = [
420
420
  ...decoration(),
421
421
  { ...s("back-panel", 54, 110, 916, 1278, `${base}e8`), channel: "print" },
422
- g("back-motif", "grid", 0, 0, 1024, 1536, base, accent, { variant, ink, reverse: true }),
423
- t("event", "$event", 82, 176, 710, 40, font, ink, upper),
422
+ g("back-motif", "grid", 0, 0, 1024, 1536, base, accent, { variant, ink: ink2, reverse: true }),
423
+ t("event", "$event", 82, 176, 710, 40, font, ink2, upper),
424
424
  t("reverse", "REVERSE", 770, 173, 170, 17, "mono", accent, { align: "right" }),
425
- s("header-rule", 82, 217, 860, 1.5, `${ink}65`),
425
+ s("header-rule", 82, 217, 860, 1.5, `${ink2}65`),
426
426
  t("person-label", "THE PERSON", 84, 280, 850, 20, "mono", accent),
427
- t("name", "$name", 79, 380, 850, 95, font, ink, upper),
428
- t("role", "{role} / {organization}", 84, 436, 840, 29, "mono", ink, { binding: "template" }),
429
- s("identity-rule", 82, 483, 860, 1.5, `${ink}55`),
427
+ t("name", "$name", 79, 380, 850, 95, font, ink2, upper),
428
+ t("role", "{role} / {organization}", 84, 436, 840, 29, "mono", ink2, { binding: "template" }),
429
+ s("identity-rule", 82, 483, 860, 1.5, `${ink2}55`),
430
430
  t("edition-label", "THE EDITION", 84, 546, 850, 20, "mono", accent),
431
- t("subtitle", subtitle, 80, 622, 850, 51, font, ink),
432
- t("location", "$location", 84, 674, 850, 26, "mono", ink),
433
- s("meeting-rule", 82, 720, 860, 1.5, `${ink}55`),
431
+ t("subtitle", subtitle, 80, 622, 850, 51, font, ink2),
432
+ t("location", "$location", 84, 674, 850, 26, "mono", ink2),
433
+ s("meeting-rule", 82, 720, 860, 1.5, `${ink2}55`),
434
434
  t("explore", "KEEP EXPLORING", 84, 786, 850, 20, "mono", accent),
435
- t("ideas", "Ideas travel.", 502, 905, 410, 48, font, ink),
436
- t("further", "Take yours further.", 502, 969, 410, 33, "serif", ink),
435
+ t("ideas", "Ideas travel.", 502, 905, 410, 48, font, ink2),
436
+ t("further", "Take yours further.", 502, 969, 410, 33, "serif", ink2),
437
437
  t("website", "$website", 502, 1040, 405, 19, "mono", accent),
438
438
  g("stamp", "stamp", 594, 1076, 128, 128, accent),
439
439
  t("stamp-label", "BUILDER", 609, 1134, 98, 15, "mono", accent, {
@@ -448,11 +448,11 @@ function classic(id, event, title, subtitle, base, ink, accent, font, layout) {
448
448
  x: 610.8281764208984,
449
449
  y: 1143.8534330767354
450
450
  }),
451
- s("footer-rule", 82, 1260, 860, 1.5, `${ink}55`),
452
- t("closing", "Una persona. Muchas formas de crear.", 84, 1324, 850, 31, font, ink),
451
+ s("footer-rule", 82, 1260, 860, 1.5, `${ink2}55`),
452
+ t("closing", "Una persona. Muchas formas de crear.", 84, 1324, 850, 31, font, ink2),
453
453
  t("signature", "$signature", 84, 1380, 840, 20, "mono", accent, { prefix: "ID " }),
454
- s("bottom-rule", 82, 1418, 860, 1.5, `${ink}55`),
455
- t("footer", "BADGE STUDY / INSPIRED EDITION", 84, 1468, 730, 17, "mono", ink),
454
+ s("bottom-rule", 82, 1418, 860, 1.5, `${ink2}55`),
455
+ t("footer", "BADGE STUDY / INSPIRED EDITION", 84, 1468, 730, 17, "mono", ink2),
456
456
  t("number", "$number", 790, 1468, 150, 20, "mono", accent, { prefix: "N\xBA ", align: "right" }),
457
457
  { ...q(84, 823, 374), foreground: "#141414", maxCellSize: 10 }
458
458
  ];
@@ -864,6 +864,34 @@ var collectionDesigns = [
864
864
  archive,
865
865
  laminated
866
866
  ].map((value) => badgeDesignSchema.parse(value));
867
+ var ink = "#141414";
868
+ var paper = "#f4f4f1";
869
+ var blankBadge = design(
870
+ "blank",
871
+ "Untitled",
872
+ "Blank badge: bindings, portrait and QR, ready for a brand.",
873
+ paper,
874
+ [
875
+ t("event", "$event", 82, 300, 860, 96, "brand", ink, upper),
876
+ p(174, 380, 676, 760),
877
+ t("name", "$name", 81, 1292, 866, 91, "display", ink, upper),
878
+ s("number-plate", 81, 1345, 116, 89, ink),
879
+ t("number", "$number", 101, 1403, 90, 30, "mono", paper, { prefix: "" }),
880
+ t("role", "$role", 230, 1388, 692, 30, "mono", ink, upper),
881
+ t("organization", "$organization", 231, 1430, 692, 23, "mono", ink),
882
+ rule("footer-rule", 1470, ink, 82, 859)
883
+ ],
884
+ [
885
+ t("event", "$event", 82, 300, 860, 96, "brand", ink, upper),
886
+ t("name", "$name", 82, 553, 861, 89, "display", ink, upper),
887
+ t("role", "$role", 82, 646, 860, 30, "mono", ink, upper),
888
+ t("organization", "$organization", 82, 700, 860, 27, "mono", ink),
889
+ { ...s("qr-paper", 76, 958, 388, 388, "#ffffff"), protectMaterial: true },
890
+ q(92, 974, 360),
891
+ t("website", "$website", 86, 1405, 840, 20, "mono", ink),
892
+ rule("footer-rule", 1457, ink, 82, 859)
893
+ ]
894
+ );
867
895
 
868
896
  // ../design/dist/index.js
869
897
  import { z } from "zod";
@@ -1621,7 +1649,7 @@ var cardDirections = {
1621
1649
  }
1622
1650
  };
1623
1651
  function cardReverse(slug, original) {
1624
- const { base, ink, accent } = cardDirections[slug];
1652
+ const { base, ink: ink2, accent } = cardDirections[slug];
1625
1653
  const motif2 = (index, box2, opacity = 1) => {
1626
1654
  const source = original[index - 1];
1627
1655
  const scale = Math.min(box2[2] / source.w, box2[3] / source.h);
@@ -1637,9 +1665,9 @@ function cardReverse(slug, original) {
1637
1665
  opacity
1638
1666
  };
1639
1667
  };
1640
- const label = (id, value, x, y, w = 900, color = ink) => text(id, value, [x, y, w, 28], color, 14);
1641
- const title = (value, x = 80, y = 260, w = 900, size = 88, font = "sans") => text("reverse-title", value, [x, y, w, size * 2.5], ink, size, font, "600");
1642
- const line2 = (id, y, color = ink) => path(id, [80, y, 1040, 2], "M0 1H1040", color, 1, 0.5);
1668
+ const label = (id, value, x, y, w = 900, color = ink2) => text(id, value, [x, y, w, 28], color, 14);
1669
+ const title = (value, x = 80, y = 260, w = 900, size = 88, font = "sans") => text("reverse-title", value, [x, y, w, size * 2.5], ink2, size, font, "600");
1670
+ const line2 = (id, y, color = ink2) => path(id, [80, y, 1040, 2], "M0 1H1040", color, 1, 0.5);
1643
1671
  const frame = () => field("reverse-frame", "M40 40H1160V716H40Z", accent, 1, 0.5);
1644
1672
  let layers;
1645
1673
  switch (slug) {
@@ -1688,7 +1716,7 @@ function cardReverse(slug, original) {
1688
1716
  rect("save-panel-shadow", [105, 156, 990, 400], "#130e29"),
1689
1717
  rect("save-panel", [92, 143, 990, 400], "#684369"),
1690
1718
  rect("save-inset", [104, 155, 966, 376], "#2c2047"),
1691
- text("save-title", "SAVE COMPLETE", [158, 211, 820, 85], ink, 53, "pixel"),
1719
+ text("save-title", "SAVE COMPLETE", [158, 211, 820, 85], ink2, 53, "pixel"),
1692
1720
  label("save-message", "A GOOD PLACE TO BEGIN AGAIN.", 161, 323, 860),
1693
1721
  ...Array.from(
1694
1722
  { length: 12 },
@@ -1705,13 +1733,13 @@ function cardReverse(slug, original) {
1705
1733
  rect("obsidian-veil", [0, 0, 1200, 756], "#070909", 0, 0.58),
1706
1734
  frame(),
1707
1735
  field("inner-gold-rim", "M58 58H1142V698H58Z", accent, 1, 0.2),
1708
- text("private-reverse", "PRIVATE EDITION", [80, 79, 1030, 30], ink, 17),
1736
+ text("private-reverse", "PRIVATE EDITION", [80, 79, 1030, 30], ink2, 17),
1709
1737
  motif2(8, [442, 175, 318, 137]),
1710
1738
  text(
1711
1739
  "builders-manifesto",
1712
1740
  "BUILD. SHIP. REPEAT.",
1713
1741
  [180, 389, 850, 75],
1714
- ink,
1742
+ ink2,
1715
1743
  43,
1716
1744
  "sans",
1717
1745
  "500"
@@ -1730,13 +1758,13 @@ function cardReverse(slug, original) {
1730
1758
  "dream-letter",
1731
1759
  "see you on\nthe other side.",
1732
1760
  [96, 224, 970, 235],
1733
- ink,
1761
+ ink2,
1734
1762
  86,
1735
1763
  "serif",
1736
1764
  "400"
1737
1765
  ),
1738
1766
  label("dream-index", "DREAM SEQUENCE / AN AFTERNOON NOTE", 99, 85),
1739
- path("postcard-line", [99, 556, 606, 2], "M0 1H606", ink, 1, 0.5),
1767
+ path("postcard-line", [99, 556, 606, 2], "M0 1H606", ink2, 1, 0.5),
1740
1768
  label("dream-address", "SOMEWHERE, AT 4:07 PM.", 99, 592, 710),
1741
1769
  motif2(31, [844, 90, 238, 72])
1742
1770
  ];
@@ -1761,7 +1789,7 @@ function cardReverse(slug, original) {
1761
1789
  gradient("arcade-panel", ["#120d20", "#341136"]),
1762
1790
  grid("arcade-grid", [0, 0, 1200, 756], "#a653b8", 28, 0.07),
1763
1791
  label("arcade-index", "EXTRA LIFE / PLAYER ONE", 82, 77),
1764
- text("continue-question", "CONTINUE?", [79, 203, 1050, 111], ink, 77, "pixel"),
1792
+ text("continue-question", "CONTINUE?", [79, 203, 1050, 111], ink2, 77, "pixel"),
1765
1793
  ...[0, 1, 2].map((i) => ({
1766
1794
  ...motif2(20, [88 + i * 126, 376, 92, 85], i < 2 ? 1 : 0.22),
1767
1795
  id: `life-${i}`
@@ -1782,25 +1810,25 @@ function cardReverse(slug, original) {
1782
1810
  path("blue-quarter", [738, 395, 302, 302], "M0 0H302V302A302 302 0 0 1 0 0Z", "#29455a"),
1783
1811
  title("FORM &\nFUNCTION", 84, 222, 855, 79),
1784
1812
  label("study-caption", "COMPOSITION STUDY / 02", 88, 83),
1785
- path("study-rule", [86, 542, 550, 2], "M0 1H550", ink, 1),
1813
+ path("study-rule", [86, 542, 550, 2], "M0 1H550", ink2, 1),
1786
1814
  label("study-note", "BALANCE, WITH ROOM TO PLAY.", 88, 593, 660),
1787
- circle("registration-mark", 89, 683, 4, ink)
1815
+ circle("registration-mark", 89, 683, 4, ink2)
1788
1816
  ];
1789
1817
  break;
1790
1818
  case "garra-29":
1791
1819
  layers = [
1792
1820
  gradient("maroon-enamel", ["#8d1828", "#b02138"]),
1793
1821
  film("heritage-grain", "grain", ["#a6192e", "#d49a9a", "#5b1120"], 0.04),
1794
- field("cream-frame", "M38 38H1162V718H38Z", ink, 1.5, 0.8),
1795
- text("heritage-number", "29", [83, 257, 534, 302], ink, 218, "sans", "800"),
1796
- text("one-legacy", "ONE\nLEGACY.", [704, 390, 438, 151], ink, 57, "sans", "700"),
1822
+ field("cream-frame", "M38 38H1162V718H38Z", ink2, 1.5, 0.8),
1823
+ text("heritage-number", "29", [83, 257, 534, 302], ink2, 218, "sans", "800"),
1824
+ text("one-legacy", "ONE\nLEGACY.", [704, 390, 438, 151], ink2, 57, "sans", "700"),
1797
1825
  ...Array.from(
1798
1826
  { length: 29 },
1799
1827
  (_, i) => path(
1800
1828
  `championship-star-${i + 1}`,
1801
1829
  [90 + i % 15 * 48, 126 + Math.floor(i / 15) * 43, 22, 22],
1802
1830
  smallStar(11, 11, 10),
1803
- ink
1831
+ ink2
1804
1832
  )
1805
1833
  ),
1806
1834
  label("heritage-origin", "GARRA CREMA / LIMA, 1924", 87, 79),
@@ -1853,13 +1881,13 @@ function cardReverse(slug, original) {
1853
1881
  gradient("warm-paper", ["#f7f2e8", "#e7e2d8"]),
1854
1882
  grid("measuring-field", [81, 135, 1038, 479], "#bbb2a2", 39, 0.17),
1855
1883
  rect("vermilion-spine", [80, 135, 21, 478], accent),
1856
- text("second-interval", "02", [786, 364, 337, 238], ink, 180, "sans", "400"),
1884
+ text("second-interval", "02", [786, 364, 337, 238], ink2, 180, "sans", "400"),
1857
1885
  label("interval-title", "INTERVAL / THE SPACE BETWEEN", 81, 79),
1858
1886
  title("ROOM\nTO THINK.", 130, 221, 700, 73),
1859
1887
  field(
1860
1888
  "calibration-ticks",
1861
1889
  Array.from({ length: 27 }, (_, i) => `M${83 + i * 39} 641v${i % 3 ? 9 : 22}`).join(""),
1862
- ink,
1890
+ ink2,
1863
1891
  1,
1864
1892
  0.65
1865
1893
  ),
@@ -1981,10 +2009,10 @@ function cardReverse(slug, original) {
1981
2009
  rect("status-titlebar", [166, 151, 864, 53], "#304976"),
1982
2010
  text("status-title", "REVERSE SIDE", [192, 166, 788, 37], "#ffffff", 23),
1983
2011
  ...["LAYERS : OPEN", "MATERIAL : LIVE", "STATUS : READY"].map(
1984
- (value, i) => text(`status-row-${i}`, value, [238, 266 + i * 69, 745, 47], ink, 28)
2012
+ (value, i) => text(`status-row-${i}`, value, [238, 266 + i * 69, 745, 47], ink2, 28)
1985
2013
  ),
1986
2014
  rect("status-button", [790, 480, 194, 57], "#dfe5ee"),
1987
- text("status-ok", "OK", [858, 495, 92, 36], ink, 24),
2015
+ text("status-ok", "OK", [858, 495, 92, 36], ink2, 24),
1988
2016
  label("local-note", "SYSTEM DIALOG / LOCAL SESSION", 154, 654)
1989
2017
  ];
1990
2018
  break;
@@ -1993,8 +2021,8 @@ function cardReverse(slug, original) {
1993
2021
  gradient("brushed-silver", ["#eceee7", "#c9d1c8"]),
1994
2022
  grid("maker-grid", [40, 40, 1120, 676], "#839589", 40, 0.13),
1995
2023
  label("maker-index", "VIBECODERS / REVERSE ENGINEERING", 85, 84),
1996
- path("opening-bracket", [81, 244, 82, 231], "M82 0L0 115L82 231", ink, 3),
1997
- path("closing-bracket", [1037, 244, 82, 231], "M0 0L82 115L0 231", ink, 3),
2024
+ path("opening-bracket", [81, 244, 82, 231], "M82 0L0 115L82 231", ink2, 3),
2025
+ path("closing-bracket", [1037, 244, 82, 231], "M0 0L82 115L0 231", ink2, 3),
1998
2026
  title("MAKE\nIT REAL.", 234, 216, 760, 97),
1999
2027
  rect("cursor", [787, 422, 20, 75], "#476953"),
2000
2028
  line2("maker-rule", 571),
@@ -2077,7 +2105,7 @@ function line(id, x, y, w, color) {
2077
2105
  function effect(id, kind, colors, opacity) {
2078
2106
  return { id, kind: "effect", effect: kind, ...canvas, colors, scale: 1.3, opacity };
2079
2107
  }
2080
- function style(id, name, description, palette2, ink, material, layers) {
2108
+ function style(id, name, description, palette2, ink2, material, layers) {
2081
2109
  return badgeDesignSchema.parse({
2082
2110
  version: 1,
2083
2111
  product: "card",
@@ -2102,18 +2130,18 @@ function style(id, name, description, palette2, ink, material, layers) {
2102
2130
  ]
2103
2131
  },
2104
2132
  ...layers,
2105
- text2("wordmark", "makeables", 74, 62, 570, 38, ink),
2106
- text2("edition", "MATERIAL STUDIES", 76, 123, 570, 16, ink),
2107
- text2("title", name.toUpperCase(), 76, 500, 760, 25, ink),
2108
- text2("series", "DESIGNED TO BE YOURS", 78, 542, 660, 13, ink),
2109
- line("title-rule", 76, 589, 1028, ink),
2133
+ text2("wordmark", "makeables", 74, 62, 570, 38, ink2),
2134
+ text2("edition", "MATERIAL STUDIES", 76, 123, 570, 16, ink2),
2135
+ text2("title", name.toUpperCase(), 76, 500, 760, 25, ink2),
2136
+ text2("series", "DESIGNED TO BE YOURS", 78, 542, 660, 13, ink2),
2137
+ line("title-rule", 76, 589, 1028, ink2),
2110
2138
  cardMarkLayer("chip", { mark: "chip", slot: "middle-left", color: "#c7d0d9" }),
2111
- cardMarkLayer("contactless", { mark: "contactless", slot: "upper-right", color: ink }),
2139
+ cardMarkLayer("contactless", { mark: "contactless", slot: "upper-right", color: ink2 }),
2112
2140
  cardMarkLayer("network", {
2113
2141
  mark: "network",
2114
2142
  slot: "lower-right",
2115
2143
  network: "visa",
2116
- colorMode: ink === "#ffffff" ? "white" : "black",
2144
+ colorMode: ink2 === "#ffffff" ? "white" : "black",
2117
2145
  visaVariant: "plain"
2118
2146
  })
2119
2147
  ]
@@ -2130,16 +2158,16 @@ function style(id, name, description, palette2, ink, material, layers) {
2130
2158
  y: 90,
2131
2159
  w: 1200,
2132
2160
  h: 130,
2133
- color: ink,
2161
+ color: ink2,
2134
2162
  radius: 0,
2135
2163
  stroke: 0,
2136
2164
  opacity: 0.9
2137
2165
  },
2138
- text2("reverse-wordmark", "makeables / material studies", 76, 310, 1040, 24, ink),
2139
- line("reverse-rule", 76, 380, 1048, ink),
2140
- text2("reverse-title", name.toUpperCase(), 76, 430, 1e3, 46, ink),
2141
- text2("reverse-caption", "A SMALL CANVAS. ENDLESS POSSIBILITIES.", 78, 524, 1020, 16, ink),
2142
- text2("reverse-footer", "ORIGINAL ARTWORK / MAKEABLES", 78, 658, 1e3, 13, ink)
2166
+ text2("reverse-wordmark", "makeables / material studies", 76, 310, 1040, 24, ink2),
2167
+ line("reverse-rule", 76, 380, 1048, ink2),
2168
+ text2("reverse-title", name.toUpperCase(), 76, 430, 1e3, 46, ink2),
2169
+ text2("reverse-caption", "A SMALL CANVAS. ENDLESS POSSIBILITIES.", 78, 524, 1020, 16, ink2),
2170
+ text2("reverse-footer", "ORIGINAL ARTWORK / MAKEABLES", 78, 658, 1e3, 13, ink2)
2143
2171
  ]
2144
2172
  }
2145
2173
  });
@@ -19000,7 +19028,7 @@ function motif(ctx, edition, seed, reverse = false) {
19000
19028
  }
19001
19029
  ctx.restore();
19002
19030
  }
19003
- function paper(ctx, edition, seed) {
19031
+ function paper2(ctx, edition, seed) {
19004
19032
  ctx.fillStyle = edition.base;
19005
19033
  ctx.fillRect(0, 0, 1024, 1536);
19006
19034
  motif(ctx, edition, seed);
@@ -19283,7 +19311,7 @@ function paintDesignGraphic(ctx, layer) {
19283
19311
  typeface: "mono"
19284
19312
  };
19285
19313
  if (pattern === "paper") {
19286
- paper(ctx, { ...edition, ink: layer.ink ?? accent }, seed);
19314
+ paper2(ctx, { ...edition, ink: layer.ink ?? accent }, seed);
19287
19315
  } else motif(ctx, edition, seed, layer.reverse);
19288
19316
  }
19289
19317
  }
@@ -19898,9 +19926,9 @@ function fillHoles(mask, width, height, maxArea) {
19898
19926
  }
19899
19927
  function stickerCutMask(alpha, width, height, border, widthMm = defaultStickerWidthMm, contour) {
19900
19928
  const pixelsPerMm = width / widthMm;
19901
- const ink = new Uint8Array(width * height);
19902
- for (let i = 0; i < ink.length; i++) ink[i] = alpha[i * 4 + 3] > inked ? 1 : 0;
19903
- const offset = border ? threshold(contour ?? maskDistance(ink, width, height), border + 0.5) : ink;
19929
+ const ink2 = new Uint8Array(width * height);
19930
+ for (let i = 0; i < ink2.length; i++) ink2[i] = alpha[i * 4 + 3] > inked ? 1 : 0;
19931
+ const offset = border ? threshold(contour ?? maskDistance(ink2, width, height), border + 0.5) : ink2;
19904
19932
  const radius = notchRadiusMm * pixelsPerMm;
19905
19933
  const grown = threshold(maskDistance(offset, width, height), radius + 0.5);
19906
19934
  const closed = invert(threshold(maskDistance(invert(grown), width, height, true), radius + 0.5));
@@ -20938,9 +20966,9 @@ function prepareSheetItem(sheet, widthMm, source, design2) {
20938
20966
  }
20939
20967
  let white;
20940
20968
  if (spec.type.white) {
20941
- const ink = new Uint8Array(flat.width * flat.height);
20942
- for (let i = 0; i < ink.length; i++) ink[i] = flat.rgba[i * 4 + 3] > 16 ? 1 : 0;
20943
- white = traceMask(ink, flat.width, flat.height).map((loop) => ({
20969
+ const ink2 = new Uint8Array(flat.width * flat.height);
20970
+ for (let i = 0; i < ink2.length; i++) ink2[i] = flat.rgba[i * 4 + 3] > 16 ? 1 : 0;
20971
+ white = traceMask(ink2, flat.width, flat.height).map((loop) => ({
20944
20972
  hole: false,
20945
20973
  points: loop.map(([x, y]) => [x / pixelsPerMm, y / pixelsPerMm])
20946
20974
  }));
@@ -21828,7 +21856,7 @@ async function readSubmission(file, allowKit = true) {
21828
21856
  );
21829
21857
  if (value && typeof value === "object" && "format" in value && value.format === "makeables-kit") {
21830
21858
  if (!allowKit) throw new InputError("Nested kits are not supported.");
21831
- return (await import("./kit-IEWHMBS2.js")).prepareKit(file);
21859
+ return (await import("./kit-SZ4WFGHZ.js")).prepareKit(file);
21832
21860
  }
21833
21861
  if (value && typeof value === "object" && "format" in value && value.format === "makeables-package")
21834
21862
  return readPackageJson(value);
@@ -22031,6 +22059,7 @@ export {
22031
22059
  listCardDesigns,
22032
22060
  writeAtomic,
22033
22061
  newCard,
22062
+ badgeAssets,
22034
22063
  readBadge,
22035
22064
  newBadge,
22036
22065
  side,