@joystyk/catalog 0.0.0 → 0.2.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 (54) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +29 -2
  3. package/dist/advertise.d.ts +82 -0
  4. package/dist/advertise.js +203 -0
  5. package/dist/advertise.js.map +1 -0
  6. package/dist/categories.d.ts +12 -0
  7. package/dist/categories.js +45 -0
  8. package/dist/categories.js.map +1 -0
  9. package/dist/client.d.ts +1 -0
  10. package/dist/client.js +9 -0
  11. package/dist/client.js.map +1 -0
  12. package/dist/components/advertise.d.ts +4 -0
  13. package/dist/components/advertise.js +1304 -0
  14. package/dist/components/advertise.js.map +1 -0
  15. package/dist/components/app.d.ts +25 -0
  16. package/dist/components/app.js +106 -0
  17. package/dist/components/app.js.map +1 -0
  18. package/dist/components/leaving.d.ts +2 -0
  19. package/dist/components/leaving.js +104 -0
  20. package/dist/components/leaving.js.map +1 -0
  21. package/dist/components/views.d.ts +13 -0
  22. package/dist/components/views.js +1410 -0
  23. package/dist/components/views.js.map +1 -0
  24. package/dist/head.d.ts +6 -0
  25. package/dist/head.js +33 -0
  26. package/dist/head.js.map +1 -0
  27. package/dist/index.d.ts +11 -0
  28. package/dist/index.js +12 -0
  29. package/dist/labels.d.ts +10 -0
  30. package/dist/labels.js +27 -0
  31. package/dist/labels.js.map +1 -0
  32. package/dist/placeholders.d.ts +3 -0
  33. package/dist/placeholders.js +7 -0
  34. package/dist/placeholders.js.map +1 -0
  35. package/dist/registry.d.ts +46 -0
  36. package/dist/registry.js +106 -0
  37. package/dist/registry.js.map +1 -0
  38. package/dist/routes.d.ts +56 -0
  39. package/dist/routes.js +89 -0
  40. package/dist/routes.js.map +1 -0
  41. package/dist/seo.d.ts +31 -0
  42. package/dist/seo.js +174 -0
  43. package/dist/seo.js.map +1 -0
  44. package/dist/server.d.ts +50 -0
  45. package/dist/server.js +162 -0
  46. package/dist/server.js.map +1 -0
  47. package/dist/store.d.ts +202 -0
  48. package/dist/store.js +136 -0
  49. package/dist/store.js.map +1 -0
  50. package/dist/styles.css +1121 -0
  51. package/dist/wire.d.ts +108 -0
  52. package/dist/wire.js +74 -0
  53. package/dist/wire.js.map +1 -0
  54. package/package.json +63 -11
