@affinda/wc 0.0.14 → 0.0.16
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-aspect-ratio.entry.esm.js.map +1 -1
- 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-checkbox.entry.esm.js.map +1 -0
- package/dist/affinda/af-client-carousel.entry.esm.js.map +1 -1
- package/dist/affinda/af-feature-accordion.entry.esm.js.map +1 -1
- package/dist/affinda/af-feature-card.entry.esm.js.map +1 -0
- package/dist/affinda/af-feature-grid.entry.esm.js.map +1 -0
- package/dist/affinda/af-fieldset.entry.esm.js.map +1 -0
- package/dist/affinda/af-footer.entry.esm.js.map +1 -1
- package/dist/affinda/af-grid-callout.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 -1
- package/dist/affinda/af-icon-box.entry.esm.js.map +1 -0
- package/dist/affinda/af-icon-button.entry.esm.js.map +1 -1
- package/dist/affinda/af-icon-text.entry.esm.js.map +1 -0
- package/dist/affinda/af-icon.entry.esm.js.map +1 -0
- package/dist/affinda/af-illustrated-card.entry.esm.js.map +1 -0
- package/dist/affinda/af-image.entry.esm.js.map +1 -0
- package/dist/affinda/af-in-page-banner.entry.esm.js.map +1 -0
- package/dist/affinda/af-input.entry.esm.js.map +1 -0
- package/dist/affinda/af-logo-well.entry.esm.js.map +1 -1
- package/dist/affinda/af-nav-card.entry.esm.js.map +1 -0
- package/dist/affinda/af-nav-menu-nest.entry.esm.js.map +1 -0
- package/dist/affinda/af-nav-menu.entry.esm.js.map +1 -0
- package/dist/affinda/af-number-badge.entry.esm.js.map +1 -0
- package/dist/affinda/af-progress-line.entry.esm.js.map +1 -0
- package/dist/affinda/af-radio.entry.esm.js.map +1 -0
- package/dist/affinda/af-section.entry.esm.js.map +1 -1
- package/dist/affinda/af-split-section.entry.esm.js.map +1 -0
- package/dist/affinda/af-switch.entry.esm.js.map +1 -0
- package/dist/affinda/af-tab-bar.entry.esm.js.map +1 -0
- package/dist/affinda/af-tab.entry.esm.js.map +1 -0
- package/dist/affinda/af-tag.entry.esm.js.map +1 -0
- package/dist/affinda/af-testimonial-carousel.entry.esm.js.map +1 -1
- package/dist/affinda/af-testimonial-stat.entry.esm.js.map +1 -1
- package/dist/affinda/af-testimonial.entry.esm.js.map +1 -1
- package/dist/affinda/af-text-image-nest.entry.esm.js.map +1 -0
- package/dist/affinda/af-text-image.entry.esm.js.map +1 -0
- package/dist/affinda/af-textarea.entry.esm.js.map +1 -0
- package/dist/affinda/af-typography-lockup.entry.esm.js.map +1 -1
- package/dist/affinda/af-video-container.entry.esm.js.map +1 -0
- 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/index.esm.js.map +1 -1
- package/dist/affinda/p-0cd160a4.entry.js +2 -0
- package/dist/affinda/p-0cd160a4.entry.js.map +1 -0
- package/dist/affinda/p-10801ee1.entry.js +2 -0
- package/dist/affinda/p-10801ee1.entry.js.map +1 -0
- package/dist/affinda/p-1d65fd18.entry.js +2 -0
- package/dist/affinda/p-1d65fd18.entry.js.map +1 -0
- package/dist/affinda/p-1d9e532f.entry.js +2 -0
- package/dist/affinda/p-231ba1d0.entry.js +2 -0
- package/dist/affinda/p-231ba1d0.entry.js.map +1 -0
- package/dist/affinda/p-2b4dc22c.entry.js +2 -0
- package/dist/affinda/p-2b4dc22c.entry.js.map +1 -0
- package/dist/affinda/{p-a49dc8ac.entry.js → p-31d4c1a4.entry.js} +2 -2
- package/dist/affinda/p-3d3c9f62.entry.js +2 -0
- package/dist/affinda/p-3d3c9f62.entry.js.map +1 -0
- package/dist/affinda/p-3f691578.entry.js +2 -0
- package/dist/affinda/p-3f691578.entry.js.map +1 -0
- package/dist/affinda/p-425253ee.entry.js +2 -0
- package/dist/affinda/{p-52f7ea33.entry.js.map → p-425253ee.entry.js.map} +1 -1
- package/dist/affinda/p-44b25840.entry.js +2 -0
- package/dist/affinda/p-44b25840.entry.js.map +1 -0
- package/dist/affinda/p-45e1923c.entry.js +2 -0
- package/dist/affinda/p-45e1923c.entry.js.map +1 -0
- package/dist/affinda/p-52ab3bf0.entry.js +2 -0
- package/dist/affinda/p-52ab3bf0.entry.js.map +1 -0
- package/dist/affinda/p-53ae16fe.entry.js +2 -0
- package/dist/affinda/p-53b5149d.entry.js +2 -0
- package/dist/affinda/p-53b5149d.entry.js.map +1 -0
- package/dist/affinda/p-57713942.entry.js +2 -0
- package/dist/affinda/p-57713942.entry.js.map +1 -0
- package/dist/affinda/p-5bbf2c8c.entry.js +2 -0
- package/dist/affinda/p-5bbf2c8c.entry.js.map +1 -0
- package/dist/affinda/p-697bf0b7.entry.js +2 -0
- package/dist/affinda/p-697bf0b7.entry.js.map +1 -0
- package/dist/affinda/p-6b2d0ff4.entry.js +2 -0
- package/dist/affinda/p-6b2d0ff4.entry.js.map +1 -0
- package/dist/affinda/p-71144002.entry.js +2 -0
- package/dist/affinda/p-71144002.entry.js.map +1 -0
- package/dist/affinda/{p-dec4c4d5.entry.js → p-72f02343.entry.js} +2 -2
- package/dist/affinda/p-77bf8a81.entry.js +2 -0
- package/dist/affinda/p-77bf8a81.entry.js.map +1 -0
- package/dist/affinda/p-7f20fbe0.entry.js +2 -0
- package/dist/affinda/p-7f20fbe0.entry.js.map +1 -0
- package/dist/affinda/p-81571029.entry.js +2 -0
- package/dist/affinda/p-81571029.entry.js.map +1 -0
- package/dist/affinda/p-85a78bcf.entry.js +2 -0
- package/dist/affinda/p-85a78bcf.entry.js.map +1 -0
- package/dist/affinda/p-861f4f57.entry.js +2 -0
- package/dist/affinda/p-861f4f57.entry.js.map +1 -0
- package/dist/affinda/p-864778d0.entry.js +2 -0
- package/dist/affinda/p-864778d0.entry.js.map +1 -0
- package/dist/affinda/p-8ea22b5d.entry.js +2 -0
- package/dist/affinda/p-8ea22b5d.entry.js.map +1 -0
- package/dist/affinda/{p-97f9f774.entry.js → p-96eac3af.entry.js} +2 -2
- package/dist/affinda/p-98901734.entry.js +2 -0
- package/dist/affinda/p-98901734.entry.js.map +1 -0
- package/dist/affinda/p-9f470d8b.entry.js +2 -0
- package/dist/affinda/p-9f470d8b.entry.js.map +1 -0
- package/dist/affinda/p-BmU_CFQ4.js +3 -0
- package/dist/affinda/p-BmU_CFQ4.js.map +1 -0
- package/dist/affinda/p-a36abb83.entry.js +2 -0
- package/dist/affinda/{p-bf4543ff.entry.js.map → p-a36abb83.entry.js.map} +1 -1
- package/dist/affinda/p-a4e4eb4d.entry.js +2 -0
- package/dist/affinda/{p-d3b2ab0e.entry.js.map → p-a4e4eb4d.entry.js.map} +1 -1
- package/dist/affinda/p-a6365e94.entry.js +2 -0
- package/dist/affinda/p-a6365e94.entry.js.map +1 -0
- package/dist/affinda/p-aaa28806.entry.js +2 -0
- package/dist/affinda/p-aaa28806.entry.js.map +1 -0
- package/dist/affinda/p-acbbe39a.entry.js +2 -0
- package/dist/affinda/{p-ce89c4f1.entry.js.map → p-acbbe39a.entry.js.map} +1 -1
- package/dist/affinda/p-b17735c9.entry.js +2 -0
- package/dist/affinda/p-b17735c9.entry.js.map +1 -0
- package/dist/affinda/p-b3b0ed0c.entry.js +2 -0
- package/dist/affinda/p-b3b0ed0c.entry.js.map +1 -0
- package/dist/affinda/p-be049760.entry.js +2 -0
- package/dist/affinda/p-be049760.entry.js.map +1 -0
- package/dist/affinda/p-c0ee2420.entry.js +2 -0
- package/dist/affinda/p-c0ee2420.entry.js.map +1 -0
- package/dist/affinda/{p-3a9646e6.entry.js → p-c11088fa.entry.js} +2 -2
- package/dist/affinda/p-c298b370.entry.js +2 -0
- package/dist/affinda/p-c298b370.entry.js.map +1 -0
- package/dist/affinda/p-c3e31251.entry.js +2 -0
- package/dist/affinda/p-c3e31251.entry.js.map +1 -0
- package/dist/affinda/p-ce3356f1.entry.js +2 -0
- package/dist/affinda/p-ce3356f1.entry.js.map +1 -0
- package/dist/affinda/p-df148383.entry.js +2 -0
- package/dist/affinda/{p-07990b1f.entry.js.map → p-df148383.entry.js.map} +1 -1
- package/dist/affinda/{p-f8ac0120.entry.js → p-e5af21c2.entry.js} +2 -2
- package/dist/affinda/p-e5d9913c.entry.js +2 -0
- package/dist/affinda/p-e5d9913c.entry.js.map +1 -0
- package/dist/affinda/p-ea06c83b.entry.js +2 -0
- package/dist/affinda/p-ea06c83b.entry.js.map +1 -0
- package/dist/affinda/p-f45b0060.entry.js +2 -0
- package/dist/affinda/{p-050f98cd.entry.js.map → p-f45b0060.entry.js.map} +1 -1
- package/dist/cjs/af-aspect-ratio.cjs.entry.js +2 -2
- package/dist/cjs/af-aspect-ratio.entry.cjs.js.map +1 -1
- package/dist/cjs/af-button-group.cjs.entry.js +2 -2
- package/dist/cjs/af-button.cjs.entry.js +25 -12
- package/dist/cjs/af-button.entry.cjs.js.map +1 -1
- package/dist/cjs/af-card.cjs.entry.js +17 -7
- package/dist/cjs/af-card.entry.cjs.js.map +1 -1
- package/dist/cjs/af-checkbox.cjs.entry.js +58 -0
- package/dist/cjs/af-checkbox.entry.cjs.js.map +1 -0
- package/dist/cjs/af-client-carousel.cjs.entry.js +5 -7
- package/dist/cjs/af-client-carousel.entry.cjs.js.map +1 -1
- package/dist/cjs/af-color-swatch.cjs.entry.js +1 -1
- package/dist/cjs/af-contact-item.cjs.entry.js +2 -2
- package/dist/cjs/af-container.cjs.entry.js +1 -1
- package/dist/cjs/af-feature-accordion.cjs.entry.js +4 -4
- package/dist/cjs/af-feature-accordion.entry.cjs.js.map +1 -1
- package/dist/cjs/af-feature-card.cjs.entry.js +59 -0
- package/dist/cjs/af-feature-card.entry.cjs.js.map +1 -0
- package/dist/cjs/af-feature-grid.cjs.entry.js +93 -0
- package/dist/cjs/af-feature-grid.entry.cjs.js.map +1 -0
- package/dist/cjs/af-fieldset.cjs.entry.js +37 -0
- package/dist/cjs/af-fieldset.entry.cjs.js.map +1 -0
- package/dist/cjs/af-footer-column.cjs.entry.js +2 -2
- package/dist/cjs/af-footer-link.cjs.entry.js +2 -2
- package/dist/cjs/af-footer.cjs.entry.js +3 -3
- package/dist/cjs/af-footer.entry.cjs.js.map +1 -1
- package/dist/cjs/af-grid-callout.cjs.entry.js +51 -0
- package/dist/cjs/af-grid-callout.entry.cjs.js.map +1 -0
- 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 +69 -20
- package/dist/cjs/af-hero-section.cjs.entry.js +11 -5
- package/dist/cjs/af-hero-section.entry.cjs.js.map +1 -1
- package/dist/cjs/af-icon-box.cjs.entry.js +30 -0
- package/dist/cjs/af-icon-box.entry.cjs.js.map +1 -0
- package/dist/cjs/af-icon-button.cjs.entry.js +6 -3
- package/dist/cjs/af-icon-button.entry.cjs.js.map +1 -1
- package/dist/cjs/af-icon-text.cjs.entry.js +36 -0
- package/dist/cjs/af-icon-text.entry.cjs.js.map +1 -0
- package/dist/cjs/af-icon.cjs.entry.js +352 -0
- package/dist/cjs/af-icon.entry.cjs.js.map +1 -0
- package/dist/cjs/af-illustrated-card.cjs.entry.js +36 -0
- package/dist/cjs/af-illustrated-card.entry.cjs.js.map +1 -0
- package/dist/cjs/af-image.cjs.entry.js +18 -0
- package/dist/cjs/af-image.entry.cjs.js.map +1 -0
- package/dist/cjs/af-in-page-banner.cjs.entry.js +47 -0
- package/dist/cjs/af-in-page-banner.entry.cjs.js.map +1 -0
- package/dist/cjs/af-input.cjs.entry.js +104 -0
- package/dist/cjs/af-input.entry.cjs.js.map +1 -0
- package/dist/cjs/af-logo-well.cjs.entry.js +3 -3
- package/dist/cjs/af-logo-well.entry.cjs.js.map +1 -1
- package/dist/cjs/af-nav-card.cjs.entry.js +37 -0
- package/dist/cjs/af-nav-card.entry.cjs.js.map +1 -0
- package/dist/cjs/af-nav-menu-nest.cjs.entry.js +43 -0
- package/dist/cjs/af-nav-menu-nest.entry.cjs.js.map +1 -0
- package/dist/cjs/af-nav-menu.cjs.entry.js +41 -0
- package/dist/cjs/af-nav-menu.entry.cjs.js.map +1 -0
- package/dist/cjs/af-number-badge.cjs.entry.js +42 -0
- package/dist/cjs/af-number-badge.entry.cjs.js.map +1 -0
- package/dist/cjs/af-progress-line.cjs.entry.js +33 -0
- package/dist/cjs/af-progress-line.entry.cjs.js.map +1 -0
- package/dist/cjs/af-radio.cjs.entry.js +43 -0
- package/dist/cjs/af-radio.entry.cjs.js.map +1 -0
- package/dist/cjs/af-section.cjs.entry.js +6 -6
- package/dist/cjs/af-section.entry.cjs.js.map +1 -1
- package/dist/cjs/af-social-link.cjs.entry.js +2 -2
- package/dist/cjs/af-split-section.cjs.entry.js +41 -0
- package/dist/cjs/af-split-section.entry.cjs.js.map +1 -0
- package/dist/cjs/af-switch.cjs.entry.js +48 -0
- package/dist/cjs/af-switch.entry.cjs.js.map +1 -0
- package/dist/cjs/af-tab-bar.cjs.entry.js +88 -0
- package/dist/cjs/af-tab-bar.entry.cjs.js.map +1 -0
- package/dist/cjs/af-tab.cjs.entry.js +64 -0
- package/dist/cjs/af-tab.entry.cjs.js.map +1 -0
- package/dist/cjs/af-tag.cjs.entry.js +37 -0
- package/dist/cjs/af-tag.entry.cjs.js.map +1 -0
- package/dist/cjs/af-testimonial-carousel.cjs.entry.js +27 -15
- package/dist/cjs/af-testimonial-carousel.entry.cjs.js.map +1 -1
- package/dist/cjs/af-testimonial-stat.cjs.entry.js +3 -3
- package/dist/cjs/af-testimonial-stat.entry.cjs.js.map +1 -1
- package/dist/cjs/af-testimonial.cjs.entry.js +27 -3
- package/dist/cjs/af-testimonial.entry.cjs.js.map +1 -1
- package/dist/cjs/af-text-image-nest.cjs.entry.js +30 -0
- package/dist/cjs/af-text-image-nest.entry.cjs.js.map +1 -0
- package/dist/cjs/af-text-image.cjs.entry.js +63 -0
- package/dist/cjs/af-text-image.entry.cjs.js.map +1 -0
- package/dist/cjs/af-textarea.cjs.entry.js +93 -0
- package/dist/cjs/af-textarea.entry.cjs.js.map +1 -0
- package/dist/cjs/af-typography-lockup.cjs.entry.js +7 -7
- package/dist/cjs/af-typography-lockup.entry.cjs.js.map +1 -1
- package/dist/cjs/af-video-container.cjs.entry.js +35 -0
- package/dist/cjs/af-video-container.entry.cjs.js.map +1 -0
- package/dist/cjs/affinda.cjs.js +2 -2
- package/dist/cjs/{index-DfEVhbS6.js → index-ybEiHT0b.js} +130 -6
- package/dist/cjs/index-ybEiHT0b.js.map +1 -0
- package/dist/cjs/index.cjs.js +23 -1
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/collection/assets/backgrounds/wave-overlay-inkwell.svg +3 -0
- package/dist/collection/assets/backgrounds/wave-overlay-mist-green.svg +3 -0
- package/dist/collection/assets/backgrounds/wave-overlay-soft-clay.svg +3 -0
- package/dist/collection/assets/backgrounds/wave-overlay-white-ivory.svg +3 -0
- package/dist/collection/assets/logo-affinda.svg +19 -0
- package/dist/collection/collection-manifest.json +28 -2
- package/dist/collection/components/af-aspect-ratio/af-aspect-ratio.css +2 -0
- package/dist/collection/components/af-button/af-button.css +177 -64
- package/dist/collection/components/af-button/af-button.js +50 -42
- 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 +96 -64
- package/dist/collection/components/af-card/af-card.js +32 -33
- package/dist/collection/components/af-card/af-card.js.map +1 -1
- package/dist/collection/components/af-checkbox/af-checkbox.css +96 -0
- package/dist/collection/components/af-checkbox/af-checkbox.js +186 -0
- package/dist/collection/components/af-checkbox/af-checkbox.js.map +1 -0
- package/dist/collection/components/af-client-carousel/af-client-carousel.css +77 -32
- package/dist/collection/components/af-client-carousel/af-client-carousel.js +21 -33
- package/dist/collection/components/af-client-carousel/af-client-carousel.js.map +1 -1
- package/dist/collection/components/af-contact-item/af-contact-item.js +1 -1
- package/dist/collection/components/af-feature-accordion/af-feature-accordion.css +21 -35
- package/dist/collection/components/af-feature-accordion/af-feature-accordion.js +15 -5
- package/dist/collection/components/af-feature-accordion/af-feature-accordion.js.map +1 -1
- package/dist/collection/components/af-feature-card/af-feature-card.css +219 -0
- package/dist/collection/components/af-feature-card/af-feature-card.js +199 -0
- package/dist/collection/components/af-feature-card/af-feature-card.js.map +1 -0
- package/dist/collection/components/af-feature-grid/af-feature-grid.css +119 -0
- package/dist/collection/components/af-feature-grid/af-feature-grid.js +156 -0
- package/dist/collection/components/af-feature-grid/af-feature-grid.js.map +1 -0
- package/dist/collection/components/af-fieldset/af-fieldset.css +61 -0
- package/dist/collection/components/af-fieldset/af-fieldset.js +109 -0
- package/dist/collection/components/af-fieldset/af-fieldset.js.map +1 -0
- package/dist/collection/components/af-footer/af-footer.css +1 -1
- package/dist/collection/components/af-footer/af-footer.js +1 -1
- package/dist/collection/components/af-footer-column/af-footer-column.js +1 -1
- package/dist/collection/components/af-footer-link/af-footer-link.js +1 -1
- package/dist/collection/components/af-grid-callout/af-grid-callout.css +191 -0
- package/dist/collection/components/af-grid-callout/af-grid-callout.js +191 -0
- package/dist/collection/components/af-grid-callout/af-grid-callout.js.map +1 -0
- package/dist/collection/components/af-heading/af-heading.css +25 -33
- package/dist/collection/components/af-heading/af-heading.js +8 -26
- package/dist/collection/components/af-heading/af-heading.js.map +1 -1
- package/dist/collection/components/af-hero-section/af-hero-section.css +118 -12
- package/dist/collection/components/af-hero-section/af-hero-section.js +102 -10
- package/dist/collection/components/af-hero-section/af-hero-section.js.map +1 -1
- package/dist/collection/components/af-icon/af-icon.css +28 -0
- package/dist/collection/components/af-icon/af-icon.js +116 -0
- package/dist/collection/components/af-icon/af-icon.js.map +1 -0
- package/dist/collection/components/af-icon-box/af-icon-box.css +36 -0
- package/dist/collection/components/af-icon-box/af-icon-box.js +97 -0
- package/dist/collection/components/af-icon-box/af-icon-box.js.map +1 -0
- package/dist/collection/components/af-icon-button/af-icon-button.css +42 -54
- package/dist/collection/components/af-icon-button/af-icon-button.js +8 -5
- package/dist/collection/components/af-icon-button/af-icon-button.js.map +1 -1
- package/dist/collection/components/af-icon-text/af-icon-text.css +43 -0
- package/dist/collection/components/af-icon-text/af-icon-text.js +150 -0
- package/dist/collection/components/af-icon-text/af-icon-text.js.map +1 -0
- package/dist/collection/components/af-illustrated-card/af-illustrated-card.css +99 -0
- package/dist/collection/components/af-illustrated-card/af-illustrated-card.js +115 -0
- package/dist/collection/components/af-illustrated-card/af-illustrated-card.js.map +1 -0
- package/dist/collection/components/af-image/af-image.css +27 -0
- package/dist/collection/components/af-image/af-image.js +65 -0
- package/dist/collection/components/af-image/af-image.js.map +1 -0
- package/dist/collection/components/af-in-page-banner/af-in-page-banner.css +379 -0
- package/dist/collection/components/af-in-page-banner/af-in-page-banner.js +266 -0
- package/dist/collection/components/af-in-page-banner/af-in-page-banner.js.map +1 -0
- package/dist/collection/components/af-input/af-input.css +246 -0
- package/dist/collection/components/af-input/af-input.js +527 -0
- package/dist/collection/components/af-input/af-input.js.map +1 -0
- package/dist/collection/components/af-logo/af-logo.css +4 -3
- package/dist/collection/components/af-logo/af-logo.js +1 -1
- package/dist/collection/components/af-logo/af-logo.js.map +1 -1
- package/dist/collection/components/af-logo-well/af-logo-well.css +15 -4
- package/dist/collection/components/af-logo-well/af-logo-well.js +1 -1
- package/dist/collection/components/af-nav-card/af-nav-card.css +70 -0
- package/dist/collection/components/af-nav-card/af-nav-card.js +138 -0
- package/dist/collection/components/af-nav-card/af-nav-card.js.map +1 -0
- package/dist/collection/components/af-nav-item/af-nav-item.css +161 -28
- package/dist/collection/components/af-nav-item/af-nav-item.js +27 -0
- package/dist/collection/components/af-nav-item/af-nav-item.js.map +1 -1
- package/dist/collection/components/af-nav-menu/af-nav-menu.css +91 -0
- package/dist/collection/components/af-nav-menu/af-nav-menu.js +131 -0
- package/dist/collection/components/af-nav-menu/af-nav-menu.js.map +1 -0
- package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.css +79 -0
- package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.js +129 -0
- package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.js.map +1 -0
- package/dist/collection/components/af-navbar/af-navbar.css +91 -8
- package/dist/collection/components/af-navbar/af-navbar.js +113 -3
- package/dist/collection/components/af-navbar/af-navbar.js.map +1 -1
- package/dist/collection/components/af-number-badge/af-number-badge.css +30 -0
- package/dist/collection/components/af-number-badge/af-number-badge.js +131 -0
- package/dist/collection/components/af-number-badge/af-number-badge.js.map +1 -0
- package/dist/collection/components/af-progress-line/af-progress-line.css +44 -0
- package/dist/collection/components/af-progress-line/af-progress-line.js +86 -0
- package/dist/collection/components/af-progress-line/af-progress-line.js.map +1 -0
- package/dist/collection/components/af-radio/af-radio.css +97 -0
- package/dist/collection/components/af-radio/af-radio.js +150 -0
- package/dist/collection/components/af-radio/af-radio.js.map +1 -0
- package/dist/collection/components/af-section/af-section.css +230 -24
- package/dist/collection/components/af-section/af-section.js +11 -10
- package/dist/collection/components/af-section/af-section.js.map +1 -1
- package/dist/collection/components/af-social-link/af-social-link.js +1 -1
- package/dist/collection/components/af-split-section/af-split-section.css +46 -0
- package/dist/collection/components/af-split-section/af-split-section.js +145 -0
- package/dist/collection/components/af-split-section/af-split-section.js.map +1 -0
- package/dist/collection/components/af-switch/af-switch.css +104 -0
- package/dist/collection/components/af-switch/af-switch.js +155 -0
- package/dist/collection/components/af-switch/af-switch.js.map +1 -0
- package/dist/collection/components/af-tab/af-tab.css +182 -0
- package/dist/collection/components/af-tab/af-tab.js +251 -0
- package/dist/collection/components/af-tab/af-tab.js.map +1 -0
- package/dist/collection/components/af-tab-bar/af-tab-bar.css +87 -0
- package/dist/collection/components/af-tab-bar/af-tab-bar.js +171 -0
- package/dist/collection/components/af-tab-bar/af-tab-bar.js.map +1 -0
- package/dist/collection/components/af-tag/af-tag.css +92 -0
- package/dist/collection/components/af-tag/af-tag.js +126 -0
- package/dist/collection/components/af-tag/af-tag.js.map +1 -0
- package/dist/collection/components/af-testimonial/af-testimonial.css +30 -46
- package/dist/collection/components/af-testimonial/af-testimonial.js +118 -1
- package/dist/collection/components/af-testimonial/af-testimonial.js.map +1 -1
- package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.css +6 -66
- package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js +48 -13
- package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js.map +1 -1
- package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.css +9 -16
- package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js +1 -1
- package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js.map +1 -1
- package/dist/collection/components/af-text/af-text.css +13 -36
- package/dist/collection/components/af-text/af-text.js +10 -28
- package/dist/collection/components/af-text/af-text.js.map +1 -1
- package/dist/collection/components/af-text-image/af-text-image.css +228 -0
- package/dist/collection/components/af-text-image/af-text-image.js +173 -0
- package/dist/collection/components/af-text-image/af-text-image.js.map +1 -0
- package/dist/collection/components/af-text-image-nest/af-text-image-nest.css +110 -0
- package/dist/collection/components/af-text-image-nest/af-text-image-nest.js +71 -0
- package/dist/collection/components/af-text-image-nest/af-text-image-nest.js.map +1 -0
- package/dist/collection/components/af-textarea/af-textarea.css +175 -0
- package/dist/collection/components/af-textarea/af-textarea.js +443 -0
- package/dist/collection/components/af-textarea/af-textarea.js.map +1 -0
- package/dist/collection/components/af-typography-lockup/af-typography-lockup.css +126 -40
- package/dist/collection/components/af-typography-lockup/af-typography-lockup.js +5 -5
- package/dist/collection/components/af-typography-lockup/af-typography-lockup.js.map +1 -1
- package/dist/collection/components/af-video-container/af-video-container.css +102 -0
- package/dist/collection/components/af-video-container/af-video-container.js +142 -0
- package/dist/collection/components/af-video-container/af-video-container.js.map +1 -0
- package/dist/collection/components.js +11 -0
- package/dist/collection/components.js.map +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 +1 -39
- package/dist/components/af-card.js.map +1 -1
- package/dist/components/{af-cta-section.d.ts → af-checkbox.d.ts} +4 -4
- package/dist/components/af-checkbox.js +9 -0
- package/dist/components/af-checkbox.js.map +1 -0
- package/dist/components/af-client-carousel.js +6 -9
- package/dist/components/af-client-carousel.js.map +1 -1
- package/dist/components/af-color-swatch.js +1 -1
- package/dist/components/af-contact-item.js +2 -2
- package/dist/components/af-container.js +1 -1
- package/dist/components/af-feature-accordion.js +4 -4
- package/dist/components/af-feature-accordion.js.map +1 -1
- package/dist/components/af-feature-card.d.ts +11 -0
- package/dist/components/af-feature-card.js +9 -0
- package/dist/components/af-feature-card.js.map +1 -0
- package/dist/components/af-feature-grid.d.ts +11 -0
- package/dist/components/af-feature-grid.js +124 -0
- package/dist/components/af-feature-grid.js.map +1 -0
- package/dist/components/af-fieldset.d.ts +11 -0
- package/dist/components/af-fieldset.js +9 -0
- package/dist/components/af-fieldset.js.map +1 -0
- package/dist/components/af-footer-column.js +2 -2
- package/dist/components/af-footer-link.js +2 -2
- package/dist/components/af-footer.js +3 -3
- package/dist/components/af-footer.js.map +1 -1
- package/dist/components/af-grid-callout.d.ts +11 -0
- package/dist/components/af-grid-callout.js +82 -0
- package/dist/components/af-grid-callout.js.map +1 -0
- package/dist/components/af-heading.js +1 -1
- package/dist/components/af-hero-section.js +25 -9
- package/dist/components/af-hero-section.js.map +1 -1
- package/dist/components/af-icon-box.d.ts +11 -0
- package/dist/components/af-icon-box.js +9 -0
- package/dist/components/af-icon-box.js.map +1 -0
- package/dist/components/af-icon-button.js +1 -1
- package/dist/components/af-icon-text.d.ts +11 -0
- package/dist/components/af-icon-text.js +78 -0
- package/dist/components/af-icon-text.js.map +1 -0
- package/dist/components/af-icon.d.ts +11 -0
- package/dist/components/af-icon.js +9 -0
- package/dist/components/af-icon.js.map +1 -0
- package/dist/components/af-illustrated-card.d.ts +11 -0
- package/dist/components/af-illustrated-card.js +9 -0
- package/dist/components/af-illustrated-card.js.map +1 -0
- package/dist/components/af-image.d.ts +11 -0
- package/dist/components/af-image.js +9 -0
- package/dist/components/af-image.js.map +1 -0
- package/dist/components/af-in-page-banner.d.ts +11 -0
- package/dist/components/af-in-page-banner.js +82 -0
- package/dist/components/af-in-page-banner.js.map +1 -0
- package/dist/components/af-input.d.ts +11 -0
- package/dist/components/af-input.js +9 -0
- package/dist/components/af-input.js.map +1 -0
- package/dist/components/af-logo-well.js +3 -3
- package/dist/components/af-logo-well.js.map +1 -1
- package/dist/components/af-logo.js +1 -1
- package/dist/components/af-nav-card.d.ts +11 -0
- package/dist/components/af-nav-card.js +63 -0
- package/dist/components/af-nav-card.js.map +1 -0
- package/dist/components/af-nav-item.js +1 -1
- package/dist/components/af-nav-menu-nest.d.ts +11 -0
- package/dist/components/af-nav-menu-nest.js +67 -0
- package/dist/components/af-nav-menu-nest.js.map +1 -0
- package/dist/components/af-nav-menu.d.ts +11 -0
- package/dist/components/af-nav-menu.js +66 -0
- package/dist/components/af-nav-menu.js.map +1 -0
- package/dist/components/af-navbar.js +1 -1
- package/dist/components/af-number-badge.d.ts +11 -0
- package/dist/components/af-number-badge.js +66 -0
- package/dist/components/af-number-badge.js.map +1 -0
- package/dist/components/af-progress-line.d.ts +11 -0
- package/dist/components/af-progress-line.js +9 -0
- package/dist/components/af-progress-line.js.map +1 -0
- package/dist/components/af-radio.d.ts +11 -0
- package/dist/components/af-radio.js +9 -0
- package/dist/components/af-radio.js.map +1 -0
- package/dist/components/af-section.js +8 -8
- package/dist/components/af-section.js.map +1 -1
- package/dist/components/af-social-link.js +2 -2
- package/dist/components/af-split-section.d.ts +11 -0
- package/dist/components/af-split-section.js +71 -0
- package/dist/components/af-split-section.js.map +1 -0
- package/dist/components/af-switch.d.ts +11 -0
- package/dist/components/af-switch.js +9 -0
- package/dist/components/af-switch.js.map +1 -0
- package/dist/components/af-tab-bar.d.ts +11 -0
- package/dist/components/af-tab-bar.js +9 -0
- package/dist/components/af-tab-bar.js.map +1 -0
- package/dist/components/af-tab.d.ts +11 -0
- package/dist/components/af-tab.js +9 -0
- package/dist/components/af-tab.js.map +1 -0
- package/dist/components/af-tag.d.ts +11 -0
- package/dist/components/af-tag.js +9 -0
- package/dist/components/af-tag.js.map +1 -0
- package/dist/components/af-testimonial-carousel.js +35 -17
- package/dist/components/af-testimonial-carousel.js.map +1 -1
- package/dist/components/af-testimonial-stat.js +16 -4
- package/dist/components/af-testimonial-stat.js.map +1 -1
- package/dist/components/af-testimonial.js +56 -5
- package/dist/components/af-testimonial.js.map +1 -1
- package/dist/components/af-text-image-nest.d.ts +11 -0
- package/dist/components/af-text-image-nest.js +51 -0
- package/dist/components/af-text-image-nest.js.map +1 -0
- package/dist/components/af-text-image.d.ts +11 -0
- package/dist/components/af-text-image.js +94 -0
- package/dist/components/af-text-image.js.map +1 -0
- package/dist/components/af-text.js +1 -1
- package/dist/components/af-textarea.d.ts +11 -0
- package/dist/components/af-textarea.js +9 -0
- package/dist/components/af-textarea.js.map +1 -0
- package/dist/components/af-typography-lockup.js +1 -1
- package/dist/components/af-video-container.d.ts +11 -0
- package/dist/components/af-video-container.js +70 -0
- package/dist/components/af-video-container.js.map +1 -0
- package/dist/components/index.js +24 -13
- package/dist/components/index.js.map +1 -1
- package/dist/components/{p-BBivIwbE.js → p-6uEhsUaO.js} +3 -3
- package/dist/components/{p-BBivIwbE.js.map → p-6uEhsUaO.js.map} +1 -1
- package/dist/components/{p-PLXzXWgX.js → p-BHKA-yEm.js} +4 -4
- package/dist/components/p-BHKA-yEm.js.map +1 -0
- package/dist/components/p-BMp8QbY-.js +68 -0
- package/dist/components/p-BMp8QbY-.js.map +1 -0
- package/dist/components/p-BRN73McC.js +59 -0
- package/dist/components/p-BRN73McC.js.map +1 -0
- package/dist/components/p-BRsO61_R.js +58 -0
- package/dist/components/p-BRsO61_R.js.map +1 -0
- package/dist/components/p-BXZ7aJQf.js +372 -0
- package/dist/components/p-BXZ7aJQf.js.map +1 -0
- package/dist/components/p-Bh4YP9vE.js +74 -0
- package/dist/components/p-Bh4YP9vE.js.map +1 -0
- package/dist/components/p-Br0VERLB.js +81 -0
- package/dist/components/p-Br0VERLB.js.map +1 -0
- package/dist/components/{p-7a3XpKXs.js → p-ByHIHg3l.js} +4 -4
- package/dist/components/{p-7a3XpKXs.js.map → p-ByHIHg3l.js.map} +1 -1
- package/dist/components/p-C0f6y_zg.js +94 -0
- package/dist/components/p-C0f6y_zg.js.map +1 -0
- package/dist/components/p-CCAq3Zj6.js +68 -0
- package/dist/components/p-CCAq3Zj6.js.map +1 -0
- package/dist/components/p-CZyCImor.js +127 -0
- package/dist/components/p-CZyCImor.js.map +1 -0
- package/dist/components/p-C_M8AOaj.js +65 -0
- package/dist/components/p-C_M8AOaj.js.map +1 -0
- package/dist/components/p-Cqp0DdgH.js +58 -0
- package/dist/components/p-Cqp0DdgH.js.map +1 -0
- package/dist/components/{p-Dt4Fpr3O.js → p-CxngDK-N.js} +122 -8
- package/dist/components/p-CxngDK-N.js.map +1 -0
- package/dist/components/{p-BkEmrXbw.js → p-D3UZ60qM.js} +3 -3
- package/dist/components/{p-BkEmrXbw.js.map → p-D3UZ60qM.js.map} +1 -1
- package/dist/components/p-D99aXp3U.js +35 -0
- package/dist/components/p-D99aXp3U.js.map +1 -0
- package/dist/components/p-DBnL9UHx.js +91 -0
- package/dist/components/p-DBnL9UHx.js.map +1 -0
- package/dist/components/p-DOkvrcIE.js +50 -0
- package/dist/components/p-DOkvrcIE.js.map +1 -0
- package/dist/components/p-DW5DrJlQ.js +70 -0
- package/dist/components/p-DW5DrJlQ.js.map +1 -0
- package/dist/components/p-DZ-qivXD.js +55 -0
- package/dist/components/p-DZ-qivXD.js.map +1 -0
- package/dist/components/p-DhdRcSve.js +89 -0
- package/dist/components/p-DhdRcSve.js.map +1 -0
- package/dist/components/p-Dvi1lz3x.js +53 -0
- package/dist/components/p-Dvi1lz3x.js.map +1 -0
- package/dist/components/p-DzkSL2bi.js +141 -0
- package/dist/components/p-DzkSL2bi.js.map +1 -0
- package/dist/components/p-JepBVz99.js +71 -0
- package/dist/components/p-JepBVz99.js.map +1 -0
- package/dist/components/p-_bQXTXUb.js +98 -0
- package/dist/components/p-_bQXTXUb.js.map +1 -0
- package/dist/components/p-l95vl6T1.js +108 -0
- package/dist/components/p-l95vl6T1.js.map +1 -0
- package/dist/components/p-wwnR-hlX.js +52 -0
- package/dist/components/p-wwnR-hlX.js.map +1 -0
- package/dist/components/p-xDRMXxWJ.js +37 -0
- package/dist/components/p-xDRMXxWJ.js.map +1 -0
- package/dist/esm/af-aspect-ratio.entry.js +2 -2
- package/dist/esm/af-aspect-ratio.entry.js.map +1 -1
- package/dist/esm/af-button-group.entry.js +2 -2
- package/dist/esm/af-button.entry.js +25 -12
- package/dist/esm/af-button.entry.js.map +1 -1
- package/dist/esm/af-card.entry.js +17 -7
- package/dist/esm/af-card.entry.js.map +1 -1
- package/dist/esm/af-checkbox.entry.js +56 -0
- package/dist/esm/af-checkbox.entry.js.map +1 -0
- package/dist/esm/af-client-carousel.entry.js +5 -7
- package/dist/esm/af-client-carousel.entry.js.map +1 -1
- package/dist/esm/af-color-swatch.entry.js +1 -1
- package/dist/esm/af-contact-item.entry.js +2 -2
- package/dist/esm/af-container.entry.js +1 -1
- package/dist/esm/af-feature-accordion.entry.js +4 -4
- package/dist/esm/af-feature-accordion.entry.js.map +1 -1
- package/dist/esm/af-feature-card.entry.js +57 -0
- package/dist/esm/af-feature-card.entry.js.map +1 -0
- package/dist/esm/af-feature-grid.entry.js +91 -0
- package/dist/esm/af-feature-grid.entry.js.map +1 -0
- package/dist/esm/af-fieldset.entry.js +35 -0
- package/dist/esm/af-fieldset.entry.js.map +1 -0
- package/dist/esm/af-footer-column.entry.js +2 -2
- package/dist/esm/af-footer-link.entry.js +2 -2
- package/dist/esm/af-footer.entry.js +3 -3
- package/dist/esm/af-footer.entry.js.map +1 -1
- package/dist/esm/af-grid-callout.entry.js +49 -0
- package/dist/esm/af-grid-callout.entry.js.map +1 -0
- 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 +69 -20
- package/dist/esm/af-hero-section.entry.js +11 -5
- package/dist/esm/af-hero-section.entry.js.map +1 -1
- package/dist/esm/af-icon-box.entry.js +28 -0
- package/dist/esm/af-icon-box.entry.js.map +1 -0
- package/dist/esm/af-icon-button.entry.js +6 -3
- package/dist/esm/af-icon-button.entry.js.map +1 -1
- package/dist/esm/af-icon-text.entry.js +34 -0
- package/dist/esm/af-icon-text.entry.js.map +1 -0
- package/dist/esm/af-icon.entry.js +349 -0
- package/dist/esm/af-icon.entry.js.map +1 -0
- package/dist/esm/af-illustrated-card.entry.js +34 -0
- package/dist/esm/af-illustrated-card.entry.js.map +1 -0
- package/dist/esm/af-image.entry.js +16 -0
- package/dist/esm/af-image.entry.js.map +1 -0
- package/dist/esm/af-in-page-banner.entry.js +45 -0
- package/dist/esm/af-in-page-banner.entry.js.map +1 -0
- package/dist/esm/af-input.entry.js +102 -0
- package/dist/esm/af-input.entry.js.map +1 -0
- package/dist/esm/af-logo-well.entry.js +3 -3
- package/dist/esm/af-logo-well.entry.js.map +1 -1
- package/dist/esm/af-nav-card.entry.js +35 -0
- package/dist/esm/af-nav-card.entry.js.map +1 -0
- package/dist/esm/af-nav-menu-nest.entry.js +41 -0
- package/dist/esm/af-nav-menu-nest.entry.js.map +1 -0
- package/dist/esm/af-nav-menu.entry.js +39 -0
- package/dist/esm/af-nav-menu.entry.js.map +1 -0
- package/dist/esm/af-number-badge.entry.js +40 -0
- package/dist/esm/af-number-badge.entry.js.map +1 -0
- package/dist/esm/af-progress-line.entry.js +31 -0
- package/dist/esm/af-progress-line.entry.js.map +1 -0
- package/dist/esm/af-radio.entry.js +41 -0
- package/dist/esm/af-radio.entry.js.map +1 -0
- package/dist/esm/af-section.entry.js +6 -6
- package/dist/esm/af-section.entry.js.map +1 -1
- package/dist/esm/af-social-link.entry.js +2 -2
- package/dist/esm/af-split-section.entry.js +39 -0
- package/dist/esm/af-split-section.entry.js.map +1 -0
- package/dist/esm/af-switch.entry.js +46 -0
- package/dist/esm/af-switch.entry.js.map +1 -0
- package/dist/esm/af-tab-bar.entry.js +86 -0
- package/dist/esm/af-tab-bar.entry.js.map +1 -0
- package/dist/esm/af-tab.entry.js +62 -0
- package/dist/esm/af-tab.entry.js.map +1 -0
- package/dist/esm/af-tag.entry.js +35 -0
- package/dist/esm/af-tag.entry.js.map +1 -0
- package/dist/esm/af-testimonial-carousel.entry.js +27 -15
- package/dist/esm/af-testimonial-carousel.entry.js.map +1 -1
- package/dist/esm/af-testimonial-stat.entry.js +3 -3
- package/dist/esm/af-testimonial-stat.entry.js.map +1 -1
- package/dist/esm/af-testimonial.entry.js +27 -3
- package/dist/esm/af-testimonial.entry.js.map +1 -1
- package/dist/esm/af-text-image-nest.entry.js +28 -0
- package/dist/esm/af-text-image-nest.entry.js.map +1 -0
- package/dist/esm/af-text-image.entry.js +61 -0
- package/dist/esm/af-text-image.entry.js.map +1 -0
- package/dist/esm/af-textarea.entry.js +91 -0
- package/dist/esm/af-textarea.entry.js.map +1 -0
- package/dist/esm/af-typography-lockup.entry.js +7 -7
- package/dist/esm/af-typography-lockup.entry.js.map +1 -1
- package/dist/esm/af-video-container.entry.js +33 -0
- package/dist/esm/af-video-container.entry.js.map +1 -0
- package/dist/esm/affinda.js +3 -3
- package/dist/esm/{index-DI7b0bCy.js → index-BmU_CFQ4.js} +130 -7
- package/dist/esm/index-BmU_CFQ4.js.map +1 -0
- package/dist/esm/index.js +12 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/types/components/af-button/af-button.d.ts +22 -9
- package/dist/types/components/af-card/af-card.d.ts +15 -8
- package/dist/types/components/af-checkbox/af-checkbox.d.ts +40 -0
- package/dist/types/components/af-client-carousel/af-client-carousel.d.ts +10 -5
- package/dist/types/components/af-feature-accordion/af-feature-accordion.d.ts +13 -3
- package/dist/types/components/af-feature-card/af-feature-card.d.ts +49 -0
- package/dist/types/components/af-feature-grid/af-feature-grid.d.ts +32 -0
- package/dist/types/components/af-fieldset/af-fieldset.d.ts +23 -0
- package/dist/types/components/af-grid-callout/af-grid-callout.d.ts +57 -0
- package/dist/types/components/af-heading/af-heading.d.ts +5 -2
- package/dist/types/components/af-hero-section/af-hero-section.d.ts +18 -3
- package/dist/types/components/af-icon/af-icon.d.ts +28 -0
- package/dist/types/components/af-icon-box/af-icon-box.d.ts +27 -0
- package/dist/types/components/af-icon-button/af-icon-button.d.ts +5 -2
- package/dist/types/components/af-icon-text/af-icon-text.d.ts +44 -0
- package/dist/types/components/af-illustrated-card/af-illustrated-card.d.ts +28 -0
- package/dist/types/components/af-image/af-image.d.ts +15 -0
- package/dist/types/components/af-in-page-banner/af-in-page-banner.d.ts +56 -0
- package/dist/types/components/af-input/af-input.d.ts +110 -0
- package/dist/types/components/af-nav-card/af-nav-card.d.ts +34 -0
- package/dist/types/components/af-nav-item/af-nav-item.d.ts +6 -0
- package/dist/types/components/af-nav-menu/af-nav-menu.d.ts +28 -0
- package/dist/types/components/af-nav-menu-nest/af-nav-menu-nest.d.ts +42 -0
- package/dist/types/components/af-navbar/af-navbar.d.ts +31 -1
- package/dist/types/components/af-number-badge/af-number-badge.d.ts +29 -0
- package/dist/types/components/af-progress-line/af-progress-line.d.ts +18 -0
- package/dist/types/components/af-radio/af-radio.d.ts +33 -0
- package/dist/types/components/af-section/af-section.d.ts +4 -3
- package/dist/types/components/af-split-section/af-split-section.d.ts +20 -0
- package/dist/types/components/af-switch/af-switch.d.ts +32 -0
- package/dist/types/components/af-tab/af-tab.d.ts +61 -0
- package/dist/types/components/af-tab-bar/af-tab-bar.d.ts +43 -0
- package/dist/types/components/af-tag/af-tag.d.ts +33 -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 +17 -0
- package/dist/types/components/af-text/af-text.d.ts +6 -3
- package/dist/types/components/af-text-image/af-text-image.d.ts +30 -0
- package/dist/types/components/af-text-image-nest/af-text-image-nest.d.ts +21 -0
- package/dist/types/components/af-textarea/af-textarea.d.ts +92 -0
- package/dist/types/components/af-video-container/af-video-container.d.ts +45 -0
- package/dist/types/components.d.ts +3414 -638
- package/package.json +7 -6
- package/dist/affinda/af-cta-section.entry.esm.js.map +0 -1
- package/dist/affinda/p-050f98cd.entry.js +0 -2
- package/dist/affinda/p-07990b1f.entry.js +0 -2
- package/dist/affinda/p-4a39ddec.entry.js +0 -2
- package/dist/affinda/p-4a39ddec.entry.js.map +0 -1
- package/dist/affinda/p-52f7ea33.entry.js +0 -2
- package/dist/affinda/p-924e6def.entry.js +0 -2
- package/dist/affinda/p-924e6def.entry.js.map +0 -1
- package/dist/affinda/p-954963fa.entry.js +0 -2
- package/dist/affinda/p-954963fa.entry.js.map +0 -1
- package/dist/affinda/p-DI7b0bCy.js +0 -3
- package/dist/affinda/p-DI7b0bCy.js.map +0 -1
- package/dist/affinda/p-ac7efb48.entry.js +0 -2
- package/dist/affinda/p-ac7efb48.entry.js.map +0 -1
- package/dist/affinda/p-b67bbaf7.entry.js +0 -2
- package/dist/affinda/p-b67bbaf7.entry.js.map +0 -1
- package/dist/affinda/p-b6885a9a.entry.js +0 -2
- package/dist/affinda/p-b6885a9a.entry.js.map +0 -1
- package/dist/affinda/p-b7c63852.entry.js +0 -2
- package/dist/affinda/p-b7c63852.entry.js.map +0 -1
- package/dist/affinda/p-b7efbfff.entry.js +0 -2
- package/dist/affinda/p-b7efbfff.entry.js.map +0 -1
- package/dist/affinda/p-bf4543ff.entry.js +0 -2
- package/dist/affinda/p-c2b6199e.entry.js +0 -2
- package/dist/affinda/p-c2b6199e.entry.js.map +0 -1
- package/dist/affinda/p-c5aba33f.entry.js +0 -2
- package/dist/affinda/p-ce89c4f1.entry.js +0 -2
- package/dist/affinda/p-d3b2ab0e.entry.js +0 -2
- package/dist/affinda/p-de52b175.entry.js +0 -2
- package/dist/affinda/p-e367e42b.entry.js +0 -2
- package/dist/affinda/p-e367e42b.entry.js.map +0 -1
- package/dist/cjs/af-cta-section.cjs.entry.js +0 -32
- package/dist/cjs/af-cta-section.entry.cjs.js.map +0 -1
- package/dist/cjs/index-DfEVhbS6.js.map +0 -1
- package/dist/collection/components/af-cta-section/af-cta-section.css +0 -175
- package/dist/collection/components/af-cta-section/af-cta-section.js +0 -183
- package/dist/collection/components/af-cta-section/af-cta-section.js.map +0 -1
- package/dist/components/af-cta-section.js +0 -59
- package/dist/components/af-cta-section.js.map +0 -1
- package/dist/components/p-BKGrl8ua.js +0 -77
- package/dist/components/p-BKGrl8ua.js.map +0 -1
- package/dist/components/p-BTEblSAo.js +0 -63
- package/dist/components/p-BTEblSAo.js.map +0 -1
- package/dist/components/p-BekWfVfB.js +0 -66
- package/dist/components/p-BekWfVfB.js.map +0 -1
- package/dist/components/p-Bg7dSc4D.js +0 -54
- package/dist/components/p-Bg7dSc4D.js.map +0 -1
- package/dist/components/p-D4s4u7tL.js +0 -35
- package/dist/components/p-D4s4u7tL.js.map +0 -1
- package/dist/components/p-DqOwXTsH.js +0 -68
- package/dist/components/p-DqOwXTsH.js.map +0 -1
- package/dist/components/p-Dt4Fpr3O.js.map +0 -1
- package/dist/components/p-PLXzXWgX.js.map +0 -1
- package/dist/components/p-Thu9mUEn.js +0 -41
- package/dist/components/p-Thu9mUEn.js.map +0 -1
- package/dist/components/p-emB0l5gm.js +0 -68
- package/dist/components/p-emB0l5gm.js.map +0 -1
- package/dist/esm/af-cta-section.entry.js +0 -30
- package/dist/esm/af-cta-section.entry.js.map +0 -1
- package/dist/esm/index-DI7b0bCy.js.map +0 -1
- package/dist/types/components/af-cta-section/af-cta-section.d.ts +0 -21
- /package/dist/affinda/{p-de52b175.entry.js.map → p-1d9e532f.entry.js.map} +0 -0
- /package/dist/affinda/{p-a49dc8ac.entry.js.map → p-31d4c1a4.entry.js.map} +0 -0
- /package/dist/affinda/{p-c5aba33f.entry.js.map → p-53ae16fe.entry.js.map} +0 -0
- /package/dist/affinda/{p-dec4c4d5.entry.js.map → p-72f02343.entry.js.map} +0 -0
- /package/dist/affinda/{p-97f9f774.entry.js.map → p-96eac3af.entry.js.map} +0 -0
- /package/dist/affinda/{p-3a9646e6.entry.js.map → p-c11088fa.entry.js.map} +0 -0
- /package/dist/affinda/{p-f8ac0120.entry.js.map → p-e5af21c2.entry.js.map} +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-ybEiHT0b.js');
|
|
4
4
|
|
|
5
|
-
const afFeatureAccordionCss = ".sc-af-feature-accordion-h{display:block;width:100%}.feature-accordion.sc-af-feature-accordion{
|
|
5
|
+
const afFeatureAccordionCss = ".sc-af-feature-accordion-h{display:block;width:100%}.feature-accordion.sc-af-feature-accordion{padding:0 24px;--_heading-color:var(--af-typography-heading-primary, var(--colour-brand-inkwell, #14343b));--_body-color:var(--af-typography-body-default, var(--colour-inkwell-400, #2b484f));--_border-color:var(--af-background-border-default, rgba(20, 52, 59, 0.12));--_level-1-bg:var(--af-background-level-1, var(--colour-mistgreen-300, #dde6e3))}.feature-accordion__heading.sc-af-feature-accordion{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-weight:400;font-size:clamp(36px, 5vw, 52px);line-height:1.05;letter-spacing:-0.025em;color:var(--_heading-color);margin:0 0 56px 0}.feature-accordion__content.sc-af-feature-accordion{display:flex;gap:48px}.feature-accordion__list.sc-af-feature-accordion{display:flex;flex-direction:column;flex:1;min-width:0}.accordion-item.sc-af-feature-accordion{border-bottom:1px solid var(--_border-color)}.accordion-item.sc-af-feature-accordion:first-child{border-top:1px solid var(--_border-color)}.accordion-item__header.sc-af-feature-accordion{display:flex;align-items:center;justify-content:space-between;width:100%;padding:24px 0;background:none;border:none;cursor:pointer;text-align:left;gap:16px}.accordion-item__header.sc-af-feature-accordion:hover .accordion-item__title.sc-af-feature-accordion{color:var(--_heading-color)}.accordion-item__title.sc-af-feature-accordion{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-weight:500;font-size:22px;line-height:1.25;color:var(--_heading-color);margin:0;flex:1;transition:color 0.2s ease}.accordion-item.sc-af-feature-accordion:not(.accordion-item--expanded) .accordion-item__title.sc-af-feature-accordion{opacity:0.7}.accordion-item__icon.sc-af-feature-accordion{flex-shrink:0;width:24px;height:24px;color:var(--_heading-color);transition:transform 0.2s ease}.accordion-item.sc-af-feature-accordion:not(.accordion-item--expanded) .accordion-item__icon.sc-af-feature-accordion{opacity:0.5}.accordion-item__content.sc-af-feature-accordion{overflow:hidden;transition:max-height 0.3s ease, opacity 0.3s ease}.accordion-item__description.sc-af-feature-accordion{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-weight:400;font-size:17px;line-height:1.6;color:var(--_body-color);margin:0 0 20px 0;padding-right:40px;opacity:0.85}.accordion-item__timer-track.sc-af-feature-accordion{height:3px;background-color:var(--_border-color);border-radius:2px;margin-bottom:8px;overflow:hidden;display:flex;justify-content:flex-start}.accordion-item__timer-progress.sc-af-feature-accordion{height:100%;background-color:var(--colour-brand-ice, #a6fffb);border-radius:2px;transition:width 0.05s linear}.feature-accordion__image-container.sc-af-feature-accordion{display:flex;align-items:center;justify-content:center;background-color:var(--_level-1-bg);border-radius:20px;overflow:hidden;flex:1;min-width:0}.feature-accordion__image-wrapper.sc-af-feature-accordion{display:flex;align-items:center;justify-content:center;width:100%;padding:32px}.feature-accordion__image.sc-af-feature-accordion{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:12px;box-shadow:0 8px 32px rgba(0, 0, 0, 0.12)}.feature-accordion__image-placeholder.sc-af-feature-accordion{width:100%;height:100%;display:flex;align-items:center;justify-content:center}@media (max-width: 1024px){.feature-accordion__content.sc-af-feature-accordion{gap:32px}.feature-accordion__heading.sc-af-feature-accordion{margin-bottom:40px}.accordion-item__title.sc-af-feature-accordion{font-size:20px}}@media (max-width: 768px){.feature-accordion__content.sc-af-feature-accordion{flex-direction:column;gap:32px}.feature-accordion__image-container.sc-af-feature-accordion{order:-1;min-height:280px;flex:none}.feature-accordion__list.sc-af-feature-accordion{flex:none}.accordion-item__title.sc-af-feature-accordion{font-size:18px}.accordion-item__description.sc-af-feature-accordion{font-size:15px;padding-right:0}}";
|
|
6
6
|
|
|
7
7
|
const AfFeatureAccordion = class {
|
|
8
8
|
constructor(hostRef) {
|
|
@@ -89,13 +89,13 @@ const AfFeatureAccordion = class {
|
|
|
89
89
|
render() {
|
|
90
90
|
const items = this.getItems();
|
|
91
91
|
const currentItem = items[this.expandedIndex];
|
|
92
|
-
return (index.h(index.Host, { key: '
|
|
92
|
+
return (index.h(index.Host, { key: '8285d5116d64b9f02d758fa8e0ecb8c4129636d0' }, index.h("div", { key: '53894f00e6ba9a9900fa63fe199e4448d21e8886', class: "feature-accordion" }, index.h("div", { key: 'e50c879453d39367bd88e02cc5756a59292b7b71', class: "feature-accordion__container" }, index.h("h2", { key: 'd2c797f6d1feddafd01b2b933e73e3d71063ae1d', class: "feature-accordion__heading" }, this.heading), index.h("div", { key: '48ba662a3cd7ab981fd947c4063f81e6ef94773f', class: "feature-accordion__content" }, index.h("div", { key: '05b190936f6c4a9e849de1b724a577dbf33aba12', class: "feature-accordion__list" }, items.map((item, index$1) => (index.h("div", { class: {
|
|
93
93
|
'accordion-item': true,
|
|
94
94
|
'accordion-item--expanded': this.expandedIndex === index$1
|
|
95
95
|
}, key: index$1 }, index.h("button", { class: "accordion-item__header", onClick: () => this.handleItemClick(index$1), "aria-expanded": this.expandedIndex === index$1 ? 'true' : 'false' }, index.h("h4", { class: "accordion-item__title" }, item.title), index.h("span", { class: "accordion-item__icon" }, this.expandedIndex === index$1 ? (index.h("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, index.h("path", { d: "M5 12H19", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round" }))) : (index.h("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, index.h("path", { d: "M12 5V19M5 12H19", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round" }))))), index.h("div", { class: "accordion-item__content", style: {
|
|
96
96
|
maxHeight: this.expandedIndex === index$1 ? '200px' : '0',
|
|
97
97
|
opacity: this.expandedIndex === index$1 ? '1' : '0'
|
|
98
|
-
} }, index.h("p", { class: "accordion-item__description" }, item.description), this.expandedIndex === index$1 && this.autoCycle && (index.h("div", { class: "accordion-item__timer-track" }, index.h("div", { class: "accordion-item__timer-progress", style: { width: `${this.timerProgress}%` } })))))))), index.h("div", { key: '
|
|
98
|
+
} }, index.h("p", { class: "accordion-item__description" }, item.description), this.expandedIndex === index$1 && this.autoCycle && (index.h("div", { class: "accordion-item__timer-track" }, index.h("div", { class: "accordion-item__timer-progress", style: { width: `${this.timerProgress}%` } })))))))), index.h("div", { key: '34a3497894ab6aa63acafa62cc8a7029848731e8', class: "feature-accordion__image-container" }, index.h("div", { key: '3a60c7ffb55e49194d2d3dfb9a324382f1bd2e6a', class: "feature-accordion__image-wrapper" }, currentItem?.imageUrl && (index.h("img", { key: '1120770253d6442130baea4e74deae1694a36bf7', src: currentItem.imageUrl, alt: currentItem.imageAlt || currentItem.title, class: "feature-accordion__image" })), !currentItem?.imageUrl && (index.h("div", { key: '50a4b4201d0141f018d7e9ce2e03e2cfc090e2fc', class: "feature-accordion__image-placeholder" }, index.h("slot", { key: '2d029a56bc680d3f40be5c18841a5477de9c3862', name: "image" }))))))))));
|
|
99
99
|
}
|
|
100
100
|
get el() { return index.getElement(this); }
|
|
101
101
|
static get watchers() { return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"af-feature-accordion.entry.cjs.js","sources":["src/components/af-feature-accordion/af-feature-accordion.css?tag=af-feature-accordion&encapsulation=scoped","src/components/af-feature-accordion/af-feature-accordion.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.feature-accordion {\n background-color: var(--colour-background-level1, #E8EFED);\n padding: 80px 0;\n}\n\n.feature-accordion__container {\n max-width: 1280px;\n margin: 0 auto;\n padding: 0 40px;\n}\n\n.feature-accordion__heading {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: 400;\n font-size: clamp(36px, 5vw, 52px);\n line-height: 1.05;\n letter-spacing: -0.025em;\n color: var(--colour-brand-inkwell, #14343B);\n margin: 0 0 56px 0;\n}\n\n.feature-accordion__content {\n display: flex;\n gap: 48px;\n}\n\n/* Accordion List */\n.feature-accordion__list {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-width: 0;\n}\n\n/* Accordion Item */\n.accordion-item {\n border-bottom: 1px solid rgba(20, 52, 59, 0.12);\n}\n\n.accordion-item:first-child {\n border-top: 1px solid rgba(20, 52, 59, 0.12);\n}\n\n.accordion-item__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 24px 0;\n background: none;\n border: none;\n cursor: pointer;\n text-align: left;\n gap: 16px;\n}\n\n.accordion-item__header:hover .accordion-item__title {\n color: var(--colour-brand-inkwell, #14343B);\n}\n\n.accordion-item__title {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: 500;\n font-size: 22px;\n line-height: 1.25;\n color: var(--colour-brand-inkwell, #14343B);\n margin: 0;\n flex: 1;\n transition: color 0.2s ease;\n}\n\n/* Collapsed items have lighter text */\n.accordion-item:not(.accordion-item--expanded) .accordion-item__title {\n color: rgba(20, 52, 59, 0.7);\n}\n\n.accordion-item__icon {\n flex-shrink: 0;\n width: 24px;\n height: 24px;\n color: var(--colour-brand-inkwell, #14343B);\n transition: transform 0.2s ease;\n}\n\n.accordion-item:not(.accordion-item--expanded) .accordion-item__icon {\n color: rgba(20, 52, 59, 0.5);\n}\n\n.accordion-item__content {\n overflow: hidden;\n transition: max-height 0.3s ease, opacity 0.3s ease;\n}\n\n.accordion-item__description {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: 400;\n font-size: 17px;\n line-height: 1.6;\n color: rgba(20, 52, 59, 0.85);\n margin: 0 0 20px 0;\n padding-right: 40px;\n}\n\n/* Timer track - the progress bar at the bottom of expanded items */\n.accordion-item__timer-track {\n height: 3px;\n background-color: rgba(20, 52, 59, 0.1);\n border-radius: 2px;\n margin-bottom: 8px;\n overflow: hidden;\n /* Right-align the progress bar so it drains from right to left */\n display: flex;\n justify-content: flex-start;\n}\n\n.accordion-item__timer-progress {\n height: 100%;\n background-color: var(--colour-brand-teal, #00B5AD);\n border-radius: 2px;\n /* Smooth animation for progress */\n transition: width 0.05s linear;\n}\n\n/* Image Container - stretches full height to align with accordion */\n.feature-accordion__image-container {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: #B8C9C5;\n border-radius: 20px;\n overflow: hidden;\n /* Take up remaining space and stretch full height */\n flex: 1;\n min-width: 0;\n}\n\n.feature-accordion__image-wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n padding: 32px;\n}\n\n.feature-accordion__image {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n object-fit: contain;\n border-radius: 12px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);\n}\n\n.feature-accordion__image-placeholder {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Tablet */\n@media (max-width: 1024px) {\n .feature-accordion {\n padding: 60px 0;\n }\n\n .feature-accordion__container {\n padding: 0 24px;\n }\n\n .feature-accordion__content {\n gap: 32px;\n }\n\n .feature-accordion__heading {\n margin-bottom: 40px;\n }\n\n .accordion-item__title {\n font-size: 20px;\n }\n}\n\n/* Mobile */\n@media (max-width: 768px) {\n .feature-accordion {\n padding: 48px 0;\n }\n\n .feature-accordion__content {\n flex-direction: column;\n gap: 32px;\n }\n\n .feature-accordion__image-container {\n order: -1;\n min-height: 280px;\n flex: none;\n }\n\n .feature-accordion__list {\n flex: none;\n }\n\n .accordion-item__title {\n font-size: 18px;\n }\n\n .accordion-item__description {\n font-size: 15px;\n padding-right: 0;\n }\n}\n","import { Component, h, Host, Prop, State, Element, Watch } from '@stencil/core';\n\nexport interface FeatureAccordionItem {\n title: string;\n description: string;\n imageUrl?: string;\n imageAlt?: string;\n}\n\n/**\n * Feature accordion component with expandable items and accompanying image\n * Used for showcasing product features with visual examples\n * Features auto-cycling through items with a progress timer\n */\n@Component({\n tag: 'af-feature-accordion',\n styleUrl: 'af-feature-accordion.css',\n shadow: false,\n scoped: true,\n})\nexport class AfFeatureAccordion {\n @Element() el!: HTMLElement;\n\n /** Section heading */\n @Prop() heading: string = 'Give AI agents your paperwork';\n\n /** JSON string of accordion items */\n @Prop() items: string = '[]';\n\n /** Auto-cycle interval in milliseconds (default: 6000ms = 6 seconds) */\n @Prop() cycleInterval: number = 6000;\n\n /** Whether auto-cycling is enabled */\n @Prop() autoCycle: boolean = true;\n\n /** Currently expanded item index */\n @State() expandedIndex: number = 0;\n\n /** Progress of current timer (0-100) */\n @State() timerProgress: number = 100;\n\n private progressTimer: number | null = null;\n private progressStartTime: number = 0;\n\n componentDidLoad() {\n if (this.autoCycle) {\n this.startCycling();\n }\n }\n\n disconnectedCallback() {\n this.stopCycling();\n }\n\n @Watch('autoCycle')\n handleAutoCycleChange(newValue: boolean) {\n if (newValue) {\n this.startCycling();\n } else {\n this.stopCycling();\n }\n }\n\n private getItems(): FeatureAccordionItem[] {\n try {\n return JSON.parse(this.items);\n } catch {\n return [];\n }\n }\n\n private startCycling() {\n this.stopCycling();\n this.progressStartTime = Date.now();\n this.timerProgress = 100;\n \n // Progress animation frame\n const updateProgress = () => {\n const elapsed = Date.now() - this.progressStartTime;\n const remaining = this.cycleInterval - elapsed;\n \n if (remaining <= 0) {\n this.moveToNextItem();\n } else {\n this.timerProgress = (remaining / this.cycleInterval) * 100;\n this.progressTimer = requestAnimationFrame(updateProgress);\n }\n };\n \n this.progressTimer = requestAnimationFrame(updateProgress);\n }\n\n private stopCycling() {\n if (this.progressTimer) {\n cancelAnimationFrame(this.progressTimer);\n this.progressTimer = null;\n }\n }\n\n private moveToNextItem() {\n const items = this.getItems();\n if (items.length === 0) return;\n \n this.expandedIndex = (this.expandedIndex + 1) % items.length;\n // Restart the cycling timer for the new item\n this.startCycling();\n }\n\n private handleItemClick(index: number) {\n // Reset timer when user clicks\n this.expandedIndex = index;\n // Restart the cycling timer for the clicked item\n if (this.autoCycle) {\n this.startCycling();\n }\n }\n\n render() {\n const items = this.getItems();\n const currentItem = items[this.expandedIndex];\n\n return (\n <Host>\n <div class=\"feature-accordion\">\n <div class=\"feature-accordion__container\">\n <h2 class=\"feature-accordion__heading\">{this.heading}</h2>\n \n <div class=\"feature-accordion__content\">\n {/* Left side - Accordion */}\n <div class=\"feature-accordion__list\">\n {items.map((item, index) => (\n <div \n class={{\n 'accordion-item': true,\n 'accordion-item--expanded': this.expandedIndex === index\n }}\n key={index}\n >\n <button \n class=\"accordion-item__header\"\n onClick={() => this.handleItemClick(index)}\n aria-expanded={this.expandedIndex === index ? 'true' : 'false'}\n >\n <h4 class=\"accordion-item__title\">{item.title}</h4>\n <span class=\"accordion-item__icon\">\n {this.expandedIndex === index ? (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 12H19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>\n ) : (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12 5V19M5 12H19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>\n )}\n </span>\n </button>\n <div \n class=\"accordion-item__content\"\n style={{ \n maxHeight: this.expandedIndex === index ? '200px' : '0',\n opacity: this.expandedIndex === index ? '1' : '0'\n }}\n >\n <p class=\"accordion-item__description\">{item.description}</p>\n {this.expandedIndex === index && this.autoCycle && (\n <div class=\"accordion-item__timer-track\">\n <div \n class=\"accordion-item__timer-progress\"\n style={{ width: `${this.timerProgress}%` }}\n ></div>\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n\n {/* Right side - Image */}\n <div class=\"feature-accordion__image-container\">\n <div class=\"feature-accordion__image-wrapper\">\n {currentItem?.imageUrl && (\n <img \n src={currentItem.imageUrl} \n alt={currentItem.imageAlt || currentItem.title}\n class=\"feature-accordion__image\"\n />\n )}\n {!currentItem?.imageUrl && (\n <div class=\"feature-accordion__image-placeholder\">\n <slot name=\"image\"></slot>\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"names":["h","Host","index"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"af-feature-accordion.entry.cjs.js","sources":["src/components/af-feature-accordion/af-feature-accordion.css?tag=af-feature-accordion&encapsulation=scoped","src/components/af-feature-accordion/af-feature-accordion.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.feature-accordion {\n /* Inherits theme from parent Section via CSS custom properties */\n padding: 0 24px;\n \n /* Internal custom properties that inherit from parent Section's theme */\n --_heading-color: var(--af-typography-heading-primary, var(--colour-brand-inkwell, #14343b));\n --_body-color: var(--af-typography-body-default, var(--colour-inkwell-400, #2b484f));\n --_border-color: var(--af-background-border-default, rgba(20, 52, 59, 0.12));\n --_level-1-bg: var(--af-background-level-1, var(--colour-mistgreen-300, #dde6e3));\n}\n\n.feature-accordion__heading {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: 400;\n font-size: clamp(36px, 5vw, 52px);\n line-height: 1.05;\n letter-spacing: -0.025em;\n color: var(--_heading-color);\n margin: 0 0 56px 0;\n}\n\n.feature-accordion__content {\n display: flex;\n gap: 48px;\n}\n\n/* Accordion List */\n.feature-accordion__list {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-width: 0;\n}\n\n/* Accordion Item */\n.accordion-item {\n border-bottom: 1px solid var(--_border-color);\n}\n\n.accordion-item:first-child {\n border-top: 1px solid var(--_border-color);\n}\n\n.accordion-item__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 24px 0;\n background: none;\n border: none;\n cursor: pointer;\n text-align: left;\n gap: 16px;\n}\n\n.accordion-item__header:hover .accordion-item__title {\n color: var(--_heading-color);\n}\n\n.accordion-item__title {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: 500;\n font-size: 22px;\n line-height: 1.25;\n color: var(--_heading-color);\n margin: 0;\n flex: 1;\n transition: color 0.2s ease;\n}\n\n/* Collapsed items have lighter text */\n.accordion-item:not(.accordion-item--expanded) .accordion-item__title {\n opacity: 0.7;\n}\n\n.accordion-item__icon {\n flex-shrink: 0;\n width: 24px;\n height: 24px;\n color: var(--_heading-color);\n transition: transform 0.2s ease;\n}\n\n.accordion-item:not(.accordion-item--expanded) .accordion-item__icon {\n opacity: 0.5;\n}\n\n.accordion-item__content {\n overflow: hidden;\n transition: max-height 0.3s ease, opacity 0.3s ease;\n}\n\n.accordion-item__description {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: 400;\n font-size: 17px;\n line-height: 1.6;\n color: var(--_body-color);\n margin: 0 0 20px 0;\n padding-right: 40px;\n opacity: 0.85;\n}\n\n/* Timer track - the progress bar at the bottom of expanded items */\n.accordion-item__timer-track {\n height: 3px;\n background-color: var(--_border-color);\n border-radius: 2px;\n margin-bottom: 8px;\n overflow: hidden;\n display: flex;\n justify-content: flex-start;\n}\n\n.accordion-item__timer-progress {\n height: 100%;\n background-color: var(--colour-brand-ice, #a6fffb);\n border-radius: 2px;\n transition: width 0.05s linear;\n}\n\n/* Image Container - stretches full height to align with accordion */\n.feature-accordion__image-container {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--_level-1-bg);\n border-radius: 20px;\n overflow: hidden;\n flex: 1;\n min-width: 0;\n}\n\n.feature-accordion__image-wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n padding: 32px;\n}\n\n.feature-accordion__image {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n object-fit: contain;\n border-radius: 12px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);\n}\n\n.feature-accordion__image-placeholder {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Tablet */\n@media (max-width: 1024px) {\n .feature-accordion__content {\n gap: 32px;\n }\n\n .feature-accordion__heading {\n margin-bottom: 40px;\n }\n\n .accordion-item__title {\n font-size: 20px;\n }\n}\n\n/* Mobile */\n@media (max-width: 768px) {\n .feature-accordion__content {\n flex-direction: column;\n gap: 32px;\n }\n\n .feature-accordion__image-container {\n order: -1;\n min-height: 280px;\n flex: none;\n }\n\n .feature-accordion__list {\n flex: none;\n }\n\n .accordion-item__title {\n font-size: 18px;\n }\n\n .accordion-item__description {\n font-size: 15px;\n padding-right: 0;\n }\n}\n","import { Component, h, Host, Prop, State, Element, Watch } from '@stencil/core';\n\nexport interface FeatureAccordionItem {\n title: string;\n description: string;\n imageUrl?: string;\n imageAlt?: string;\n}\n\n/**\n * Feature accordion component with expandable items and accompanying image.\n * Used for showcasing product features with visual examples.\n * Features auto-cycling through items with a progress timer.\n * \n * **Must be wrapped in a Section component** to inherit theme styling.\n * The component automatically adapts colors based on the parent Section's theme.\n * \n * @example\n * ```tsx\n * <Section theme=\"inkwell\">\n * <FeatureAccordion heading=\"Features\" items={...} />\n * </Section>\n * ```\n */\n@Component({\n tag: 'af-feature-accordion',\n styleUrl: 'af-feature-accordion.css',\n shadow: false,\n scoped: true,\n})\nexport class AfFeatureAccordion {\n @Element() el!: HTMLElement;\n\n /** Section heading */\n @Prop() heading: string = 'Give AI agents your paperwork';\n\n /** JSON string of accordion items */\n @Prop() items: string = '[]';\n\n /** Auto-cycle interval in milliseconds (default: 6000ms = 6 seconds) */\n @Prop() cycleInterval: number = 6000;\n\n /** Whether auto-cycling is enabled */\n @Prop() autoCycle: boolean = true;\n\n /** Currently expanded item index */\n @State() expandedIndex: number = 0;\n\n /** Progress of current timer (0-100) */\n @State() timerProgress: number = 100;\n\n private progressTimer: number | null = null;\n private progressStartTime: number = 0;\n\n componentDidLoad() {\n if (this.autoCycle) {\n this.startCycling();\n }\n }\n\n disconnectedCallback() {\n this.stopCycling();\n }\n\n @Watch('autoCycle')\n handleAutoCycleChange(newValue: boolean) {\n if (newValue) {\n this.startCycling();\n } else {\n this.stopCycling();\n }\n }\n\n private getItems(): FeatureAccordionItem[] {\n try {\n return JSON.parse(this.items);\n } catch {\n return [];\n }\n }\n\n private startCycling() {\n this.stopCycling();\n this.progressStartTime = Date.now();\n this.timerProgress = 100;\n \n // Progress animation frame\n const updateProgress = () => {\n const elapsed = Date.now() - this.progressStartTime;\n const remaining = this.cycleInterval - elapsed;\n \n if (remaining <= 0) {\n this.moveToNextItem();\n } else {\n this.timerProgress = (remaining / this.cycleInterval) * 100;\n this.progressTimer = requestAnimationFrame(updateProgress);\n }\n };\n \n this.progressTimer = requestAnimationFrame(updateProgress);\n }\n\n private stopCycling() {\n if (this.progressTimer) {\n cancelAnimationFrame(this.progressTimer);\n this.progressTimer = null;\n }\n }\n\n private moveToNextItem() {\n const items = this.getItems();\n if (items.length === 0) return;\n \n this.expandedIndex = (this.expandedIndex + 1) % items.length;\n // Restart the cycling timer for the new item\n this.startCycling();\n }\n\n private handleItemClick(index: number) {\n // Reset timer when user clicks\n this.expandedIndex = index;\n // Restart the cycling timer for the clicked item\n if (this.autoCycle) {\n this.startCycling();\n }\n }\n\n render() {\n const items = this.getItems();\n const currentItem = items[this.expandedIndex];\n\n return (\n <Host>\n <div class=\"feature-accordion\">\n <div class=\"feature-accordion__container\">\n <h2 class=\"feature-accordion__heading\">{this.heading}</h2>\n \n <div class=\"feature-accordion__content\">\n {/* Left side - Accordion */}\n <div class=\"feature-accordion__list\">\n {items.map((item, index) => (\n <div \n class={{\n 'accordion-item': true,\n 'accordion-item--expanded': this.expandedIndex === index\n }}\n key={index}\n >\n <button \n class=\"accordion-item__header\"\n onClick={() => this.handleItemClick(index)}\n aria-expanded={this.expandedIndex === index ? 'true' : 'false'}\n >\n <h4 class=\"accordion-item__title\">{item.title}</h4>\n <span class=\"accordion-item__icon\">\n {this.expandedIndex === index ? (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 12H19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>\n ) : (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12 5V19M5 12H19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>\n )}\n </span>\n </button>\n <div \n class=\"accordion-item__content\"\n style={{ \n maxHeight: this.expandedIndex === index ? '200px' : '0',\n opacity: this.expandedIndex === index ? '1' : '0'\n }}\n >\n <p class=\"accordion-item__description\">{item.description}</p>\n {this.expandedIndex === index && this.autoCycle && (\n <div class=\"accordion-item__timer-track\">\n <div \n class=\"accordion-item__timer-progress\"\n style={{ width: `${this.timerProgress}%` }}\n ></div>\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n\n {/* Right side - Image */}\n <div class=\"feature-accordion__image-container\">\n <div class=\"feature-accordion__image-wrapper\">\n {currentItem?.imageUrl && (\n <img \n src={currentItem.imageUrl} \n alt={currentItem.imageAlt || currentItem.title}\n class=\"feature-accordion__image\"\n />\n )}\n {!currentItem?.imageUrl && (\n <div class=\"feature-accordion__image-placeholder\">\n <slot name=\"image\"></slot>\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"names":["h","Host","index"],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./index-ybEiHT0b.js');
|
|
4
|
+
|
|
5
|
+
const afFeatureCardCss = ".sc-af-feature-card-h{display:block;--af-card-padding:0;--af-card-gap:0}[card-size=\"default\"].sc-af-feature-card-h{width:544px}[card-size=\"large\"].sc-af-feature-card-h{width:777px}[card-size=\"flexible\"].sc-af-feature-card-h{display:flex;width:100%;height:100%}.feature-card.sc-af-feature-card{overflow:hidden;position:relative;display:flex;flex-direction:column;box-sizing:border-box;border-radius:var(--border-radius-card-level-1, 32px);width:100%;height:100%}.feature-card--layout-full-bleed.sc-af-feature-card{background:var(--background-base, var(--colour-brand-inkwell, #14343b))}[card-size=\"default\"].sc-af-feature-card-h .feature-card--layout-full-bleed.sc-af-feature-card,[card-size=\"large\"].sc-af-feature-card-h .feature-card--layout-full-bleed.sc-af-feature-card{height:660px}[card-size=\"flexible\"].sc-af-feature-card-h .feature-card--layout-full-bleed.sc-af-feature-card{min-height:480px}.feature-card__background.sc-af-feature-card{position:absolute;inset:0;pointer-events:none;z-index:0}.feature-card__background-image.sc-af-feature-card{width:100%;height:100%;object-fit:cover;object-position:center}.feature-card__overlay.sc-af-feature-card{position:absolute;bottom:0;left:0;right:0;backdrop-filter:blur(2px);background:linear-gradient(to top, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0) 100%);z-index:1;padding:124px 32px 32px 32px;--af-typography-heading-primary:var(--typography-heading-secondary, #ffffff);--af-typography-heading-secondary:var(--typography-heading-secondary, #ffffff);--af-typography-body-default:var(--typography-body-dark, #ffffff);--colour-typography-heading-primary:var(--typography-heading-secondary, #ffffff);--colour-typography-heading-secondary:var(--typography-heading-secondary, #ffffff);--colour-typography-body-default:var(--typography-body-dark, #ffffff)}.feature-card--layout-standard.sc-af-feature-card{background:var(--background-level-1, var(--colour-mistgreen-200, #e8eeed))}[card-size=\"flexible\"].sc-af-feature-card-h .feature-card--layout-standard.sc-af-feature-card{min-height:400px}.feature-card__content.sc-af-feature-card{position:relative;display:flex;flex-direction:column;box-sizing:border-box;z-index:1;padding:40px 32px 12px 32px;flex:1 1 auto}[card-size=\"large\"].sc-af-feature-card-h .feature-card__content.sc-af-feature-card{padding:40px 40px 0 40px}.feature-card__image-area.sc-af-feature-card{position:relative;width:100%;height:160px;flex-shrink:0;overflow:hidden}.feature-card__image.sc-af-feature-card{width:100%;height:100%;object-fit:cover;object-position:center top}.feature-card.sc-af-feature-card af-typography-lockup.sc-af-feature-card{--colour-typography-heading-primary:var(--af-typography-heading-primary, var(--typography-heading-primary, #14343b));--colour-typography-body-default:var(--af-typography-body-default, var(--typography-body-default, #2b484f))}@media (max-width: 768px){.feature-card.sc-af-feature-card{border-radius:var(--border-radius-card-level-1, 24px)}[card-size=\"default\"].sc-af-feature-card-h,[card-size=\"large\"].sc-af-feature-card-h{width:335px}[card-size=\"default\"].sc-af-feature-card-h .feature-card--layout-full-bleed.sc-af-feature-card,[card-size=\"large\"].sc-af-feature-card-h .feature-card--layout-full-bleed.sc-af-feature-card{height:442px}[card-size=\"flexible\"].sc-af-feature-card-h .feature-card--layout-standard.sc-af-feature-card{min-height:340px}[card-size=\"flexible\"].sc-af-feature-card-h .feature-card--layout-full-bleed.sc-af-feature-card{min-height:380px}.feature-card__overlay.sc-af-feature-card{padding:80px 24px 28px 24px}.feature-card__content.sc-af-feature-card{padding:32px 24px 12px 24px}.feature-card__image-area.sc-af-feature-card{height:192px}}";
|
|
6
|
+
|
|
7
|
+
const AfFeatureCard = class {
|
|
8
|
+
constructor(hostRef) {
|
|
9
|
+
index.registerInstance(this, hostRef);
|
|
10
|
+
/**
|
|
11
|
+
* Theme variant - sets background color and provides theme context.
|
|
12
|
+
* Only applies to 'standard' layout mode. Defaults to 'mist-green'.
|
|
13
|
+
*/
|
|
14
|
+
this.theme = 'mist-green';
|
|
15
|
+
/**
|
|
16
|
+
* Layout mode for the card.
|
|
17
|
+
* - 'standard': Theme background with text at top and image at bottom
|
|
18
|
+
* - 'full-bleed': Image covers entire card with text overlay at bottom
|
|
19
|
+
*/
|
|
20
|
+
this.layout = 'standard';
|
|
21
|
+
/**
|
|
22
|
+
* Card size variant.
|
|
23
|
+
* - 'default': Fixed 544px × 420px
|
|
24
|
+
* - 'large': Fixed 777px × 480px
|
|
25
|
+
* - 'flexible': Fills container (for grid layouts)
|
|
26
|
+
*/
|
|
27
|
+
this.cardSize = 'default';
|
|
28
|
+
/**
|
|
29
|
+
* Heading size for typography lockup (1-5, where 1 is largest).
|
|
30
|
+
*/
|
|
31
|
+
this.headingSize = 3;
|
|
32
|
+
/**
|
|
33
|
+
* Image alt text for accessibility.
|
|
34
|
+
* Provide meaningful alt text for feature images.
|
|
35
|
+
* Only use empty string for purely decorative images.
|
|
36
|
+
*/
|
|
37
|
+
this.imageAlt = '';
|
|
38
|
+
}
|
|
39
|
+
render() {
|
|
40
|
+
const hasImage = !!this.imageSrc;
|
|
41
|
+
const isFullBleed = this.layout === 'full-bleed';
|
|
42
|
+
const wrapperClasses = {
|
|
43
|
+
'feature-card': true,
|
|
44
|
+
[`feature-card--layout-${this.layout}`]: true,
|
|
45
|
+
[`feature-card--size-${this.cardSize}`]: true,
|
|
46
|
+
};
|
|
47
|
+
// Full-bleed mode: image background with overlay
|
|
48
|
+
if (isFullBleed) {
|
|
49
|
+
return (index.h(index.Host, null, index.h("div", { class: wrapperClasses }, hasImage && (index.h("div", { class: "feature-card__background" }, index.h("img", { src: this.imageSrc, alt: this.imageAlt, class: "feature-card__background-image" }))), index.h("div", { class: "feature-card__overlay" }, index.h("af-typography-lockup", { headingSize: this.headingSize, textAlignment: "left", buttonAlignment: "vertical" }, index.h("slot", null), index.h("span", { slot: "description" }, index.h("slot", { name: "body" })))))));
|
|
50
|
+
}
|
|
51
|
+
// Standard mode: theme card with image at bottom
|
|
52
|
+
const isFlexible = this.cardSize === 'flexible';
|
|
53
|
+
return (index.h(index.Host, null, index.h("div", { class: wrapperClasses }, index.h("af-card", { theme: this.theme, stretch: isFlexible }, index.h("div", { class: "feature-card__content" }, index.h("af-typography-lockup", { headingSize: this.headingSize, textAlignment: "left", buttonAlignment: "vertical" }, index.h("slot", null), index.h("span", { slot: "description" }, index.h("slot", { name: "body" })))), hasImage && (index.h("div", { class: "feature-card__image-area" }, index.h("img", { src: this.imageSrc, alt: this.imageAlt, class: "feature-card__image" })))))));
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
AfFeatureCard.style = afFeatureCardCss;
|
|
57
|
+
|
|
58
|
+
exports.af_feature_card = AfFeatureCard;
|
|
59
|
+
//# sourceMappingURL=af-feature-card.entry.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"af-feature-card.entry.cjs.js","sources":["src/components/af-feature-card/af-feature-card.css?tag=af-feature-card&encapsulation=scoped","src/components/af-feature-card/af-feature-card.tsx"],"sourcesContent":["/* ==========================================================================\n Feature Card - Figma Specs\n \n Desktop Full-bleed: 544px × 660px, radius 32px\n Desktop Standard default: 544px width, radius 32px\n Desktop Standard large: 777px width, radius 32px\n Mobile Full-bleed: 335px × 442px, radius 24px\n Mobile Standard: 335px width, radius 24px\n ========================================================================== */\n\n/* ==========================================================================\n Host Element - Controls outer dimensions\n ========================================================================== */\n\n:host {\n display: block;\n --af-card-padding: 0;\n --af-card-gap: 0;\n}\n\n/* Fixed size hosts constrain to Figma dimensions */\n:host([card-size=\"default\"]) {\n width: 544px;\n}\n\n:host([card-size=\"large\"]) {\n width: 777px;\n}\n\n/* Flexible cards fill their container */\n:host([card-size=\"flexible\"]) {\n display: flex;\n width: 100%;\n height: 100%;\n}\n\n/* ==========================================================================\n Base Feature Card Styles\n ========================================================================== */\n\n.feature-card {\n overflow: hidden;\n position: relative;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n border-radius: var(--border-radius-card-level-1, 32px);\n width: 100%;\n height: 100%;\n}\n\n/* ==========================================================================\n Full Bleed Layout Mode\n Figma: 544px × 660px (desktop), 335px × 442px (mobile)\n ========================================================================== */\n\n.feature-card--layout-full-bleed {\n background: var(--background-base, var(--colour-brand-inkwell, #14343b));\n}\n\n/* Full-bleed fixed sizes have explicit heights on host */\n:host([card-size=\"default\"]) .feature-card--layout-full-bleed,\n:host([card-size=\"large\"]) .feature-card--layout-full-bleed {\n height: 660px;\n}\n\n/* Full-bleed flexible minimum height */\n:host([card-size=\"flexible\"]) .feature-card--layout-full-bleed {\n min-height: 480px;\n}\n\n.feature-card__background {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 0;\n}\n\n.feature-card__background-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n}\n\n/* Overlay gradient with text */\n.feature-card__overlay {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\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 z-index: 1;\n /* Desktop: pt-124px px-32px pb-32px */\n padding: 124px 32px 32px 32px;\n\n /* White text on dark overlay */\n --af-typography-heading-primary: var(--typography-heading-secondary, #ffffff);\n --af-typography-heading-secondary: var(--typography-heading-secondary, #ffffff);\n --af-typography-body-default: var(--typography-body-dark, #ffffff);\n --colour-typography-heading-primary: var(--typography-heading-secondary, #ffffff);\n --colour-typography-heading-secondary: var(--typography-heading-secondary, #ffffff);\n --colour-typography-body-default: var(--typography-body-dark, #ffffff);\n}\n\n/* ==========================================================================\n Standard Layout Mode\n \n Structure: .feature-card > af-card[stretch] > [content] + [image-area]\n \n When cardSize=\"flexible\", af-card receives stretch prop which enables\n the flex chain. Content grows to fill space, image stays at bottom.\n ========================================================================== */\n\n.feature-card--layout-standard {\n background: var(--background-level-1, var(--colour-mistgreen-200, #e8eeed));\n}\n\n/* Standard flexible minimum height */\n:host([card-size=\"flexible\"]) .feature-card--layout-standard {\n min-height: 400px;\n}\n\n/* Content area - grows to push image to bottom (when af-card has stretch) */\n.feature-card__content {\n position: relative;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n z-index: 1;\n /* Desktop default: pt-40px px-32px pb-12px */\n padding: 40px 32px 12px 32px;\n flex: 1 1 auto;\n}\n\n/* Large card content padding: pt-40px px-40px pb-0 */\n:host([card-size=\"large\"]) .feature-card__content {\n padding: 40px 40px 0 40px;\n}\n\n/* ==========================================================================\n Image Area (Standard Layout)\n Figma: 160px height (desktop), 192px height (mobile)\n ========================================================================== */\n\n.feature-card__image-area {\n position: relative;\n width: 100%;\n height: 160px;\n flex-shrink: 0;\n overflow: hidden;\n}\n\n.feature-card__image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center top;\n}\n\n/* ==========================================================================\n Typography Lockup Styling\n ========================================================================== */\n\n.feature-card af-typography-lockup {\n --colour-typography-heading-primary: var(--af-typography-heading-primary, var(--typography-heading-primary, #14343b));\n --colour-typography-body-default: var(--af-typography-body-default, var(--typography-body-default, #2b484f));\n}\n\n/* ==========================================================================\n Mobile Responsive Styles (max-width: 768px)\n \n Figma:\n - Full-bleed: 335px × 442px, radius 24px\n - Standard: 335px width, radius 24px\n ========================================================================== */\n\n@media (max-width: 768px) {\n .feature-card {\n border-radius: var(--border-radius-card-level-1, 24px);\n }\n\n /* Mobile fixed widths on host */\n :host([card-size=\"default\"]),\n :host([card-size=\"large\"]) {\n width: 335px;\n }\n\n /* Mobile full-bleed height: 442px */\n :host([card-size=\"default\"]) .feature-card--layout-full-bleed,\n :host([card-size=\"large\"]) .feature-card--layout-full-bleed {\n height: 442px;\n }\n\n /* Mobile flexible minimum heights */\n :host([card-size=\"flexible\"]) .feature-card--layout-standard {\n min-height: 340px;\n }\n\n :host([card-size=\"flexible\"]) .feature-card--layout-full-bleed {\n min-height: 380px;\n }\n\n /* Mobile overlay padding: pt-80px px-24px pb-28px */\n .feature-card__overlay {\n padding: 80px 24px 28px 24px;\n }\n\n /* Mobile content padding: pt-32px px-24px pb-12px */\n .feature-card__content {\n padding: 32px 24px 12px 24px;\n }\n\n /* Mobile image area: 192px height */\n .feature-card__image-area {\n height: 192px;\n }\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * Feature Card molecule component that combines a card with an image.\n * \n * Two layout modes:\n * - `standard`: Theme background with text at top and image at bottom\n * - `full-bleed`: Image covers entire card with text overlay at bottom\n * \n * Responsive: Automatically adapts to mobile viewport (≤768px).\n * \n * Uses af-card atom internally and af-typography-lockup for text hierarchy.\n * \n * @slot - Heading text content\n * @slot body - Description/body text content\n */\n@Component({\n tag: 'af-feature-card',\n styleUrl: 'af-feature-card.css',\n shadow: false,\n scoped: true,\n})\nexport class AfFeatureCard {\n /**\n * Theme variant - sets background color and provides theme context.\n * Only applies to 'standard' layout mode. Defaults to 'mist-green'.\n */\n @Prop() theme?: 'white' | 'white-ivory' | 'inkwell' | 'mist-green' | 'soft-clay' = 'mist-green';\n\n /**\n * Layout mode for the card.\n * - 'standard': Theme background with text at top and image at bottom\n * - 'full-bleed': Image covers entire card with text overlay at bottom\n */\n @Prop() layout: 'standard' | 'full-bleed' = 'standard';\n\n /**\n * Card size variant.\n * - 'default': Fixed 544px × 420px\n * - 'large': Fixed 777px × 480px \n * - 'flexible': Fills container (for grid layouts)\n */\n @Prop({ reflect: true }) cardSize: 'default' | 'large' | 'flexible' = 'default';\n\n /**\n * Heading size for typography lockup (1-5, where 1 is largest).\n */\n @Prop() headingSize: 1 | 2 | 3 | 4 | 5 = 3;\n\n /**\n * Background/feature image URL.\n */\n @Prop() imageSrc?: string;\n\n /**\n * Image alt text for accessibility.\n * Provide meaningful alt text for feature images.\n * Only use empty string for purely decorative images.\n */\n @Prop() imageAlt: string = '';\n\n render() {\n const hasImage = !!this.imageSrc;\n const isFullBleed = this.layout === 'full-bleed';\n\n const wrapperClasses = {\n 'feature-card': true,\n [`feature-card--layout-${this.layout}`]: true,\n [`feature-card--size-${this.cardSize}`]: true,\n };\n\n // Full-bleed mode: image background with overlay\n if (isFullBleed) {\n return (\n <Host>\n <div class={wrapperClasses}>\n {/* Background image */}\n {hasImage && (\n <div class=\"feature-card__background\">\n <img\n src={this.imageSrc}\n alt={this.imageAlt}\n class=\"feature-card__background-image\"\n />\n </div>\n )}\n\n {/* Content overlay with gradient */}\n <div class=\"feature-card__overlay\">\n <af-typography-lockup\n headingSize={this.headingSize}\n textAlignment=\"left\"\n buttonAlignment=\"vertical\"\n >\n <slot></slot>\n <span slot=\"description\">\n <slot name=\"body\"></slot>\n </span>\n </af-typography-lockup>\n </div>\n </div>\n </Host>\n );\n }\n\n // Standard mode: theme card with image at bottom\n const isFlexible = this.cardSize === 'flexible';\n \n return (\n <Host>\n <div class={wrapperClasses}>\n <af-card theme={this.theme} stretch={isFlexible}>\n {/* Content area with typography lockup */}\n <div class=\"feature-card__content\">\n <af-typography-lockup\n headingSize={this.headingSize}\n textAlignment=\"left\"\n buttonAlignment=\"vertical\"\n >\n <slot></slot>\n <span slot=\"description\">\n <slot name=\"body\"></slot>\n </span>\n </af-typography-lockup>\n </div>\n\n {/* Image area at bottom */}\n {hasImage && (\n <div class=\"feature-card__image-area\">\n <img\n src={this.imageSrc}\n alt={this.imageAlt}\n class=\"feature-card__image\"\n />\n </div>\n )}\n </af-card>\n </div>\n </Host>\n );\n }\n}\n"],"names":["h","Host"],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./index-ybEiHT0b.js');
|
|
4
|
+
|
|
5
|
+
const afFeatureGridCss = ".sc-af-feature-grid-h{display:block;width:100%}.feature-grid.sc-af-feature-grid{display:flex;flex-direction:column;align-items:center;width:100%}.feature-grid__cards.sc-af-feature-grid{display:grid;grid-template-columns:repeat(4, 1fr);gap:24px;width:100%;max-width:1440px;align-items:stretch}.feature-grid__cards.sc-af-feature-grid>af-feature-card.sc-af-feature-grid{height:100%}.feature-grid--cols-3.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid{grid-template-columns:repeat(3, 1fr)}.feature-grid--cols-2.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid{grid-template-columns:repeat(2, 1fr)}.feature-grid--cols-1.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid{grid-template-columns:1fr}.feature-grid__progress.sc-af-feature-grid{display:none;width:100%;margin-top:16px}@media (max-width: 768px){.feature-grid__cards.sc-af-feature-grid{gap:16px}.feature-grid--mobile-list.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid{grid-template-columns:1fr;gap:20px}.feature-grid--mobile-grid.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid{grid-template-columns:repeat(2, 1fr)}.feature-grid--mobile-scroll.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid{display:flex;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:16px;padding-bottom:8px;scrollbar-width:none;-ms-overflow-style:none}.feature-grid--mobile-scroll.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid::-webkit-scrollbar{display:none}.feature-grid--mobile-scroll.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid>af-feature-card.sc-af-feature-grid{flex:0 0 280px;scroll-snap-align:start}.feature-grid--mobile-scroll.sc-af-feature-grid .feature-grid__progress.sc-af-feature-grid{display:block}}@media (min-width: 769px) and (max-width: 1024px){.feature-grid__cards.sc-af-feature-grid{grid-template-columns:repeat(2, 1fr)}.feature-grid--cols-3.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid,.feature-grid--cols-4.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid{grid-template-columns:repeat(2, 1fr)}}";
|
|
6
|
+
|
|
7
|
+
const AfFeatureGrid = class {
|
|
8
|
+
constructor(hostRef) {
|
|
9
|
+
index.registerInstance(this, hostRef);
|
|
10
|
+
/**
|
|
11
|
+
* Number of columns on desktop (1-4).
|
|
12
|
+
*/
|
|
13
|
+
this.columns = 4;
|
|
14
|
+
/**
|
|
15
|
+
* Mobile layout behavior.
|
|
16
|
+
* - 'list': Vertical stack (1 column)
|
|
17
|
+
* - 'scroll': Horizontal scroll with progress indicator
|
|
18
|
+
* - 'grid': Maintain 2-column grid on mobile
|
|
19
|
+
*/
|
|
20
|
+
this.mobileLayout = 'list';
|
|
21
|
+
this.scrollProgress = 0;
|
|
22
|
+
this.handleScroll = () => {
|
|
23
|
+
if (!this.scrollContainer)
|
|
24
|
+
return;
|
|
25
|
+
const { scrollLeft, scrollWidth, clientWidth } = this.scrollContainer;
|
|
26
|
+
const maxScroll = scrollWidth - clientWidth;
|
|
27
|
+
if (maxScroll > 0) {
|
|
28
|
+
this.scrollProgress = scrollLeft / maxScroll;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
this.scrollProgress = 0;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
componentDidLoad() {
|
|
36
|
+
this.setupScrollListener();
|
|
37
|
+
// Watch for cards being added (for React async rendering)
|
|
38
|
+
this.observer = new MutationObserver(() => {
|
|
39
|
+
this.setupScrollListener();
|
|
40
|
+
});
|
|
41
|
+
this.observer.observe(this.host, {
|
|
42
|
+
childList: true,
|
|
43
|
+
subtree: true,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
disconnectedCallback() {
|
|
47
|
+
if (this.observer) {
|
|
48
|
+
this.observer.disconnect();
|
|
49
|
+
}
|
|
50
|
+
if (this.resizeObserver) {
|
|
51
|
+
this.resizeObserver.disconnect();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
onMobileLayoutChange() {
|
|
55
|
+
this.setupScrollListener();
|
|
56
|
+
}
|
|
57
|
+
setupScrollListener() {
|
|
58
|
+
if (this.scrollContainer) {
|
|
59
|
+
this.scrollContainer.removeEventListener('scroll', this.handleScroll);
|
|
60
|
+
}
|
|
61
|
+
requestAnimationFrame(() => {
|
|
62
|
+
this.scrollContainer = this.host.querySelector('.feature-grid__cards');
|
|
63
|
+
if (this.scrollContainer && this.mobileLayout === 'scroll') {
|
|
64
|
+
this.scrollContainer.addEventListener('scroll', this.handleScroll, { passive: true });
|
|
65
|
+
this.handleScroll();
|
|
66
|
+
if (this.resizeObserver) {
|
|
67
|
+
this.resizeObserver.disconnect();
|
|
68
|
+
}
|
|
69
|
+
this.resizeObserver = new ResizeObserver(() => {
|
|
70
|
+
this.handleScroll();
|
|
71
|
+
});
|
|
72
|
+
this.resizeObserver.observe(this.scrollContainer);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
render() {
|
|
77
|
+
const gridClasses = {
|
|
78
|
+
'feature-grid': true,
|
|
79
|
+
[`feature-grid--cols-${this.columns}`]: true,
|
|
80
|
+
[`feature-grid--mobile-${this.mobileLayout}`]: true,
|
|
81
|
+
};
|
|
82
|
+
const showProgressLine = this.mobileLayout === 'scroll';
|
|
83
|
+
return (index.h(index.Host, { key: '9f86e8111e73d046e6e391d54781972ca0c1a78a' }, index.h("div", { key: '409d9c22be533612e2f079f38bc613e3a1f35fe2', class: gridClasses }, index.h("div", { key: '18261ef9c3dab6b7dfc5c947fd0b21712f1e6416', class: "feature-grid__cards" }, index.h("slot", { key: '9f90257092482cce17c374813116bf5ea6338401' })), showProgressLine && (index.h("div", { key: '208800f5dfe5d944f9bc4198fbe656696471ce21', class: "feature-grid__progress" }, index.h("af-progress-line", { key: 'c95b717d018803c4f56a9066bf7aa869c01cb1aa', progress: this.scrollProgress }))))));
|
|
84
|
+
}
|
|
85
|
+
get host() { return index.getElement(this); }
|
|
86
|
+
static get watchers() { return {
|
|
87
|
+
"mobileLayout": ["onMobileLayoutChange"]
|
|
88
|
+
}; }
|
|
89
|
+
};
|
|
90
|
+
AfFeatureGrid.style = afFeatureGridCss;
|
|
91
|
+
|
|
92
|
+
exports.af_feature_grid = AfFeatureGrid;
|
|
93
|
+
//# sourceMappingURL=af-feature-grid.entry.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"af-feature-grid.entry.cjs.js","sources":["src/components/af-feature-grid/af-feature-grid.css?tag=af-feature-grid&encapsulation=scoped","src/components/af-feature-grid/af-feature-grid.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n/* ==========================================================================\n Base Feature Grid Styles\n ========================================================================== */\n\n.feature-grid {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n}\n\n/* ==========================================================================\n Cards Container - CSS Grid Layout\n ========================================================================== */\n\n.feature-grid__cards {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 24px;\n width: 100%;\n max-width: 1440px;\n align-items: stretch;\n}\n\n/* Ensure feature cards fill their grid cells */\n.feature-grid__cards>af-feature-card {\n height: 100%;\n}\n\n/* Column variants */\n.feature-grid--cols-3 .feature-grid__cards {\n grid-template-columns: repeat(3, 1fr);\n}\n\n.feature-grid--cols-2 .feature-grid__cards {\n grid-template-columns: repeat(2, 1fr);\n}\n\n.feature-grid--cols-1 .feature-grid__cards {\n grid-template-columns: 1fr;\n}\n\n/* ==========================================================================\n Progress Line (scroll mode indicator)\n ========================================================================== */\n\n.feature-grid__progress {\n display: none;\n width: 100%;\n margin-top: 16px;\n}\n\n/* ==========================================================================\n Mobile Responsive Styles (max-width: 768px)\n ========================================================================== */\n\n@media (max-width: 768px) {\n .feature-grid__cards {\n gap: 16px;\n }\n\n /* Mobile List Mode - single column stack */\n .feature-grid--mobile-list .feature-grid__cards {\n grid-template-columns: 1fr;\n gap: 20px;\n }\n\n /* Mobile Grid Mode - keep 2 columns */\n .feature-grid--mobile-grid .feature-grid__cards {\n grid-template-columns: repeat(2, 1fr);\n }\n\n /* Mobile Scroll Mode - horizontal scroll */\n .feature-grid--mobile-scroll .feature-grid__cards {\n display: flex;\n flex-wrap: nowrap;\n overflow-x: auto;\n overflow-y: hidden;\n scroll-snap-type: x mandatory;\n -webkit-overflow-scrolling: touch;\n gap: 16px;\n padding-bottom: 8px;\n scrollbar-width: none;\n -ms-overflow-style: none;\n }\n\n .feature-grid--mobile-scroll .feature-grid__cards::-webkit-scrollbar {\n display: none;\n }\n\n .feature-grid--mobile-scroll .feature-grid__cards>af-feature-card {\n flex: 0 0 280px;\n scroll-snap-align: start;\n }\n\n .feature-grid--mobile-scroll .feature-grid__progress {\n display: block;\n }\n}\n\n/* ==========================================================================\n Tablet breakpoint (769px - 1024px)\n ========================================================================== */\n\n@media (min-width: 769px) and (max-width: 1024px) {\n .feature-grid__cards {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .feature-grid--cols-3 .feature-grid__cards,\n .feature-grid--cols-4 .feature-grid__cards {\n grid-template-columns: repeat(2, 1fr);\n }\n}","import { Component, Prop, State, h, Host, Element, Watch } from '@stencil/core';\n\n/**\n * Feature Grid component - CSS Grid container for feature cards.\n *\n * Desktop: Configurable columns (1-4)\n * Mobile: List (stacked), horizontal scroll, or 2-column grid\n *\n * @slot - Feature card components (af-feature-card)\n */\n@Component({\n tag: 'af-feature-grid',\n styleUrl: 'af-feature-grid.css',\n shadow: false,\n scoped: true,\n})\nexport class AfFeatureGrid {\n @Element() host!: HTMLElement;\n\n /**\n * Number of columns on desktop (1-4).\n */\n @Prop() columns: 1 | 2 | 3 | 4 = 4;\n\n /**\n * Mobile layout behavior.\n * - 'list': Vertical stack (1 column)\n * - 'scroll': Horizontal scroll with progress indicator\n * - 'grid': Maintain 2-column grid on mobile\n */\n @Prop() mobileLayout: 'list' | 'scroll' | 'grid' = 'list';\n\n @State() scrollProgress: number = 0;\n\n private scrollContainer: HTMLElement | undefined;\n private observer: MutationObserver | undefined;\n private resizeObserver: ResizeObserver | undefined;\n\n componentDidLoad() {\n this.setupScrollListener();\n\n // Watch for cards being added (for React async rendering)\n this.observer = new MutationObserver(() => {\n this.setupScrollListener();\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 if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n @Watch('mobileLayout')\n onMobileLayoutChange() {\n this.setupScrollListener();\n }\n\n private setupScrollListener() {\n if (this.scrollContainer) {\n this.scrollContainer.removeEventListener('scroll', this.handleScroll);\n }\n\n requestAnimationFrame(() => {\n this.scrollContainer = this.host.querySelector('.feature-grid__cards') as HTMLElement;\n\n if (this.scrollContainer && this.mobileLayout === 'scroll') {\n this.scrollContainer.addEventListener('scroll', this.handleScroll, { passive: true });\n this.handleScroll();\n\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n this.resizeObserver = new ResizeObserver(() => {\n this.handleScroll();\n });\n this.resizeObserver.observe(this.scrollContainer);\n }\n });\n }\n\n private handleScroll = () => {\n if (!this.scrollContainer) return;\n\n const { scrollLeft, scrollWidth, clientWidth } = this.scrollContainer;\n const maxScroll = scrollWidth - clientWidth;\n\n if (maxScroll > 0) {\n this.scrollProgress = scrollLeft / maxScroll;\n } else {\n this.scrollProgress = 0;\n }\n };\n\n render() {\n const gridClasses = {\n 'feature-grid': true,\n [`feature-grid--cols-${this.columns}`]: true,\n [`feature-grid--mobile-${this.mobileLayout}`]: true,\n };\n\n const showProgressLine = this.mobileLayout === 'scroll';\n\n return (\n <Host>\n <div class={gridClasses}>\n <div class=\"feature-grid__cards\">\n <slot></slot>\n </div>\n\n {showProgressLine && (\n <div class=\"feature-grid__progress\">\n <af-progress-line progress={this.scrollProgress} />\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"names":["h","Host"],"mappings":";;;;AAAA,MAAM,gBAAgB,GAAG,glEAAglE;;MCgB5lE,aAAa,GAAA,MAAA;AAN1B,IAAA,WAAA,CAAA,OAAA,EAAA;;AASE;;AAEG;AACK,QAAA,IAAO,CAAA,OAAA,GAAkB,CAAC;AAElC;;;;;AAKG;AACK,QAAA,IAAY,CAAA,YAAA,GAA+B,MAAM;AAEhD,QAAA,IAAc,CAAA,cAAA,GAAW,CAAC;AAyD3B,QAAA,IAAY,CAAA,YAAA,GAAG,MAAK;YAC1B,IAAI,CAAC,IAAI,CAAC,eAAe;gBAAE;YAE3B,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,eAAe;AACrE,YAAA,MAAM,SAAS,GAAG,WAAW,GAAG,WAAW;AAE3C,YAAA,IAAI,SAAS,GAAG,CAAC,EAAE;AACjB,gBAAA,IAAI,CAAC,cAAc,GAAG,UAAU,GAAG,SAAS;;iBACvC;AACL,gBAAA,IAAI,CAAC,cAAc,GAAG,CAAC;;AAE3B,SAAC;AA2BF;IAzFC,gBAAgB,GAAA;QACd,IAAI,CAAC,mBAAmB,EAAE;;AAG1B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,MAAK;YACxC,IAAI,CAAC,mBAAmB,EAAE;AAC5B,SAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE;AAC/B,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,IAAI;AACd,SAAA,CAAC;;IAGJ,oBAAoB,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;;AAE5B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;;;IAKpC,oBAAoB,GAAA;QAClB,IAAI,CAAC,mBAAmB,EAAE;;IAGpB,mBAAmB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC;;QAGvE,qBAAqB,CAAC,MAAK;YACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAgB;YAErF,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE;AAC1D,gBAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACrF,IAAI,CAAC,YAAY,EAAE;AAEnB,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,oBAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;;AAElC,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;oBAC5C,IAAI,CAAC,YAAY,EAAE;AACrB,iBAAC,CAAC;gBACF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;;AAErD,SAAC,CAAC;;IAgBJ,MAAM,GAAA;AACJ,QAAA,MAAM,WAAW,GAAG;AAClB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,CAAC,sBAAsB,IAAI,CAAC,OAAO,CAAE,CAAA,GAAG,IAAI;AAC5C,YAAA,CAAC,wBAAwB,IAAI,CAAC,YAAY,CAAE,CAAA,GAAG,IAAI;SACpD;AAED,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,KAAK,QAAQ;AAEvD,QAAA,QACEA,QAACC,UAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACHD,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,WAAW,EAAA,EACrBA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,qBAAqB,EAAA,EAC9BA,OAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,EAEL,gBAAgB,KACfA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,wBAAwB,EAAA,EACjCA,OAAkB,CAAA,kBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAI,CAAA,CAC/C,CACP,CACG,CACD;;;;;;;;;;;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./index-ybEiHT0b.js');
|
|
4
|
+
|
|
5
|
+
const afFieldsetCss = ":host{display:block}.fieldset{display:flex;flex-direction:column;border:none;padding:0;margin:0;min-inline-size:0}.fieldset.disabled{opacity:0.5;pointer-events:none}.legend{display:block;font-family:var(--typography-headingfont, 'NeuSans', sans-serif);font-weight:var(--font-weight-book, 500);font-size:var(--font-size-heading-5-desktop, 20px);line-height:var(--line-height-heading-relaxed, 1.2);letter-spacing:var(--letter-spacing-heading, -0.02em);color:var(--colour-typography-heading-primary, var(--colour-brand-inkwell, #14343b));padding:0;margin:0 0 12px 0;width:100%}.items{display:flex}.items.orientation-vertical{flex-direction:column;gap:8px;align-items:flex-start}.items.orientation-horizontal{flex-direction:row;flex-wrap:wrap;gap:28px;align-items:center}::slotted(*){flex-shrink:0}.items.orientation-vertical ::slotted(*){width:100%}";
|
|
6
|
+
|
|
7
|
+
const AfFieldset = class {
|
|
8
|
+
constructor(hostRef) {
|
|
9
|
+
index.registerInstance(this, hostRef);
|
|
10
|
+
/**
|
|
11
|
+
* The layout orientation of the fieldset items
|
|
12
|
+
* - `vertical` - Items stack vertically (default)
|
|
13
|
+
* - `horizontal` - Items are laid out horizontally
|
|
14
|
+
*/
|
|
15
|
+
this.orientation = 'vertical';
|
|
16
|
+
/**
|
|
17
|
+
* Whether the fieldset is disabled (disables all child controls)
|
|
18
|
+
*/
|
|
19
|
+
this.disabled = false;
|
|
20
|
+
}
|
|
21
|
+
render() {
|
|
22
|
+
const fieldsetClasses = {
|
|
23
|
+
'fieldset': true,
|
|
24
|
+
[`orientation-${this.orientation}`]: true,
|
|
25
|
+
'disabled': this.disabled
|
|
26
|
+
};
|
|
27
|
+
const itemsClasses = {
|
|
28
|
+
'items': true,
|
|
29
|
+
[`orientation-${this.orientation}`]: true
|
|
30
|
+
};
|
|
31
|
+
return (index.h(index.Host, { key: '367a58328f883d5df31989021ad7dba14ed3ab6c' }, index.h("fieldset", { key: 'f43a04b8808db04886a0997b42593af2445b185d', class: fieldsetClasses, disabled: this.disabled }, this.legend && (index.h("legend", { key: 'fc08d5e1464ffeb00005fda04169ceb2654a00b8', class: "legend" }, this.legend)), index.h("div", { key: '815f2dc77dc417791e1a3d736e1b0ce91250a325', class: itemsClasses }, index.h("slot", { key: 'd080ec923b57a3ae95cc868be6bf42b57df08e7a' })))));
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
AfFieldset.style = afFieldsetCss;
|
|
35
|
+
|
|
36
|
+
exports.af_fieldset = AfFieldset;
|
|
37
|
+
//# sourceMappingURL=af-fieldset.entry.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"af-fieldset.entry.cjs.js","sources":["src/components/af-fieldset/af-fieldset.css?tag=af-fieldset&encapsulation=shadow","src/components/af-fieldset/af-fieldset.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.fieldset {\n display: flex;\n flex-direction: column;\n border: none;\n padding: 0;\n margin: 0;\n min-inline-size: 0;\n}\n\n.fieldset.disabled {\n opacity: 0.5;\n pointer-events: none;\n}\n\n/* Legend/heading styling - uses heading 5 style */\n.legend {\n display: block;\n font-family: var(--typography-headingfont, 'NeuSans', sans-serif);\n font-weight: var(--font-weight-book, 500);\n font-size: var(--font-size-heading-5-desktop, 20px);\n line-height: var(--line-height-heading-relaxed, 1.2);\n letter-spacing: var(--letter-spacing-heading, -0.02em);\n color: var(--colour-typography-heading-primary, var(--colour-brand-inkwell, #14343b));\n padding: 0;\n margin: 0 0 12px 0;\n width: 100%;\n}\n\n/* Items container */\n.items {\n display: flex;\n}\n\n/* Vertical layout */\n.items.orientation-vertical {\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n}\n\n/* Horizontal layout */\n.items.orientation-horizontal {\n flex-direction: row;\n flex-wrap: wrap;\n gap: 28px;\n align-items: center;\n}\n\n/* Slotted content styling */\n::slotted(*) {\n flex-shrink: 0;\n}\n\n/* Full width items in vertical layout */\n.items.orientation-vertical ::slotted(*) {\n width: 100%;\n}\n","import { Component, h, Prop, Host } from '@stencil/core';\n\n/**\n * Fieldset component for grouping related form controls.\n * Supports vertical and horizontal layouts with an optional legend/heading.\n * \n * @slot - Form controls (checkboxes, radios, etc.)\n */\n@Component({\n tag: 'af-fieldset',\n styleUrl: 'af-fieldset.css',\n shadow: true\n})\nexport class AfFieldset {\n /**\n * The legend/heading text for the fieldset\n */\n @Prop() legend?: string;\n\n /**\n * The layout orientation of the fieldset items\n * - `vertical` - Items stack vertically (default)\n * - `horizontal` - Items are laid out horizontally\n */\n @Prop() orientation: 'vertical' | 'horizontal' = 'vertical';\n\n /**\n * Whether the fieldset is disabled (disables all child controls)\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n render() {\n const fieldsetClasses = {\n 'fieldset': true,\n [`orientation-${this.orientation}`]: true,\n 'disabled': this.disabled\n };\n\n const itemsClasses = {\n 'items': true,\n [`orientation-${this.orientation}`]: true\n };\n\n return (\n <Host>\n <fieldset class={fieldsetClasses} disabled={this.disabled}>\n {this.legend && (\n <legend class=\"legend\">{this.legend}</legend>\n )}\n <div class={itemsClasses}>\n <slot></slot>\n </div>\n </fieldset>\n </Host>\n );\n }\n}\n\n"],"names":["h","Host"],"mappings":";;;;AAAA,MAAM,aAAa,GAAG,g1BAAg1B;;MCaz1B,UAAU,GAAA,MAAA;AALvB,IAAA,WAAA,CAAA,OAAA,EAAA;;AAWE;;;;AAIG;AACK,QAAA,IAAW,CAAA,WAAA,GAA8B,UAAU;AAE3D;;AAEG;AACsB,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK;AA2BnD;IAzBC,MAAM,GAAA;AACJ,QAAA,MAAM,eAAe,GAAG;AACtB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,CAAC,eAAe,IAAI,CAAC,WAAW,CAAE,CAAA,GAAG,IAAI;YACzC,UAAU,EAAE,IAAI,CAAC;SAClB;AAED,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,CAAC,eAAe,IAAI,CAAC,WAAW,CAAE,CAAA,GAAG;SACtC;AAED,QAAA,QACEA,QAACC,UAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACHD,OAAU,CAAA,UAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAA,EACtD,IAAI,CAAC,MAAM,KACVA,OAAQ,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,QAAQ,EAAE,EAAA,IAAI,CAAC,MAAM,CAAU,CAC9C,EACDA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,YAAY,EAAA,EACtBA,OAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,CACG,CACN;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-ybEiHT0b.js');
|
|
4
4
|
|
|
5
5
|
const afFooterColumnCss = ".sc-af-footer-column-h{display:block}.footer-column.sc-af-footer-column{display:flex;flex-direction:column;gap:16px}.footer-column__heading.sc-af-footer-column{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;font-weight:600;color:var(--colour-tints-mistGreen-200, #C6D5D1);margin:0;text-transform:none}.footer-column__list.sc-af-footer-column{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.footer-column__list.sc-af-footer-column-s>li,.footer-column__list .sc-af-footer-column-s>li{margin:0}";
|
|
6
6
|
|
|
@@ -11,7 +11,7 @@ const AfFooterColumn = class {
|
|
|
11
11
|
this.heading = '';
|
|
12
12
|
}
|
|
13
13
|
render() {
|
|
14
|
-
return (index.h(index.Host, { key: '
|
|
14
|
+
return (index.h(index.Host, { key: '90953efd8907072a4a9c336f5a47eafe0317af61' }, index.h("div", { key: 'cef4b4554d8384e86e24c6329f35a8d9eadf6f44', class: "footer-column" }, this.heading && (index.h("h5", { key: '22119f6749453837427dc0438254b271f13d81f6', class: "footer-column__heading" }, this.heading)), index.h("ul", { key: '6a51a9e7e210654d410842b6b2e9c76054c0ecb8', class: "footer-column__list" }, index.h("slot", { key: '5bc741d972164228b460f30981cc306cdd7435fa' })))));
|
|
15
15
|
}
|
|
16
16
|
};
|
|
17
17
|
AfFooterColumn.style = afFooterColumnCss;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-ybEiHT0b.js');
|
|
4
4
|
|
|
5
5
|
const afFooterLinkCss = ".sc-af-footer-link-h{display:contents}li.sc-af-footer-link{margin:0;list-style:none}.footer-link.sc-af-footer-link{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;font-weight:400;color:rgba(198, 213, 209, 0.7);text-decoration:none;transition:color 0.2s ease;display:inline-flex;align-items:center;gap:6px}.footer-link.sc-af-footer-link:hover{color:var(--colour-tints-mistGreen-200, #C6D5D1)}.footer-link__external-icon.sc-af-footer-link{opacity:0.7;flex-shrink:0}";
|
|
6
6
|
|
|
@@ -13,7 +13,7 @@ const AfFooterLink = class {
|
|
|
13
13
|
this.external = false;
|
|
14
14
|
}
|
|
15
15
|
render() {
|
|
16
|
-
return (index.h(index.Host, { key: '
|
|
16
|
+
return (index.h(index.Host, { key: '121d2b0936ddfa70eb6a2db79fc0ae41b28245a8' }, index.h("li", { key: '8528d61539f57e05277b3af353d22e43f61e6c52' }, index.h("a", { key: '05da59ba1868f89e6cc849428b784d530158c0c8', href: this.href, class: "footer-link", target: this.external ? '_blank' : undefined, rel: this.external ? 'noopener noreferrer' : undefined }, index.h("slot", { key: '33aa087cc0634c62e79df7fa210c897720845623' }), this.external && (index.h("svg", { key: 'e024e5e1768b11d113943af0c48a0ae894f4d76d', class: "footer-link__external-icon", width: "12", height: "12", viewBox: "0 0 12 12", fill: "none" }, index.h("path", { key: 'c0ccfe70f94d6df8057ccd1c8ea151e27b9c2dc5', d: "M10 6.5v3a1 1 0 0 1-1 1H2.5a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h3M7.5 1.5h3v3M5.5 6.5l5-5", stroke: "currentColor", "stroke-width": "1.2", "stroke-linecap": "round", "stroke-linejoin": "round" })))))));
|
|
17
17
|
}
|
|
18
18
|
};
|
|
19
19
|
AfFooterLink.style = afFooterLinkCss;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-ybEiHT0b.js');
|
|
4
4
|
|
|
5
|
-
const afFooterCss = ".sc-af-footer-h{display:block}.footer.sc-af-footer{background-color:var(--colour-brand-inkwell, #14343b);color:var(--colour-tints-mistGreen-200, #C6D5D1);padding:
|
|
5
|
+
const afFooterCss = ".sc-af-footer-h{display:block}.footer.sc-af-footer{background-color:var(--colour-brand-inkwell, #14343b);color:var(--colour-tints-mistGreen-200, #C6D5D1);padding:120px 0 0}.footer__container.sc-af-footer{max-width:1280px;margin:0 auto;padding:0 24px}.footer__top.sc-af-footer{display:grid;grid-template-columns:380px 1fr;gap:48px;padding-bottom:48px}.footer__brand.sc-af-footer{display:flex;flex-direction:column;gap:16px}.footer__brand-card.sc-af-footer{background-color:rgba(198, 213, 209, 0.08);border-radius:16px;padding:32px}.footer__logo.sc-af-footer{margin-bottom:24px}.footer__logo.sc-af-footer svg.sc-af-footer,.footer__logo.sc-af-footer img.sc-af-footer{height:32px;width:auto}.footer__social.sc-af-footer{display:flex;gap:12px}.footer__social-link.sc-af-footer{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border:1px solid rgba(198, 213, 209, 0.3);border-radius:50%;color:var(--colour-tints-mistGreen-200, #C6D5D1);transition:all 0.2s ease}.footer__social-link.sc-af-footer:hover{background-color:rgba(198, 213, 209, 0.1);border-color:rgba(198, 213, 209, 0.5)}.footer__contact-card.sc-af-footer{background-color:rgba(198, 213, 209, 0.08);border-radius:16px;padding:24px 32px;display:flex;flex-direction:column;gap:20px}.footer__contact-item.sc-af-footer{display:flex;flex-direction:column;gap:4px}.footer__contact-label.sc-af-footer{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;font-weight:600;color:var(--colour-tints-mistGreen-200, #C6D5D1);margin:0}.footer__contact-value.sc-af-footer{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;font-weight:400;color:rgba(198, 213, 209, 0.7);margin:0}.footer__nav.sc-af-footer{display:flex;flex-direction:column;justify-content:space-between}.footer__nav-columns.sc-af-footer{display:grid;grid-template-columns:repeat(4, 1fr);gap:32px}.footer__nav-column.sc-af-footer{display:flex;flex-direction:column;gap:16px}.footer__nav-heading.sc-af-footer{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;font-weight:600;color:var(--colour-tints-mistGreen-200, #C6D5D1);margin:0;text-transform:none}.footer__nav-list.sc-af-footer{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.footer__nav-list.sc-af-footer li.sc-af-footer{margin:0}.footer__nav-list.sc-af-footer a.sc-af-footer{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;font-weight:400;color:rgba(198, 213, 209, 0.7);text-decoration:none;transition:color 0.2s ease;display:inline-flex;align-items:center;gap:6px}.footer__nav-list.sc-af-footer a.sc-af-footer:hover{color:var(--colour-tints-mistGreen-200, #C6D5D1)}.footer__external-icon.sc-af-footer{opacity:0.7;flex-shrink:0}.footer__status.sc-af-footer{display:flex;align-items:center;gap:8px;margin-top:32px;padding-top:24px;border-top:1px solid rgba(198, 213, 209, 0.1)}.footer__status-dot.sc-af-footer{width:10px;height:10px;border-radius:50%;flex-shrink:0}.footer__status-dot--operational.sc-af-footer{background-color:#22c55e}.footer__status-dot--issue.sc-af-footer{background-color:#ef4444}.footer__status-text.sc-af-footer{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;color:rgba(198, 213, 209, 0.7)}.footer__status-link.sc-af-footer{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;color:var(--colour-tints-mistGreen-200, #C6D5D1);text-decoration:underline;text-underline-offset:2px;margin-left:8px}.footer__status-link.sc-af-footer:hover{text-decoration:none}.footer__bottom.sc-af-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:24px;padding:24px 0;border-top:1px solid rgba(198, 213, 209, 0.1);background-color:rgba(198, 213, 209, 0.05);margin:0 -24px;padding-left:24px;padding-right:24px}.footer__copyright.sc-af-footer{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;color:rgba(198, 213, 209, 0.7);margin:0}.footer__legal.sc-af-footer{display:flex;gap:24px}.footer__legal.sc-af-footer a.sc-af-footer{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;color:rgba(198, 213, 209, 0.7);text-decoration:underline;text-underline-offset:2px}.footer__legal.sc-af-footer a.sc-af-footer:hover{color:var(--colour-tints-mistGreen-200, #C6D5D1);text-decoration:none}.footer__badges.sc-af-footer{display:flex;gap:16px;align-items:center}.footer__badge.sc-af-footer{width:48px;height:48px;display:flex;align-items:center;justify-content:center}.footer__badge.sc-af-footer svg.sc-af-footer{width:100%;height:100%}@media (max-width: 1024px){.footer__top.sc-af-footer{grid-template-columns:1fr;gap:48px}.footer__brand.sc-af-footer{flex-direction:row;gap:16px}.footer__brand-card.sc-af-footer,.footer__contact-card.sc-af-footer{flex:1}}@media (max-width: 768px){.footer.sc-af-footer{padding:48px 0 0}.footer__top.sc-af-footer{gap:32px}.footer__brand.sc-af-footer{flex-direction:column}.footer__nav-columns.sc-af-footer{grid-template-columns:repeat(2, 1fr);gap:32px}.footer__bottom.sc-af-footer{flex-direction:column;align-items:flex-start;gap:16px}.footer__legal.sc-af-footer{flex-wrap:wrap;gap:16px}}@media (max-width: 480px){.footer__container.sc-af-footer{padding:0 16px}.footer__brand-card.sc-af-footer,.footer__contact-card.sc-af-footer{padding:24px}.footer__nav-columns.sc-af-footer{grid-template-columns:1fr;gap:24px}.footer__bottom.sc-af-footer{margin:0 -16px;padding-left:16px;padding-right:16px}.footer__badges.sc-af-footer{width:100%;justify-content:flex-start}}";
|
|
6
6
|
|
|
7
7
|
const AfFooter = class {
|
|
8
8
|
constructor(hostRef) {
|
|
@@ -19,7 +19,7 @@ const AfFooter = class {
|
|
|
19
19
|
this.showStatus = true;
|
|
20
20
|
}
|
|
21
21
|
render() {
|
|
22
|
-
return (index.h(index.Host, { key: '
|
|
22
|
+
return (index.h(index.Host, { key: '58d15bfa72370f9d72767081d7d821ce7e5cfcad' }, index.h("footer", { key: 'f53cc2cb44f334bc6709344d11663bbc8facbde4', class: "footer" }, index.h("div", { key: 'ad17b47d33fad7fea79fee647817ee8dceade8b8', class: "footer__container" }, index.h("div", { key: '24bf87ec90f567b260fdc3bd7f70c76fc72789bc', class: "footer__top" }, index.h("div", { key: '272bbb94a4d889579b9991c016165a7376559024', class: "footer__brand" }, index.h("div", { key: 'f1a892dab1d6ce935451978ae4584dfd0d50bca4', class: "footer__brand-card" }, index.h("div", { key: '15818798cdfd09873836e109472556a224a40f56', class: "footer__logo" }, index.h("slot", { key: 'd753c7044f3870ec66cf37da700cc2bf2aceda2c', name: "logo" })), index.h("div", { key: '2660af6bab2666242dfffe25dc81e050693d024e', class: "footer__social" }, index.h("slot", { key: '76dd64ed787aaa4698ca3687673b32899ed4a6a2', name: "social" }))), index.h("div", { key: '71c365eae2e2f2748cf42978179a1047d51dd391', class: "footer__contact-card" }, index.h("slot", { key: 'df48c5734759ac12a8ef398cf5002c793f02a309', name: "contact" }))), index.h("div", { key: 'b78002e34cc197ab9157697c48eeded05a3acdcd', class: "footer__nav" }, index.h("div", { key: '715717dd80882654ca91ccaf5474953b827f08a3', class: "footer__nav-columns" }, index.h("slot", { key: '062c88854fbd11d4c007e7daf166828db8db2131', name: "nav" })), this.showStatus && (index.h("div", { key: '39cd615cff666e79f0ed91ef90f6ad414f89addd', class: "footer__status" }, index.h("span", { key: '8396b890dc62b5f65c9ba5eaff2db72b83709a2a', class: `footer__status-dot ${this.systemsOperational ? 'footer__status-dot--operational' : 'footer__status-dot--issue'}` }), index.h("span", { key: '5266b10f2e2e8129425cd61acd0865cc6be38ec0', class: "footer__status-text" }, this.statusText), this.statusUrl && (index.h("a", { key: 'c4e999a03cbb89eaaaae079250c9eda8756ca8d6', href: this.statusUrl, target: "_blank", rel: "noopener noreferrer", class: "footer__status-link" }, "Learn more")))))), index.h("div", { key: '354acdb5d3442c876affc6e44c0e3541a27ff06f', class: "footer__bottom" }, this.copyrightText && (index.h("p", { key: '677a8291f263b026a01855422fc08ddd7fb69b89', class: "footer__copyright" }, this.copyrightText)), index.h("div", { key: '46b34f1634c53ff716c53ee575e1894c60b056e8', class: "footer__legal" }, index.h("slot", { key: 'f7ed01d5374e9c7d627ccf47413f62f7ab049ae7', name: "legal" })), index.h("div", { key: 'db6a6911e45c9c50e2c53d21e4aab25d3aa331f7', class: "footer__badges" }, index.h("slot", { key: '1fa6134c03aac63734592e4325663a1e91f92f02', name: "badges" })))))));
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
25
|
AfFooter.style = afFooterCss;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"af-footer.entry.cjs.js","sources":["src/components/af-footer/af-footer.css?tag=af-footer&encapsulation=scoped","src/components/af-footer/af-footer.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.footer {\n background-color: var(--colour-brand-inkwell, #14343b);\n color: var(--colour-tints-mistGreen-200, #C6D5D1);\n padding: 64px 0 0;\n}\n\n.footer__container {\n max-width: 1280px;\n margin: 0 auto;\n padding: 0 24px;\n}\n\n/* Top section layout */\n.footer__top {\n display: grid;\n grid-template-columns: 380px 1fr;\n gap: 48px;\n padding-bottom: 48px;\n}\n\n/* Brand column (left side) */\n.footer__brand {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.footer__brand-card {\n background-color: rgba(198, 213, 209, 0.08);\n border-radius: 16px;\n padding: 32px;\n}\n\n.footer__logo {\n margin-bottom: 24px;\n}\n\n.footer__logo svg,\n.footer__logo img {\n height: 32px;\n width: auto;\n}\n\n.footer__social {\n display: flex;\n gap: 12px;\n}\n\n.footer__social-link {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border: 1px solid rgba(198, 213, 209, 0.3);\n border-radius: 50%;\n color: var(--colour-tints-mistGreen-200, #C6D5D1);\n transition: all 0.2s ease;\n}\n\n.footer__social-link:hover {\n background-color: rgba(198, 213, 209, 0.1);\n border-color: rgba(198, 213, 209, 0.5);\n}\n\n.footer__contact-card {\n background-color: rgba(198, 213, 209, 0.08);\n border-radius: 16px;\n padding: 24px 32px;\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.footer__contact-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.footer__contact-label {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n font-weight: 600;\n color: var(--colour-tints-mistGreen-200, #C6D5D1);\n margin: 0;\n}\n\n.footer__contact-value {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n font-weight: 400;\n color: rgba(198, 213, 209, 0.7);\n margin: 0;\n}\n\n/* Navigation section (right side) */\n.footer__nav {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n\n.footer__nav-columns {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 32px;\n}\n\n.footer__nav-column {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.footer__nav-heading {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n font-weight: 600;\n color: var(--colour-tints-mistGreen-200, #C6D5D1);\n margin: 0;\n text-transform: none;\n}\n\n.footer__nav-list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.footer__nav-list li {\n margin: 0;\n}\n\n.footer__nav-list a {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n font-weight: 400;\n color: rgba(198, 213, 209, 0.7);\n text-decoration: none;\n transition: color 0.2s ease;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.footer__nav-list a:hover {\n color: var(--colour-tints-mistGreen-200, #C6D5D1);\n}\n\n.footer__external-icon {\n opacity: 0.7;\n flex-shrink: 0;\n}\n\n/* Status indicator */\n.footer__status {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 32px;\n padding-top: 24px;\n border-top: 1px solid rgba(198, 213, 209, 0.1);\n}\n\n.footer__status-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.footer__status-dot--operational {\n background-color: #22c55e;\n}\n\n.footer__status-dot--issue {\n background-color: #ef4444;\n}\n\n.footer__status-text {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n color: rgba(198, 213, 209, 0.7);\n}\n\n.footer__status-link {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n color: var(--colour-tints-mistGreen-200, #C6D5D1);\n text-decoration: underline;\n text-underline-offset: 2px;\n margin-left: 8px;\n}\n\n.footer__status-link:hover {\n text-decoration: none;\n}\n\n/* Bottom section */\n.footer__bottom {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n gap: 24px;\n padding: 24px 0;\n border-top: 1px solid rgba(198, 213, 209, 0.1);\n background-color: rgba(198, 213, 209, 0.05);\n margin: 0 -24px;\n padding-left: 24px;\n padding-right: 24px;\n}\n\n.footer__copyright {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n color: rgba(198, 213, 209, 0.7);\n margin: 0;\n}\n\n.footer__legal {\n display: flex;\n gap: 24px;\n}\n\n.footer__legal a {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n color: rgba(198, 213, 209, 0.7);\n text-decoration: underline;\n text-underline-offset: 2px;\n}\n\n.footer__legal a:hover {\n color: var(--colour-tints-mistGreen-200, #C6D5D1);\n text-decoration: none;\n}\n\n.footer__badges {\n display: flex;\n gap: 16px;\n align-items: center;\n}\n\n.footer__badge {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.footer__badge svg {\n width: 100%;\n height: 100%;\n}\n\n/* Responsive styles */\n@media (max-width: 1024px) {\n .footer__top {\n grid-template-columns: 1fr;\n gap: 48px;\n }\n\n .footer__brand {\n flex-direction: row;\n gap: 16px;\n }\n\n .footer__brand-card,\n .footer__contact-card {\n flex: 1;\n }\n}\n\n@media (max-width: 768px) {\n .footer {\n padding: 48px 0 0;\n }\n\n .footer__top {\n gap: 32px;\n }\n\n .footer__brand {\n flex-direction: column;\n }\n\n .footer__nav-columns {\n grid-template-columns: repeat(2, 1fr);\n gap: 32px;\n }\n\n .footer__bottom {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .footer__legal {\n flex-wrap: wrap;\n gap: 16px;\n }\n}\n\n@media (max-width: 480px) {\n .footer__container {\n padding: 0 16px;\n }\n\n .footer__brand-card,\n .footer__contact-card {\n padding: 24px;\n }\n\n .footer__nav-columns {\n grid-template-columns: 1fr;\n gap: 24px;\n }\n\n .footer__bottom {\n margin: 0 -16px;\n padding-left: 16px;\n padding-right: 16px;\n }\n\n .footer__badges {\n width: 100%;\n justify-content: flex-start;\n }\n}\n\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * Footer component for marketing pages\n * Provides a flexible, slot-based layout for footer content\n * All content is passed via slots - no hardcoded links or content\n */\n@Component({\n tag: 'af-footer',\n styleUrl: 'af-footer.css',\n shadow: false,\n scoped: true,\n})\nexport class AfFooter {\n /** Copyright text (e.g., \"© 2025 Company Name. All rights reserved.\") */\n @Prop() copyrightText: string = '';\n\n /** Status message text */\n @Prop() statusText: string = '';\n\n /** Status page URL */\n @Prop() statusUrl: string = '';\n\n /** Whether systems are operational (shows green/red indicator) */\n @Prop() systemsOperational: boolean = true;\n\n /** Whether to show the status indicator */\n @Prop() showStatus: boolean = true;\n\n render() {\n return (\n <Host>\n <footer class=\"footer\">\n <div class=\"footer__container\">\n {/* Top section */}\n <div class=\"footer__top\">\n {/* Left column - Brand area */}\n <div class=\"footer__brand\">\n <div class=\"footer__brand-card\">\n <div class=\"footer__logo\">\n <slot name=\"logo\"></slot>\n </div>\n <div class=\"footer__social\">\n <slot name=\"social\"></slot>\n </div>\n </div>\n\n <div class=\"footer__contact-card\">\n <slot name=\"contact\"></slot>\n </div>\n </div>\n\n {/* Right section - Navigation columns */}\n <div class=\"footer__nav\">\n <div class=\"footer__nav-columns\">\n <slot name=\"nav\"></slot>\n </div>\n\n {/* Status indicator */}\n {this.showStatus && (\n <div class=\"footer__status\">\n <span class={`footer__status-dot ${this.systemsOperational ? 'footer__status-dot--operational' : 'footer__status-dot--issue'}`}></span>\n <span class=\"footer__status-text\">\n {this.statusText}\n </span>\n {this.statusUrl && (\n <a href={this.statusUrl} target=\"_blank\" rel=\"noopener noreferrer\" class=\"footer__status-link\">\n Learn more\n </a>\n )}\n </div>\n )}\n </div>\n </div>\n\n {/* Bottom section */}\n <div class=\"footer__bottom\">\n {this.copyrightText && (\n <p class=\"footer__copyright\">{this.copyrightText}</p>\n )}\n \n <div class=\"footer__legal\">\n <slot name=\"legal\"></slot>\n </div>\n\n <div class=\"footer__badges\">\n <slot name=\"badges\"></slot>\n </div>\n </div>\n </div>\n </footer>\n </Host>\n );\n }\n}\n"],"names":["h","Host"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"af-footer.entry.cjs.js","sources":["src/components/af-footer/af-footer.css?tag=af-footer&encapsulation=scoped","src/components/af-footer/af-footer.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.footer {\n background-color: var(--colour-brand-inkwell, #14343b);\n color: var(--colour-tints-mistGreen-200, #C6D5D1);\n padding: 120px 0 0; /* Extra padding at top for overlapping cards */\n}\n\n.footer__container {\n max-width: 1280px;\n margin: 0 auto;\n padding: 0 24px;\n}\n\n/* Top section layout */\n.footer__top {\n display: grid;\n grid-template-columns: 380px 1fr;\n gap: 48px;\n padding-bottom: 48px;\n}\n\n/* Brand column (left side) */\n.footer__brand {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.footer__brand-card {\n background-color: rgba(198, 213, 209, 0.08);\n border-radius: 16px;\n padding: 32px;\n}\n\n.footer__logo {\n margin-bottom: 24px;\n}\n\n.footer__logo svg,\n.footer__logo img {\n height: 32px;\n width: auto;\n}\n\n.footer__social {\n display: flex;\n gap: 12px;\n}\n\n.footer__social-link {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border: 1px solid rgba(198, 213, 209, 0.3);\n border-radius: 50%;\n color: var(--colour-tints-mistGreen-200, #C6D5D1);\n transition: all 0.2s ease;\n}\n\n.footer__social-link:hover {\n background-color: rgba(198, 213, 209, 0.1);\n border-color: rgba(198, 213, 209, 0.5);\n}\n\n.footer__contact-card {\n background-color: rgba(198, 213, 209, 0.08);\n border-radius: 16px;\n padding: 24px 32px;\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.footer__contact-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.footer__contact-label {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n font-weight: 600;\n color: var(--colour-tints-mistGreen-200, #C6D5D1);\n margin: 0;\n}\n\n.footer__contact-value {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n font-weight: 400;\n color: rgba(198, 213, 209, 0.7);\n margin: 0;\n}\n\n/* Navigation section (right side) */\n.footer__nav {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n\n.footer__nav-columns {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 32px;\n}\n\n.footer__nav-column {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.footer__nav-heading {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n font-weight: 600;\n color: var(--colour-tints-mistGreen-200, #C6D5D1);\n margin: 0;\n text-transform: none;\n}\n\n.footer__nav-list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.footer__nav-list li {\n margin: 0;\n}\n\n.footer__nav-list a {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n font-weight: 400;\n color: rgba(198, 213, 209, 0.7);\n text-decoration: none;\n transition: color 0.2s ease;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n}\n\n.footer__nav-list a:hover {\n color: var(--colour-tints-mistGreen-200, #C6D5D1);\n}\n\n.footer__external-icon {\n opacity: 0.7;\n flex-shrink: 0;\n}\n\n/* Status indicator */\n.footer__status {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 32px;\n padding-top: 24px;\n border-top: 1px solid rgba(198, 213, 209, 0.1);\n}\n\n.footer__status-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.footer__status-dot--operational {\n background-color: #22c55e;\n}\n\n.footer__status-dot--issue {\n background-color: #ef4444;\n}\n\n.footer__status-text {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n color: rgba(198, 213, 209, 0.7);\n}\n\n.footer__status-link {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n color: var(--colour-tints-mistGreen-200, #C6D5D1);\n text-decoration: underline;\n text-underline-offset: 2px;\n margin-left: 8px;\n}\n\n.footer__status-link:hover {\n text-decoration: none;\n}\n\n/* Bottom section */\n.footer__bottom {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n gap: 24px;\n padding: 24px 0;\n border-top: 1px solid rgba(198, 213, 209, 0.1);\n background-color: rgba(198, 213, 209, 0.05);\n margin: 0 -24px;\n padding-left: 24px;\n padding-right: 24px;\n}\n\n.footer__copyright {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n color: rgba(198, 213, 209, 0.7);\n margin: 0;\n}\n\n.footer__legal {\n display: flex;\n gap: 24px;\n}\n\n.footer__legal a {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n color: rgba(198, 213, 209, 0.7);\n text-decoration: underline;\n text-underline-offset: 2px;\n}\n\n.footer__legal a:hover {\n color: var(--colour-tints-mistGreen-200, #C6D5D1);\n text-decoration: none;\n}\n\n.footer__badges {\n display: flex;\n gap: 16px;\n align-items: center;\n}\n\n.footer__badge {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.footer__badge svg {\n width: 100%;\n height: 100%;\n}\n\n/* Responsive styles */\n@media (max-width: 1024px) {\n .footer__top {\n grid-template-columns: 1fr;\n gap: 48px;\n }\n\n .footer__brand {\n flex-direction: row;\n gap: 16px;\n }\n\n .footer__brand-card,\n .footer__contact-card {\n flex: 1;\n }\n}\n\n@media (max-width: 768px) {\n .footer {\n padding: 48px 0 0;\n }\n\n .footer__top {\n gap: 32px;\n }\n\n .footer__brand {\n flex-direction: column;\n }\n\n .footer__nav-columns {\n grid-template-columns: repeat(2, 1fr);\n gap: 32px;\n }\n\n .footer__bottom {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .footer__legal {\n flex-wrap: wrap;\n gap: 16px;\n }\n}\n\n@media (max-width: 480px) {\n .footer__container {\n padding: 0 16px;\n }\n\n .footer__brand-card,\n .footer__contact-card {\n padding: 24px;\n }\n\n .footer__nav-columns {\n grid-template-columns: 1fr;\n gap: 24px;\n }\n\n .footer__bottom {\n margin: 0 -16px;\n padding-left: 16px;\n padding-right: 16px;\n }\n\n .footer__badges {\n width: 100%;\n justify-content: flex-start;\n }\n}\n\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * Footer component for marketing pages\n * Provides a flexible, slot-based layout for footer content\n * All content is passed via slots - no hardcoded links or content\n */\n@Component({\n tag: 'af-footer',\n styleUrl: 'af-footer.css',\n shadow: false,\n scoped: true,\n})\nexport class AfFooter {\n /** Copyright text (e.g., \"© 2025 Company Name. All rights reserved.\") */\n @Prop() copyrightText: string = '';\n\n /** Status message text */\n @Prop() statusText: string = '';\n\n /** Status page URL */\n @Prop() statusUrl: string = '';\n\n /** Whether systems are operational (shows green/red indicator) */\n @Prop() systemsOperational: boolean = true;\n\n /** Whether to show the status indicator */\n @Prop() showStatus: boolean = true;\n\n render() {\n return (\n <Host>\n <footer class=\"footer\">\n <div class=\"footer__container\">\n {/* Top section */}\n <div class=\"footer__top\">\n {/* Left column - Brand area */}\n <div class=\"footer__brand\">\n <div class=\"footer__brand-card\">\n <div class=\"footer__logo\">\n <slot name=\"logo\"></slot>\n </div>\n <div class=\"footer__social\">\n <slot name=\"social\"></slot>\n </div>\n </div>\n\n <div class=\"footer__contact-card\">\n <slot name=\"contact\"></slot>\n </div>\n </div>\n\n {/* Right section - Navigation columns */}\n <div class=\"footer__nav\">\n <div class=\"footer__nav-columns\">\n <slot name=\"nav\"></slot>\n </div>\n\n {/* Status indicator */}\n {this.showStatus && (\n <div class=\"footer__status\">\n <span class={`footer__status-dot ${this.systemsOperational ? 'footer__status-dot--operational' : 'footer__status-dot--issue'}`}></span>\n <span class=\"footer__status-text\">\n {this.statusText}\n </span>\n {this.statusUrl && (\n <a href={this.statusUrl} target=\"_blank\" rel=\"noopener noreferrer\" class=\"footer__status-link\">\n Learn more\n </a>\n )}\n </div>\n )}\n </div>\n </div>\n\n {/* Bottom section */}\n <div class=\"footer__bottom\">\n {this.copyrightText && (\n <p class=\"footer__copyright\">{this.copyrightText}</p>\n )}\n \n <div class=\"footer__legal\">\n <slot name=\"legal\"></slot>\n </div>\n\n <div class=\"footer__badges\">\n <slot name=\"badges\"></slot>\n </div>\n </div>\n </div>\n </footer>\n </Host>\n );\n }\n}\n"],"names":["h","Host"],"mappings":"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"}
|