@affinda/wc 0.0.6 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/affinda/af-button.entry.esm.js.map +1 -1
- package/dist/affinda/af-card.entry.esm.js.map +1 -1
- package/dist/affinda/af-client-carousel.entry.esm.js.map +1 -0
- package/dist/affinda/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.esm.js.map +1 -1
- package/dist/affinda/af-hero-section.entry.esm.js.map +1 -0
- package/dist/affinda/af-logo-well.entry.esm.js.map +1 -0
- package/dist/affinda/af-section.entry.esm.js.map +1 -0
- package/dist/affinda/af-testimonial-carousel.entry.esm.js.map +1 -0
- package/dist/affinda/af-testimonial-stat.entry.esm.js.map +1 -0
- package/dist/affinda/af-testimonial.entry.esm.js.map +1 -0
- package/dist/affinda/af-typography-lockup.entry.esm.js.map +1 -1
- package/dist/affinda/affinda.css +1 -1
- package/dist/affinda/affinda.esm.js +1 -1
- package/dist/affinda/index.esm.js +1 -1
- package/dist/affinda/p-0c4a30a4.entry.js +2 -0
- package/dist/affinda/p-0c4a30a4.entry.js.map +1 -0
- package/dist/affinda/p-0fb55acf.entry.js +2 -0
- package/dist/affinda/p-0fb55acf.entry.js.map +1 -0
- package/dist/affinda/p-10288f13.entry.js +2 -0
- package/dist/affinda/p-10288f13.entry.js.map +1 -0
- package/dist/affinda/p-13c30dd8.entry.js +2 -0
- package/dist/affinda/p-13c30dd8.entry.js.map +1 -0
- package/dist/affinda/{p-47629246.entry.js → p-23aedaa4.entry.js} +2 -2
- package/dist/affinda/{p-9c22948a.entry.js → p-39e917eb.entry.js} +2 -2
- package/dist/affinda/{p-bf697823.entry.js → p-430127fa.entry.js} +2 -2
- package/dist/affinda/{p-b79f976e.entry.js → p-45d0f3e3.entry.js} +2 -2
- package/dist/affinda/p-45d0f3e3.entry.js.map +1 -0
- package/dist/affinda/p-46edc753.entry.js +2 -0
- package/dist/affinda/p-46edc753.entry.js.map +1 -0
- package/dist/affinda/{p-d33de48f.entry.js → p-56a15842.entry.js} +2 -2
- package/dist/affinda/p-7c115698.entry.js +2 -0
- package/dist/affinda/p-7c115698.entry.js.map +1 -0
- package/dist/affinda/p-867c5141.entry.js +2 -0
- package/dist/affinda/p-Agei6ZJQ.js +3 -0
- package/dist/affinda/p-Agei6ZJQ.js.map +1 -0
- package/dist/affinda/{p-f8d89fb6.entry.js → p-d7ff9fd9.entry.js} +2 -2
- package/dist/affinda/{p-a8d223ca.entry.js → p-e2c40f4e.entry.js} +2 -2
- package/dist/affinda/{p-a8d223ca.entry.js.map → p-e2c40f4e.entry.js.map} +1 -1
- package/dist/affinda/p-e56182e4.entry.js +2 -0
- package/dist/affinda/p-e56182e4.entry.js.map +1 -0
- package/dist/affinda/p-f6f2f1c4.entry.js +2 -0
- package/dist/affinda/p-f6f2f1c4.entry.js.map +1 -0
- package/dist/cjs/af-aspect-ratio.cjs.entry.js +1 -1
- package/dist/cjs/af-button-group.cjs.entry.js +2 -2
- package/dist/cjs/af-button.cjs.entry.js +7 -2
- package/dist/cjs/af-button.entry.cjs.js.map +1 -1
- package/dist/cjs/af-card.cjs.entry.js +3 -3
- package/dist/cjs/af-card.entry.cjs.js.map +1 -1
- package/dist/cjs/af-client-carousel.cjs.entry.js +22 -0
- package/dist/cjs/af-client-carousel.entry.cjs.js.map +1 -0
- package/dist/cjs/af-color-swatch.cjs.entry.js +1 -1
- package/dist/cjs/af-container.cjs.entry.js +1 -1
- package/dist/cjs/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.cjs.js.map +1 -1
- package/dist/cjs/af-heading_5.cjs.entry.js +22 -12
- package/dist/cjs/af-hero-section.cjs.entry.js +24 -0
- package/dist/cjs/af-hero-section.entry.cjs.js.map +1 -0
- package/dist/cjs/af-icon-button.cjs.entry.js +1 -1
- package/dist/cjs/af-logo-well.cjs.entry.js +18 -0
- package/dist/cjs/af-logo-well.entry.cjs.js.map +1 -0
- package/dist/cjs/af-section.cjs.entry.js +25 -0
- package/dist/cjs/af-section.entry.cjs.js.map +1 -0
- package/dist/cjs/af-testimonial-carousel.cjs.entry.js +90 -0
- package/dist/cjs/af-testimonial-carousel.entry.cjs.js.map +1 -0
- package/dist/cjs/af-testimonial-stat.cjs.entry.js +22 -0
- package/dist/cjs/af-testimonial-stat.entry.cjs.js.map +1 -0
- package/dist/cjs/af-testimonial.cjs.entry.js +18 -0
- package/dist/cjs/af-testimonial.entry.cjs.js.map +1 -0
- package/dist/cjs/af-typography-lockup.cjs.entry.js +3 -3
- package/dist/cjs/af-typography-lockup.entry.cjs.js.map +1 -1
- package/dist/cjs/affinda.cjs.js +2 -2
- package/dist/cjs/{index-1GcSSOS3.js → index-D_ItFcqt.js} +58 -8
- package/dist/cjs/index-D_ItFcqt.js.map +1 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/collection/assets/paperclip-decoration.svg +3 -0
- package/dist/collection/collection-manifest.json +8 -1
- package/dist/collection/components/af-button/af-button.js +26 -1
- package/dist/collection/components/af-button/af-button.js.map +1 -1
- package/dist/collection/components/af-button-group/af-button-group.js +1 -1
- package/dist/collection/components/af-card/af-card.css +10 -7
- package/dist/collection/components/af-card/af-card.js +1 -1
- package/dist/collection/components/af-client-carousel/af-client-carousel.css +112 -0
- package/dist/collection/components/af-client-carousel/af-client-carousel.js +72 -0
- package/dist/collection/components/af-client-carousel/af-client-carousel.js.map +1 -0
- package/dist/collection/components/af-heading/af-heading.css +10 -1
- package/dist/collection/components/af-heading/af-heading.js +26 -3
- package/dist/collection/components/af-heading/af-heading.js.map +1 -1
- package/dist/collection/components/af-hero-section/af-hero-section.css +69 -0
- package/dist/collection/components/af-hero-section/af-hero-section.js +94 -0
- package/dist/collection/components/af-hero-section/af-hero-section.js.map +1 -0
- package/dist/collection/components/af-logo/af-logo.js +1 -1
- package/dist/collection/components/af-logo-well/af-logo-well.css +27 -0
- package/dist/collection/components/af-logo-well/af-logo-well.js +22 -0
- package/dist/collection/components/af-logo-well/af-logo-well.js.map +1 -0
- package/dist/collection/components/af-navbar/af-navbar.css +40 -3
- package/dist/collection/components/af-navbar/af-navbar.js +13 -1
- package/dist/collection/components/af-navbar/af-navbar.js.map +1 -1
- package/dist/collection/components/af-section/af-section.css +52 -0
- package/dist/collection/components/af-section/af-section.js +95 -0
- package/dist/collection/components/af-section/af-section.js.map +1 -0
- package/dist/collection/components/af-testimonial/af-testimonial.css +143 -0
- package/dist/collection/components/af-testimonial/af-testimonial.js +118 -0
- package/dist/collection/components/af-testimonial/af-testimonial.js.map +1 -0
- package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.css +97 -0
- package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js +100 -0
- package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js.map +1 -0
- package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.css +41 -0
- package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js +87 -0
- package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js.map +1 -0
- package/dist/collection/components/af-text/af-text.css +10 -1
- package/dist/collection/components/af-text/af-text.js +26 -3
- package/dist/collection/components/af-text/af-text.js.map +1 -1
- package/dist/collection/components/af-typography-lockup/af-typography-lockup.css +1 -1
- package/dist/collection/components/af-typography-lockup/af-typography-lockup.js +1 -1
- package/dist/components/af-aspect-ratio.js +1 -1
- package/dist/components/af-button-group.js +1 -1
- package/dist/components/af-button.js +1 -1
- package/dist/components/af-card.js +3 -3
- package/dist/components/af-card.js.map +1 -1
- package/dist/components/af-client-carousel.d.ts +11 -0
- package/dist/components/af-client-carousel.js +45 -0
- package/dist/components/af-client-carousel.js.map +1 -0
- package/dist/components/af-color-swatch.js +1 -1
- package/dist/components/af-container.js +1 -1
- package/dist/components/af-heading.js +1 -1
- package/dist/components/af-hero-section.d.ts +11 -0
- package/dist/components/af-hero-section.js +53 -0
- package/dist/components/af-hero-section.js.map +1 -0
- package/dist/components/af-icon-button.js +1 -1
- package/dist/components/af-logo-well.d.ts +11 -0
- package/dist/components/af-logo-well.js +38 -0
- package/dist/components/af-logo-well.js.map +1 -0
- package/dist/components/af-logo.js +1 -1
- package/dist/components/af-nav-item.js +1 -1
- package/dist/components/af-navbar.js +1 -1
- package/dist/components/af-section.d.ts +11 -0
- package/dist/components/af-section.js +54 -0
- package/dist/components/af-section.js.map +1 -0
- package/dist/components/af-testimonial-carousel.d.ts +11 -0
- package/dist/components/af-testimonial-carousel.js +113 -0
- package/dist/components/af-testimonial-carousel.js.map +1 -0
- package/dist/components/af-testimonial-stat.d.ts +11 -0
- package/dist/components/af-testimonial-stat.js +45 -0
- package/dist/components/af-testimonial-stat.js.map +1 -0
- package/dist/components/af-testimonial.d.ts +11 -0
- package/dist/components/af-testimonial.js +43 -0
- package/dist/components/af-testimonial.js.map +1 -0
- package/dist/components/af-text.js +1 -1
- package/dist/components/af-typography-lockup.js +1 -1
- package/dist/components/index.js +13 -13
- package/dist/components/{p-C6idwlD-.js → p-BMl1ggbQ.js} +3 -3
- package/dist/components/{p-C6idwlD-.js.map → p-BMl1ggbQ.js.map} +1 -1
- package/dist/components/{p-DSAo7rhE.js → p-BSewwIfD.js} +3 -3
- package/dist/components/{p-DSAo7rhE.js.map → p-BSewwIfD.js.map} +1 -1
- package/dist/components/{p-Cjv046iG.js → p-BeQlNDyY.js} +4 -4
- package/dist/components/{p-Cjv046iG.js.map → p-BeQlNDyY.js.map} +1 -1
- package/dist/components/{p-CRgPNvxI.js → p-BpXkQGDQ.js} +3 -3
- package/dist/components/{p-CRgPNvxI.js.map → p-BpXkQGDQ.js.map} +1 -1
- package/dist/components/p-C1C1Him5.js +54 -0
- package/dist/components/p-C1C1Him5.js.map +1 -0
- package/dist/components/{p-CJWIieDU.js → p-CUr7n62X.js} +3 -3
- package/dist/components/{p-CJWIieDU.js.map → p-CUr7n62X.js.map} +1 -1
- package/dist/components/{p-zwrcq-N2.js → p-CZlTvZAm.js} +53 -8
- package/dist/components/p-CZlTvZAm.js.map +1 -0
- package/dist/components/{p-cKSy1B8M.js → p-CcNomA2o.js} +11 -5
- package/dist/components/p-CcNomA2o.js.map +1 -0
- package/dist/components/p-Csie_upq.js +41 -0
- package/dist/components/p-Csie_upq.js.map +1 -0
- package/dist/components/{p-DuXQZGjc.js → p-D4NomvK5.js} +5 -5
- package/dist/components/{p-DuXQZGjc.js.map → p-D4NomvK5.js.map} +1 -1
- package/dist/components/{p-DIyOg-i_.js → p-Vu-NeL7U.js} +12 -8
- package/dist/components/p-Vu-NeL7U.js.map +1 -0
- package/dist/components/{p-CaqzUz5o.js → p-sJI0-JlJ.js} +4 -4
- package/dist/components/{p-CaqzUz5o.js.map → p-sJI0-JlJ.js.map} +1 -1
- package/dist/components/{p-Dw33Xm_t.js → p-tFlyM2Th.js} +3 -3
- package/dist/components/{p-Dw33Xm_t.js.map → p-tFlyM2Th.js.map} +1 -1
- package/dist/esm/af-aspect-ratio.entry.js +1 -1
- package/dist/esm/af-button-group.entry.js +2 -2
- package/dist/esm/af-button.entry.js +7 -2
- package/dist/esm/af-button.entry.js.map +1 -1
- package/dist/esm/af-card.entry.js +3 -3
- package/dist/esm/af-card.entry.js.map +1 -1
- package/dist/esm/af-client-carousel.entry.js +20 -0
- package/dist/esm/af-client-carousel.entry.js.map +1 -0
- package/dist/esm/af-color-swatch.entry.js +1 -1
- package/dist/esm/af-container.entry.js +1 -1
- package/dist/esm/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.js.map +1 -1
- package/dist/esm/af-heading_5.entry.js +22 -12
- package/dist/esm/af-hero-section.entry.js +22 -0
- package/dist/esm/af-hero-section.entry.js.map +1 -0
- package/dist/esm/af-icon-button.entry.js +1 -1
- package/dist/esm/af-logo-well.entry.js +16 -0
- package/dist/esm/af-logo-well.entry.js.map +1 -0
- package/dist/esm/af-section.entry.js +23 -0
- package/dist/esm/af-section.entry.js.map +1 -0
- package/dist/esm/af-testimonial-carousel.entry.js +88 -0
- package/dist/esm/af-testimonial-carousel.entry.js.map +1 -0
- package/dist/esm/af-testimonial-stat.entry.js +20 -0
- package/dist/esm/af-testimonial-stat.entry.js.map +1 -0
- package/dist/esm/af-testimonial.entry.js +16 -0
- package/dist/esm/af-testimonial.entry.js.map +1 -0
- package/dist/esm/af-typography-lockup.entry.js +3 -3
- package/dist/esm/af-typography-lockup.entry.js.map +1 -1
- package/dist/esm/affinda.js +3 -3
- package/dist/esm/{index-Dmaq2rkg.js → index-Agei6ZJQ.js} +58 -9
- package/dist/esm/index-Agei6ZJQ.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/types/components/af-button/af-button.d.ts +4 -0
- package/dist/types/components/af-client-carousel/af-client-carousel.d.ts +10 -0
- package/dist/types/components/af-heading/af-heading.d.ts +2 -0
- package/dist/types/components/af-hero-section/af-hero-section.d.ts +12 -0
- package/dist/types/components/af-logo-well/af-logo-well.d.ts +6 -0
- package/dist/types/components/af-navbar/af-navbar.d.ts +3 -0
- package/dist/types/components/af-section/af-section.d.ts +12 -0
- package/dist/types/components/af-testimonial/af-testimonial.d.ts +23 -0
- package/dist/types/components/af-testimonial-carousel/af-testimonial-carousel.d.ts +15 -0
- package/dist/types/components/af-testimonial-stat/af-testimonial-stat.d.ts +15 -0
- package/dist/types/components/af-text/af-text.d.ts +2 -0
- package/dist/types/components.d.ts +319 -0
- package/package.json +14 -10
- package/dist/affinda/p-92f5a5d5.entry.js +0 -2
- package/dist/affinda/p-92f5a5d5.entry.js.map +0 -1
- package/dist/affinda/p-Dmaq2rkg.js +0 -3
- package/dist/affinda/p-Dmaq2rkg.js.map +0 -1
- package/dist/affinda/p-b79f976e.entry.js.map +0 -1
- package/dist/affinda/p-cb218d26.entry.js +0 -2
- package/dist/cjs/index-1GcSSOS3.js.map +0 -1
- package/dist/components/p-BHNNF4PT.js +0 -35
- package/dist/components/p-BHNNF4PT.js.map +0 -1
- package/dist/components/p-BpGDzCRf.js +0 -50
- package/dist/components/p-BpGDzCRf.js.map +0 -1
- package/dist/components/p-DIyOg-i_.js.map +0 -1
- package/dist/components/p-cKSy1B8M.js.map +0 -1
- package/dist/components/p-zwrcq-N2.js.map +0 -1
- package/dist/esm/index-Dmaq2rkg.js.map +0 -1
- /package/dist/affinda/{p-47629246.entry.js.map → p-23aedaa4.entry.js.map} +0 -0
- /package/dist/affinda/{p-9c22948a.entry.js.map → p-39e917eb.entry.js.map} +0 -0
- /package/dist/affinda/{p-bf697823.entry.js.map → p-430127fa.entry.js.map} +0 -0
- /package/dist/affinda/{p-d33de48f.entry.js.map → p-56a15842.entry.js.map} +0 -0
- /package/dist/affinda/{p-cb218d26.entry.js.map → p-867c5141.entry.js.map} +0 -0
- /package/dist/affinda/{p-f8d89fb6.entry.js.map → p-d7ff9fd9.entry.js.map} +0 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: block;
|
|
3
|
+
width: 100%;
|
|
4
|
+
overflow: hidden;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.testimonial-carousel {
|
|
8
|
+
position: relative;
|
|
9
|
+
width: 100%;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.testimonial-slides {
|
|
13
|
+
position: relative;
|
|
14
|
+
width: 100%;
|
|
15
|
+
min-height: 544px;
|
|
16
|
+
overflow: hidden;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.testimonial-slides ::slotted(af-testimonial) {
|
|
20
|
+
position: absolute;
|
|
21
|
+
top: 0;
|
|
22
|
+
left: 0;
|
|
23
|
+
width: 100%;
|
|
24
|
+
transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* Progress indicator */
|
|
28
|
+
.testimonial-progress {
|
|
29
|
+
display: flex;
|
|
30
|
+
gap: 12px;
|
|
31
|
+
justify-content: center;
|
|
32
|
+
margin-top: 32px;
|
|
33
|
+
padding: 0 220px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.progress-dot {
|
|
37
|
+
width: 100%;
|
|
38
|
+
max-width: 840px;
|
|
39
|
+
height: 3px;
|
|
40
|
+
background: var(--colour-background-border-default, #d1ddda);
|
|
41
|
+
border-radius: 2px;
|
|
42
|
+
cursor: pointer;
|
|
43
|
+
transition: background 0.3s ease;
|
|
44
|
+
position: relative;
|
|
45
|
+
overflow: hidden;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.progress-dot.active {
|
|
49
|
+
background: var(--colour-background-border-active, #8a7049);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.progress-dot:hover:not(.active) {
|
|
53
|
+
background: var(--colour-background-border-default, #c1cdc9);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/* Navigation buttons - positioned bottom left of content area (not on image) */
|
|
57
|
+
.carousel-navigation {
|
|
58
|
+
position: absolute;
|
|
59
|
+
bottom: 48px;
|
|
60
|
+
left: 50%;
|
|
61
|
+
margin-left: 48px;
|
|
62
|
+
display: flex;
|
|
63
|
+
gap: 12px;
|
|
64
|
+
align-items: center;
|
|
65
|
+
z-index: 10;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.nav-button {
|
|
69
|
+
width: 48px;
|
|
70
|
+
height: 48px;
|
|
71
|
+
border-radius: 50%;
|
|
72
|
+
border: 1px solid var(--colour-brand-inkwell, #14343b);
|
|
73
|
+
background: transparent;
|
|
74
|
+
display: flex;
|
|
75
|
+
align-items: center;
|
|
76
|
+
justify-content: center;
|
|
77
|
+
cursor: pointer;
|
|
78
|
+
transition: all 0.2s ease;
|
|
79
|
+
color: var(--colour-brand-inkwell, #14343b);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.nav-button:hover:not(:disabled) {
|
|
83
|
+
background: rgba(255, 255, 255, 0.1);
|
|
84
|
+
transform: translateY(-2px);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.nav-button:disabled {
|
|
88
|
+
opacity: 0.4;
|
|
89
|
+
cursor: not-allowed;
|
|
90
|
+
border-color: var(--colour-brand-inkwell, #14343b);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.nav-button svg {
|
|
94
|
+
width: 24px;
|
|
95
|
+
height: 24px;
|
|
96
|
+
}
|
|
97
|
+
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { h, Host } from "@stencil/core";
|
|
2
|
+
export class AfTestimonialCarousel {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.currentIndex = 0;
|
|
5
|
+
this.isAnimating = false;
|
|
6
|
+
this.testimonialCount = 0;
|
|
7
|
+
this.testimonials = [];
|
|
8
|
+
this.goToPrevious = () => {
|
|
9
|
+
if (this.isAnimating || this.currentIndex === 0)
|
|
10
|
+
return;
|
|
11
|
+
this.isAnimating = true;
|
|
12
|
+
this.currentIndex = this.currentIndex - 1;
|
|
13
|
+
this.updateVisibleTestimonial();
|
|
14
|
+
setTimeout(() => {
|
|
15
|
+
this.isAnimating = false;
|
|
16
|
+
}, 500);
|
|
17
|
+
};
|
|
18
|
+
this.goToNext = () => {
|
|
19
|
+
if (this.isAnimating || this.currentIndex >= this.testimonialCount - 1)
|
|
20
|
+
return;
|
|
21
|
+
this.isAnimating = true;
|
|
22
|
+
this.currentIndex = this.currentIndex + 1;
|
|
23
|
+
this.updateVisibleTestimonial();
|
|
24
|
+
setTimeout(() => {
|
|
25
|
+
this.isAnimating = false;
|
|
26
|
+
}, 500);
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
componentDidLoad() {
|
|
30
|
+
this.detectTestimonials();
|
|
31
|
+
// Watch for testimonials being added (for React async rendering)
|
|
32
|
+
this.observer = new MutationObserver(() => {
|
|
33
|
+
this.detectTestimonials();
|
|
34
|
+
});
|
|
35
|
+
this.observer.observe(this.host, {
|
|
36
|
+
childList: true,
|
|
37
|
+
subtree: true
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
disconnectedCallback() {
|
|
41
|
+
if (this.observer) {
|
|
42
|
+
this.observer.disconnect();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
detectTestimonials() {
|
|
46
|
+
const newTestimonials = Array.from(this.host.querySelectorAll('af-testimonial'));
|
|
47
|
+
if (newTestimonials.length !== this.testimonials.length) {
|
|
48
|
+
this.testimonials = newTestimonials;
|
|
49
|
+
this.testimonialCount = newTestimonials.length;
|
|
50
|
+
console.log('Found testimonials:', this.testimonials.length);
|
|
51
|
+
if (this.testimonials.length > 0) {
|
|
52
|
+
this.currentIndex = 0;
|
|
53
|
+
this.updateVisibleTestimonial();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
updateVisibleTestimonial() {
|
|
58
|
+
this.testimonials.forEach((testimonial, index) => {
|
|
59
|
+
const offset = (index - this.currentIndex) * 100;
|
|
60
|
+
testimonial.style.transform = `translateX(${offset}%)`;
|
|
61
|
+
testimonial.style.opacity = index === this.currentIndex ? '1' : '0';
|
|
62
|
+
testimonial.style.pointerEvents = index === this.currentIndex ? 'auto' : 'none';
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
render() {
|
|
66
|
+
const hasPrev = this.currentIndex > 0;
|
|
67
|
+
const hasNext = this.currentIndex < this.testimonialCount - 1;
|
|
68
|
+
return (h(Host, { key: '93e4222eaa683eda0e5d68d445691e5dcf764b10' }, h("div", { key: '8679d282c0644b463eee86fa90282f59ba1c6cb5', class: "testimonial-carousel" }, h("div", { key: '6779793a882493c73b31bdf5742e2d068b8db72f', class: "testimonial-slides" }, h("slot", { key: '4326f6b06a60174edc2ba74c3d5704707965bf5d' })), this.testimonialCount > 1 && (h("div", { key: 'ba63a40e6a0789df3af7ff51d36a0f9c2e0651c6', class: "testimonial-progress" }, Array.from({ length: this.testimonialCount }).map((_, index) => (h("div", { class: `progress-dot ${index === this.currentIndex ? 'active' : ''}`, onClick: () => {
|
|
69
|
+
if (!this.isAnimating && index !== this.currentIndex) {
|
|
70
|
+
this.isAnimating = true;
|
|
71
|
+
this.currentIndex = index;
|
|
72
|
+
this.updateVisibleTestimonial();
|
|
73
|
+
setTimeout(() => {
|
|
74
|
+
this.isAnimating = false;
|
|
75
|
+
}, 500);
|
|
76
|
+
}
|
|
77
|
+
} }))))), this.testimonialCount > 1 && (h("div", { key: 'e15676334f291d496302381e3625b8c18f46626d', class: "carousel-navigation" }, h("button", { key: '511c7cf3b514d07ec4b2c6e9a6a2231a6c98b1d3', class: "nav-button prev", disabled: !hasPrev, onClick: this.goToPrevious, "aria-label": "Previous testimonial" }, h("svg", { key: '477016d99fb337bed5ae757ff14dc290819450ba', width: "24", height: "24", viewBox: "0 0 24 24", fill: "none" }, h("path", { key: '989e2119171bb332ca39a45d9b18d46736e0a82f', d: "M19 12H5M5 12L12 19M5 12L12 5", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }))), h("button", { key: '5b52c2b3d6aef2b17e144ae30eebd6c6a3c07323', class: "nav-button next", disabled: !hasNext, onClick: this.goToNext, "aria-label": "Next testimonial" }, h("svg", { key: '9d03ebe923108338a4fdab149d02c04e19df6e5e', width: "24", height: "24", viewBox: "0 0 24 24", fill: "none" }, h("path", { key: 'a90a52e8cfb3df339d42894448b184b1229f429d', d: "M5 12H19M19 12L12 5M19 12L12 19", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }))))))));
|
|
78
|
+
}
|
|
79
|
+
static get is() { return "af-testimonial-carousel"; }
|
|
80
|
+
static get encapsulation() { return "scoped"; }
|
|
81
|
+
static get originalStyleUrls() {
|
|
82
|
+
return {
|
|
83
|
+
"$": ["af-testimonial-carousel.css"]
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
static get styleUrls() {
|
|
87
|
+
return {
|
|
88
|
+
"$": ["af-testimonial-carousel.css"]
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
static get states() {
|
|
92
|
+
return {
|
|
93
|
+
"currentIndex": {},
|
|
94
|
+
"isAnimating": {},
|
|
95
|
+
"testimonialCount": {}
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
static get elementRef() { return "host"; }
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=af-testimonial-carousel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"af-testimonial-carousel.js","sourceRoot":"","sources":["../../../src/components/af-testimonial-carousel/af-testimonial-carousel.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, State, h, Host, Element } from '@stencil/core';\n\n@Component({\n tag: 'af-testimonial-carousel',\n styleUrl: 'af-testimonial-carousel.css',\n shadow: false,\n scoped: true,\n})\nexport class AfTestimonialCarousel {\n @Element() host!: HTMLElement;\n @State() currentIndex: number = 0;\n @State() isAnimating: boolean = false;\n @State() testimonialCount: number = 0;\n\n private testimonials: HTMLElement[] = [];\n private observer: MutationObserver | undefined;\n\n componentDidLoad() {\n this.detectTestimonials();\n \n // Watch for testimonials being added (for React async rendering)\n this.observer = new MutationObserver(() => {\n this.detectTestimonials();\n });\n \n this.observer.observe(this.host, {\n childList: true,\n subtree: true\n });\n }\n\n disconnectedCallback() {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n private detectTestimonials() {\n const newTestimonials = Array.from(this.host.querySelectorAll('af-testimonial')) as HTMLElement[];\n \n if (newTestimonials.length !== this.testimonials.length) {\n this.testimonials = newTestimonials;\n this.testimonialCount = newTestimonials.length;\n console.log('Found testimonials:', this.testimonials.length);\n \n if (this.testimonials.length > 0) {\n this.currentIndex = 0;\n this.updateVisibleTestimonial();\n }\n }\n }\n\n private updateVisibleTestimonial() {\n this.testimonials.forEach((testimonial, index) => {\n const offset = (index - this.currentIndex) * 100;\n testimonial.style.transform = `translateX(${offset}%)`;\n testimonial.style.opacity = index === this.currentIndex ? '1' : '0';\n testimonial.style.pointerEvents = index === this.currentIndex ? 'auto' : 'none';\n });\n }\n\n private goToPrevious = () => {\n if (this.isAnimating || this.currentIndex === 0) return;\n \n this.isAnimating = true;\n this.currentIndex = this.currentIndex - 1;\n this.updateVisibleTestimonial();\n \n setTimeout(() => {\n this.isAnimating = false;\n }, 500);\n };\n\n private goToNext = () => {\n if (this.isAnimating || this.currentIndex >= this.testimonialCount - 1) return;\n \n this.isAnimating = true;\n this.currentIndex = this.currentIndex + 1;\n this.updateVisibleTestimonial();\n \n setTimeout(() => {\n this.isAnimating = false;\n }, 500);\n };\n\n render() {\n const hasPrev = this.currentIndex > 0;\n const hasNext = this.currentIndex < this.testimonialCount - 1;\n\n return (\n <Host>\n <div class=\"testimonial-carousel\">\n <div class=\"testimonial-slides\">\n <slot></slot>\n </div>\n \n {/* Progress indicator */}\n {this.testimonialCount > 1 && (\n <div class=\"testimonial-progress\">\n {Array.from({ length: this.testimonialCount }).map((_, index) => (\n <div \n class={`progress-dot ${index === this.currentIndex ? 'active' : ''}`}\n onClick={() => {\n if (!this.isAnimating && index !== this.currentIndex) {\n this.isAnimating = true;\n this.currentIndex = index;\n this.updateVisibleTestimonial();\n setTimeout(() => {\n this.isAnimating = false;\n }, 500);\n }\n }}\n />\n ))}\n </div>\n )}\n\n {/* Navigation buttons */}\n {this.testimonialCount > 1 && (\n <div class=\"carousel-navigation\">\n <button \n class=\"nav-button prev\" \n disabled={!hasPrev}\n onClick={this.goToPrevious}\n aria-label=\"Previous testimonial\"\n >\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M19 12H5M5 12L12 19M5 12L12 5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n <button \n class=\"nav-button next\" \n disabled={!hasNext}\n onClick={this.goToNext}\n aria-label=\"Next testimonial\"\n >\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M5 12H19M19 12L12 5M19 12L12 19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n\n"]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: block;
|
|
3
|
+
flex: 1;
|
|
4
|
+
min-width: 0;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.stat {
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
gap: 8px;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.stat--accent {
|
|
14
|
+
border-left: 2px solid var(--colour-background-border-active, #8a7049);
|
|
15
|
+
padding-left: 16px;
|
|
16
|
+
min-height: 76px;
|
|
17
|
+
justify-content: center;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.stat-value {
|
|
21
|
+
font-family: 'NeuSans', 'Inter', 'Segoe UI', system-ui, sans-serif;
|
|
22
|
+
font-size: 44px;
|
|
23
|
+
font-weight: 400;
|
|
24
|
+
line-height: 1;
|
|
25
|
+
letter-spacing: -0.88px;
|
|
26
|
+
color: var(--colour-typography-heading-secondary, #8a7049);
|
|
27
|
+
margin: 0;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.stat-description {
|
|
31
|
+
font-family: 'NeuSans', 'Inter', 'Segoe UI', system-ui, sans-serif;
|
|
32
|
+
font-size: 16px;
|
|
33
|
+
font-weight: 400;
|
|
34
|
+
line-height: 24px;
|
|
35
|
+
color: var(--colour-typography-body-dark, #14343b);
|
|
36
|
+
margin: 0;
|
|
37
|
+
overflow: hidden;
|
|
38
|
+
text-overflow: ellipsis;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { h, Host } from "@stencil/core";
|
|
2
|
+
export class AfTestimonialStat {
|
|
3
|
+
constructor() {
|
|
4
|
+
/**
|
|
5
|
+
* Whether to show left accent border
|
|
6
|
+
*/
|
|
7
|
+
this.accentBorder = false;
|
|
8
|
+
}
|
|
9
|
+
render() {
|
|
10
|
+
return (h(Host, { key: '38055fcad76047030e7907ad11933c229e33fe05' }, h("div", { key: 'ae01845c6494f9da213f7b823aa5a57b51d94e96', class: `stat ${this.accentBorder ? 'stat--accent' : ''}` }, h("p", { key: 'd1ee0c278a840f343e442178fa2c8ae35e04304e', class: "stat-value" }, this.value), h("p", { key: '29322d5a6e3048f6c1a3df68393f6367bb4b6631', class: "stat-description" }, this.description))));
|
|
11
|
+
}
|
|
12
|
+
static get is() { return "af-testimonial-stat"; }
|
|
13
|
+
static get encapsulation() { return "scoped"; }
|
|
14
|
+
static get originalStyleUrls() {
|
|
15
|
+
return {
|
|
16
|
+
"$": ["af-testimonial-stat.css"]
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
static get styleUrls() {
|
|
20
|
+
return {
|
|
21
|
+
"$": ["af-testimonial-stat.css"]
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
static get properties() {
|
|
25
|
+
return {
|
|
26
|
+
"value": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"mutable": false,
|
|
29
|
+
"complexType": {
|
|
30
|
+
"original": "string",
|
|
31
|
+
"resolved": "string",
|
|
32
|
+
"references": {}
|
|
33
|
+
},
|
|
34
|
+
"required": true,
|
|
35
|
+
"optional": false,
|
|
36
|
+
"docs": {
|
|
37
|
+
"tags": [],
|
|
38
|
+
"text": "The statistic value (e.g., \"95%\", \"10\u00D7\", \"120,000\")"
|
|
39
|
+
},
|
|
40
|
+
"getter": false,
|
|
41
|
+
"setter": false,
|
|
42
|
+
"reflect": false,
|
|
43
|
+
"attribute": "value"
|
|
44
|
+
},
|
|
45
|
+
"description": {
|
|
46
|
+
"type": "string",
|
|
47
|
+
"mutable": false,
|
|
48
|
+
"complexType": {
|
|
49
|
+
"original": "string",
|
|
50
|
+
"resolved": "string",
|
|
51
|
+
"references": {}
|
|
52
|
+
},
|
|
53
|
+
"required": true,
|
|
54
|
+
"optional": false,
|
|
55
|
+
"docs": {
|
|
56
|
+
"tags": [],
|
|
57
|
+
"text": "Description text for the statistic"
|
|
58
|
+
},
|
|
59
|
+
"getter": false,
|
|
60
|
+
"setter": false,
|
|
61
|
+
"reflect": false,
|
|
62
|
+
"attribute": "description"
|
|
63
|
+
},
|
|
64
|
+
"accentBorder": {
|
|
65
|
+
"type": "boolean",
|
|
66
|
+
"mutable": false,
|
|
67
|
+
"complexType": {
|
|
68
|
+
"original": "boolean",
|
|
69
|
+
"resolved": "boolean",
|
|
70
|
+
"references": {}
|
|
71
|
+
},
|
|
72
|
+
"required": false,
|
|
73
|
+
"optional": false,
|
|
74
|
+
"docs": {
|
|
75
|
+
"tags": [],
|
|
76
|
+
"text": "Whether to show left accent border"
|
|
77
|
+
},
|
|
78
|
+
"getter": false,
|
|
79
|
+
"setter": false,
|
|
80
|
+
"reflect": false,
|
|
81
|
+
"attribute": "accent-border",
|
|
82
|
+
"defaultValue": "false"
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=af-testimonial-stat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"af-testimonial-stat.js","sourceRoot":"","sources":["../../../src/components/af-testimonial-stat/af-testimonial-stat.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAQzD,MAAM,OAAO,iBAAiB;IAN9B;QAiBE;;WAEG;QACK,iBAAY,GAAY,KAAK,CAAC;KAYvC;IAVC,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,4DAAK,KAAK,EAAE,QAAQ,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC3D,0DAAG,KAAK,EAAC,YAAY,IAAE,IAAI,CAAC,KAAK,CAAK;gBACtC,0DAAG,KAAK,EAAC,kBAAkB,IAAE,IAAI,CAAC,WAAW,CAAK,CAC9C,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, h, Host } from '@stencil/core';\n\n@Component({\n tag: 'af-testimonial-stat',\n styleUrl: 'af-testimonial-stat.css',\n shadow: false,\n scoped: true,\n})\nexport class AfTestimonialStat {\n /**\n * The statistic value (e.g., \"95%\", \"10×\", \"120,000\")\n */\n @Prop() value!: string;\n\n /**\n * Description text for the statistic\n */\n @Prop() description!: string;\n\n /**\n * Whether to show left accent border\n */\n @Prop() accentBorder: boolean = false;\n\n render() {\n return (\n <Host>\n <div class={`stat ${this.accentBorder ? 'stat--accent' : ''}`}>\n <p class=\"stat-value\">{this.value}</p>\n <p class=\"stat-description\">{this.description}</p>\n </div>\n </Host>\n );\n }\n}\n\n\n"]}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
.text {
|
|
6
6
|
margin: 0;
|
|
7
7
|
padding: 0;
|
|
8
|
-
font-family: '
|
|
8
|
+
font-family: 'NeuSans', 'Inter', 'Segoe UI', system-ui, sans-serif;
|
|
9
9
|
font-weight: 400;
|
|
10
10
|
color: var(--colour-typography-body-default, #14343b);
|
|
11
11
|
letter-spacing: 0;
|
|
@@ -24,6 +24,15 @@
|
|
|
24
24
|
text-align: right;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
/* Theme variants */
|
|
28
|
+
.theme-dark {
|
|
29
|
+
color: var(--colour-brand-mist-green, #C6D5D1);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.theme-light {
|
|
33
|
+
color: var(--colour-typography-body-default, #14343b);
|
|
34
|
+
}
|
|
35
|
+
|
|
27
36
|
/* Body variants */
|
|
28
37
|
.variant-xlarge {
|
|
29
38
|
font-size: 22px;
|
|
@@ -7,14 +7,17 @@ export class AfText {
|
|
|
7
7
|
this.align = 'left';
|
|
8
8
|
/** Semantic element to render */
|
|
9
9
|
this.as = 'p';
|
|
10
|
+
/** Theme for dark backgrounds */
|
|
11
|
+
this.theme = 'light';
|
|
10
12
|
}
|
|
11
13
|
render() {
|
|
12
14
|
const Tag = this.as;
|
|
13
|
-
return (h(Tag, { key: '
|
|
15
|
+
return (h(Tag, { key: 'd24094cc876bf871972eb35651c2c145d135722f', class: {
|
|
14
16
|
'text': true,
|
|
15
17
|
[`variant-${this.variant}`]: true,
|
|
16
|
-
[`align-${this.align}`]: true
|
|
17
|
-
|
|
18
|
+
[`align-${this.align}`]: true,
|
|
19
|
+
[`theme-${this.theme}`]: true
|
|
20
|
+
}, part: "base" }, h("slot", { key: 'bb1f690d3b11f76d926da7bc7655fbce9df9973c' })));
|
|
18
21
|
}
|
|
19
22
|
static get is() { return "af-text"; }
|
|
20
23
|
static get encapsulation() { return "shadow"; }
|
|
@@ -89,6 +92,26 @@ export class AfText {
|
|
|
89
92
|
"reflect": false,
|
|
90
93
|
"attribute": "as",
|
|
91
94
|
"defaultValue": "'p'"
|
|
95
|
+
},
|
|
96
|
+
"theme": {
|
|
97
|
+
"type": "string",
|
|
98
|
+
"mutable": false,
|
|
99
|
+
"complexType": {
|
|
100
|
+
"original": "'light' | 'dark'",
|
|
101
|
+
"resolved": "\"dark\" | \"light\"",
|
|
102
|
+
"references": {}
|
|
103
|
+
},
|
|
104
|
+
"required": false,
|
|
105
|
+
"optional": false,
|
|
106
|
+
"docs": {
|
|
107
|
+
"tags": [],
|
|
108
|
+
"text": "Theme for dark backgrounds"
|
|
109
|
+
},
|
|
110
|
+
"getter": false,
|
|
111
|
+
"setter": false,
|
|
112
|
+
"reflect": false,
|
|
113
|
+
"attribute": "theme",
|
|
114
|
+
"defaultValue": "'light'"
|
|
92
115
|
}
|
|
93
116
|
};
|
|
94
117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"af-text.js","sourceRoot":"","sources":["../../../src/components/af-text/af-text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAOnD,MAAM,OAAO,MAAM;IALnB;QAME,mBAAmB;QACX,YAAO,GAA2E,QAAQ,CAAC;QAEnG,uBAAuB;QACf,UAAK,GAAgC,MAAM,CAAC;QAEpD,iCAAiC;QACzB,OAAE,GAAmC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"af-text.js","sourceRoot":"","sources":["../../../src/components/af-text/af-text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAOnD,MAAM,OAAO,MAAM;IALnB;QAME,mBAAmB;QACX,YAAO,GAA2E,QAAQ,CAAC;QAEnG,uBAAuB;QACf,UAAK,GAAgC,MAAM,CAAC;QAEpD,iCAAiC;QACzB,OAAE,GAAmC,GAAG,CAAC;QAEjD,iCAAiC;QACzB,UAAK,GAAqB,OAAO,CAAC;KAmB3C;IAjBC,MAAM;QACJ,MAAM,GAAG,GAAG,IAAI,CAAC,EAAS,CAAC;QAE3B,OAAO,CACL,EAAC,GAAG,qDACF,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;gBACZ,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI;gBACjC,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI;gBAC7B,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI;aAC9B,EACD,IAAI,EAAC,MAAM;YAEX,8DAAQ,CACJ,CACP,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'af-text',\n styleUrl: 'af-text.css',\n shadow: true\n})\nexport class AfText {\n /** Text variant */\n @Prop() variant: 'xlarge' | 'large' | 'medium' | 'small' | 'label-button' | 'label-tag' = 'medium';\n\n /** Visual alignment */\n @Prop() align: 'left' | 'center' | 'right' = 'left';\n\n /** Semantic element to render */\n @Prop() as: 'p' | 'span' | 'div' | 'label' = 'p';\n \n /** Theme for dark backgrounds */\n @Prop() theme: 'light' | 'dark' = 'light';\n\n render() {\n const Tag = this.as as any;\n\n return (\n <Tag\n class={{\n 'text': true,\n [`variant-${this.variant}`]: true,\n [`align-${this.align}`]: true,\n [`theme-${this.theme}`]: true\n }}\n part=\"base\"\n >\n <slot />\n </Tag>\n );\n }\n}\n"]}
|
|
@@ -30,7 +30,7 @@ export class AfTypographyLockup {
|
|
|
30
30
|
[`breakpoint-${this.breakpoint}`]: true
|
|
31
31
|
};
|
|
32
32
|
const copyStyle = this.maxWidth ? { maxWidth: `${this.maxWidth}px` } : {};
|
|
33
|
-
return (h(Host, { key: '
|
|
33
|
+
return (h(Host, { key: '108f59f3983487b19e059fa0f9c9c33cfb9b47ba' }, h("div", { key: '4dd1ece34095b91fcf9f41355a16eb4fb4b83ef0', class: containerClasses }, h("div", { key: '3a472b7ccfe7192ca9f2867e91b366469c030442', class: copyClasses, style: copyStyle }, h("div", { key: '578aa5a20e857a1d822d60a3f8dfb16ddd64f423', class: "heading" }, h("slot", { key: 'd38c8f2572e16f6f158b37c1a547c5482f1a3351' })), h("div", { key: '4d59415dac2a10f2443b2186e8f71026e9c70e71', class: "description" }, h("slot", { key: 'e1b4d336405cdf08b7fcb451f7e09811c736a955', name: "description" }))), h("div", { key: '955dda0ad363656d54dca5f9327329a91ee2a96e', class: "buttons" }, h("slot", { key: 'e6582595577adeb312cb726ea6708c23a46d6ec1', name: "buttons" })))));
|
|
34
34
|
}
|
|
35
35
|
static get is() { return "af-typography-lockup"; }
|
|
36
36
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { p as proxyCustomElement, H, h, c as Host } from './p-
|
|
1
|
+
import { p as proxyCustomElement, H, h, c as Host } from './p-CZlTvZAm.js';
|
|
2
2
|
|
|
3
|
-
const afCardCss = ".sc-af-card-h{display:block;width:100%;min-height:400px}.card.sc-af-card{background:var(--colour-background-level-1, #e8eeed);border-radius:var(--border-radius-card-level-1, 32px);overflow:hidden;position:relative;display:flex;flex-direction:column;min-height:400px;height:100%;box-sizing:border-box}.card--with-image.sc-af-card{background:var(--colour-brand-inkwell, #14343b);min-height:480px}.card__background.sc-af-card{position:absolute;inset:0;pointer-events:none;z-index:0}.card__background-image.sc-af-card{width:100%;height:100%;object-fit:cover;object-position:center}.card__content.sc-af-card{position:relative;padding:40px;display:flex;flex-direction:column;gap:24px;flex:1;box-sizing:border-box;z-index:1}.card__content.sc-af-card-s>img,.card__content .sc-af-card-s>img{width:100%;height:auto;min-height:200px;margin-top:auto;object-fit:cover;object-position:top center}.card__content.sc-af-card-s>af-heading,.card__content .sc-af-card-s>af-heading{margin-bottom:0}.card__content.sc-af-card-s>af-text,.card__content .sc-af-card-s>af-text{line-height:1.44}.card__content--overlay.sc-af-card{backdrop-filter:blur(2px);background:linear-gradient(to top, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0) 100%);padding:32px;padding-top:200px;justify-content:flex-end;--colour-typography-heading-primary:#ffffff;--colour-typography-heading-secondary:#ffffff;--colour-typography-body-default:#ffffff;--colour-typography-body-dark:#ffffff;color:#ffffff}.card__content--overlay.sc-af-card *.sc-af-card{color:#ffffff !important}.card.sc-af-card:not(.card--with-image) .
|
|
3
|
+
const afCardCss = ".sc-af-card-h{display:block;width:100%;min-height:400px}.card.sc-af-card{background:var(--colour-background-level-1, #e8eeed);border-radius:var(--border-radius-card-level-1, 32px);overflow:hidden;position:relative;display:flex;flex-direction:column;min-height:400px;height:100%;box-sizing:border-box}.card--with-image.sc-af-card{background:var(--colour-brand-inkwell, #14343b);min-height:480px}.card__background.sc-af-card{position:absolute;inset:0;pointer-events:none;z-index:0}.card__background-image.sc-af-card{width:100%;height:100%;object-fit:cover;object-position:center}.card__content.sc-af-card{position:relative;padding:40px;display:flex;flex-direction:column;gap:24px;flex:1;box-sizing:border-box;z-index:1}.card__content.sc-af-card-s>img,.card__content .sc-af-card-s>img{width:100%;height:auto;min-height:200px;margin-top:auto;object-fit:cover;object-position:top center}.card__content.sc-af-card-s>af-heading,.card__content .sc-af-card-s>af-heading{margin-bottom:0}.card__content.sc-af-card-s>af-text,.card__content .sc-af-card-s>af-text{line-height:1.44}.card__content--overlay.sc-af-card{backdrop-filter:blur(2px);background:linear-gradient(to top, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0) 100%);padding:32px;padding-top:200px;justify-content:flex-end;--colour-typography-heading-primary:#ffffff;--colour-typography-heading-secondary:#ffffff;--colour-typography-body-default:#ffffff;--colour-typography-body-dark:#ffffff;color:#ffffff}.card__content--overlay.sc-af-card *.sc-af-card{color:#ffffff !important}.card.sc-af-card:not(.card--with-image):not(.card--dark-overlay) af-heading.sc-af-card,.card.sc-af-card:not(.card--with-image):not(.card--dark-overlay) af-text.sc-af-card{--colour-typography-heading-primary:var(--colour-brand-inkwell, #14343B);--colour-typography-body-default:#2B484F}.card--custom-bg.sc-af-card:not(.card--dark-overlay) af-heading.sc-af-card,.card--custom-bg.sc-af-card:not(.card--dark-overlay) af-text.sc-af-card{--colour-typography-heading-primary:var(--colour-brand-inkwell, #14343B);--colour-typography-body-default:#2B484F}";
|
|
4
4
|
|
|
5
5
|
const AfCard$1 = /*@__PURE__*/ proxyCustomElement(class AfCard extends H {
|
|
6
6
|
constructor(registerHost) {
|
|
@@ -16,7 +16,7 @@ const AfCard$1 = /*@__PURE__*/ proxyCustomElement(class AfCard extends H {
|
|
|
16
16
|
render() {
|
|
17
17
|
const hasBackgroundImage = !!this.backgroundImage;
|
|
18
18
|
const cardStyle = this.backgroundColor ? { backgroundColor: this.backgroundColor } : undefined;
|
|
19
|
-
return (h(Host, { key: '
|
|
19
|
+
return (h(Host, { key: '2c3c0b6d1889074ae78b2b1f9646dc23829a0e9a' }, h("div", { key: '7e1ef884a203ae17e1ad417ac688f59b9acb6932', class: `card ${hasBackgroundImage ? 'card--with-image' : ''} ${this.darkOverlay ? 'card--dark-overlay' : ''} ${this.backgroundColor ? 'card--custom-bg' : ''}`, style: cardStyle }, hasBackgroundImage && (h("div", { key: '4fb3cea588d42345690df68738b725a6debacc55', class: "card__background" }, h("img", { key: '0dde30e250c7cb117993e3ccbeab8f108278ae89', src: this.backgroundImage, alt: "", class: "card__background-image" }))), h("div", { key: 'f604c04997720f4804d148f103f9c4a69b1ec0aa', class: `card__content ${hasBackgroundImage ? 'card__content--overlay' : ''}` }, h("slot", { key: 'a7668f98c4c8fd10b5581eac69f2a31aecbc3732' })))));
|
|
20
20
|
}
|
|
21
21
|
static get style() { return afCardCss; }
|
|
22
22
|
}, [262, "af-card", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"af-card.js","mappings":";;AAAA,MAAM,SAAS,GAAG,
|
|
1
|
+
{"file":"af-card.js","mappings":";;AAAA,MAAM,SAAS,GAAG,qhEAAqhE;;MCQ1hEA,QAAM,iBAAAC,kBAAA,CAAA,MAAA,MAAA,SAAAC,CAAA,CAAA;AANnB,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;AAiBE;;AAEG;AACK,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK;AAwBrC;IAtBC,MAAM,GAAA;AACJ,QAAA,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe;AACjD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,SAAS;AAE9F,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAE,QAAQ,kBAAkB,GAAG,kBAAkB,GAAG,EAAE,IAAI,IAAI,CAAC,WAAW,GAAG,oBAAoB,GAAG,EAAE,CAAI,CAAA,EAAA,IAAI,CAAC,eAAe,GAAG,iBAAiB,GAAG,EAAE,CAAA,CAAE,EAC9J,KAAK,EAAE,SAAS,EAAA,EAEf,kBAAkB,KACjB,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,kBAAkB,EAAA,EAC3B,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAC,EAAE,EAAC,KAAK,EAAC,wBAAwB,EAAA,CAAG,CACpE,CACP,EACD,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,CAAiB,cAAA,EAAA,kBAAkB,GAAG,wBAAwB,GAAG,EAAE,CAAE,CAAA,EAAA,EAC/E,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,CACF,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["AfCard","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-card/af-card.css?tag=af-card&encapsulation=scoped","src/components/af-card/af-card.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n min-height: 400px;\n}\n\n.card {\n background: var(--colour-background-level-1, #e8eeed);\n border-radius: var(--border-radius-card-level-1, 32px);\n overflow: hidden;\n position: relative;\n display: flex;\n flex-direction: column;\n min-height: 400px;\n height: 100%;\n box-sizing: border-box;\n}\n\n.card--with-image {\n background: var(--colour-brand-inkwell, #14343b);\n min-height: 480px;\n}\n\n.card__background {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 0;\n}\n\n.card__background-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n}\n\n.card__content {\n position: relative;\n padding: 40px;\n display: flex;\n flex-direction: column;\n gap: 24px;\n flex: 1;\n box-sizing: border-box;\n z-index: 1;\n}\n\n/* Image styling within cards */\n.card__content ::slotted(img) {\n width: 100%;\n height: auto;\n min-height: 200px;\n margin-top: auto;\n object-fit: cover;\n object-position: top center;\n}\n\n/* Heading spacing within cards */\n.card__content ::slotted(af-heading) {\n margin-bottom: 0;\n}\n\n/* Text line-height within cards */\n.card__content ::slotted(af-text) {\n line-height: 1.44;\n}\n\n.card__content--overlay {\n backdrop-filter: blur(2px);\n background: linear-gradient(to top, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0) 100%);\n padding: 32px;\n padding-top: 200px;\n justify-content: flex-end;\n \n /* Set CSS custom properties for text color that child components can use */\n --colour-typography-heading-primary: #ffffff;\n --colour-typography-heading-secondary: #ffffff;\n --colour-typography-body-default: #ffffff;\n --colour-typography-body-dark: #ffffff;\n color: #ffffff;\n}\n\n/* Force white text in overlay cards using both direct styling and custom properties */\n.card__content--overlay * {\n color: #ffffff !important;\n}\n\n/* Dark text for regular cards (light backgrounds) */\n.card:not(.card--with-image):not(.card--dark-overlay) af-heading,\n.card:not(.card--with-image):not(.card--dark-overlay) af-text {\n --colour-typography-heading-primary: var(--colour-brand-inkwell, #14343B);\n --colour-typography-body-default: #2B484F;\n}\n\n/* Dark text for custom background color cards (unless they have dark overlay) */\n.card--custom-bg:not(.card--dark-overlay) af-heading,\n.card--custom-bg:not(.card--dark-overlay) af-text {\n --colour-typography-heading-primary: var(--colour-brand-inkwell, #14343B);\n --colour-typography-body-default: #2B484F;\n}\n\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n@Component({\n tag: 'af-card',\n styleUrl: 'af-card.css',\n shadow: false,\n scoped: true,\n})\nexport class AfCard {\n /**\n * Background image URL for the card\n */\n @Prop() backgroundImage?: string;\n\n /**\n * Background color for the card (CSS color value)\n */\n @Prop() backgroundColor?: string;\n\n /**\n * Whether to apply a dark gradient overlay (for cards with background images)\n */\n @Prop() darkOverlay: boolean = false;\n\n render() {\n const hasBackgroundImage = !!this.backgroundImage;\n const cardStyle = this.backgroundColor ? { backgroundColor: this.backgroundColor } : undefined;\n\n return (\n <Host>\n <div \n class={`card ${hasBackgroundImage ? 'card--with-image' : ''} ${this.darkOverlay ? 'card--dark-overlay' : ''} ${this.backgroundColor ? 'card--custom-bg' : ''}`}\n style={cardStyle}\n >\n {hasBackgroundImage && (\n <div class=\"card__background\">\n <img src={this.backgroundImage} alt=\"\" class=\"card__background-image\" />\n </div>\n )}\n <div class={`card__content ${hasBackgroundImage ? 'card__content--overlay' : ''}`}>\n <slot></slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n\n"],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface AfClientCarousel extends Components.AfClientCarousel, HTMLElement {}
|
|
4
|
+
export const AfClientCarousel: {
|
|
5
|
+
prototype: AfClientCarousel;
|
|
6
|
+
new (): AfClientCarousel;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { p as proxyCustomElement, H, h, c as Host } from './p-CZlTvZAm.js';
|
|
2
|
+
|
|
3
|
+
const afClientCarouselCss = ":host{display:block;width:100%;background-color:var(--colour-brand-inkwell, #14343B)}.client-carousel{padding:48px 80px;display:flex;flex-direction:column;gap:40px;align-items:center}.headline{text-align:center;padding:24px 220px}.headline h3{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-weight:500;font-size:34px;line-height:1;letter-spacing:-0.68px;color:var(--colour-brand-mist-green, #C6D5D1);margin:0}.carousel-container{display:flex;flex-direction:column;gap:16px;width:100%;overflow:hidden}.carousel-row{display:flex;width:100%;overflow:hidden;position:relative}.logo-track{display:flex;gap:16px;animation-timing-function:linear;animation-iteration-count:infinite}.scroll-left .logo-track{animation-name:scroll-left;animation-duration:40s}.scroll-right .logo-track{animation-name:scroll-right;animation-duration:40s}@keyframes scroll-left{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}@keyframes scroll-right{0%{transform:translateX(-50%)}100%{transform:translateX(0)}}::slotted(*){flex-shrink:0}@media (max-width: 1024px){.client-carousel{padding:32px 40px}.headline{padding:16px 40px}}@media (max-width: 767px){.client-carousel{padding:24px 16px}.headline{padding:16px}.headline h3{font-size:25px}}";
|
|
4
|
+
|
|
5
|
+
const AfClientCarousel$1 = /*@__PURE__*/ proxyCustomElement(class AfClientCarousel extends H {
|
|
6
|
+
constructor(registerHost) {
|
|
7
|
+
super();
|
|
8
|
+
if (registerHost !== false) {
|
|
9
|
+
this.__registerHost();
|
|
10
|
+
}
|
|
11
|
+
this.__attachShadow();
|
|
12
|
+
/** Show headline above carousel */
|
|
13
|
+
this.showHeadline = false;
|
|
14
|
+
/** Headline text */
|
|
15
|
+
this.headlineText = "Trusted by some of the world's leading organisations";
|
|
16
|
+
}
|
|
17
|
+
render() {
|
|
18
|
+
return (h(Host, { key: '6ee5a4e472cb082ac68cb58c00bf5b1d686dd489' }, h("div", { key: 'dc030f69bfbb55ce999f0b2f1d8a47095d75ac59', class: "client-carousel" }, this.showHeadline && (h("div", { key: 'd8d7fdbd47e65cc5a3a8e10d88f7425f91d0459e', class: "headline" }, h("slot", { key: '3773f567bfd3de6058cd1088ba2c781cf510e63b', name: "headline" }, h("h3", { key: 'fdcab6ce99a2c477bf1e336f13f7994637b8436d' }, this.headlineText)))), h("div", { key: '30429a27f88e490051a4623195421e00a34f4db4', class: "carousel-container" }, h("div", { key: 'de187b8265b84cb3d8f22540ec283bb8b3603aa8', class: "carousel-row scroll-left" }, h("div", { key: 'd2da7c79388f53425cba20429204fea148030aa5', class: "logo-track" }, h("slot", { key: 'b4ddb6250d5893290ed40a2c765d0f0bf0a378e6', name: "row-1" }), h("slot", { key: 'ccb91ed748f2e51a1d0f2d63d676f7e2558ec2ef', name: "row-1" }))), h("div", { key: 'f6a99654384b070bf91e9ea1ebc57de304f2671f', class: "carousel-row scroll-right" }, h("div", { key: '8e31a13039f2e2df33eb7ec67f738d71d49d931f', class: "logo-track" }, h("slot", { key: '2ffeff2da8ddd4c0faefaf59fc1a45972de26943', name: "row-2" }), h("slot", { key: '2121dc84af370a41290a432e50f3c10f6b3d4b4c', name: "row-2" })))))));
|
|
19
|
+
}
|
|
20
|
+
static get style() { return afClientCarouselCss; }
|
|
21
|
+
}, [257, "af-client-carousel", {
|
|
22
|
+
"showHeadline": [4, "show-headline"],
|
|
23
|
+
"headlineText": [1, "headline-text"]
|
|
24
|
+
}]);
|
|
25
|
+
function defineCustomElement$1() {
|
|
26
|
+
if (typeof customElements === "undefined") {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const components = ["af-client-carousel"];
|
|
30
|
+
components.forEach(tagName => { switch (tagName) {
|
|
31
|
+
case "af-client-carousel":
|
|
32
|
+
if (!customElements.get(tagName)) {
|
|
33
|
+
customElements.define(tagName, AfClientCarousel$1);
|
|
34
|
+
}
|
|
35
|
+
break;
|
|
36
|
+
} });
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const AfClientCarousel = AfClientCarousel$1;
|
|
40
|
+
const defineCustomElement = defineCustomElement$1;
|
|
41
|
+
|
|
42
|
+
export { AfClientCarousel, defineCustomElement };
|
|
43
|
+
//# sourceMappingURL=af-client-carousel.js.map
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=af-client-carousel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"af-client-carousel.js","mappings":";;AAAA,MAAM,mBAAmB,GAAG,guCAAguC;;MCU/uCA,kBAAgB,iBAAAC,kBAAA,CAAA,MAAA,gBAAA,SAAAC,CAAA,CAAA;AAL7B,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;;;AAOU,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK;;AAG7B,QAAA,IAAY,CAAA,YAAA,GAAW,sDAAsD;AAmCtF;IAjCC,MAAM,GAAA;QACJ,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,iBAAiB,EAAA,EACzB,IAAI,CAAC,YAAY,KAChB,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,UAAU,EAAA,EACnB,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,UAAU,EAAA,EACnB,CAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EAAK,IAAI,CAAC,YAAY,CAAM,CACvB,CACH,CACP,EAED,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,oBAAoB,EAAA,EAE7B,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,0BAA0B,EAAA,EACnC,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,YAAY,EAAA,EACrB,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,OAAO,EAAQ,CAAA,EAC1B,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,OAAO,EAAA,CAAQ,CACtB,CACF,EAGN,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,2BAA2B,EAAA,EACpC,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,YAAY,EAAA,EACrB,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,OAAO,EAAQ,CAAA,EAC1B,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,OAAO,EAAQ,CAAA,CACtB,CACF,CACF,CACF,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["AfClientCarousel","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-client-carousel/af-client-carousel.css?tag=af-client-carousel&encapsulation=shadow","src/components/af-client-carousel/af-client-carousel.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n background-color: var(--colour-brand-inkwell, #14343B);\n}\n\n.client-carousel {\n padding: 48px 80px;\n display: flex;\n flex-direction: column;\n gap: 40px;\n align-items: center;\n}\n\n.headline {\n text-align: center;\n padding: 24px 220px;\n}\n\n.headline h3 {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: 500;\n font-size: 34px;\n line-height: 1;\n letter-spacing: -0.68px;\n color: var(--colour-brand-mist-green, #C6D5D1);\n margin: 0;\n}\n\n.carousel-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-row {\n display: flex;\n width: 100%;\n overflow: hidden;\n position: relative;\n}\n\n.logo-track {\n display: flex;\n gap: 16px;\n animation-timing-function: linear;\n animation-iteration-count: infinite;\n}\n\n/* Scroll left animation */\n.scroll-left .logo-track {\n animation-name: scroll-left;\n animation-duration: 40s;\n}\n\n/* Scroll right animation */\n.scroll-right .logo-track {\n animation-name: scroll-right;\n animation-duration: 40s;\n}\n\n@keyframes scroll-left {\n 0% {\n transform: translateX(0);\n }\n 100% {\n transform: translateX(-50%);\n }\n}\n\n@keyframes scroll-right {\n 0% {\n transform: translateX(-50%);\n }\n 100% {\n transform: translateX(0);\n }\n}\n\n/* Ensure slotted logos maintain their styling */\n::slotted(*) {\n flex-shrink: 0;\n}\n\n/* Tablet adjustments */\n@media (max-width: 1024px) {\n .client-carousel {\n padding: 32px 40px;\n }\n \n .headline {\n padding: 16px 40px;\n }\n}\n\n/* Mobile adjustments */\n@media (max-width: 767px) {\n .client-carousel {\n padding: 24px 16px;\n }\n \n .headline {\n padding: 16px;\n }\n \n .headline h3 {\n font-size: 25px;\n }\n}\n\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * Infinite scrolling carousel for client logos\n */\n@Component({\n tag: 'af-client-carousel',\n styleUrl: 'af-client-carousel.css',\n shadow: true,\n})\nexport class AfClientCarousel {\n /** Show headline above carousel */\n @Prop() showHeadline: boolean = false;\n \n /** Headline text */\n @Prop() headlineText: string = \"Trusted by some of the world's leading organisations\";\n\n render() {\n return (\n <Host>\n <div class=\"client-carousel\">\n {this.showHeadline && (\n <div class=\"headline\">\n <slot name=\"headline\">\n <h3>{this.headlineText}</h3>\n </slot>\n </div>\n )}\n \n <div class=\"carousel-container\">\n {/* Top row - scrolls left */}\n <div class=\"carousel-row scroll-left\">\n <div class=\"logo-track\">\n <slot name=\"row-1\"></slot>\n <slot name=\"row-1\"></slot>\n </div>\n </div>\n \n {/* Bottom row - scrolls right */}\n <div class=\"carousel-row scroll-right\">\n <div class=\"logo-track\">\n <slot name=\"row-2\"></slot>\n <slot name=\"row-2\"></slot>\n </div>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n\n"],"version":3}
|