@codeforamerica/marcomms-design-system 1.18.2 → 1.19.1

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 (68) hide show
  1. package/README.md +20 -15
  2. package/dist/components/accordion.js +160 -0
  3. package/dist/components/accordion.js.LICENSE.txt +11 -0
  4. package/dist/components/avatar.js +103 -0
  5. package/dist/components/avatar.js.LICENSE.txt +11 -0
  6. package/dist/components/bar.js +122 -0
  7. package/dist/components/bar.js.LICENSE.txt +11 -0
  8. package/dist/components/blob.js +133 -0
  9. package/dist/components/blob.js.LICENSE.txt +11 -0
  10. package/dist/components/box.js +99 -0
  11. package/dist/components/box.js.LICENSE.txt +11 -0
  12. package/dist/components/breadcrumbs.js +112 -0
  13. package/dist/components/breadcrumbs.js.LICENSE.txt +11 -0
  14. package/dist/components/button.js +159 -0
  15. package/dist/components/button.js.LICENSE.txt +11 -0
  16. package/dist/components/callout.js +135 -0
  17. package/dist/components/callout.js.LICENSE.txt +11 -0
  18. package/dist/components/card.js +873 -0
  19. package/dist/components/card.js.LICENSE.txt +11 -0
  20. package/dist/components/carousel.js +291 -0
  21. package/dist/components/carousel.js.LICENSE.txt +11 -0
  22. package/dist/components/icon.js +91 -0
  23. package/dist/components/icon.js.LICENSE.txt +11 -0
  24. package/dist/components/label.js +498 -0
  25. package/dist/components/label.js.LICENSE.txt +11 -0
  26. package/dist/components/logo-card.js +514 -0
  27. package/dist/components/logo-card.js.LICENSE.txt +11 -0
  28. package/dist/components/nav.js +129 -0
  29. package/dist/components/nav.js.LICENSE.txt +11 -0
  30. package/dist/components/page-nav.js +163 -0
  31. package/dist/components/page-nav.js.LICENSE.txt +11 -0
  32. package/dist/components/pager.js +707 -0
  33. package/dist/components/pager.js.LICENSE.txt +11 -0
  34. package/dist/components/pagination.js +303 -0
  35. package/dist/components/pagination.js.LICENSE.txt +11 -0
  36. package/dist/components/person-card.js +864 -0
  37. package/dist/components/person-card.js.LICENSE.txt +11 -0
  38. package/dist/components/pill.js +80 -0
  39. package/dist/components/pill.js.LICENSE.txt +11 -0
  40. package/dist/components/placeholder.js +12 -0
  41. package/dist/components/placeholder.js.LICENSE.txt +11 -0
  42. package/dist/components/promo.js +536 -0
  43. package/dist/components/promo.js.LICENSE.txt +11 -0
  44. package/dist/components/pullquote.js +89 -0
  45. package/dist/components/pullquote.js.LICENSE.txt +11 -0
  46. package/dist/components/quote.js +155 -0
  47. package/dist/components/quote.js.LICENSE.txt +11 -0
  48. package/dist/components/reveal.js +142 -0
  49. package/dist/components/reveal.js.LICENSE.txt +11 -0
  50. package/dist/components/slide.js +157 -0
  51. package/dist/components/slide.js.LICENSE.txt +11 -0
  52. package/dist/components/social-icon.js +240 -0
  53. package/dist/components/social-icon.js.LICENSE.txt +11 -0
  54. package/dist/components/stat.js +507 -0
  55. package/dist/components/stat.js.LICENSE.txt +11 -0
  56. package/dist/components/tab-list.js +688 -0
  57. package/dist/components/tab-list.js.LICENSE.txt +11 -0
  58. package/dist/components/tab.js +494 -0
  59. package/dist/components/tab.js.LICENSE.txt +11 -0
  60. package/dist/components/tile.js +662 -0
  61. package/dist/components/tile.js.LICENSE.txt +11 -0
  62. package/dist/components/transcript.js +483 -0
  63. package/dist/components/transcript.js.LICENSE.txt +11 -0
  64. package/dist/core.css +7 -0
  65. package/dist/core.js +0 -0
  66. package/dist/index.js +2328 -2328
  67. package/package.json +10 -3
  68. package/src/core.js +10 -0
