splatoon-ui 0.1.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 (351) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +5 -0
  3. package/README.md +233 -0
  4. package/README_EN.md +236 -0
  5. package/README_JA.md +230 -0
  6. package/dist/chunk-KUURJUBW.js +2344 -0
  7. package/dist/chunk-KUURJUBW.js.map +1 -0
  8. package/dist/client.css +2634 -0
  9. package/dist/client.css.map +1 -0
  10. package/dist/client.d.ts +1012 -0
  11. package/dist/client.js +7708 -0
  12. package/dist/client.js.map +1 -0
  13. package/dist/server.css +1091 -0
  14. package/dist/server.css.map +1 -0
  15. package/dist/server.d.ts +813 -0
  16. package/dist/server.js +117 -0
  17. package/dist/server.js.map +1 -0
  18. package/dist/styles.css +4225 -0
  19. package/package.json +119 -0
  20. package/public/_images/backgrounds/base-bg-pattern-2x.jpg +0 -0
  21. package/public/_images/backgrounds/base-bg-pattern.jpg +0 -0
  22. package/public/_images/backgrounds/camo-black-2x.png +0 -0
  23. package/public/_images/backgrounds/camo-black-2x.webp +0 -0
  24. package/public/_images/backgrounds/camo-black.png +0 -0
  25. package/public/_images/backgrounds/camo-green-2x.png +0 -0
  26. package/public/_images/backgrounds/camo-green.png +0 -0
  27. package/public/_images/backgrounds/camo-orange-2x.png +0 -0
  28. package/public/_images/backgrounds/camo-orange.png +0 -0
  29. package/public/_images/backgrounds/camo-purple-2x.png +0 -0
  30. package/public/_images/backgrounds/camo-purple-revised-2x.png +0 -0
  31. package/public/_images/backgrounds/camo-purple-revised.png +0 -0
  32. package/public/_images/backgrounds/camo-purple.png +0 -0
  33. package/public/_images/backgrounds/camo-red-2x.png +0 -0
  34. package/public/_images/backgrounds/camo-red.png +0 -0
  35. package/public/_images/backgrounds/camo-white-2x.png +0 -0
  36. package/public/_images/backgrounds/camo-white-outline-2x.png +0 -0
  37. package/public/_images/backgrounds/camo-white-outline.png +0 -0
  38. package/public/_images/backgrounds/camo-white.png +0 -0
  39. package/public/_images/backgrounds/chip-white-2x.png +0 -0
  40. package/public/_images/backgrounds/chip-white.png +0 -0
  41. package/public/_images/backgrounds/circles-green-2x.png +0 -0
  42. package/public/_images/backgrounds/circles-green.png +0 -0
  43. package/public/_images/backgrounds/graffiti-2x.jpg +0 -0
  44. package/public/_images/backgrounds/graffiti-medium-up-2x.jpg +0 -0
  45. package/public/_images/backgrounds/graffiti-medium-up.jpg +0 -0
  46. package/public/_images/backgrounds/graffiti.jpg +0 -0
  47. package/public/_images/backgrounds/hardware-background-2x.png +0 -0
  48. package/public/_images/backgrounds/hardware-background-medium-up-2x.png +0 -0
  49. package/public/_images/backgrounds/hardware-background-medium-up.png +0 -0
  50. package/public/_images/backgrounds/hardware-background.png +0 -0
  51. package/public/_images/backgrounds/monsters-black-2x.png +0 -0
  52. package/public/_images/backgrounds/monsters-black.png +0 -0
  53. package/public/_images/backgrounds/octo-black-2x.png +0 -0
  54. package/public/_images/backgrounds/octo-black.png +0 -0
  55. package/public/_images/backgrounds/octo-red-2x.png +0 -0
  56. package/public/_images/backgrounds/octo-red.png +0 -0
  57. package/public/_images/backgrounds/octoarrow-green-2x.png +0 -0
  58. package/public/_images/backgrounds/octoarrow-green.png +0 -0
  59. package/public/_images/backgrounds/octoarrow-orange-2x.png +0 -0
  60. package/public/_images/backgrounds/octoarrow-orange.png +0 -0
  61. package/public/_images/backgrounds/squid-black-2x.png +0 -0
  62. package/public/_images/backgrounds/squid-black.png +0 -0
  63. package/public/_images/backgrounds/tapes-black-2x.jpg +0 -0
  64. package/public/_images/backgrounds/tapes-black-2x.webp +0 -0
  65. package/public/_images/backgrounds/tapes-black.jpg +0 -0
  66. package/public/_images/backgrounds/tapes-black.webp +0 -0
  67. package/public/_images/backgrounds/tapes-green-2x.jpg +0 -0
  68. package/public/_images/backgrounds/tapes-green-2x.webp +0 -0
  69. package/public/_images/backgrounds/tapes-green.jpg +0 -0
  70. package/public/_images/backgrounds/tapes-green.webp +0 -0
  71. package/public/_images/backgrounds/tapes-pattern-2x.jpg +0 -0
  72. package/public/_images/backgrounds/tapes-pattern.jpg +0 -0
  73. package/public/_images/backgrounds/tapes-purple-2x.jpg +0 -0
  74. package/public/_images/backgrounds/tapes-purple-2x.webp +0 -0
  75. package/public/_images/backgrounds/tapes-purple.jpg +0 -0
  76. package/public/_images/backgrounds/tapes-purple.webp +0 -0
  77. package/public/_images/banners/banner-blue-2x.png +0 -0
  78. package/public/_images/banners/banner-blue-medium-up-2x.png +0 -0
  79. package/public/_images/banners/banner-blue-medium-up.png +0 -0
  80. package/public/_images/banners/banner-blue.png +0 -0
  81. package/public/_images/banners/banner-design1-2x.png +0 -0
  82. package/public/_images/banners/banner-design1-medium-up-2x.png +0 -0
  83. package/public/_images/banners/banner-design1-medium-up.png +0 -0
  84. package/public/_images/banners/banner-design1.png +0 -0
  85. package/public/_images/banners/banner-design2-2x.png +0 -0
  86. package/public/_images/banners/banner-design2-medium-up-2x.png +0 -0
  87. package/public/_images/banners/banner-design2-medium-up.png +0 -0
  88. package/public/_images/banners/banner-design2.png +0 -0
  89. package/public/_images/banners/banner-design3-2x.png +0 -0
  90. package/public/_images/banners/banner-design3-medium-up-2x.png +0 -0
  91. package/public/_images/banners/banner-design3-medium-up.png +0 -0
  92. package/public/_images/banners/banner-design3.png +0 -0
  93. package/public/_images/banners/banner-green-2x.png +0 -0
  94. package/public/_images/banners/banner-green-medium-up-2x.png +0 -0
  95. package/public/_images/banners/banner-green-medium-up.png +0 -0
  96. package/public/_images/banners/banner-green.png +0 -0
  97. package/public/_images/banners/banner-orange-2x.png +0 -0
  98. package/public/_images/banners/banner-orange-medium-up-2x.png +0 -0
  99. package/public/_images/banners/banner-orange-medium-up.png +0 -0
  100. package/public/_images/banners/banner-orange.png +0 -0
  101. package/public/_images/banners/banner-purple-2x.png +0 -0
  102. package/public/_images/banners/banner-purple-medium-up-2x.png +0 -0
  103. package/public/_images/banners/banner-purple-medium-up.png +0 -0
  104. package/public/_images/banners/banner-purple.png +0 -0
  105. package/public/_images/banners/banner-red-2x.png +0 -0
  106. package/public/_images/banners/banner-red-medium-up-2x.png +0 -0
  107. package/public/_images/banners/banner-red-medium-up.png +0 -0
  108. package/public/_images/banners/banner-red.png +0 -0
  109. package/public/_images/banners/banner-yellow-2x.png +0 -0
  110. package/public/_images/banners/banner-yellow-medium-up-2x.png +0 -0
  111. package/public/_images/banners/banner-yellow-medium-up.png +0 -0
  112. package/public/_images/banners/banner-yellow.png +0 -0
  113. package/public/_images/characters/char-10.png +0 -0
  114. package/public/_images/characters/char-11.png +0 -0
  115. package/public/_images/characters/char-12.png +0 -0
  116. package/public/_images/characters/char-13.png +0 -0
  117. package/public/_images/characters/char-14.png +0 -0
  118. package/public/_images/characters/char-15.png +0 -0
  119. package/public/_images/characters/char-17.png +0 -0
  120. package/public/_images/characters/char-18.png +0 -0
  121. package/public/_images/characters/char-2.png +0 -0
  122. package/public/_images/characters/char-3.png +0 -0
  123. package/public/_images/characters/char-4.png +0 -0
  124. package/public/_images/characters/char-5.png +0 -0
  125. package/public/_images/characters/char-7.png +0 -0
  126. package/public/_images/characters/char-8.png +0 -0
  127. package/public/_images/characters/game-pack.png +0 -0
  128. package/public/_images/characters/salmonid.png +0 -0
  129. package/public/_images/events/active-splat-2x.webp +0 -0
  130. package/public/_images/events/active-splat.webp +0 -0
  131. package/public/_images/events/big-run-callout.jpg +0 -0
  132. package/public/_images/events/golden-egg.png +0 -0
  133. package/public/_images/events/splatnet-blade.jpg +0 -0
  134. package/public/_images/events/splatnet-next-page.png +0 -0
  135. package/public/_images/gameplay/battle-online/gameplay-battle-online-anarchy-1.jpg +0 -0
  136. package/public/_images/gameplay/battle-online/gameplay-battle-online-turfwar-left-screen.jpg +0 -0
  137. package/public/_images/gameplay/battle-online/gameplay-battle-online-turfwar-right-screen.jpg +0 -0
  138. package/public/_images/gameplay/gameplay-salmonrun.jpg +0 -0
  139. package/public/_images/gameplay/splatfest/gameplay-splatfest-1.jpg +0 -0
  140. package/public/_images/gameplay/splatfest/gameplay-splatfest-2.jpg +0 -0
  141. package/public/_images/home/character.png +0 -0
  142. package/public/_images/home/header-back.jpg +0 -0
  143. package/public/_images/home/s3-home-intro-blade.jpg +0 -0
  144. package/public/_images/news/news-staple-left.png +0 -0
  145. package/public/_images/news/news-staple-right.png +0 -0
  146. package/public/_images/news/next-page.png +0 -0
  147. package/public/_images/screenshots/video-trailer.jpg +0 -0
  148. package/public/_images/squid/ika.png +0 -0
  149. package/public/_images/squid/loader-morph-sprite.png +0 -0
  150. package/public/_images/squid/loader-swim-sprite.png +0 -0
  151. package/public/_images/squid/loader_ika.gif +0 -0
  152. package/public/_images/svg/icon-pagination.svg +1 -0
  153. package/public/_images/svg/left-black-tape-container.svg +1 -0
  154. package/public/_images/svg/left-tape.svg +9 -0
  155. package/public/_images/svg/left-yellow-tape-container.svg +1 -0
  156. package/public/_images/svg/pagination-splat.svg +1 -0
  157. package/public/_images/svg/paper-tear-down.svg +3 -0
  158. package/public/_images/svg/paper-tear-up.svg +3 -0
  159. package/public/_images/svg/right-black-tape-container.svg +1 -0
  160. package/public/_images/svg/right-tape.svg +10 -0
  161. package/public/_images/svg/right-yellow-tape-container.svg +1 -0
  162. package/public/_images/svg/styled-photo-background.svg +1 -0
  163. package/public/_images/tape-assets/sticker-1-2x.png +0 -0
  164. package/public/_images/tape-assets/sticker-1-2x.webp +0 -0
  165. package/public/_images/tape-assets/sticker-1-medium-up-2x.png +0 -0
  166. package/public/_images/tape-assets/sticker-1-medium-up-2x.webp +0 -0
  167. package/public/_images/tape-assets/sticker-1-medium-up.png +0 -0
  168. package/public/_images/tape-assets/sticker-1-medium-up.webp +0 -0
  169. package/public/_images/tape-assets/sticker-1.png +0 -0
  170. package/public/_images/tape-assets/sticker-1.webp +0 -0
  171. package/public/_images/tape-assets/sticker-10-2x.png +0 -0
  172. package/public/_images/tape-assets/sticker-10-2x.webp +0 -0
  173. package/public/_images/tape-assets/sticker-10-medium-up-2x.png +0 -0
  174. package/public/_images/tape-assets/sticker-10-medium-up-2x.webp +0 -0
  175. package/public/_images/tape-assets/sticker-10-medium-up.png +0 -0
  176. package/public/_images/tape-assets/sticker-10-medium-up.webp +0 -0
  177. package/public/_images/tape-assets/sticker-10.png +0 -0
  178. package/public/_images/tape-assets/sticker-10.webp +0 -0
  179. package/public/_images/tape-assets/sticker-11-2x.png +0 -0
  180. package/public/_images/tape-assets/sticker-11-2x.webp +0 -0
  181. package/public/_images/tape-assets/sticker-11-medium-up-2x.png +0 -0
  182. package/public/_images/tape-assets/sticker-11-medium-up-2x.webp +0 -0
  183. package/public/_images/tape-assets/sticker-11-medium-up.png +0 -0
  184. package/public/_images/tape-assets/sticker-11-medium-up.webp +0 -0
  185. package/public/_images/tape-assets/sticker-11.png +0 -0
  186. package/public/_images/tape-assets/sticker-11.webp +0 -0
  187. package/public/_images/tape-assets/sticker-12-2x.png +0 -0
  188. package/public/_images/tape-assets/sticker-12-2x.webp +0 -0
  189. package/public/_images/tape-assets/sticker-12-medium-up-2x.png +0 -0
  190. package/public/_images/tape-assets/sticker-12-medium-up-2x.webp +0 -0
  191. package/public/_images/tape-assets/sticker-12-medium-up.png +0 -0
  192. package/public/_images/tape-assets/sticker-12-medium-up.webp +0 -0
  193. package/public/_images/tape-assets/sticker-12.png +0 -0
  194. package/public/_images/tape-assets/sticker-12.webp +0 -0
  195. package/public/_images/tape-assets/sticker-2-red-2x.png +0 -0
  196. package/public/_images/tape-assets/sticker-2-red-2x.webp +0 -0
  197. package/public/_images/tape-assets/sticker-2-red-medium-up-2x.png +0 -0
  198. package/public/_images/tape-assets/sticker-2-red-medium-up-2x.webp +0 -0
  199. package/public/_images/tape-assets/sticker-2-red-medium-up.png +0 -0
  200. package/public/_images/tape-assets/sticker-2-red-medium-up.webp +0 -0
  201. package/public/_images/tape-assets/sticker-2-red.png +0 -0
  202. package/public/_images/tape-assets/sticker-2-red.webp +0 -0
  203. package/public/_images/tape-assets/sticker-3-2x.png +0 -0
  204. package/public/_images/tape-assets/sticker-3-2x.webp +0 -0
  205. package/public/_images/tape-assets/sticker-3-medium-up-2x.png +0 -0
  206. package/public/_images/tape-assets/sticker-3-medium-up-2x.webp +0 -0
  207. package/public/_images/tape-assets/sticker-3-medium-up.png +0 -0
  208. package/public/_images/tape-assets/sticker-3-medium-up.webp +0 -0
  209. package/public/_images/tape-assets/sticker-3.png +0 -0
  210. package/public/_images/tape-assets/sticker-3.webp +0 -0
  211. package/public/_images/tape-assets/sticker-4-2x.png +0 -0
  212. package/public/_images/tape-assets/sticker-4-2x.webp +0 -0
  213. package/public/_images/tape-assets/sticker-4-medium-up-2x.png +0 -0
  214. package/public/_images/tape-assets/sticker-4-medium-up-2x.webp +0 -0
  215. package/public/_images/tape-assets/sticker-4-medium-up.png +0 -0
  216. package/public/_images/tape-assets/sticker-4-medium-up.webp +0 -0
  217. package/public/_images/tape-assets/sticker-4.png +0 -0
  218. package/public/_images/tape-assets/sticker-4.webp +0 -0
  219. package/public/_images/tape-assets/sticker-5-2x.png +0 -0
  220. package/public/_images/tape-assets/sticker-5-2x.webp +0 -0
  221. package/public/_images/tape-assets/sticker-5-medium-up-2x.png +0 -0
  222. package/public/_images/tape-assets/sticker-5-medium-up-2x.webp +0 -0
  223. package/public/_images/tape-assets/sticker-5-medium-up.png +0 -0
  224. package/public/_images/tape-assets/sticker-5-medium-up.webp +0 -0
  225. package/public/_images/tape-assets/sticker-5.png +0 -0
  226. package/public/_images/tape-assets/sticker-5.webp +0 -0
  227. package/public/_images/tape-assets/sticker-6-2x.png +0 -0
  228. package/public/_images/tape-assets/sticker-6-2x.webp +0 -0
  229. package/public/_images/tape-assets/sticker-6-medium-up-2x.png +0 -0
  230. package/public/_images/tape-assets/sticker-6-medium-up-2x.webp +0 -0
  231. package/public/_images/tape-assets/sticker-6-medium-up.png +0 -0
  232. package/public/_images/tape-assets/sticker-6-medium-up.webp +0 -0
  233. package/public/_images/tape-assets/sticker-6.png +0 -0
  234. package/public/_images/tape-assets/sticker-6.webp +0 -0
  235. package/public/_images/tape-assets/sticker-7-2x.png +0 -0
  236. package/public/_images/tape-assets/sticker-7-2x.webp +0 -0
  237. package/public/_images/tape-assets/sticker-7-medium-up-2x.png +0 -0
  238. package/public/_images/tape-assets/sticker-7-medium-up-2x.webp +0 -0
  239. package/public/_images/tape-assets/sticker-7-medium-up.png +0 -0
  240. package/public/_images/tape-assets/sticker-7-medium-up.webp +0 -0
  241. package/public/_images/tape-assets/sticker-7.png +0 -0
  242. package/public/_images/tape-assets/sticker-7.webp +0 -0
  243. package/public/_images/tape-assets/sticker-8-2x.png +0 -0
  244. package/public/_images/tape-assets/sticker-8-2x.webp +0 -0
  245. package/public/_images/tape-assets/sticker-8-medium-up-2x.png +0 -0
  246. package/public/_images/tape-assets/sticker-8-medium-up-2x.webp +0 -0
  247. package/public/_images/tape-assets/sticker-8-medium-up.png +0 -0
  248. package/public/_images/tape-assets/sticker-8-medium-up.webp +0 -0
  249. package/public/_images/tape-assets/sticker-8.png +0 -0
  250. package/public/_images/tape-assets/sticker-8.webp +0 -0
  251. package/public/_images/tape-assets/sticker-9-2x.png +0 -0
  252. package/public/_images/tape-assets/sticker-9-2x.webp +0 -0
  253. package/public/_images/tape-assets/sticker-9-medium-up-2x.png +0 -0
  254. package/public/_images/tape-assets/sticker-9-medium-up-2x.webp +0 -0
  255. package/public/_images/tape-assets/sticker-9-medium-up.png +0 -0
  256. package/public/_images/tape-assets/sticker-9-medium-up.webp +0 -0
  257. package/public/_images/tape-assets/sticker-9.png +0 -0
  258. package/public/_images/tape-assets/sticker-9.webp +0 -0
  259. package/public/_images/tape-assets/tape-1.png +0 -0
  260. package/public/_images/tape-assets/tape-2-2x.png +0 -0
  261. package/public/_images/tape-assets/tape-2-2x.webp +0 -0
  262. package/public/_images/tape-assets/tape-2-medium-up-2x.png +0 -0
  263. package/public/_images/tape-assets/tape-2-medium-up-2x.webp +0 -0
  264. package/public/_images/tape-assets/tape-2-medium-up.png +0 -0
  265. package/public/_images/tape-assets/tape-2-medium-up.webp +0 -0
  266. package/public/_images/tape-assets/tape-2.png +0 -0
  267. package/public/_images/tape-assets/tape-2.webp +0 -0
  268. package/public/_images/tape-assets/tape-3-2x.png +0 -0
  269. package/public/_images/tape-assets/tape-3-2x.webp +0 -0
  270. package/public/_images/tape-assets/tape-3-medium-up-2x.png +0 -0
  271. package/public/_images/tape-assets/tape-3-medium-up-2x.webp +0 -0
  272. package/public/_images/tape-assets/tape-3-medium-up.png +0 -0
  273. package/public/_images/tape-assets/tape-3-medium-up.webp +0 -0
  274. package/public/_images/tape-assets/tape-3.png +0 -0
  275. package/public/_images/tape-assets/tape-3.webp +0 -0
  276. package/public/_images/tape-assets/tape-4-medium-up-2x.png +0 -0
  277. package/public/_images/tape-assets/tape-4-medium-up-2x.webp +0 -0
  278. package/public/_images/tape-assets/tape-4-medium-up.png +0 -0
  279. package/public/_images/tape-assets/tape-4-medium-up.webp +0 -0
  280. package/public/_images/tape-assets/tape-5-2x.png +0 -0
  281. package/public/_images/tape-assets/tape-5-2x.webp +0 -0
  282. package/public/_images/tape-assets/tape-5-medium-up-2x.png +0 -0
  283. package/public/_images/tape-assets/tape-5-medium-up-2x.webp +0 -0
  284. package/public/_images/tape-assets/tape-5-medium-up.png +0 -0
  285. package/public/_images/tape-assets/tape-5-medium-up.webp +0 -0
  286. package/public/_images/tape-assets/tape-5.png +0 -0
  287. package/public/_images/tape-assets/tape-5.webp +0 -0
  288. package/public/_images/tape-assets/tape-6-2x.png +0 -0
  289. package/public/_images/tape-assets/tape-6-2x.webp +0 -0
  290. package/public/_images/tape-assets/tape-6-medium-up-2x.png +0 -0
  291. package/public/_images/tape-assets/tape-6-medium-up-2x.webp +0 -0
  292. package/public/_images/tape-assets/tape-6-medium-up.png +0 -0
  293. package/public/_images/tape-assets/tape-6-medium-up.webp +0 -0
  294. package/public/_images/tape-assets/tape-6.png +0 -0
  295. package/public/_images/tape-assets/tape-6.webp +0 -0
  296. package/public/_images/tape-assets/tape-7-2x.png +0 -0
  297. package/public/_images/tape-assets/tape-7-2x.webp +0 -0
  298. package/public/_images/tape-assets/tape-7.png +0 -0
  299. package/public/_images/tape-assets/tape-7.webp +0 -0
  300. package/public/_images/weapons/marquee/s3_weapons_social-1.jpg +0 -0
  301. package/public/_images/weapons/marquee/s3_weapons_social-10.jpg +0 -0
  302. package/public/_images/weapons/marquee/s3_weapons_social-11.jpg +0 -0
  303. package/public/_images/weapons/marquee/s3_weapons_social-12.jpg +0 -0
  304. package/public/_images/weapons/marquee/s3_weapons_social-13.jpg +0 -0
  305. package/public/_images/weapons/marquee/s3_weapons_social-14.jpg +0 -0
  306. package/public/_images/weapons/marquee/s3_weapons_social-15.jpg +0 -0
  307. package/public/_images/weapons/marquee/s3_weapons_social-16.jpg +0 -0
  308. package/public/_images/weapons/marquee/s3_weapons_social-17.jpg +0 -0
  309. package/public/_images/weapons/marquee/s3_weapons_social-18.jpg +0 -0
  310. package/public/_images/weapons/marquee/s3_weapons_social-19.jpg +0 -0
  311. package/public/_images/weapons/marquee/s3_weapons_social-2.jpg +0 -0
  312. package/public/_images/weapons/marquee/s3_weapons_social-20.jpg +0 -0
  313. package/public/_images/weapons/marquee/s3_weapons_social-21.jpg +0 -0
  314. package/public/_images/weapons/marquee/s3_weapons_social-22.jpg +0 -0
  315. package/public/_images/weapons/marquee/s3_weapons_social-3.jpg +0 -0
  316. package/public/_images/weapons/marquee/s3_weapons_social-4.jpg +0 -0
  317. package/public/_images/weapons/marquee/s3_weapons_social-5.jpg +0 -0
  318. package/public/_images/weapons/marquee/s3_weapons_social-6.jpg +0 -0
  319. package/public/_images/weapons/marquee/s3_weapons_social-7.jpg +0 -0
  320. package/public/_images/weapons/marquee/s3_weapons_social-8.jpg +0 -0
  321. package/public/_images/weapons/marquee/s3_weapons_social-9.jpg +0 -0
  322. package/public/_images/weapons/shops-gallery/coco-icon.png +0 -0
  323. package/public/_images/weapons/shops-gallery/coco.png +0 -0
  324. package/public/_images/weapons/shops-gallery/eddy-icon.png +0 -0
  325. package/public/_images/weapons/shops-gallery/eddy.png +0 -0
  326. package/public/_images/weapons/shops-gallery/harmony-icon.png +0 -0
  327. package/public/_images/weapons/shops-gallery/harmony.png +0 -0
  328. package/public/_images/weapons/shops-gallery/jella-icon.png +0 -0
  329. package/public/_images/weapons/shops-gallery/jella.png +0 -0
  330. package/public/_images/weapons/shops-gallery/sheldon-icon.png +0 -0
  331. package/public/_images/weapons/shops-gallery/sheldon.png +0 -0
  332. package/public/_images/weapons/shops-gallery/weapons-express-ammo-knights-2.jpg +0 -0
  333. package/public/_images/weapons/shops-gallery/weapons-express-crush-station-5.jpg +0 -0
  334. package/public/_images/weapons/shops-gallery/weapons-express-hotlantis-1.jpg +0 -0
  335. package/public/_images/weapons/shops-gallery/weapons-express-manoward-4.jpg +0 -0
  336. package/public/_images/weapons/shops-gallery/weapons-express-naut-couture-3.jpg +0 -0
  337. package/public/fonts/foo-webfont.woff +0 -0
  338. package/public/fonts/foo-webfont.woff2 +0 -0
  339. package/public/fonts/montserrat-v24-latin-500.woff +0 -0
  340. package/public/fonts/montserrat-v24-latin-500.woff2 +0 -0
  341. package/public/fonts/montserrat-v24-latin-600.woff2 +0 -0
  342. package/public/fonts/montserrat-v24-latin-700.woff2 +0 -0
  343. package/public/fonts/montserrat-v24-latin-900.woff2 +0 -0
  344. package/public/fonts/montserrat-v24-latin-regular.woff +0 -0
  345. package/public/fonts/montserrat-v24-latin-regular.woff2 +0 -0
  346. package/public/fonts/obviously-narrow-600.woff2 +0 -0
  347. package/public/svgs/paper-tear-down.svg +3 -0
  348. package/public/svgs/paper-tear-up.svg +3 -0
  349. package/public/svgs/rip-left.svg +3 -0
  350. package/public/svgs/rip-right.svg +3 -0
  351. package/public/svgs/wave.svg +3 -0