@@ -0,0 +1,1304 @@
1
+ import { ADVERTISE_EMAIL, CLAIMS_RULES, CONTACT_HONEYPOT, CONTACT_LIMITS, FORMAT_RULES, LANDING_RULES, PROHIBITED, REFUND_RULES, RESTRICTED, REVIEW_STEPS, RULE_SUMMARY, SLOT_NAMES, SURFACE_NAMES, previewSize, sizeLabel } from "../advertise.js";
2
+ import { ADVERTISE_PATH, ADVERTISE_POLICY_PATH } from "../routes.js";
3
+ import { compiled } from "@gyral/core/compiled";
4
+ import { each, invalid, nothing } from "@gyral/core";
5
+ import { SLOTS } from "@joystyk/ui/slots";
6
+ //#region src/components/advertise.ts
7
+ var _gyral$t0 = {
8
+ "id": "19jxj6k4dn6",
9
+ "html": "<li><article class=\"slot-card\"><h3></h3><div class=\"slot-preview\"><svg class=\"slot-shape\" aria-hidden=\"true\" focusable=\"false\"><rect width=\"100%\" height=\"100%\" rx=\"3\"/></svg></div><p></p><dl class=\"slot-facts\"><div><dt>Appears on</dt><dd></dd></div><div><dt>Wide screens</dt><dd></dd></div><div><dt>Narrow screens</dt><dd></dd></div><div><dt>Label</dt><dd></dd></div><div><dt>Targeting</dt><dd></dd></div></dl></article></li>",
10
+ "parts": [
11
+ [
12
+ 4,
13
+ [0, 0],
14
+ "aria-labelledby",
15
+ ["slot-", ""]
16
+ ],
17
+ [
18
+ 4,
19
+ [
20
+ 0,
21
+ 0,
22
+ 0
23
+ ],
24
+ "id",
25
+ ["slot-", ""]
26
+ ],
27
+ [1, [
28
+ 0,
29
+ 0,
30
+ 0
31
+ ]],
32
+ [
33
+ 3,
34
+ [
35
+ 0,
36
+ 0,
37
+ 1,
38
+ 0
39
+ ],
40
+ "width"
41
+ ],
42
+ [
43
+ 3,
44
+ [
45
+ 0,
46
+ 0,
47
+ 1,
48
+ 0
49
+ ],
50
+ "height"
51
+ ],
52
+ [1, [
53
+ 0,
54
+ 0,
55
+ 2
56
+ ]],
57
+ [1, [
58
+ 0,
59
+ 0,
60
+ 3,
61
+ 0,
62
+ 1
63
+ ]],
64
+ [1, [
65
+ 0,
66
+ 0,
67
+ 3,
68
+ 1,
69
+ 1
70
+ ]],
71
+ [1, [
72
+ 0,
73
+ 0,
74
+ 3,
75
+ 2,
76
+ 1
77
+ ]],
78
+ [1, [
79
+ 0,
80
+ 0,
81
+ 3,
82
+ 3,
83
+ 1
84
+ ]],
85
+ [1, [
86
+ 0,
87
+ 0,
88
+ 3,
89
+ 4,
90
+ 1
91
+ ]]
92
+ ],
93
+ "segments": [
94
+ "<li><article class=\"slot-card\"",
95
+ {
96
+ "k": "attr",
97
+ "name": "aria-labelledby",
98
+ "strings": ["slot-", ""]
99
+ },
100
+ "><h3",
101
+ {
102
+ "k": "attr",
103
+ "name": "id",
104
+ "strings": ["slot-", ""]
105
+ },
106
+ ">",
107
+ {
108
+ "k": "child",
109
+ "in": "h3"
110
+ },
111
+ "</h3><div class=\"slot-preview\"><svg class=\"slot-shape\" aria-hidden=\"true\" focusable=\"false\"",
112
+ {
113
+ "k": "attr",
114
+ "name": "width"
115
+ },
116
+ {
117
+ "k": "attr",
118
+ "name": "height"
119
+ },
120
+ "><rect width=\"100%\" height=\"100%\" rx=\"3\"/></svg></div><p>",
121
+ {
122
+ "k": "child",
123
+ "in": "p"
124
+ },
125
+ "</p><dl class=\"slot-facts\"><div><dt>Appears on</dt><dd>",
126
+ {
127
+ "k": "child",
128
+ "in": "dd"
129
+ },
130
+ "</dd></div><div><dt>Wide screens</dt><dd>",
131
+ {
132
+ "k": "child",
133
+ "in": "dd"
134
+ },
135
+ "</dd></div><div><dt>Narrow screens</dt><dd>",
136
+ {
137
+ "k": "child",
138
+ "in": "dd"
139
+ },
140
+ "</dd></div><div><dt>Label</dt><dd>",
141
+ {
142
+ "k": "child",
143
+ "in": "dd"
144
+ },
145
+ "</dd></div><div><dt>Targeting</dt><dd>",
146
+ {
147
+ "k": "child",
148
+ "in": "dd"
149
+ },
150
+ "</dd></div></dl></article></li>"
151
+ ]
152
+ };
153
+ var _gyral$t1 = {
154
+ "id": "2bdjjmp1ue3",
155
+ "html": "<section class=\"advertise-section\" aria-labelledby=\"slots-heading\"><h2 id=\"slots-heading\">The ad slots</h2><p>Each slot has a fixed size on wide and narrow screens, so your ad appears exactly as you made it and the page never jumps around it. The shapes below are drawn to scale.</p><ul class=\"slot-gallery\" role=\"list\"></ul></section>",
156
+ "parts": [[1, [0, 2]]],
157
+ "segments": [
158
+ "<section class=\"advertise-section\" aria-labelledby=\"slots-heading\"><h2 id=\"slots-heading\">The ad slots</h2><p>Each slot has a fixed size on wide and narrow screens, so your ad appears exactly as you made it and the page never jumps around it. The shapes below are drawn to scale.</p><ul class=\"slot-gallery\" role=\"list\">",
159
+ {
160
+ "k": "child",
161
+ "in": "ul"
162
+ },
163
+ "</ul></section>"
164
+ ]
165
+ };
166
+ var _gyral$t2 = {
167
+ "id": "2c5grizm68x",
168
+ "html": "<section class=\"advertise-section\" aria-labelledby=\"audience-heading\"><h2 id=\"audience-heading\">Who sees your ad</h2><ul class=\"points\"><li><strong>Every age.</strong> Joystyk is for families, children and grown-ups alike, so every ad must suit all of them.</li><li><strong>Chosen by context, never by person.</strong> We pick an ad by the page, game, category and date. Everyone on the same page on the same day sees the same ad.</li><li><strong>No tracking.</strong> No cookies, profiles or third-party ad scripts. We never learn who saw your ad, and neither do you.</li><li><strong>Counted on our server.</strong> We report impressions and clicks per creative per day.</li></ul><p>We don't publish traffic figures yet. Once we have a season of data, we'll share them on request.</p></section>",
169
+ "parts": [],
170
+ "segments": ["<section class=\"advertise-section\" aria-labelledby=\"audience-heading\"><h2 id=\"audience-heading\">Who sees your ad</h2><ul class=\"points\"><li><strong>Every age.</strong> Joystyk is for families, children and grown-ups alike, so every ad must suit all of them.</li><li><strong>Chosen by context, never by person.</strong> We pick an ad by the page, game, category and date. Everyone on the same page on the same day sees the same ad.</li><li><strong>No tracking.</strong> No cookies, profiles or third-party ad scripts. We never learn who saw your ad, and neither do you.</li><li><strong>Counted on our server.</strong> We report impressions and clicks per creative per day.</li></ul><p>We don't publish traffic figures yet. Once we have a season of data, we'll share them on request.</p></section>"]
171
+ };
172
+ var _gyral$t3 = {
173
+ "id": "1f4fkiwv02v",
174
+ "html": "<section class=\"advertise-section\" aria-labelledby=\"rates-heading\"><h2 id=\"rates-heading\">Rates</h2><p>Contact us for rates. We price each booking by slot and dates: the home page banner sells by the day or the week, and the daily presenting sponsor by the day. We bill by invoice.</p></section>",
175
+ "parts": [],
176
+ "segments": ["<section class=\"advertise-section\" aria-labelledby=\"rates-heading\"><h2 id=\"rates-heading\">Rates</h2><p>Contact us for rates. We price each booking by slot and dates: the home page banner sells by the day or the week, and the daily presenting sponsor by the day. We bill by invoice.</p></section>"]
177
+ };
178
+ var _gyral$t4 = {
179
+ "id": "2crefdy4szm",
180
+ "html": "<li></li>",
181
+ "parts": [[1, [0]]],
182
+ "segments": [
183
+ "<li>",
184
+ {
185
+ "k": "child",
186
+ "in": "li"
187
+ },
188
+ "</li>"
189
+ ]
190
+ };
191
+ var _gyral$t5 = {
192
+ "id": "198s56ly2ly",
193
+ "html": "<section class=\"advertise-section\" aria-labelledby=\"rules-heading\"><h2 id=\"rules-heading\">The rules every ad meets</h2><p>Children see these slots, so we hold every ad to children's advertising standards. In short:</p><ul class=\"points\"></ul><p><a>Read the full creative policy</a>, with the image specs for each slot.</p></section>",
194
+ "parts": [[1, [0, 2]], [
195
+ 3,
196
+ [
197
+ 0,
198
+ 3,
199
+ 0
200
+ ],
201
+ "href"
202
+ ]],
203
+ "segments": [
204
+ "<section class=\"advertise-section\" aria-labelledby=\"rules-heading\"><h2 id=\"rules-heading\">The rules every ad meets</h2><p>Children see these slots, so we hold every ad to children's advertising standards. In short:</p><ul class=\"points\">",
205
+ {
206
+ "k": "child",
207
+ "in": "ul"
208
+ },
209
+ "</ul><p><a",
210
+ {
211
+ "k": "attr",
212
+ "name": "href"
213
+ },
214
+ ">Read the full creative policy</a>, with the image specs for each slot.</p></section>"
215
+ ]
216
+ };
217
+ var _gyral$t6 = {
218
+ "id": "10ubthogxl0",
219
+ "html": "<p class=\"field-error\"></p>",
220
+ "parts": [[
221
+ 4,
222
+ [0],
223
+ "id",
224
+ ["", "-error"]
225
+ ], [1, [0]]],
226
+ "segments": [
227
+ "<p class=\"field-error\"",
228
+ {
229
+ "k": "attr",
230
+ "name": "id",
231
+ "strings": ["", "-error"]
232
+ },
233
+ ">",
234
+ {
235
+ "k": "child",
236
+ "in": "p"
237
+ },
238
+ "</p>"
239
+ ]
240
+ };
241
+ var _gyral$t7 = {
242
+ "id": "2asbq2uke16",
243
+ "html": " <span class=\"optional\">(optional)</span>",
244
+ "parts": [],
245
+ "segments": [" <span class=\"optional\">(optional)</span>"]
246
+ };
247
+ var _gyral$t8 = {
248
+ "id": "1xqpxyboz4s",
249
+ "html": "<div class=\"field\"><label><!----></label> <!----> <input></div>",
250
+ "parts": [
251
+ [
252
+ 3,
253
+ [0, 0],
254
+ "for"
255
+ ],
256
+ [
257
+ 2,
258
+ [0, 0],
259
+ 0
260
+ ],
261
+ [0, [0, 0]],
262
+ [
263
+ 2,
264
+ [0],
265
+ 2
266
+ ],
267
+ [
268
+ 3,
269
+ [0, 4],
270
+ "id"
271
+ ],
272
+ [
273
+ 3,
274
+ [0, 4],
275
+ "name"
276
+ ],
277
+ [
278
+ 3,
279
+ [0, 4],
280
+ "type"
281
+ ],
282
+ [
283
+ 3,
284
+ [0, 4],
285
+ "autocomplete"
286
+ ],
287
+ [
288
+ 3,
289
+ [0, 4],
290
+ "maxlength"
291
+ ],
292
+ [
293
+ 5,
294
+ [0, 4],
295
+ "required"
296
+ ],
297
+ [
298
+ 3,
299
+ [0, 4],
300
+ "value"
301
+ ],
302
+ [
303
+ 3,
304
+ [0, 4],
305
+ "aria-describedby"
306
+ ],
307
+ [7, [0, 4]]
308
+ ],
309
+ "segments": [
310
+ "<div class=\"field\"><label",
311
+ {
312
+ "k": "attr",
313
+ "name": "for"
314
+ },
315
+ ">",
316
+ {
317
+ "k": "child",
318
+ "in": "label"
319
+ },
320
+ "<!---->",
321
+ {
322
+ "k": "child",
323
+ "in": "label"
324
+ },
325
+ "</label> ",
326
+ {
327
+ "k": "child",
328
+ "in": "div"
329
+ },
330
+ "<!----> <input",
331
+ {
332
+ "k": "attr",
333
+ "name": "id"
334
+ },
335
+ {
336
+ "k": "attr",
337
+ "name": "name"
338
+ },
339
+ {
340
+ "k": "attr",
341
+ "name": "type"
342
+ },
343
+ {
344
+ "k": "attr",
345
+ "name": "autocomplete"
346
+ },
347
+ {
348
+ "k": "attr",
349
+ "name": "maxlength"
350
+ },
351
+ {
352
+ "k": "bool",
353
+ "name": "required"
354
+ },
355
+ {
356
+ "k": "attr",
357
+ "name": "value"
358
+ },
359
+ {
360
+ "k": "attr",
361
+ "name": "aria-describedby"
362
+ },
363
+ { "k": "hook" },
364
+ "></div>"
365
+ ]
366
+ };
367
+ var _gyral$t9 = {
368
+ "id": "3pcw9qbqt4",
369
+ "html": "<li><label class=\"choice\"> <input type=\"checkbox\" name=\"slots\"> <!----> </label></li>",
370
+ "parts": [
371
+ [
372
+ 3,
373
+ [
374
+ 0,
375
+ 0,
376
+ 1
377
+ ],
378
+ "value"
379
+ ],
380
+ [
381
+ 5,
382
+ [
383
+ 0,
384
+ 0,
385
+ 1
386
+ ],
387
+ "checked"
388
+ ],
389
+ [
390
+ 2,
391
+ [0, 0],
392
+ 3
393
+ ]
394
+ ],
395
+ "segments": [
396
+ "<li><label class=\"choice\"> <input type=\"checkbox\" name=\"slots\"",
397
+ {
398
+ "k": "attr",
399
+ "name": "value"
400
+ },
401
+ {
402
+ "k": "bool",
403
+ "name": "checked"
404
+ },
405
+ "> ",
406
+ {
407
+ "k": "child",
408
+ "in": "label"
409
+ },
410
+ "<!----> </label></li>"
411
+ ]
412
+ };
413
+ var _gyral$t10 = {
414
+ "id": "20i0erbfz1v",
415
+ "html": "<a></a>",
416
+ "parts": [[
417
+ 4,
418
+ [0],
419
+ "href",
420
+ ["#", ""]
421
+ ], [1, [0]]],
422
+ "segments": [
423
+ "<a",
424
+ {
425
+ "k": "attr",
426
+ "name": "href",
427
+ "strings": ["#", ""]
428
+ },
429
+ ">",
430
+ {
431
+ "k": "child",
432
+ "in": "a"
433
+ },
434
+ "</a>"
435
+ ]
436
+ };
437
+ var _gyral$t11 = {
438
+ "id": "1ehrvlrxspw",
439
+ "html": "<div class=\"form-errors\" role=\"alert\" aria-labelledby=\"form-errors-heading\"><h3 id=\"form-errors-heading\">Your message wasn't sent</h3><ul></ul></div>",
440
+ "parts": [[1, [0, 1]]],
441
+ "segments": [
442
+ "<div class=\"form-errors\" role=\"alert\" aria-labelledby=\"form-errors-heading\"><h3 id=\"form-errors-heading\">Your message wasn't sent</h3><ul>",
443
+ {
444
+ "k": "child",
445
+ "in": "ul"
446
+ },
447
+ "</ul></div>"
448
+ ]
449
+ };
450
+ var _gyral$t12 = {
451
+ "id": "2a2uir5v6dv",
452
+ "html": "<a></a>",
453
+ "parts": [[
454
+ 3,
455
+ [0],
456
+ "href"
457
+ ], [1, [0]]],
458
+ "segments": [
459
+ "<a",
460
+ {
461
+ "k": "attr",
462
+ "name": "href"
463
+ },
464
+ ">",
465
+ {
466
+ "k": "child",
467
+ "in": "a"
468
+ },
469
+ "</a>"
470
+ ]
471
+ };
472
+ var _gyral$t13 = {
473
+ "id": "qn33rfgouf",
474
+ "html": "<section class=\"advertise-section contact\" aria-labelledby=\"contact-heading\"><h2 id=\"contact-heading\">Get in touch</h2><p>Tell us what you'd like to advertise and when. We'll reply by email within <!----> business days, with availability and rates. You can also write to us at <!---->.</p><form class=\"contact-form\" method=\"post\" aria-labelledby=\"contact-heading\"><!----> <fieldset class=\"field\" id=\"contact-slots\"><legend>Slots you're interested in</legend><ul class=\"choices\" role=\"list\"></ul></fieldset><fieldset class=\"field dates\" aria-describedby=\"contact-dates-hint\"><legend>Dates</legend><p class=\"hint\" id=\"contact-dates-hint\">The first and last day you'd like your ad to run.</p><div class=\"date-pair\"><div class=\"field\"><label for=\"contact-start\">First day</label> <!----> <input id=\"contact-start\" name=\"start\" type=\"date\"></div><div class=\"field\"><label for=\"contact-end\">Last day</label> <!----> <input id=\"contact-end\" name=\"end\" type=\"date\"></div></div></fieldset><div class=\"field\"><label for=\"contact-message\">Message</label><p class=\"hint\" id=\"contact-message-hint\">What you'd like to advertise, and anything else we should know.</p><!----> <textarea id=\"contact-message\" name=\"message\" rows=\"6\" required>\n</textarea></div><div class=\"trap\"><label>Leave this field empty</label> <input type=\"text\" tabindex=\"-1\" autocomplete=\"off\"></div><p class=\"form-note\"></p><p><button type=\"submit\" class=\"cta\">Send message</button></p></form></section>",
475
+ "parts": [
476
+ [
477
+ 2,
478
+ [0, 1],
479
+ 1
480
+ ],
481
+ [
482
+ 2,
483
+ [0, 1],
484
+ 3
485
+ ],
486
+ [
487
+ 3,
488
+ [0, 2],
489
+ "action"
490
+ ],
491
+ [
492
+ 2,
493
+ [0, 2],
494
+ 0
495
+ ],
496
+ [
497
+ 2,
498
+ [0, 2],
499
+ 2
500
+ ],
501
+ [
502
+ 3,
503
+ [
504
+ 0,
505
+ 2,
506
+ 2
507
+ ],
508
+ "aria-describedby"
509
+ ],
510
+ [0, [
511
+ 0,
512
+ 2,
513
+ 2,
514
+ 0
515
+ ]],
516
+ [
517
+ 2,
518
+ [
519
+ 0,
520
+ 2,
521
+ 2
522
+ ],
523
+ 1
524
+ ],
525
+ [1, [
526
+ 0,
527
+ 2,
528
+ 2,
529
+ 1
530
+ ]],
531
+ [0, [
532
+ 0,
533
+ 2,
534
+ 3,
535
+ 0
536
+ ]],
537
+ [
538
+ 2,
539
+ [
540
+ 0,
541
+ 2,
542
+ 3,
543
+ 2,
544
+ 0
545
+ ],
546
+ 2
547
+ ],
548
+ [
549
+ 3,
550
+ [
551
+ 0,
552
+ 2,
553
+ 3,
554
+ 2,
555
+ 0,
556
+ 4
557
+ ],
558
+ "value"
559
+ ],
560
+ [
561
+ 3,
562
+ [
563
+ 0,
564
+ 2,
565
+ 3,
566
+ 2,
567
+ 0,
568
+ 4
569
+ ],
570
+ "aria-describedby"
571
+ ],
572
+ [7, [
573
+ 0,
574
+ 2,
575
+ 3,
576
+ 2,
577
+ 0,
578
+ 4
579
+ ]],
580
+ [
581
+ 2,
582
+ [
583
+ 0,
584
+ 2,
585
+ 3,
586
+ 2,
587
+ 1
588
+ ],
589
+ 2
590
+ ],
591
+ [
592
+ 3,
593
+ [
594
+ 0,
595
+ 2,
596
+ 3,
597
+ 2,
598
+ 1,
599
+ 4
600
+ ],
601
+ "value"
602
+ ],
603
+ [
604
+ 3,
605
+ [
606
+ 0,
607
+ 2,
608
+ 3,
609
+ 2,
610
+ 1,
611
+ 4
612
+ ],
613
+ "aria-describedby"
614
+ ],
615
+ [7, [
616
+ 0,
617
+ 2,
618
+ 3,
619
+ 2,
620
+ 1,
621
+ 4
622
+ ]],
623
+ [
624
+ 2,
625
+ [
626
+ 0,
627
+ 2,
628
+ 4
629
+ ],
630
+ 2
631
+ ],
632
+ [
633
+ 3,
634
+ [
635
+ 0,
636
+ 2,
637
+ 4,
638
+ 4
639
+ ],
640
+ "maxlength"
641
+ ],
642
+ [
643
+ 3,
644
+ [
645
+ 0,
646
+ 2,
647
+ 4,
648
+ 4
649
+ ],
650
+ "aria-describedby"
651
+ ],
652
+ [7, [
653
+ 0,
654
+ 2,
655
+ 4,
656
+ 4
657
+ ]],
658
+ [8, [
659
+ 0,
660
+ 2,
661
+ 4,
662
+ 4
663
+ ]],
664
+ [
665
+ 4,
666
+ [
667
+ 0,
668
+ 2,
669
+ 5,
670
+ 0
671
+ ],
672
+ "for",
673
+ ["contact-", ""]
674
+ ],
675
+ [
676
+ 4,
677
+ [
678
+ 0,
679
+ 2,
680
+ 5,
681
+ 2
682
+ ],
683
+ "id",
684
+ ["contact-", ""]
685
+ ],
686
+ [
687
+ 3,
688
+ [
689
+ 0,
690
+ 2,
691
+ 5,
692
+ 2
693
+ ],
694
+ "name"
695
+ ],
696
+ [1, [
697
+ 0,
698
+ 2,
699
+ 6
700
+ ]]
701
+ ],
702
+ "segments": [
703
+ "<section class=\"advertise-section contact\" aria-labelledby=\"contact-heading\"><h2 id=\"contact-heading\">Get in touch</h2><p>Tell us what you'd like to advertise and when. We'll reply by email within ",
704
+ {
705
+ "k": "child",
706
+ "in": "p"
707
+ },
708
+ "<!----> business days, with availability and rates. You can also write to us at ",
709
+ {
710
+ "k": "child",
711
+ "in": "p"
712
+ },
713
+ "<!---->.</p><form class=\"contact-form\" method=\"post\" aria-labelledby=\"contact-heading\"",
714
+ {
715
+ "k": "attr",
716
+ "name": "action"
717
+ },
718
+ ">",
719
+ {
720
+ "k": "child",
721
+ "in": "form"
722
+ },
723
+ "<!----> ",
724
+ {
725
+ "k": "child",
726
+ "in": "form"
727
+ },
728
+ "<fieldset class=\"field\" id=\"contact-slots\"",
729
+ {
730
+ "k": "attr",
731
+ "name": "aria-describedby"
732
+ },
733
+ "><legend>Slots you're interested in",
734
+ {
735
+ "k": "child",
736
+ "in": "legend"
737
+ },
738
+ "</legend>",
739
+ {
740
+ "k": "child",
741
+ "in": "fieldset"
742
+ },
743
+ "<ul class=\"choices\" role=\"list\">",
744
+ {
745
+ "k": "child",
746
+ "in": "ul"
747
+ },
748
+ "</ul></fieldset><fieldset class=\"field dates\" aria-describedby=\"contact-dates-hint\"><legend>Dates",
749
+ {
750
+ "k": "child",
751
+ "in": "legend"
752
+ },
753
+ "</legend><p class=\"hint\" id=\"contact-dates-hint\">The first and last day you'd like your ad to run.</p><div class=\"date-pair\"><div class=\"field\"><label for=\"contact-start\">First day</label> ",
754
+ {
755
+ "k": "child",
756
+ "in": "div"
757
+ },
758
+ "<!----> <input id=\"contact-start\" name=\"start\" type=\"date\"",
759
+ {
760
+ "k": "attr",
761
+ "name": "value"
762
+ },
763
+ {
764
+ "k": "attr",
765
+ "name": "aria-describedby"
766
+ },
767
+ { "k": "hook" },
768
+ "></div><div class=\"field\"><label for=\"contact-end\">Last day</label> ",
769
+ {
770
+ "k": "child",
771
+ "in": "div"
772
+ },
773
+ "<!----> <input id=\"contact-end\" name=\"end\" type=\"date\"",
774
+ {
775
+ "k": "attr",
776
+ "name": "value"
777
+ },
778
+ {
779
+ "k": "attr",
780
+ "name": "aria-describedby"
781
+ },
782
+ { "k": "hook" },
783
+ "></div></div></fieldset><div class=\"field\"><label for=\"contact-message\">Message</label><p class=\"hint\" id=\"contact-message-hint\">What you'd like to advertise, and anything else we should know.</p>",
784
+ {
785
+ "k": "child",
786
+ "in": "div"
787
+ },
788
+ "<!----> <textarea id=\"contact-message\" name=\"message\" rows=\"6\" required",
789
+ {
790
+ "k": "attr",
791
+ "name": "maxlength"
792
+ },
793
+ {
794
+ "k": "attr",
795
+ "name": "aria-describedby"
796
+ },
797
+ { "k": "hook" },
798
+ ">\n",
799
+ { "k": "text" },
800
+ "</textarea></div><div class=\"trap\"><label",
801
+ {
802
+ "k": "attr",
803
+ "name": "for",
804
+ "strings": ["contact-", ""]
805
+ },
806
+ ">Leave this field empty</label> <input type=\"text\" tabindex=\"-1\" autocomplete=\"off\"",
807
+ {
808
+ "k": "attr",
809
+ "name": "id",
810
+ "strings": ["contact-", ""]
811
+ },
812
+ {
813
+ "k": "attr",
814
+ "name": "name"
815
+ },
816
+ "></div><p class=\"form-note\">",
817
+ {
818
+ "k": "child",
819
+ "in": "p"
820
+ },
821
+ "</p><p><button type=\"submit\" class=\"cta\">Send message</button></p></form></section>"
822
+ ]
823
+ };
824
+ var _gyral$t14 = {
825
+ "id": "2dsdn8378cu",
826
+ "html": "<div class=\"advertise-page\"><header class=\"page-head\"><p class=\"kicker\">Advertise</p><h1 tabindex=\"-1\">Advertise with us</h1><p class=\"lede\">Joystyk sells its own ad space, like billboards beside a road. Your ad sits in a fixed, labeled slot beside free games for every age: never inside a game and never during play.</p></header><!----> <!----> <!----> <!----> </div>",
827
+ "parts": [
828
+ [
829
+ 2,
830
+ [0],
831
+ 1
832
+ ],
833
+ [
834
+ 2,
835
+ [0],
836
+ 3
837
+ ],
838
+ [
839
+ 2,
840
+ [0],
841
+ 5
842
+ ],
843
+ [
844
+ 2,
845
+ [0],
846
+ 7
847
+ ],
848
+ [0, [0]]
849
+ ],
850
+ "segments": [
851
+ "<div class=\"advertise-page\"><header class=\"page-head\"><p class=\"kicker\">Advertise</p><h1 tabindex=\"-1\">Advertise with us</h1><p class=\"lede\">Joystyk sells its own ad space, like billboards beside a road. Your ad sits in a fixed, labeled slot beside free games for every age: never inside a game and never during play.</p></header>",
852
+ {
853
+ "k": "child",
854
+ "in": "div"
855
+ },
856
+ "<!----> ",
857
+ {
858
+ "k": "child",
859
+ "in": "div"
860
+ },
861
+ "<!----> ",
862
+ {
863
+ "k": "child",
864
+ "in": "div"
865
+ },
866
+ "<!----> ",
867
+ {
868
+ "k": "child",
869
+ "in": "div"
870
+ },
871
+ "<!----> ",
872
+ {
873
+ "k": "child",
874
+ "in": "div"
875
+ },
876
+ "</div>"
877
+ ]
878
+ };
879
+ var _gyral$t15 = {
880
+ "id": "15h47s4kd6o",
881
+ "html": "<div><dt></dt><dd></dd></div>",
882
+ "parts": [[1, [0, 0]], [1, [0, 1]]],
883
+ "segments": [
884
+ "<div><dt>",
885
+ {
886
+ "k": "child",
887
+ "in": "dt"
888
+ },
889
+ "</dt><dd>",
890
+ {
891
+ "k": "child",
892
+ "in": "dd"
893
+ },
894
+ "</dd></div>"
895
+ ]
896
+ };
897
+ var _gyral$t16 = {
898
+ "id": "y63udkaoj1",
899
+ "html": "<tr><th scope=\"row\"></th><td></td><td></td><td></td></tr>",
900
+ "parts": [
901
+ [1, [0, 0]],
902
+ [1, [0, 1]],
903
+ [1, [0, 2]],
904
+ [1, [0, 3]]
905
+ ],
906
+ "segments": [
907
+ "<tr><th scope=\"row\">",
908
+ {
909
+ "k": "child",
910
+ "in": "th"
911
+ },
912
+ "</th><td>",
913
+ {
914
+ "k": "child",
915
+ "in": "td"
916
+ },
917
+ "</td><td>",
918
+ {
919
+ "k": "child",
920
+ "in": "td"
921
+ },
922
+ "</td><td>",
923
+ {
924
+ "k": "child",
925
+ "in": "td"
926
+ },
927
+ "</td></tr>"
928
+ ]
929
+ };
930
+ var _gyral$t17 = {
931
+ "id": "16yic2my4lg",
932
+ "html": "<article class=\"advertise-page policy-page\" aria-labelledby=\"policy-title\"><nav class=\"crumbs\" aria-label=\"Breadcrumb\"><ol><li><a>Advertise with us</a></li><li><a aria-current=\"page\">Creative policy</a></li></ol></nav><header class=\"page-head\"><p class=\"kicker\">For advertisers</p><h1 id=\"policy-title\" tabindex=\"-1\">Creative policy</h1><p class=\"lede\">Children play on Joystyk, so every ad must suit every age. These rules follow children's advertising standards in the US and the UK, and every creative meets them before it runs.</p></header><section class=\"advertise-section\" aria-labelledby=\"prohibited-heading\"><h2 id=\"prohibited-heading\">Products we never advertise</h2><dl class=\"policy-list\"></dl></section><section class=\"advertise-section\" aria-labelledby=\"restricted-heading\"><h2 id=\"restricted-heading\">Products we advertise with conditions</h2><dl class=\"policy-list\"></dl></section><section class=\"advertise-section\" aria-labelledby=\"claims-heading\"><h2 id=\"claims-heading\">Honest ads, no pressure</h2><ul class=\"points\"></ul></section><section class=\"advertise-section\" aria-labelledby=\"labels-heading\"><h2 id=\"labels-heading\">Labels</h2><p>Every slot carries a label we add: “Advertisement”, or “Sponsored” for the daily presenting sponsor. Your creative must not hide the label, imitate it or call itself anything else.</p></section><section class=\"advertise-section\" aria-labelledby=\"landing-heading\"><h2 id=\"landing-heading\">Landing pages</h2><ul class=\"points\"></ul></section><section class=\"advertise-section\" aria-labelledby=\"specs-heading\"><h2 id=\"specs-heading\">Image specs</h2><ul class=\"points\"></ul><div class=\"table-scroll\" role=\"region\" aria-labelledby=\"specs-caption\" tabindex=\"0\"><table class=\"spec-table\"><caption id=\"specs-caption\">The box each slot reserves, in CSS pixels</caption><thead><tr><th scope=\"col\">Slot</th><th scope=\"col\">Wide screens</th><th scope=\"col\">Narrow screens</th><th scope=\"col\">Label</th></tr></thead><tbody></tbody></table></div></section><section class=\"advertise-section\" aria-labelledby=\"review-heading\"><h2 id=\"review-heading\">Review</h2><ol class=\"steps\"></ol><p>We may refuse any creative, and take down any ad at any time, if it breaks these rules or we judge it unsuitable for a young audience. When we take an ad down, we tell you why.</p></section><section class=\"advertise-section\" aria-labelledby=\"refunds-heading\"><h2 id=\"refunds-heading\">If an ad doesn't run</h2><ul class=\"points\"></ul></section><p><a>Ask us about advertising</a></p></article>",
933
+ "parts": [
934
+ [
935
+ 3,
936
+ [
937
+ 0,
938
+ 0,
939
+ 0,
940
+ 0,
941
+ 0
942
+ ],
943
+ "href"
944
+ ],
945
+ [
946
+ 3,
947
+ [
948
+ 0,
949
+ 0,
950
+ 0,
951
+ 1,
952
+ 0
953
+ ],
954
+ "href"
955
+ ],
956
+ [1, [
957
+ 0,
958
+ 2,
959
+ 1
960
+ ]],
961
+ [1, [
962
+ 0,
963
+ 3,
964
+ 1
965
+ ]],
966
+ [1, [
967
+ 0,
968
+ 4,
969
+ 1
970
+ ]],
971
+ [1, [
972
+ 0,
973
+ 6,
974
+ 1
975
+ ]],
976
+ [1, [
977
+ 0,
978
+ 7,
979
+ 1
980
+ ]],
981
+ [1, [
982
+ 0,
983
+ 7,
984
+ 2,
985
+ 0,
986
+ 2
987
+ ]],
988
+ [1, [
989
+ 0,
990
+ 8,
991
+ 1
992
+ ]],
993
+ [1, [
994
+ 0,
995
+ 9,
996
+ 1
997
+ ]],
998
+ [
999
+ 3,
1000
+ [
1001
+ 0,
1002
+ 10,
1003
+ 0
1004
+ ],
1005
+ "href"
1006
+ ]
1007
+ ],
1008
+ "segments": [
1009
+ "<article class=\"advertise-page policy-page\" aria-labelledby=\"policy-title\"><nav class=\"crumbs\" aria-label=\"Breadcrumb\"><ol><li><a",
1010
+ {
1011
+ "k": "attr",
1012
+ "name": "href"
1013
+ },
1014
+ ">Advertise with us</a></li><li><a aria-current=\"page\"",
1015
+ {
1016
+ "k": "attr",
1017
+ "name": "href"
1018
+ },
1019
+ ">Creative policy</a></li></ol></nav><header class=\"page-head\"><p class=\"kicker\">For advertisers</p><h1 id=\"policy-title\" tabindex=\"-1\">Creative policy</h1><p class=\"lede\">Children play on Joystyk, so every ad must suit every age. These rules follow children's advertising standards in the US and the UK, and every creative meets them before it runs.</p></header><section class=\"advertise-section\" aria-labelledby=\"prohibited-heading\"><h2 id=\"prohibited-heading\">Products we never advertise</h2><dl class=\"policy-list\">",
1020
+ {
1021
+ "k": "child",
1022
+ "in": "dl"
1023
+ },
1024
+ "</dl></section><section class=\"advertise-section\" aria-labelledby=\"restricted-heading\"><h2 id=\"restricted-heading\">Products we advertise with conditions</h2><dl class=\"policy-list\">",
1025
+ {
1026
+ "k": "child",
1027
+ "in": "dl"
1028
+ },
1029
+ "</dl></section><section class=\"advertise-section\" aria-labelledby=\"claims-heading\"><h2 id=\"claims-heading\">Honest ads, no pressure</h2><ul class=\"points\">",
1030
+ {
1031
+ "k": "child",
1032
+ "in": "ul"
1033
+ },
1034
+ "</ul></section><section class=\"advertise-section\" aria-labelledby=\"labels-heading\"><h2 id=\"labels-heading\">Labels</h2><p>Every slot carries a label we add: “Advertisement”, or “Sponsored” for the daily presenting sponsor. Your creative must not hide the label, imitate it or call itself anything else.</p></section><section class=\"advertise-section\" aria-labelledby=\"landing-heading\"><h2 id=\"landing-heading\">Landing pages</h2><ul class=\"points\">",
1035
+ {
1036
+ "k": "child",
1037
+ "in": "ul"
1038
+ },
1039
+ "</ul></section><section class=\"advertise-section\" aria-labelledby=\"specs-heading\"><h2 id=\"specs-heading\">Image specs</h2><ul class=\"points\">",
1040
+ {
1041
+ "k": "child",
1042
+ "in": "ul"
1043
+ },
1044
+ "</ul><div class=\"table-scroll\" role=\"region\" aria-labelledby=\"specs-caption\" tabindex=\"0\"><table class=\"spec-table\"><caption id=\"specs-caption\">The box each slot reserves, in CSS pixels</caption><thead><tr><th scope=\"col\">Slot</th><th scope=\"col\">Wide screens</th><th scope=\"col\">Narrow screens</th><th scope=\"col\">Label</th></tr></thead><tbody>",
1045
+ {
1046
+ "k": "child",
1047
+ "in": "tbody"
1048
+ },
1049
+ "</tbody></table></div></section><section class=\"advertise-section\" aria-labelledby=\"review-heading\"><h2 id=\"review-heading\">Review</h2><ol class=\"steps\">",
1050
+ {
1051
+ "k": "child",
1052
+ "in": "ol"
1053
+ },
1054
+ "</ol><p>We may refuse any creative, and take down any ad at any time, if it breaks these rules or we judge it unsuitable for a young audience. When we take an ad down, we tell you why.</p></section><section class=\"advertise-section\" aria-labelledby=\"refunds-heading\"><h2 id=\"refunds-heading\">If an ad doesn't run</h2><ul class=\"points\">",
1055
+ {
1056
+ "k": "child",
1057
+ "in": "ul"
1058
+ },
1059
+ "</ul></section><p><a",
1060
+ {
1061
+ "k": "attr",
1062
+ "name": "href"
1063
+ },
1064
+ ">Ask us about advertising</a></p></article>"
1065
+ ]
1066
+ };
1067
+ var _gyral$t18 = {
1068
+ "id": "1hktygu39t9",
1069
+ "html": "<section class=\"sent\" aria-labelledby=\"sent-heading\"><p class=\"kicker\">Message sent</p><h1 id=\"sent-heading\" tabindex=\"-1\">Thanks for getting in touch</h1><p class=\"lede\">We read every message about advertising, and we'll reply by email within <!----> business days.</p><p>To add something to your message, write to us at <!---->.</p><ul class=\"sent-links\"><li><a>Back to Advertise with us</a></li><li><a href=\"/\">See all games</a></li></ul></section>",
1070
+ "parts": [
1071
+ [
1072
+ 2,
1073
+ [0, 2],
1074
+ 1
1075
+ ],
1076
+ [
1077
+ 2,
1078
+ [0, 3],
1079
+ 1
1080
+ ],
1081
+ [
1082
+ 3,
1083
+ [
1084
+ 0,
1085
+ 4,
1086
+ 0,
1087
+ 0
1088
+ ],
1089
+ "href"
1090
+ ]
1091
+ ],
1092
+ "segments": [
1093
+ "<section class=\"sent\" aria-labelledby=\"sent-heading\"><p class=\"kicker\">Message sent</p><h1 id=\"sent-heading\" tabindex=\"-1\">Thanks for getting in touch</h1><p class=\"lede\">We read every message about advertising, and we'll reply by email within ",
1094
+ {
1095
+ "k": "child",
1096
+ "in": "p"
1097
+ },
1098
+ "<!----> business days.</p><p>To add something to your message, write to us at ",
1099
+ {
1100
+ "k": "child",
1101
+ "in": "p"
1102
+ },
1103
+ "<!---->.</p><ul class=\"sent-links\"><li><a",
1104
+ {
1105
+ "k": "attr",
1106
+ "name": "href"
1107
+ },
1108
+ ">Back to Advertise with us</a></li><li><a href=\"/\">See all games</a></li></ul></section>"
1109
+ ]
1110
+ };
1111
+ var TARGET_NAMES = {
1112
+ page: "page",
1113
+ game: "game",
1114
+ category: "category",
1115
+ date: "date"
1116
+ };
1117
+ /** "a, b and c". */
1118
+ var listWords = (words) => words.length < 2 ? words[0] ?? "" : `${words.slice(0, -1).join(", ")} and ${words.at(-1) ?? ""}`;
1119
+ var capitalize = (text) => `${text.charAt(0).toUpperCase()}${text.slice(1)}`;
1120
+ /** Previews are drawn at a third of the slot's size, so they compare with each other. */
1121
+ var PREVIEW_SCALE = 3;
1122
+ var SlotCard = (s) => {
1123
+ const box = previewSize(s);
1124
+ return compiled(_gyral$t0, [
1125
+ s.id,
1126
+ s.id,
1127
+ SLOT_NAMES[s.id],
1128
+ Math.round(box.width / PREVIEW_SCALE),
1129
+ Math.round(box.height / PREVIEW_SCALE),
1130
+ s.placement,
1131
+ capitalize(listWords(s.surfaces.map((x) => SURFACE_NAMES[x]))),
1132
+ s.sizes.wide === null ? "Not shown" : sizeLabel(s.sizes.wide),
1133
+ s.sizes.narrow === null ? "Not shown" : sizeLabel(s.sizes.narrow),
1134
+ s.label,
1135
+ capitalize(listWords(s.targeting.map((t) => TARGET_NAMES[t])))
1136
+ ]);
1137
+ };
1138
+ var gallery = () => compiled(_gyral$t1, [each(SLOTS, (s) => s.id, SlotCard)]);
1139
+ var audience = () => compiled(_gyral$t2, []);
1140
+ var rates = () => compiled(_gyral$t3, []);
1141
+ var Point = (text) => compiled(_gyral$t4, [text]);
1142
+ var rules = () => compiled(_gyral$t5, [each(RULE_SUMMARY, (r) => r, Point), ADVERTISE_POLICY_PATH]);
1143
+ var text = (c, name) => {
1144
+ const value = c.contactForm?.values[name];
1145
+ return typeof value === "string" ? value : "";
1146
+ };
1147
+ var chosenSlots = (c) => {
1148
+ const value = c.contactForm?.values["slots"];
1149
+ return value === void 0 ? [] : typeof value === "string" ? [value] : value;
1150
+ };
1151
+ /** The ids an input's aria-describedby names: its hint and its error, when present. */
1152
+ var describedBy = (id, hint, errors) => {
1153
+ const ids = [...hint ? [`${id}-hint`] : [], ...errors === void 0 ? [] : [`${id}-error`]];
1154
+ return ids.length === 0 ? null : ids.join(" ");
1155
+ };
1156
+ var fieldError = (id, errors) => errors === void 0 ? nothing : compiled(_gyral$t6, [id, errors.join(" ")]);
1157
+ var TEXT_FIELDS = [
1158
+ {
1159
+ name: "name",
1160
+ label: "Your name",
1161
+ type: "text",
1162
+ autocomplete: "name",
1163
+ required: true
1164
+ },
1165
+ {
1166
+ name: "company",
1167
+ label: "Company or organization",
1168
+ type: "text",
1169
+ autocomplete: "organization",
1170
+ required: false
1171
+ },
1172
+ {
1173
+ name: "email",
1174
+ label: "Email address",
1175
+ type: "email",
1176
+ autocomplete: "email",
1177
+ required: true
1178
+ }
1179
+ ];
1180
+ var optional = compiled(_gyral$t7, []);
1181
+ var textField = (f, value, errors) => {
1182
+ const id = `contact-${f.name}`;
1183
+ return compiled(_gyral$t8, [
1184
+ id,
1185
+ f.label,
1186
+ f.required ? nothing : optional,
1187
+ fieldError(id, errors),
1188
+ id,
1189
+ f.name,
1190
+ f.type,
1191
+ f.autocomplete,
1192
+ CONTACT_LIMITS[f.name],
1193
+ f.required,
1194
+ value,
1195
+ describedBy(id, false, errors),
1196
+ invalid(errors)
1197
+ ]);
1198
+ };
1199
+ var SlotChoice = (s, checked) => compiled(_gyral$t9, [
1200
+ s.id,
1201
+ checked,
1202
+ SLOT_NAMES[s.id]
1203
+ ]);
1204
+ /** Where each field's error links to in the summary. */
1205
+ var FIELD_TARGETS = {
1206
+ name: "contact-name",
1207
+ company: "contact-company",
1208
+ email: "contact-email",
1209
+ slots: "contact-slots",
1210
+ start: "contact-start",
1211
+ end: "contact-end",
1212
+ message: "contact-message"
1213
+ };
1214
+ var ProblemItem = (p) => {
1215
+ const target = FIELD_TARGETS[p.field];
1216
+ return compiled(_gyral$t4, [target === void 0 ? p.message : compiled(_gyral$t10, [target, p.message])]);
1217
+ };
1218
+ var problems = (errors) => ["", ...Object.keys(FIELD_TARGETS)].flatMap((field) => (errors[field] ?? []).map((message) => ({
1219
+ field,
1220
+ message
1221
+ })));
1222
+ var errorSummary = (errors) => {
1223
+ const list = problems(errors);
1224
+ return list.length === 0 ? nothing : compiled(_gyral$t11, [each(list, (p) => `${p.field}:${p.message}`, ProblemItem)]);
1225
+ };
1226
+ /** How the form's messages are used and kept (advertising-policy.md, "Contact form messages"). */
1227
+ var PRIVACY_NOTE = `We use what you send only to reply to you about advertising. We never add you to a mailing list or share your details. We delete each message ${String(90)} days after we've dealt with it, and always within ${String(12)} months of its arrival. This form is for businesses: if you're under 18, please don't use it.`;
1228
+ /** The address, as text anyone can select and copy, and as a mailto: link for those whose mail app opens. */
1229
+ var emailLink = () => compiled(_gyral$t12, [`mailto:${ADVERTISE_EMAIL}`, ADVERTISE_EMAIL]);
1230
+ var contactForm = (c) => {
1231
+ const errors = c.contactForm?.errors ?? {};
1232
+ const chosen = chosenSlots(c);
1233
+ const isChosen = (s) => chosen.includes(s.id);
1234
+ return compiled(_gyral$t13, [
1235
+ 3,
1236
+ emailLink(),
1237
+ ADVERTISE_PATH,
1238
+ errorSummary(errors),
1239
+ TEXT_FIELDS.map((f) => textField(f, text(c, f.name), errors[f.name])),
1240
+ describedBy("contact-slots", false, errors["slots"]),
1241
+ optional,
1242
+ fieldError("contact-slots", errors["slots"]),
1243
+ each(SLOTS, (s) => s.id, SlotChoice, isChosen),
1244
+ optional,
1245
+ fieldError("contact-start", errors["start"]),
1246
+ text(c, "start"),
1247
+ describedBy("contact-start", false, errors["start"]),
1248
+ invalid(errors["start"]),
1249
+ fieldError("contact-end", errors["end"]),
1250
+ text(c, "end"),
1251
+ describedBy("contact-end", false, errors["end"]),
1252
+ invalid(errors["end"]),
1253
+ fieldError("contact-message", errors["message"]),
1254
+ CONTACT_LIMITS.message,
1255
+ describedBy("contact-message", true, errors["message"]),
1256
+ invalid(errors["message"]),
1257
+ text(c, "message"),
1258
+ CONTACT_HONEYPOT,
1259
+ CONTACT_HONEYPOT,
1260
+ CONTACT_HONEYPOT,
1261
+ PRIVACY_NOTE
1262
+ ]);
1263
+ };
1264
+ function advertiseView(c) {
1265
+ return compiled(_gyral$t14, [
1266
+ audience(),
1267
+ gallery(),
1268
+ rates(),
1269
+ rules(),
1270
+ contactForm(c)
1271
+ ]);
1272
+ }
1273
+ var PolicyEntry = (p) => compiled(_gyral$t15, [p.name, p.detail]);
1274
+ var SpecRow = (s) => compiled(_gyral$t16, [
1275
+ SLOT_NAMES[s.id],
1276
+ s.sizes.wide === null ? "Not shown" : sizeLabel(s.sizes.wide),
1277
+ s.sizes.narrow === null ? "Not shown" : sizeLabel(s.sizes.narrow),
1278
+ s.label
1279
+ ]);
1280
+ var Step = (text) => compiled(_gyral$t4, [text]);
1281
+ function policyView() {
1282
+ return compiled(_gyral$t17, [
1283
+ ADVERTISE_PATH,
1284
+ ADVERTISE_POLICY_PATH,
1285
+ each(PROHIBITED, (p) => p.name, PolicyEntry),
1286
+ each(RESTRICTED, (p) => p.name, PolicyEntry),
1287
+ each(CLAIMS_RULES, (r) => r, Point),
1288
+ each(LANDING_RULES, (r) => r, Point),
1289
+ each(FORMAT_RULES, (r) => r, Point),
1290
+ each(SLOTS, (s) => s.id, SpecRow),
1291
+ each(REVIEW_STEPS, (r) => r, Step),
1292
+ each(REFUND_RULES, (r) => r, Point),
1293
+ `${ADVERTISE_PATH}#contact-heading`
1294
+ ]);
1295
+ }
1296
+ var sentView = () => compiled(_gyral$t18, [
1297
+ 3,
1298
+ emailLink(),
1299
+ ADVERTISE_PATH
1300
+ ]);
1301
+ //#endregion
1302
+ export { advertiseView, policyView, sentView };
1303
+
1304
+ //# sourceMappingURL=advertise.js.map