@@ -0,0 +1,662 @@
1
+ /*! For license information please see tile.js.LICENSE.txt */
2
+ (()=>{"use strict";var t={544(t,e,i){var s=i(161),n=i(601);class r extends s.WF{static properties={color:{},shape:{},styles:{}};static styles=(()=>[n.s,s.AH`
3
+ :host {
4
+ --color: var(--blue-20);
5
+
6
+ display: block;
7
+ }
8
+
9
+ .blob,
10
+ svg {
11
+ height: 100%;
12
+ width: 100%;
13
+ }
14
+
15
+ svg path {
16
+ fill: var(--color, #fff);
17
+ }
18
+ `])();constructor(){super(),this.shape="1"}blobTemplate(){let t;switch(this.shape){case"1":default:t=s.qy`<svg
19
+ width="628"
20
+ height="577"
21
+ viewBox="0 0 628 577"
22
+ fill="none"
23
+ xmlns="http://www.w3.org/2000/svg"
24
+ >
25
+ <path
26
+ fill-rule="evenodd"
27
+ clip-rule="evenodd"
28
+ d="M304.482 3.44206C399.413 -5.50752 504.225 1.17063 567.446 72.5295C633.526 147.115 639.549 256.491 613.992 352.793C589.57 444.814 526.084 523.087 438.164 559.679C355.477 594.092 265.039 570.416 184.315 531.621C103.504 492.784 22.0294 438.546 3.59029 350.826C-14.5863 264.355 39.2746 183.666 97.1329 116.868C151.394 54.223 221.956 11.2221 304.482 3.44206Z"
29
+ />
30
+ </svg>`;break;case"2":t=s.qy`<svg
31
+ width="580"
32
+ height="592"
33
+ viewBox="0 0 580 592"
34
+ fill="none"
35
+ xmlns="http://www.w3.org/2000/svg"
36
+ >
37
+ <path
38
+ d="M238.814 591.215C210.461 592.077 182.849 587.767 155.66 580.979C60.4457 557.059 4.05766 489.933 0.460672 390.376C-2.50155 306.442 8.71258 223.693 37.2769 144.499C73.2468 44.6185 170.894 -12.5948 276.159 2.81295C358.996 14.9883 437.177 39.3389 499.172 100.108C588.039 187.167 604.437 293.512 544.346 402.767C514.618 456.855 477.59 505.988 426.386 541.544C369.892 580.656 304.723 587.767 238.814 591.215Z"
39
+ />
40
+ </svg>`;break;case"3":t=s.qy`<svg
41
+ width="620"
42
+ height="613"
43
+ viewBox="0 0 620 613"
44
+ fill="none"
45
+ xmlns="http://www.w3.org/2000/svg"
46
+ >
47
+ <path
48
+ fill-rule="evenodd"
49
+ clip-rule="evenodd"
50
+ d="M619.142 301.769C615.581 212.393 536.92 153.752 466.654 98.7402C397.998 44.9883 323.934 -10.5844 236.421 2.12929C141.656 15.8965 53.9975 76.8338 15.687 164.256C-20.6955 247.277 16.2818 336.243 54.5575 417.127C92.4807 497.265 137.965 580.831 224.139 604.752C314.166 629.742 409.183 593.817 484.092 536.359C559.738 478.336 622.883 395.641 619.142 301.769Z"
51
+ />
52
+ </svg>`;break;case"4":t=s.qy`<svg
53
+ width="656"
54
+ height="566"
55
+ viewBox="0 0 656 566"
56
+ fill="none"
57
+ xmlns="http://www.w3.org/2000/svg"
58
+ >
59
+ <path
60
+ fill-rule="evenodd"
61
+ clip-rule="evenodd"
62
+ d="M332.011 564.695C235.808 569.34 135.091 552.4 71.2946 488.381C4.66596 421.518 -10.0767 327.738 8.2158 239.764C27.3773 147.61 73.5054 52.3693 169.88 14.2546C263.181 -22.6447 364.8 21.5179 455.491 62.8734C540.631 101.698 627.337 150.367 649.771 233.088C672.265 316.032 626.78 399.503 564.43 464.569C505.684 525.875 422.382 560.331 332.011 564.695Z"
63
+ />
64
+ </svg>`}return t}render(){const t=this.color?`var(--${this.color})`:"var(--blue-20)";return s.qy`
65
+ <div
66
+ class="blob"
67
+ style="--color: ${t}"
68
+ >
69
+ ${this.blobTemplate()}
70
+ </div>
71
+ `}}customElements.get("cfa-blob")||customElements.define("cfa-blob",r)},562(t,e,i){var s=i(161),n=i(601);class r extends s.WF{static styles=(()=>[n.s,s.AH`
72
+ :host {
73
+ --size: 1.2em;
74
+
75
+ display: inline;
76
+ line-height: inherit;
77
+ }
78
+
79
+ .icon {
80
+ -webkit-font-feature-settings: "liga";
81
+ direction: ltr;
82
+ display: inline-block;
83
+ font-family: "Material Symbols Rounded";
84
+ font-size: var(--size);
85
+ font-style: normal;
86
+ font-weight: normal;
87
+ letter-spacing: normal;
88
+ margin-top: -0.1em;
89
+ text-transform: none;
90
+ vertical-align: middle;
91
+ white-space: nowrap;
92
+ word-wrap: normal;
93
+ }
94
+ `])();render(){return s.qy`
95
+ <span class="icon">
96
+ <slot></slot>
97
+ </span>
98
+ `}}customElements.get("cfa-icon")||customElements.define("cfa-icon",r)},601(t,e,i){i.d(e,{s:()=>s});const s=i(161).AH`
99
+ *:focus-visible,
100
+ *:target {
101
+ outline: var(--focus-outline);
102
+ position: relative;
103
+ }
104
+
105
+ // RESET
106
+
107
+ // Use a more-intuitive box-sizing model.
108
+ *, *::before, *::after {
109
+ box-sizing: border-box;
110
+ }
111
+
112
+ // Remove default margin
113
+ * {
114
+ margin: 0;
115
+ }
116
+
117
+ // Set default text-wrap of 'pretty'
118
+ * {
119
+ text-wrap: pretty;
120
+ }
121
+
122
+ // Wrap overly long words
123
+ * {
124
+ overflow-wrap: break-word;
125
+ text-overflow: ellipsis;
126
+ word-break: break-word;
127
+ }
128
+
129
+ // Fix Safari antialiasing for variable fonts
130
+ * {
131
+ font-synthesis: none !important;
132
+ }
133
+
134
+ // Improve text rendering
135
+ body {
136
+ -webkit-font-smoothing: antialiased;
137
+ }
138
+
139
+ // Reasonable media defaults
140
+ img, picture, video, canvas, svg {
141
+ display: block;
142
+ height: auto;
143
+ max-width: 100%;
144
+ }
145
+
146
+ // Remove built-in form typography styles
147
+ input, button, textarea, select {
148
+ font: inherit;
149
+ }
150
+
151
+ // Avoid text overflows
152
+ p, h1, h2, h3, h4, h5, h6 {
153
+ overflow-wrap: break-word;
154
+ }
155
+
156
+ // Create a root stacking context
157
+ #root, #__next {
158
+ isolation: isolate;
159
+ }
160
+ `},205(t,e,i){i.d(e,{g:()=>s});const s=i(161).AH`
161
+ // =====
162
+
163
+ // Typography spacing
164
+
165
+ // Add a single space around paragraphs, blockquotes, and lists
166
+ p, ul, ol, blockquote {
167
+ & + * {
168
+ margin-block-start: var(--spacing, var(--spacing-layout-1, 1.5rem));
169
+ }
170
+ * + & {
171
+ margin-block-start: var(--spacing, var(--spacing-layout-1, 1.5rem));
172
+ }
173
+ }
174
+
175
+ h1, h2, h3, h4, .h1, .h2, .h3, .h4, .display-1, .display-2 {
176
+ // Add a single line space after headings
177
+ & + * {
178
+ margin-block-start: var(--spacing, var(--spacing-layout-1, 1.5rem));
179
+ }
180
+
181
+ // Add two line spaces before headings
182
+ * + & {
183
+ --spacing: var(--spacing-layout-2);
184
+
185
+ margin-block-start: --spacing;
186
+ }
187
+
188
+ // Only add a single space between headings and other headings
189
+ & + & {
190
+ --spacing: var(--spacing-layout-1);
191
+ }
192
+
193
+ // Reduce space after breadcrumbs and eyebrows
194
+ cfa-breadcrumbs + & {
195
+ margin-block-start: var(--spacing-layout-half) !important;
196
+ }
197
+
198
+ .eyebrow + & {
199
+ margin-block-start: 0 !important;
200
+ }
201
+ }
202
+
203
+ h1, .h1, .display-1, .display-2 {
204
+ text-wrap: balance;
205
+ }
206
+
207
+ // =====
208
+
209
+ // Font styles
210
+
211
+ .regular {
212
+ font-family: var(--font-family-base);
213
+ font-size: var(--font-size-base);
214
+ line-height: var(--line-height-base);
215
+ }
216
+
217
+ .display-1 {
218
+ font-family: var(--font-family-heading);
219
+ font-size: var(--font-size-display-1);
220
+ font-weight: bold;
221
+ line-height: var(--line-height-display-1);
222
+ letter-spacing: var(--letter-spacing-display-1);
223
+ }
224
+
225
+ .display-2 {
226
+ font-family: var(--font-family-heading);
227
+ font-size: var(--font-size-display-2);
228
+ font-weight: bold;
229
+ line-height: var(--line-height-display-2);
230
+ letter-spacing: var(--letter-spacing-display-2);
231
+ }
232
+
233
+ h1,
234
+ .h1 {
235
+ font-family: var(--font-family-heading);
236
+ font-size: var(--font-size-h1);
237
+ font-weight: bold;
238
+ line-height: var(--line-height-h1);
239
+ letter-spacing: var(--letter-spacing-h1);
240
+ }
241
+
242
+ h2,
243
+ .h2 {
244
+ font-family: var(--font-family-heading);
245
+ font-size: var(--font-size-h2);
246
+ font-weight: bold;
247
+ line-height: var(--line-height-h2);
248
+ letter-spacing: var(--letter-spacing-h2);
249
+ }
250
+
251
+ h3,
252
+ .h3 {
253
+ font-family: var(--font-family-heading);
254
+ font-size: var(--font-size-h3);
255
+ font-weight: bold;
256
+ line-height: var(--line-height-h3);
257
+ letter-spacing: var(--letter-spacing-h3);
258
+ }
259
+
260
+ h4,
261
+ .h4 {
262
+ font-family: var(--font-family-heading);
263
+ font-size: var(--font-size-h4);
264
+ font-weight: bold;
265
+ line-height: var(--line-height-h4);
266
+ letter-spacing: var(--letter-spacing-h4);
267
+ }
268
+
269
+ .extra-large {
270
+ font-size: var(--font-size-extra-large);
271
+ line-height: var(--line-height-extra-large);
272
+ letter-spacing: var(--letter-spacing-extra-large);
273
+ }
274
+
275
+ .large {
276
+ font-size: var(--font-size-large);
277
+ line-height: var(--line-height-large);
278
+ letter-spacing: var(--letter-spacing-large);
279
+ }
280
+
281
+ .small {
282
+ font-size: var(--font-size-small);
283
+ line-height: var(--line-height-small);
284
+ letter-spacing: var(--letter-spacing-small);
285
+ }
286
+
287
+ .eyebrow {
288
+ font-family: var(--font-family-sans-serif);
289
+ font-size: var(--font-size-eyebrow);
290
+ font-weight: var(--font-weight-eyebrow);
291
+ letter-spacing: var(--letter-spacing-eyebrow);
292
+ line-height: var(--line-height-eyebrow);
293
+ text-transform: uppercase;
294
+ }
295
+
296
+ .eyebrow-with-line {
297
+ align-items: center;
298
+ color: var(--text-color);
299
+ display: flex;
300
+ font-family: var(--font-family-eyebrow);
301
+ font-size: var(--font-size-eyebrow);
302
+ font-weight: var(--font-weight-eyebrow);
303
+ letter-spacing: var(--letter-spacing-eyebrow);
304
+ line-height: var(--line-height-eyebrow);
305
+ margin-block-end: var(--spacing-layout-half);
306
+ position: relative;
307
+ text-transform: uppercase;
308
+
309
+ &::after {
310
+ border-block-end: var(--hairline) solid currentColor;
311
+ content: "";
312
+ flex-grow: 1;
313
+ margin-left: var(--spacing-component-3);
314
+ }
315
+ }
316
+
317
+ .subtle {
318
+ opacity: 0.6;
319
+ }
320
+
321
+ .serif {
322
+ font-family: var(--font-family-serif);
323
+ }
324
+
325
+ .sans-serif {
326
+ font-family: var(--font-family-sans-serif);
327
+ }
328
+
329
+ i,
330
+ em,
331
+ .italic {
332
+ font-style: italic;
333
+ }
334
+
335
+ b,
336
+ strong,
337
+ .strong {
338
+ font-weight: bold;
339
+ }
340
+
341
+ .normal {
342
+ font-weight: normal;
343
+ }
344
+
345
+ .prominent-link,
346
+ a.prominent-link {
347
+ --accent-color: var(--purple-60);
348
+
349
+ font-weight: bold;
350
+ text-decoration: underline;
351
+ text-decoration-color: var(--accent-color);
352
+ text-decoration-thickness: var(--medium);
353
+ text-underline-offset: 0.4em;
354
+ transition: color 0.2s ease-in-out, border-color 0.2s ease-in-out;
355
+
356
+ &:hover {
357
+ --accent-color: var(--red-60);
358
+ }
359
+
360
+ &:not(:has(cfa-icon))::after {
361
+ @include icon.icon;
362
+
363
+ content: "arrow_right_alt";
364
+ display: inline-block;
365
+ padding-inline-start: 0.1em;
366
+ text-decoration: none;
367
+ transition: padding 0.2s ease-in-out;
368
+ width: 1em;
369
+ }
370
+
371
+ &:not(:has(cfa-icon)):hover::after {
372
+ padding-inline-start: 0.3em;
373
+ }
374
+
375
+ cfa-icon {
376
+ text-decoration: none;
377
+ }
378
+ }
379
+
380
+ .white-text,
381
+ .text-light /* fallback */ {
382
+ -moz-osx-font-smoothing: grayscale; // Sharper antialising for white text on a dark background
383
+ -webkit-font-smoothing: antialiased; // Sharper antialising for white text on a dark background
384
+ color: var(--white);
385
+ --link-color: var(--white);
386
+ --link-hover-color: var(--white);
387
+ }
388
+
389
+ // =====
390
+
391
+ // Highlights
392
+
393
+ .highlight {
394
+ --highlight-offset: 0.2em;
395
+
396
+ box-decoration-break: clone;
397
+ display: inline;
398
+ background: linear-gradient(to top, transparent 0%, transparent var(--highlight-offset), var(--highlight-color) var(--highlight-offset), var(--highlight-color) calc(var(--highlight-offset) + var(--highlight-thickness)), transparent calc(var(--highlight-offset) + var(--highlight-thickness)), transparent 100%);
399
+ padding-inline: 0.1em;
400
+ -webkit-box-decoration-break: clone;
401
+ margin-inline-start: -0.1em;
402
+ margin-inline-end: -0.1em;
403
+ word-wrap: break-word;
404
+ }
405
+
406
+ // ======
407
+
408
+ // Lists
409
+
410
+ .ul {
411
+ list-style-type: disc;
412
+ padding-left: var(--spacing-layout-1);
413
+ }
414
+
415
+ .ul > li {
416
+ margin-inline-start: 0;
417
+ padding-left: var(--spacing-component-2);
418
+ }
419
+
420
+ .ul > li + li {
421
+ margin-block-start: var(--spacing-layout-half);
422
+ }
423
+
424
+ .ul > li > ul {
425
+ margin-block-start: var(--spacing-layout-half);
426
+ }
427
+
428
+ .ol {
429
+ list-style-type: decimal;
430
+ padding-left: var(--spacing-layout-1);
431
+ }
432
+
433
+ .ol > li {
434
+ margin-inline-start: 0;
435
+ padding-inline-start: var(--spacing-component-2);
436
+ }
437
+
438
+ .ol > li + li {
439
+ margin-block-start: var(--spacing-layout-half);
440
+ }
441
+
442
+ .ol > li > ul {
443
+ margin-block-start: var(--spacing-layout-half);
444
+ }
445
+
446
+ .ul--unstyled {
447
+ list-style: none;
448
+ padding: 0;
449
+ }
450
+
451
+ .ul--unstyled > li {
452
+ margin-inline: 0;
453
+ padding: 0;
454
+ }
455
+
456
+ .ul--line-separators > li + li::before {
457
+ border-block-start: 1px solid var(--gray-20);
458
+ content: "";
459
+ display: block;
460
+ margin-block: var(--spacing-layout-half);
461
+ width: 100%;
462
+ }
463
+
464
+ .ul--inline,
465
+ .ul--inline-with-separators,
466
+ .ul--inline-with-line-separators {
467
+ display: inline;
468
+ list-style: none;
469
+ padding-inline: 0 !important;
470
+ padding-left: 0 !important;
471
+ }
472
+
473
+ .ul--inline > li,
474
+ .ul--inline-with-separators > li,
475
+ .ul--inline-with-line-separators > li {
476
+ display: inline-block;
477
+ margin-inline-end: var(--spacing-component-3);
478
+ padding: 0 !important;
479
+ }
480
+
481
+ .ul--inline li:last-child,
482
+ .ul--inline-with-separators li:last-child,
483
+ .ul--inline-with-line-separators li:last-child {
484
+ margin-inline-end: 0;
485
+ }
486
+
487
+ .ul--inline > li + li,
488
+ .ul--inline-with-separators > li + li,
489
+ .ul--inline-with-line-separators > li + li {
490
+ margin-block-start: 0;
491
+ }
492
+
493
+ .ul--inline-with-separators li,
494
+ .ul--inline-with-line-separators li {
495
+ margin-inline-end: 0;
496
+ }
497
+
498
+ .ul--inline-with-separators > li::after {
499
+ content: "•";
500
+ margin-inline: var(--spacing-component-2);
501
+ opacity: 0.5;
502
+ }
503
+
504
+ .ul--inline-with-separators > li:last-child::after {
505
+ content: "";
506
+ }
507
+
508
+ .ul--inline-with-line-separators > li::after {
509
+ content: "|";
510
+ margin-inline: var(--spacing-component-2);
511
+ opacity: 0.5;
512
+ }
513
+
514
+ .ul--inline-with-line-separators > li:last-child::after {
515
+ content: "";
516
+ }
517
+
518
+ // ===
519
+
520
+ // Horizontal rule
521
+
522
+ hr {
523
+ --color: currentColor;
524
+
525
+ background-color: var(--color);
526
+ border: 0;
527
+ color: var(--color);
528
+ display: block;
529
+ font-size: 0;
530
+ height: var(--hairline);
531
+ margin-block: var(--spacing-layout-1);
532
+ opacity: 0.4;
533
+ }
534
+
535
+ // ===
536
+
537
+ // Icons
538
+
539
+ .icon {
540
+ -webkit-font-feature-settings: 'liga';
541
+ direction: ltr;
542
+ display: inline-block;
543
+ font-family: 'Material Symbols Rounded';
544
+ font-feature-settings: 'liga';
545
+ font-size: 1.4em;
546
+ font-style: normal;
547
+ font-weight: normal;
548
+ letter-spacing: normal;
549
+ text-transform: none;
550
+ vertical-align: middle;
551
+ white-space: nowrap;
552
+ word-wrap: normal;
553
+ }
554
+ `},826(t,e,i){i.d(e,{AH:()=>l,Rf:()=>h,sk:()=>c});const s=globalThis,n=s.ShadowRoot&&(void 0===s.ShadyCSS||s.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,r=Symbol(),o=new WeakMap;class a{constructor(t,e,i){if(this._$cssResult$=!0,i!==r)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(n&&void 0===t){const i=void 0!==e&&1===e.length;i&&(t=o.get(e)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&o.set(e,t))}return t}toString(){return this.cssText}}const l=(t,...e)=>{const i=1===t.length?t[0]:e.reduce((e,i,s)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[s+1],t[0]);return new a(i,t,r)},h=(t,e)=>{if(n)t.adoptedStyleSheets=e.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const i of e){const e=document.createElement("style"),n=s.litNonce;void 0!==n&&e.setAttribute("nonce",n),e.textContent=i.cssText,t.appendChild(e)}},c=n?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const i of t.cssRules)e+=i.cssText;return(t=>new a("string"==typeof t?t:t+"",void 0,r))(e)})(t):t},760(t,e,i){i.d(e,{AH:()=>s.AH,mN:()=>y});var s=i(826);const{is:n,defineProperty:r,getOwnPropertyDescriptor:o,getOwnPropertyNames:a,getOwnPropertySymbols:l,getPrototypeOf:h}=Object,c=globalThis,d=c.trustedTypes,p=d?d.emptyScript:"",g=c.reactiveElementPolyfillSupport,f=(t,e)=>t,u={toAttribute(t,e){switch(e){case Boolean:t=t?p:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let i=t;switch(e){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},v=(t,e)=>!n(t,e),m={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:v};Symbol.metadata??=Symbol("metadata"),c.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=m){if(e.state&&(e.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((e=Object.create(e)).wrapped=!0),this.elementProperties.set(t,e),!e.noAccessor){const i=Symbol(),s=this.getPropertyDescriptor(t,i,e);void 0!==s&&r(this.prototype,t,s)}}static getPropertyDescriptor(t,e,i){const{get:s,set:n}=o(this.prototype,t)??{get(){return this[e]},set(t){this[e]=t}};return{get:s,set(e){const r=s?.call(this);n?.call(this,e),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??m}static _$Ei(){if(this.hasOwnProperty(f("elementProperties")))return;const t=h(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(f("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(f("properties"))){const t=this.properties,e=[...a(t),...l(t)];for(const i of e)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const e=litPropertyMetadata.get(t);if(void 0!==e)for(const[t,i]of e)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,e]of this.elementProperties){const i=this._$Eu(t,e);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const t of i)e.unshift((0,s.sk)(t))}else void 0!==t&&e.push((0,s.sk)(t));return e}static _$Eu(t,e){const i=e.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,e=this.constructor.elementProperties;for(const i of e.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return(0,s.Rf)(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,e,i){this._$AK(t,i)}_$ET(t,e){const i=this.constructor.elementProperties.get(t),s=this.constructor._$Eu(t,i);if(void 0!==s&&!0===i.reflect){const n=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(e,i.type);this._$Em=t,null==n?this.removeAttribute(s):this.setAttribute(s,n),this._$Em=null}}_$AK(t,e){const i=this.constructor,s=i._$Eh.get(t);if(void 0!==s&&this._$Em!==s){const t=i.getPropertyOptions(s),n="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=s;const r=n.fromAttribute(e,t.type);this[s]=r??this._$Ej?.get(s)??r,this._$Em=null}}requestUpdate(t,e,i,s=!1,n){if(void 0!==t){const r=this.constructor;if(!1===s&&(n=this[t]),i??=r.getPropertyOptions(t),!((i.hasChanged??v)(n,e)||i.useDefault&&i.reflect&&n===this._$Ej?.get(t)&&!this.hasAttribute(r._$Eu(t,i))))return;this.C(t,e,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,e,{useDefault:i,reflect:s,wrapped:n},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??e??this[t]),!0!==n||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(e=void 0),this._$AL.set(t,e)),!0===s&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,e]of this._$Ep)this[t]=e;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[e,i]of t){const{wrapped:t}=i,s=this[e];!0!==t||this._$AL.has(e)||void 0===s||this.C(e,void 0,i,s)}}let t=!1;const e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(e)):this._$EM()}catch(e){throw t=!1,this._$EM(),e}t&&this._$AE(e)}willUpdate(t){}_$AE(t){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:"open"},y[f("elementProperties")]=new Map,y[f("finalized")]=new Map,g?.({ReactiveElement:y}),(c.reactiveElementVersions??=[]).push("2.1.2")},228(t,e,i){i.d(e,{AH:()=>s.AH,WF:()=>o,qy:()=>n.qy,s6:()=>n.s6});var s=i(760),n=i(752);const r=globalThis;class o extends s.mN{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=(0,n.XX)(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return n.c0}}o._$litElement$=!0,o.finalized=!0,r.litElementHydrateSupport?.({LitElement:o});const a=r.litElementPolyfillSupport;a?.({LitElement:o}),(r.litElementVersions??=[]).push("4.2.2")},752(t,e,i){i.d(e,{XX:()=>D,c0:()=>E,qy:()=>x,s6:()=>k});const s=globalThis,n=t=>t,r=s.trustedTypes,o=r?r.createPolicy("lit-html",{createHTML:t=>t}):void 0,a="$lit$",l=`lit$${Math.random().toFixed(9).slice(2)}$`,h="?"+l,c=`<${h}>`,d=document,p=()=>d.createComment(""),g=t=>null===t||"object"!=typeof t&&"function"!=typeof t,f=Array.isArray,u="[ \t\n\f\r]",v=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,m=/-->/g,y=/>/g,b=RegExp(`>|${u}(?:([^\\s"'>=/]+)(${u}*=${u}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),$=/'/g,_=/"/g,w=/^(?:script|style|textarea|title)$/i,A=t=>(e,...i)=>({_$litType$:t,strings:e,values:i}),x=A(1),E=(A(2),A(3),Symbol.for("lit-noChange")),k=Symbol.for("lit-nothing"),S=new WeakMap,C=d.createTreeWalker(d,129);function P(t,e){if(!f(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==o?o.createHTML(e):e}const U=(t,e)=>{const i=t.length-1,s=[];let n,r=2===e?"<svg>":3===e?"<math>":"",o=v;for(let e=0;e<i;e++){const i=t[e];let h,d,p=-1,g=0;for(;g<i.length&&(o.lastIndex=g,d=o.exec(i),null!==d);)g=o.lastIndex,o===v?"!--"===d[1]?o=m:void 0!==d[1]?o=y:void 0!==d[2]?(w.test(d[2])&&(n=RegExp("</"+d[2],"g")),o=b):void 0!==d[3]&&(o=b):o===b?">"===d[0]?(o=n??v,p=-1):void 0===d[1]?p=-2:(p=o.lastIndex-d[2].length,h=d[1],o=void 0===d[3]?b:'"'===d[3]?_:$):o===_||o===$?o=b:o===m||o===y?o=v:(o=b,n=void 0);const f=o===b&&t[e+1].startsWith("/>")?" ":"";r+=o===v?i+c:p>=0?(s.push(h),i.slice(0,p)+a+i.slice(p)+l+f):i+l+(-2===p?e:f)}return[P(t,r+(t[i]||"<?>")+(2===e?"</svg>":3===e?"</math>":"")),s]};class z{constructor({strings:t,_$litType$:e},i){let s;this.parts=[];let n=0,o=0;const c=t.length-1,d=this.parts,[g,f]=U(t,e);if(this.el=z.createElement(g,i),C.currentNode=this.el.content,2===e||3===e){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(s=C.nextNode())&&d.length<c;){if(1===s.nodeType){if(s.hasAttributes())for(const t of s.getAttributeNames())if(t.endsWith(a)){const e=f[o++],i=s.getAttribute(t).split(l),r=/([.?@])?(.*)/.exec(e);d.push({type:1,index:n,name:r[2],strings:i,ctor:"."===r[1]?R:"?"===r[1]?N:"@"===r[1]?q:M}),s.removeAttribute(t)}else t.startsWith(l)&&(d.push({type:6,index:n}),s.removeAttribute(t));if(w.test(s.tagName)){const t=s.textContent.split(l),e=t.length-1;if(e>0){s.textContent=r?r.emptyScript:"";for(let i=0;i<e;i++)s.append(t[i],p()),C.nextNode(),d.push({type:2,index:++n});s.append(t[e],p())}}}else if(8===s.nodeType)if(s.data===h)d.push({type:2,index:n});else{let t=-1;for(;-1!==(t=s.data.indexOf(l,t+1));)d.push({type:7,index:n}),t+=l.length-1}n++}}static createElement(t,e){const i=d.createElement("template");return i.innerHTML=t,i}}function H(t,e,i=t,s){if(e===E)return e;let n=void 0!==s?i._$Co?.[s]:i._$Cl;const r=g(e)?void 0:e._$litDirective$;return n?.constructor!==r&&(n?._$AO?.(!1),void 0===r?n=void 0:(n=new r(t),n._$AT(t,i,s)),void 0!==s?(i._$Co??=[])[s]=n:i._$Cl=n),void 0!==n&&(e=H(t,n._$AS(t,e.values),n,s)),e}class T{constructor(t,e){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:e},parts:i}=this._$AD,s=(t?.creationScope??d).importNode(e,!0);C.currentNode=s;let n=C.nextNode(),r=0,o=0,a=i[0];for(;void 0!==a;){if(r===a.index){let e;2===a.type?e=new O(n,n.nextSibling,this,t):1===a.type?e=new a.ctor(n,a.name,a.strings,this,t):6===a.type&&(e=new L(n,this,t)),this._$AV.push(e),a=i[++o]}r!==a?.index&&(n=C.nextNode(),r++)}return C.currentNode=d,s}p(t){let e=0;for(const i of this._$AV)void 0!==i&&(void 0!==i.strings?(i._$AI(t,i,e),e+=i.strings.length-2):i._$AI(t[e])),e++}}class O{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,e,i,s){this.type=2,this._$AH=k,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=i,this.options=s,this._$Cv=s?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const e=this._$AM;return void 0!==e&&11===t?.nodeType&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,e=this){t=H(this,t,e),g(t)?t===k||null==t||""===t?(this._$AH!==k&&this._$AR(),this._$AH=k):t!==this._$AH&&t!==E&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):(t=>f(t)||"function"==typeof t?.[Symbol.iterator])(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==k&&g(this._$AH)?this._$AA.nextSibling.data=t:this.T(d.createTextNode(t)),this._$AH=t}$(t){const{values:e,_$litType$:i}=t,s="number"==typeof i?this._$AC(t):(void 0===i.el&&(i.el=z.createElement(P(i.h,i.h[0]),this.options)),i);if(this._$AH?._$AD===s)this._$AH.p(e);else{const t=new T(s,this),i=t.u(this.options);t.p(e),this.T(i),this._$AH=t}}_$AC(t){let e=S.get(t.strings);return void 0===e&&S.set(t.strings,e=new z(t)),e}k(t){f(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let i,s=0;for(const n of t)s===e.length?e.push(i=new O(this.O(p()),this.O(p()),this,this.options)):i=e[s],i._$AI(n),s++;s<e.length&&(this._$AR(i&&i._$AB.nextSibling,s),e.length=s)}_$AR(t=this._$AA.nextSibling,e){for(this._$AP?.(!1,!0,e);t!==this._$AB;){const e=n(t).nextSibling;n(t).remove(),t=e}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class M{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,e,i,s,n){this.type=1,this._$AH=k,this._$AN=void 0,this.element=t,this.name=e,this._$AM=s,this.options=n,i.length>2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=k}_$AI(t,e=this,i,s){const n=this.strings;let r=!1;if(void 0===n)t=H(this,t,e,0),r=!g(t)||t!==this._$AH&&t!==E,r&&(this._$AH=t);else{const s=t;let o,a;for(t=n[0],o=0;o<n.length-1;o++)a=H(this,s[i+o],e,o),a===E&&(a=this._$AH[o]),r||=!g(a)||a!==this._$AH[o],a===k?t=k:t!==k&&(t+=(a??"")+n[o+1]),this._$AH[o]=a}r&&!s&&this.j(t)}j(t){t===k?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}}class R extends M{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===k?void 0:t}}class N extends M{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==k)}}class q extends M{constructor(t,e,i,s,n){super(t,e,i,s,n),this.type=5}_$AI(t,e=this){if((t=H(this,t,e,0)??k)===E)return;const i=this._$AH,s=t===k&&i!==k||t.capture!==i.capture||t.once!==i.once||t.passive!==i.passive,n=t!==k&&(i===k||s);s&&this.element.removeEventListener(this.name,this,i),n&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){"function"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class L{constructor(t,e,i){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=i}get _$AU(){return this._$AM._$AU}_$AI(t){H(this,t)}}const j=s.litHtmlPolyfillSupport;j?.(z,O),(s.litHtmlVersions??=[]).push("3.3.2");const D=(t,e,i)=>{const s=i?.renderBefore??e;let n=s._$litPart$;if(void 0===n){const t=i?.renderBefore??null;s._$litPart$=n=new O(e.insertBefore(p(),t),t,void 0,i??{})}return n._$AI(t),n}},161(t,e,i){i.d(e,{AH:()=>s.AH,WF:()=>s.WF,qy:()=>s.qy,s6:()=>s.s6}),i(760),i(752);var s=i(228)}},e={};function i(s){var n=e[s];if(void 0!==n)return n.exports;var r=e[s]={exports:{}};return t[s](r,r.exports,i),r.exports}i.d=(t,e)=>{for(var s in e)i.o(e,s)&&!i.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var s=i(161),n=i(601),r=i(205);i(544),i(562);class o extends s.WF{static properties=(()=>({title:{type:String},description:{type:String},actionLabel:{type:String},linkUrl:{type:String},linkTarget:{type:String},imageUrl:{type:String},imageThumbnailUrl:{type:String},imageAltText:{type:String}}))();static styles=(()=>[n.s,r.g,s.AH`
555
+ :host {
556
+ --bg-color: var(--white);
557
+ --title-color: var(--purple-60);
558
+ --text-color: var(--black);
559
+ --action-label-color: var(--purple-80);
560
+ --action-label-hover-highlight: var(--purple-20);
561
+ --blob-color: var(--purple-20);
562
+
563
+ align-items: stretch;
564
+ display: flex;
565
+ text-align: center;
566
+ width: 100%;
567
+ }
568
+
569
+ .tile {
570
+ background-color: var(--bg-color);
571
+ border-radius: var(--spacing-component-2);
572
+ border: var(--hairline) solid var(--black-20);
573
+ color: var(--text-color);
574
+ display: flex;
575
+ flex-direction: column;
576
+ padding: var(--spacing-component-4);
577
+ text-decoration: none;
578
+ transition:
579
+ box-shadow 0.5s ease-in-out,
580
+ border-color 0.5s ease-in-out;
581
+ width: 100%;
582
+ }
583
+
584
+ a.tile:hover {
585
+ box-shadow: var(--shadow-medium);
586
+ border-color: rgba(0, 0, 0, 0);
587
+ }
588
+
589
+ picture {
590
+ display: grid;
591
+ place-items: center;
592
+ padding-block-end: var(--spacing-layout-1);
593
+ }
594
+
595
+ picture > * {
596
+ height: var(--spacing-layout-4);
597
+ grid-area: 1 / 1;
598
+ }
599
+
600
+ cfa-blob {
601
+ transition: scale 0.5s ease-in-out;
602
+ }
603
+
604
+ a.tile:hover cfa-blob {
605
+ scale: 1.2;
606
+ }
607
+
608
+ img {
609
+ object-fit: contain;
610
+ z-index: 2;
611
+ }
612
+
613
+ .title {
614
+ color: var(--title-color);
615
+ }
616
+
617
+ .label {
618
+ color: var(--action-label-color);
619
+ display: inline-block;
620
+ margin-block-start: auto;
621
+ padding-block-start: var(--spacing-layout-half);
622
+ }
623
+ `])();tileContentTemplate(){return s.qy`
624
+ ${this.imageUrl?s.qy`
625
+ <picture>
626
+ <cfa-blob></cfa-blob>
627
+ <img
628
+ src="${this.imageUrl}"
629
+ alt="${this.imageAltText}"
630
+ load="lazy"
631
+ />
632
+ </picture>
633
+ `:s.s6}
634
+
635
+ <div class="title h3">${this.title}</div>
636
+
637
+ <!-- Description -->
638
+ ${this.description?s.qy` <p class="small">${this.description}</p> `:s.s6}
639
+
640
+ <!-- Action label -->
641
+ ${this.actionLabel?s.qy`
642
+ <div class="label small strong">
643
+ ${this.actionLabel}&nbsp;<cfa-icon>arrow_forward</cfa-icon>
644
+ </div>
645
+ `:s.s6}
646
+ `}render(){return s.qy`
647
+ <style>
648
+ cfa-blob {
649
+ --color: var(--blob-color);
650
+ }
651
+ </style>
652
+ ${this.linkUrl?s.qy`
653
+ <a
654
+ href="${this.linkUrl}"
655
+ target="${this.linkTarget}"
656
+ rel="${"_blank"==this.linkTarget?"noopener":s.s6}"
657
+ class="tile"
658
+ >
659
+ ${this.tileContentTemplate()}
660
+ </a>
661
+ `:s.qy` <div class="tile">${this.tileContentTemplate()}</div> `}
662
+ `}}customElements.get("cfa-tile")||customElements.define("cfa-tile",o)})();
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2017 Google LLC
4
+ * SPDX-License-Identifier: BSD-3-Clause
5
+ */
6
+
7
+ /**
8
+ * @license
9
+ * Copyright 2019 Google LLC
10
+ * SPDX-License-Identifier: BSD-3-Clause
11
+ */