@affinda/wc 0.0.21 → 0.0.23
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/affinda.css +1 -1
- package/dist/affinda/affinda.esm.js +1 -2
- package/dist/affinda/index.esm.js +1 -2
- package/dist/affinda/p-00a226ba.entry.js +1 -0
- package/dist/affinda/p-020bd9db.entry.js +1 -0
- package/dist/affinda/p-0264279f.entry.js +1 -0
- package/dist/affinda/p-08dc48a4.entry.js +1 -0
- package/dist/affinda/p-09184969.entry.js +1 -0
- package/dist/affinda/p-0ae3495c.entry.js +1 -0
- package/dist/affinda/p-0c6b7f0b.entry.js +1 -0
- package/dist/affinda/p-14c85efd.entry.js +1 -0
- package/dist/affinda/p-1d72e1dd.entry.js +1 -0
- package/dist/affinda/p-20fe557e.entry.js +1 -0
- package/dist/affinda/p-26a60b00.entry.js +1 -0
- package/dist/affinda/p-289cb56f.entry.js +1 -0
- package/dist/affinda/p-29d0a985.entry.js +1 -0
- package/dist/affinda/p-2c0c94c5.entry.js +1 -0
- package/dist/affinda/p-2ce405df.entry.js +1 -0
- package/dist/affinda/p-2d4c1202.entry.js +1 -0
- package/dist/affinda/p-2f1e0c44.entry.js +1 -0
- package/dist/affinda/p-3899a278.entry.js +1 -0
- package/dist/affinda/p-404f2cea.entry.js +1 -0
- package/dist/affinda/p-468d16b1.entry.js +1 -0
- package/dist/affinda/p-46efe4e4.entry.js +1 -0
- package/dist/affinda/p-5136a894.entry.js +1 -0
- package/dist/affinda/{p-6af1634a.entry.js → p-54d85947.entry.js} +1 -2
- package/dist/affinda/p-589a860a.entry.js +1 -0
- package/dist/affinda/p-63e86a14.entry.js +1 -0
- package/dist/affinda/p-6c99b2bb.entry.js +1 -0
- package/dist/affinda/p-7ed6ee6a.entry.js +1 -0
- package/dist/affinda/p-81de8fbd.entry.js +1 -0
- package/dist/affinda/p-81eb85ec.entry.js +1 -0
- package/dist/affinda/p-854f6a9e.entry.js +1 -0
- package/dist/affinda/p-8742f8fe.entry.js +1 -0
- package/dist/affinda/p-8c394de2.entry.js +1 -0
- package/dist/affinda/p-9018ddec.entry.js +1 -0
- package/dist/affinda/p-90edefa8.entry.js +1 -0
- package/dist/affinda/p-9fea6229.entry.js +1 -0
- package/dist/affinda/p-CPfAC9fk.js +2 -0
- package/dist/affinda/p-a5179afb.entry.js +1 -0
- package/dist/affinda/p-a5f7d3d6.entry.js +1 -0
- package/dist/affinda/p-a8af25d5.entry.js +1 -0
- package/dist/affinda/p-ace3c850.entry.js +1 -0
- package/dist/affinda/p-ae43f07b.entry.js +1 -0
- package/dist/affinda/p-aec05709.entry.js +1 -0
- package/dist/affinda/p-af9e25ea.entry.js +1 -0
- package/dist/affinda/p-b477c08a.entry.js +1 -0
- package/dist/affinda/p-b9f58a18.entry.js +1 -0
- package/dist/affinda/p-bd3f81fc.entry.js +1 -0
- package/dist/affinda/p-ca14e17a.entry.js +1 -0
- package/dist/affinda/p-cb889d6b.entry.js +1 -0
- package/dist/affinda/p-cbf0911b.entry.js +1 -0
- package/dist/affinda/{p-2e750d43.entry.js → p-cf4d0d8e.entry.js} +1 -2
- package/dist/affinda/p-cfb90374.entry.js +1 -0
- package/dist/affinda/p-d7129564.entry.js +1 -0
- package/dist/affinda/p-d9cfea73.entry.js +1 -0
- package/dist/affinda/p-df7b1b09.entry.js +1 -0
- package/dist/affinda/p-e0915179.entry.js +1 -0
- package/dist/affinda/p-e3cd6671.entry.js +1 -0
- package/dist/affinda/p-e61dfb97.entry.js +1 -0
- package/dist/affinda/p-e6b4761c.entry.js +1 -0
- package/dist/affinda/p-ecab0884.entry.js +1 -0
- package/dist/affinda/p-ef754e65.entry.js +1 -0
- package/dist/affinda/p-f3d5d1be.entry.js +1 -0
- package/dist/affinda/p-f79781ff.entry.js +1 -0
- package/dist/affinda/p-f825b81f.entry.js +1 -0
- package/dist/affinda/p-ffdd2c30.entry.js +1 -0
- package/dist/cjs/af-accordion-item.cjs.entry.js +7 -6
- package/dist/cjs/af-accordion.cjs.entry.js +7 -6
- package/dist/cjs/af-aspect-ratio.cjs.entry.js +3 -4
- package/dist/cjs/af-button-group.cjs.entry.js +4 -5
- package/dist/cjs/af-button.cjs.entry.js +3 -4
- package/dist/cjs/af-card.cjs.entry.js +4 -5
- package/dist/cjs/af-center.cjs.entry.js +4 -5
- package/dist/cjs/af-checkbox.cjs.entry.js +4 -5
- package/dist/cjs/af-client-carousel.cjs.entry.js +4 -5
- package/dist/cjs/af-color-swatch.cjs.entry.js +3 -4
- package/dist/cjs/af-contact-item.cjs.entry.js +4 -5
- package/dist/cjs/af-container.cjs.entry.js +3 -4
- package/dist/cjs/af-divider.cjs.entry.js +4 -5
- package/dist/cjs/af-feature-accordion.cjs.entry.js +8 -7
- package/dist/cjs/af-feature-card.cjs.entry.js +3 -4
- package/dist/cjs/af-feature-grid.cjs.entry.js +7 -6
- package/dist/cjs/af-fieldset.cjs.entry.js +4 -5
- package/dist/cjs/af-footer-column.cjs.entry.js +4 -5
- package/dist/cjs/af-footer-link.cjs.entry.js +4 -5
- package/dist/cjs/af-footer.cjs.entry.js +4 -5
- package/dist/cjs/af-grid-callout.cjs.entry.js +3 -4
- package/dist/cjs/af-grid.cjs.entry.js +5 -6
- package/dist/cjs/af-heading_5.cjs.entry.js +98 -14
- package/dist/cjs/af-icon-box.cjs.entry.js +4 -5
- package/dist/cjs/af-icon-button.cjs.entry.js +3 -4
- package/dist/cjs/af-icon-text.cjs.entry.js +4 -5
- package/dist/cjs/af-icon.cjs.entry.js +3 -4
- package/dist/cjs/af-illustrated-card.cjs.entry.js +4 -5
- package/dist/cjs/af-image.cjs.entry.js +4 -5
- package/dist/cjs/af-in-page-banner.cjs.entry.js +4 -5
- package/dist/cjs/af-inline.cjs.entry.js +4 -5
- package/dist/cjs/af-input.cjs.entry.js +4 -5
- package/dist/cjs/af-logo-well.cjs.entry.js +4 -5
- package/dist/cjs/af-nav-accordion-item.cjs.entry.js +8 -7
- package/dist/cjs/af-nav-accordion.cjs.entry.js +4 -5
- package/dist/cjs/af-nav-card.cjs.entry.js +3 -4
- package/dist/cjs/af-nav-menu-nest.cjs.entry.js +4 -5
- package/dist/cjs/af-nav-menu.cjs.entry.js +4 -5
- package/dist/cjs/af-number-badge.cjs.entry.js +4 -5
- package/dist/cjs/af-progress-line.cjs.entry.js +5 -6
- package/dist/cjs/af-radio.cjs.entry.js +4 -5
- package/dist/cjs/af-section.cjs.entry.js +5 -6
- package/dist/cjs/af-show.cjs.entry.js +4 -5
- package/dist/cjs/af-social-link.cjs.entry.js +4 -5
- package/dist/cjs/af-spacer.cjs.entry.js +4 -5
- package/dist/cjs/af-split-section.cjs.entry.js +5 -6
- package/dist/cjs/af-stack.cjs.entry.js +4 -5
- package/dist/cjs/af-stepper-step.cjs.entry.js +4 -5
- package/dist/cjs/af-stepper.cjs.entry.js +4 -5
- package/dist/cjs/af-switch.cjs.entry.js +4 -5
- package/dist/cjs/af-tab-bar.cjs.entry.js +4 -5
- package/dist/cjs/af-tab.cjs.entry.js +4 -5
- package/dist/cjs/af-tag.cjs.entry.js +5 -6
- package/dist/cjs/af-testimonial-carousel.cjs.entry.js +4 -5
- package/dist/cjs/af-testimonial-stat.cjs.entry.js +4 -5
- package/dist/cjs/af-testimonial.cjs.entry.js +5 -6
- package/dist/cjs/af-text-image-nest.cjs.entry.js +4 -5
- package/dist/cjs/af-text-image.cjs.entry.js +3 -4
- package/dist/cjs/af-textarea.cjs.entry.js +4 -5
- package/dist/cjs/af-theme-override.cjs.entry.js +4 -5
- package/dist/cjs/af-typography-lockup.cjs.entry.js +4 -5
- package/dist/cjs/af-video-container.cjs.entry.js +4 -5
- package/dist/cjs/af-visually-hidden.cjs.entry.js +4 -5
- package/dist/cjs/affinda.cjs.js +3 -4
- package/dist/cjs/{index-n-fnurTP.js → index-C1ry3YPK.js} +462 -260
- package/dist/cjs/index.cjs.js +20 -21
- package/dist/cjs/loader.cjs.js +2 -3
- package/dist/collection/collection-manifest.json +3 -2
- package/dist/collection/components/af-accordion/af-accordion.js +1 -2
- package/dist/collection/components/af-accordion-item/af-accordion-item.js +1 -2
- package/dist/collection/components/af-aspect-ratio/af-aspect-ratio.js +0 -1
- package/dist/collection/components/af-button/af-button.js +0 -1
- package/dist/collection/components/af-button-group/af-button-group.js +1 -2
- package/dist/collection/components/af-card/af-card.js +1 -2
- package/dist/collection/components/af-center/af-center.js +1 -2
- package/dist/collection/components/af-checkbox/af-checkbox.js +1 -2
- package/dist/collection/components/af-client-carousel/af-client-carousel.js +1 -2
- package/dist/collection/components/af-color-swatch/af-color-swatch.js +0 -1
- package/dist/collection/components/af-contact-item/af-contact-item.js +1 -2
- package/dist/collection/components/af-container/af-container.js +0 -1
- package/dist/collection/components/af-divider/af-divider.js +1 -2
- package/dist/collection/components/af-feature-accordion/af-feature-accordion.js +2 -3
- package/dist/collection/components/af-feature-card/af-feature-card.js +0 -1
- package/dist/collection/components/af-feature-grid/af-feature-grid.js +1 -2
- package/dist/collection/components/af-fieldset/af-fieldset.js +1 -2
- package/dist/collection/components/af-footer/af-footer.js +1 -2
- package/dist/collection/components/af-footer-column/af-footer-column.js +1 -2
- package/dist/collection/components/af-footer-link/af-footer-link.js +1 -2
- package/dist/collection/components/af-grid/af-grid.js +2 -3
- package/dist/collection/components/af-grid-callout/af-grid-callout.js +0 -1
- package/dist/collection/components/af-heading/af-heading.js +0 -1
- package/dist/collection/components/af-icon/af-icon.js +3 -3
- package/dist/collection/components/af-icon-box/af-icon-box.js +4 -4
- package/dist/collection/components/af-icon-button/af-icon-button.js +0 -1
- package/dist/collection/components/af-icon-text/af-icon-text.js +4 -4
- package/dist/collection/components/af-illustrated-card/af-illustrated-card.js +1 -2
- package/dist/collection/components/af-image/af-image.js +1 -2
- package/dist/collection/components/af-in-page-banner/af-in-page-banner.js +1 -2
- package/dist/collection/components/af-inline/af-inline.js +1 -2
- package/dist/collection/components/af-input/af-input.js +1 -2
- package/dist/collection/components/af-logo/af-logo.js +1 -2
- package/dist/collection/components/af-logo-well/af-logo-well.js +1 -2
- package/dist/collection/components/af-nav-accordion/af-nav-accordion.js +1 -2
- package/dist/collection/components/af-nav-accordion-item/af-nav-accordion-item.js +2 -3
- package/dist/collection/components/af-nav-card/af-nav-card.js +0 -1
- package/dist/collection/components/af-nav-item/af-nav-item.js +0 -1
- package/dist/collection/components/af-nav-menu/af-nav-menu.js +1 -2
- package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.js +1 -2
- package/dist/collection/components/af-navbar/af-navbar.js +114 -6
- package/dist/collection/components/af-number-badge/af-number-badge.js +1 -2
- package/dist/collection/components/af-progress-line/af-progress-line.js +2 -3
- package/dist/collection/components/af-radio/af-radio.js +1 -2
- package/dist/collection/components/af-section/af-section.js +2 -3
- package/dist/collection/components/af-show/af-show.js +1 -2
- package/dist/collection/components/af-social-link/af-social-link.js +1 -2
- package/dist/collection/components/af-spacer/af-spacer.js +1 -2
- package/dist/collection/components/af-split-section/af-split-section.js +2 -3
- package/dist/collection/components/af-stack/af-stack.js +1 -2
- package/dist/collection/components/af-stepper/af-stepper.js +1 -2
- package/dist/collection/components/af-stepper-step/af-stepper-step.js +1 -2
- package/dist/collection/components/af-switch/af-switch.js +1 -2
- package/dist/collection/components/af-tab/af-tab.js +1 -2
- package/dist/collection/components/af-tab-bar/af-tab-bar.js +1 -2
- package/dist/collection/components/af-tag/af-tag.js +2 -3
- package/dist/collection/components/af-testimonial/af-testimonial.js +2 -3
- package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js +1 -2
- package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js +1 -2
- package/dist/collection/components/af-text/af-text.js +0 -1
- package/dist/collection/components/af-text-image/af-text-image.js +0 -1
- package/dist/collection/components/af-text-image-nest/af-text-image-nest.js +1 -2
- package/dist/collection/components/af-textarea/af-textarea.js +1 -2
- package/dist/collection/components/af-theme-override/af-theme-override.js +1 -2
- package/dist/collection/components/af-typography-lockup/af-typography-lockup.js +1 -2
- package/dist/collection/components/af-video-container/af-video-container.js +1 -2
- package/dist/collection/components/af-visually-hidden/af-visually-hidden.js +1 -2
- package/dist/collection/components.js +0 -1
- package/dist/collection/index.js +0 -1
- package/dist/components/af-accordion-item.js +1 -107
- package/dist/components/af-accordion.js +1 -128
- package/dist/components/af-aspect-ratio.js +1 -9
- package/dist/components/af-button-group.js +1 -9
- package/dist/components/af-button.js +1 -9
- package/dist/components/af-card.js +1 -9
- package/dist/components/af-center.js +1 -66
- package/dist/components/af-checkbox.js +1 -9
- package/dist/components/af-client-carousel.js +1 -53
- package/dist/components/af-color-swatch.js +1 -9
- package/dist/components/af-contact-item.js +1 -44
- package/dist/components/af-container.js +1 -9
- package/dist/components/af-divider.js +1 -66
- package/dist/components/af-feature-accordion.js +1 -136
- package/dist/components/af-feature-card.js +1 -9
- package/dist/components/af-feature-grid.js +1 -124
- package/dist/components/af-fieldset.js +1 -9
- package/dist/components/af-footer-column.js +1 -41
- package/dist/components/af-footer-link.js +1 -44
- package/dist/components/af-footer.js +1 -53
- package/dist/components/af-grid-callout.js +1 -82
- package/dist/components/af-grid.js +1 -71
- package/dist/components/af-heading.js +1 -9
- package/dist/components/af-icon-box.js +1 -9
- package/dist/components/af-icon-button.js +1 -9
- package/dist/components/af-icon-text.js +1 -78
- package/dist/components/af-icon.js +1 -9
- package/dist/components/af-illustrated-card.js +1 -9
- package/dist/components/af-image.js +1 -9
- package/dist/components/af-in-page-banner.js +1 -82
- package/dist/components/af-inline.js +1 -83
- package/dist/components/af-input.js +1 -9
- package/dist/components/af-logo-well.js +1 -38
- package/dist/components/af-logo.js +1 -9
- package/dist/components/af-nav-accordion-item.js +1 -117
- package/dist/components/af-nav-accordion.js +1 -106
- package/dist/components/af-nav-card.js +1 -62
- package/dist/components/af-nav-item.js +1 -9
- package/dist/components/af-nav-menu-nest.js +1 -67
- package/dist/components/af-nav-menu.js +1 -65
- package/dist/components/af-navbar.js +1 -9
- package/dist/components/af-number-badge.js +1 -66
- package/dist/components/af-progress-line.js +1 -9
- package/dist/components/af-radio.js +1 -9
- package/dist/components/af-section.js +1 -54
- package/dist/components/af-show.js +1 -46
- package/dist/components/af-social-link.js +1 -63
- package/dist/components/af-spacer.js +1 -69
- package/dist/components/af-split-section.js +1 -71
- package/dist/components/af-stack.js +1 -90
- package/dist/components/af-stepper-step.js +1 -44
- package/dist/components/af-stepper.js +1 -55
- package/dist/components/af-switch.js +1 -9
- package/dist/components/af-tab-bar.js +1 -9
- package/dist/components/af-tab.js +1 -9
- package/dist/components/af-tag.js +1 -9
- package/dist/components/af-testimonial-carousel.js +1 -131
- package/dist/components/af-testimonial-stat.js +1 -57
- package/dist/components/af-testimonial.js +1 -88
- package/dist/components/af-text-image-nest.js +1 -51
- package/dist/components/af-text-image.js +1 -94
- package/dist/components/af-text.js +1 -9
- package/dist/components/af-textarea.js +1 -9
- package/dist/components/af-theme-override.js +1 -44
- package/dist/components/af-typography-lockup.js +1 -9
- package/dist/components/af-video-container.js +1 -70
- package/dist/components/af-visually-hidden.js +1 -45
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +1 -27
- package/dist/components/p--UJ_xE9Z.js +1 -0
- package/dist/components/p-0KrQFK77.js +1 -0
- package/dist/components/p-9SgEr6QK.js +1 -0
- package/dist/components/p-B6I3yxMd.js +1 -0
- package/dist/components/p-BCCbAFc1.js +1 -0
- package/dist/components/p-BLzlyxBT.js +1 -0
- package/dist/components/p-BUFbtjxU.js +1 -0
- package/dist/components/p-BeVM-2kH.js +1 -0
- package/dist/components/p-BeX5VmwL.js +1 -0
- package/dist/components/p-BlfywPKX.js +1 -0
- package/dist/components/p-BqUK0ZTO.js +1 -0
- package/dist/components/p-BzH2LxRQ.js +1 -0
- package/dist/components/p-CDCZfKNt.js +1 -0
- package/dist/components/p-CHNaDIj5.js +1 -0
- package/dist/components/p-CSGAhCLK.js +1 -0
- package/dist/components/p-CTFMTG3E.js +1 -0
- package/dist/components/p-CTcar4TG.js +1 -0
- package/dist/components/p-CVQiSujq.js +1 -0
- package/dist/components/p-C_BrhG1Q.js +1 -0
- package/dist/components/p-DOJEJFNa.js +1 -0
- package/dist/components/p-DPujlxcb.js +1 -0
- package/dist/components/p-DRm58pvc.js +1 -0
- package/dist/components/p-DX19jO3u.js +1 -0
- package/dist/components/p-DsNqeD3z.js +1 -0
- package/dist/components/p-Dx31qPzk.js +1 -0
- package/dist/components/p-HhMv1A3-.js +1 -0
- package/dist/components/p-UTiuvQaz.js +1 -0
- package/dist/components/p-tB2jS8S_.js +1 -0
- package/dist/components/p-tF59ipRp.js +1 -0
- package/dist/esm/af-accordion-item.entry.js +7 -6
- package/dist/esm/af-accordion.entry.js +7 -6
- package/dist/esm/af-aspect-ratio.entry.js +3 -4
- package/dist/esm/af-button-group.entry.js +4 -5
- package/dist/esm/af-button.entry.js +3 -4
- package/dist/esm/af-card.entry.js +4 -5
- package/dist/esm/af-center.entry.js +4 -5
- package/dist/esm/af-checkbox.entry.js +4 -5
- package/dist/esm/af-client-carousel.entry.js +4 -5
- package/dist/esm/af-color-swatch.entry.js +3 -4
- package/dist/esm/af-contact-item.entry.js +4 -5
- package/dist/esm/af-container.entry.js +3 -4
- package/dist/esm/af-divider.entry.js +4 -5
- package/dist/esm/af-feature-accordion.entry.js +8 -7
- package/dist/esm/af-feature-card.entry.js +3 -4
- package/dist/esm/af-feature-grid.entry.js +7 -6
- package/dist/esm/af-fieldset.entry.js +4 -5
- package/dist/esm/af-footer-column.entry.js +4 -5
- package/dist/esm/af-footer-link.entry.js +4 -5
- package/dist/esm/af-footer.entry.js +4 -5
- package/dist/esm/af-grid-callout.entry.js +3 -4
- package/dist/esm/af-grid.entry.js +5 -6
- package/dist/esm/af-heading_5.entry.js +98 -14
- package/dist/esm/af-icon-box.entry.js +4 -5
- package/dist/esm/af-icon-button.entry.js +3 -4
- package/dist/esm/af-icon-text.entry.js +4 -5
- package/dist/esm/af-icon.entry.js +3 -4
- package/dist/esm/af-illustrated-card.entry.js +4 -5
- package/dist/esm/af-image.entry.js +4 -5
- package/dist/esm/af-in-page-banner.entry.js +4 -5
- package/dist/esm/af-inline.entry.js +4 -5
- package/dist/esm/af-input.entry.js +4 -5
- package/dist/esm/af-logo-well.entry.js +4 -5
- package/dist/esm/af-nav-accordion-item.entry.js +8 -7
- package/dist/esm/af-nav-accordion.entry.js +4 -5
- package/dist/esm/af-nav-card.entry.js +3 -4
- package/dist/esm/af-nav-menu-nest.entry.js +4 -5
- package/dist/esm/af-nav-menu.entry.js +4 -5
- package/dist/esm/af-number-badge.entry.js +4 -5
- package/dist/esm/af-progress-line.entry.js +5 -6
- package/dist/esm/af-radio.entry.js +4 -5
- package/dist/esm/af-section.entry.js +5 -6
- package/dist/esm/af-show.entry.js +4 -5
- package/dist/esm/af-social-link.entry.js +4 -5
- package/dist/esm/af-spacer.entry.js +4 -5
- package/dist/esm/af-split-section.entry.js +5 -6
- package/dist/esm/af-stack.entry.js +4 -5
- package/dist/esm/af-stepper-step.entry.js +4 -5
- package/dist/esm/af-stepper.entry.js +4 -5
- package/dist/esm/af-switch.entry.js +4 -5
- package/dist/esm/af-tab-bar.entry.js +4 -5
- package/dist/esm/af-tab.entry.js +4 -5
- package/dist/esm/af-tag.entry.js +5 -6
- package/dist/esm/af-testimonial-carousel.entry.js +4 -5
- package/dist/esm/af-testimonial-stat.entry.js +4 -5
- package/dist/esm/af-testimonial.entry.js +5 -6
- package/dist/esm/af-text-image-nest.entry.js +4 -5
- package/dist/esm/af-text-image.entry.js +3 -4
- package/dist/esm/af-textarea.entry.js +4 -5
- package/dist/esm/af-theme-override.entry.js +4 -5
- package/dist/esm/af-typography-lockup.entry.js +4 -5
- package/dist/esm/af-video-container.entry.js +4 -5
- package/dist/esm/af-visually-hidden.entry.js +4 -5
- package/dist/esm/affinda.js +4 -5
- package/dist/esm/{index-B0LVveHp.js → index-CPfAC9fk.js} +462 -260
- package/dist/esm/index.js +2 -3
- package/dist/esm/loader.js +3 -4
- package/dist/types/components/af-navbar/af-navbar.d.ts +33 -4
- package/dist/types/components.d.ts +524 -147
- package/dist/types/stencil-public-runtime.d.ts +110 -6
- package/package.json +1 -1
- package/dist/affinda/af-accordion-item.entry.esm.js.map +0 -1
- package/dist/affinda/af-accordion.entry.esm.js.map +0 -1
- package/dist/affinda/af-aspect-ratio.entry.esm.js.map +0 -1
- package/dist/affinda/af-button-group.entry.esm.js.map +0 -1
- package/dist/affinda/af-button.entry.esm.js.map +0 -1
- package/dist/affinda/af-card.entry.esm.js.map +0 -1
- package/dist/affinda/af-center.entry.esm.js.map +0 -1
- package/dist/affinda/af-checkbox.entry.esm.js.map +0 -1
- package/dist/affinda/af-client-carousel.entry.esm.js.map +0 -1
- package/dist/affinda/af-color-swatch.entry.esm.js.map +0 -1
- package/dist/affinda/af-contact-item.entry.esm.js.map +0 -1
- package/dist/affinda/af-container.entry.esm.js.map +0 -1
- package/dist/affinda/af-divider.entry.esm.js.map +0 -1
- package/dist/affinda/af-feature-accordion.entry.esm.js.map +0 -1
- package/dist/affinda/af-feature-card.entry.esm.js.map +0 -1
- package/dist/affinda/af-feature-grid.entry.esm.js.map +0 -1
- package/dist/affinda/af-fieldset.entry.esm.js.map +0 -1
- package/dist/affinda/af-footer-column.entry.esm.js.map +0 -1
- package/dist/affinda/af-footer-link.entry.esm.js.map +0 -1
- package/dist/affinda/af-footer.entry.esm.js.map +0 -1
- package/dist/affinda/af-grid-callout.entry.esm.js.map +0 -1
- package/dist/affinda/af-grid.entry.esm.js.map +0 -1
- package/dist/affinda/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.esm.js.map +0 -1
- package/dist/affinda/af-icon-box.entry.esm.js.map +0 -1
- package/dist/affinda/af-icon-button.entry.esm.js.map +0 -1
- package/dist/affinda/af-icon-text.entry.esm.js.map +0 -1
- package/dist/affinda/af-icon.entry.esm.js.map +0 -1
- package/dist/affinda/af-illustrated-card.entry.esm.js.map +0 -1
- package/dist/affinda/af-image.entry.esm.js.map +0 -1
- package/dist/affinda/af-in-page-banner.entry.esm.js.map +0 -1
- package/dist/affinda/af-inline.entry.esm.js.map +0 -1
- package/dist/affinda/af-input.entry.esm.js.map +0 -1
- package/dist/affinda/af-logo-well.entry.esm.js.map +0 -1
- package/dist/affinda/af-nav-accordion-item.entry.esm.js.map +0 -1
- package/dist/affinda/af-nav-accordion.entry.esm.js.map +0 -1
- package/dist/affinda/af-nav-card.entry.esm.js.map +0 -1
- package/dist/affinda/af-nav-menu-nest.entry.esm.js.map +0 -1
- package/dist/affinda/af-nav-menu.entry.esm.js.map +0 -1
- package/dist/affinda/af-number-badge.entry.esm.js.map +0 -1
- package/dist/affinda/af-progress-line.entry.esm.js.map +0 -1
- package/dist/affinda/af-radio.entry.esm.js.map +0 -1
- package/dist/affinda/af-section.entry.esm.js.map +0 -1
- package/dist/affinda/af-show.entry.esm.js.map +0 -1
- package/dist/affinda/af-social-link.entry.esm.js.map +0 -1
- package/dist/affinda/af-spacer.entry.esm.js.map +0 -1
- package/dist/affinda/af-split-section.entry.esm.js.map +0 -1
- package/dist/affinda/af-stack.entry.esm.js.map +0 -1
- package/dist/affinda/af-stepper-step.entry.esm.js.map +0 -1
- package/dist/affinda/af-stepper.entry.esm.js.map +0 -1
- package/dist/affinda/af-switch.entry.esm.js.map +0 -1
- package/dist/affinda/af-tab-bar.entry.esm.js.map +0 -1
- package/dist/affinda/af-tab.entry.esm.js.map +0 -1
- package/dist/affinda/af-tag.entry.esm.js.map +0 -1
- package/dist/affinda/af-testimonial-carousel.entry.esm.js.map +0 -1
- package/dist/affinda/af-testimonial-stat.entry.esm.js.map +0 -1
- package/dist/affinda/af-testimonial.entry.esm.js.map +0 -1
- package/dist/affinda/af-text-image-nest.entry.esm.js.map +0 -1
- package/dist/affinda/af-text-image.entry.esm.js.map +0 -1
- package/dist/affinda/af-textarea.entry.esm.js.map +0 -1
- package/dist/affinda/af-theme-override.entry.esm.js.map +0 -1
- package/dist/affinda/af-typography-lockup.entry.esm.js.map +0 -1
- package/dist/affinda/af-video-container.entry.esm.js.map +0 -1
- package/dist/affinda/af-visually-hidden.entry.esm.js.map +0 -1
- package/dist/affinda/affinda.esm.js.map +0 -1
- package/dist/affinda/index.esm.js.map +0 -1
- package/dist/affinda/loader.esm.js.map +0 -1
- package/dist/affinda/p-04de9a0a.entry.js +0 -2
- package/dist/affinda/p-04de9a0a.entry.js.map +0 -1
- package/dist/affinda/p-07efc7a0.entry.js +0 -2
- package/dist/affinda/p-07efc7a0.entry.js.map +0 -1
- package/dist/affinda/p-08143c7e.entry.js +0 -2
- package/dist/affinda/p-08143c7e.entry.js.map +0 -1
- package/dist/affinda/p-0fb16377.entry.js +0 -2
- package/dist/affinda/p-0fb16377.entry.js.map +0 -1
- package/dist/affinda/p-0fcce1e4.entry.js +0 -2
- package/dist/affinda/p-0fcce1e4.entry.js.map +0 -1
- package/dist/affinda/p-122b6e96.entry.js +0 -2
- package/dist/affinda/p-122b6e96.entry.js.map +0 -1
- package/dist/affinda/p-19eb7cb9.entry.js +0 -2
- package/dist/affinda/p-19eb7cb9.entry.js.map +0 -1
- package/dist/affinda/p-1a87dd1c.entry.js +0 -2
- package/dist/affinda/p-1a87dd1c.entry.js.map +0 -1
- package/dist/affinda/p-202bac33.entry.js +0 -2
- package/dist/affinda/p-202bac33.entry.js.map +0 -1
- package/dist/affinda/p-2e50c27d.entry.js +0 -2
- package/dist/affinda/p-2e50c27d.entry.js.map +0 -1
- package/dist/affinda/p-2e750d43.entry.js.map +0 -1
- package/dist/affinda/p-2e8682a0.entry.js +0 -2
- package/dist/affinda/p-2e8682a0.entry.js.map +0 -1
- package/dist/affinda/p-302d0cf7.entry.js +0 -2
- package/dist/affinda/p-302d0cf7.entry.js.map +0 -1
- package/dist/affinda/p-3642589b.entry.js +0 -2
- package/dist/affinda/p-3642589b.entry.js.map +0 -1
- package/dist/affinda/p-389a6246.entry.js +0 -2
- package/dist/affinda/p-389a6246.entry.js.map +0 -1
- package/dist/affinda/p-391bb085.entry.js +0 -2
- package/dist/affinda/p-391bb085.entry.js.map +0 -1
- package/dist/affinda/p-3e16bb11.entry.js +0 -2
- package/dist/affinda/p-3e16bb11.entry.js.map +0 -1
- package/dist/affinda/p-3fc2a3dc.entry.js +0 -2
- package/dist/affinda/p-3fc2a3dc.entry.js.map +0 -1
- package/dist/affinda/p-45f76ad4.entry.js +0 -2
- package/dist/affinda/p-45f76ad4.entry.js.map +0 -1
- package/dist/affinda/p-4fcb61d1.entry.js +0 -2
- package/dist/affinda/p-4fcb61d1.entry.js.map +0 -1
- package/dist/affinda/p-517543bd.entry.js +0 -2
- package/dist/affinda/p-517543bd.entry.js.map +0 -1
- package/dist/affinda/p-5591bc79.entry.js +0 -2
- package/dist/affinda/p-5591bc79.entry.js.map +0 -1
- package/dist/affinda/p-6179957e.entry.js +0 -2
- package/dist/affinda/p-6179957e.entry.js.map +0 -1
- package/dist/affinda/p-62699653.entry.js +0 -2
- package/dist/affinda/p-62699653.entry.js.map +0 -1
- package/dist/affinda/p-6a5fa86a.entry.js +0 -2
- package/dist/affinda/p-6a5fa86a.entry.js.map +0 -1
- package/dist/affinda/p-6af1634a.entry.js.map +0 -1
- package/dist/affinda/p-6b92463e.entry.js +0 -2
- package/dist/affinda/p-6b92463e.entry.js.map +0 -1
- package/dist/affinda/p-6bbc1e24.entry.js +0 -2
- package/dist/affinda/p-6bbc1e24.entry.js.map +0 -1
- package/dist/affinda/p-709271d1.entry.js +0 -2
- package/dist/affinda/p-709271d1.entry.js.map +0 -1
- package/dist/affinda/p-76475b41.entry.js +0 -2
- package/dist/affinda/p-76475b41.entry.js.map +0 -1
- package/dist/affinda/p-78ff69a4.entry.js +0 -2
- package/dist/affinda/p-78ff69a4.entry.js.map +0 -1
- package/dist/affinda/p-79e6fc73.entry.js +0 -2
- package/dist/affinda/p-79e6fc73.entry.js.map +0 -1
- package/dist/affinda/p-7da3a28f.entry.js +0 -2
- package/dist/affinda/p-7da3a28f.entry.js.map +0 -1
- package/dist/affinda/p-86a9ff3e.entry.js +0 -2
- package/dist/affinda/p-86a9ff3e.entry.js.map +0 -1
- package/dist/affinda/p-9242c8d1.entry.js +0 -2
- package/dist/affinda/p-9242c8d1.entry.js.map +0 -1
- package/dist/affinda/p-933560e0.entry.js +0 -2
- package/dist/affinda/p-933560e0.entry.js.map +0 -1
- package/dist/affinda/p-B0LVveHp.js +0 -3
- package/dist/affinda/p-B0LVveHp.js.map +0 -1
- package/dist/affinda/p-a2c71cad.entry.js +0 -2
- package/dist/affinda/p-a2c71cad.entry.js.map +0 -1
- package/dist/affinda/p-a53d5549.entry.js +0 -2
- package/dist/affinda/p-a53d5549.entry.js.map +0 -1
- package/dist/affinda/p-a6402689.entry.js +0 -2
- package/dist/affinda/p-a6402689.entry.js.map +0 -1
- package/dist/affinda/p-a7574570.entry.js +0 -2
- package/dist/affinda/p-a7574570.entry.js.map +0 -1
- package/dist/affinda/p-a942522f.entry.js +0 -2
- package/dist/affinda/p-a942522f.entry.js.map +0 -1
- package/dist/affinda/p-accd917e.entry.js +0 -2
- package/dist/affinda/p-accd917e.entry.js.map +0 -1
- package/dist/affinda/p-ad9b0eec.entry.js +0 -2
- package/dist/affinda/p-ad9b0eec.entry.js.map +0 -1
- package/dist/affinda/p-b18767cf.entry.js +0 -2
- package/dist/affinda/p-b18767cf.entry.js.map +0 -1
- package/dist/affinda/p-b85e2bff.entry.js +0 -2
- package/dist/affinda/p-b85e2bff.entry.js.map +0 -1
- package/dist/affinda/p-bb67cf12.entry.js +0 -2
- package/dist/affinda/p-bb67cf12.entry.js.map +0 -1
- package/dist/affinda/p-c01eaa85.entry.js +0 -2
- package/dist/affinda/p-c01eaa85.entry.js.map +0 -1
- package/dist/affinda/p-c225ac8c.entry.js +0 -2
- package/dist/affinda/p-c225ac8c.entry.js.map +0 -1
- package/dist/affinda/p-c3d7872c.entry.js +0 -2
- package/dist/affinda/p-c3d7872c.entry.js.map +0 -1
- package/dist/affinda/p-c51a2687.entry.js +0 -2
- package/dist/affinda/p-c51a2687.entry.js.map +0 -1
- package/dist/affinda/p-d28b0860.entry.js +0 -2
- package/dist/affinda/p-d28b0860.entry.js.map +0 -1
- package/dist/affinda/p-d74a7ae9.entry.js +0 -2
- package/dist/affinda/p-d74a7ae9.entry.js.map +0 -1
- package/dist/affinda/p-e2f555fc.entry.js +0 -2
- package/dist/affinda/p-e2f555fc.entry.js.map +0 -1
- package/dist/affinda/p-e305c2b7.entry.js +0 -2
- package/dist/affinda/p-e305c2b7.entry.js.map +0 -1
- package/dist/affinda/p-e37fea2f.entry.js +0 -2
- package/dist/affinda/p-e37fea2f.entry.js.map +0 -1
- package/dist/affinda/p-ea02610f.entry.js +0 -2
- package/dist/affinda/p-ea02610f.entry.js.map +0 -1
- package/dist/affinda/p-ea0ccbce.entry.js +0 -2
- package/dist/affinda/p-ea0ccbce.entry.js.map +0 -1
- package/dist/affinda/p-eebb5101.entry.js +0 -2
- package/dist/affinda/p-eebb5101.entry.js.map +0 -1
- package/dist/affinda/p-f1dd31bd.entry.js +0 -2
- package/dist/affinda/p-f1dd31bd.entry.js.map +0 -1
- package/dist/affinda/p-f4d2a07d.entry.js +0 -2
- package/dist/affinda/p-f4d2a07d.entry.js.map +0 -1
- package/dist/affinda/p-f78dd237.entry.js +0 -2
- package/dist/affinda/p-f78dd237.entry.js.map +0 -1
- package/dist/affinda/p-f8bdddf5.entry.js +0 -2
- package/dist/affinda/p-f8bdddf5.entry.js.map +0 -1
- package/dist/affinda/p-fd772813.entry.js +0 -2
- package/dist/affinda/p-fd772813.entry.js.map +0 -1
- package/dist/cjs/af-accordion-item.entry.cjs.js.map +0 -1
- package/dist/cjs/af-accordion.entry.cjs.js.map +0 -1
- package/dist/cjs/af-aspect-ratio.entry.cjs.js.map +0 -1
- package/dist/cjs/af-button-group.entry.cjs.js.map +0 -1
- package/dist/cjs/af-button.entry.cjs.js.map +0 -1
- package/dist/cjs/af-card.entry.cjs.js.map +0 -1
- package/dist/cjs/af-center.entry.cjs.js.map +0 -1
- package/dist/cjs/af-checkbox.entry.cjs.js.map +0 -1
- package/dist/cjs/af-client-carousel.entry.cjs.js.map +0 -1
- package/dist/cjs/af-color-swatch.entry.cjs.js.map +0 -1
- package/dist/cjs/af-contact-item.entry.cjs.js.map +0 -1
- package/dist/cjs/af-container.entry.cjs.js.map +0 -1
- package/dist/cjs/af-divider.entry.cjs.js.map +0 -1
- package/dist/cjs/af-feature-accordion.entry.cjs.js.map +0 -1
- package/dist/cjs/af-feature-card.entry.cjs.js.map +0 -1
- package/dist/cjs/af-feature-grid.entry.cjs.js.map +0 -1
- package/dist/cjs/af-fieldset.entry.cjs.js.map +0 -1
- package/dist/cjs/af-footer-column.entry.cjs.js.map +0 -1
- package/dist/cjs/af-footer-link.entry.cjs.js.map +0 -1
- package/dist/cjs/af-footer.entry.cjs.js.map +0 -1
- package/dist/cjs/af-grid-callout.entry.cjs.js.map +0 -1
- package/dist/cjs/af-grid.entry.cjs.js.map +0 -1
- package/dist/cjs/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.cjs.js.map +0 -1
- package/dist/cjs/af-icon-box.entry.cjs.js.map +0 -1
- package/dist/cjs/af-icon-button.entry.cjs.js.map +0 -1
- package/dist/cjs/af-icon-text.entry.cjs.js.map +0 -1
- package/dist/cjs/af-icon.entry.cjs.js.map +0 -1
- package/dist/cjs/af-illustrated-card.entry.cjs.js.map +0 -1
- package/dist/cjs/af-image.entry.cjs.js.map +0 -1
- package/dist/cjs/af-in-page-banner.entry.cjs.js.map +0 -1
- package/dist/cjs/af-inline.entry.cjs.js.map +0 -1
- package/dist/cjs/af-input.entry.cjs.js.map +0 -1
- package/dist/cjs/af-logo-well.entry.cjs.js.map +0 -1
- package/dist/cjs/af-nav-accordion-item.entry.cjs.js.map +0 -1
- package/dist/cjs/af-nav-accordion.entry.cjs.js.map +0 -1
- package/dist/cjs/af-nav-card.entry.cjs.js.map +0 -1
- package/dist/cjs/af-nav-menu-nest.entry.cjs.js.map +0 -1
- package/dist/cjs/af-nav-menu.entry.cjs.js.map +0 -1
- package/dist/cjs/af-number-badge.entry.cjs.js.map +0 -1
- package/dist/cjs/af-progress-line.entry.cjs.js.map +0 -1
- package/dist/cjs/af-radio.entry.cjs.js.map +0 -1
- package/dist/cjs/af-section.entry.cjs.js.map +0 -1
- package/dist/cjs/af-show.entry.cjs.js.map +0 -1
- package/dist/cjs/af-social-link.entry.cjs.js.map +0 -1
- package/dist/cjs/af-spacer.entry.cjs.js.map +0 -1
- package/dist/cjs/af-split-section.entry.cjs.js.map +0 -1
- package/dist/cjs/af-stack.entry.cjs.js.map +0 -1
- package/dist/cjs/af-stepper-step.entry.cjs.js.map +0 -1
- package/dist/cjs/af-stepper.entry.cjs.js.map +0 -1
- package/dist/cjs/af-switch.entry.cjs.js.map +0 -1
- package/dist/cjs/af-tab-bar.entry.cjs.js.map +0 -1
- package/dist/cjs/af-tab.entry.cjs.js.map +0 -1
- package/dist/cjs/af-tag.entry.cjs.js.map +0 -1
- package/dist/cjs/af-testimonial-carousel.entry.cjs.js.map +0 -1
- package/dist/cjs/af-testimonial-stat.entry.cjs.js.map +0 -1
- package/dist/cjs/af-testimonial.entry.cjs.js.map +0 -1
- package/dist/cjs/af-text-image-nest.entry.cjs.js.map +0 -1
- package/dist/cjs/af-text-image.entry.cjs.js.map +0 -1
- package/dist/cjs/af-textarea.entry.cjs.js.map +0 -1
- package/dist/cjs/af-theme-override.entry.cjs.js.map +0 -1
- package/dist/cjs/af-typography-lockup.entry.cjs.js.map +0 -1
- package/dist/cjs/af-video-container.entry.cjs.js.map +0 -1
- package/dist/cjs/af-visually-hidden.entry.cjs.js.map +0 -1
- package/dist/cjs/affinda.cjs.js.map +0 -1
- package/dist/cjs/index-n-fnurTP.js.map +0 -1
- package/dist/cjs/index.cjs.js.map +0 -1
- package/dist/cjs/loader.cjs.js.map +0 -1
- package/dist/collection/components/af-accordion/af-accordion.js.map +0 -1
- package/dist/collection/components/af-accordion-item/af-accordion-item.js.map +0 -1
- package/dist/collection/components/af-aspect-ratio/af-aspect-ratio.js.map +0 -1
- package/dist/collection/components/af-button/af-button.js.map +0 -1
- package/dist/collection/components/af-button-group/af-button-group.js.map +0 -1
- package/dist/collection/components/af-card/af-card.js.map +0 -1
- package/dist/collection/components/af-center/af-center.js.map +0 -1
- package/dist/collection/components/af-checkbox/af-checkbox.js.map +0 -1
- package/dist/collection/components/af-client-carousel/af-client-carousel.js.map +0 -1
- package/dist/collection/components/af-color-swatch/af-color-swatch.js.map +0 -1
- package/dist/collection/components/af-contact-item/af-contact-item.js.map +0 -1
- package/dist/collection/components/af-container/af-container.js.map +0 -1
- package/dist/collection/components/af-divider/af-divider.js.map +0 -1
- package/dist/collection/components/af-feature-accordion/af-feature-accordion.js.map +0 -1
- package/dist/collection/components/af-feature-card/af-feature-card.js.map +0 -1
- package/dist/collection/components/af-feature-grid/af-feature-grid.js.map +0 -1
- package/dist/collection/components/af-fieldset/af-fieldset.js.map +0 -1
- package/dist/collection/components/af-footer/af-footer.js.map +0 -1
- package/dist/collection/components/af-footer-column/af-footer-column.js.map +0 -1
- package/dist/collection/components/af-footer-link/af-footer-link.js.map +0 -1
- package/dist/collection/components/af-grid/af-grid.js.map +0 -1
- package/dist/collection/components/af-grid-callout/af-grid-callout.js.map +0 -1
- package/dist/collection/components/af-heading/af-heading.js.map +0 -1
- package/dist/collection/components/af-icon/af-icon.js.map +0 -1
- package/dist/collection/components/af-icon-box/af-icon-box.js.map +0 -1
- package/dist/collection/components/af-icon-button/af-icon-button.js.map +0 -1
- package/dist/collection/components/af-icon-text/af-icon-text.js.map +0 -1
- package/dist/collection/components/af-illustrated-card/af-illustrated-card.js.map +0 -1
- package/dist/collection/components/af-image/af-image.js.map +0 -1
- package/dist/collection/components/af-in-page-banner/af-in-page-banner.js.map +0 -1
- package/dist/collection/components/af-inline/af-inline.js.map +0 -1
- package/dist/collection/components/af-input/af-input.js.map +0 -1
- package/dist/collection/components/af-logo/af-logo.js.map +0 -1
- package/dist/collection/components/af-logo-well/af-logo-well.js.map +0 -1
- package/dist/collection/components/af-nav-accordion/af-nav-accordion.js.map +0 -1
- package/dist/collection/components/af-nav-accordion-item/af-nav-accordion-item.js.map +0 -1
- package/dist/collection/components/af-nav-card/af-nav-card.js.map +0 -1
- package/dist/collection/components/af-nav-item/af-nav-item.js.map +0 -1
- package/dist/collection/components/af-nav-menu/af-nav-menu.js.map +0 -1
- package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.js.map +0 -1
- package/dist/collection/components/af-navbar/af-navbar.js.map +0 -1
- package/dist/collection/components/af-number-badge/af-number-badge.js.map +0 -1
- package/dist/collection/components/af-progress-line/af-progress-line.js.map +0 -1
- package/dist/collection/components/af-radio/af-radio.js.map +0 -1
- package/dist/collection/components/af-section/af-section.js.map +0 -1
- package/dist/collection/components/af-show/af-show.js.map +0 -1
- package/dist/collection/components/af-social-link/af-social-link.js.map +0 -1
- package/dist/collection/components/af-spacer/af-spacer.js.map +0 -1
- package/dist/collection/components/af-split-section/af-split-section.js.map +0 -1
- package/dist/collection/components/af-stack/af-stack.js.map +0 -1
- package/dist/collection/components/af-stepper/af-stepper.js.map +0 -1
- package/dist/collection/components/af-stepper-step/af-stepper-step.js.map +0 -1
- package/dist/collection/components/af-switch/af-switch.js.map +0 -1
- package/dist/collection/components/af-tab/af-tab.js.map +0 -1
- package/dist/collection/components/af-tab-bar/af-tab-bar.js.map +0 -1
- package/dist/collection/components/af-tag/af-tag.js.map +0 -1
- package/dist/collection/components/af-testimonial/af-testimonial.js.map +0 -1
- package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js.map +0 -1
- package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js.map +0 -1
- package/dist/collection/components/af-text/af-text.js.map +0 -1
- package/dist/collection/components/af-text-image/af-text-image.js.map +0 -1
- package/dist/collection/components/af-text-image-nest/af-text-image-nest.js.map +0 -1
- package/dist/collection/components/af-textarea/af-textarea.js.map +0 -1
- package/dist/collection/components/af-theme-override/af-theme-override.js.map +0 -1
- package/dist/collection/components/af-typography-lockup/af-typography-lockup.js.map +0 -1
- package/dist/collection/components/af-video-container/af-video-container.js.map +0 -1
- package/dist/collection/components/af-visually-hidden/af-visually-hidden.js.map +0 -1
- package/dist/collection/components.js.map +0 -1
- package/dist/collection/index.js.map +0 -1
- package/dist/components/af-accordion-item.js.map +0 -1
- package/dist/components/af-accordion.js.map +0 -1
- package/dist/components/af-aspect-ratio.js.map +0 -1
- package/dist/components/af-button-group.js.map +0 -1
- package/dist/components/af-button.js.map +0 -1
- package/dist/components/af-card.js.map +0 -1
- package/dist/components/af-center.js.map +0 -1
- package/dist/components/af-checkbox.js.map +0 -1
- package/dist/components/af-client-carousel.js.map +0 -1
- package/dist/components/af-color-swatch.js.map +0 -1
- package/dist/components/af-contact-item.js.map +0 -1
- package/dist/components/af-container.js.map +0 -1
- package/dist/components/af-divider.js.map +0 -1
- package/dist/components/af-feature-accordion.js.map +0 -1
- package/dist/components/af-feature-card.js.map +0 -1
- package/dist/components/af-feature-grid.js.map +0 -1
- package/dist/components/af-fieldset.js.map +0 -1
- package/dist/components/af-footer-column.js.map +0 -1
- package/dist/components/af-footer-link.js.map +0 -1
- package/dist/components/af-footer.js.map +0 -1
- package/dist/components/af-grid-callout.js.map +0 -1
- package/dist/components/af-grid.js.map +0 -1
- package/dist/components/af-heading.js.map +0 -1
- package/dist/components/af-icon-box.js.map +0 -1
- package/dist/components/af-icon-button.js.map +0 -1
- package/dist/components/af-icon-text.js.map +0 -1
- package/dist/components/af-icon.js.map +0 -1
- package/dist/components/af-illustrated-card.js.map +0 -1
- package/dist/components/af-image.js.map +0 -1
- package/dist/components/af-in-page-banner.js.map +0 -1
- package/dist/components/af-inline.js.map +0 -1
- package/dist/components/af-input.js.map +0 -1
- package/dist/components/af-logo-well.js.map +0 -1
- package/dist/components/af-logo.js.map +0 -1
- package/dist/components/af-nav-accordion-item.js.map +0 -1
- package/dist/components/af-nav-accordion.js.map +0 -1
- package/dist/components/af-nav-card.js.map +0 -1
- package/dist/components/af-nav-item.js.map +0 -1
- package/dist/components/af-nav-menu-nest.js.map +0 -1
- package/dist/components/af-nav-menu.js.map +0 -1
- package/dist/components/af-navbar.js.map +0 -1
- package/dist/components/af-number-badge.js.map +0 -1
- package/dist/components/af-progress-line.js.map +0 -1
- package/dist/components/af-radio.js.map +0 -1
- package/dist/components/af-section.js.map +0 -1
- package/dist/components/af-show.js.map +0 -1
- package/dist/components/af-social-link.js.map +0 -1
- package/dist/components/af-spacer.js.map +0 -1
- package/dist/components/af-split-section.js.map +0 -1
- package/dist/components/af-stack.js.map +0 -1
- package/dist/components/af-stepper-step.js.map +0 -1
- package/dist/components/af-stepper.js.map +0 -1
- package/dist/components/af-switch.js.map +0 -1
- package/dist/components/af-tab-bar.js.map +0 -1
- package/dist/components/af-tab.js.map +0 -1
- package/dist/components/af-tag.js.map +0 -1
- package/dist/components/af-testimonial-carousel.js.map +0 -1
- package/dist/components/af-testimonial-stat.js.map +0 -1
- package/dist/components/af-testimonial.js.map +0 -1
- package/dist/components/af-text-image-nest.js.map +0 -1
- package/dist/components/af-text-image.js.map +0 -1
- package/dist/components/af-text.js.map +0 -1
- package/dist/components/af-textarea.js.map +0 -1
- package/dist/components/af-theme-override.js.map +0 -1
- package/dist/components/af-typography-lockup.js.map +0 -1
- package/dist/components/af-video-container.js.map +0 -1
- package/dist/components/af-visually-hidden.js.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/p-6uEhsUaO.js +0 -44
- package/dist/components/p-6uEhsUaO.js.map +0 -1
- package/dist/components/p-80hb0CR2.js +0 -71
- package/dist/components/p-80hb0CR2.js.map +0 -1
- package/dist/components/p-BBVslKpK.js +0 -59
- package/dist/components/p-BBVslKpK.js.map +0 -1
- package/dist/components/p-BHKA-yEm.js +0 -102
- package/dist/components/p-BHKA-yEm.js.map +0 -1
- package/dist/components/p-BHyABfs0.js +0 -92
- package/dist/components/p-BHyABfs0.js.map +0 -1
- package/dist/components/p-BIgPDyJK.js +0 -103
- package/dist/components/p-BIgPDyJK.js.map +0 -1
- package/dist/components/p-BXZ7aJQf.js +0 -372
- package/dist/components/p-BXZ7aJQf.js.map +0 -1
- package/dist/components/p-BfAQ7eko.js +0 -53
- package/dist/components/p-BfAQ7eko.js.map +0 -1
- package/dist/components/p-CAYG3IzP.js +0 -50
- package/dist/components/p-CAYG3IzP.js.map +0 -1
- package/dist/components/p-CFBeRDmV.js +0 -52
- package/dist/components/p-CFBeRDmV.js.map +0 -1
- package/dist/components/p-CLmCtN_R.js +0 -35
- package/dist/components/p-CLmCtN_R.js.map +0 -1
- package/dist/components/p-CNtgySkk.js +0 -48
- package/dist/components/p-CNtgySkk.js.map +0 -1
- package/dist/components/p-CUSad8vm.js +0 -74
- package/dist/components/p-CUSad8vm.js.map +0 -1
- package/dist/components/p-CxngDK-N.js +0 -1781
- package/dist/components/p-CxngDK-N.js.map +0 -1
- package/dist/components/p-D3UZ60qM.js +0 -45
- package/dist/components/p-D3UZ60qM.js.map +0 -1
- package/dist/components/p-DReSTue0.js +0 -48
- package/dist/components/p-DReSTue0.js.map +0 -1
- package/dist/components/p-DUQu3N38.js +0 -70
- package/dist/components/p-DUQu3N38.js.map +0 -1
- package/dist/components/p-DZ6UMG8G.js +0 -89
- package/dist/components/p-DZ6UMG8G.js.map +0 -1
- package/dist/components/p-D_xTKF7j.js +0 -55
- package/dist/components/p-D_xTKF7j.js.map +0 -1
- package/dist/components/p-DcJ8wKzl.js +0 -68
- package/dist/components/p-DcJ8wKzl.js.map +0 -1
- package/dist/components/p-Dd7Lt2QL.js +0 -81
- package/dist/components/p-Dd7Lt2QL.js.map +0 -1
- package/dist/components/p-DkvJiyn0.js +0 -73
- package/dist/components/p-DkvJiyn0.js.map +0 -1
- package/dist/components/p-DnHD91HB.js +0 -57
- package/dist/components/p-DnHD91HB.js.map +0 -1
- package/dist/components/p-Dvo_cxk-.js +0 -141
- package/dist/components/p-Dvo_cxk-.js.map +0 -1
- package/dist/components/p-Dwhi37rN.js +0 -127
- package/dist/components/p-Dwhi37rN.js.map +0 -1
- package/dist/components/p-Ws-qvw9w.js +0 -108
- package/dist/components/p-Ws-qvw9w.js.map +0 -1
- package/dist/components/p-nwZ2iAi9.js +0 -100
- package/dist/components/p-nwZ2iAi9.js.map +0 -1
- package/dist/components/p-pudFjW3W.js +0 -94
- package/dist/components/p-pudFjW3W.js.map +0 -1
- package/dist/components/p-zDoPXonz.js +0 -58
- package/dist/components/p-zDoPXonz.js.map +0 -1
- package/dist/esm/af-accordion-item.entry.js.map +0 -1
- package/dist/esm/af-accordion.entry.js.map +0 -1
- package/dist/esm/af-aspect-ratio.entry.js.map +0 -1
- package/dist/esm/af-button-group.entry.js.map +0 -1
- package/dist/esm/af-button.entry.js.map +0 -1
- package/dist/esm/af-card.entry.js.map +0 -1
- package/dist/esm/af-center.entry.js.map +0 -1
- package/dist/esm/af-checkbox.entry.js.map +0 -1
- package/dist/esm/af-client-carousel.entry.js.map +0 -1
- package/dist/esm/af-color-swatch.entry.js.map +0 -1
- package/dist/esm/af-contact-item.entry.js.map +0 -1
- package/dist/esm/af-container.entry.js.map +0 -1
- package/dist/esm/af-divider.entry.js.map +0 -1
- package/dist/esm/af-feature-accordion.entry.js.map +0 -1
- package/dist/esm/af-feature-card.entry.js.map +0 -1
- package/dist/esm/af-feature-grid.entry.js.map +0 -1
- package/dist/esm/af-fieldset.entry.js.map +0 -1
- package/dist/esm/af-footer-column.entry.js.map +0 -1
- package/dist/esm/af-footer-link.entry.js.map +0 -1
- package/dist/esm/af-footer.entry.js.map +0 -1
- package/dist/esm/af-grid-callout.entry.js.map +0 -1
- package/dist/esm/af-grid.entry.js.map +0 -1
- package/dist/esm/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.js.map +0 -1
- package/dist/esm/af-icon-box.entry.js.map +0 -1
- package/dist/esm/af-icon-button.entry.js.map +0 -1
- package/dist/esm/af-icon-text.entry.js.map +0 -1
- package/dist/esm/af-icon.entry.js.map +0 -1
- package/dist/esm/af-illustrated-card.entry.js.map +0 -1
- package/dist/esm/af-image.entry.js.map +0 -1
- package/dist/esm/af-in-page-banner.entry.js.map +0 -1
- package/dist/esm/af-inline.entry.js.map +0 -1
- package/dist/esm/af-input.entry.js.map +0 -1
- package/dist/esm/af-logo-well.entry.js.map +0 -1
- package/dist/esm/af-nav-accordion-item.entry.js.map +0 -1
- package/dist/esm/af-nav-accordion.entry.js.map +0 -1
- package/dist/esm/af-nav-card.entry.js.map +0 -1
- package/dist/esm/af-nav-menu-nest.entry.js.map +0 -1
- package/dist/esm/af-nav-menu.entry.js.map +0 -1
- package/dist/esm/af-number-badge.entry.js.map +0 -1
- package/dist/esm/af-progress-line.entry.js.map +0 -1
- package/dist/esm/af-radio.entry.js.map +0 -1
- package/dist/esm/af-section.entry.js.map +0 -1
- package/dist/esm/af-show.entry.js.map +0 -1
- package/dist/esm/af-social-link.entry.js.map +0 -1
- package/dist/esm/af-spacer.entry.js.map +0 -1
- package/dist/esm/af-split-section.entry.js.map +0 -1
- package/dist/esm/af-stack.entry.js.map +0 -1
- package/dist/esm/af-stepper-step.entry.js.map +0 -1
- package/dist/esm/af-stepper.entry.js.map +0 -1
- package/dist/esm/af-switch.entry.js.map +0 -1
- package/dist/esm/af-tab-bar.entry.js.map +0 -1
- package/dist/esm/af-tab.entry.js.map +0 -1
- package/dist/esm/af-tag.entry.js.map +0 -1
- package/dist/esm/af-testimonial-carousel.entry.js.map +0 -1
- package/dist/esm/af-testimonial-stat.entry.js.map +0 -1
- package/dist/esm/af-testimonial.entry.js.map +0 -1
- package/dist/esm/af-text-image-nest.entry.js.map +0 -1
- package/dist/esm/af-text-image.entry.js.map +0 -1
- package/dist/esm/af-textarea.entry.js.map +0 -1
- package/dist/esm/af-theme-override.entry.js.map +0 -1
- package/dist/esm/af-typography-lockup.entry.js.map +0 -1
- package/dist/esm/af-video-container.entry.js.map +0 -1
- package/dist/esm/af-visually-hidden.entry.js.map +0 -1
- package/dist/esm/affinda.js.map +0 -1
- package/dist/esm/index-B0LVveHp.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/loader.js.map +0 -1
|
@@ -63,6 +63,12 @@ export interface ShadowRootOptions {
|
|
|
63
63
|
* focusable part is given focus, and the shadow host is given any available `:focus` styling.
|
|
64
64
|
*/
|
|
65
65
|
delegatesFocus?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Sets the slot assignment mode for the shadow root. When set to `'manual'`, enables imperative
|
|
68
|
+
* slotting using the `HTMLSlotElement.assign()` method. Defaults to `'named'` for standard
|
|
69
|
+
* declarative slotting behavior.
|
|
70
|
+
*/
|
|
71
|
+
slotAssignment?: 'manual' | 'named';
|
|
66
72
|
}
|
|
67
73
|
export interface ModeStyles {
|
|
68
74
|
[modeName: string]: string | string[];
|
|
@@ -119,12 +125,34 @@ export interface EventOptions {
|
|
|
119
125
|
*/
|
|
120
126
|
composed?: boolean;
|
|
121
127
|
}
|
|
128
|
+
export interface AttachInternalsOptions {
|
|
129
|
+
/**
|
|
130
|
+
* Initial custom states to set on the ElementInternals.states CustomStateSet.
|
|
131
|
+
* Each key is the state name and the value is the initial boolean state.
|
|
132
|
+
*
|
|
133
|
+
* These states can be targeted with the CSS `:state()` pseudo-class.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```tsx
|
|
137
|
+
* @AttachInternals({ states: { open: true, active: false } })
|
|
138
|
+
* internals: ElementInternals;
|
|
139
|
+
* ```
|
|
140
|
+
*
|
|
141
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/CustomStateSet
|
|
142
|
+
*/
|
|
143
|
+
states?: {
|
|
144
|
+
[stateName: string]: boolean;
|
|
145
|
+
};
|
|
146
|
+
}
|
|
122
147
|
export interface AttachInternalsDecorator {
|
|
123
|
-
(): PropertyDecorator;
|
|
148
|
+
(opts?: AttachInternalsOptions): PropertyDecorator;
|
|
124
149
|
}
|
|
125
150
|
export interface ListenDecorator {
|
|
126
151
|
(eventName: string, opts?: ListenOptions): CustomMethodDecorator<any>;
|
|
127
152
|
}
|
|
153
|
+
export interface ResolveVarFunction {
|
|
154
|
+
<T>(variable: T): string;
|
|
155
|
+
}
|
|
128
156
|
export interface ListenOptions {
|
|
129
157
|
/**
|
|
130
158
|
* Handlers can also be registered for an event other than the host itself.
|
|
@@ -153,7 +181,9 @@ export interface StateDecorator {
|
|
|
153
181
|
(): PropertyDecorator;
|
|
154
182
|
}
|
|
155
183
|
export interface WatchDecorator {
|
|
156
|
-
(propName: any
|
|
184
|
+
(propName: any, watchOptions?: {
|
|
185
|
+
immediate?: boolean;
|
|
186
|
+
}): CustomMethodDecorator<(newValue?: any, oldValue?: any, propName?: any, ...args: any[]) => any | void>;
|
|
157
187
|
}
|
|
158
188
|
export interface PropSerializeDecorator {
|
|
159
189
|
(propName: any): CustomMethodDecorator<(newValue?: any, propName?: string, ...args: any[]) => string | null>;
|
|
@@ -208,6 +238,24 @@ export declare const AttachInternals: AttachInternalsDecorator;
|
|
|
208
238
|
* https://stenciljs.com/docs/events#listen-decorator
|
|
209
239
|
*/
|
|
210
240
|
export declare const Listen: ListenDecorator;
|
|
241
|
+
/**
|
|
242
|
+
* The `resolveVar()` function is a compile-time utility that resolves const variables
|
|
243
|
+
* and object properties to their string literal values. This allows variables to be
|
|
244
|
+
* used in `@Listen` and `@Event` decorators instead of hardcoded strings.
|
|
245
|
+
*
|
|
246
|
+
* @example
|
|
247
|
+
* ```ts
|
|
248
|
+
* const MY_EVENT = 'myEvent';
|
|
249
|
+
* @Listen(resolveVar(MY_EVENT))
|
|
250
|
+
* ```
|
|
251
|
+
*
|
|
252
|
+
* @example
|
|
253
|
+
* ```ts
|
|
254
|
+
* const EVENTS = { MY_EVENT: 'myEvent' } as const;
|
|
255
|
+
* @Event({ eventName: resolveVar(EVENTS.MY_EVENT) })
|
|
256
|
+
* ```
|
|
257
|
+
*/
|
|
258
|
+
export declare const resolveVar: ResolveVarFunction;
|
|
211
259
|
/**
|
|
212
260
|
* The `@Method()` decorator is used to expose methods on the public API.
|
|
213
261
|
* Class methods decorated with the @Method() decorator can be called directly
|
|
@@ -339,7 +387,7 @@ export declare function forceUpdate(ref: any): void;
|
|
|
339
387
|
* @returns the rendering ref
|
|
340
388
|
*/
|
|
341
389
|
export declare function getRenderingRef(): any;
|
|
342
|
-
export interface HTMLStencilElement extends
|
|
390
|
+
export interface HTMLStencilElement extends HTMLElement {
|
|
343
391
|
componentOnReady(): Promise<this>;
|
|
344
392
|
}
|
|
345
393
|
/**
|
|
@@ -365,6 +413,27 @@ export declare function readTask(task: RafCallback): void;
|
|
|
365
413
|
* Unhandled exception raised while rendering, during event handling, or lifecycles will trigger the custom event handler.
|
|
366
414
|
*/
|
|
367
415
|
export declare const setErrorHandler: (handler: ErrorHandler) => void;
|
|
416
|
+
export type TagTransformer = (tag: string) => string;
|
|
417
|
+
/**
|
|
418
|
+
* Sets a tag transformer to be used when rendering your custom elements.
|
|
419
|
+
* ```ts
|
|
420
|
+
* setTagTransformer((tag) => {
|
|
421
|
+
* if (tag.startsWith('my-')) return `new-${tag}`
|
|
422
|
+
* return tag;
|
|
423
|
+
* });
|
|
424
|
+
* ```
|
|
425
|
+
* Will mean all your components that start with `my-` are defined instead with `new-my-` prefix.
|
|
426
|
+
*
|
|
427
|
+
* @param transformer the transformer function to use which must return a string.
|
|
428
|
+
*/
|
|
429
|
+
export declare function setTagTransformer(transformer: TagTransformer): void;
|
|
430
|
+
/**
|
|
431
|
+
* Transforms a tag name using a transformer set via `setTagTransformer`
|
|
432
|
+
*
|
|
433
|
+
* @param tag - the tag to transform e.g. `my-tag`
|
|
434
|
+
* @returns the transformed tag e.g. `new-my-tag`
|
|
435
|
+
*/
|
|
436
|
+
export declare function transformTag(tag: string): string;
|
|
368
437
|
/**
|
|
369
438
|
* @deprecated - Use `MixedInCtor` instead:
|
|
370
439
|
* ```ts
|
|
@@ -568,7 +637,7 @@ export interface FunctionalUtilities {
|
|
|
568
637
|
map: (children: VNode[], cb: (vnode: ChildNode, index: number, array: ChildNode[]) => ChildNode) => VNode[];
|
|
569
638
|
}
|
|
570
639
|
export interface FunctionalComponent<T = {}> {
|
|
571
|
-
(props: T, children: VNode[], utils: FunctionalUtilities): VNode | VNode[];
|
|
640
|
+
(props: T, children: VNode[], utils: FunctionalUtilities): VNode | VNode[] | null;
|
|
572
641
|
}
|
|
573
642
|
/**
|
|
574
643
|
* A Child VDOM node
|
|
@@ -610,6 +679,7 @@ export declare namespace h {
|
|
|
610
679
|
function h(sel: any, data: VNodeData | null, text: string): VNode;
|
|
611
680
|
function h(sel: any, data: VNodeData | null, children: Array<VNode | undefined | null>): VNode;
|
|
612
681
|
function h(sel: any, data: VNodeData | null, children: VNode): VNode;
|
|
682
|
+
function h(sel: any, data: VNodeData | null, ...children: (VNode | string | number)[]): VNode;
|
|
613
683
|
namespace JSX {
|
|
614
684
|
interface IntrinsicElements extends LocalJSX.IntrinsicElements, JSXBase.IntrinsicElements {
|
|
615
685
|
[tagName: string]: any;
|
|
@@ -624,6 +694,36 @@ export declare function h(sel: any, children: Array<VNode | undefined | null>):
|
|
|
624
694
|
export declare function h(sel: any, data: VNodeData | null, text: string): VNode;
|
|
625
695
|
export declare function h(sel: any, data: VNodeData | null, children: Array<VNode | undefined | null>): VNode;
|
|
626
696
|
export declare function h(sel: any, data: VNodeData | null, children: VNode): VNode;
|
|
697
|
+
export declare function h(sel: any, data: VNodeData | null, ...children: (VNode | string | number)[]): VNode;
|
|
698
|
+
/**
|
|
699
|
+
* Automatic JSX runtime functions for TypeScript's react-jsx mode.
|
|
700
|
+
* These functions are called automatically by TypeScript when using "jsx": "react-jsx".
|
|
701
|
+
* @param type type of node
|
|
702
|
+
* @param props properties of node
|
|
703
|
+
* @param key optional key for the node
|
|
704
|
+
* @returns a jsx vnode
|
|
705
|
+
*/
|
|
706
|
+
export declare function jsx(type: any, props: any, key?: string): VNode;
|
|
707
|
+
/**
|
|
708
|
+
* Automatic JSX runtime functions for TypeScript's react-jsxmode with multiple children.
|
|
709
|
+
* @param type type of node
|
|
710
|
+
* @param props properties of node
|
|
711
|
+
* @param key optional key for the node
|
|
712
|
+
* @returns a jsx vnode
|
|
713
|
+
*/
|
|
714
|
+
export declare function jsxs(type: any, props: any, key?: string): VNode;
|
|
715
|
+
/**
|
|
716
|
+
* Automatic JSX runtime functions for TypeScript's react-jsxdev mode.
|
|
717
|
+
* These functions are called automatically by TypeScript when using "jsx": "react-jsxdev".
|
|
718
|
+
* @param type type of node
|
|
719
|
+
* @param props properties of node
|
|
720
|
+
* @param key optional key for the node
|
|
721
|
+
* @param isStaticChildren indicates if the children are static
|
|
722
|
+
* @param source source information
|
|
723
|
+
* @param self reference to the component instance
|
|
724
|
+
* @returns a jsx vnode
|
|
725
|
+
*/
|
|
726
|
+
export declare function jsxDEV(type: any, props: any, key?: string | number, isStaticChildren?: boolean, source?: any, self?: any): VNode;
|
|
627
727
|
/**
|
|
628
728
|
* A virtual DOM node
|
|
629
729
|
*/
|
|
@@ -653,7 +753,7 @@ declare namespace LocalJSX {
|
|
|
653
753
|
export { LocalJSX as JSX };
|
|
654
754
|
export declare namespace JSXBase {
|
|
655
755
|
interface IntrinsicElements {
|
|
656
|
-
slot: JSXBase.SlotAttributes
|
|
756
|
+
slot: JSXBase.SlotAttributes<HTMLSlotElement>;
|
|
657
757
|
a: JSXBase.AnchorHTMLAttributes<HTMLAnchorElement>;
|
|
658
758
|
abbr: JSXBase.HTMLAttributes;
|
|
659
759
|
address: JSXBase.HTMLAttributes;
|
|
@@ -823,7 +923,7 @@ export declare namespace JSXBase {
|
|
|
823
923
|
use: JSXBase.SVGAttributes;
|
|
824
924
|
view: JSXBase.SVGAttributes;
|
|
825
925
|
}
|
|
826
|
-
interface SlotAttributes extends JSXAttributes {
|
|
926
|
+
interface SlotAttributes<T = HTMLSlotElement> extends JSXAttributes<T> {
|
|
827
927
|
name?: string;
|
|
828
928
|
slot?: string;
|
|
829
929
|
onSlotchange?: (event: Event) => void;
|
|
@@ -879,6 +979,9 @@ export declare namespace JSXBase {
|
|
|
879
979
|
popoverTargetAction?: string;
|
|
880
980
|
popoverTargetElement?: Element | null;
|
|
881
981
|
popoverTarget?: string;
|
|
982
|
+
command?: string;
|
|
983
|
+
commandFor?: string;
|
|
984
|
+
commandfor?: string;
|
|
882
985
|
}
|
|
883
986
|
interface CanvasHTMLAttributes<T> extends HTMLAttributes<T> {
|
|
884
987
|
height?: number | string;
|
|
@@ -1747,6 +1850,7 @@ export interface CustomElementsDefineOptions {
|
|
|
1747
1850
|
exclude?: string[];
|
|
1748
1851
|
resourcesUrl?: string;
|
|
1749
1852
|
syncQueue?: boolean;
|
|
1853
|
+
/** @deprecated in-favour of `setTagTransformer` and `transformTag` */
|
|
1750
1854
|
transformTagName?: (tagName: string) => string;
|
|
1751
1855
|
jmp?: (c: Function) => any;
|
|
1752
1856
|
raf?: (c: FrameRequestCallback) => number;
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-accordion-item.entry.esm.js","sources":["src/components/af-accordion-item/af-accordion-item.css?tag=af-accordion-item&encapsulation=shadow","src/components/af-accordion-item/af-accordion-item.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.accordion-item {\n width: 100%;\n}\n\n/* Trigger button - clickable header */\n.trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 16px 0;\n background: transparent;\n border: none;\n border-bottom: 1px solid var(--af-background-border-subtle, #e8eeed);\n cursor: pointer;\n font: inherit;\n text-align: left;\n color: var(--af-typography-body-dark, #14343b);\n transition: background-color 0.2s ease;\n}\n\n.trigger:hover:not(:disabled) {\n background-color: var(--af-background-base-hover, rgba(20, 52, 59, 0.02));\n}\n\n.trigger:focus-visible {\n outline: 2px solid var(--af-background-border-active, #8a7049);\n outline-offset: -2px;\n}\n\n.trigger:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.trigger-content {\n flex: 1;\n min-width: 0;\n}\n\n/* Chevron indicator */\n.chevron {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n color: var(--af-typography-body-dark, #14343b);\n transition: transform 0.3s ease;\n}\n\n.chevron.is-open {\n transform: rotate(180deg);\n}\n\n/* Content wrapper - handles animation */\n.content-wrapper {\n overflow: hidden;\n transition: max-height 0.3s ease;\n}\n\n.content {\n padding: 0;\n}\n\n/* Disabled state */\n:host(.is-disabled) .trigger {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n:host(.is-disabled) .trigger:hover {\n background-color: transparent;\n}\n\n/* Open state styling */\n:host(.is-open) .trigger {\n border-bottom-color: transparent;\n}\n\n","import { Component, h, Prop, Host, Event, EventEmitter, Element, State, Watch, Method } from '@stencil/core';\n\n/**\n * A single collapsible accordion item with header and content.\n * Can be used standalone or within an af-accordion container.\n *\n * @slot trigger - The clickable header content\n * @slot - The collapsible content (default slot)\n */\n@Component({\n tag: 'af-accordion-item',\n styleUrl: 'af-accordion-item.css',\n shadow: true,\n})\nexport class AfAccordionItem {\n @Element() el!: HTMLElement;\n\n /**\n * Unique identifier for this accordion item.\n * Used by parent af-accordion to track open state.\n */\n @Prop({ reflect: true }) itemId!: string;\n\n /**\n * Whether this item is currently expanded\n */\n @Prop({ reflect: true, mutable: true }) open: boolean = false;\n\n /**\n * Whether this item is disabled (cannot be toggled)\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /**\n * Emitted when the accordion item is toggled\n */\n @Event({ eventName: 'af-accordion-toggle' }) accordionToggle!: EventEmitter<{ itemId: string; open: boolean }>;\n\n @State() contentHeight: number = 0;\n\n private contentRef?: HTMLElement;\n private resizeObserver?: ResizeObserver;\n\n @Watch('open')\n handleOpenChange(newValue: boolean) {\n if (newValue) {\n this.measureContent();\n }\n }\n\n componentDidLoad() {\n if (this.open) {\n this.measureContent();\n }\n\n this.resizeObserver = new ResizeObserver(() => {\n if (this.open && this.contentRef) {\n this.contentHeight = this.contentRef.scrollHeight;\n }\n });\n\n if (this.contentRef) {\n this.resizeObserver.observe(this.contentRef);\n }\n }\n\n disconnectedCallback() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n /**\n * Programmatically toggle the accordion item\n */\n @Method()\n async toggle() {\n if (!this.disabled) {\n this.open = !this.open;\n this.accordionToggle.emit({ itemId: this.itemId, open: this.open });\n }\n }\n\n private measureContent() {\n requestAnimationFrame(() => {\n if (this.contentRef) {\n this.contentHeight = this.contentRef.scrollHeight;\n }\n });\n }\n\n private handleTriggerClick = () => {\n if (!this.disabled) {\n this.toggle();\n }\n };\n\n render() {\n const contentStyle = {\n maxHeight: this.open ? `${this.contentHeight}px` : '0px'\n };\n\n return (\n <Host class={{ 'is-open': this.open, 'is-disabled': this.disabled }}>\n <div class=\"accordion-item\">\n <button\n class=\"trigger\"\n onClick={this.handleTriggerClick}\n aria-expanded={this.open ? 'true' : 'false'}\n aria-controls={`content-${this.itemId}`}\n disabled={this.disabled}\n type=\"button\"\n >\n <div class=\"trigger-content\">\n <slot name=\"trigger\"></slot>\n </div>\n <div class={{ 'chevron': true, 'is-open': this.open }}>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M6 9l6 6 6-6\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n </button>\n <div\n id={`content-${this.itemId}`}\n class=\"content-wrapper\"\n style={contentStyle}\n aria-hidden={!this.open ? 'true' : 'false'}\n >\n <div class=\"content\" ref={(el) => (this.contentRef = el)}>\n <slot></slot>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-accordion.entry.esm.js","sources":["src/components/af-accordion/af-accordion.css?tag=af-accordion&encapsulation=scoped","src/components/af-accordion/af-accordion.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.accordion {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n/* Ensure proper stacking for accordion items */\n::slotted(af-accordion-item) {\n display: block;\n}\n\n/* Remove bottom border from last item */\n::slotted(af-accordion-item:last-child) {\n --accordion-item-border: transparent;\n}\n\n","import { Component, h, Prop, Host, Event, EventEmitter, Element, State, Watch, Listen } from '@stencil/core';\n\n/**\n * Accordion container that manages multiple accordion items.\n * Controls which items are open based on mode (independent or exclusive).\n * \n * @slot - Place af-accordion-item components here\n */\n@Component({\n tag: 'af-accordion',\n styleUrl: 'af-accordion.css',\n shadow: false,\n scoped: true,\n})\nexport class AfAccordion {\n @Element() el!: HTMLElement;\n\n /**\n * Behavior mode for the accordion.\n * - `independent`: Multiple items can be open simultaneously\n * - `exclusive`: Only one item can be open at a time\n */\n @Prop() mode: 'independent' | 'exclusive' = 'independent';\n\n /**\n * Currently open item(s) for controlled mode.\n * In independent mode, can be an array of item IDs.\n * In exclusive mode, should be a single item ID or null.\n */\n @Prop({ mutable: true }) value?: string | string[];\n\n /**\n * Default open item(s) for uncontrolled mode.\n * Used as initial state when value prop is not provided.\n */\n @Prop() defaultValue?: string | string[];\n\n /**\n * Emitted when the open state of items changes.\n * Returns the new value (string[] for independent, string | null for exclusive).\n */\n @Event({ eventName: 'af-accordion-change' }) accordionChange!: EventEmitter<{ value: string | string[] | null }>;\n\n @State() internalValue: string[] = [];\n\n private isControlled(): boolean {\n return this.value !== undefined;\n }\n\n componentWillLoad() {\n // Initialize internal value from defaultValue or value\n const initialValue = this.isControlled() ? this.value : this.defaultValue;\n this.internalValue = this.normalizeValue(initialValue);\n }\n\n @Watch('value')\n handleValueChange(newValue: string | string[] | undefined) {\n if (this.isControlled()) {\n this.internalValue = this.normalizeValue(newValue);\n this.syncItems();\n }\n }\n\n componentDidLoad() {\n this.syncItems();\n }\n\n /**\n * Listen for toggle events from child accordion items\n */\n @Listen('af-accordion-toggle')\n handleItemToggle(event: CustomEvent<{ itemId: string; open: boolean }>) {\n event.stopPropagation();\n const { itemId, open } = event.detail;\n\n let newValue: string[];\n\n if (this.mode === 'exclusive') {\n // In exclusive mode, only one item can be open\n newValue = open ? [itemId] : [];\n } else {\n // In independent mode, toggle the item\n if (open) {\n newValue = [...this.internalValue, itemId];\n } else {\n newValue = this.internalValue.filter(id => id !== itemId);\n }\n }\n\n if (!this.isControlled()) {\n this.internalValue = newValue;\n this.syncItems();\n }\n\n // Emit change event\n const emitValue = this.mode === 'exclusive' \n ? (newValue.length > 0 ? newValue[0] : null)\n : newValue;\n this.accordionChange.emit({ value: emitValue });\n }\n\n /**\n * Normalize value prop to array format for internal use\n */\n private normalizeValue(value: string | string[] | undefined): string[] {\n if (value === undefined || value === null) {\n return [];\n }\n if (Array.isArray(value)) {\n // In exclusive mode, only keep the first item\n return this.mode === 'exclusive' ? value.slice(0, 1) : value;\n }\n return [value];\n }\n\n /**\n * Sync the open state of all child accordion items\n */\n private syncItems() {\n const items = this.el.querySelectorAll('af-accordion-item');\n items.forEach((element) => {\n const item = element as HTMLElement & { itemId?: string; open?: boolean };\n if (item.itemId) {\n item.open = this.internalValue.includes(item.itemId);\n }\n });\n }\n\n render() {\n return (\n <Host class={{ [`mode-${this.mode}`]: true }}>\n <div class=\"accordion\">\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-aspect-ratio.entry.esm.js","sources":["src/components/af-aspect-ratio/af-aspect-ratio.css?tag=af-aspect-ratio&encapsulation=shadow","src/components/af-aspect-ratio/af-aspect-ratio.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.aspect-ratio-container {\n width: 100%;\n position: relative;\n overflow: hidden;\n}\n\n/* Ensure slotted content fills the container */\n.aspect-ratio-container ::slotted(*) {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n","import { Component, h, Prop } from '@stencil/core';\n\n/**\n * A container component that maintains a fixed aspect ratio for its content.\n * Useful for images, videos, or any content that needs to maintain specific proportions.\n */\n@Component({\n tag: 'af-aspect-ratio',\n styleUrl: 'af-aspect-ratio.css',\n shadow: true\n})\nexport class AfAspectRatio {\n /**\n * The aspect ratio to maintain. Can be:\n * - A predefined ratio: '1:1', '16:9', '4:3', 'golden-portrait', 'golden-landscape', 'a4-portrait', 'a4-landscape', 'letter-portrait', 'letter-landscape', etc.\n * - A custom ratio in format 'width / height': '16 / 9', '4 / 3', '1.618 / 1', etc.\n *\n * @example\n * <af-aspect-ratio ratio=\"16:9\">Content</af-aspect-ratio>\n * <af-aspect-ratio ratio=\"1.618 / 1\">Content</af-aspect-ratio>\n */\n @Prop() ratio: string = '1:1';\n\n private getRatioValue(): string {\n // Map common ratio shortcuts to actual CSS aspect-ratio values\n const ratioMap: { [key: string]: string } = {\n // Common ratios\n '1:1': '1 / 1',\n '1:2': '1 / 2',\n '2:1': '2 / 1',\n '2:3': '2 / 3',\n '3:1': '3 / 1',\n '3:2': '3 / 2',\n '3:4': '3 / 4',\n '4:1': '4 / 1',\n '4:3': '4 / 3',\n '4:5': '4 / 5',\n '5:2': '5 / 2',\n '5:4': '5 / 4',\n '8:3': '8 / 3',\n '8:5': '8 / 5',\n // Screen ratios\n '9:8': '9 / 8',\n '9:16': '9 / 16',\n '9:21': '9 / 21',\n '10:16': '10 / 16',\n '14:3': '14 / 3',\n '16:5': '16 / 5',\n '16:9': '16 / 9',\n '16:10': '16 / 10',\n '21:9': '21 / 9',\n '32:9': '32 / 9',\n // Golden ratio variants\n 'golden-portrait': '1 / 1.618',\n 'golden-landscape': '1.618 / 1',\n 'golden-portrait-half': '1 / 0.809',\n 'golden-landscape-half': '0.809 / 1',\n // Paper sizes - A4\n 'a4-portrait': '1 / 1.414',\n 'a4-landscape': '1.414 / 1',\n 'a4-portrait-half': '1 / 0.707',\n 'a4-landscape-half': '0.707 / 1',\n // Paper sizes - Letter\n 'letter-portrait': '1 / 1.294',\n 'letter-landscape': '1.294 / 1',\n 'letter-portrait-half': '1 / 0.647',\n 'letter-landscape-half': '0.647 / 1',\n // Special\n '6:7': '6 / 7'\n };\n\n // If it's a predefined ratio, return the mapped value\n if (ratioMap[this.ratio]) {\n return ratioMap[this.ratio];\n }\n\n // Otherwise, assume it's a custom ratio already in the correct format\n return this.ratio;\n }\n\n render() {\n const ratioValue = this.getRatioValue();\n\n return (\n <div\n class=\"aspect-ratio-container\"\n style={{ aspectRatio: ratioValue }}\n >\n <slot></slot>\n </div>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,gBAAgB,GAAG,6MAA6M;;MCWzN,aAAa,GAAA,MAAA;AAL1B,IAAA,WAAA,CAAA,OAAA,EAAA;;AAME;;;;;;;;AAQG;AACK,QAAA,IAAK,CAAA,KAAA,GAAW,KAAK;AAuE9B;IArES,aAAa,GAAA;;AAEnB,QAAA,MAAM,QAAQ,GAA8B;;AAE1C,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;;AAEd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,QAAQ;;AAEhB,YAAA,iBAAiB,EAAE,WAAW;AAC9B,YAAA,kBAAkB,EAAE,WAAW;AAC/B,YAAA,sBAAsB,EAAE,WAAW;AACnC,YAAA,uBAAuB,EAAE,WAAW;;AAEpC,YAAA,aAAa,EAAE,WAAW;AAC1B,YAAA,cAAc,EAAE,WAAW;AAC3B,YAAA,kBAAkB,EAAE,WAAW;AAC/B,YAAA,mBAAmB,EAAE,WAAW;;AAEhC,YAAA,iBAAiB,EAAE,WAAW;AAC9B,YAAA,kBAAkB,EAAE,WAAW;AAC/B,YAAA,sBAAsB,EAAE,WAAW;AACnC,YAAA,uBAAuB,EAAE,WAAW;;AAEpC,YAAA,KAAK,EAAE;SACR;;AAGD,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;;QAI7B,OAAO,IAAI,CAAC,KAAK;;IAGnB,MAAM,GAAA;AACJ,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AAEvC,QAAA,QACE,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAC,wBAAwB,EAC9B,KAAK,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAA,EAElC,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACT;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-button-group.entry.esm.js","sources":["src/components/af-button-group/af-button-group.css?tag=af-button-group&encapsulation=shadow","src/components/af-button-group/af-button-group.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.button-group {\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n}\n\n.direction-horizontal {\n flex-direction: row;\n}\n\n.direction-vertical {\n flex-direction: column;\n}\n\n/* Ensure slotted buttons align properly */\n::slotted(*) {\n flex-shrink: 0;\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n@Component({\n tag: 'af-button-group',\n styleUrl: 'af-button-group.css',\n shadow: true\n})\nexport class AfButtonGroup {\n /**\n * Layout direction of the button group\n */\n @Prop() direction: 'horizontal' | 'vertical' = 'horizontal';\n\n /**\n * Gap between buttons\n */\n @Prop() gap: string = '8px';\n\n render() {\n const classes = {\n 'button-group': true,\n [`direction-${this.direction}`]: true\n };\n\n return (\n <Host>\n <div class={classes} style={{ gap: this.gap }}>\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,gBAAgB,GAAG,sNAAsN;;MCOlO,aAAa,GAAA,MAAA;AAL1B,IAAA,WAAA,CAAA,OAAA,EAAA;;AAME;;AAEG;AACK,QAAA,IAAS,CAAA,SAAA,GAA8B,YAAY;AAE3D;;AAEG;AACK,QAAA,IAAG,CAAA,GAAA,GAAW,KAAK;AAgB5B;IAdC,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,CAAC,aAAa,IAAI,CAAC,SAAS,CAAE,CAAA,GAAG;SAClC;QAED,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAA,EAC3C,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACT,CACD;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-button.entry.esm.js","sources":["src/components/af-button/af-button.css?tag=af-button&encapsulation=shadow","src/components/af-button/af-button.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n/* Set color on host for slotted content (icons) inheritance */\n:host([variant=\"primary\"]) {\n color: var(--af-button-primary-icon, var(--colour-brand-inkwell, #14343B));\n}\n\n:host([variant=\"secondary\"]) {\n color: var(--af-button-secondary-icon, var(--af-typography-body-dark, var(--colour-brand-inkwell, #14343B)));\n}\n\n:host([variant=\"ghost\"]) {\n color: var(--af-button-ghost-icon, var(--colour-brand-inkwell, #14343B));\n}\n\n/* Full-width mode - when host is display: block */\n:host([full-width]),\n:host(.full-width) {\n display: block;\n width: 100%;\n}\n\n:host([full-width]) .button,\n:host(.full-width) .button {\n width: 100%;\n}\n\n.button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n border-radius: 9999px;\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: 500;\n text-decoration: none;\n cursor: pointer;\n transition: all 0.2s ease;\n border: 1px solid transparent;\n box-sizing: border-box;\n white-space: nowrap;\n /* Allow width to be controlled from outside via CSS custom property */\n width: var(--af-button-width, auto);\n}\n\n/* Size variants */\n.size-default {\n padding: 12px 24px;\n font-size: 17px;\n line-height: 20px;\n}\n\n.size-thin {\n padding: 8px 16px;\n font-size: 14px;\n line-height: 16px;\n}\n\n/* Icon slots - only show when they have slotted content */\n.icon-left,\n.icon-right {\n display: none;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.icon-left.has-content,\n.icon-right.has-content {\n display: flex;\n}\n\n.size-default .icon-left,\n.size-default .icon-right {\n width: 24px;\n height: 24px;\n}\n\n.size-thin .icon-left,\n.size-thin .icon-right {\n width: 20px;\n height: 20px;\n}\n\n/* Add spacing between icon and label only when icon is present */\n.size-default .icon-left.has-content {\n margin-right: 12px;\n}\n\n.size-default .icon-right.has-content {\n margin-left: 12px;\n}\n\n.size-thin .icon-left.has-content {\n margin-right: 8px;\n}\n\n.size-thin .icon-right.has-content {\n margin-left: 8px;\n}\n\n/* Label styling */\n.label {\n flex: 0 1 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.size-default .label {\n height: 24px;\n}\n\n.size-thin .label {\n height: 20px;\n}\n\n/* ==========================================================================\n Primary Button\n Filled background with ice color, inkwell text\n ========================================================================== */\n\n.variant-primary {\n background: var(--af-button-primary-bg, var(--colour-brand-ice, #a6fffb));\n border-color: var(--af-button-primary-stroke, var(--colour-brand-inkwell, #14343b));\n color: var(--af-button-primary-text, var(--colour-brand-inkwell, #14343b));\n}\n\n.variant-primary .icon-left,\n.variant-primary .icon-right {\n color: var(--af-button-primary-icon, var(--colour-brand-inkwell, #14343b));\n}\n\n.variant-primary:hover:not(.disabled) {\n background: var(--af-button-primary-bg-hover, #95E6E2);\n border-color: var(--af-button-primary-stroke, #14343B);\n}\n\n.variant-primary:focus:not(.disabled),\n.variant-primary:focus-visible:not(.disabled) {\n background: var(--af-button-primary-bg, #A6FFFB);\n border-color: var(--af-button-primary-stroke, #14343B);\n box-shadow: 0 0 0 4px var(--af-background-base, #FFF), 0 0 0 5px var(--af-button-primary-stroke, #14343B);\n outline: none;\n}\n\n.variant-primary:active:not(.disabled) {\n background: var(--af-button-primary-bg-hover, #95E6E2);\n}\n\n/* ==========================================================================\n Secondary Button\n Transparent background with visible border\n ========================================================================== */\n\n.variant-secondary {\n background: var(--af-button-secondary-bg, transparent);\n border-color: var(--af-button-secondary-stroke, var(--colour-brand-inkwell, #14343b));\n color: var(--af-button-secondary-text, var(--colour-brand-inkwell, #14343b));\n}\n\n.variant-secondary .icon-left,\n.variant-secondary .icon-right {\n color: var(--af-button-secondary-icon, var(--colour-brand-inkwell, #14343b));\n}\n\n.variant-secondary:hover:not(.disabled) {\n background: var(--af-button-secondary-bg-hover, rgba(128, 128, 128, 0.1));\n border-color: var(--af-button-secondary-stroke, currentColor);\n}\n\n.variant-secondary:focus:not(.disabled),\n.variant-secondary:focus-visible:not(.disabled) {\n background: var(--af-background-base, #FFF);\n border-color: var(--af-button-secondary-stroke, currentColor);\n box-shadow: 0 0 0 4px var(--af-background-base, #FFF), 0 0 0 5px var(--af-button-secondary-stroke, currentColor);\n outline: none;\n}\n\n.variant-secondary:active:not(.disabled) {\n background: var(--af-button-secondary-bg-hover, rgba(128, 128, 128, 0.1));\n}\n\n/* ==========================================================================\n Tertiary Button\n Text-only link style with underline, no border or background\n ========================================================================== */\n\n.variant-ghost {\n background: transparent;\n border-color: transparent;\n border-radius: 0;\n color: var(--af-button-ghost-text, var(--colour-brand-inkwell, #14343b));\n padding-left: 0;\n padding-right: 0;\n}\n\n.variant-ghost .label {\n border-bottom: 2px solid var(--af-button-ghost-stroke, var(--colour-brand-soft-clay, #B09670));\n}\n\n.variant-ghost .icon-left,\n.variant-ghost .icon-right {\n color: var(--af-button-ghost-icon, var(--colour-brand-inkwell, #14343b));\n}\n\n.variant-ghost:hover:not(.disabled) {\n opacity: 0.8;\n}\n\n.variant-ghost:focus:not(.disabled),\n.variant-ghost:focus-visible:not(.disabled) {\n outline: none;\n}\n\n.variant-ghost:focus-visible:not(.disabled) .label {\n box-shadow: 0 4px 0 0 var(--af-button-ghost-stroke, var(--colour-brand-soft-clay, #B09670));\n}\n\n.variant-ghost:active:not(.disabled) {\n opacity: 0.6;\n}\n\n/* ==========================================================================\n Disabled states\n ========================================================================== */\n\n.disabled {\n cursor: not-allowed;\n pointer-events: none;\n}\n\n.variant-primary.disabled {\n border: 1px solid var(--af-button-primary-stroke, #14343B);\n background: var(--af-button-primary-bg, #A6FFFB);\n opacity: 0.6;\n}\n\n.variant-secondary.disabled {\n border: 1px solid var(--af-button-secondary-stroke, currentColor);\n opacity: 0.6;\n}\n\n.variant-ghost.disabled {\n opacity: 0.6;\n}\n\n/* ==========================================================================\n Reset button element styles\n ========================================================================== */\n\nbutton.button {\n font: inherit;\n cursor: pointer;\n}\n\nbutton.button.variant-primary {\n background: var(--af-button-primary-bg, var(--colour-brand-ice, #a6fffb));\n border: 1px solid var(--af-button-primary-stroke, var(--colour-brand-inkwell, #14343b));\n}\n\nbutton.button.variant-secondary {\n background: var(--af-button-secondary-bg, transparent);\n border: 1px solid var(--af-button-secondary-stroke, var(--colour-brand-inkwell, #14343b));\n}\n\nbutton.button.variant-ghost {\n background: transparent;\n border: none;\n}\n\n/* ==========================================================================\n Reset anchor element styles (when using href prop)\n ========================================================================== */\n\na.button {\n text-decoration: none;\n color: inherit;\n}\n\na.button.variant-primary {\n background: var(--af-button-primary-bg, var(--colour-brand-ice, #a6fffb));\n border: 1px solid var(--af-button-primary-stroke, var(--colour-brand-inkwell, #14343b));\n}\n\na.button.variant-secondary {\n background: var(--af-button-secondary-bg, transparent);\n border: 1px solid var(--af-button-secondary-stroke, var(--colour-brand-inkwell, #14343b));\n}\n\na.button.variant-ghost {\n background: transparent;\n border: none;\n}\n","import { Component, h, Prop, Host, State } from '@stencil/core';\n\n/**\n * Button component that inherits colors from theme context.\n * Colors are determined by the parent theme (af-section, af-card, etc.)\n * via CSS custom properties.\n * \n * @slot - Button label text\n * @slot icon-left - Icon displayed before the label\n * @slot icon-right - Icon displayed after the label\n */\n@Component({\n tag: 'af-button',\n styleUrl: 'af-button.css',\n shadow: true\n})\nexport class AfButton {\n /**\n * The visual variant of the button.\n * - `primary` - Main CTA with filled background (use sparingly, 1-2 per view)\n * - `secondary` - Supporting action with outlined style\n * - `ghost` - Link-style with themed underline on the label; commonly paired\n * with a right-pointing icon. Matches Webflow's \"button ghost\" variant.\n */\n @Prop({ reflect: true }) variant: 'primary' | 'secondary' | 'ghost' = 'primary';\n\n /**\n * The size of the button.\n * - `default` - Standard size for primary CTAs (12/24px padding)\n * - `thin` - Compact inline/secondary size (8/16px padding)\n */\n @Prop() size: 'default' | 'thin' = 'default';\n\n /**\n * Whether the button is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Button type (when not using href)\n */\n @Prop() type: 'button' | 'submit' | 'reset' = 'button';\n\n /**\n * Optional href to render as a link instead of a button\n */\n @Prop() href?: string;\n\n @State() hasIconLeft: boolean = false;\n @State() hasIconRight: boolean = false;\n\n private handleSlotChange = (slotName: 'icon-left' | 'icon-right') => (event: Event) => {\n const slot = event.target as HTMLSlotElement;\n const hasContent = slot.assignedNodes().length > 0;\n if (slotName === 'icon-left') {\n this.hasIconLeft = hasContent;\n } else {\n this.hasIconRight = hasContent;\n }\n };\n\n render() {\n const classes = {\n 'button': true,\n [`variant-${this.variant}`]: true,\n [`size-${this.size}`]: true,\n 'disabled': this.disabled\n };\n\n const content = [\n <span class={{ 'icon-left': true, 'has-content': this.hasIconLeft }}>\n <slot name=\"icon-left\" onSlotchange={this.handleSlotChange('icon-left')}></slot>\n </span>,\n <span class=\"label\">\n <slot></slot>\n </span>,\n <span class={{ 'icon-right': true, 'has-content': this.hasIconRight }}>\n <slot name=\"icon-right\" onSlotchange={this.handleSlotChange('icon-right')}></slot>\n </span>\n ];\n\n // Render as anchor if href is provided (and not disabled)\n if (this.href && !this.disabled) {\n return (\n <Host>\n <a href={this.href} class={classes}>\n {content}\n </a>\n </Host>\n );\n }\n\n return (\n <Host>\n <button type={this.type} disabled={this.disabled} class={classes}>\n {content}\n </button>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,WAAW,GAAG,s5KAAs5K;;MCgB75K,QAAQ,GAAA,MAAA;AALrB,IAAA,WAAA,CAAA,OAAA,EAAA;;AAME;;;;;;AAMG;AACsB,QAAA,IAAO,CAAA,OAAA,GAAsC,SAAS;AAE/E;;;;AAIG;AACK,QAAA,IAAI,CAAA,IAAA,GAAuB,SAAS;AAE5C;;AAEG;AACK,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK;AAEjC;;AAEG;AACK,QAAA,IAAI,CAAA,IAAA,GAAkC,QAAQ;AAO7C,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK;AAC5B,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK;QAE9B,IAAgB,CAAA,gBAAA,GAAG,CAAC,QAAoC,KAAK,CAAC,KAAY,KAAI;AACpF,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAyB;YAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC;AAClD,YAAA,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC5B,gBAAA,IAAI,CAAC,WAAW,GAAG,UAAU;;iBACxB;AACL,gBAAA,IAAI,CAAC,YAAY,GAAG,UAAU;;AAElC,SAAC;AAyCF;IAvCC,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,CAAC,WAAW,IAAI,CAAC,OAAO,CAAE,CAAA,GAAG,IAAI;AACjC,YAAA,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAE,CAAA,GAAG,IAAI;YAC3B,UAAU,EAAE,IAAI,CAAC;SAClB;AAED,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,CAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,EAAA,EACjE,CAAA,CAAA,MAAA,EAAA,EAAM,IAAI,EAAC,WAAW,EAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAS,CAC3E;AACP,YAAA,CAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAC,OAAO,EAAA,EACjB,CAAA,CAAA,MAAA,EAAA,IAAA,CAAa,CACR;AACP,YAAA,CAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,EAAA,EACnE,CAAA,CAAA,MAAA,EAAA,EAAM,IAAI,EAAC,YAAY,EAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAS;SAErF;;QAGD,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC/B,QACE,EAAC,IAAI,EAAA,IAAA,EACH,CAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAC/B,EAAA,OAAO,CACN,CACC;;AAIX,QAAA,QACE,EAAC,IAAI,EAAA,IAAA,EACH,CAAQ,CAAA,QAAA,EAAA,EAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAA,EAC7D,OAAO,CACD,CACJ;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-card.entry.esm.js","sources":["src/components/af-card/af-card.css?tag=af-card&encapsulation=scoped","src/components/af-card/af-card.tsx"],"sourcesContent":["/* Theme CSS custom properties follow the global token structure from @affinda/tokens */\n\n:host {\n display: block;\n width: 100%;\n}\n\n/* ==========================================================================\n Stretch Mode\n \n When stretch attribute is present, the card fills its container height\n and uses flexbox to distribute space between children. This enables\n equal-height cards in grid/flex layouts.\n ========================================================================== */\n\n:host([stretch]) {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n:host([stretch]) .card {\n flex: 1 1 auto;\n}\n\n:host([stretch]) .card__content {\n flex: 1 1 auto;\n}\n\n/* ==========================================================================\n Base Card Styles\n ========================================================================== */\n\n.card {\n border-radius: var(--border-radius-card-level-1, 32px);\n overflow: hidden;\n position: relative;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n}\n\n/* ==========================================================================\n Theme Variants\n \n Background colors from Figma tokens:\n - white: #ffffff (Colour/Brand/White)\n - white-ivory: #fff9ee (Colour/Brand/Ivory-Paper)\n - inkwell: #14343b (Colour/Brand/Inkwell)\n - mist-green: #c6d5d1 (Colour/Brand/Mist-Green)\n - soft-clay: #c0ab8d (Colour/Softclay/400)\n ========================================================================== */\n\n/* WHITE THEME */\n.card.theme-white {\n background-color: var(--colour-brand-white, #ffffff);\n \n /* Typography */\n --af-typography-heading-primary: var(--colour-brand-inkwell, #14343b);\n --af-typography-body-default: var(--colour-inkwell-400, #2b484f);\n --af-background-level-1: var(--colour-mistgreen-200, #e8eeed);\n}\n\n/* WHITE-IVORY THEME */\n.card.theme-white-ivory {\n background-color: var(--colour-brand-ivory-paper, #fff9ee);\n \n /* Typography */\n --af-typography-heading-primary: var(--colour-brand-inkwell, #14343b);\n --af-typography-body-default: var(--colour-inkwell-400, #2b484f);\n --af-background-level-1: var(--colour-ivory-200, #ffefcc);\n}\n\n/* INKWELL THEME (Dark) */\n.card.theme-inkwell {\n background-color: var(--colour-brand-inkwell, #14343b);\n \n /* Typography - light colors on dark background */\n --af-typography-heading-primary: var(--colour-brand-mist-green, #c6d5d1);\n --af-typography-body-default: var(--colour-inkwell-100, #d0d6d8);\n --af-background-level-1: var(--colour-inkwell-450, #203e45);\n \n /* Button variants for dark theme */\n --af-button-secondary-text: var(--colour-brand-white, #ffffff);\n --af-button-secondary-stroke: var(--colour-brand-white, #ffffff);\n --af-button-ghost-text: var(--colour-brand-white, #ffffff);\n --af-button-ghost-icon: var(--colour-brand-white, #ffffff);\n \n /* Form control tokens (checkbox, radio, switch) */\n --af-form-control-bg: var(--colour-inkwell-450, #203e45);\n --af-form-control-bg-checked: var(--colour-brand-mist-green, #c6d5d1);\n --af-form-control-bg-disabled: var(--colour-inkwell-400, #2b484f);\n --af-form-control-bg-checked-disabled: var(--colour-mistgreen-700, #9eaaa7);\n --af-form-control-stroke: var(--colour-inkwell-350, #60767b);\n --af-form-control-stroke-hover: var(--colour-brand-white, #ffffff);\n --af-form-control-stroke-disabled: var(--colour-inkwell-400, #2b484f);\n --af-form-control-icon: var(--colour-brand-inkwell, #14343b);\n --af-form-control-label: var(--colour-brand-white, #ffffff);\n}\n\n/* MIST-GREEN THEME */\n.card.theme-mist-green {\n background-color: var(--colour-brand-mist-green, #c6d5d1);\n \n /* Typography */\n --af-typography-heading-primary: var(--colour-brand-inkwell, #14343b);\n --af-typography-body-default: var(--colour-inkwell-400, #2b484f);\n --af-background-level-1: var(--colour-mistgreen-300, #dde6e3);\n}\n\n/* SOFT-CLAY THEME */\n.card.theme-soft-clay {\n background-color: var(--colour-softclay-400, #c0ab8d);\n \n /* Typography */\n --af-typography-heading-primary: var(--colour-brand-inkwell, #14343b);\n --af-typography-heading-secondary: var(--colour-brand-ivory-paper, #fff9ee);\n --af-typography-body-default: var(--colour-inkwell-400, #2b484f);\n --af-background-level-1: var(--colour-softclay-500, #b09670);\n}\n\n/* ==========================================================================\n Card Content\n ========================================================================== */\n\n.card__content {\n position: relative;\n padding: var(--af-card-padding, 40px);\n display: flex;\n flex-direction: column;\n gap: var(--af-card-gap, 24px);\n flex: 1;\n box-sizing: border-box;\n z-index: 1;\n}\n\n/* Heading spacing within cards */\n.card__content ::slotted(af-heading) {\n margin-bottom: 0;\n}\n\n/* Text line-height within cards */\n.card__content ::slotted(af-text) {\n line-height: 1.44;\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * Card atom component - a themed container with consistent styling.\n * Provides theme context to children via CSS custom properties.\n * \n * This is a base building block used by molecule components like\n * af-feature-card and af-illustrated-card.\n */\n@Component({\n tag: 'af-card',\n styleUrl: 'af-card.css',\n shadow: false,\n scoped: true,\n})\nexport class AfCard {\n /**\n * Theme - sets background color and provides theme context to children.\n * Defaults to 'mist-green' if not specified.\n */\n @Prop() theme?: 'white' | 'white-ivory' | 'inkwell' | 'mist-green' | 'soft-clay' = 'mist-green';\n\n /**\n * When true, the card stretches to fill its container height.\n * Use this when the card is in a flex/grid container and needs to\n * participate in equal-height layouts. The card's content will use\n * flexbox to distribute space between children.\n */\n @Prop({ reflect: true }) stretch: boolean = false;\n\n render() {\n const classes = {\n 'card': true,\n [`theme-${this.theme}`]: true\n };\n\n return (\n <Host>\n <div class={classes}>\n <div class=\"card__content\">\n <slot></slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,SAAS,GAAG,i/FAAi/F;;MCet/F,MAAM,GAAA,MAAA;AANnB,IAAA,WAAA,CAAA,OAAA,EAAA;;AAOE;;;AAGG;AACK,QAAA,IAAK,CAAA,KAAA,GAAsE,YAAY;AAE/F;;;;;AAKG;AACsB,QAAA,IAAO,CAAA,OAAA,GAAY,KAAK;AAkBlD;IAhBC,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,CAAC,SAAS,IAAI,CAAC,KAAK,CAAE,CAAA,GAAG;SAC1B;QAED,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,OAAO,EAAA,EACjB,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,eAAe,EAAA,EACxB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,CACF,CACD;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-center.entry.esm.js","sources":["src/components/af-center/af-center.css?tag=af-center&encapsulation=shadow","src/components/af-center/af-center.tsx"],"sourcesContent":[":host {\n display: flex;\n box-sizing: border-box;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n","import { Component, h, Host, Prop } from '@stencil/core';\n\ntype Axis = 'horizontal' | 'vertical' | 'both';\n\n/**\n * Center layout component for quickly centering content.\n * Supports horizontal, vertical, or both axes.\n *\n * @slot - Content to center\n */\n@Component({\n tag: 'af-center',\n styleUrl: 'af-center.css',\n shadow: true,\n})\nexport class AfCenter {\n /**\n * Which axis to center on.\n * - 'horizontal': Center horizontally (justify-content: center)\n * - 'vertical': Center vertically (align-items: center)\n * - 'both': Center on both axes\n */\n @Prop() axis: Axis = 'both';\n\n /**\n * Use inline-flex instead of flex.\n * Useful when the center container should only take up as much space as needed.\n */\n @Prop() inline: boolean = false;\n\n /**\n * Set a minimum height. Useful for vertical centering in a viewport.\n * Accepts any valid CSS value (e.g., '100vh', '400px').\n */\n @Prop() minHeight?: string;\n\n render() {\n const style: Record<string, string> = {\n display: this.inline ? 'inline-flex' : 'flex',\n };\n\n if (this.axis === 'horizontal' || this.axis === 'both') {\n style.justifyContent = 'center';\n }\n\n if (this.axis === 'vertical' || this.axis === 'both') {\n style.alignItems = 'center';\n }\n\n if (this.minHeight) {\n style.minHeight = this.minHeight;\n }\n\n return (\n <Host style={style}>\n <slot></slot>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":";;AAAA,MAAM,WAAW,GAAG,wEAAwE;;MCe/E,QAAQ,GAAA,MAAA;AALrB,IAAA,WAAA,CAAA,OAAA,EAAA;;AAME;;;;;AAKG;AACK,QAAA,IAAI,CAAA,IAAA,GAAS,MAAM;AAE3B;;;AAGG;AACK,QAAA,IAAM,CAAA,MAAA,GAAY,KAAK;AA+BhC;IAvBC,MAAM,GAAA;AACJ,QAAA,MAAM,KAAK,GAA2B;YACpC,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,aAAa,GAAG,MAAM;SAC9C;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AACtD,YAAA,KAAK,CAAC,cAAc,GAAG,QAAQ;;AAGjC,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AACpD,YAAA,KAAK,CAAC,UAAU,GAAG,QAAQ;;AAG7B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;;QAGlC,QACE,CAAC,CAAA,IAAI,EAAC,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,KAAK,EAAA,EAChB,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACR;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-checkbox.entry.esm.js","sources":["src/components/af-checkbox/af-checkbox.css?tag=af-checkbox&encapsulation=shadow","src/components/af-checkbox/af-checkbox.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.checkbox {\n display: inline-flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n line-height: 20px;\n color: var(--af-form-control-label, var(--colour-brand-inkwell, #14343b));\n user-select: none;\n}\n\n.checkbox.disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/* Hidden native input */\n.input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n/* Custom checkbox control */\n.control {\n position: relative;\n display: block;\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n border-radius: var(--radii-checkbox, 4px);\n /* Use inset box-shadow instead of border to prevent layout shift */\n border: none;\n box-shadow: inset 0 0 0 1px var(--af-form-control-stroke, var(--colour-mistgreen-500, #d0d6d8));\n background: var(--af-form-control-bg, var(--colour-brand-white, #ffffff));\n transition: all 0.15s ease;\n box-sizing: border-box;\n}\n\n/* Checked/indeterminate state */\n.control.checked {\n background: var(--af-form-control-bg-checked, var(--colour-brand-inkwell, #14343b));\n box-shadow: none;\n}\n\n/* Disabled state */\n.control.disabled {\n background: var(--af-form-control-bg-disabled, var(--colour-mistgreen-200, #e8ebeb));\n box-shadow: inset 0 0 0 1px var(--af-form-control-stroke-disabled, var(--colour-mistgreen-500, #d0d6d8));\n}\n\n.control.checked.disabled {\n background: var(--af-form-control-bg-checked-disabled, var(--colour-inkwell-350, #708380));\n box-shadow: none;\n}\n\n/* Hover state */\n.checkbox:not(.disabled):hover .control:not(.checked) {\n box-shadow: inset 0 0 0 1px var(--af-form-control-stroke-hover, var(--colour-brand-inkwell, #14343b));\n}\n\n/* Focus state */\n.input:focus-visible + .control {\n outline: none;\n box-shadow: \n inset 0 0 0 1px var(--af-form-control-stroke, var(--colour-mistgreen-500, #d0d6d8)),\n 0 0 0 4px var(--af-background-base, var(--colour-brand-white, #ffffff)), \n 0 0 0 5px var(--af-form-control-stroke-hover, var(--colour-brand-inkwell, #14343b));\n}\n\n.input:focus-visible + .control.checked {\n box-shadow: \n 0 0 0 4px var(--af-background-base, var(--colour-brand-white, #ffffff)), \n 0 0 0 5px var(--af-form-control-stroke-hover, var(--colour-brand-inkwell, #14343b));\n}\n\n/* Icon styling - absolutely positioned to prevent layout shift */\n.icon {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 16px;\n height: 16px;\n color: var(--af-form-control-icon, var(--colour-brand-white, #ffffff));\n}\n\n/* Label styling */\n.label {\n display: flex;\n align-items: center;\n min-height: 24px;\n}\n\n/* Empty label - hide if no content */\n.label:empty {\n display: none;\n}\n","import { Component, h, Prop, Host, Event, EventEmitter } from '@stencil/core';\n\n/**\n * Checkbox component for selecting multiple options.\n * Supports checked, unchecked, and indeterminate states.\n * \n * @slot - Checkbox label text\n */\n@Component({\n tag: 'af-checkbox',\n styleUrl: 'af-checkbox.css',\n shadow: true\n})\nexport class AfCheckbox {\n /**\n * Whether the checkbox is checked\n */\n @Prop({ mutable: true, reflect: true }) checked: boolean = false;\n\n /**\n * Whether the checkbox is in an indeterminate state\n */\n @Prop({ reflect: true }) indeterminate: boolean = false;\n\n /**\n * Whether the checkbox is disabled\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /**\n * The name of the checkbox for form submission\n */\n @Prop() name?: string;\n\n /**\n * The value of the checkbox for form submission\n */\n @Prop() value?: string;\n\n /**\n * Emitted when the checkbox checked state changes\n */\n @Event() afChange!: EventEmitter<{ checked: boolean }>;\n\n private inputEl?: HTMLInputElement;\n\n private handleChange = () => {\n if (this.disabled) return;\n this.checked = !this.checked;\n this.afChange.emit({ checked: this.checked });\n };\n\n componentDidLoad() {\n if (this.inputEl) {\n this.inputEl.indeterminate = this.indeterminate;\n }\n }\n\n componentDidUpdate() {\n if (this.inputEl) {\n this.inputEl.indeterminate = this.indeterminate;\n }\n }\n\n render() {\n const checkboxClasses = {\n 'checkbox': true,\n 'checked': this.checked,\n 'indeterminate': this.indeterminate,\n 'disabled': this.disabled\n };\n\n const controlClasses = {\n 'control': true,\n 'checked': this.checked || this.indeterminate,\n 'disabled': this.disabled\n };\n\n return (\n <Host>\n <label class={checkboxClasses}>\n <input\n type=\"checkbox\"\n class=\"input\"\n ref={(el) => this.inputEl = el ?? undefined}\n checked={this.checked}\n disabled={this.disabled}\n name={this.name}\n value={this.value}\n onChange={this.handleChange}\n />\n <span class={controlClasses}>\n {this.checked && !this.indeterminate && (\n <svg class=\"icon\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path \n d=\"M13.5 4L6 11.5L2.5 8\" \n stroke=\"currentColor\" \n stroke-width=\"2\" \n stroke-linecap=\"round\" \n stroke-linejoin=\"round\"\n />\n </svg>\n )}\n {this.indeterminate && (\n <svg class=\"icon\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path \n d=\"M3 8H13\" \n stroke=\"currentColor\" \n stroke-width=\"2\" \n stroke-linecap=\"round\"\n />\n </svg>\n )}\n </span>\n <span class=\"label\">\n <slot></slot>\n </span>\n </label>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-client-carousel.entry.esm.js","sources":["src/components/af-client-carousel/af-client-carousel.css?tag=af-client-carousel&encapsulation=shadow","src/components/af-client-carousel/af-client-carousel.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.client-carousel {\n padding: 48px 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-container {\n display: flex;\n flex-direction: column;\n gap: var(--space-4, 16px);\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-row {\n display: flex;\n width: 100%;\n overflow: hidden;\n position: relative;\n}\n\n.logo-track {\n display: flex;\n gap: var(--space-4, 16px);\n animation-timing-function: linear;\n animation-iteration-count: infinite;\n}\n\n/* Scroll left animation */\n.scroll-left .logo-track {\n animation-name: scroll-left;\n animation-duration: 40s;\n}\n\n/* Scroll right animation */\n.scroll-right .logo-track {\n animation-name: scroll-right;\n animation-duration: 40s;\n}\n\n/* Pause animation on hover */\n:host(:hover) .logo-track {\n animation-play-state: paused;\n}\n\n@keyframes scroll-left {\n 0% {\n transform: translateX(0);\n }\n 100% {\n transform: translateX(-50%);\n }\n}\n\n@keyframes scroll-right {\n 0% {\n transform: translateX(-50%);\n }\n 100% {\n transform: translateX(0);\n }\n}\n\n/* Style slotted container divs as flex rows with proper gap */\n::slotted(*) {\n display: flex;\n flex-shrink: 0;\n gap: var(--space-4, 16px);\n align-items: center;\n}\n\n/* ==========================================================================\n Theme Variants\n ========================================================================== */\n\n/* INKWELL THEME (Default) */\n:host(.theme-inkwell),\n.client-carousel.theme-inkwell {\n background-color: var(--colour-brand-inkwell, #14343B);\n --af-carousel-logo-well-bg: var(--colour-background-level1-dark, #203e45);\n --af-carousel-logo-color: white;\n --af-carousel-logo-filter: brightness(0) invert(1);\n}\n\n/* WHITE THEME */\n:host(.theme-white),\n.client-carousel.theme-white {\n background-color: var(--colour-brand-white, #FFFFFF);\n --af-carousel-logo-well-bg: var(--colour-background-level1, #e8eeed);\n --af-carousel-logo-color: var(--colour-brand-inkwell, #14343B);\n --af-carousel-logo-filter: none;\n}\n\n/* MIST-GREEN THEME */\n:host(.theme-mist-green),\n.client-carousel.theme-mist-green {\n background-color: var(--colour-brand-mist-green, #C6D5D1);\n --af-carousel-logo-well-bg: var(--colour-mistgreen-300, #dde6e3);\n --af-carousel-logo-color: var(--colour-brand-inkwell, #14343B);\n --af-carousel-logo-filter: none;\n}\n\n/* SOFT-CLAY THEME */\n:host(.theme-soft-clay),\n.client-carousel.theme-soft-clay {\n background-color: var(--colour-softclay-400, #c0ab8d);\n --af-carousel-logo-well-bg: var(--colour-softclay-200, #d5c5b0);\n --af-carousel-logo-color: var(--colour-brand-inkwell, #14343B);\n --af-carousel-logo-filter: none;\n}\n\n/* WHITE-IVORY THEME */\n:host(.theme-white-ivory),\n.client-carousel.theme-white-ivory {\n background-color: var(--colour-brand-ivory-paper, #fff9ee);\n --af-carousel-logo-well-bg: var(--colour-softclay-100, #f2eadc);\n --af-carousel-logo-color: var(--colour-brand-inkwell, #14343B);\n --af-carousel-logo-filter: none;\n}\n\n/* ==========================================================================\n Responsive Adjustments\n ========================================================================== */\n\n/* Tablet adjustments */\n@media (max-width: 1024px) {\n .client-carousel {\n padding: 32px 0;\n }\n}\n\n/* Mobile adjustments */\n@media (max-width: 767px) {\n .client-carousel {\n padding: 24px 0;\n }\n \n .carousel-container {\n gap: var(--space-3, 12px);\n }\n \n .logo-track {\n gap: var(--space-3, 12px);\n }\n \n ::slotted(*) {\n gap: var(--space-3, 12px);\n }\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\n\ntype Theme = 'white' | 'inkwell' | 'mist-green' | 'soft-clay' | 'white-ivory';\n\n/**\n * Infinite scrolling carousel for client logos.\n *\n * This is a section-level component that spans full width.\n * Renders one or two scrolling rows; single row matches the Webflow reference,\n * two rows (scrolling opposite directions) is the denser variant.\n *\n * For headlines, use a separate TypographyLockup or Heading component above this carousel.\n */\n@Component({\n tag: 'af-client-carousel',\n styleUrl: 'af-client-carousel.css',\n shadow: true,\n})\nexport class AfClientCarousel {\n /** Theme - sets background color and provides theme context to children */\n @Prop() theme: Theme = 'inkwell';\n\n /**\n * Number of scrolling rows.\n * - `1` (default) — single row scrolling left, matches the Webflow reference.\n * - `2` — two rows scrolling in opposite directions.\n *\n * When `rows=\"2\"`, slot `row-1` and `row-2` independently.\n * When `rows=\"1\"`, slot the default slot (unnamed) or `row-1`.\n */\n @Prop() rows: 1 | 2 = 1;\n\n render() {\n const rows = Number(this.rows);\n return (\n <Host class={`theme-${this.theme}`}>\n <div class={`client-carousel theme-${this.theme} rows-${rows}`}>\n <div class=\"carousel-container\">\n <div class=\"carousel-row scroll-left\">\n <div class=\"logo-track\">\n <slot name=\"row-1\">\n <slot></slot>\n </slot>\n <slot name=\"row-1\">\n <slot></slot>\n </slot>\n </div>\n </div>\n\n {rows === 2 && (\n <div class=\"carousel-row scroll-right\">\n <div class=\"logo-track\">\n <slot name=\"row-2\"></slot>\n <slot name=\"row-2\"></slot>\n </div>\n </div>\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,mBAAmB,GAAG,46EAA46E;;MCkB37E,gBAAgB,GAAA,MAAA;AAL7B,IAAA,WAAA,CAAA,OAAA,EAAA;;;AAOU,QAAA,IAAK,CAAA,KAAA,GAAU,SAAS;AAEhC;;;;;;;AAOG;AACK,QAAA,IAAI,CAAA,IAAA,GAAU,CAAC;AAgCxB;IA9BC,MAAM,GAAA;QACJ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B,QACE,CAAC,CAAA,IAAI,EAAC,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,CAAS,MAAA,EAAA,IAAI,CAAC,KAAK,CAAA,CAAE,EAAA,EAChC,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,yBAAyB,IAAI,CAAC,KAAK,CAAA,MAAA,EAAS,IAAI,CAAA,CAAE,EAAA,EAC5D,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,oBAAoB,EAAA,EAC7B,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,0BAA0B,EAAA,EACnC,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,YAAY,EAAA,EACrB,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,OAAO,EAAA,EAChB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACR,EACP,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,OAAO,EAAA,EAChB,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACR,CACH,CACF,EAEL,IAAI,KAAK,CAAC,KACT,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,2BAA2B,EAAA,EACpC,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,YAAY,EAAA,EACrB,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,OAAO,EAAQ,CAAA,EAC1B,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,OAAO,EAAQ,CAAA,CACtB,CACF,CACP,CACG,CACF,CACD;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-color-swatch.entry.esm.js","sources":["src/components/af-color-swatch/af-color-swatch.css?tag=af-color-swatch&encapsulation=shadow","src/components/af-color-swatch/af-color-swatch.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.swatch {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid #ece6f5;\n background: white;\n}\n\n.color-preview {\n width: 100%;\n height: 120px;\n flex-shrink: 0;\n}\n\n.size-large .color-preview {\n height: 140px;\n}\n\n.color-info {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.color-name {\n font-family: 'NeuSans', 'Inter', system-ui, sans-serif;\n font-size: 16px;\n font-weight: 500;\n color: #14343B;\n}\n\n.color-value {\n font-family: 'Helvetica', 'Inter', monospace, system-ui, sans-serif;\n font-size: 14px;\n color: #708380;\n}\n","import { Component, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'af-color-swatch',\n styleUrl: 'af-color-swatch.css',\n shadow: true\n})\nexport class AfColorSwatch {\n /** Color value (hex) */\n @Prop() color!: string;\n\n /** Color name */\n @Prop() name!: string;\n\n /** Size variant */\n @Prop() size: 'default' | 'large' = 'default';\n\n render() {\n return (\n <div class={{\n 'swatch': true,\n [`size-${this.size}`]: true\n }} part=\"base\">\n <div\n class=\"color-preview\"\n part=\"preview\"\n style={{ backgroundColor: this.color }}\n ></div>\n <div class=\"color-info\" part=\"info\">\n <div class=\"color-name\" part=\"name\">{this.name}</div>\n <div class=\"color-value\" part=\"value\">{this.color}</div>\n </div>\n </div>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,gBAAgB,GAAG,0gBAA0gB;;MCOthB,aAAa,GAAA,MAAA;AAL1B,IAAA,WAAA,CAAA,OAAA,EAAA;;;AAaU,QAAA,IAAI,CAAA,IAAA,GAAwB,SAAS;AAoB9C;IAlBC,MAAM,GAAA;QACJ,QACE,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE;AACV,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAE,CAAA,GAAG;aACxB,EAAE,IAAI,EAAC,MAAM,EAAA,EACZ,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAC,eAAe,EACrB,IAAI,EAAC,SAAS,EACd,KAAK,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,KAAK,EAAE,EACjC,CAAA,EACP,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,YAAY,EAAC,IAAI,EAAC,MAAM,EAAA,EACjC,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,YAAY,EAAC,IAAI,EAAC,MAAM,EAAE,EAAA,IAAI,CAAC,IAAI,CAAO,EACrD,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,aAAa,EAAC,IAAI,EAAC,OAAO,EAAE,EAAA,IAAI,CAAC,KAAK,CAAO,CACpD,CACF;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-contact-item.entry.esm.js","sources":["src/components/af-contact-item/af-contact-item.css?tag=af-contact-item&encapsulation=scoped","src/components/af-contact-item/af-contact-item.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.contact-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.contact-item__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.contact-item__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","import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * Contact item component for footer\n * Displays a label and value pair (e.g., \"Sales enquiries\" / \"contact@example.com\")\n */\n@Component({\n tag: 'af-contact-item',\n styleUrl: 'af-contact-item.css',\n shadow: false,\n scoped: true,\n})\nexport class AfContactItem {\n /** Contact label (e.g., \"Sales enquiries\") */\n @Prop() label: string = '';\n\n /** Contact value (e.g., email address) */\n @Prop() value: string = '';\n\n render() {\n return (\n <Host>\n <div class=\"contact-item\">\n {this.label && (\n <h5 class=\"contact-item__label\">{this.label}</h5>\n )}\n {this.value && (\n <p class=\"contact-item__value\">{this.value}</p>\n )}\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":";;AAAA,MAAM,gBAAgB,GAAG,oeAAoe;;MCYhf,aAAa,GAAA,MAAA;AAN1B,IAAA,WAAA,CAAA,OAAA,EAAA;;;AAQU,QAAA,IAAK,CAAA,KAAA,GAAW,EAAE;;AAGlB,QAAA,IAAK,CAAA,KAAA,GAAW,EAAE;AAiB3B;IAfC,MAAM,GAAA;AACJ,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,cAAc,EAAA,EACtB,IAAI,CAAC,KAAK,KACT,CAAI,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,qBAAqB,EAAE,EAAA,IAAI,CAAC,KAAK,CAAM,CAClD,EACA,IAAI,CAAC,KAAK,KACT,CAAG,CAAA,GAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,qBAAqB,EAAE,EAAA,IAAI,CAAC,KAAK,CAAK,CAChD,EACD,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACT,CACD;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-container.entry.esm.js","sources":["src/components/af-container/af-container.css?tag=af-container&encapsulation=shadow","src/components/af-container/af-container.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.container {\n width: 100%;\n margin-left: auto;\n margin-right: auto;\n box-sizing: border-box;\n\n /* Mobile first: xsmall breakpoint (320px) */\n padding-left: 16px;\n padding-right: 16px;\n}\n\n/* Small breakpoint (375px) */\n@media (min-width: 375px) {\n .container {\n padding-left: 20px;\n padding-right: 20px;\n }\n}\n\n/* Medium breakpoint (768px) */\n@media (min-width: 768px) {\n .container {\n padding-left: 32px;\n padding-right: 32px;\n }\n\n .max-width-medium {\n max-width: 768px;\n }\n}\n\n/* Large breakpoint (1024px) */\n@media (min-width: 1024px) {\n .container {\n padding-left: 64px;\n padding-right: 64px;\n }\n\n .max-width-large {\n max-width: 1024px;\n }\n\n .max-width-medium {\n max-width: 768px;\n }\n}\n\n/* XLarge breakpoint (1440px) */\n@media (min-width: 1440px) {\n .container {\n padding-left: 80px;\n padding-right: 80px;\n }\n\n .max-width-xlarge {\n max-width: 1440px;\n }\n\n .max-width-large {\n max-width: 1024px;\n }\n\n .max-width-medium {\n max-width: 768px;\n }\n}\n\n/* Fluid has no max-width */\n.max-width-fluid {\n max-width: none;\n}\n","import { Component, h, Prop } from '@stencil/core';\n\n/**\n * A responsive container component that provides consistent margins and max-width\n * constraints based on the Affinda grid system.\n */\n@Component({\n tag: 'af-container',\n styleUrl: 'af-container.css',\n shadow: true\n})\nexport class AfContainer {\n /**\n * Maximum width constraint for the container\n * - 'xlarge': 1440px container (default)\n * - 'large': 1024px container\n * - 'medium': 768px container\n * - 'fluid': No max-width constraint, full width with margins\n */\n @Prop() maxWidth: 'xlarge' | 'large' | 'medium' | 'fluid' = 'xlarge';\n\n render() {\n return (\n <div class={`container max-width-${this.maxWidth}`}>\n <slot></slot>\n </div>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,cAAc,GAAG,grBAAgrB;;MCW1rB,WAAW,GAAA,MAAA;AALxB,IAAA,WAAA,CAAA,OAAA,EAAA;;AAME;;;;;;AAMG;AACK,QAAA,IAAQ,CAAA,QAAA,GAA4C,QAAQ;AASrE;IAPC,MAAM,GAAA;AACJ,QAAA,QACE,4DAAK,KAAK,EAAE,uBAAuB,IAAI,CAAC,QAAQ,CAAA,CAAE,EAAA,EAChD,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACT;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-divider.entry.esm.js","sources":["src/components/af-divider/af-divider.css?tag=af-divider&encapsulation=shadow","src/components/af-divider/af-divider.tsx"],"sourcesContent":[":host {\n box-sizing: border-box;\n flex-shrink: 0;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n:host(.divider--horizontal) {\n display: block;\n width: 100%;\n height: 1px;\n background-color: var(--colour-tints-inkwell-100, #d4d4d4);\n}\n\n:host(.divider--vertical) {\n display: inline-block;\n width: 1px;\n height: 100%;\n min-height: 1em;\n background-color: var(--colour-tints-inkwell-100, #d4d4d4);\n align-self: stretch;\n}\n\n","import { Component, h, Host, Prop } from '@stencil/core';\n\ntype Orientation = 'horizontal' | 'vertical';\ntype Spacing = 'none' | '1' | '2' | '3' | '4' | '5' | '6' | '8';\n\n/**\n * Divider component for visual separation between content.\n * Supports horizontal and vertical orientations with theme-aware styling.\n */\n@Component({\n tag: 'af-divider',\n styleUrl: 'af-divider.css',\n shadow: true,\n})\nexport class AfDivider {\n /**\n * Orientation of the divider.\n */\n @Prop() orientation: Orientation = 'horizontal';\n\n /**\n * Spacing (margin) around the divider using space tokens.\n * For horizontal: margin-top and margin-bottom\n * For vertical: margin-left and margin-right\n */\n @Prop() spacing: Spacing = '4';\n\n render() {\n const isVertical = this.orientation === 'vertical';\n const spacingValue = this.spacing === 'none' ? '0' : `var(--space-${this.spacing})`;\n\n const style: Record<string, string> = isVertical\n ? {\n marginLeft: spacingValue,\n marginRight: spacingValue,\n }\n : {\n marginTop: spacingValue,\n marginBottom: spacingValue,\n };\n\n return (\n <Host\n class={{\n 'divider': true,\n 'divider--horizontal': !isVertical,\n 'divider--vertical': isVertical,\n }}\n style={style}\n role=\"separator\"\n aria-orientation={this.orientation}\n ></Host>\n );\n }\n}\n\n"],"names":[],"mappings":";;AAAA,MAAM,YAAY,GAAG,oWAAoW;;MCc5W,SAAS,GAAA,MAAA;AALtB,IAAA,WAAA,CAAA,OAAA,EAAA;;AAME;;AAEG;AACK,QAAA,IAAW,CAAA,WAAA,GAAgB,YAAY;AAE/C;;;;AAIG;AACK,QAAA,IAAO,CAAA,OAAA,GAAY,GAAG;AA6B/B;IA3BC,MAAM,GAAA;AACJ,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,KAAK,UAAU;AAClD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,KAAK,MAAM,GAAG,GAAG,GAAG,CAAA,YAAA,EAAe,IAAI,CAAC,OAAO,GAAG;QAEnF,MAAM,KAAK,GAA2B;AACpC,cAAE;AACE,gBAAA,UAAU,EAAE,YAAY;AACxB,gBAAA,WAAW,EAAE,YAAY;AAC1B;AACH,cAAE;AACE,gBAAA,SAAS,EAAE,YAAY;AACvB,gBAAA,YAAY,EAAE,YAAY;aAC3B;QAEL,QACE,CAAA,CAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EACH,KAAK,EAAE;AACL,gBAAA,SAAS,EAAE,IAAI;gBACf,qBAAqB,EAAE,CAAC,UAAU;AAClC,gBAAA,mBAAmB,EAAE,UAAU;AAChC,aAAA,EACD,KAAK,EAAE,KAAK,EACZ,IAAI,EAAC,WAAW,EAAA,kBAAA,EACE,IAAI,CAAC,WAAW,EAAA,CAC5B;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-feature-accordion.entry.esm.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":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-feature-card.entry.esm.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 /* Ensure proper clipping of absolutely positioned children with border-radius */\n isolation: isolate;\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 border-radius: 0;\n}\n\n.feature-card__background-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n border-radius: 0;\n}\n\n/* Overlay gradient with text */\n.feature-card__overlay {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n border-radius: 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/* Remove border-radius from inner af-card - outer .feature-card handles rounding */\n.feature-card--layout-standard af-card {\n --border-radius-card-level-1: 0;\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 border-radius: 0;\n}\n\n.feature-card__image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center top;\n border-radius: 0;\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":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-feature-grid.entry.esm.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":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-fieldset.entry.esm.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 /* Inherit color from theme context via CSS custom property */\n color: var(--af-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":[],"mappings":";;AAAA,MAAM,aAAa,GAAG,40BAA40B;;MCar1B,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,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAU,CAAA,UAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAA,EACtD,IAAI,CAAC,MAAM,KACV,CAAQ,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,QAAQ,EAAE,EAAA,IAAI,CAAC,MAAM,CAAU,CAC9C,EACD,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,YAAY,EAAA,EACtB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,CACG,CACN;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-footer-column.entry.esm.js","sources":["src/components/af-footer-column/af-footer-column.css?tag=af-footer-column&encapsulation=scoped","src/components/af-footer-column/af-footer-column.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.footer-column {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.footer-column__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-column__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-column__list ::slotted(li) {\n margin: 0;\n}\n\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * Footer navigation column component\n * Used within af-footer to create navigation link groups\n */\n@Component({\n tag: 'af-footer-column',\n styleUrl: 'af-footer-column.css',\n shadow: false,\n scoped: true,\n})\nexport class AfFooterColumn {\n /** Column heading */\n @Prop() heading: string = '';\n\n render() {\n return (\n <Host>\n <div class=\"footer-column\">\n {this.heading && (\n <h5 class=\"footer-column__heading\">{this.heading}</h5>\n )}\n <ul class=\"footer-column__list\">\n <slot></slot>\n </ul>\n </div>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":";;AAAA,MAAM,iBAAiB,GAAG,8iBAA8iB;;MCY3jB,cAAc,GAAA,MAAA;AAN3B,IAAA,WAAA,CAAA,OAAA,EAAA;;;AAQU,QAAA,IAAO,CAAA,OAAA,GAAW,EAAE;AAgB7B;IAdC,MAAM,GAAA;AACJ,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,eAAe,EAAA,EACvB,IAAI,CAAC,OAAO,KACX,CAAI,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,wBAAwB,EAAE,EAAA,IAAI,CAAC,OAAO,CAAM,CACvD,EACD,CAAI,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,qBAAqB,EAAA,EAC7B,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACV,CACD,CACD;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-footer-link.entry.esm.js","sources":["src/components/af-footer-link/af-footer-link.css?tag=af-footer-link&encapsulation=scoped","src/components/af-footer-link/af-footer-link.tsx"],"sourcesContent":[":host {\n display: contents;\n}\n\nli {\n margin: 0;\n list-style: none;\n}\n\n.footer-link {\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-link:hover {\n color: var(--colour-tints-mistGreen-200, #C6D5D1);\n}\n\n.footer-link__external-icon {\n opacity: 0.7;\n flex-shrink: 0;\n}\n\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * Footer link component\n * Styled link for use in footer navigation columns\n */\n@Component({\n tag: 'af-footer-link',\n styleUrl: 'af-footer-link.css',\n shadow: false,\n scoped: true,\n})\nexport class AfFooterLink {\n /** Link URL */\n @Prop() href: string = '#';\n\n /** Whether this is an external link (opens in new tab) */\n @Prop() external: boolean = false;\n\n render() {\n return (\n <Host>\n <li>\n <a \n href={this.href} \n class=\"footer-link\"\n target={this.external ? '_blank' : undefined}\n rel={this.external ? 'noopener noreferrer' : undefined}\n >\n <slot></slot>\n {this.external && (\n <svg class=\"footer-link__external-icon\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path 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\"/>\n </svg>\n )}\n </a>\n </li>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":";;AAAA,MAAM,eAAe,GAAG,ifAAif;;MCY5f,YAAY,GAAA,MAAA;AANzB,IAAA,WAAA,CAAA,OAAA,EAAA;;;AAQU,QAAA,IAAI,CAAA,IAAA,GAAW,GAAG;;AAGlB,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK;AAuBlC;IArBC,MAAM,GAAA;AACJ,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACE,CAAA,CAAA,GAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAC,aAAa,EACnB,MAAM,EAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,SAAS,EAC5C,GAAG,EAAE,IAAI,CAAC,QAAQ,GAAG,qBAAqB,GAAG,SAAS,EAAA,EAEtD,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,EACZ,IAAI,CAAC,QAAQ,KACZ,4DAAK,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAA,EAC5F,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAC,EAAC,qFAAqF,EAAC,MAAM,EAAC,cAAc,kBAAc,KAAK,EAAA,gBAAA,EAAgB,OAAO,EAAiB,iBAAA,EAAA,OAAO,GAAE,CACnL,CACP,CACC,CACD,CACA;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"af-footer.entry.esm.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":[],"mappings":"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"}
|