@@ -0,0 +1,2344 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source2, exclude) => {
21
+ var target = {};
22
+ for (var prop in source2)
23
+ if (__hasOwnProp.call(source2, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source2[prop];
25
+ if (source2 != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source2)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source2, prop))
28
+ target[prop] = source2[prop];
29
+ }
30
+ return target;
31
+ };
32
+
33
+ // src/lib/utils.ts
34
+ import { clsx } from "clsx";
35
+ import { twMerge } from "tailwind-merge";
36
+ function cn(...inputs) {
37
+ return twMerge(clsx(inputs));
38
+ }
39
+ function resolveCSSColor(color, el) {
40
+ if (!color.startsWith("var(")) return color;
41
+ const prop = color.replace(/^var\(/, "").replace(/\)$/, "").trim();
42
+ return getComputedStyle(el).getPropertyValue(prop).trim();
43
+ }
44
+
45
+ // src/components/ui/card-slot.module.css
46
+ var card_slot_default = {};
47
+
48
+ // src/components/ui/card-slot.tsx
49
+ import { jsx } from "react/jsx-runtime";
50
+ var SLOT_STYLE = {
51
+ "top-left": { top: 0, left: "15%", transform: "translateY(-50%)" },
52
+ "top-center": { top: 0, left: "50%", transform: "translate(-50%, -50%)" },
53
+ "top-right": { top: 0, right: "15%", transform: "translateY(-50%)" },
54
+ "bottom-left": { bottom: 0, left: "15%", transform: "translateY(50%)" },
55
+ "bottom-center": { bottom: 0, left: "50%", transform: "translate(-50%, 50%)" },
56
+ "bottom-right": { bottom: 0, right: "15%", transform: "translateY(50%)" }
57
+ };
58
+ function CardSlot(_a) {
59
+ var _b = _a, { position, className, style } = _b, props = __objRest(_b, ["position", "className", "style"]);
60
+ return /* @__PURE__ */ jsx(
61
+ "div",
62
+ __spreadValues({
63
+ "data-slot": position ? `slot-${position}` : "slot",
64
+ className: cn(card_slot_default.cardSlot, className),
65
+ style: __spreadValues(__spreadValues({}, position && SLOT_STYLE[position]), style)
66
+ }, props)
67
+ );
68
+ }
69
+
70
+ // src/components/ui/tape-assets.ts
71
+ var TAPE_ASSET_BASE = "/_images/tape-assets";
72
+ function source(fileName, width, height) {
73
+ const path = `${TAPE_ASSET_BASE}/${fileName}`;
74
+ const extensionIndex = fileName.lastIndexOf(".");
75
+ const basename = fileName.slice(0, extensionIndex);
76
+ const extension = fileName.slice(extensionIndex);
77
+ return {
78
+ src: path,
79
+ pngSrcSet: `${TAPE_ASSET_BASE}/${basename}${extension} 1x, ${TAPE_ASSET_BASE}/${basename}-2x${extension} 2x`,
80
+ webpSrcSet: `${TAPE_ASSET_BASE}/${basename}.webp 1x, ${TAPE_ASSET_BASE}/${basename}-2x.webp 2x`,
81
+ width,
82
+ height
83
+ };
84
+ }
85
+ function responsiveAsset(fileName, width, height, desktopFileName, desktopWidth, desktopHeight) {
86
+ return __spreadProps(__spreadValues({}, source(fileName, width, height)), {
87
+ desktop: source(desktopFileName, desktopWidth, desktopHeight)
88
+ });
89
+ }
90
+ var tapeImageAssetDefinitions = {
91
+ "sticker-1": responsiveAsset("sticker-1.png", 110, 110, "sticker-1-medium-up.png", 230, 230),
92
+ "sticker-2-red": responsiveAsset(
93
+ "sticker-2-red.png",
94
+ 80,
95
+ 114,
96
+ "sticker-2-red-medium-up.png",
97
+ 137,
98
+ 194
99
+ ),
100
+ "sticker-3": responsiveAsset("sticker-3.png", 100, 65, "sticker-3-medium-up.png", 225, 146),
101
+ "sticker-4": responsiveAsset("sticker-4.png", 100, 56, "sticker-4-medium-up.png", 203, 113),
102
+ "sticker-5": responsiveAsset("sticker-5.png", 180, 62, "sticker-5-medium-up.png", 449, 154),
103
+ "sticker-6": responsiveAsset("sticker-6.png", 112, 98, "sticker-6-medium-up.png", 281, 247),
104
+ "sticker-7": responsiveAsset("sticker-7.png", 100, 63, "sticker-7-medium-up.png", 152, 95),
105
+ "sticker-8": responsiveAsset("sticker-8.png", 198, 35, "sticker-8-medium-up.png", 406, 72),
106
+ "sticker-9": responsiveAsset("sticker-9.png", 96, 31, "sticker-9-medium-up.png", 146, 48),
107
+ "sticker-10": responsiveAsset("sticker-10.png", 113, 26, "sticker-10-medium-up.png", 225, 51),
108
+ "sticker-11": responsiveAsset("sticker-11.png", 114, 39, "sticker-11-medium-up.png", 140, 46),
109
+ "sticker-12": responsiveAsset("sticker-12.png", 416, 58, "sticker-12-medium-up.png", 641, 89),
110
+ "tape-1": {
111
+ src: `${TAPE_ASSET_BASE}/tape-1.png`,
112
+ width: 300,
113
+ height: 68
114
+ },
115
+ "tape-2": responsiveAsset("tape-2.png", 82, 36, "tape-2-medium-up.png", 166, 74),
116
+ "tape-3": responsiveAsset("tape-3.png", 97, 38, "tape-3-medium-up.png", 202, 78),
117
+ "tape-4": source("tape-4-medium-up.png", 120, 53),
118
+ "tape-5": responsiveAsset("tape-5.png", 140, 36, "tape-5-medium-up.png", 276, 70),
119
+ "tape-6": responsiveAsset("tape-6.png", 103, 44, "tape-6-medium-up.png", 187, 85),
120
+ "tape-7": source("tape-7.png", 539, 112)
121
+ };
122
+ var tapeImageAssets = tapeImageAssetDefinitions;
123
+ function isTapeImageVariant(value) {
124
+ return Object.prototype.hasOwnProperty.call(tapeImageAssets, value);
125
+ }
126
+
127
+ // src/components/ui/tape-picture.tsx
128
+ import { Fragment, jsx as jsx2, jsxs } from "react/jsx-runtime";
129
+ function resolveTapeAsset(asset) {
130
+ return typeof asset === "string" ? tapeImageAssets[asset] : asset;
131
+ }
132
+ function TapeImage(_a) {
133
+ var _b = _a, {
134
+ source: source2,
135
+ alt,
136
+ className,
137
+ draggable,
138
+ fill
139
+ } = _b, props = __objRest(_b, [
140
+ "source",
141
+ "alt",
142
+ "className",
143
+ "draggable",
144
+ "fill"
145
+ ]);
146
+ return /* @__PURE__ */ jsx2(
147
+ "img",
148
+ __spreadProps(__spreadValues({}, props), {
149
+ alt,
150
+ className: cn(fill && "block h-auto w-full", className),
151
+ draggable,
152
+ height: source2.height,
153
+ src: source2.src,
154
+ srcSet: source2.pngSrcSet,
155
+ width: source2.width
156
+ })
157
+ );
158
+ }
159
+ function TapePicture(_a) {
160
+ var _b = _a, {
161
+ asset,
162
+ alt = "",
163
+ className,
164
+ draggable = false,
165
+ media = "(min-width: 640px)",
166
+ pictureClassName,
167
+ fill = true
168
+ } = _b, props = __objRest(_b, [
169
+ "asset",
170
+ "alt",
171
+ "className",
172
+ "draggable",
173
+ "media",
174
+ "pictureClassName",
175
+ "fill"
176
+ ]);
177
+ var _a2, _b2;
178
+ const image = resolveTapeAsset(asset);
179
+ return /* @__PURE__ */ jsxs("picture", { className: pictureClassName, children: [
180
+ ((_a2 = image.desktop) == null ? void 0 : _a2.webpSrcSet) ? /* @__PURE__ */ jsx2("source", { media, type: "image/webp", srcSet: image.desktop.webpSrcSet }) : null,
181
+ ((_b2 = image.desktop) == null ? void 0 : _b2.pngSrcSet) ? /* @__PURE__ */ jsx2("source", { media, srcSet: image.desktop.pngSrcSet }) : null,
182
+ image.webpSrcSet ? /* @__PURE__ */ jsx2("source", { type: "image/webp", srcSet: image.webpSrcSet }) : null,
183
+ /* @__PURE__ */ jsx2(
184
+ TapeImage,
185
+ __spreadProps(__spreadValues({}, props), {
186
+ alt,
187
+ className,
188
+ draggable,
189
+ fill,
190
+ source: image
191
+ })
192
+ )
193
+ ] });
194
+ }
195
+ function TapeResponsivePictures(_a) {
196
+ var _b = _a, {
197
+ asset,
198
+ alt = "",
199
+ className,
200
+ draggable = false,
201
+ mobilePictureClassName,
202
+ desktopPictureClassName,
203
+ imageClassName
204
+ } = _b, props = __objRest(_b, [
205
+ "asset",
206
+ "alt",
207
+ "className",
208
+ "draggable",
209
+ "mobilePictureClassName",
210
+ "desktopPictureClassName",
211
+ "imageClassName"
212
+ ]);
213
+ const image = tapeImageAssets[asset];
214
+ const desktopImage = image.desktop;
215
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
216
+ /* @__PURE__ */ jsxs("picture", { className: mobilePictureClassName, children: [
217
+ image.webpSrcSet ? /* @__PURE__ */ jsx2("source", { type: "image/webp", srcSet: image.webpSrcSet }) : null,
218
+ /* @__PURE__ */ jsx2(
219
+ TapeImage,
220
+ __spreadProps(__spreadValues({}, props), {
221
+ alt,
222
+ className: cn(imageClassName, className),
223
+ draggable,
224
+ fill: true,
225
+ source: image
226
+ })
227
+ )
228
+ ] }),
229
+ desktopImage ? /* @__PURE__ */ jsxs("picture", { className: desktopPictureClassName, children: [
230
+ desktopImage.webpSrcSet ? /* @__PURE__ */ jsx2("source", { type: "image/webp", srcSet: desktopImage.webpSrcSet }) : null,
231
+ /* @__PURE__ */ jsx2(
232
+ TapeImage,
233
+ __spreadProps(__spreadValues({}, props), {
234
+ alt,
235
+ className: cn(imageClassName, className),
236
+ draggable,
237
+ fill: true,
238
+ source: desktopImage
239
+ })
240
+ )
241
+ ] }) : null
242
+ ] });
243
+ }
244
+
245
+ // src/components/ui/media-decoration.tsx
246
+ import { jsx as jsx3 } from "react/jsx-runtime";
247
+ function MediaDecoration(_a) {
248
+ var _b = _a, {
249
+ asset,
250
+ responsive = true,
251
+ media,
252
+ imageClassName,
253
+ mobilePictureClassName,
254
+ desktopPictureClassName,
255
+ className
256
+ } = _b, props = __objRest(_b, [
257
+ "asset",
258
+ "responsive",
259
+ "media",
260
+ "imageClassName",
261
+ "mobilePictureClassName",
262
+ "desktopPictureClassName",
263
+ "className"
264
+ ]);
265
+ return /* @__PURE__ */ jsx3(CardSlot, __spreadProps(__spreadValues({ className: cn(className) }, props), { children: responsive ? /* @__PURE__ */ jsx3(
266
+ TapeResponsivePictures,
267
+ {
268
+ asset,
269
+ mobilePictureClassName,
270
+ desktopPictureClassName,
271
+ imageClassName
272
+ }
273
+ ) : /* @__PURE__ */ jsx3(TapePicture, { asset, className: imageClassName, media }) }));
274
+ }
275
+
276
+ // src/components/ui/wide-torn-paper.tsx
277
+ import { jsx as jsx4 } from "react/jsx-runtime";
278
+ function WideTornPaper({ bgColor = "currentColor" }) {
279
+ return /* @__PURE__ */ jsx4(
280
+ "svg",
281
+ {
282
+ viewBox: "0 0 515 273",
283
+ fill: "none",
284
+ xmlns: "http://www.w3.org/2000/svg",
285
+ className: "h-full w-full",
286
+ preserveAspectRatio: "none",
287
+ children: /* @__PURE__ */ jsx4(
288
+ "path",
289
+ {
290
+ d: "m511.365417 8.32919328c-.28777-.42141336-.59704-.83026805-.926156-1.22656406-.426693-.51351033-3.957662-2.69872002-3.957662-2.69872002l-1.012157-.55118636-1.304887-.11023727-1.52485-.10046941-.696271-.29443119.130655-.56932667-.461424-1.14842118s-.208386-.51351033-.603656-.63491087c-.525924-.16047197-1.061771-.30280364-1.607542-.42699499-1.089887-.24698731-2.217812-.41722714-3.373853-.50374247-.578848-.04325766-1.164311-.06418879-1.756389-.06418879h-16.055575l-2.197966.64886495-1.306541 1.32145184-1.480196-.36699243-1.65385.66142362-2.176466-.73538027-1.306542-.80794152-4.243779-.72142619h-103.344116l-5.289012.94190073-4.179279 1.91031422-2.677583-1.23075028h-2.613082l-3.416854.9377145-3.656662-1.61727844-8.206403-.94190073h-149.312874l-7.465478 1.32842888-6.096091 1.32145184-5.224512-1.76240092-3.483007.29303578-3.830317.73538028-4.005624.14651789-1.566196-.88189817-7.336478-1.18051558h-122.4179669c-2.2012742 0-4.3165482.30419905-6.2928988.86515326-.5573474.29722201-1.6240806 1.14283956-1.6240806 1.14283956l-.9840406.59304861-2.1285048.54560472-1.33300299.86515326-1.15273336 1.23354111.03142315 1.04655636-.39030857.59723484-1.20731041.65444658-.91623282 1.2656355s-1.46531098.45350776-1.8936581.81073233c-1.17919495 2.13497497-1.8374272 4.51554187-1.8374272 7.02448637v230.5982305l2.95212201 9.954844 3.6781621 5.398835 4.87554939 3.233162 5.0508575.954459 8.4462113 1.984271 9.9479069.49537 6.2035909 1.322847 7.4439782.385133 6.8353615 1.028416h76.9602502l5.573474-.661424 1.523195-.182798 1.480196-.918179 1.916812.880503 5.876128.881898h107.338165l3.395353-.421413 50.791384-.71724 1.304887-.073957 2.176467.478625 5.594974.312572 36.177965.421413 16.020844-.807942 40.130667-2.20335 2.90416 1.765192 5.659475-.305594 3.83197-.722822 2.601506.37397 4.190855-.227452 2.872737-.954459 12.711491-.733985 5.470935.263732 4.978088.175821 6.08286-.640492 3.306046-.138145 8.112133.265127 9.284713-.994926 4.19251-3.215021 4.55801-1.193075 2.525429-1.982875 2.045812-3.563873 1.741504-1.028416 3.570662.147913 4.149509-4.703922 1.218888-3.768998 2.163235-2.951289 1.218888-4.187621 1.218887-4.113664 1.695196-4.209948v-215.6994535c0-3.0280365-.959233-5.8690881-2.634583-8.31523922",
291
+ fill: bgColor,
292
+ fillRule: "evenodd",
293
+ transform: "translate(.070619 .762599)"
294
+ }
295
+ )
296
+ }
297
+ );
298
+ }
299
+
300
+ // src/components/ui/torn-card.module.css
301
+ var torn_card_default = {};
302
+
303
+ // src/components/ui/torn-card.tsx
304
+ import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
305
+ var VARIANT_CONFIG = {
306
+ a: {
307
+ rotation: "2deg",
308
+ tapePosition: "top-right",
309
+ showSticker: false,
310
+ tapeAsset: "tape-3"
311
+ },
312
+ b: {
313
+ rotation: "-1.5deg",
314
+ tapePosition: "top-right",
315
+ showSticker: false,
316
+ tapeAsset: "tape-2"
317
+ },
318
+ c: {
319
+ rotation: "3deg",
320
+ tapePosition: "bottom-center",
321
+ showSticker: true,
322
+ tapeAsset: "tape-2",
323
+ stickerAsset: "sticker-10"
324
+ }
325
+ };
326
+ function TornCard(_a) {
327
+ var _b = _a, {
328
+ ref,
329
+ className,
330
+ variant = "a",
331
+ rotation,
332
+ background = "#efefef",
333
+ showTape = true,
334
+ showSticker,
335
+ tapePosition,
336
+ children
337
+ } = _b, props = __objRest(_b, [
338
+ "ref",
339
+ "className",
340
+ "variant",
341
+ "rotation",
342
+ "background",
343
+ "showTape",
344
+ "showSticker",
345
+ "tapePosition",
346
+ "children"
347
+ ]);
348
+ const config = VARIANT_CONFIG[variant];
349
+ const resolvedRotation = rotation != null ? rotation : config.rotation;
350
+ const resolvedTapePosition = tapePosition != null ? tapePosition : config.tapePosition;
351
+ const resolvedShowSticker = showSticker != null ? showSticker : config.showSticker;
352
+ return /* @__PURE__ */ jsxs2(
353
+ "div",
354
+ __spreadProps(__spreadValues({
355
+ ref,
356
+ "data-slot": "card",
357
+ "data-variant": variant,
358
+ style: {
359
+ transform: `rotate(${resolvedRotation})`,
360
+ filter: "drop-shadow(2px 2px 2px rgba(0,0,0,.3))"
361
+ },
362
+ className: cn("group/card text-chaos-black relative z-10 w-full text-center", className)
363
+ }, props), {
364
+ children: [
365
+ /* @__PURE__ */ jsx5("div", { className: "pointer-events-none absolute inset-0 z-0 h-full w-full select-none", children: /* @__PURE__ */ jsx5(WideTornPaper, { bgColor: background }) }),
366
+ /* @__PURE__ */ jsxs2("div", { className: "@container w-full", children: [
367
+ showTape && /* @__PURE__ */ jsx5(
368
+ MediaDecoration,
369
+ {
370
+ position: resolvedTapePosition,
371
+ asset: config.tapeAsset,
372
+ mobilePictureClassName: cn(torn_card_default.tape, torn_card_default.imgMobile),
373
+ desktopPictureClassName: cn(torn_card_default.tape, torn_card_default.imgDesktop)
374
+ }
375
+ ),
376
+ resolvedShowSticker && config.stickerAsset ? /* @__PURE__ */ jsx5(
377
+ MediaDecoration,
378
+ {
379
+ position: "top-right",
380
+ asset: config.stickerAsset,
381
+ mobilePictureClassName: torn_card_default.imgMobile,
382
+ desktopPictureClassName: torn_card_default.imgDesktop
383
+ }
384
+ ) : null,
385
+ /* @__PURE__ */ jsx5("div", { className: cn(torn_card_default.alertContent, "relative z-10 flex flex-col gap-4"), children: /* @__PURE__ */ jsx5("div", { className: "flex flex-col gap-2", children }) })
386
+ ] })
387
+ ]
388
+ })
389
+ );
390
+ }
391
+ function isCssColor(value) {
392
+ return value.startsWith("#") || value.startsWith("rgb") || value.startsWith("var(") || value.startsWith("hsl");
393
+ }
394
+ function TornCardTitle(_a) {
395
+ var _b = _a, {
396
+ className,
397
+ textColor = "text-blue",
398
+ style
399
+ } = _b, props = __objRest(_b, [
400
+ "className",
401
+ "textColor",
402
+ "style"
403
+ ]);
404
+ const colorStyle = textColor && isCssColor(textColor) ? { color: textColor } : void 0;
405
+ const twClass = textColor && !isCssColor(textColor) ? textColor : "";
406
+ return /* @__PURE__ */ jsx5(
407
+ "h2",
408
+ __spreadValues({
409
+ "data-slot": "card-title",
410
+ className: cn("splat-heading text-2xl", twClass, className),
411
+ style: colorStyle ? __spreadValues(__spreadValues({}, colorStyle), style) : style
412
+ }, props)
413
+ );
414
+ }
415
+ function TornCardDescription(_a) {
416
+ var _b = _a, {
417
+ className,
418
+ textColor,
419
+ style
420
+ } = _b, props = __objRest(_b, [
421
+ "className",
422
+ "textColor",
423
+ "style"
424
+ ]);
425
+ const colorStyle = textColor && isCssColor(textColor) ? { color: textColor } : void 0;
426
+ const twClass = textColor && !isCssColor(textColor) ? textColor : "";
427
+ return /* @__PURE__ */ jsx5(
428
+ "p",
429
+ __spreadValues({
430
+ "data-slot": "card-description",
431
+ className: cn("text-sm opacity-90", twClass, className),
432
+ style: colorStyle ? __spreadValues(__spreadValues({}, colorStyle), style) : style
433
+ }, props)
434
+ );
435
+ }
436
+
437
+ // src/components/ui/alert.tsx
438
+ import { jsx as jsx6 } from "react/jsx-runtime";
439
+ var ALERT_VARIANT_MAP = {
440
+ default: {
441
+ tornVariant: "b",
442
+ background: void 0
443
+ },
444
+ destructive: {
445
+ tornVariant: "c",
446
+ background: "var(--color-red)"
447
+ }
448
+ };
449
+ function Alert(_a) {
450
+ var _b = _a, {
451
+ variant = "default",
452
+ showTape = true,
453
+ background,
454
+ className,
455
+ children
456
+ } = _b, props = __objRest(_b, [
457
+ "variant",
458
+ "showTape",
459
+ "background",
460
+ "className",
461
+ "children"
462
+ ]);
463
+ const config = ALERT_VARIANT_MAP[variant];
464
+ return /* @__PURE__ */ jsx6(
465
+ TornCard,
466
+ __spreadProps(__spreadValues({
467
+ variant: config.tornVariant,
468
+ showTape,
469
+ background: background != null ? background : config.background,
470
+ className
471
+ }, props), {
472
+ children
473
+ })
474
+ );
475
+ }
476
+ function AlertTitle(_a) {
477
+ var _b = _a, {
478
+ className,
479
+ textColor = "text-blue",
480
+ style
481
+ } = _b, props = __objRest(_b, [
482
+ "className",
483
+ "textColor",
484
+ "style"
485
+ ]);
486
+ return /* @__PURE__ */ jsx6(
487
+ "h2",
488
+ __spreadValues({
489
+ "data-slot": "alert-title",
490
+ className: cn(
491
+ "splat-heading text-2xl",
492
+ (textColor == null ? void 0 : textColor.startsWith("#")) || (textColor == null ? void 0 : textColor.startsWith("rgb")) ? "" : textColor,
493
+ className
494
+ ),
495
+ style: textColor && (textColor.startsWith("#") || textColor.startsWith("rgb")) ? __spreadValues({ color: textColor }, style) : style
496
+ }, props)
497
+ );
498
+ }
499
+ function AlertDescription(_a) {
500
+ var _b = _a, {
501
+ className,
502
+ textColor,
503
+ style
504
+ } = _b, props = __objRest(_b, [
505
+ "className",
506
+ "textColor",
507
+ "style"
508
+ ]);
509
+ return /* @__PURE__ */ jsx6(
510
+ "p",
511
+ __spreadValues({
512
+ "data-slot": "alert-description",
513
+ className: cn("text-sm opacity-90", className),
514
+ style: textColor ? __spreadValues({ color: textColor }, style) : style
515
+ }, props)
516
+ );
517
+ }
518
+
519
+ // src/components/ui/asset-image.tsx
520
+ import { jsx as jsx7 } from "react/jsx-runtime";
521
+ function AssetImage(_a) {
522
+ var _b = _a, {
523
+ asset,
524
+ alt,
525
+ className,
526
+ decorative = false,
527
+ draggable = false,
528
+ fit,
529
+ aspectRatio,
530
+ fill = false,
531
+ style
532
+ } = _b, props = __objRest(_b, [
533
+ "asset",
534
+ "alt",
535
+ "className",
536
+ "decorative",
537
+ "draggable",
538
+ "fit",
539
+ "aspectRatio",
540
+ "fill",
541
+ "style"
542
+ ]);
543
+ return (
544
+ // eslint-disable-next-line @next/next/no-img-element -- component library assets use known public dimensions and caller-controlled layout.
545
+ /* @__PURE__ */ jsx7(
546
+ "img",
547
+ __spreadProps(__spreadValues({}, props), {
548
+ alt: decorative ? "" : alt != null ? alt : asset.alt,
549
+ "aria-hidden": decorative ? true : props["aria-hidden"],
550
+ className: cn(fill && "block h-full w-full", className),
551
+ draggable,
552
+ height: asset.height,
553
+ src: asset.src,
554
+ style: __spreadValues(__spreadValues(__spreadValues({}, fit ? { objectFit: fit } : {}), aspectRatio ? { aspectRatio } : {}), style),
555
+ width: asset.width
556
+ })
557
+ )
558
+ );
559
+ }
560
+
561
+ // src/components/ui/black-tape-container.module.css
562
+ var black_tape_container_default = {};
563
+
564
+ // src/components/ui/black-tape-container.tsx
565
+ import { jsx as jsx8 } from "react/jsx-runtime";
566
+ function BlackTapeContainer(_a) {
567
+ var _b = _a, {
568
+ className,
569
+ children,
570
+ tapeVariant,
571
+ noVerticalPadding = false
572
+ } = _b, props = __objRest(_b, [
573
+ "className",
574
+ "children",
575
+ "tapeVariant",
576
+ "noVerticalPadding"
577
+ ]);
578
+ return /* @__PURE__ */ jsx8(
579
+ "div",
580
+ __spreadProps(__spreadValues({
581
+ className: cn(
582
+ black_tape_container_default.blackTapeContainer,
583
+ tapeVariant === "yellow" && black_tape_container_default.tapeYellow,
584
+ noVerticalPadding && black_tape_container_default.noVerticalPadding,
585
+ className
586
+ )
587
+ }, props), {
588
+ children: /* @__PURE__ */ jsx8("div", { className: black_tape_container_default.blackTapeContainerInner, children })
589
+ })
590
+ );
591
+ }
592
+
593
+ // src/components/ui/button-arrow.module.css
594
+ var button_arrow_default = {};
595
+
596
+ // src/components/ui/button-arrow.tsx
597
+ import { jsx as jsx9, jsxs as jsxs3 } from "react/jsx-runtime";
598
+ function ButtonArrow(_a) {
599
+ var _b = _a, { icon, href, className, children } = _b, props = __objRest(_b, ["icon", "href", "className", "children"]);
600
+ const iconNode = icon != null ? icon : /* @__PURE__ */ jsx9("svg", { viewBox: "0 0 10 16", className: button_arrow_default.icon, "aria-hidden": "true", focusable: "false", children: /* @__PURE__ */ jsx9("path", { d: "M1 1 L9 8 L1 15", stroke: "currentColor", strokeWidth: "2", fill: "none", strokeLinecap: "round", strokeLinejoin: "round" }) });
601
+ if (href) {
602
+ return /* @__PURE__ */ jsxs3("a", __spreadProps(__spreadValues({ className: cn(button_arrow_default.buttonArrow, className), href }, props), { children: [
603
+ children,
604
+ /* @__PURE__ */ jsx9("span", { className: button_arrow_default.iconWrap, children: iconNode })
605
+ ] }));
606
+ }
607
+ return /* @__PURE__ */ jsxs3("button", __spreadProps(__spreadValues({ className: cn(button_arrow_default.buttonArrow, className), type: "button" }, props), { children: [
608
+ children,
609
+ /* @__PURE__ */ jsx9("span", { className: button_arrow_default.iconWrap, children: iconNode })
610
+ ] }));
611
+ }
612
+
613
+ // src/components/ui/button-drip.module.css
614
+ var button_drip_default = {};
615
+
616
+ // src/components/ui/button-drip.tsx
617
+ import { jsx as jsx10, jsxs as jsxs4 } from "react/jsx-runtime";
618
+ function ButtonDrip(_a) {
619
+ var _b = _a, {
620
+ icon,
621
+ hoverText,
622
+ accentColors,
623
+ className,
624
+ children,
625
+ type = "button"
626
+ } = _b, props = __objRest(_b, [
627
+ "icon",
628
+ "hoverText",
629
+ "accentColors",
630
+ "className",
631
+ "children",
632
+ "type"
633
+ ]);
634
+ return /* @__PURE__ */ jsxs4(
635
+ "button",
636
+ __spreadProps(__spreadValues({
637
+ type,
638
+ className: cn(button_drip_default.button, accentColors && button_drip_default.accentColors, className)
639
+ }, props), {
640
+ children: [
641
+ /* @__PURE__ */ jsxs4("span", { className: button_drip_default.content, children: [
642
+ icon ? /* @__PURE__ */ jsx10("span", { className: button_drip_default.icon, children: icon }) : null,
643
+ /* @__PURE__ */ jsx10("span", { children })
644
+ ] }),
645
+ /* @__PURE__ */ jsx10("span", { className: button_drip_default.hoverContent, children: /* @__PURE__ */ jsx10("span", { children: hoverText != null ? hoverText : children }) })
646
+ ]
647
+ })
648
+ );
649
+ }
650
+
651
+ // src/components/ui/character-assets.ts
652
+ var CHARACTER_ASSET_BASE = "/_images/characters";
653
+ var characterImageAssets = {
654
+ inkling: {
655
+ id: "inkling",
656
+ src: `${CHARACTER_ASSET_BASE}/char-8.png`,
657
+ alt: "Inkling character reference artwork",
658
+ width: 421,
659
+ height: 451
660
+ },
661
+ octoling: {
662
+ id: "octoling",
663
+ src: `${CHARACTER_ASSET_BASE}/char-10.png`,
664
+ alt: "Octoling character reference artwork",
665
+ width: 425,
666
+ height: 461
667
+ },
668
+ salmonid: {
669
+ id: "salmonid",
670
+ src: `${CHARACTER_ASSET_BASE}/salmonid.png`,
671
+ alt: "Salmonid character reference artwork",
672
+ width: 331,
673
+ height: 405
674
+ },
675
+ gamePack: {
676
+ id: "game-pack",
677
+ src: `${CHARACTER_ASSET_BASE}/game-pack.png`,
678
+ alt: "Game pack reference artwork",
679
+ width: 150,
680
+ height: 243
681
+ },
682
+ char2: {
683
+ id: "char-2",
684
+ src: `${CHARACTER_ASSET_BASE}/char-2.png`,
685
+ alt: "Character reference artwork 2",
686
+ width: 261,
687
+ height: 220
688
+ },
689
+ char3: {
690
+ id: "char-3",
691
+ src: `${CHARACTER_ASSET_BASE}/char-3.png`,
692
+ alt: "Character reference artwork 3",
693
+ width: 207,
694
+ height: 238
695
+ },
696
+ char4: {
697
+ id: "char-4",
698
+ src: `${CHARACTER_ASSET_BASE}/char-4.png`,
699
+ alt: "Character reference artwork 4",
700
+ width: 515,
701
+ height: 390
702
+ },
703
+ char5: {
704
+ id: "char-5",
705
+ src: `${CHARACTER_ASSET_BASE}/char-5.png`,
706
+ alt: "Character reference artwork 5",
707
+ width: 295,
708
+ height: 104
709
+ },
710
+ char7: {
711
+ id: "char-7",
712
+ src: `${CHARACTER_ASSET_BASE}/char-7.png`,
713
+ alt: "Character reference artwork 7",
714
+ width: 343,
715
+ height: 300
716
+ },
717
+ char11: {
718
+ id: "char-11",
719
+ src: `${CHARACTER_ASSET_BASE}/char-11.png`,
720
+ alt: "Character reference artwork 11",
721
+ width: 346,
722
+ height: 507
723
+ },
724
+ char12: {
725
+ id: "char-12",
726
+ src: `${CHARACTER_ASSET_BASE}/char-12.png`,
727
+ alt: "Character reference artwork 12",
728
+ width: 375,
729
+ height: 303
730
+ },
731
+ char13: {
732
+ id: "char-13",
733
+ src: `${CHARACTER_ASSET_BASE}/char-13.png`,
734
+ alt: "Character reference artwork 13",
735
+ width: 607,
736
+ height: 555
737
+ },
738
+ char14: {
739
+ id: "char-14",
740
+ src: `${CHARACTER_ASSET_BASE}/char-14.png`,
741
+ alt: "Character reference artwork 14",
742
+ width: 858,
743
+ height: 430
744
+ },
745
+ char15: {
746
+ id: "char-15",
747
+ src: `${CHARACTER_ASSET_BASE}/char-15.png`,
748
+ alt: "Character reference artwork 15",
749
+ width: 570,
750
+ height: 188
751
+ },
752
+ char17: {
753
+ id: "char-17",
754
+ src: `${CHARACTER_ASSET_BASE}/char-17.png`,
755
+ alt: "Character reference artwork 17",
756
+ width: 450,
757
+ height: 276
758
+ },
759
+ char18: {
760
+ id: "char-18",
761
+ src: `${CHARACTER_ASSET_BASE}/char-18.png`,
762
+ alt: "Character reference artwork 18",
763
+ width: 343,
764
+ height: 310
765
+ }
766
+ };
767
+ var pageTransitionCharacterAssets = {
768
+ home: characterImageAssets.inkling,
769
+ about: characterImageAssets.octoling,
770
+ weapons: characterImageAssets.salmonid
771
+ };
772
+
773
+ // src/components/ui/event-assets.ts
774
+ var EVENT_ASSET_BASE = "/_images/events";
775
+ var eventImageAssets = {
776
+ bigRunCallout: {
777
+ id: "big-run-callout",
778
+ src: `${EVENT_ASSET_BASE}/big-run-callout.jpg`,
779
+ alt: "Event callout reference screenshot",
780
+ width: 382,
781
+ height: 215
782
+ },
783
+ goldenEgg: {
784
+ id: "golden-egg",
785
+ src: `${EVENT_ASSET_BASE}/golden-egg.png`,
786
+ alt: "Golden egg reference icon",
787
+ width: 52,
788
+ height: 46
789
+ },
790
+ splatnetBlade: {
791
+ id: "splatnet-blade",
792
+ src: `${EVENT_ASSET_BASE}/splatnet-blade.jpg`,
793
+ alt: "Stage event reference artwork",
794
+ width: 558,
795
+ height: 313
796
+ },
797
+ splatnetNextPage: {
798
+ id: "splatnet-next-page",
799
+ src: `${EVENT_ASSET_BASE}/splatnet-next-page.png`,
800
+ alt: "Graffiti event panel background",
801
+ width: 342,
802
+ height: 221
803
+ }
804
+ };
805
+
806
+ // src/components/ui/event-callout.module.css
807
+ var event_callout_default = {};
808
+
809
+ // src/components/ui/event-callout.tsx
810
+ import { jsx as jsx11, jsxs as jsxs5 } from "react/jsx-runtime";
811
+ function EventCallout(_a) {
812
+ var _b = _a, {
813
+ className,
814
+ eyebrow,
815
+ title,
816
+ description,
817
+ media = eventImageAssets.bigRunCallout,
818
+ background = eventImageAssets.splatnetNextPage,
819
+ icon = eventImageAssets.goldenEgg,
820
+ action,
821
+ mediaPriority = false
822
+ } = _b, props = __objRest(_b, [
823
+ "className",
824
+ "eyebrow",
825
+ "title",
826
+ "description",
827
+ "media",
828
+ "background",
829
+ "icon",
830
+ "action",
831
+ "mediaPriority"
832
+ ]);
833
+ return /* @__PURE__ */ jsxs5("article", __spreadProps(__spreadValues({ className: cn(event_callout_default.callout, className) }, props), { children: [
834
+ /* @__PURE__ */ jsx11(AssetImage, { asset: background, className: event_callout_default.background, loading: "lazy", decorative: true }),
835
+ /* @__PURE__ */ jsxs5("div", { className: event_callout_default.content, children: [
836
+ /* @__PURE__ */ jsxs5("div", { className: event_callout_default.mediaFrame, children: [
837
+ /* @__PURE__ */ jsx11(
838
+ AssetImage,
839
+ {
840
+ asset: media,
841
+ className: event_callout_default.media,
842
+ loading: mediaPriority ? "eager" : "lazy"
843
+ }
844
+ ),
845
+ /* @__PURE__ */ jsx11("span", { className: event_callout_default.iconBadge, "aria-hidden": "true", children: /* @__PURE__ */ jsx11(AssetImage, { asset: icon, loading: "lazy", decorative: true }) })
846
+ ] }),
847
+ /* @__PURE__ */ jsxs5("div", { className: event_callout_default.body, children: [
848
+ eyebrow && /* @__PURE__ */ jsx11("p", { className: event_callout_default.eyebrow, children: eyebrow }),
849
+ /* @__PURE__ */ jsx11("h3", { className: event_callout_default.title, children: title }),
850
+ description && /* @__PURE__ */ jsx11("p", { className: event_callout_default.description, children: description }),
851
+ action && /* @__PURE__ */ jsx11("div", { className: event_callout_default.action, children: action })
852
+ ] })
853
+ ] })
854
+ ] }));
855
+ }
856
+
857
+ // src/lib/ui-tokens.ts
858
+ var layoutTokens = {
859
+ bannerDividerClearance: "clamp(8rem,10vw,11.5rem)",
860
+ demoContentMaxWidth: "64rem",
861
+ demoNarrowContentMaxWidth: "48rem",
862
+ feedCarouselItemWidth: "clamp(16.5rem, 19vw, 23rem)",
863
+ trailerContentMaxWidth: "1440px",
864
+ trailerMediaWidthLarge: "58.333%",
865
+ trailerMediaMaxWidth: "840px"
866
+ };
867
+ var motionTokens = {
868
+ fast: "calc(var(--duration-factor, 1) * 0.2s)",
869
+ standard: "calc(var(--duration-factor, 1) * 0.4s)",
870
+ slow: "calc(var(--duration-factor, 1) * 0.6s)",
871
+ dialogCloseDelayMs: 1200,
872
+ dialogDurationInMs: 700
873
+ };
874
+
875
+ // src/components/ui/demo-layout.tsx
876
+ import { jsx as jsx12 } from "react/jsx-runtime";
877
+ function DemoContent(_a) {
878
+ var _b = _a, { width = "default", className, style } = _b, props = __objRest(_b, ["width", "className", "style"]);
879
+ return /* @__PURE__ */ jsx12(
880
+ "div",
881
+ __spreadValues({
882
+ className: cn("relative z-20 w-full space-y-16", className),
883
+ style: __spreadValues({
884
+ maxWidth: width === "narrow" ? layoutTokens.demoNarrowContentMaxWidth : layoutTokens.demoContentMaxWidth
885
+ }, style)
886
+ }, props)
887
+ );
888
+ }
889
+ function DemoExampleGroup(_a) {
890
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
891
+ return /* @__PURE__ */ jsx12("div", __spreadValues({ className: cn("space-y-6", className) }, props));
892
+ }
893
+
894
+ // src/components/ui/github-mark.tsx
895
+ import { jsx as jsx13 } from "react/jsx-runtime";
896
+ function GitHubMark(props) {
897
+ return /* @__PURE__ */ jsx13("svg", __spreadProps(__spreadValues({ viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true" }, props), { children: /* @__PURE__ */ jsx13("path", { d: "M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z" }) }));
898
+ }
899
+
900
+ // src/components/ui/heading-tape.module.css
901
+ var heading_tape_default = {};
902
+
903
+ // src/components/ui/heading-tape.tsx
904
+ import { jsx as jsx14, jsxs as jsxs6 } from "react/jsx-runtime";
905
+ var defaultDecorations = [
906
+ {
907
+ id: "sticker-8",
908
+ position: "bottom-left",
909
+ rotate: "-2deg",
910
+ inlineOffset: "-19px",
911
+ blockOffset: "-17px",
912
+ safeArea: {
913
+ inlineStart: "19px",
914
+ blockEnd: "17px"
915
+ },
916
+ mobile: {
917
+ src: "/_images/tape-assets/sticker-8.png",
918
+ srcSet: "/_images/tape-assets/sticker-8.webp 1x, /_images/tape-assets/sticker-8-2x.webp 2x",
919
+ width: 198,
920
+ height: 35,
921
+ alt: ""
922
+ },
923
+ desktop: {
924
+ src: "/_images/tape-assets/sticker-8-medium-up.png",
925
+ srcSet: "/_images/tape-assets/sticker-8-medium-up.webp 1x, /_images/tape-assets/sticker-8-medium-up-2x.webp 2x",
926
+ width: 406,
927
+ height: 71.5,
928
+ alt: ""
929
+ }
930
+ },
931
+ {
932
+ id: "sticker-12",
933
+ position: "top-right",
934
+ rotate: "1deg",
935
+ inlineOffset: "-17px",
936
+ blockOffset: "-15px",
937
+ safeArea: {
938
+ inlineEnd: "17px",
939
+ blockStart: "15px"
940
+ },
941
+ mobile: {
942
+ src: "/_images/tape-assets/sticker-12.png",
943
+ srcSet: "/_images/tape-assets/sticker-12.webp 1x, /_images/tape-assets/sticker-12-2x.webp 2x",
944
+ width: 416,
945
+ height: 58,
946
+ alt: ""
947
+ },
948
+ desktop: {
949
+ src: "/_images/tape-assets/sticker-12-medium-up.png",
950
+ srcSet: "/_images/tape-assets/sticker-12-medium-up.webp 1x, /_images/tape-assets/sticker-12-medium-up-2x.webp 2x",
951
+ width: 641,
952
+ height: 89,
953
+ alt: ""
954
+ }
955
+ }
956
+ ];
957
+ var decorationSets = {
958
+ stickers: defaultDecorations,
959
+ none: []
960
+ };
961
+ var decorationPositionClassName = {
962
+ "top-left": heading_tape_default.decorationTopLeft,
963
+ "top-right": heading_tape_default.decorationTopRight,
964
+ "bottom-left": heading_tape_default.decorationBottomLeft,
965
+ "bottom-right": heading_tape_default.decorationBottomRight
966
+ };
967
+ var safeAreaCssVariable = {
968
+ inlineStart: "--heading-tape-safe-inline-start",
969
+ inlineEnd: "--heading-tape-safe-inline-end",
970
+ blockStart: "--heading-tape-safe-block-start",
971
+ blockEnd: "--heading-tape-safe-block-end"
972
+ };
973
+ function cssMax(values) {
974
+ const resolvedValues = values.filter((value) => Boolean(value));
975
+ if (resolvedValues.length === 0) {
976
+ return "0px";
977
+ }
978
+ return resolvedValues.length === 1 ? resolvedValues[0] : `max(${resolvedValues.join(", ")})`;
979
+ }
980
+ function getDecorationSafeAreaStyle(decorations) {
981
+ return Object.fromEntries(
982
+ Object.keys(safeAreaCssVariable).map((edge) => [
983
+ safeAreaCssVariable[edge],
984
+ cssMax(decorations.map((decoration) => {
985
+ var _a;
986
+ return (_a = decoration.safeArea) == null ? void 0 : _a[edge];
987
+ }))
988
+ ])
989
+ );
990
+ }
991
+ function HeadingTapeDecorationSlot({ decoration }) {
992
+ var _a, _b, _c;
993
+ return /* @__PURE__ */ jsxs6(
994
+ "span",
995
+ {
996
+ "aria-hidden": "true",
997
+ "data-slot": "heading-tape-decoration",
998
+ "data-position": decoration.position,
999
+ className: cn(
1000
+ heading_tape_default.headingTapeDecoration,
1001
+ decorationPositionClassName[decoration.position],
1002
+ decoration.className
1003
+ ),
1004
+ style: __spreadValues({
1005
+ "--heading-tape-decoration-max-inline-size": decoration.maxInlineSize,
1006
+ "--heading-tape-decoration-inline-size": decoration.inlineSize,
1007
+ "--heading-tape-decoration-inline-offset": decoration.inlineOffset,
1008
+ "--heading-tape-decoration-block-offset": decoration.blockOffset,
1009
+ "--heading-tape-decoration-rotate": (_a = decoration.rotate) != null ? _a : "0deg"
1010
+ }, decoration.style),
1011
+ children: [
1012
+ /* @__PURE__ */ jsx14(
1013
+ "img",
1014
+ {
1015
+ className: cn(
1016
+ heading_tape_default.headingTapeDecorationImage,
1017
+ heading_tape_default.headingTapeDecorationImageMobile,
1018
+ decoration.imageClassName
1019
+ ),
1020
+ alt: (_b = decoration.mobile.alt) != null ? _b : "",
1021
+ src: decoration.mobile.src,
1022
+ srcSet: decoration.mobile.srcSet,
1023
+ width: decoration.mobile.width,
1024
+ height: decoration.mobile.height
1025
+ }
1026
+ ),
1027
+ decoration.desktop && // eslint-disable-next-line @next/next/no-img-element
1028
+ /* @__PURE__ */ jsx14(
1029
+ "img",
1030
+ {
1031
+ className: cn(
1032
+ heading_tape_default.headingTapeDecorationImage,
1033
+ heading_tape_default.headingTapeDecorationImageDesktop,
1034
+ decoration.imageClassName
1035
+ ),
1036
+ alt: (_c = decoration.desktop.alt) != null ? _c : "",
1037
+ src: decoration.desktop.src,
1038
+ srcSet: decoration.desktop.srcSet,
1039
+ width: decoration.desktop.width,
1040
+ height: decoration.desktop.height
1041
+ }
1042
+ )
1043
+ ]
1044
+ }
1045
+ );
1046
+ }
1047
+ function HeadingTape(_a) {
1048
+ var _b = _a, {
1049
+ children,
1050
+ className,
1051
+ color,
1052
+ decorationSet = "stickers",
1053
+ decorations,
1054
+ overlapTop = false,
1055
+ marginOffset = 5,
1056
+ size = "default",
1057
+ style
1058
+ } = _b, props = __objRest(_b, [
1059
+ "children",
1060
+ "className",
1061
+ "color",
1062
+ "decorationSet",
1063
+ "decorations",
1064
+ "overlapTop",
1065
+ "marginOffset",
1066
+ "size",
1067
+ "style"
1068
+ ]);
1069
+ void color;
1070
+ const resolvedDecorations = decorations === false ? [] : decorations != null ? decorations : decorationSets[decorationSet];
1071
+ const decorationSafeAreaStyle = getDecorationSafeAreaStyle(resolvedDecorations);
1072
+ return /* @__PURE__ */ jsx14(
1073
+ "div",
1074
+ __spreadProps(__spreadValues({
1075
+ "data-slot": "heading-tape",
1076
+ "data-has-decorations": resolvedDecorations.length > 0 ? "true" : "false",
1077
+ "data-size": size,
1078
+ className: cn(
1079
+ heading_tape_default.headingTapeSection,
1080
+ size === "compact" && heading_tape_default.compact,
1081
+ overlapTop && heading_tape_default.overlapTop,
1082
+ className
1083
+ ),
1084
+ style: __spreadValues(__spreadValues({
1085
+ "--margin-offset": String(marginOffset)
1086
+ }, decorationSafeAreaStyle), style)
1087
+ }, props), {
1088
+ children: /* @__PURE__ */ jsxs6("span", { className: heading_tape_default.headingTapeContainer, children: [
1089
+ resolvedDecorations.length > 0 && /* @__PURE__ */ jsx14("span", { className: heading_tape_default.headingTapeDecorations, children: resolvedDecorations.map((decoration) => /* @__PURE__ */ jsx14(HeadingTapeDecorationSlot, { decoration }, decoration.id)) }),
1090
+ /* @__PURE__ */ jsx14("span", { className: heading_tape_default.headingTapeText, children })
1091
+ ] })
1092
+ })
1093
+ );
1094
+ }
1095
+
1096
+ // src/components/ui/input.tsx
1097
+ import { Input as InputPrimitive } from "@base-ui/react/input";
1098
+ import { jsx as jsx15 } from "react/jsx-runtime";
1099
+ function Input(_a) {
1100
+ var _b = _a, { className, type } = _b, props = __objRest(_b, ["className", "type"]);
1101
+ return /* @__PURE__ */ jsx15(
1102
+ InputPrimitive,
1103
+ __spreadValues({
1104
+ type,
1105
+ "data-slot": "input",
1106
+ className: cn(
1107
+ "field-cut h-10 w-full min-w-0 border-2 border-foreground/30 bg-card px-3 py-2 text-base font-medium transition-all outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground placeholder:uppercase placeholder:text-xs placeholder:tracking-wider focus-visible:border-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive md:text-sm",
1108
+ className
1109
+ )
1110
+ }, props)
1111
+ );
1112
+ }
1113
+
1114
+ // src/components/ui/news-assets.ts
1115
+ var newsStapleAssets = {
1116
+ left: {
1117
+ src: "/_images/news/news-staple-left.png",
1118
+ width: 75,
1119
+ height: 48
1120
+ },
1121
+ right: {
1122
+ src: "/_images/news/news-staple-right.png",
1123
+ width: 45,
1124
+ height: 17
1125
+ }
1126
+ };
1127
+
1128
+ // src/components/ui/tape.tsx
1129
+ import { jsx as jsx16, jsxs as jsxs7 } from "react/jsx-runtime";
1130
+ function Tape(_a) {
1131
+ var _b = _a, {
1132
+ className,
1133
+ variant = "tape-1",
1134
+ position = "top-left",
1135
+ children
1136
+ } = _b, props = __objRest(_b, [
1137
+ "className",
1138
+ "variant",
1139
+ "position",
1140
+ "children"
1141
+ ]);
1142
+ const hasCustomPositioning = (className == null ? void 0 : className.includes("top-")) || (className == null ? void 0 : className.includes("bottom-")) || (className == null ? void 0 : className.includes("left-")) || (className == null ? void 0 : className.includes("right-")) || (className == null ? void 0 : className.includes("translate-"));
1143
+ return /* @__PURE__ */ jsxs7(
1144
+ "div",
1145
+ __spreadProps(__spreadValues({
1146
+ "data-slot": "tape",
1147
+ "data-variant": variant,
1148
+ "data-position": position,
1149
+ className: cn(
1150
+ "pointer-events-none absolute z-20 select-none",
1151
+ !hasCustomPositioning && [
1152
+ "w-[35%] max-w-[120px] data-[position=top-left]:-top-3 data-[position=top-left]:-left-2 data-[position=top-left]:rotate-[-8deg]",
1153
+ "w-[35%] max-w-[120px] data-[position=top-right]:-top-3 data-[position=top-right]:-right-2 data-[position=top-right]:rotate-[6deg]",
1154
+ "w-[35%] max-w-[120px] data-[position=center]:top-1/2 data-[position=center]:left-1/2 data-[position=center]:-translate-x-1/2 data-[position=center]:-translate-y-1/2 data-[position=center]:rotate-[-3deg]",
1155
+ "w-[35%] max-w-[120px] data-[position=bottom-left]:-bottom-3 data-[position=bottom-left]:-left-2 data-[position=bottom-left]:rotate-[4deg]",
1156
+ "w-[35%] max-w-[120px] data-[position=bottom-right]:-right-2 data-[position=bottom-right]:-bottom-3 data-[position=bottom-right]:rotate-[-5deg]",
1157
+ "w-[35%] max-w-[120px] data-[position=news]:-top-5 data-[position=news]:left-6 data-[position=news]:origin-center data-[position=news]:[transform:translate(0,-50%)_rotate(-12deg)]",
1158
+ "w-[35%] max-w-[120px] data-[position=event]:-top-5 data-[position=event]:right-6 data-[position=event]:origin-center data-[position=event]:[transform:translate(0,-50%)_rotate(12deg)]"
1159
+ ],
1160
+ className
1161
+ )
1162
+ }, props), {
1163
+ children: [
1164
+ /* @__PURE__ */ jsx16(TapePicture, { asset: variant, className: "drop-shadow-[1px_2px_1.5px_rgba(0,0,0,0.28)]" }),
1165
+ children
1166
+ ]
1167
+ })
1168
+ );
1169
+ }
1170
+ function Staple(_a) {
1171
+ var _b = _a, { className, position = "left" } = _b, props = __objRest(_b, ["className", "position"]);
1172
+ const asset = position === "left" ? newsStapleAssets.left : newsStapleAssets.right;
1173
+ const hasCustomPositioning = (className == null ? void 0 : className.includes("top-")) || (className == null ? void 0 : className.includes("bottom-")) || (className == null ? void 0 : className.includes("left-")) || (className == null ? void 0 : className.includes("right-")) || (className == null ? void 0 : className.includes("translate-"));
1174
+ return /* @__PURE__ */ jsx16(
1175
+ "div",
1176
+ __spreadProps(__spreadValues({
1177
+ "data-slot": "staple",
1178
+ "data-position": position,
1179
+ className: cn(
1180
+ "pointer-events-none absolute z-30 select-none",
1181
+ !hasCustomPositioning && [
1182
+ "w-[14%] max-w-[90px] data-[position=left]:bottom-0 data-[position=left]:left-[20px]",
1183
+ "w-[10%] max-w-[90px] data-[position=right]:right-[20px] data-[position=right]:bottom-0",
1184
+ "w-[10%] max-w-[90px] rotate-90 data-[position=top]:top-0 data-[position=top]:left-[20px]",
1185
+ "w-[10%] max-w-[90px] rotate-90 data-[position=bottom]:bottom-0 data-[position=bottom]:left-[20px]"
1186
+ ],
1187
+ className
1188
+ )
1189
+ }, props), {
1190
+ children: /* @__PURE__ */ jsx16("picture", { children: /* @__PURE__ */ jsx16(
1191
+ "img",
1192
+ {
1193
+ alt: "",
1194
+ className: cn(
1195
+ "block h-auto w-full",
1196
+ position === "left" ? "drop-shadow-[1px_2px_2px_rgba(0,0,0,0.25)]" : "drop-shadow-[1px_1.5px_1.5px_rgba(0,0,0,0.25)]"
1197
+ ),
1198
+ decoding: "async",
1199
+ draggable: false,
1200
+ height: asset.height,
1201
+ src: asset.src,
1202
+ width: asset.width
1203
+ }
1204
+ ) })
1205
+ })
1206
+ );
1207
+ }
1208
+
1209
+ // src/components/ui/marquee.tsx
1210
+ import { Fragment as Fragment2, jsx as jsx17, jsxs as jsxs8 } from "react/jsx-runtime";
1211
+ function Marquee(_a) {
1212
+ var _b = _a, {
1213
+ className,
1214
+ speed = 30,
1215
+ direction = "left",
1216
+ pauseOnHover = true,
1217
+ variant = "default",
1218
+ showEdgeTape = false,
1219
+ tapeVariant = "tape-2",
1220
+ children
1221
+ } = _b, props = __objRest(_b, [
1222
+ "className",
1223
+ "speed",
1224
+ "direction",
1225
+ "pauseOnHover",
1226
+ "variant",
1227
+ "showEdgeTape",
1228
+ "tapeVariant",
1229
+ "children"
1230
+ ]);
1231
+ return /* @__PURE__ */ jsxs8(
1232
+ "div",
1233
+ __spreadProps(__spreadValues({
1234
+ "data-slot": "marquee",
1235
+ "data-variant": variant,
1236
+ className: cn(
1237
+ "group/marquee relative flex overflow-hidden select-none",
1238
+ "data-[variant=tape]:bg-primary data-[variant=tape]:text-primary-foreground data-[variant=tape]:border-foreground data-[variant=tape]:-rotate-[2deg] data-[variant=tape]:border-y-2",
1239
+ "data-[variant=warning]:text-chaos-black data-[variant=warning]:border-foreground data-[variant=warning]:border-y-2 data-[variant=warning]:bg-[repeating-linear-gradient(45deg,var(--color-yellow),var(--color-yellow)_12px,var(--color-black)_12px,var(--color-black)_24px)]",
1240
+ "data-[variant=default]:bg-foreground data-[variant=default]:text-background data-[variant=default]:border-foreground data-[variant=default]:border-y-2",
1241
+ className
1242
+ )
1243
+ }, props), {
1244
+ children: [
1245
+ showEdgeTape && /* @__PURE__ */ jsxs8(Fragment2, { children: [
1246
+ /* @__PURE__ */ jsx17(Tape, { variant: tapeVariant, position: "top-left", className: "z-30" }),
1247
+ /* @__PURE__ */ jsx17(Tape, { variant: tapeVariant, position: "top-right", className: "z-30" })
1248
+ ] }),
1249
+ /* @__PURE__ */ jsxs8(
1250
+ "div",
1251
+ {
1252
+ className: cn(
1253
+ "splat-heading flex w-max items-center gap-8 px-8 py-2 text-sm text-[24px] font-black tracking-widest whitespace-nowrap uppercase",
1254
+ "[animation:marquee_linear_infinite]",
1255
+ pauseOnHover && "group-hover/marquee:[animation-play-state:paused]",
1256
+ direction === "right" && "[animation-direction:reverse]"
1257
+ ),
1258
+ style: { "--marquee-duration": `${speed}s` },
1259
+ children: [
1260
+ children,
1261
+ /* @__PURE__ */ jsx17("span", { "aria-hidden": "true", children })
1262
+ ]
1263
+ }
1264
+ )
1265
+ ]
1266
+ })
1267
+ );
1268
+ }
1269
+ function MarqueeItem(_a) {
1270
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1271
+ return /* @__PURE__ */ jsx17(
1272
+ "span",
1273
+ __spreadValues({
1274
+ "data-slot": "marquee-item",
1275
+ className: cn("inline-flex shrink-0 items-center gap-2", className)
1276
+ }, props)
1277
+ );
1278
+ }
1279
+
1280
+ // src/components/ui/nav-chevron.tsx
1281
+ import { jsx as jsx18 } from "react/jsx-runtime";
1282
+ function NavChevron({ isHighlighted, className }) {
1283
+ return /* @__PURE__ */ jsx18(
1284
+ "svg",
1285
+ {
1286
+ "data-nav-chevron": "true",
1287
+ "aria-hidden": "true",
1288
+ viewBox: "0 0 7 12",
1289
+ className: cn(
1290
+ "mt-[0.22em] h-[1.1rem] w-[0.65rem] shrink-0 text-current transition-transform duration-200 ease-out md:h-[1.35rem] md:w-[0.8rem]",
1291
+ className
1292
+ ),
1293
+ style: {
1294
+ transform: isHighlighted ? "translateX(5px)" : "translateX(0px)"
1295
+ },
1296
+ children: /* @__PURE__ */ jsx18(
1297
+ "path",
1298
+ {
1299
+ d: "M0,11.23.12,11l.32-.47.3-.12-.16-.35.18-.49.4-.21L1.09,9l.23-.35.26-.21.32-.21L2,7.84l.2-.38v-.3l.47-.47-.05-.38L3,6.08l-.19-.77,0-.26-.26-.3-.1-.31-.42-.25,0-.38-.32-.23L1.5,3.25l0-.32-.05-.26L1,2.37.94,2,.66,1.76.51,1.41.23,1.08.3.66.14.41,0,.13l.7,0L1,.08l.14.14L1.68,0,2,.12,2.21,0l.66.21.26,0h.42l.33.14L4.3.69l0,.38.29.27.14.4L5,2l.07.37,0,.14L5.48,3l.07.09.42.3.1.33L6,4.07l.24.33.42.25,0,.35.1.4.16.47-.11.42-.21.33L6.41,7,6.2,7.2,6,7.6,6,7.93l-.28.31-.3.3,0,.19-.16.37L5,9.43l-.18.14-.23.33-.21.38.09.42-.3.33,0,.18-.66.24-.39.1-.52.09,0-.09-.5-.09-.46.07-.26.09-.4,0-.39-.07-.45.17L0,11.23Z",
1300
+ fill: "currentColor"
1301
+ }
1302
+ )
1303
+ }
1304
+ );
1305
+ }
1306
+
1307
+ // src/components/ui/paper-tear-edge.tsx
1308
+ import { jsx as jsx19 } from "react/jsx-runtime";
1309
+ var PAPER_TEAR_EDGE_ASSETS = {
1310
+ top: {
1311
+ src: "/_images/svg/paper-tear-up.svg",
1312
+ width: 448,
1313
+ height: 60
1314
+ },
1315
+ bottom: {
1316
+ src: "/_images/svg/paper-tear-down.svg",
1317
+ width: 448,
1318
+ height: 24
1319
+ }
1320
+ };
1321
+ function PaperTearEdge(_a) {
1322
+ var _b = _a, {
1323
+ edge = "top",
1324
+ color = "currentColor",
1325
+ className,
1326
+ style
1327
+ } = _b, props = __objRest(_b, [
1328
+ "edge",
1329
+ "color",
1330
+ "className",
1331
+ "style"
1332
+ ]);
1333
+ const asset = PAPER_TEAR_EDGE_ASSETS[edge];
1334
+ const maskUrl = `url("${asset.src}")`;
1335
+ return /* @__PURE__ */ jsx19(
1336
+ "div",
1337
+ __spreadValues({
1338
+ "aria-hidden": "true",
1339
+ "data-slot": "paper-tear-edge",
1340
+ "data-edge": edge,
1341
+ className: cn("block shrink-0", className),
1342
+ style: __spreadValues({
1343
+ aspectRatio: `${asset.width} / ${asset.height}`,
1344
+ backgroundColor: color,
1345
+ maskImage: maskUrl,
1346
+ maskPosition: "center",
1347
+ maskRepeat: "no-repeat",
1348
+ maskSize: "100% 100%",
1349
+ WebkitMaskImage: maskUrl,
1350
+ WebkitMaskPosition: "center",
1351
+ WebkitMaskRepeat: "no-repeat",
1352
+ WebkitMaskSize: "100% 100%"
1353
+ }, style)
1354
+ }, props)
1355
+ );
1356
+ }
1357
+
1358
+ // src/components/ui/paper-surface.tsx
1359
+ import { jsx as jsx20, jsxs as jsxs9 } from "react/jsx-runtime";
1360
+ var PAPER_SURFACE_FILL = {
1361
+ white: "var(--color-white)",
1362
+ black: "var(--color-black)",
1363
+ red: "var(--color-red)"
1364
+ };
1365
+ function PaperSurface(_a) {
1366
+ var _b = _a, {
1367
+ tone = "white",
1368
+ className,
1369
+ topEdgeClassName,
1370
+ bottomEdgeClassName,
1371
+ contentClassName,
1372
+ showTopEdge = true,
1373
+ showBottomEdge = true,
1374
+ children
1375
+ } = _b, props = __objRest(_b, [
1376
+ "tone",
1377
+ "className",
1378
+ "topEdgeClassName",
1379
+ "bottomEdgeClassName",
1380
+ "contentClassName",
1381
+ "showTopEdge",
1382
+ "showBottomEdge",
1383
+ "children"
1384
+ ]);
1385
+ const fill = PAPER_SURFACE_FILL[tone];
1386
+ return /* @__PURE__ */ jsxs9("div", __spreadProps(__spreadValues({ className: cn("relative flex flex-col", className) }, props), { children: [
1387
+ showTopEdge ? /* @__PURE__ */ jsx20(
1388
+ PaperTearEdge,
1389
+ {
1390
+ edge: "top",
1391
+ color: fill,
1392
+ className: cn("pointer-events-none relative z-10 mb-[-2px] w-full select-none", topEdgeClassName)
1393
+ }
1394
+ ) : null,
1395
+ /* @__PURE__ */ jsx20("div", { className: cn("relative z-10", contentClassName), children }),
1396
+ showBottomEdge ? /* @__PURE__ */ jsx20(
1397
+ PaperTearEdge,
1398
+ {
1399
+ edge: "bottom",
1400
+ color: fill,
1401
+ className: cn("pointer-events-none relative z-10 mt-[-2px] w-full select-none", bottomEdgeClassName)
1402
+ }
1403
+ ) : null
1404
+ ] }));
1405
+ }
1406
+
1407
+ // src/components/ui/photo-frame.module.css
1408
+ var photo_frame_default = {};
1409
+
1410
+ // src/components/ui/photo-frame.tsx
1411
+ import { jsx as jsx21, jsxs as jsxs10 } from "react/jsx-runtime";
1412
+ var TAPE_CONFIG = {
1413
+ "tape-2": {
1414
+ asset: "tape-2",
1415
+ rotation: "6deg"
1416
+ },
1417
+ "tape-5": {
1418
+ asset: "tape-5",
1419
+ rotation: "0deg"
1420
+ }
1421
+ };
1422
+ var DECORATION_CONFIG = {
1423
+ "sticker-9": {
1424
+ asset: "sticker-9"
1425
+ },
1426
+ "sticker-10": {
1427
+ asset: "sticker-10"
1428
+ }
1429
+ };
1430
+ var VARIANT_CONFIG2 = {
1431
+ /** No tape, no decoration */
1432
+ a: {
1433
+ rotation: "1deg",
1434
+ border: "default",
1435
+ showTape: false,
1436
+ showSticker: false,
1437
+ tapeType: "tape-2",
1438
+ tapePosition: "center",
1439
+ decorationType: "sticker-9",
1440
+ decorationPosition: "bottomLeft"
1441
+ },
1442
+ /** Top-center tape-2 */
1443
+ b: {
1444
+ rotation: "0deg",
1445
+ border: "default",
1446
+ showTape: true,
1447
+ showSticker: false,
1448
+ tapeType: "tape-2",
1449
+ tapePosition: "center",
1450
+ decorationType: "sticker-9",
1451
+ decorationPosition: "bottomLeft"
1452
+ },
1453
+ /** Top-center tape-5 + bottom-left sticker-9 */
1454
+ c: {
1455
+ rotation: "-2deg",
1456
+ border: "medium",
1457
+ showTape: true,
1458
+ showSticker: true,
1459
+ tapeType: "tape-5",
1460
+ tapePosition: "center",
1461
+ decorationType: "sticker-9",
1462
+ decorationPosition: "bottomLeft"
1463
+ },
1464
+ /** Top-right sticker-10 */
1465
+ d: {
1466
+ rotation: "1deg",
1467
+ border: "thin",
1468
+ showTape: false,
1469
+ showSticker: true,
1470
+ tapeType: "tape-2",
1471
+ tapePosition: "center",
1472
+ decorationType: "sticker-10",
1473
+ decorationPosition: "topRight"
1474
+ },
1475
+ /** Top-center tape-5 only (no sticker) */
1476
+ e: {
1477
+ rotation: "-2deg",
1478
+ border: "medium",
1479
+ showTape: true,
1480
+ showSticker: false,
1481
+ tapeType: "tape-5",
1482
+ tapePosition: "center",
1483
+ decorationType: "sticker-9",
1484
+ decorationPosition: "bottomLeft"
1485
+ }
1486
+ };
1487
+ function PhotoFrame(_a) {
1488
+ var _b = _a, {
1489
+ ref,
1490
+ src,
1491
+ alt,
1492
+ border,
1493
+ variant = "a",
1494
+ showTape,
1495
+ showSticker,
1496
+ tapePosition,
1497
+ rotation,
1498
+ marginOffset,
1499
+ nested = false,
1500
+ fillWidth = false,
1501
+ className,
1502
+ children,
1503
+ style
1504
+ } = _b, props = __objRest(_b, [
1505
+ "ref",
1506
+ "src",
1507
+ "alt",
1508
+ "border",
1509
+ "variant",
1510
+ "showTape",
1511
+ "showSticker",
1512
+ "tapePosition",
1513
+ "rotation",
1514
+ "marginOffset",
1515
+ "nested",
1516
+ "fillWidth",
1517
+ "className",
1518
+ "children",
1519
+ "style"
1520
+ ]);
1521
+ const config = VARIANT_CONFIG2[variant];
1522
+ const resolvedBorder = border != null ? border : config.border;
1523
+ const resolvedShowTape = showTape != null ? showTape : config.showTape;
1524
+ const resolvedShowSticker = showSticker != null ? showSticker : config.showSticker;
1525
+ const resolvedTapePosition = tapePosition != null ? tapePosition : config.tapePosition;
1526
+ const resolvedRotation = rotation != null ? rotation : config.rotation;
1527
+ const resolvedTapeType = config.tapeType;
1528
+ const tapeConfig = TAPE_CONFIG[resolvedTapeType];
1529
+ const resolvedTapeRotation = tapeConfig.rotation;
1530
+ return /* @__PURE__ */ jsxs10(
1531
+ "div",
1532
+ __spreadProps(__spreadValues({
1533
+ ref,
1534
+ "data-slot": "photo-frame",
1535
+ "data-variant": variant,
1536
+ className: cn(
1537
+ photo_frame_default.photoFrame,
1538
+ fillWidth && photo_frame_default.fillWidth,
1539
+ nested && photo_frame_default.nested,
1540
+ resolvedBorder === "thin" && photo_frame_default.thinBorder,
1541
+ resolvedBorder === "medium" && photo_frame_default.mediumBorder,
1542
+ className
1543
+ ),
1544
+ style: __spreadValues({
1545
+ "--end-rotate": resolvedRotation,
1546
+ "--tape-rotation": resolvedTapeRotation,
1547
+ "--margin-offset": marginOffset != null ? marginOffset : 6
1548
+ }, style)
1549
+ }, props), {
1550
+ children: [
1551
+ resolvedShowTape && /* @__PURE__ */ jsx21(PhotoTape, { position: resolvedTapePosition, type: resolvedTapeType }),
1552
+ resolvedShowSticker && /* @__PURE__ */ jsx21(PhotoDecoration, { position: config.decorationPosition, type: config.decorationType }),
1553
+ src ? (
1554
+ // eslint-disable-next-line @next/next/no-img-element
1555
+ /* @__PURE__ */ jsx21("img", { src, alt: alt != null ? alt : "Styled photo", className: photo_frame_default.photo })
1556
+ ) : children
1557
+ ]
1558
+ })
1559
+ );
1560
+ }
1561
+ var TAPE_POSITION = {
1562
+ center: photo_frame_default.tapeCenter,
1563
+ left: photo_frame_default.tapeLeft,
1564
+ right: photo_frame_default.tapeRight,
1565
+ bottomCenter: photo_frame_default.tapeBottomCenter,
1566
+ bottomLeft: photo_frame_default.tapeBottomLeft,
1567
+ bottomRight: photo_frame_default.tapeBottomRight
1568
+ };
1569
+ function PhotoTape(_a) {
1570
+ var _b = _a, {
1571
+ position = "center",
1572
+ type = "tape-2",
1573
+ className
1574
+ } = _b, props = __objRest(_b, [
1575
+ "position",
1576
+ "type",
1577
+ "className"
1578
+ ]);
1579
+ const config = TAPE_CONFIG[type];
1580
+ if (!config) return null;
1581
+ return /* @__PURE__ */ jsx21(
1582
+ MediaDecoration,
1583
+ __spreadValues({
1584
+ asset: config.asset,
1585
+ className: cn(photo_frame_default.tape, TAPE_POSITION[position], className),
1586
+ mobilePictureClassName: photo_frame_default.tapeMobile,
1587
+ desktopPictureClassName: photo_frame_default.tapeDesktop
1588
+ }, props)
1589
+ );
1590
+ }
1591
+ var DECORATION_POSITION = {
1592
+ bottomLeft: photo_frame_default.decorationBottomLeft,
1593
+ topRight: photo_frame_default.decorationTopRight,
1594
+ bottomRight: photo_frame_default.decorationBottomRight,
1595
+ center: photo_frame_default.decorationCenter
1596
+ };
1597
+ function PhotoDecoration(_a) {
1598
+ var _b = _a, {
1599
+ position = "bottomLeft",
1600
+ type = "sticker-9",
1601
+ className
1602
+ } = _b, props = __objRest(_b, [
1603
+ "position",
1604
+ "type",
1605
+ "className"
1606
+ ]);
1607
+ var _a2;
1608
+ const config = DECORATION_CONFIG[type];
1609
+ const asset = (_a2 = config == null ? void 0 : config.asset) != null ? _a2 : isTapeImageVariant(type) ? type : null;
1610
+ if (!asset) return null;
1611
+ return /* @__PURE__ */ jsx21(
1612
+ MediaDecoration,
1613
+ __spreadValues({
1614
+ asset,
1615
+ className: cn(photo_frame_default.decoration, DECORATION_POSITION[position], className),
1616
+ mobilePictureClassName: photo_frame_default.decorationMobile,
1617
+ desktopPictureClassName: photo_frame_default.decorationDesktop
1618
+ }, props)
1619
+ );
1620
+ }
1621
+
1622
+ // src/components/ui/tag-hanger.tsx
1623
+ import { jsx as jsx22 } from "react/jsx-runtime";
1624
+ function TagHanger() {
1625
+ return /* @__PURE__ */ jsx22(
1626
+ "svg",
1627
+ {
1628
+ viewBox: "0 0 566 555",
1629
+ fill: "none",
1630
+ xmlns: "http://www.w3.org/2000/svg",
1631
+ className: "h-full w-full",
1632
+ preserveAspectRatio: "none",
1633
+ children: /* @__PURE__ */ jsx22(
1634
+ "path",
1635
+ {
1636
+ d: "m311.748694 27.1685099h-55.497388c-2.987542 0-5.410583-2.41764-5.410583-5.3985227s2.423041-5.3985227 5.410583-5.3985227h21.676089v-.3817326c0-3.3457742 2.719357-6.05906986 6.072605-6.05906986s6.072605 2.71329566 6.072605 6.05906986v.3817326h21.676089c2.987542 0 5.410583 2.41764 5.410583 5.3985227s-2.423041 5.3985227-5.410583 5.3985227m248.671936-18.68057264c-.480108-.68300201-2.89002-2.0040963-2.89002-2.0040963l-1.911052.14595659-1.860415.76907897-1.714133-.13285792-.783925-.39108882.146283-.75785154-.517616-1.52880175s.94146-3.10064198.495111-3.26343972c-.590757-.21332118-1.194642-.40418749-1.807904-.56885647-.613262-.16279774-1.237776-.30314061-1.869792-.41354368-1.265908-.2245486-2.569324-.34243662-3.900871-.34243662h-18.062157l-2.473677.86451213-1.468453 1.75896407-1.665371-.48839322-1.860416.87948204-2.449296-.97865767-1.470329-1.07409083-4.774815-.96181652h-79.04702l-5.950703 1.25560095-4.701675 2.53927047-3.011922-1.63546234h-2.938781l-3.141326 1.01795368 1.157133-1.3847164 2.741862-1.79264636-2.473677.86451213-1.468453 1.75896407-1.665371-.48839322-.748292.35366405-2.361152-1.23314608-3.730208-.5071056-3.715204-.74849535.857066.35927777-2.64434-.35927777h-170.15566l-8.4 1.76832026-6.856531 1.75896407-5.877561-2.34653292-3.91775.39108882-4.309712.97865767-4.506631.19460879-1.762893-1.17326646-8.251842-1.57184023h-160.507435c-1.2377763 0-2.4511722.10104687-3.6345613.29565566-1.1833892.19460879-2.3330208.4827795-3.445144.85515594-.6301407.40231625-1.8266578 1.5213168-1.8266578 1.5213168l-1.106497.78966259-2.39490954.72416925-1.49845948 1.15268284-1.29778968 1.64107605.03563295 1.39220135-.43884796.7952763-1.3596785.87012582-1.02960482 1.6822433s-1.64849297.60441-2.13047555 1.0797046c-1.32592096 2.8405398-2.06671132 6.0066751-2.06671132 9.3449644v499.9200981l3.31949096 13.242754 4.13904889 7.183684 5.48559945 4.300106 5.680643 1.270571 9.5027462 2.640317 11.1906229.658676 6.9784327 1.758964 8.3756195.51272 7.6892164 1.367875h109.36852l6.269524-.877611 1.714133-.245132 1.665372-1.221919 2.154856 1.173267 6.61085 1.171395h175.446216l6.83215-.890709 1.640991-1.307996 1.468453-.097304 3.465774 1.111515 14.361955.258231 31.591427.926263 18.022773-1.074091 7.933021-2.93223 3.268854 2.350275 6.367047-.40793 4.309712-.959945 2.927528.495878 4.712927-.301269 3.233222-1.270571 14.300067-.976787 6.155124.351793 5.6.233905 6.843402-.851414 3.718955-.185252 9.125787.351793 10.446082-1.322966 4.714802-4.27578 5.12927-1.58681 2.839384-2.640317 2.303014-4.739847 1.957937-1.367875 4.017147.19648 4.667917-6.259292 1.370931-5.013048 2.434293-3.925858 1.370931-5.570677 1.370931-5.473372 1.907301-5.600616v-480.0999421c0-4.0287762-1.078366-7.8068065-2.963161-11.0627613-.324448-.5595002-2.246752-2.06771836-2.616209-2.59353634z",
1637
+ fill: "currentColor",
1638
+ fillRule: "evenodd"
1639
+ }
1640
+ )
1641
+ }
1642
+ );
1643
+ }
1644
+
1645
+ // src/components/ui/rugged-card.tsx
1646
+ import { jsx as jsx23, jsxs as jsxs11 } from "react/jsx-runtime";
1647
+ var ruggedThemeMap = {
1648
+ yellow: { bg: "text-yellow", fg: "text-black" },
1649
+ blue: { bg: "text-blue", fg: "text-white" },
1650
+ purple: { bg: "text-purple", fg: "text-white" },
1651
+ orange: { bg: "text-orange", fg: "text-white" },
1652
+ green: { bg: "text-green", fg: "text-black" }
1653
+ };
1654
+ function RuggedCard(_a) {
1655
+ var _b = _a, {
1656
+ ref,
1657
+ className,
1658
+ ruggedTheme = "yellow",
1659
+ ruggedRotation = "2deg",
1660
+ ruggedBackground,
1661
+ children
1662
+ } = _b, props = __objRest(_b, [
1663
+ "ref",
1664
+ "className",
1665
+ "ruggedTheme",
1666
+ "ruggedRotation",
1667
+ "ruggedBackground",
1668
+ "children"
1669
+ ]);
1670
+ var _a2;
1671
+ const theme = (_a2 = ruggedThemeMap[ruggedTheme]) != null ? _a2 : ruggedThemeMap.yellow;
1672
+ const defaultBackground = /* @__PURE__ */ jsx23(TagHanger, {});
1673
+ return /* @__PURE__ */ jsxs11(
1674
+ "div",
1675
+ __spreadProps(__spreadValues({
1676
+ ref,
1677
+ "data-slot": "card",
1678
+ "data-variant": "rugged",
1679
+ style: { transform: `rotate(${ruggedRotation})` },
1680
+ className: cn(
1681
+ "group/card relative w-full pt-[12%] px-[6%] pb-[8%] select-none text-center flex flex-col justify-between gap-4 z-10",
1682
+ theme.fg,
1683
+ className
1684
+ )
1685
+ }, props), {
1686
+ children: [
1687
+ /* @__PURE__ */ jsx23("div", { className: cn("absolute inset-0 w-full h-full z-0 pointer-events-none select-none", theme.bg), children: ruggedBackground != null ? ruggedBackground : defaultBackground }),
1688
+ /* @__PURE__ */ jsx23("div", { className: "relative h-full flex flex-col justify-between gap-4 z-10 text-center", children })
1689
+ ]
1690
+ })
1691
+ );
1692
+ }
1693
+
1694
+ // src/components/ui/section-background.module.css
1695
+ var section_background_default = {};
1696
+
1697
+ // src/components/ui/section-background.tsx
1698
+ import { jsx as jsx24 } from "react/jsx-runtime";
1699
+ var PATTERN_MAP = {
1700
+ "base-bg-pattern": section_background_default.patternBaseBgPattern,
1701
+ "camo-black": section_background_default.patternCamoBlack,
1702
+ "camo-green": section_background_default.patternCamoGreen,
1703
+ "camo-purple": section_background_default.patternCamoPurple,
1704
+ "camo-purple-revised": section_background_default.patternCamoPurpleRevised,
1705
+ "camo-orange": section_background_default.patternCamoOrange,
1706
+ "camo-red": section_background_default.patternCamoRed,
1707
+ "camo-white": section_background_default.patternCamoWhite,
1708
+ "camo-white-outline": section_background_default.patternCamoWhiteOutline,
1709
+ "hardware-background": section_background_default.patternHardwareBackground,
1710
+ "octo-black": section_background_default.patternOctoBlack,
1711
+ "octo-red": section_background_default.patternOctoRed,
1712
+ "octoarrow-green": section_background_default.patternOctoarrowGreen,
1713
+ "octoarrow-orange": section_background_default.patternOctoarrowOrange,
1714
+ "squid-black": section_background_default.patternSquidBlack,
1715
+ "circles-green": section_background_default.patternCirclesGreen,
1716
+ "chip-white": section_background_default.patternChipWhite,
1717
+ "monsters-black": section_background_default.patternMonstersBlack,
1718
+ graffiti: section_background_default.patternGraffiti,
1719
+ "tapes-black": section_background_default.patternTapesBlack,
1720
+ "tapes-green": section_background_default.patternTapesGreen,
1721
+ "tapes-pattern": section_background_default.patternTapesPattern,
1722
+ "tapes-purple": section_background_default.patternTapesPurple
1723
+ };
1724
+ function SectionBackground(_a) {
1725
+ var _b = _a, {
1726
+ bgColor,
1727
+ darkBgColor,
1728
+ pattern,
1729
+ as: Tag = "div",
1730
+ className,
1731
+ children
1732
+ } = _b, props = __objRest(_b, [
1733
+ "bgColor",
1734
+ "darkBgColor",
1735
+ "pattern",
1736
+ "as",
1737
+ "className",
1738
+ "children"
1739
+ ]);
1740
+ return /* @__PURE__ */ jsx24(
1741
+ Tag,
1742
+ __spreadProps(__spreadValues({
1743
+ className: cn(
1744
+ section_background_default.sectionBackground,
1745
+ bgColor,
1746
+ darkBgColor,
1747
+ pattern && PATTERN_MAP[pattern],
1748
+ className
1749
+ )
1750
+ }, props), {
1751
+ children
1752
+ })
1753
+ );
1754
+ }
1755
+
1756
+ // src/components/ui/section.tsx
1757
+ import { jsxs as jsxs12 } from "react/jsx-runtime";
1758
+ function Section(_a) {
1759
+ var _b = _a, {
1760
+ size = "md",
1761
+ headingTape,
1762
+ pattern,
1763
+ bgColor,
1764
+ text,
1765
+ as = "section",
1766
+ bottomOverlayClearance = "none",
1767
+ className,
1768
+ children,
1769
+ style
1770
+ } = _b, props = __objRest(_b, [
1771
+ "size",
1772
+ "headingTape",
1773
+ "pattern",
1774
+ "bgColor",
1775
+ "text",
1776
+ "as",
1777
+ "bottomOverlayClearance",
1778
+ "className",
1779
+ "children",
1780
+ "style"
1781
+ ]);
1782
+ const paddingY = headingTape ? size === "lg" ? "py-28" : "py-24" : size === "lg" ? "py-20" : "py-16";
1783
+ return /* @__PURE__ */ jsxs12(
1784
+ SectionBackground,
1785
+ __spreadProps(__spreadValues({
1786
+ as,
1787
+ pattern,
1788
+ className: cn(
1789
+ paddingY,
1790
+ "relative z-[var(--z-deco)] pr-[calc(1.5rem+var(--section-side-nav-safe-area,0px))] pl-6",
1791
+ bgColor,
1792
+ text,
1793
+ className,
1794
+ bottomOverlayClearance === "banner-divider" && "pb-[var(--section-overlay-clearance)]"
1795
+ ),
1796
+ style: __spreadValues(__spreadValues({}, bottomOverlayClearance === "banner-divider" ? { "--section-overlay-clearance": layoutTokens.bannerDividerClearance } : {}), style)
1797
+ }, props), {
1798
+ children: [
1799
+ headingTape,
1800
+ children
1801
+ ]
1802
+ })
1803
+ );
1804
+ }
1805
+
1806
+ // src/components/ui/showcase-assets.ts
1807
+ var showcaseMediaAssets = {
1808
+ trailerThumbnail: {
1809
+ src: "/_images/screenshots/video-trailer.jpg",
1810
+ alt: "Splatoon UI media dialog preview",
1811
+ width: 748,
1812
+ height: 421
1813
+ },
1814
+ fullscreenPreview: {
1815
+ src: "/_images/gameplay/battle-online/gameplay-battle-online-anarchy-1.jpg",
1816
+ alt: "Fullscreen media dialog reference artwork",
1817
+ width: 658,
1818
+ height: 370
1819
+ },
1820
+ ruggedLookbook: {
1821
+ src: "/_images/home/s3-home-intro-blade.jpg",
1822
+ alt: "Rugged card lookbook reference artwork",
1823
+ width: 558,
1824
+ height: 313
1825
+ },
1826
+ ruggedMode: {
1827
+ src: "/_images/gameplay/gameplay-salmonrun.jpg",
1828
+ alt: "Rugged card mode reference artwork",
1829
+ width: 558,
1830
+ height: 313
1831
+ },
1832
+ ruggedScene: {
1833
+ src: "/_images/gameplay/splatfest/gameplay-splatfest-1.jpg",
1834
+ alt: "Rugged card scene reference artwork",
1835
+ width: 558,
1836
+ height: 313
1837
+ },
1838
+ homeHeader: {
1839
+ src: "/_images/home/header-back.jpg",
1840
+ alt: "Home header background reference artwork",
1841
+ width: 901,
1842
+ height: 1151
1843
+ },
1844
+ homeCharacter: {
1845
+ src: "/_images/home/character.png",
1846
+ alt: "Home character reference artwork",
1847
+ width: 1193,
1848
+ height: 767
1849
+ },
1850
+ turfWarLeft: {
1851
+ src: "/_images/gameplay/battle-online/gameplay-battle-online-turfwar-left-screen.jpg",
1852
+ alt: "Turf war left screen reference artwork",
1853
+ width: 658,
1854
+ height: 370
1855
+ },
1856
+ turfWarRight: {
1857
+ src: "/_images/gameplay/battle-online/gameplay-battle-online-turfwar-right-screen.jpg",
1858
+ alt: "Turf war right screen reference artwork",
1859
+ width: 658,
1860
+ height: 370
1861
+ },
1862
+ splatfestSecondary: {
1863
+ src: "/_images/gameplay/splatfest/gameplay-splatfest-2.jpg",
1864
+ alt: "Splatfest secondary reference artwork",
1865
+ width: 558,
1866
+ height: 313
1867
+ }
1868
+ };
1869
+
1870
+ // src/components/ui/squid-assets.ts
1871
+ var SQUID_ASSET_BASE = "/_images/squid";
1872
+ var squidImageAssets = {
1873
+ loader: {
1874
+ id: "loader-ika",
1875
+ src: `${SQUID_ASSET_BASE}/loader_ika.gif`,
1876
+ alt: "Animated squid loading glyph",
1877
+ width: 516,
1878
+ height: 567
1879
+ },
1880
+ mask: {
1881
+ id: "ika",
1882
+ src: `${SQUID_ASSET_BASE}/ika.png`,
1883
+ alt: "Squid mask reference artwork",
1884
+ width: 438,
1885
+ height: 481
1886
+ }
1887
+ };
1888
+ var squidSpriteAssets = {
1889
+ loaderMorph: {
1890
+ id: "loader-morph-sprite",
1891
+ src: `${SQUID_ASSET_BASE}/loader-morph-sprite.png`,
1892
+ alt: "Frame-animated morphing squid loader sprite",
1893
+ width: 8320,
1894
+ height: 130,
1895
+ frameWidth: 130,
1896
+ frameHeight: 130,
1897
+ frames: 64,
1898
+ durationMs: 8001,
1899
+ sourceUrl: "https://www.spriters-resource.com/media/assets/180/182952.png?updated=1755487320"
1900
+ },
1901
+ loaderSwim: {
1902
+ id: "loader-swim-sprite",
1903
+ src: `${SQUID_ASSET_BASE}/loader-swim-sprite.png`,
1904
+ alt: "Frame-animated swimming squid loader sprite",
1905
+ width: 4030,
1906
+ height: 130,
1907
+ frameWidth: 130,
1908
+ frameHeight: 130,
1909
+ frames: 31,
1910
+ durationMs: 6201,
1911
+ sourceUrl: "https://www.spriters-resource.com/media/assets/180/182953.png?updated=1755487320"
1912
+ }
1913
+ };
1914
+
1915
+ // src/components/ui/staple-card.module.css
1916
+ var staple_card_default = {};
1917
+
1918
+ // src/components/ui/staple-card.tsx
1919
+ import { Fragment as Fragment3, jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
1920
+ var VARIANT_CONFIG3 = {
1921
+ /** No tape */
1922
+ a: { showTape: false },
1923
+ /** With tape */
1924
+ b: { showTape: true },
1925
+ /** With tape (alt) */
1926
+ c: { showTape: true },
1927
+ /** With tape (alt) */
1928
+ d: { showTape: true }
1929
+ };
1930
+ function StapleCard(_a) {
1931
+ var _b = _a, {
1932
+ variant = "b",
1933
+ image,
1934
+ title,
1935
+ subtitle,
1936
+ action,
1937
+ surface = "white",
1938
+ showTape,
1939
+ hoverTilt = false,
1940
+ className,
1941
+ children
1942
+ } = _b, props = __objRest(_b, [
1943
+ "variant",
1944
+ "image",
1945
+ "title",
1946
+ "subtitle",
1947
+ "action",
1948
+ "surface",
1949
+ "showTape",
1950
+ "hoverTilt",
1951
+ "className",
1952
+ "children"
1953
+ ]);
1954
+ const config = VARIANT_CONFIG3[variant];
1955
+ const resolvedShowTape = showTape != null ? showTape : config.showTape;
1956
+ const isDark = surface === "dark";
1957
+ return /* @__PURE__ */ jsx25(
1958
+ "div",
1959
+ __spreadProps(__spreadValues({
1960
+ "data-slot": "card",
1961
+ "data-variant": variant,
1962
+ className: cn(staple_card_default.stapleCard, isDark && staple_card_default.surfaceDark, className)
1963
+ }, props), {
1964
+ children: /* @__PURE__ */ jsxs13("div", { className: cn(staple_card_default.card, "@container", hoverTilt && staple_card_default.hoverTilt), children: [
1965
+ /* @__PURE__ */ jsxs13(
1966
+ PaperSurface,
1967
+ {
1968
+ tone: isDark ? "black" : "white",
1969
+ topEdgeClassName: staple_card_default.cardTop,
1970
+ bottomEdgeClassName: staple_card_default.cardBottom,
1971
+ contentClassName: staple_card_default.cardLayout,
1972
+ children: [
1973
+ /* @__PURE__ */ jsx25("div", { className: staple_card_default.stapleLeft, children: /* @__PURE__ */ jsxs13("picture", { children: [
1974
+ /* @__PURE__ */ jsx25(
1975
+ "img",
1976
+ {
1977
+ className: staple_card_default.imgMobile,
1978
+ alt: "",
1979
+ src: newsStapleAssets.left.src,
1980
+ width: newsStapleAssets.left.width,
1981
+ height: newsStapleAssets.left.height
1982
+ }
1983
+ ),
1984
+ /* @__PURE__ */ jsx25(
1985
+ "img",
1986
+ {
1987
+ className: staple_card_default.imgDesktop,
1988
+ alt: "",
1989
+ src: newsStapleAssets.left.src,
1990
+ width: newsStapleAssets.left.width,
1991
+ height: newsStapleAssets.left.height
1992
+ }
1993
+ )
1994
+ ] }) }),
1995
+ /* @__PURE__ */ jsx25("div", { className: staple_card_default.stapleRight, children: /* @__PURE__ */ jsxs13("picture", { children: [
1996
+ /* @__PURE__ */ jsx25(
1997
+ "img",
1998
+ {
1999
+ className: staple_card_default.imgMobile,
2000
+ alt: "",
2001
+ src: newsStapleAssets.right.src,
2002
+ width: newsStapleAssets.right.width,
2003
+ height: newsStapleAssets.right.height
2004
+ }
2005
+ ),
2006
+ /* @__PURE__ */ jsx25(
2007
+ "img",
2008
+ {
2009
+ className: staple_card_default.imgDesktop,
2010
+ alt: "",
2011
+ src: newsStapleAssets.right.src,
2012
+ width: newsStapleAssets.right.width,
2013
+ height: newsStapleAssets.right.height
2014
+ }
2015
+ )
2016
+ ] }) }),
2017
+ /* @__PURE__ */ jsx25("div", { className: staple_card_default.image, children: image }),
2018
+ /* @__PURE__ */ jsx25("div", { className: staple_card_default.info, children: children != null ? children : /* @__PURE__ */ jsxs13(Fragment3, { children: [
2019
+ title && /* @__PURE__ */ jsx25("p", { className: staple_card_default.title, children: title }),
2020
+ subtitle && /* @__PURE__ */ jsx25("p", { className: staple_card_default.subtitle, children: subtitle }),
2021
+ action
2022
+ ] }) })
2023
+ ]
2024
+ }
2025
+ ),
2026
+ resolvedShowTape && /* @__PURE__ */ jsx25(
2027
+ MediaDecoration,
2028
+ {
2029
+ position: "top-left",
2030
+ className: staple_card_default.tape,
2031
+ asset: "sticker-9",
2032
+ responsive: false,
2033
+ media: "(min-width: 400px)",
2034
+ imageClassName: staple_card_default.tapeImage,
2035
+ style: {
2036
+ left: "25%",
2037
+ transform: "translate(-50%, -50%) rotate(-10deg)"
2038
+ }
2039
+ }
2040
+ )
2041
+ ] })
2042
+ })
2043
+ );
2044
+ }
2045
+ function StapleCardTitle(_a) {
2046
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2047
+ return /* @__PURE__ */ jsx25("p", __spreadValues({ "data-slot": "card-title", className: cn(staple_card_default.title, className) }, props));
2048
+ }
2049
+ function StapleCardDescription(_a) {
2050
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2051
+ return /* @__PURE__ */ jsx25("p", __spreadValues({ "data-slot": "card-description", className: cn(staple_card_default.subtitle, className) }, props));
2052
+ }
2053
+
2054
+ // src/components/ui/stickers/sticker-image.tsx
2055
+ import { jsx as jsx26 } from "react/jsx-runtime";
2056
+ function StickerImage(_a) {
2057
+ var _b = _a, {
2058
+ asset,
2059
+ alt = "",
2060
+ className,
2061
+ draggable = false
2062
+ } = _b, props = __objRest(_b, [
2063
+ "asset",
2064
+ "alt",
2065
+ "className",
2066
+ "draggable"
2067
+ ]);
2068
+ return /* @__PURE__ */ jsx26(TapePicture, __spreadProps(__spreadValues({}, props), { asset, alt, className, draggable }));
2069
+ }
2070
+
2071
+ // src/components/ui/stickers/sticker-2-red.tsx
2072
+ import { jsx as jsx27 } from "react/jsx-runtime";
2073
+ function Sticker2Red(_a) {
2074
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2075
+ return /* @__PURE__ */ jsx27(StickerImage, __spreadValues({ asset: "sticker-2-red", className }, props));
2076
+ }
2077
+ Sticker2Red.displayName = "Sticker2Red";
2078
+
2079
+ // src/components/ui/stickers/sticker-10.tsx
2080
+ import { jsx as jsx28 } from "react/jsx-runtime";
2081
+ function Sticker10(_a) {
2082
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2083
+ return /* @__PURE__ */ jsx28(StickerImage, __spreadValues({ asset: "sticker-10", className }, props));
2084
+ }
2085
+ Sticker10.displayName = "Sticker10";
2086
+
2087
+ // src/components/ui/stickers/sticker-5.tsx
2088
+ import { jsx as jsx29 } from "react/jsx-runtime";
2089
+ function Sticker5(_a) {
2090
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2091
+ return /* @__PURE__ */ jsx29(StickerImage, __spreadValues({ asset: "sticker-5", className }, props));
2092
+ }
2093
+ Sticker5.displayName = "Sticker5";
2094
+
2095
+ // src/components/ui/tape-divider.module.css
2096
+ var tape_divider_default = {};
2097
+
2098
+ // src/components/ui/tape-divider.tsx
2099
+ import { jsx as jsx30, jsxs as jsxs14 } from "react/jsx-runtime";
2100
+ function TapeDivider(_a) {
2101
+ var _b = _a, {
2102
+ variant = "primary",
2103
+ rotate = "none",
2104
+ overlap = false,
2105
+ className
2106
+ } = _b, props = __objRest(_b, [
2107
+ "variant",
2108
+ "rotate",
2109
+ "overlap",
2110
+ "className"
2111
+ ]);
2112
+ const rotateClass = rotate === "left" ? tape_divider_default.rotateLeft : rotate === "right" ? tape_divider_default.rotateRight : rotate === "strong" ? tape_divider_default.rotateStrong : void 0;
2113
+ return /* @__PURE__ */ jsxs14(
2114
+ "div",
2115
+ __spreadProps(__spreadValues({
2116
+ "aria-hidden": "true",
2117
+ className: cn(
2118
+ tape_divider_default.tapeDivider,
2119
+ variant === "double" && tape_divider_default.double,
2120
+ overlap && tape_divider_default.overlap,
2121
+ className
2122
+ )
2123
+ }, props), {
2124
+ children: [
2125
+ /* @__PURE__ */ jsx30("div", { className: cn(tape_divider_default.tapePrimary, rotateClass) }),
2126
+ variant === "double" && /* @__PURE__ */ jsx30("div", { className: cn(tape_divider_default.tapeSecondary, rotateClass) })
2127
+ ]
2128
+ })
2129
+ );
2130
+ }
2131
+
2132
+ // src/components/ui/tape-title.module.css
2133
+ var tape_title_default = {};
2134
+
2135
+ // src/components/ui/tape-title.tsx
2136
+ import { jsx as jsx31 } from "react/jsx-runtime";
2137
+ function TapeTitle(_a) {
2138
+ var _b = _a, { color = "black", className, children } = _b, props = __objRest(_b, ["color", "className", "children"]);
2139
+ return /* @__PURE__ */ jsx31(
2140
+ "div",
2141
+ __spreadProps(__spreadValues({
2142
+ className: cn(
2143
+ tape_title_default.container,
2144
+ color === "red" && tape_title_default.red,
2145
+ color === "yellow" && tape_title_default.yellow,
2146
+ className
2147
+ )
2148
+ }, props), {
2149
+ children: /* @__PURE__ */ jsx31("h2", { className: tape_title_default.title, children })
2150
+ })
2151
+ );
2152
+ }
2153
+
2154
+ // src/components/ui/wave-button.tsx
2155
+ import * as React from "react";
2156
+
2157
+ // src/components/ui/wave-button.module.css
2158
+ var wave_button_default = {};
2159
+
2160
+ // src/components/ui/wave-button.tsx
2161
+ import { jsx as jsx32 } from "react/jsx-runtime";
2162
+ var VARIANT_CLASS = {
2163
+ yellow: wave_button_default.yellow,
2164
+ white: wave_button_default.white,
2165
+ ghost: wave_button_default.ghost
2166
+ };
2167
+ var SIZE_CLASS = {
2168
+ md: wave_button_default.md,
2169
+ lg: wave_button_default.lg
2170
+ };
2171
+ var WaveButton = React.forwardRef(
2172
+ function WaveButton2(_a, ref) {
2173
+ var _b = _a, {
2174
+ variant = "yellow",
2175
+ size = "md",
2176
+ icon,
2177
+ animation = "morph",
2178
+ className
2179
+ } = _b, props = __objRest(_b, [
2180
+ "variant",
2181
+ "size",
2182
+ "icon",
2183
+ "animation",
2184
+ "className"
2185
+ ]);
2186
+ return /* @__PURE__ */ jsx32(
2187
+ "button",
2188
+ __spreadProps(__spreadValues({
2189
+ ref,
2190
+ className: cn(
2191
+ VARIANT_CLASS[variant],
2192
+ SIZE_CLASS[size],
2193
+ wave_button_default.iconWrap,
2194
+ animation === "morph" && wave_button_default.morph,
2195
+ wave_button_default.pressed,
2196
+ "grid place-content-center cursor-pointer",
2197
+ className
2198
+ )
2199
+ }, props), {
2200
+ children: icon !== null && (icon != null ? icon : /* @__PURE__ */ jsx32("span", { "data-menu-trigger-line": "", className: wave_button_default.icon }))
2201
+ })
2202
+ );
2203
+ }
2204
+ );
2205
+
2206
+ // src/components/ui/weapons-assets.ts
2207
+ var WEAPONS_ASSET_BASE = "/_images/weapons";
2208
+ var weaponMarqueeSources = Array.from({ length: 22 }, (_, index) => {
2209
+ const item = index + 1;
2210
+ return {
2211
+ id: `weapon-reference-${item}`,
2212
+ image: `${WEAPONS_ASSET_BASE}/marquee/s3_weapons_social-${item}.jpg`,
2213
+ alt: `Weapon reference artwork ${item}`
2214
+ };
2215
+ });
2216
+ var weaponShowcaseItems = weaponMarqueeSources.slice(0, 6).map((asset, index) => __spreadProps(__spreadValues({}, asset), {
2217
+ id: `loadout-panel-${index + 1}`,
2218
+ title: `Loadout Panel ${index + 1}`,
2219
+ description: [
2220
+ "Carousel frame using curated weapon reference artwork.",
2221
+ "Rotated media shell with curated source imagery.",
2222
+ "High-contrast gallery card for dense media pages.",
2223
+ "Responsive photo frame with tape and sticker accents.",
2224
+ "Sequential carousel state with fixed image rhythm.",
2225
+ "Reusable feature card for component-heavy sections."
2226
+ ][index]
2227
+ }));
2228
+ var weaponShopGalleryItems = [
2229
+ {
2230
+ id: "reference-shop-1",
2231
+ image: `${WEAPONS_ASSET_BASE}/shops-gallery/weapons-express-hotlantis-1.jpg`,
2232
+ icon: `${WEAPONS_ASSET_BASE}/shops-gallery/harmony-icon.png`,
2233
+ iconRotate: -14,
2234
+ alt: "Shop reference artwork 1",
2235
+ title: "Media Kit",
2236
+ description: "Frames, carousels, and gallery controls for image-heavy layouts."
2237
+ },
2238
+ {
2239
+ id: "reference-shop-2",
2240
+ image: `${WEAPONS_ASSET_BASE}/shops-gallery/weapons-express-ammo-knights-2.jpg`,
2241
+ icon: `${WEAPONS_ASSET_BASE}/shops-gallery/sheldon-icon.png`,
2242
+ iconRotate: -38,
2243
+ alt: "Shop reference artwork 2",
2244
+ title: "Control Kit",
2245
+ description: "Buttons, pagination, and navigation controls with bold silhouettes."
2246
+ },
2247
+ {
2248
+ id: "reference-shop-3",
2249
+ image: `${WEAPONS_ASSET_BASE}/shops-gallery/weapons-express-naut-couture-3.jpg`,
2250
+ icon: `${WEAPONS_ASSET_BASE}/shops-gallery/jella-icon.png`,
2251
+ iconRotate: -43,
2252
+ alt: "Shop reference artwork 3",
2253
+ title: "Surface Kit",
2254
+ description: "Cards, tags, torn-paper surfaces, and layered content panels."
2255
+ },
2256
+ {
2257
+ id: "reference-shop-4",
2258
+ image: `${WEAPONS_ASSET_BASE}/shops-gallery/weapons-express-manoward-4.jpg`,
2259
+ icon: `${WEAPONS_ASSET_BASE}/shops-gallery/coco-icon.png`,
2260
+ iconRotate: 25,
2261
+ alt: "Shop reference artwork 4",
2262
+ title: "Overlay Kit",
2263
+ description: "Dialogs, sheets, popovers, and full-screen media flows."
2264
+ },
2265
+ {
2266
+ id: "reference-shop-5",
2267
+ image: `${WEAPONS_ASSET_BASE}/shops-gallery/weapons-express-crush-station-5.jpg`,
2268
+ icon: `${WEAPONS_ASSET_BASE}/shops-gallery/eddy-icon.png`,
2269
+ iconRotate: 11,
2270
+ alt: "Shop reference artwork 5",
2271
+ title: "Feedback Kit",
2272
+ description: "Alerts, progress indicators, loaders, and stateful UI feedback."
2273
+ }
2274
+ ];
2275
+ var weaponMarqueeItems = weaponMarqueeSources;
2276
+
2277
+ export {
2278
+ __spreadValues,
2279
+ __spreadProps,
2280
+ __objRest,
2281
+ cn,
2282
+ resolveCSSColor,
2283
+ CardSlot,
2284
+ tapeImageAssets,
2285
+ isTapeImageVariant,
2286
+ TapePicture,
2287
+ TapeResponsivePictures,
2288
+ MediaDecoration,
2289
+ WideTornPaper,
2290
+ TornCard,
2291
+ TornCardTitle,
2292
+ TornCardDescription,
2293
+ Alert,
2294
+ AlertTitle,
2295
+ AlertDescription,
2296
+ AssetImage,
2297
+ BlackTapeContainer,
2298
+ ButtonArrow,
2299
+ ButtonDrip,
2300
+ characterImageAssets,
2301
+ pageTransitionCharacterAssets,
2302
+ eventImageAssets,
2303
+ EventCallout,
2304
+ layoutTokens,
2305
+ motionTokens,
2306
+ DemoContent,
2307
+ DemoExampleGroup,
2308
+ GitHubMark,
2309
+ HeadingTape,
2310
+ Input,
2311
+ newsStapleAssets,
2312
+ Tape,
2313
+ Staple,
2314
+ Marquee,
2315
+ MarqueeItem,
2316
+ NavChevron,
2317
+ PaperTearEdge,
2318
+ PaperSurface,
2319
+ photo_frame_default,
2320
+ PhotoFrame,
2321
+ PhotoTape,
2322
+ PhotoDecoration,
2323
+ TagHanger,
2324
+ RuggedCard,
2325
+ SectionBackground,
2326
+ Section,
2327
+ showcaseMediaAssets,
2328
+ squidImageAssets,
2329
+ squidSpriteAssets,
2330
+ StapleCard,
2331
+ StapleCardTitle,
2332
+ StapleCardDescription,
2333
+ Sticker2Red,
2334
+ Sticker10,
2335
+ Sticker5,
2336
+ TapeDivider,
2337
+ TapeTitle,
2338
+ wave_button_default,
2339
+ WaveButton,
2340
+ weaponShowcaseItems,
2341
+ weaponShopGalleryItems,
2342
+ weaponMarqueeItems
2343
+ };
2344
+ //# sourceMappingURL=chunk-KUURJUBW.js.map