@affinda/wc 0.0.20 → 0.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/affinda/af-accordion-item.entry.esm.js.map +1 -1
- package/dist/affinda/af-button.entry.esm.js.map +1 -1
- package/dist/affinda/af-card.entry.esm.js.map +1 -1
- package/dist/affinda/af-client-carousel.entry.esm.js.map +1 -1
- package/dist/affinda/af-icon-button.entry.esm.js.map +1 -1
- package/dist/affinda/af-icon-text.entry.esm.js.map +1 -1
- package/dist/affinda/af-illustrated-card.entry.esm.js.map +1 -1
- package/dist/affinda/af-image.entry.esm.js.map +1 -1
- package/dist/affinda/af-in-page-banner.entry.esm.js.map +1 -1
- package/dist/affinda/af-section.entry.esm.js.map +1 -1
- package/dist/affinda/af-stepper-step.entry.esm.js.map +1 -0
- package/dist/affinda/af-stepper.entry.esm.js.map +1 -0
- package/dist/affinda/af-tag.entry.esm.js.map +1 -1
- package/dist/affinda/af-testimonial.entry.esm.js.map +1 -1
- package/dist/affinda/af-text-image.entry.esm.js.map +1 -1
- package/dist/affinda/af-theme-override.entry.esm.js.map +1 -1
- package/dist/affinda/af-typography-lockup.entry.esm.js.map +1 -1
- package/dist/affinda/affinda.esm.js +1 -1
- package/dist/affinda/index.esm.js +1 -1
- package/dist/affinda/p-07efc7a0.entry.js +2 -0
- package/dist/affinda/{p-8f24dfe3.entry.js.map → p-07efc7a0.entry.js.map} +1 -1
- package/dist/affinda/p-08143c7e.entry.js +2 -0
- package/dist/affinda/{p-63314e14.entry.js.map → p-08143c7e.entry.js.map} +1 -1
- package/dist/affinda/{p-01993cc8.entry.js → p-0fb16377.entry.js} +2 -2
- package/dist/affinda/p-122b6e96.entry.js +2 -0
- package/dist/affinda/p-122b6e96.entry.js.map +1 -0
- package/dist/affinda/{p-3d2fb635.entry.js → p-1a87dd1c.entry.js} +2 -2
- package/dist/affinda/p-202bac33.entry.js +2 -0
- package/dist/affinda/p-2e50c27d.entry.js +2 -0
- package/dist/affinda/{p-920e6d30.entry.js.map → p-2e50c27d.entry.js.map} +1 -1
- package/dist/affinda/{p-adacb8c4.entry.js → p-2e8682a0.entry.js} +2 -2
- package/dist/affinda/{p-266af3e1.entry.js → p-3642589b.entry.js} +2 -2
- package/dist/affinda/{p-4c5f92a9.entry.js → p-391bb085.entry.js} +2 -2
- package/dist/affinda/{p-d51c4b1b.entry.js → p-3fc2a3dc.entry.js} +2 -2
- package/dist/affinda/{p-f9e7cf8f.entry.js → p-45f76ad4.entry.js} +2 -2
- package/dist/affinda/p-4fcb61d1.entry.js +2 -0
- package/dist/affinda/{p-2e5e4960.entry.js.map → p-4fcb61d1.entry.js.map} +1 -1
- package/dist/affinda/p-517543bd.entry.js +2 -0
- package/dist/affinda/{p-96df0106.entry.js.map → p-517543bd.entry.js.map} +1 -1
- package/dist/affinda/{p-c72cfcbd.entry.js → p-5591bc79.entry.js} +2 -2
- package/dist/affinda/{p-c74481bd.entry.js → p-6179957e.entry.js} +2 -2
- package/dist/affinda/{p-9e21b6c1.entry.js → p-62699653.entry.js} +2 -2
- package/dist/affinda/p-6a5fa86a.entry.js +2 -0
- package/dist/affinda/{p-68f1f661.entry.js.map → p-6a5fa86a.entry.js.map} +1 -1
- package/dist/affinda/p-76475b41.entry.js +2 -0
- package/dist/affinda/{p-331f9627.entry.js.map → p-76475b41.entry.js.map} +1 -1
- package/dist/affinda/p-78ff69a4.entry.js +2 -0
- package/dist/affinda/p-78ff69a4.entry.js.map +1 -0
- package/dist/affinda/{p-0b5bc045.entry.js → p-79e6fc73.entry.js} +2 -2
- package/dist/affinda/p-79e6fc73.entry.js.map +1 -0
- package/dist/affinda/{p-db9249e4.entry.js → p-7da3a28f.entry.js} +2 -2
- package/dist/affinda/{p-e7d8d909.entry.js → p-86a9ff3e.entry.js} +2 -2
- package/dist/affinda/p-9242c8d1.entry.js +2 -0
- package/dist/affinda/p-9242c8d1.entry.js.map +1 -0
- package/dist/affinda/p-933560e0.entry.js +2 -0
- package/dist/affinda/{p-16f808d5.entry.js.map → p-933560e0.entry.js.map} +1 -1
- package/dist/affinda/{p-e9bc1739.entry.js → p-a53d5549.entry.js} +2 -2
- package/dist/affinda/{p-02830771.entry.js → p-accd917e.entry.js} +2 -2
- package/dist/affinda/{p-cc4e73dc.entry.js → p-ad9b0eec.entry.js} +2 -2
- package/dist/affinda/p-b18767cf.entry.js +2 -0
- package/dist/affinda/{p-57eae3cd.entry.js.map → p-b18767cf.entry.js.map} +1 -1
- package/dist/affinda/p-b85e2bff.entry.js +2 -0
- package/dist/affinda/{p-1c32cfcb.entry.js.map → p-b85e2bff.entry.js.map} +1 -1
- package/dist/affinda/{p-d90366f6.entry.js → p-bb67cf12.entry.js} +2 -2
- package/dist/affinda/p-bb67cf12.entry.js.map +1 -0
- package/dist/affinda/{p-b10103f4.entry.js → p-c01eaa85.entry.js} +2 -2
- package/dist/affinda/p-c225ac8c.entry.js +2 -0
- package/dist/affinda/p-c225ac8c.entry.js.map +1 -0
- package/dist/affinda/{p-288c2656.entry.js → p-c3d7872c.entry.js} +2 -2
- package/dist/affinda/{p-af25dad7.entry.js → p-c51a2687.entry.js} +2 -2
- package/dist/affinda/{p-9de05d1d.entry.js → p-d28b0860.entry.js} +2 -2
- package/dist/affinda/p-d74a7ae9.entry.js +2 -0
- package/dist/affinda/{p-d47a77e2.entry.js → p-e2f555fc.entry.js} +2 -2
- package/dist/affinda/{p-e156a8bb.entry.js → p-e37fea2f.entry.js} +2 -2
- package/dist/affinda/{p-b56e9e2d.entry.js → p-ea02610f.entry.js} +2 -2
- package/dist/affinda/p-ea0ccbce.entry.js +2 -0
- package/dist/affinda/p-eebb5101.entry.js +2 -0
- package/dist/affinda/{p-8f528f9d.entry.js.map → p-eebb5101.entry.js.map} +1 -1
- package/dist/affinda/p-f1dd31bd.entry.js +2 -0
- package/dist/affinda/p-f1dd31bd.entry.js.map +1 -0
- package/dist/affinda/{p-080cf84f.entry.js → p-f4d2a07d.entry.js} +2 -2
- package/dist/affinda/{p-f7a13cd3.entry.js → p-f78dd237.entry.js} +2 -2
- package/dist/affinda/p-f8bdddf5.entry.js +2 -0
- package/dist/affinda/{p-b2338fab.entry.js.map → p-f8bdddf5.entry.js.map} +1 -1
- package/dist/cjs/af-accordion-item.cjs.entry.js +1 -27
- package/dist/cjs/af-accordion-item.entry.cjs.js.map +1 -1
- package/dist/cjs/af-accordion.cjs.entry.js +1 -1
- package/dist/cjs/af-button.cjs.entry.js +5 -4
- package/dist/cjs/af-button.entry.cjs.js.map +1 -1
- package/dist/cjs/af-card.cjs.entry.js +2 -2
- package/dist/cjs/af-card.entry.cjs.js.map +1 -1
- package/dist/cjs/af-center.cjs.entry.js +1 -1
- package/dist/cjs/af-client-carousel.cjs.entry.js +11 -1
- package/dist/cjs/af-client-carousel.entry.cjs.js.map +1 -1
- package/dist/cjs/af-contact-item.cjs.entry.js +1 -1
- package/dist/cjs/af-divider.cjs.entry.js +1 -1
- package/dist/cjs/af-feature-accordion.cjs.entry.js +2 -2
- package/dist/cjs/af-feature-grid.cjs.entry.js +1 -1
- package/dist/cjs/af-footer-column.cjs.entry.js +1 -1
- package/dist/cjs/af-footer-link.cjs.entry.js +1 -1
- package/dist/cjs/af-footer.cjs.entry.js +1 -1
- package/dist/cjs/af-grid.cjs.entry.js +2 -2
- package/dist/cjs/af-icon-box.cjs.entry.js +1 -1
- package/dist/cjs/af-icon-button.cjs.entry.js +1 -1
- package/dist/cjs/af-icon-button.entry.cjs.js.map +1 -1
- package/dist/cjs/af-icon-text.cjs.entry.js +1 -1
- package/dist/cjs/af-icon-text.entry.cjs.js.map +1 -1
- package/dist/cjs/af-illustrated-card.cjs.entry.js +1 -1
- package/dist/cjs/af-illustrated-card.entry.cjs.js.map +1 -1
- package/dist/cjs/af-image.cjs.entry.js +12 -2
- package/dist/cjs/af-image.entry.cjs.js.map +1 -1
- package/dist/cjs/af-in-page-banner.cjs.entry.js +2 -2
- package/dist/cjs/af-in-page-banner.entry.cjs.js.map +1 -1
- package/dist/cjs/af-inline.cjs.entry.js +1 -1
- package/dist/cjs/af-logo-well.cjs.entry.js +1 -1
- package/dist/cjs/af-nav-accordion-item.cjs.entry.js +2 -2
- package/dist/cjs/af-nav-accordion.cjs.entry.js +1 -1
- package/dist/cjs/af-nav-menu-nest.cjs.entry.js +1 -1
- package/dist/cjs/af-nav-menu.cjs.entry.js +1 -1
- package/dist/cjs/af-number-badge.cjs.entry.js +1 -1
- package/dist/cjs/af-progress-line.cjs.entry.js +2 -2
- package/dist/cjs/af-section.cjs.entry.js +3 -3
- package/dist/cjs/af-section.entry.cjs.js.map +1 -1
- package/dist/cjs/af-show.cjs.entry.js +1 -1
- package/dist/cjs/af-social-link.cjs.entry.js +1 -1
- package/dist/cjs/af-spacer.cjs.entry.js +1 -1
- package/dist/cjs/af-split-section.cjs.entry.js +2 -2
- package/dist/cjs/af-stack.cjs.entry.js +1 -1
- package/dist/cjs/af-stepper-step.cjs.entry.js +23 -0
- package/dist/cjs/af-stepper-step.entry.cjs.js.map +1 -0
- package/dist/cjs/af-stepper.cjs.entry.js +34 -0
- package/dist/cjs/af-stepper.entry.cjs.js.map +1 -0
- package/dist/cjs/af-tag.cjs.entry.js +7 -8
- package/dist/cjs/af-tag.entry.cjs.js.map +1 -1
- package/dist/cjs/af-testimonial-carousel.cjs.entry.js +1 -1
- package/dist/cjs/af-testimonial-stat.cjs.entry.js +1 -1
- package/dist/cjs/af-testimonial.cjs.entry.js +3 -3
- package/dist/cjs/af-testimonial.entry.cjs.js.map +1 -1
- package/dist/cjs/af-text-image-nest.cjs.entry.js +1 -1
- package/dist/cjs/af-text-image.cjs.entry.js +1 -1
- package/dist/cjs/af-text-image.entry.cjs.js.map +1 -1
- package/dist/cjs/af-theme-override.cjs.entry.js +2 -2
- package/dist/cjs/af-theme-override.entry.cjs.js.map +1 -1
- package/dist/cjs/af-typography-lockup.cjs.entry.js +21 -4
- package/dist/cjs/af-typography-lockup.entry.cjs.js.map +1 -1
- package/dist/cjs/af-video-container.cjs.entry.js +1 -1
- package/dist/cjs/af-visually-hidden.cjs.entry.js +1 -1
- package/dist/cjs/affinda.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/af-accordion/af-accordion.js +1 -1
- package/dist/collection/components/af-accordion-item/af-accordion-item.js +1 -27
- package/dist/collection/components/af-accordion-item/af-accordion-item.js.map +1 -1
- package/dist/collection/components/af-button/af-button.css +24 -24
- package/dist/collection/components/af-button/af-button.js +10 -9
- package/dist/collection/components/af-button/af-button.js.map +1 -1
- package/dist/collection/components/af-card/af-card.css +2 -2
- package/dist/collection/components/af-card/af-card.js +1 -1
- package/dist/collection/components/af-center/af-center.js +1 -1
- package/dist/collection/components/af-client-carousel/af-client-carousel.js +33 -2
- package/dist/collection/components/af-client-carousel/af-client-carousel.js.map +1 -1
- package/dist/collection/components/af-contact-item/af-contact-item.js +1 -1
- package/dist/collection/components/af-divider/af-divider.js +1 -1
- package/dist/collection/components/af-feature-accordion/af-feature-accordion.js +2 -2
- package/dist/collection/components/af-feature-grid/af-feature-grid.js +1 -1
- package/dist/collection/components/af-footer/af-footer.js +1 -1
- package/dist/collection/components/af-footer-column/af-footer-column.js +1 -1
- package/dist/collection/components/af-footer-link/af-footer-link.js +1 -1
- package/dist/collection/components/af-grid/af-grid.js +2 -2
- package/dist/collection/components/af-icon-box/af-icon-box.js +1 -1
- package/dist/collection/components/af-icon-button/af-icon-button.css +2 -2
- package/dist/collection/components/af-icon-text/af-icon-text.js +3 -3
- package/dist/collection/components/af-icon-text/af-icon-text.js.map +1 -1
- package/dist/collection/components/af-illustrated-card/af-illustrated-card.js +4 -3
- package/dist/collection/components/af-illustrated-card/af-illustrated-card.js.map +1 -1
- package/dist/collection/components/af-image/af-image.css +21 -4
- package/dist/collection/components/af-image/af-image.js +33 -1
- package/dist/collection/components/af-image/af-image.js.map +1 -1
- package/dist/collection/components/af-in-page-banner/af-in-page-banner.css +3 -3
- package/dist/collection/components/af-in-page-banner/af-in-page-banner.js +11 -1
- package/dist/collection/components/af-in-page-banner/af-in-page-banner.js.map +1 -1
- package/dist/collection/components/af-inline/af-inline.js +1 -1
- package/dist/collection/components/af-logo-well/af-logo-well.js +1 -1
- package/dist/collection/components/af-nav-accordion/af-nav-accordion.js +1 -1
- package/dist/collection/components/af-nav-accordion-item/af-nav-accordion-item.js +2 -2
- package/dist/collection/components/af-nav-menu/af-nav-menu.js +1 -1
- package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.js +1 -1
- package/dist/collection/components/af-number-badge/af-number-badge.js +3 -3
- package/dist/collection/components/af-progress-line/af-progress-line.js +2 -2
- package/dist/collection/components/af-section/af-section.css +15 -15
- package/dist/collection/components/af-section/af-section.js +2 -2
- package/dist/collection/components/af-show/af-show.js +1 -1
- package/dist/collection/components/af-social-link/af-social-link.js +1 -1
- package/dist/collection/components/af-spacer/af-spacer.js +1 -1
- package/dist/collection/components/af-split-section/af-split-section.js +2 -2
- package/dist/collection/components/af-stack/af-stack.js +1 -1
- package/dist/collection/components/af-stepper/af-stepper.css +54 -0
- package/dist/collection/components/af-stepper/af-stepper.js +83 -0
- package/dist/collection/components/af-stepper/af-stepper.js.map +1 -0
- package/dist/collection/components/af-stepper-step/af-stepper-step.css +85 -0
- package/dist/collection/components/af-stepper-step/af-stepper-step.js +60 -0
- package/dist/collection/components/af-stepper-step/af-stepper-step.js.map +1 -0
- package/dist/collection/components/af-tab/af-tab.js +1 -1
- package/dist/collection/components/af-tab-bar/af-tab-bar.js +2 -2
- package/dist/collection/components/af-tag/af-tag.css +41 -21
- package/dist/collection/components/af-tag/af-tag.js +18 -15
- package/dist/collection/components/af-tag/af-tag.js.map +1 -1
- package/dist/collection/components/af-testimonial/af-testimonial.css +28 -6
- package/dist/collection/components/af-testimonial/af-testimonial.js +14 -6
- package/dist/collection/components/af-testimonial/af-testimonial.js.map +1 -1
- package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js +1 -1
- package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js +1 -1
- package/dist/collection/components/af-text-image/af-text-image.css +5 -3
- package/dist/collection/components/af-text-image-nest/af-text-image-nest.js +1 -1
- package/dist/collection/components/af-theme-override/af-theme-override.css +15 -15
- package/dist/collection/components/af-theme-override/af-theme-override.js +1 -1
- package/dist/collection/components/af-typography-lockup/af-typography-lockup.css +22 -4
- package/dist/collection/components/af-typography-lockup/af-typography-lockup.js +60 -3
- package/dist/collection/components/af-typography-lockup/af-typography-lockup.js.map +1 -1
- package/dist/collection/components/af-video-container/af-video-container.js +1 -1
- package/dist/collection/components/af-visually-hidden/af-visually-hidden.js +1 -1
- package/dist/components/af-accordion-item.js +1 -27
- package/dist/components/af-accordion-item.js.map +1 -1
- package/dist/components/af-accordion.js +1 -1
- package/dist/components/af-button.js +1 -1
- package/dist/components/af-card.js +1 -1
- package/dist/components/af-center.js +1 -1
- package/dist/components/af-client-carousel.js +13 -2
- package/dist/components/af-client-carousel.js.map +1 -1
- package/dist/components/af-contact-item.js +1 -1
- package/dist/components/af-divider.js +1 -1
- package/dist/components/af-feature-accordion.js +2 -2
- package/dist/components/af-feature-card.js +1 -1
- package/dist/components/af-feature-grid.js +2 -2
- package/dist/components/af-footer-column.js +1 -1
- package/dist/components/af-footer-link.js +1 -1
- package/dist/components/af-footer.js +1 -1
- package/dist/components/af-grid-callout.js +1 -1
- package/dist/components/af-grid.js +2 -2
- package/dist/components/af-icon-box.js +1 -1
- package/dist/components/af-icon-button.js +1 -1
- package/dist/components/af-icon-text.js +3 -3
- package/dist/components/af-icon-text.js.map +1 -1
- package/dist/components/af-illustrated-card.js +1 -1
- package/dist/components/af-image.js +1 -1
- package/dist/components/af-in-page-banner.js +3 -3
- package/dist/components/af-in-page-banner.js.map +1 -1
- package/dist/components/af-inline.js +1 -1
- package/dist/components/af-logo-well.js +1 -1
- package/dist/components/af-nav-accordion-item.js +2 -2
- package/dist/components/af-nav-accordion.js +1 -1
- package/dist/components/af-nav-menu-nest.js +1 -1
- package/dist/components/af-nav-menu.js +1 -1
- package/dist/components/af-number-badge.js +1 -1
- package/dist/components/af-progress-line.js +1 -1
- package/dist/components/af-section.js +3 -3
- package/dist/components/af-section.js.map +1 -1
- package/dist/components/af-show.js +1 -1
- package/dist/components/af-social-link.js +1 -1
- package/dist/components/af-spacer.js +1 -1
- package/dist/components/af-split-section.js +2 -2
- package/dist/components/af-stack.js +1 -1
- package/dist/components/af-stepper-step.d.ts +11 -0
- package/dist/components/af-stepper-step.js +44 -0
- package/dist/components/af-stepper-step.js.map +1 -0
- package/dist/components/af-stepper.d.ts +11 -0
- package/dist/components/af-stepper.js +55 -0
- package/dist/components/af-stepper.js.map +1 -0
- package/dist/components/af-tag.js +1 -1
- package/dist/components/af-testimonial-carousel.js +2 -2
- package/dist/components/af-testimonial-stat.js +1 -1
- package/dist/components/af-testimonial.js +9 -15
- package/dist/components/af-testimonial.js.map +1 -1
- package/dist/components/af-text-image-nest.js +1 -1
- package/dist/components/af-text-image.js +2 -2
- package/dist/components/af-text-image.js.map +1 -1
- package/dist/components/af-theme-override.js +2 -2
- package/dist/components/af-theme-override.js.map +1 -1
- package/dist/components/af-typography-lockup.js +1 -1
- package/dist/components/af-video-container.js +1 -1
- package/dist/components/af-visually-hidden.js +1 -1
- package/dist/components/index.js +6 -6
- package/dist/components/p-80hb0CR2.js +71 -0
- package/dist/components/p-80hb0CR2.js.map +1 -0
- package/dist/components/p-BHyABfs0.js +92 -0
- package/dist/components/p-BHyABfs0.js.map +1 -0
- package/dist/components/p-BIgPDyJK.js +103 -0
- package/dist/components/p-BIgPDyJK.js.map +1 -0
- package/dist/components/{p-C8_mFdv5.js → p-BfAQ7eko.js} +4 -4
- package/dist/components/p-BfAQ7eko.js.map +1 -0
- package/dist/components/{p-D66k2SSB.js → p-CFBeRDmV.js} +4 -4
- package/dist/components/{p-D66k2SSB.js.map → p-CFBeRDmV.js.map} +1 -1
- package/dist/components/p-CNtgySkk.js +48 -0
- package/dist/components/p-CNtgySkk.js.map +1 -0
- package/dist/components/{p-BUoRUEpQ.js → p-D_xTKF7j.js} +3 -3
- package/dist/components/{p-BUoRUEpQ.js.map → p-D_xTKF7j.js.map} +1 -1
- package/dist/components/{p-CnNV1GZE.js → p-DcJ8wKzl.js} +5 -5
- package/dist/components/p-DcJ8wKzl.js.map +1 -0
- package/dist/components/p-DnHD91HB.js +57 -0
- package/dist/components/p-DnHD91HB.js.map +1 -0
- package/dist/components/{p-WmKa3rDn.js → p-pudFjW3W.js} +4 -4
- package/dist/components/{p-WmKa3rDn.js.map → p-pudFjW3W.js.map} +1 -1
- package/dist/esm/af-accordion-item.entry.js +1 -27
- package/dist/esm/af-accordion-item.entry.js.map +1 -1
- package/dist/esm/af-accordion.entry.js +1 -1
- package/dist/esm/af-button.entry.js +5 -4
- package/dist/esm/af-button.entry.js.map +1 -1
- package/dist/esm/af-card.entry.js +2 -2
- package/dist/esm/af-card.entry.js.map +1 -1
- package/dist/esm/af-center.entry.js +1 -1
- package/dist/esm/af-client-carousel.entry.js +11 -1
- package/dist/esm/af-client-carousel.entry.js.map +1 -1
- package/dist/esm/af-contact-item.entry.js +1 -1
- package/dist/esm/af-divider.entry.js +1 -1
- package/dist/esm/af-feature-accordion.entry.js +2 -2
- package/dist/esm/af-feature-grid.entry.js +1 -1
- package/dist/esm/af-footer-column.entry.js +1 -1
- package/dist/esm/af-footer-link.entry.js +1 -1
- package/dist/esm/af-footer.entry.js +1 -1
- package/dist/esm/af-grid.entry.js +2 -2
- package/dist/esm/af-icon-box.entry.js +1 -1
- package/dist/esm/af-icon-button.entry.js +1 -1
- package/dist/esm/af-icon-button.entry.js.map +1 -1
- package/dist/esm/af-icon-text.entry.js +1 -1
- package/dist/esm/af-icon-text.entry.js.map +1 -1
- package/dist/esm/af-illustrated-card.entry.js +1 -1
- package/dist/esm/af-illustrated-card.entry.js.map +1 -1
- package/dist/esm/af-image.entry.js +12 -2
- package/dist/esm/af-image.entry.js.map +1 -1
- package/dist/esm/af-in-page-banner.entry.js +2 -2
- package/dist/esm/af-in-page-banner.entry.js.map +1 -1
- package/dist/esm/af-inline.entry.js +1 -1
- package/dist/esm/af-logo-well.entry.js +1 -1
- package/dist/esm/af-nav-accordion-item.entry.js +2 -2
- package/dist/esm/af-nav-accordion.entry.js +1 -1
- package/dist/esm/af-nav-menu-nest.entry.js +1 -1
- package/dist/esm/af-nav-menu.entry.js +1 -1
- package/dist/esm/af-number-badge.entry.js +1 -1
- package/dist/esm/af-progress-line.entry.js +2 -2
- package/dist/esm/af-section.entry.js +3 -3
- package/dist/esm/af-section.entry.js.map +1 -1
- package/dist/esm/af-show.entry.js +1 -1
- package/dist/esm/af-social-link.entry.js +1 -1
- package/dist/esm/af-spacer.entry.js +1 -1
- package/dist/esm/af-split-section.entry.js +2 -2
- package/dist/esm/af-stack.entry.js +1 -1
- package/dist/esm/af-stepper-step.entry.js +21 -0
- package/dist/esm/af-stepper-step.entry.js.map +1 -0
- package/dist/esm/af-stepper.entry.js +32 -0
- package/dist/esm/af-stepper.entry.js.map +1 -0
- package/dist/esm/af-tag.entry.js +7 -8
- package/dist/esm/af-tag.entry.js.map +1 -1
- package/dist/esm/af-testimonial-carousel.entry.js +1 -1
- package/dist/esm/af-testimonial-stat.entry.js +1 -1
- package/dist/esm/af-testimonial.entry.js +3 -3
- package/dist/esm/af-testimonial.entry.js.map +1 -1
- package/dist/esm/af-text-image-nest.entry.js +1 -1
- package/dist/esm/af-text-image.entry.js +1 -1
- package/dist/esm/af-text-image.entry.js.map +1 -1
- package/dist/esm/af-theme-override.entry.js +2 -2
- package/dist/esm/af-theme-override.entry.js.map +1 -1
- package/dist/esm/af-typography-lockup.entry.js +21 -4
- package/dist/esm/af-typography-lockup.entry.js.map +1 -1
- package/dist/esm/af-video-container.entry.js +1 -1
- package/dist/esm/af-visually-hidden.entry.js +1 -1
- package/dist/esm/affinda.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/af-button/af-button.d.ts +6 -5
- package/dist/types/components/af-client-carousel/af-client-carousel.d.ts +11 -1
- package/dist/types/components/af-icon-text/af-icon-text.d.ts +2 -2
- package/dist/types/components/af-illustrated-card/af-illustrated-card.d.ts +3 -2
- package/dist/types/components/af-image/af-image.d.ts +10 -0
- package/dist/types/components/af-in-page-banner/af-in-page-banner.d.ts +10 -0
- package/dist/types/components/af-stepper/af-stepper.d.ts +30 -0
- package/dist/types/components/af-stepper-step/af-stepper-step.d.ts +18 -0
- package/dist/types/components/af-tag/af-tag.d.ts +10 -7
- package/dist/types/components/af-testimonial/af-testimonial.d.ts +11 -2
- package/dist/types/components/af-typography-lockup/af-typography-lockup.d.ts +15 -0
- package/dist/types/components.d.ts +268 -38
- package/package.json +4 -4
- package/dist/affinda/p-0b5bc045.entry.js.map +0 -1
- package/dist/affinda/p-16f808d5.entry.js +0 -2
- package/dist/affinda/p-1c32cfcb.entry.js +0 -2
- package/dist/affinda/p-2e5e4960.entry.js +0 -2
- package/dist/affinda/p-331f9627.entry.js +0 -2
- package/dist/affinda/p-57eae3cd.entry.js +0 -2
- package/dist/affinda/p-6294b6d1.entry.js +0 -2
- package/dist/affinda/p-6294b6d1.entry.js.map +0 -1
- package/dist/affinda/p-63314e14.entry.js +0 -2
- package/dist/affinda/p-68f1f661.entry.js +0 -2
- package/dist/affinda/p-7792cd53.entry.js +0 -2
- package/dist/affinda/p-7792cd53.entry.js.map +0 -1
- package/dist/affinda/p-8f24dfe3.entry.js +0 -2
- package/dist/affinda/p-8f528f9d.entry.js +0 -2
- package/dist/affinda/p-920e6d30.entry.js +0 -2
- package/dist/affinda/p-96df0106.entry.js +0 -2
- package/dist/affinda/p-b0d668d0.entry.js +0 -2
- package/dist/affinda/p-b0d668d0.entry.js.map +0 -1
- package/dist/affinda/p-b2338fab.entry.js +0 -2
- package/dist/affinda/p-bd7170d7.entry.js +0 -2
- package/dist/affinda/p-d6e55455.entry.js +0 -2
- package/dist/affinda/p-d90366f6.entry.js.map +0 -1
- package/dist/affinda/p-fefe9597.entry.js +0 -2
- package/dist/components/p-Bi5ytUXg.js +0 -58
- package/dist/components/p-Bi5ytUXg.js.map +0 -1
- package/dist/components/p-BvIMp8pz.js +0 -37
- package/dist/components/p-BvIMp8pz.js.map +0 -1
- package/dist/components/p-C8_mFdv5.js.map +0 -1
- package/dist/components/p-CnNV1GZE.js.map +0 -1
- package/dist/components/p-DBnL9UHx.js +0 -91
- package/dist/components/p-DBnL9UHx.js.map +0 -1
- package/dist/components/p-JepBVz99.js +0 -71
- package/dist/components/p-JepBVz99.js.map +0 -1
- package/dist/components/p-hOnulRmz.js +0 -84
- package/dist/components/p-hOnulRmz.js.map +0 -1
- /package/dist/affinda/{p-01993cc8.entry.js.map → p-0fb16377.entry.js.map} +0 -0
- /package/dist/affinda/{p-3d2fb635.entry.js.map → p-1a87dd1c.entry.js.map} +0 -0
- /package/dist/affinda/{p-bd7170d7.entry.js.map → p-202bac33.entry.js.map} +0 -0
- /package/dist/affinda/{p-adacb8c4.entry.js.map → p-2e8682a0.entry.js.map} +0 -0
- /package/dist/affinda/{p-266af3e1.entry.js.map → p-3642589b.entry.js.map} +0 -0
- /package/dist/affinda/{p-4c5f92a9.entry.js.map → p-391bb085.entry.js.map} +0 -0
- /package/dist/affinda/{p-d51c4b1b.entry.js.map → p-3fc2a3dc.entry.js.map} +0 -0
- /package/dist/affinda/{p-f9e7cf8f.entry.js.map → p-45f76ad4.entry.js.map} +0 -0
- /package/dist/affinda/{p-c72cfcbd.entry.js.map → p-5591bc79.entry.js.map} +0 -0
- /package/dist/affinda/{p-c74481bd.entry.js.map → p-6179957e.entry.js.map} +0 -0
- /package/dist/affinda/{p-9e21b6c1.entry.js.map → p-62699653.entry.js.map} +0 -0
- /package/dist/affinda/{p-db9249e4.entry.js.map → p-7da3a28f.entry.js.map} +0 -0
- /package/dist/affinda/{p-e7d8d909.entry.js.map → p-86a9ff3e.entry.js.map} +0 -0
- /package/dist/affinda/{p-e9bc1739.entry.js.map → p-a53d5549.entry.js.map} +0 -0
- /package/dist/affinda/{p-02830771.entry.js.map → p-accd917e.entry.js.map} +0 -0
- /package/dist/affinda/{p-cc4e73dc.entry.js.map → p-ad9b0eec.entry.js.map} +0 -0
- /package/dist/affinda/{p-b10103f4.entry.js.map → p-c01eaa85.entry.js.map} +0 -0
- /package/dist/affinda/{p-288c2656.entry.js.map → p-c3d7872c.entry.js.map} +0 -0
- /package/dist/affinda/{p-af25dad7.entry.js.map → p-c51a2687.entry.js.map} +0 -0
- /package/dist/affinda/{p-9de05d1d.entry.js.map → p-d28b0860.entry.js.map} +0 -0
- /package/dist/affinda/{p-d6e55455.entry.js.map → p-d74a7ae9.entry.js.map} +0 -0
- /package/dist/affinda/{p-d47a77e2.entry.js.map → p-e2f555fc.entry.js.map} +0 -0
- /package/dist/affinda/{p-e156a8bb.entry.js.map → p-e37fea2f.entry.js.map} +0 -0
- /package/dist/affinda/{p-b56e9e2d.entry.js.map → p-ea02610f.entry.js.map} +0 -0
- /package/dist/affinda/{p-fefe9597.entry.js.map → p-ea0ccbce.entry.js.map} +0 -0
- /package/dist/affinda/{p-080cf84f.entry.js.map → p-f4d2a07d.entry.js.map} +0 -0
- /package/dist/affinda/{p-f7a13cd3.entry.js.map → p-f78dd237.entry.js.map} +0 -0
package/dist/components/index.js
CHANGED
|
@@ -7,21 +7,21 @@ export { A as AfAspectRatio } from './p-BHKA-yEm.js';
|
|
|
7
7
|
export { A as AfNavItem } from './p-DkvJiyn0.js';
|
|
8
8
|
export { A as AfNavbar } from './p-nwZ2iAi9.js';
|
|
9
9
|
export { A as AfLogo } from './p-CLmCtN_R.js';
|
|
10
|
-
export { A as AfButton } from './p-
|
|
11
|
-
export { A as AfIconButton } from './p-
|
|
10
|
+
export { A as AfButton } from './p-BHyABfs0.js';
|
|
11
|
+
export { A as AfIconButton } from './p-80hb0CR2.js';
|
|
12
12
|
export { A as AfButtonGroup } from './p-CAYG3IzP.js';
|
|
13
|
-
export { A as AfTypographyLockup } from './p-
|
|
13
|
+
export { A as AfTypographyLockup } from './p-BIgPDyJK.js';
|
|
14
14
|
export { A as AfCheckbox } from './p-Dd7Lt2QL.js';
|
|
15
15
|
export { A as AfRadio } from './p-CUSad8vm.js';
|
|
16
16
|
export { A as AfSwitch } from './p-DUQu3N38.js';
|
|
17
17
|
export { A as AfFieldset } from './p-zDoPXonz.js';
|
|
18
18
|
export { A as AfInput } from './p-Dvo_cxk-.js';
|
|
19
19
|
export { A as AfTextarea } from './p-Dwhi37rN.js';
|
|
20
|
-
export { A as AfTag } from './p-
|
|
20
|
+
export { A as AfTag } from './p-DnHD91HB.js';
|
|
21
21
|
export { A as AfTab } from './p-DZ6UMG8G.js';
|
|
22
22
|
export { A as AfTabBar } from './p-Ws-qvw9w.js';
|
|
23
|
-
export { A as AfFeatureCard } from './p-
|
|
24
|
-
export { A as AfIllustratedCard } from './p-
|
|
23
|
+
export { A as AfFeatureCard } from './p-pudFjW3W.js';
|
|
24
|
+
export { A as AfIllustratedCard } from './p-DcJ8wKzl.js';
|
|
25
25
|
//# sourceMappingURL=index.js.map
|
|
26
26
|
|
|
27
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { p as proxyCustomElement, H, h, c as Host } from './p-CxngDK-N.js';
|
|
2
|
+
|
|
3
|
+
const afIconButtonCss = ":host{display:inline-block}:host([variant=\"secondary\"]){color:var(--af-button-secondary-icon, var(--af-typography-body-dark, var(--colour-brand-inkwell, #14343B)))}:host([variant=\"primary\"]){color:var(--af-button-primary-icon, var(--colour-brand-inkwell, #14343B))}:host([variant=\"tertiary\"]){color:var(--af-button-ghost-icon, var(--colour-brand-inkwell, #14343B))}.icon-button{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer;transition:all 0.2s ease;border:1px solid transparent;box-sizing:border-box;flex-shrink:0;text-decoration:none;padding:0}.size-large{width:72px;height:72px;padding:24px}.size-large .icon{width:24px;height:24px}.size-medium{width:48px;height:48px;padding:12px}.size-medium .icon{width:24px;height:24px}.size-small{width:36px;height:36px;padding:8px}.size-small .icon{width:20px;height:20px}.icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;color:inherit}.icon ::slotted(*){width:100%;height:100%;color:inherit}.variant-primary{background:var(--af-button-primary-bg, var(--colour-brand-ice, #A6FFFB));border-color:var(--af-button-primary-stroke, var(--colour-brand-inkwell, #14343B));color:var(--af-button-primary-text, var(--colour-brand-inkwell, #14343B))}.variant-primary:hover:not(.disabled){background:var(--af-button-primary-bg-hover, #95e6e2)}.variant-primary:active:not(.disabled){background:var(--af-button-primary-bg-hover, #95e6e2)}.variant-secondary{background:var(--af-button-secondary-bg, transparent);border-color:var(--af-button-secondary-stroke, currentColor);color:var(--af-button-secondary-text, var(--af-typography-body-dark, var(--colour-brand-inkwell, #14343B)))}.variant-secondary:hover:not(.disabled){background:var(--af-button-secondary-bg-hover, rgba(128, 128, 128, 0.1))}.variant-secondary:active:not(.disabled){background:var(--af-button-secondary-bg-hover, rgba(128, 128, 128, 0.1))}.variant-tertiary{background:transparent;border-color:transparent;color:var(--af-button-ghost-text, var(--colour-brand-inkwell, #14343B))}.variant-tertiary:hover:not(.disabled){opacity:0.8}.variant-tertiary:active:not(.disabled){opacity:0.6}.disabled{opacity:0.4;cursor:not-allowed;pointer-events:none}button.icon-button{background:none;border:none;padding:0;font:inherit;color:inherit;cursor:pointer}button.icon-button.variant-primary{background:var(--af-button-primary-bg, var(--colour-brand-ice, #A6FFFB));border:1px solid var(--af-button-primary-stroke, var(--colour-brand-inkwell, #14343B))}button.icon-button.variant-secondary{background:var(--af-button-secondary-bg, transparent);border:1px solid var(--af-button-secondary-stroke, currentColor);color:var(--af-button-secondary-text, var(--af-typography-body-dark, var(--colour-brand-inkwell, #14343B)))}button.icon-button.variant-tertiary{background:transparent;border:1px solid transparent}";
|
|
4
|
+
|
|
5
|
+
const AfIconButton = /*@__PURE__*/ proxyCustomElement(class AfIconButton extends H {
|
|
6
|
+
constructor(registerHost) {
|
|
7
|
+
super();
|
|
8
|
+
if (registerHost !== false) {
|
|
9
|
+
this.__registerHost();
|
|
10
|
+
}
|
|
11
|
+
this.__attachShadow();
|
|
12
|
+
/**
|
|
13
|
+
* The visual variant of the button.
|
|
14
|
+
* - `primary` - Main CTA with filled ice background
|
|
15
|
+
* - `secondary` - Supporting action with white background
|
|
16
|
+
* - `tertiary` - Minimal style with transparent background
|
|
17
|
+
*/
|
|
18
|
+
this.variant = 'primary';
|
|
19
|
+
/**
|
|
20
|
+
* The size of the button
|
|
21
|
+
*/
|
|
22
|
+
this.size = 'medium';
|
|
23
|
+
/**
|
|
24
|
+
* Whether the button is disabled
|
|
25
|
+
*/
|
|
26
|
+
this.disabled = false;
|
|
27
|
+
/**
|
|
28
|
+
* Button type (when not using href)
|
|
29
|
+
*/
|
|
30
|
+
this.type = 'button';
|
|
31
|
+
}
|
|
32
|
+
render() {
|
|
33
|
+
const classes = {
|
|
34
|
+
'icon-button': true,
|
|
35
|
+
[`variant-${this.variant}`]: true,
|
|
36
|
+
[`size-${this.size}`]: true,
|
|
37
|
+
'disabled': this.disabled
|
|
38
|
+
};
|
|
39
|
+
const content = (h("span", { class: "icon" }, h("slot", null)));
|
|
40
|
+
if (this.href && !this.disabled) {
|
|
41
|
+
return (h(Host, null, h("a", { href: this.href, class: classes, "aria-label": this.ariaLabel }, content)));
|
|
42
|
+
}
|
|
43
|
+
return (h(Host, null, h("button", { type: this.type, disabled: this.disabled, class: classes, "aria-label": this.ariaLabel }, content)));
|
|
44
|
+
}
|
|
45
|
+
static get style() { return afIconButtonCss; }
|
|
46
|
+
}, [257, "af-icon-button", {
|
|
47
|
+
"variant": [513],
|
|
48
|
+
"size": [1],
|
|
49
|
+
"disabled": [4],
|
|
50
|
+
"href": [1],
|
|
51
|
+
"type": [1],
|
|
52
|
+
"ariaLabel": [1, "aria-label"]
|
|
53
|
+
}]);
|
|
54
|
+
function defineCustomElement() {
|
|
55
|
+
if (typeof customElements === "undefined") {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const components = ["af-icon-button"];
|
|
59
|
+
components.forEach(tagName => { switch (tagName) {
|
|
60
|
+
case "af-icon-button":
|
|
61
|
+
if (!customElements.get(tagName)) {
|
|
62
|
+
customElements.define(tagName, AfIconButton);
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
} });
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export { AfIconButton as A, defineCustomElement as d };
|
|
69
|
+
//# sourceMappingURL=p-80hb0CR2.js.map
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=p-80hb0CR2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"p-80hb0CR2.js","mappings":";;AAAA,MAAM,eAAe,GAAG,gzFAAgzF;;MCO3zF,YAAY,iBAAAA,kBAAA,CAAA,MAAA,YAAA,SAAAC,CAAA,CAAA;AALzB,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;;AAME;;;;;AAKG;AACsB,QAAA,IAAO,CAAA,OAAA,GAAyC,SAAS;AAElF;;AAEG;AACK,QAAA,IAAI,CAAA,IAAA,GAAiC,QAAQ;AAErD;;AAEG;AACK,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK;AAOjC;;AAEG;AACK,QAAA,IAAI,CAAA,IAAA,GAAkC,QAAQ;AAuCvD;IAhCC,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,aAAa,EAAE,IAAI;AACnB,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;QAED,MAAM,OAAO,IACX,CAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAC,MAAM,EAAA,EAChB,CAAa,CAAA,MAAA,EAAA,IAAA,CAAA,CACR,CACR;QAED,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC/B,YAAA,QACE,EAAC,IAAI,EAAA,IAAA,EACH,CAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAc,YAAA,EAAA,IAAI,CAAC,SAAS,EAAA,EAC3D,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,EAAc,YAAA,EAAA,IAAI,CAAC,SAAS,IACzF,OAAO,CACD,CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-icon-button/af-icon-button.css?tag=af-icon-button&encapsulation=shadow","src/components/af-icon-button/af-icon-button.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n/* Set color on host for slotted content inheritance */\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=\"primary\"]) {\n color: var(--af-button-primary-icon, var(--colour-brand-inkwell, #14343B));\n}\n\n:host([variant=\"tertiary\"]) {\n color: var(--af-button-ghost-icon, var(--colour-brand-inkwell, #14343B));\n}\n\n.icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n cursor: pointer;\n transition: all 0.2s ease;\n border: 1px solid transparent;\n box-sizing: border-box;\n flex-shrink: 0;\n text-decoration: none;\n padding: 0;\n}\n\n/* Size variants */\n.size-large {\n width: 72px;\n height: 72px;\n padding: 24px;\n}\n\n.size-large .icon {\n width: 24px;\n height: 24px;\n}\n\n.size-medium {\n width: 48px;\n height: 48px;\n padding: 12px;\n}\n\n.size-medium .icon {\n width: 24px;\n height: 24px;\n}\n\n.size-small {\n width: 36px;\n height: 36px;\n padding: 8px;\n}\n\n.size-small .icon {\n width: 20px;\n height: 20px;\n}\n\n/* Icon slot - inherits color from parent */\n.icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: inherit;\n}\n\n.icon ::slotted(*) {\n width: 100%;\n height: 100%;\n color: inherit;\n}\n\n/* Primary variant (ice background) */\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:hover:not(.disabled) {\n background: var(--af-button-primary-bg-hover, #95e6e2);\n}\n\n.variant-primary:active:not(.disabled) {\n background: var(--af-button-primary-bg-hover, #95e6e2);\n}\n\n/* Secondary variant (outlined) */\n.variant-secondary {\n background: var(--af-button-secondary-bg, transparent);\n border-color: var(--af-button-secondary-stroke, currentColor);\n color: var(--af-button-secondary-text, var(--af-typography-body-dark, 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}\n\n.variant-secondary:active:not(.disabled) {\n background: var(--af-button-secondary-bg-hover, rgba(128, 128, 128, 0.1));\n}\n\n/* Tertiary variant (minimal, no border) */\n.variant-tertiary {\n background: transparent;\n border-color: transparent;\n color: var(--af-button-ghost-text, var(--colour-brand-inkwell, #14343B));\n}\n\n.variant-tertiary:hover:not(.disabled) {\n opacity: 0.8;\n}\n\n.variant-tertiary:active:not(.disabled) {\n opacity: 0.6;\n}\n\n/* Disabled state */\n.disabled {\n opacity: 0.4;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* Remove default button styles */\nbutton.icon-button {\n background: none;\n border: none;\n padding: 0;\n font: inherit;\n color: inherit;\n cursor: pointer;\n}\n\nbutton.icon-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.icon-button.variant-secondary {\n background: var(--af-button-secondary-bg, transparent);\n border: 1px solid var(--af-button-secondary-stroke, currentColor);\n color: var(--af-button-secondary-text, var(--af-typography-body-dark, var(--colour-brand-inkwell, #14343B)));\n}\n\nbutton.icon-button.variant-tertiary {\n background: transparent;\n border: 1px solid transparent;\n}\n","import { Component, h, Prop, Host } from '@stencil/core';\n\n@Component({\n tag: 'af-icon-button',\n styleUrl: 'af-icon-button.css',\n shadow: true\n})\nexport class AfIconButton {\n /**\n * The visual variant of the button.\n * - `primary` - Main CTA with filled ice background\n * - `secondary` - Supporting action with white background\n * - `tertiary` - Minimal style with transparent background\n */\n @Prop({ reflect: true }) variant: 'primary' | 'secondary' | 'tertiary' = 'primary';\n\n /**\n * The size of the button\n */\n @Prop() size: 'large' | 'medium' | 'small' = 'medium';\n\n /**\n * Whether the button is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Optional href to render as a link\n */\n @Prop() href?: string;\n\n /**\n * Button type (when not using href)\n */\n @Prop() type: 'button' | 'submit' | 'reset' = 'button';\n\n /**\n * Accessible label for screen readers\n */\n @Prop() ariaLabel!: string;\n\n render() {\n const classes = {\n 'icon-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\">\n <slot></slot>\n </span>\n );\n\n if (this.href && !this.disabled) {\n return (\n <Host>\n <a href={this.href} class={classes} aria-label={this.ariaLabel}>\n {content}\n </a>\n </Host>\n );\n }\n\n return (\n <Host>\n <button type={this.type} disabled={this.disabled} class={classes} aria-label={this.ariaLabel}>\n {content}\n </button>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { p as proxyCustomElement, H, h, c as Host } from './p-CxngDK-N.js';
|
|
2
|
+
|
|
3
|
+
const afButtonCss = ":host{display:inline-block}:host([variant=\"primary\"]){color:var(--af-button-primary-icon, var(--colour-brand-inkwell, #14343B))}:host([variant=\"secondary\"]){color:var(--af-button-secondary-icon, var(--af-typography-body-dark, var(--colour-brand-inkwell, #14343B)))}:host([variant=\"ghost\"]){color:var(--af-button-ghost-icon, var(--colour-brand-inkwell, #14343B))}:host([full-width]),:host(.full-width){display:block;width:100%}:host([full-width]) .button,:host(.full-width) .button{width:100%}.button{display:inline-flex;align-items:center;justify-content:center;gap:0;border-radius:9999px;font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-weight:500;text-decoration:none;cursor:pointer;transition:all 0.2s ease;border:1px solid transparent;box-sizing:border-box;white-space:nowrap;width:var(--af-button-width, auto)}.size-default{padding:12px 24px;font-size:17px;line-height:20px}.size-thin{padding:8px 16px;font-size:14px;line-height:16px}.icon-left,.icon-right{display:none;align-items:center;justify-content:center;flex-shrink:0}.icon-left.has-content,.icon-right.has-content{display:flex}.size-default .icon-left,.size-default .icon-right{width:24px;height:24px}.size-thin .icon-left,.size-thin .icon-right{width:20px;height:20px}.size-default .icon-left.has-content{margin-right:12px}.size-default .icon-right.has-content{margin-left:12px}.size-thin .icon-left.has-content{margin-right:8px}.size-thin .icon-right.has-content{margin-left:8px}.label{flex:0 1 auto;display:flex;align-items:center;justify-content:center}.size-default .label{height:24px}.size-thin .label{height:20px}.variant-primary{background:var(--af-button-primary-bg, var(--colour-brand-ice, #a6fffb));border-color:var(--af-button-primary-stroke, var(--colour-brand-inkwell, #14343b));color:var(--af-button-primary-text, var(--colour-brand-inkwell, #14343b))}.variant-primary .icon-left,.variant-primary .icon-right{color:var(--af-button-primary-icon, var(--colour-brand-inkwell, #14343b))}.variant-primary:hover:not(.disabled){background:var(--af-button-primary-bg-hover, #95E6E2);border-color:var(--af-button-primary-stroke, #14343B)}.variant-primary:focus:not(.disabled),.variant-primary:focus-visible:not(.disabled){background:var(--af-button-primary-bg, #A6FFFB);border-color:var(--af-button-primary-stroke, #14343B);box-shadow:0 0 0 4px var(--af-background-base, #FFF), 0 0 0 5px var(--af-button-primary-stroke, #14343B);outline:none}.variant-primary:active:not(.disabled){background:var(--af-button-primary-bg-hover, #95E6E2)}.variant-secondary{background:var(--af-button-secondary-bg, transparent);border-color:var(--af-button-secondary-stroke, var(--colour-brand-inkwell, #14343b));color:var(--af-button-secondary-text, var(--colour-brand-inkwell, #14343b))}.variant-secondary .icon-left,.variant-secondary .icon-right{color:var(--af-button-secondary-icon, var(--colour-brand-inkwell, #14343b))}.variant-secondary:hover:not(.disabled){background:var(--af-button-secondary-bg-hover, rgba(128, 128, 128, 0.1));border-color:var(--af-button-secondary-stroke, currentColor)}.variant-secondary:focus:not(.disabled),.variant-secondary:focus-visible:not(.disabled){background:var(--af-background-base, #FFF);border-color:var(--af-button-secondary-stroke, currentColor);box-shadow:0 0 0 4px var(--af-background-base, #FFF), 0 0 0 5px var(--af-button-secondary-stroke, currentColor);outline:none}.variant-secondary:active:not(.disabled){background:var(--af-button-secondary-bg-hover, rgba(128, 128, 128, 0.1))}.variant-ghost{background:transparent;border-color:transparent;border-radius:0;color:var(--af-button-ghost-text, var(--colour-brand-inkwell, #14343b));padding-left:0;padding-right:0}.variant-ghost .label{border-bottom:2px solid var(--af-button-ghost-stroke, var(--colour-brand-soft-clay, #B09670))}.variant-ghost .icon-left,.variant-ghost .icon-right{color:var(--af-button-ghost-icon, var(--colour-brand-inkwell, #14343b))}.variant-ghost:hover:not(.disabled){opacity:0.8}.variant-ghost:focus:not(.disabled),.variant-ghost:focus-visible:not(.disabled){outline:none}.variant-ghost:focus-visible:not(.disabled) .label{box-shadow:0 4px 0 0 var(--af-button-ghost-stroke, var(--colour-brand-soft-clay, #B09670))}.variant-ghost:active:not(.disabled){opacity:0.6}.disabled{cursor:not-allowed;pointer-events:none}.variant-primary.disabled{border:1px solid var(--af-button-primary-stroke, #14343B);background:var(--af-button-primary-bg, #A6FFFB);opacity:0.6}.variant-secondary.disabled{border:1px solid var(--af-button-secondary-stroke, currentColor);opacity:0.6}.variant-ghost.disabled{opacity:0.6}button.button{font:inherit;cursor:pointer}button.button.variant-primary{background:var(--af-button-primary-bg, var(--colour-brand-ice, #a6fffb));border:1px solid var(--af-button-primary-stroke, var(--colour-brand-inkwell, #14343b))}button.button.variant-secondary{background:var(--af-button-secondary-bg, transparent);border:1px solid var(--af-button-secondary-stroke, var(--colour-brand-inkwell, #14343b))}button.button.variant-ghost{background:transparent;border:none}a.button{text-decoration:none;color:inherit}a.button.variant-primary{background:var(--af-button-primary-bg, var(--colour-brand-ice, #a6fffb));border:1px solid var(--af-button-primary-stroke, var(--colour-brand-inkwell, #14343b))}a.button.variant-secondary{background:var(--af-button-secondary-bg, transparent);border:1px solid var(--af-button-secondary-stroke, var(--colour-brand-inkwell, #14343b))}a.button.variant-ghost{background:transparent;border:none}";
|
|
4
|
+
|
|
5
|
+
const AfButton = /*@__PURE__*/ proxyCustomElement(class AfButton extends H {
|
|
6
|
+
constructor(registerHost) {
|
|
7
|
+
super();
|
|
8
|
+
if (registerHost !== false) {
|
|
9
|
+
this.__registerHost();
|
|
10
|
+
}
|
|
11
|
+
this.__attachShadow();
|
|
12
|
+
/**
|
|
13
|
+
* The visual variant of the button.
|
|
14
|
+
* - `primary` - Main CTA with filled background (use sparingly, 1-2 per view)
|
|
15
|
+
* - `secondary` - Supporting action with outlined style
|
|
16
|
+
* - `ghost` - Link-style with themed underline on the label; commonly paired
|
|
17
|
+
* with a right-pointing icon. Matches Webflow's "button ghost" variant.
|
|
18
|
+
*/
|
|
19
|
+
this.variant = 'primary';
|
|
20
|
+
/**
|
|
21
|
+
* The size of the button.
|
|
22
|
+
* - `default` - Standard size for primary CTAs (12/24px padding)
|
|
23
|
+
* - `thin` - Compact inline/secondary size (8/16px padding)
|
|
24
|
+
*/
|
|
25
|
+
this.size = 'default';
|
|
26
|
+
/**
|
|
27
|
+
* Whether the button is disabled
|
|
28
|
+
*/
|
|
29
|
+
this.disabled = false;
|
|
30
|
+
/**
|
|
31
|
+
* Button type (when not using href)
|
|
32
|
+
*/
|
|
33
|
+
this.type = 'button';
|
|
34
|
+
this.hasIconLeft = false;
|
|
35
|
+
this.hasIconRight = false;
|
|
36
|
+
this.handleSlotChange = (slotName) => (event) => {
|
|
37
|
+
const slot = event.target;
|
|
38
|
+
const hasContent = slot.assignedNodes().length > 0;
|
|
39
|
+
if (slotName === 'icon-left') {
|
|
40
|
+
this.hasIconLeft = hasContent;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this.hasIconRight = hasContent;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
render() {
|
|
48
|
+
const classes = {
|
|
49
|
+
'button': true,
|
|
50
|
+
[`variant-${this.variant}`]: true,
|
|
51
|
+
[`size-${this.size}`]: true,
|
|
52
|
+
'disabled': this.disabled
|
|
53
|
+
};
|
|
54
|
+
const content = [
|
|
55
|
+
h("span", { class: { 'icon-left': true, 'has-content': this.hasIconLeft } }, h("slot", { name: "icon-left", onSlotchange: this.handleSlotChange('icon-left') })),
|
|
56
|
+
h("span", { class: "label" }, h("slot", null)),
|
|
57
|
+
h("span", { class: { 'icon-right': true, 'has-content': this.hasIconRight } }, h("slot", { name: "icon-right", onSlotchange: this.handleSlotChange('icon-right') }))
|
|
58
|
+
];
|
|
59
|
+
// Render as anchor if href is provided (and not disabled)
|
|
60
|
+
if (this.href && !this.disabled) {
|
|
61
|
+
return (h(Host, null, h("a", { href: this.href, class: classes }, content)));
|
|
62
|
+
}
|
|
63
|
+
return (h(Host, null, h("button", { type: this.type, disabled: this.disabled, class: classes }, content)));
|
|
64
|
+
}
|
|
65
|
+
static get style() { return afButtonCss; }
|
|
66
|
+
}, [257, "af-button", {
|
|
67
|
+
"variant": [513],
|
|
68
|
+
"size": [1],
|
|
69
|
+
"disabled": [4],
|
|
70
|
+
"type": [1],
|
|
71
|
+
"href": [1],
|
|
72
|
+
"hasIconLeft": [32],
|
|
73
|
+
"hasIconRight": [32]
|
|
74
|
+
}]);
|
|
75
|
+
function defineCustomElement() {
|
|
76
|
+
if (typeof customElements === "undefined") {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const components = ["af-button"];
|
|
80
|
+
components.forEach(tagName => { switch (tagName) {
|
|
81
|
+
case "af-button":
|
|
82
|
+
if (!customElements.get(tagName)) {
|
|
83
|
+
customElements.define(tagName, AfButton);
|
|
84
|
+
}
|
|
85
|
+
break;
|
|
86
|
+
} });
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export { AfButton as A, defineCustomElement as d };
|
|
90
|
+
//# sourceMappingURL=p-BHyABfs0.js.map
|
|
91
|
+
|
|
92
|
+
//# sourceMappingURL=p-BHyABfs0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"p-BHyABfs0.js","mappings":";;AAAA,MAAM,WAAW,GAAG,s5KAAs5K;;MCgB75K,QAAQ,iBAAAA,kBAAA,CAAA,MAAA,QAAA,SAAAC,CAAA,CAAA;AALrB,IAAA,WAAA,CAAA,YAAA,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"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"],"version":3}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { p as proxyCustomElement, H, h, c as Host } from './p-CxngDK-N.js';
|
|
2
|
+
|
|
3
|
+
const afTypographyLockupCss = ":host{display:block}.lockup{display:flex;flex-direction:column}.breakpoint-desktop.heading-1.lockup{gap:var(--space-6, 24px)}.breakpoint-mobile.heading-1.lockup{gap:var(--space-5, 20px)}.breakpoint-desktop.heading-2.lockup,.breakpoint-desktop.heading-3.lockup{gap:var(--space-4, 16px)}.breakpoint-mobile.heading-2.lockup{gap:var(--space-4, 16px)}.breakpoint-mobile.heading-3.lockup,.breakpoint-desktop.heading-4.lockup,.breakpoint-desktop.heading-5.lockup{gap:var(--space-3, 12px)}.breakpoint-mobile.heading-4.lockup,.breakpoint-mobile.heading-5.lockup{gap:var(--space-2, 8px)}.text-left{align-items:flex-start}.text-center{align-items:center}.text-right{align-items:flex-end}.text-justify{align-items:stretch}.align-left{text-align:left;--af-text-align:left}.align-center{text-align:center;--af-text-align:center}.align-right{text-align:right;--af-text-align:right}.align-justify{text-align:justify;--af-text-align:justify}.copy{display:flex;flex-direction:column;width:100%;max-width:840px}.breakpoint-desktop.heading-1 .copy{gap:var(--space-6, 24px)}.breakpoint-mobile.heading-1 .copy{gap:var(--space-5, 20px)}.breakpoint-desktop.heading-2 .copy,.breakpoint-desktop.heading-3 .copy{gap:var(--space-4, 16px)}.breakpoint-mobile.heading-2 .copy{gap:var(--space-4, 16px)}.breakpoint-mobile.heading-3 .copy,.breakpoint-desktop.heading-4 .copy,.breakpoint-desktop.heading-5 .copy{gap:var(--space-3, 12px)}.breakpoint-mobile.heading-4 .copy,.breakpoint-mobile.heading-5 .copy{gap:var(--space-2, 8px)}.heading{font-family:var(--typography-headingfont, 'NeuSans', sans-serif);font-weight:var(--font-weight-regular, 400);color:var(--af-typography-heading-primary, var(--colour-typography-heading-primary, #14343B));line-height:var(--line-height-heading-tight, 1);letter-spacing:var(--letter-spacing-heading, -0.02em);white-space:normal}.breakpoint-desktop.heading-1 .heading{font-size:var(--font-size-heading-1-desktop, 56px)}.breakpoint-desktop.heading-2 .heading{font-size:var(--font-size-heading-2-desktop, 44px)}.breakpoint-desktop.heading-3 .heading{font-size:var(--font-size-heading-3-desktop, 34px)}.breakpoint-desktop.heading-4 .heading{font-size:var(--font-size-heading-4-desktop, 24px);line-height:var(--line-height-heading-relaxed, 1.2)}.breakpoint-desktop.heading-5 .heading{font-size:var(--font-size-heading-5-desktop, 20px);line-height:var(--line-height-heading-relaxed, 1.2)}.breakpoint-mobile.heading-1 .heading{font-size:var(--font-size-heading-1-mobile, 38px)}.breakpoint-mobile.heading-2 .heading{font-size:var(--font-size-heading-2-mobile, 32px)}.breakpoint-mobile.heading-3 .heading{font-size:var(--font-size-heading-3-mobile, 25px)}.breakpoint-mobile.heading-4 .heading{font-size:var(--font-size-heading-4-mobile, 20px);line-height:var(--line-height-heading-normal, 1.1)}.breakpoint-mobile.heading-5 .heading{font-size:var(--font-size-heading-5-mobile, 18px);line-height:var(--line-height-heading-normal, 1.1)}.description{font-family:var(--typography-bodyfont, 'NeuSans', sans-serif);font-size:var(--font-size-body-large, 18px);font-weight:var(--font-weight-regular, 400);line-height:var(--line-height-body-large, 26px);color:var(--af-typography-body-default, var(--colour-typography-body-default, #2B484F));white-space:normal}.heading.heading-color-primary{color:var(--af-typography-heading-primary, var(--colour-typography-heading-primary, #14343B))}.heading.heading-color-secondary{color:var(--af-typography-heading-secondary, var(--colour-brand-soft-clay, #B09670))}.description.description-color-default{color:var(--af-typography-body-default, var(--colour-typography-body-default, #2B484F))}.description.description-color-secondary{color:var(--af-typography-heading-secondary, var(--colour-brand-soft-clay, #B09670))}.breakpoint-mobile.heading-3 .description,.breakpoint-desktop.heading-4 .description,.breakpoint-mobile.heading-4 .description,.breakpoint-desktop.heading-5 .description,.breakpoint-mobile.heading-5 .description{font-size:var(--font-size-body-medium, 16px);line-height:var(--line-height-body-medium, 24px)}.description:empty{display:none}.buttons{display:flex;flex-direction:row;gap:var(--space-3, 12px)}.buttons:empty{display:none}.layout-horizontal .buttons{align-items:center}.text-left.layout-horizontal{flex-direction:row;align-items:center;gap:var(--space-4, 16px)}.text-left.layout-horizontal .copy{flex:1 0 0;max-width:950px}.text-left.layout-horizontal.heading-3 .copy,.text-left.layout-horizontal.heading-4 .copy{max-width:840px}.text-left.layout-horizontal .buttons{flex-shrink:0}.layout-vertical .buttons{align-items:flex-start}.buttons.align-left{justify-content:flex-start}.buttons.align-center{justify-content:center}.buttons.align-right{justify-content:flex-end}.buttons.align-justify{justify-content:space-between}.breakpoint-mobile .buttons{flex-direction:column;align-items:stretch}.breakpoint-mobile .buttons.align-center{align-items:center}.breakpoint-mobile .buttons.align-right{align-items:flex-end}.breakpoint-mobile .buttons.align-left{align-items:flex-start}.text-center .copy{max-width:840px}::slotted(*){margin:0}";
|
|
4
|
+
|
|
5
|
+
const AfTypographyLockup = /*@__PURE__*/ proxyCustomElement(class AfTypographyLockup extends H {
|
|
6
|
+
constructor(registerHost) {
|
|
7
|
+
super();
|
|
8
|
+
if (registerHost !== false) {
|
|
9
|
+
this.__registerHost();
|
|
10
|
+
}
|
|
11
|
+
this.__attachShadow();
|
|
12
|
+
/**
|
|
13
|
+
* The heading size (1-5, where 1 is largest)
|
|
14
|
+
*/
|
|
15
|
+
this.headingSize = 2;
|
|
16
|
+
/**
|
|
17
|
+
* The breakpoint for responsive typography
|
|
18
|
+
*/
|
|
19
|
+
this.breakpoint = 'desktop';
|
|
20
|
+
/**
|
|
21
|
+
* Text alignment for the entire lockup (heading and description).
|
|
22
|
+
* Can be overridden individually with headingAlignment and descriptionAlignment.
|
|
23
|
+
*/
|
|
24
|
+
this.textAlignment = 'left';
|
|
25
|
+
/**
|
|
26
|
+
* Button layout direction (horizontal or vertical stacking)
|
|
27
|
+
*/
|
|
28
|
+
this.buttonLayout = 'vertical';
|
|
29
|
+
/**
|
|
30
|
+
* Heading colour variant. Matches the Webflow pattern of `h1.primary` vs
|
|
31
|
+
* `h1.secondary`, where "secondary" renders in the theme's accent/heading-
|
|
32
|
+
* secondary colour (soft-clay on most themes).
|
|
33
|
+
* - `primary` (default) - uses `--af-typography-heading-primary`
|
|
34
|
+
* - `secondary` - uses `--af-typography-heading-secondary`
|
|
35
|
+
*/
|
|
36
|
+
this.headingColor = 'primary';
|
|
37
|
+
/**
|
|
38
|
+
* Description colour variant. Same pattern as `headingColor`; useful for
|
|
39
|
+
* hero-style lockups where the description is rendered in the accent colour.
|
|
40
|
+
* - `default` (default) - uses `--af-typography-body-default`
|
|
41
|
+
* - `secondary` - uses `--af-typography-heading-secondary`
|
|
42
|
+
*/
|
|
43
|
+
this.descriptionColor = 'default';
|
|
44
|
+
}
|
|
45
|
+
render() {
|
|
46
|
+
const effectiveHeadingAlignment = this.headingAlignment ?? this.textAlignment;
|
|
47
|
+
const effectiveDescriptionAlignment = this.descriptionAlignment ?? this.textAlignment;
|
|
48
|
+
const effectiveButtonsAlignment = this.buttonsAlignment ?? this.textAlignment;
|
|
49
|
+
const containerClasses = {
|
|
50
|
+
'lockup': true,
|
|
51
|
+
[`text-${this.textAlignment}`]: true,
|
|
52
|
+
[`layout-${this.buttonLayout}`]: true,
|
|
53
|
+
[`heading-${this.headingSize}`]: true,
|
|
54
|
+
[`breakpoint-${this.breakpoint}`]: true
|
|
55
|
+
};
|
|
56
|
+
const headingClasses = {
|
|
57
|
+
'heading': true,
|
|
58
|
+
[`align-${effectiveHeadingAlignment}`]: true,
|
|
59
|
+
[`heading-color-${this.headingColor}`]: true
|
|
60
|
+
};
|
|
61
|
+
const descriptionClasses = {
|
|
62
|
+
'description': true,
|
|
63
|
+
[`align-${effectiveDescriptionAlignment}`]: true,
|
|
64
|
+
[`description-color-${this.descriptionColor}`]: true
|
|
65
|
+
};
|
|
66
|
+
const buttonsClasses = {
|
|
67
|
+
'buttons': true,
|
|
68
|
+
[`align-${effectiveButtonsAlignment}`]: true
|
|
69
|
+
};
|
|
70
|
+
const copyStyle = this.maxWidth ? { maxWidth: `${this.maxWidth}px` } : {};
|
|
71
|
+
return (h(Host, { key: 'e27de1c33a4f7b9e28c1a2045fc858d2b9bd9253' }, h("div", { key: '0fc659232e499590465bcafb7d72caa6319ad962', class: containerClasses }, h("div", { key: 'c21ef0bbf92217bd988263f0b2e2483ed4e00421', class: "copy", style: copyStyle }, h("div", { key: '13f847be028122f4462c44f2ee8dd05b261c93a0', class: headingClasses, part: "heading" }, h("slot", { key: '2a9f921c75a2cb4e90ba3c3f10e9444ee74437e9' })), h("div", { key: 'aaa6c2bb8d8e186d6d1c05b2a72ee74ed806994a', class: descriptionClasses, part: "body" }, h("slot", { key: '435caeb349e749edb1fe02e66614c7f94c8ca1a5', name: "description" }))), h("div", { key: '21bf7d348b950564d41e2f3cb6a827463edc1d77', class: buttonsClasses, part: "buttons" }, h("slot", { key: 'b92d0e35e21f3f2f7e41e29439388652435c636b', name: "buttons" })))));
|
|
72
|
+
}
|
|
73
|
+
static get style() { return afTypographyLockupCss; }
|
|
74
|
+
}, [257, "af-typography-lockup", {
|
|
75
|
+
"headingSize": [2, "heading-size"],
|
|
76
|
+
"breakpoint": [1],
|
|
77
|
+
"textAlignment": [1, "text-alignment"],
|
|
78
|
+
"headingAlignment": [1, "heading-alignment"],
|
|
79
|
+
"descriptionAlignment": [1, "description-alignment"],
|
|
80
|
+
"buttonLayout": [1, "button-layout"],
|
|
81
|
+
"buttonsAlignment": [1, "buttons-alignment"],
|
|
82
|
+
"maxWidth": [2, "max-width"],
|
|
83
|
+
"headingColor": [1, "heading-color"],
|
|
84
|
+
"descriptionColor": [1, "description-color"]
|
|
85
|
+
}]);
|
|
86
|
+
function defineCustomElement() {
|
|
87
|
+
if (typeof customElements === "undefined") {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const components = ["af-typography-lockup"];
|
|
91
|
+
components.forEach(tagName => { switch (tagName) {
|
|
92
|
+
case "af-typography-lockup":
|
|
93
|
+
if (!customElements.get(tagName)) {
|
|
94
|
+
customElements.define(tagName, AfTypographyLockup);
|
|
95
|
+
}
|
|
96
|
+
break;
|
|
97
|
+
} });
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export { AfTypographyLockup as A, defineCustomElement as d };
|
|
101
|
+
//# sourceMappingURL=p-BIgPDyJK.js.map
|
|
102
|
+
|
|
103
|
+
//# sourceMappingURL=p-BIgPDyJK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"p-BIgPDyJK.js","mappings":";;AAAA,MAAM,qBAAqB,GAAG,09JAA09J;;MCS3+J,kBAAkB,iBAAAA,kBAAA,CAAA,MAAA,kBAAA,SAAAC,CAAA,CAAA;AAL/B,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;;AAME;;AAEG;AACK,QAAA,IAAW,CAAA,WAAA,GAAsB,CAAC;AAE1C;;AAEG;AACK,QAAA,IAAU,CAAA,UAAA,GAAyB,SAAS;AAEpD;;;AAGG;AACK,QAAA,IAAa,CAAA,aAAA,GAAc,MAAM;AAYzC;;AAEG;AACK,QAAA,IAAY,CAAA,YAAA,GAA8B,UAAU;AAY5D;;;;;;AAMG;AACK,QAAA,IAAY,CAAA,YAAA,GAA4B,SAAS;AAEzD;;;;;AAKG;AACK,QAAA,IAAgB,CAAA,gBAAA,GAA4B,SAAS;AAoD9D;IAlDC,MAAM,GAAA;QACJ,MAAM,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa;QAC7E,MAAM,6BAA6B,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,aAAa;QACrF,MAAM,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa;AAE7E,QAAA,MAAM,gBAAgB,GAAG;AACvB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAE,CAAA,GAAG,IAAI;AACpC,YAAA,CAAC,UAAU,IAAI,CAAC,YAAY,CAAE,CAAA,GAAG,IAAI;AACrC,YAAA,CAAC,WAAW,IAAI,CAAC,WAAW,CAAE,CAAA,GAAG,IAAI;AACrC,YAAA,CAAC,cAAc,IAAI,CAAC,UAAU,CAAE,CAAA,GAAG;SACpC;AAED,QAAA,MAAM,cAAc,GAAG;AACrB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,CAAC,CAAS,MAAA,EAAA,yBAAyB,CAAE,CAAA,GAAG,IAAI;AAC5C,YAAA,CAAC,iBAAiB,IAAI,CAAC,YAAY,CAAE,CAAA,GAAG;SACzC;AAED,QAAA,MAAM,kBAAkB,GAAG;AACzB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,CAAC,CAAS,MAAA,EAAA,6BAA6B,CAAE,CAAA,GAAG,IAAI;AAChD,YAAA,CAAC,qBAAqB,IAAI,CAAC,gBAAgB,CAAE,CAAA,GAAG;SACjD;AAED,QAAA,MAAM,cAAc,GAAG;AACrB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,CAAC,CAAS,MAAA,EAAA,yBAAyB,CAAE,CAAA,GAAG;SACzC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,QAAQ,EAAE,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAA,EAAA,CAAI,EAAE,GAAG,EAAE;AAEzE,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,gBAAgB,EAAA,EAC1B,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,SAAS,EAAA,EAChC,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,cAAc,EAAE,IAAI,EAAC,SAAS,EAAA,EACxC,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,EACN,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAC,MAAM,EAAA,EACzC,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,aAAa,EAAA,CAAQ,CAC5B,CACF,EACN,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,cAAc,EAAE,IAAI,EAAC,SAAS,EAAA,EACxC,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,SAAS,EAAA,CAAQ,CACxB,CACF,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-typography-lockup/af-typography-lockup.css?tag=af-typography-lockup&encapsulation=shadow","src/components/af-typography-lockup/af-typography-lockup.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.lockup {\n display: flex;\n flex-direction: column;\n}\n\n/* Lockup gap variations (between copy and buttons) - matches copy internal gap */\n/* Heading 1 desktop: 24px gap */\n.breakpoint-desktop.heading-1.lockup {\n gap: var(--space-6, 24px);\n}\n\n/* Heading 1 mobile: 20px gap */\n.breakpoint-mobile.heading-1.lockup {\n gap: var(--space-5, 20px);\n}\n\n/* Heading 2, 3 desktop: 16px gap */\n.breakpoint-desktop.heading-2.lockup,\n.breakpoint-desktop.heading-3.lockup {\n gap: var(--space-4, 16px);\n}\n\n/* Heading 2 mobile: 16px gap */\n.breakpoint-mobile.heading-2.lockup {\n gap: var(--space-4, 16px);\n}\n\n/* Heading 3 mobile, 4 desktop, 5 desktop: 12px gap */\n.breakpoint-mobile.heading-3.lockup,\n.breakpoint-desktop.heading-4.lockup,\n.breakpoint-desktop.heading-5.lockup {\n gap: var(--space-3, 12px);\n}\n\n/* Heading 4 mobile, 5 mobile: 8px gap */\n.breakpoint-mobile.heading-4.lockup,\n.breakpoint-mobile.heading-5.lockup {\n gap: var(--space-2, 8px);\n}\n\n/* Container alignment (affects flexbox positioning) */\n.text-left {\n align-items: flex-start;\n}\n\n.text-center {\n align-items: center;\n}\n\n.text-right {\n align-items: flex-end;\n}\n\n.text-justify {\n align-items: stretch;\n}\n\n/* Individual text alignment classes */\n.align-left {\n text-align: left;\n --af-text-align: left;\n}\n\n.align-center {\n text-align: center;\n --af-text-align: center;\n}\n\n.align-right {\n text-align: right;\n --af-text-align: right;\n}\n\n.align-justify {\n text-align: justify;\n --af-text-align: justify;\n}\n\n/* Copy section - base styles */\n.copy {\n display: flex;\n flex-direction: column;\n width: 100%;\n max-width: 840px;\n}\n\n/* Copy gap variations based on heading size and breakpoint */\n/* Heading 1 desktop: 24px gap */\n.breakpoint-desktop.heading-1 .copy {\n gap: var(--space-6, 24px);\n}\n\n/* Heading 1 mobile: 20px gap */\n.breakpoint-mobile.heading-1 .copy {\n gap: var(--space-5, 20px);\n}\n\n/* Heading 2, 3 desktop: 16px gap */\n.breakpoint-desktop.heading-2 .copy,\n.breakpoint-desktop.heading-3 .copy {\n gap: var(--space-4, 16px);\n}\n\n/* Heading 2 mobile: 16px gap */\n.breakpoint-mobile.heading-2 .copy {\n gap: var(--space-4, 16px);\n}\n\n/* Heading 3 mobile, 4 desktop, 5 desktop: 12px gap */\n.breakpoint-mobile.heading-3 .copy,\n.breakpoint-desktop.heading-4 .copy,\n.breakpoint-desktop.heading-5 .copy {\n gap: var(--space-3, 12px);\n}\n\n/* Heading 4 mobile, 5 mobile: 8px gap */\n.breakpoint-mobile.heading-4 .copy,\n.breakpoint-mobile.heading-5 .copy {\n gap: var(--space-2, 8px);\n}\n\n/* Heading styles - font-weight 400 (regular) matches Webflow's NeuSans usage */\n.heading {\n font-family: var(--typography-headingfont, 'NeuSans', sans-serif);\n font-weight: var(--font-weight-regular, 400);\n color: var(--af-typography-heading-primary, var(--colour-typography-heading-primary, #14343B));\n line-height: var(--line-height-heading-tight, 1);\n letter-spacing: var(--letter-spacing-heading, -0.02em);\n white-space: normal;\n}\n\n/* Desktop heading sizes */\n.breakpoint-desktop.heading-1 .heading {\n font-size: var(--font-size-heading-1-desktop, 56px);\n}\n\n.breakpoint-desktop.heading-2 .heading {\n font-size: var(--font-size-heading-2-desktop, 44px);\n}\n\n.breakpoint-desktop.heading-3 .heading {\n font-size: var(--font-size-heading-3-desktop, 34px);\n}\n\n.breakpoint-desktop.heading-4 .heading {\n font-size: var(--font-size-heading-4-desktop, 24px);\n line-height: var(--line-height-heading-relaxed, 1.2);\n}\n\n.breakpoint-desktop.heading-5 .heading {\n font-size: var(--font-size-heading-5-desktop, 20px);\n line-height: var(--line-height-heading-relaxed, 1.2);\n}\n\n/* Mobile heading sizes */\n.breakpoint-mobile.heading-1 .heading {\n font-size: var(--font-size-heading-1-mobile, 38px);\n}\n\n.breakpoint-mobile.heading-2 .heading {\n font-size: var(--font-size-heading-2-mobile, 32px);\n}\n\n.breakpoint-mobile.heading-3 .heading {\n font-size: var(--font-size-heading-3-mobile, 25px);\n}\n\n.breakpoint-mobile.heading-4 .heading {\n font-size: var(--font-size-heading-4-mobile, 20px);\n line-height: var(--line-height-heading-normal, 1.1);\n}\n\n.breakpoint-mobile.heading-5 .heading {\n font-size: var(--font-size-heading-5-mobile, 18px);\n line-height: var(--line-height-heading-normal, 1.1);\n}\n\n/* Description/body text - default (body/large) */\n.description {\n font-family: var(--typography-bodyfont, 'NeuSans', sans-serif);\n font-size: var(--font-size-body-large, 18px);\n font-weight: var(--font-weight-regular, 400);\n line-height: var(--line-height-body-large, 26px);\n color: var(--af-typography-body-default, var(--colour-typography-body-default, #2B484F));\n white-space: normal;\n}\n\n/* Heading colour variants — matches Webflow's h1.primary / h1.secondary pattern */\n.heading.heading-color-primary {\n color: var(--af-typography-heading-primary, var(--colour-typography-heading-primary, #14343B));\n}\n\n.heading.heading-color-secondary {\n color: var(--af-typography-heading-secondary, var(--colour-brand-soft-clay, #B09670));\n}\n\n/* Description colour variants */\n.description.description-color-default {\n color: var(--af-typography-body-default, var(--colour-typography-body-default, #2B484F));\n}\n\n.description.description-color-secondary {\n color: var(--af-typography-heading-secondary, var(--colour-brand-soft-clay, #B09670));\n}\n\n/* Description text size variations - smaller for heading 3 mobile, 4, and 5 */\n.breakpoint-mobile.heading-3 .description,\n.breakpoint-desktop.heading-4 .description,\n.breakpoint-mobile.heading-4 .description,\n.breakpoint-desktop.heading-5 .description,\n.breakpoint-mobile.heading-5 .description {\n font-size: var(--font-size-body-medium, 16px);\n line-height: var(--line-height-body-medium, 24px);\n}\n\n.description:empty {\n display: none;\n}\n\n/* Buttons section */\n.buttons {\n display: flex;\n flex-direction: row;\n gap: var(--space-3, 12px);\n}\n\n.buttons:empty {\n display: none;\n}\n\n/* Button layout - horizontal (inline with copy) */\n.layout-horizontal .buttons {\n align-items: center;\n}\n\n.text-left.layout-horizontal {\n flex-direction: row;\n align-items: center;\n gap: var(--space-4, 16px);\n}\n\n.text-left.layout-horizontal .copy {\n flex: 1 0 0;\n max-width: 950px;\n}\n\n/* Heading 3, 4 horizontal: different max-width */\n.text-left.layout-horizontal.heading-3 .copy,\n.text-left.layout-horizontal.heading-4 .copy {\n max-width: 840px;\n}\n\n.text-left.layout-horizontal .buttons {\n flex-shrink: 0;\n}\n\n/* Button layout - vertical (stacked below copy) */\n.layout-vertical .buttons {\n align-items: flex-start;\n}\n\n/* Button position alignment */\n.buttons.align-left {\n justify-content: flex-start;\n}\n\n.buttons.align-center {\n justify-content: center;\n}\n\n.buttons.align-right {\n justify-content: flex-end;\n}\n\n.buttons.align-justify {\n justify-content: space-between;\n}\n\n/* Mobile button stacking - buttons stack vertically on mobile */\n.breakpoint-mobile .buttons {\n flex-direction: column;\n align-items: stretch;\n}\n\n.breakpoint-mobile .buttons.align-center {\n align-items: center;\n}\n\n.breakpoint-mobile .buttons.align-right {\n align-items: flex-end;\n}\n\n.breakpoint-mobile .buttons.align-left {\n align-items: flex-start;\n}\n\n/* Max width constraints for centered layouts */\n.text-center .copy {\n max-width: 840px;\n}\n\n/* Slot content styling */\n::slotted(*) {\n margin: 0;\n}\n","import { Component, h, Prop, Host } from '@stencil/core';\n\ntype TextAlign = 'left' | 'center' | 'right' | 'justify';\n\n@Component({\n tag: 'af-typography-lockup',\n styleUrl: 'af-typography-lockup.css',\n shadow: true\n})\nexport class AfTypographyLockup {\n /**\n * The heading size (1-5, where 1 is largest)\n */\n @Prop() headingSize: 1 | 2 | 3 | 4 | 5 = 2;\n\n /**\n * The breakpoint for responsive typography\n */\n @Prop() breakpoint: 'desktop' | 'mobile' = 'desktop';\n\n /**\n * Text alignment for the entire lockup (heading and description).\n * Can be overridden individually with headingAlignment and descriptionAlignment.\n */\n @Prop() textAlignment: TextAlign = 'left';\n\n /**\n * Heading text alignment. Falls back to textAlignment if not specified.\n */\n @Prop() headingAlignment?: TextAlign;\n\n /**\n * Description text alignment. Falls back to textAlignment if not specified.\n */\n @Prop() descriptionAlignment?: TextAlign;\n\n /**\n * Button layout direction (horizontal or vertical stacking)\n */\n @Prop() buttonLayout: 'horizontal' | 'vertical' = 'vertical';\n\n /**\n * Buttons position alignment. Falls back to textAlignment if not specified.\n */\n @Prop() buttonsAlignment?: TextAlign;\n\n /**\n * Maximum width for the copy section (in pixels)\n */\n @Prop() maxWidth?: number;\n\n /**\n * Heading colour variant. Matches the Webflow pattern of `h1.primary` vs\n * `h1.secondary`, where \"secondary\" renders in the theme's accent/heading-\n * secondary colour (soft-clay on most themes).\n * - `primary` (default) - uses `--af-typography-heading-primary`\n * - `secondary` - uses `--af-typography-heading-secondary`\n */\n @Prop() headingColor: 'primary' | 'secondary' = 'primary';\n\n /**\n * Description colour variant. Same pattern as `headingColor`; useful for\n * hero-style lockups where the description is rendered in the accent colour.\n * - `default` (default) - uses `--af-typography-body-default`\n * - `secondary` - uses `--af-typography-heading-secondary`\n */\n @Prop() descriptionColor: 'default' | 'secondary' = 'default';\n\n render() {\n const effectiveHeadingAlignment = this.headingAlignment ?? this.textAlignment;\n const effectiveDescriptionAlignment = this.descriptionAlignment ?? this.textAlignment;\n const effectiveButtonsAlignment = this.buttonsAlignment ?? this.textAlignment;\n\n const containerClasses = {\n 'lockup': true,\n [`text-${this.textAlignment}`]: true,\n [`layout-${this.buttonLayout}`]: true,\n [`heading-${this.headingSize}`]: true,\n [`breakpoint-${this.breakpoint}`]: true\n };\n\n const headingClasses = {\n 'heading': true,\n [`align-${effectiveHeadingAlignment}`]: true,\n [`heading-color-${this.headingColor}`]: true\n };\n\n const descriptionClasses = {\n 'description': true,\n [`align-${effectiveDescriptionAlignment}`]: true,\n [`description-color-${this.descriptionColor}`]: true\n };\n\n const buttonsClasses = {\n 'buttons': true,\n [`align-${effectiveButtonsAlignment}`]: true\n };\n\n const copyStyle = this.maxWidth ? { maxWidth: `${this.maxWidth}px` } : {};\n\n return (\n <Host>\n <div class={containerClasses}>\n <div class=\"copy\" style={copyStyle}>\n <div class={headingClasses} part=\"heading\">\n <slot></slot>\n </div>\n <div class={descriptionClasses} part=\"body\">\n <slot name=\"description\"></slot>\n </div>\n </div>\n <div class={buttonsClasses} part=\"buttons\">\n <slot name=\"buttons\"></slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, h, c as Host } from './p-CxngDK-N.js';
|
|
2
2
|
|
|
3
|
-
const afCardCss = ".sc-af-card-h{display:block;width:100%}[stretch].sc-af-card-h{display:flex;flex-direction:column;height:100%}[stretch].sc-af-card-h .card.sc-af-card{flex:1 1 auto}[stretch].sc-af-card-h .card__content.sc-af-card{flex:1 1 auto}.card.sc-af-card{border-radius:var(--border-radius-card-level-1, 32px);overflow:hidden;position:relative;display:flex;flex-direction:column;box-sizing:border-box}.card.theme-white.sc-af-card{background-color:var(--colour-brand-white, #ffffff);--af-typography-heading-primary:var(--colour-brand-inkwell, #14343b);--af-typography-body-default:var(--colour-inkwell-400, #2b484f);--af-background-level-1:var(--colour-mistgreen-200, #e8eeed)}.card.theme-white-ivory.sc-af-card{background-color:var(--colour-brand-ivory-paper, #fff9ee);--af-typography-heading-primary:var(--colour-brand-inkwell, #14343b);--af-typography-body-default:var(--colour-inkwell-400, #2b484f);--af-background-level-1:var(--colour-ivory-200, #ffefcc)}.card.theme-inkwell.sc-af-card{background-color:var(--colour-brand-inkwell, #14343b);--af-typography-heading-primary:var(--colour-brand-mist-green, #c6d5d1);--af-typography-body-default:var(--colour-inkwell-100, #d0d6d8);--af-background-level-1:var(--colour-inkwell-450, #203e45);--af-button-secondary-text:var(--colour-brand-white, #ffffff);--af-button-secondary-stroke:var(--colour-brand-white, #ffffff);--af-button-
|
|
3
|
+
const afCardCss = ".sc-af-card-h{display:block;width:100%}[stretch].sc-af-card-h{display:flex;flex-direction:column;height:100%}[stretch].sc-af-card-h .card.sc-af-card{flex:1 1 auto}[stretch].sc-af-card-h .card__content.sc-af-card{flex:1 1 auto}.card.sc-af-card{border-radius:var(--border-radius-card-level-1, 32px);overflow:hidden;position:relative;display:flex;flex-direction:column;box-sizing:border-box}.card.theme-white.sc-af-card{background-color:var(--colour-brand-white, #ffffff);--af-typography-heading-primary:var(--colour-brand-inkwell, #14343b);--af-typography-body-default:var(--colour-inkwell-400, #2b484f);--af-background-level-1:var(--colour-mistgreen-200, #e8eeed)}.card.theme-white-ivory.sc-af-card{background-color:var(--colour-brand-ivory-paper, #fff9ee);--af-typography-heading-primary:var(--colour-brand-inkwell, #14343b);--af-typography-body-default:var(--colour-inkwell-400, #2b484f);--af-background-level-1:var(--colour-ivory-200, #ffefcc)}.card.theme-inkwell.sc-af-card{background-color:var(--colour-brand-inkwell, #14343b);--af-typography-heading-primary:var(--colour-brand-mist-green, #c6d5d1);--af-typography-body-default:var(--colour-inkwell-100, #d0d6d8);--af-background-level-1:var(--colour-inkwell-450, #203e45);--af-button-secondary-text:var(--colour-brand-white, #ffffff);--af-button-secondary-stroke:var(--colour-brand-white, #ffffff);--af-button-ghost-text:var(--colour-brand-white, #ffffff);--af-button-ghost-icon:var(--colour-brand-white, #ffffff);--af-form-control-bg:var(--colour-inkwell-450, #203e45);--af-form-control-bg-checked:var(--colour-brand-mist-green, #c6d5d1);--af-form-control-bg-disabled:var(--colour-inkwell-400, #2b484f);--af-form-control-bg-checked-disabled:var(--colour-mistgreen-700, #9eaaa7);--af-form-control-stroke:var(--colour-inkwell-350, #60767b);--af-form-control-stroke-hover:var(--colour-brand-white, #ffffff);--af-form-control-stroke-disabled:var(--colour-inkwell-400, #2b484f);--af-form-control-icon:var(--colour-brand-inkwell, #14343b);--af-form-control-label:var(--colour-brand-white, #ffffff)}.card.theme-mist-green.sc-af-card{background-color:var(--colour-brand-mist-green, #c6d5d1);--af-typography-heading-primary:var(--colour-brand-inkwell, #14343b);--af-typography-body-default:var(--colour-inkwell-400, #2b484f);--af-background-level-1:var(--colour-mistgreen-300, #dde6e3)}.card.theme-soft-clay.sc-af-card{background-color:var(--colour-softclay-400, #c0ab8d);--af-typography-heading-primary:var(--colour-brand-inkwell, #14343b);--af-typography-heading-secondary:var(--colour-brand-ivory-paper, #fff9ee);--af-typography-body-default:var(--colour-inkwell-400, #2b484f);--af-background-level-1:var(--colour-softclay-500, #b09670)}.card__content.sc-af-card{position:relative;padding:var(--af-card-padding, 40px);display:flex;flex-direction:column;gap:var(--af-card-gap, 24px);flex:1;box-sizing:border-box;z-index:1}.card__content.sc-af-card-s>af-heading,.card__content .sc-af-card-s>af-heading{margin-bottom:0}.card__content.sc-af-card-s>af-text,.card__content .sc-af-card-s>af-text{line-height:1.44}";
|
|
4
4
|
|
|
5
5
|
const AfCard = /*@__PURE__*/ proxyCustomElement(class AfCard extends H {
|
|
6
6
|
constructor(registerHost) {
|
|
@@ -26,7 +26,7 @@ const AfCard = /*@__PURE__*/ proxyCustomElement(class AfCard extends H {
|
|
|
26
26
|
'card': true,
|
|
27
27
|
[`theme-${this.theme}`]: true
|
|
28
28
|
};
|
|
29
|
-
return (h(Host, { key: '
|
|
29
|
+
return (h(Host, { key: 'dbd4b523c8a646e6ed82a774c401822cc3b7bb04' }, h("div", { key: 'a46694f5be510555830b467321a4097630272f5c', class: classes }, h("div", { key: 'fd70362af8c745ae9128364d919310f4a33351a4', class: "card__content" }, h("slot", { key: '262268062acca16738d53a0b0f8b5a94fbfbbd8c' })))));
|
|
30
30
|
}
|
|
31
31
|
static get style() { return afCardCss; }
|
|
32
32
|
}, [262, "af-card", {
|
|
@@ -48,6 +48,6 @@ function defineCustomElement() {
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
export { AfCard as A, defineCustomElement as d };
|
|
51
|
-
//# sourceMappingURL=p-
|
|
51
|
+
//# sourceMappingURL=p-BfAQ7eko.js.map
|
|
52
52
|
|
|
53
|
-
//# sourceMappingURL=p-
|
|
53
|
+
//# sourceMappingURL=p-BfAQ7eko.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"p-BfAQ7eko.js","mappings":";;AAAA,MAAM,SAAS,GAAG,i/FAAi/F;;MCet/F,MAAM,iBAAAA,kBAAA,CAAA,MAAA,MAAA,SAAAC,CAAA,CAAA;AANnB,IAAA,WAAA,CAAA,YAAA,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;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"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"],"version":3}
|
|
@@ -22,10 +22,10 @@ const AfProgressLine = /*@__PURE__*/ proxyCustomElement(class AfProgressLine ext
|
|
|
22
22
|
// Clamp progress between 0 and 1
|
|
23
23
|
const clampedProgress = Math.max(0, Math.min(1, this.progress));
|
|
24
24
|
const progressPercent = clampedProgress * 100;
|
|
25
|
-
return (h(Host, { key: '
|
|
25
|
+
return (h(Host, { key: 'c02fe013e512c135c429737c54cb13816b477dbf' }, h("div", { key: 'c2928397950acd9ea039fc438feeda4b57a5bc80', class: {
|
|
26
26
|
'progress-line': true,
|
|
27
27
|
[`progress-line--${this.orientation}`]: true,
|
|
28
|
-
}, role: "progressbar", "aria-valuenow": Math.round(progressPercent), "aria-valuemin": 0, "aria-valuemax": 100 }, h("div", { key: '
|
|
28
|
+
}, role: "progressbar", "aria-valuenow": Math.round(progressPercent), "aria-valuemin": 0, "aria-valuemax": 100 }, h("div", { key: '877171e53e77401204bedef2bd44d48a70fdf20b', class: "progress-line__background" }), h("div", { key: '86857483735bc4072be844266cc5939b0943fb22', class: "progress-line__active", style: { width: `${progressPercent}%` } }))));
|
|
29
29
|
}
|
|
30
30
|
static get style() { return afProgressLineCss; }
|
|
31
31
|
}, [258, "af-progress-line", {
|
|
@@ -47,6 +47,6 @@ function defineCustomElement() {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
export { AfProgressLine as A, defineCustomElement as d };
|
|
50
|
-
//# sourceMappingURL=p-
|
|
50
|
+
//# sourceMappingURL=p-CFBeRDmV.js.map
|
|
51
51
|
|
|
52
|
-
//# sourceMappingURL=p-
|
|
52
|
+
//# sourceMappingURL=p-CFBeRDmV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-
|
|
1
|
+
{"file":"p-CFBeRDmV.js","mappings":";;AAAA,MAAM,iBAAiB,GAAG,0mBAA0mB;;MCcvnB,cAAc,iBAAAA,kBAAA,CAAA,MAAA,cAAA,SAAAC,CAAA,CAAA;AAN3B,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;AAOE;;AAEG;AACK,QAAA,IAAQ,CAAA,QAAA,GAAW,CAAC;AAE5B;;;AAGG;AACK,QAAA,IAAW,CAAA,WAAA,GAAiB,YAAY;AA4BjD;IA1BC,MAAM,GAAA;;AAEJ,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/D,QAAA,MAAM,eAAe,GAAG,eAAe,GAAG,GAAG;QAE7C,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAE;AACL,gBAAA,eAAe,EAAE,IAAI;AACrB,gBAAA,CAAC,kBAAkB,IAAI,CAAC,WAAW,CAAE,CAAA,GAAG,IAAI;AAC7C,aAAA,EACD,IAAI,EAAC,aAAa,EAAA,eAAA,EACH,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAC3B,eAAA,EAAA,CAAC,mBACD,GAAG,EAAA,EAElB,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,2BAA2B,EAAG,CAAA,EACzC,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAC,uBAAuB,EAC7B,KAAK,EAAE,EAAE,KAAK,EAAE,CAAG,EAAA,eAAe,CAAG,CAAA,CAAA,EAAE,GACvC,CACE,CACD;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-progress-line/af-progress-line.css?tag=af-progress-line&encapsulation=scoped","src/components/af-progress-line/af-progress-line.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n/* ==========================================================================\n Progress Line Base Styles\n ========================================================================== */\n\n.progress-line {\n position: relative;\n overflow: hidden;\n}\n\n.progress-line--horizontal {\n height: 3px;\n width: 100%;\n}\n\n/* ==========================================================================\n Background Track\n ========================================================================== */\n\n.progress-line__background {\n position: absolute;\n inset: 0;\n background: var(--af-background-border-default, var(--colour-background-border-default, #d1ddda));\n height: 1px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n/* ==========================================================================\n Active Progress\n ========================================================================== */\n\n.progress-line__active {\n position: relative;\n height: 100%;\n min-width: 1px;\n background: var(--af-background-border-active, var(--colour-background-border-active, #8a7049));\n transition: width 0.15s ease-out;\n}\n\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * Progress Line atom component for displaying scroll or completion progress.\n * \n * Shows a horizontal bar with a filled portion indicating progress.\n * Used primarily for carousel scroll indicators.\n */\n@Component({\n tag: 'af-progress-line',\n styleUrl: 'af-progress-line.css',\n shadow: false,\n scoped: true,\n})\nexport class AfProgressLine {\n /**\n * Progress value from 0 to 1 (0 = 0%, 1 = 100%).\n */\n @Prop() progress: number = 0;\n\n /**\n * Orientation of the progress line.\n * Currently only horizontal is supported.\n */\n @Prop() orientation: 'horizontal' = 'horizontal';\n\n render() {\n // Clamp progress between 0 and 1\n const clampedProgress = Math.max(0, Math.min(1, this.progress));\n const progressPercent = clampedProgress * 100;\n\n return (\n <Host>\n <div\n class={{\n 'progress-line': true,\n [`progress-line--${this.orientation}`]: true,\n }}\n role=\"progressbar\"\n aria-valuenow={Math.round(progressPercent)}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div class=\"progress-line__background\" />\n <div\n class=\"progress-line__active\"\n style={{ width: `${progressPercent}%` }}\n />\n </div>\n </Host>\n );\n }\n}\n\n"],"version":3}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { p as proxyCustomElement, H, h, c as Host } from './p-CxngDK-N.js';
|
|
2
|
+
|
|
3
|
+
const afImageCss = ".sc-af-image-h{display:block;width:100%}.image-container.sc-af-image{position:relative;overflow:hidden}.image-container--rounded.sc-af-image{border-radius:var(--radius-md, 12px)}.image-container--rounded-left.sc-af-image{border-top-left-radius:var(--radius-md, 12px);border-bottom-left-radius:var(--radius-md, 12px)}.image-container--rounded-right.sc-af-image{border-top-right-radius:var(--radius-md, 12px);border-bottom-right-radius:var(--radius-md, 12px)}.image-container--square.sc-af-image{border-radius:0}.image.sc-af-image{display:block;width:100%;height:auto;object-fit:cover}.image-border.sc-af-image{position:absolute;inset:0;box-shadow:inset 0 0 0 1px var(--af-background-border-subtle, rgba(0, 0, 0, 0.08));pointer-events:none;border-radius:inherit}";
|
|
4
|
+
|
|
5
|
+
const AfImage = /*@__PURE__*/ proxyCustomElement(class AfImage extends H {
|
|
6
|
+
constructor(registerHost) {
|
|
7
|
+
super();
|
|
8
|
+
if (registerHost !== false) {
|
|
9
|
+
this.__registerHost();
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Shape / corner rounding variant. Matches Webflow's `.image-fill.rounded-*`
|
|
13
|
+
* patterns where only one edge is rounded so the image bleeds into a
|
|
14
|
+
* neighbouring section.
|
|
15
|
+
* - `rounded` (default) — symmetric rounded corners on all four sides.
|
|
16
|
+
* - `rounded-left` — rounded only on the left edge (top-left + bottom-left).
|
|
17
|
+
* - `rounded-right` — rounded only on the right edge.
|
|
18
|
+
* - `square` — no corner rounding.
|
|
19
|
+
*/
|
|
20
|
+
this.shape = 'rounded';
|
|
21
|
+
}
|
|
22
|
+
render() {
|
|
23
|
+
return (h(Host, { key: 'a8954272f3c0defc0b9e33d5f3221c6e1083d927' }, h("div", { key: '2fd3bad5b46360cac57d069031ec2f69103f6542', class: `image-container image-container--${this.shape}` }, h("img", { key: '72a11cde6b65481320d8b6a1d65e85862d4a449e', src: this.src, alt: this.alt, class: "image" }), h("div", { key: '7727e1ac4179e96f8c8928de678136337bd82f44', class: "image-border", "aria-hidden": "true" }))));
|
|
24
|
+
}
|
|
25
|
+
static get style() { return afImageCss; }
|
|
26
|
+
}, [258, "af-image", {
|
|
27
|
+
"src": [1],
|
|
28
|
+
"alt": [1],
|
|
29
|
+
"shape": [1]
|
|
30
|
+
}]);
|
|
31
|
+
function defineCustomElement() {
|
|
32
|
+
if (typeof customElements === "undefined") {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const components = ["af-image"];
|
|
36
|
+
components.forEach(tagName => { switch (tagName) {
|
|
37
|
+
case "af-image":
|
|
38
|
+
if (!customElements.get(tagName)) {
|
|
39
|
+
customElements.define(tagName, AfImage);
|
|
40
|
+
}
|
|
41
|
+
break;
|
|
42
|
+
} });
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { AfImage as A, defineCustomElement as d };
|
|
46
|
+
//# sourceMappingURL=p-CNtgySkk.js.map
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=p-CNtgySkk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"p-CNtgySkk.js","mappings":";;AAAA,MAAM,UAAU,GAAG,0vBAA0vB;;MCYhwB,OAAO,iBAAAA,kBAAA,CAAA,MAAA,OAAA,SAAAC,CAAA,CAAA;AANpB,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;AAiBE;;;;;;;;AAQG;AACK,QAAA,IAAK,CAAA,KAAA,GAA4D,SAAS;AAYnF;IAVC,MAAM,GAAA;AACJ,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,CAAA,iCAAA,EAAoC,IAAI,CAAC,KAAK,CAAE,CAAA,EAAA,EAC1D,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAC,OAAO,EAAG,CAAA,EACnD,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,cAAc,EAAA,aAAA,EAAa,MAAM,EAAO,CAAA,CAC/C,CACD;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-image/af-image.css?tag=af-image&encapsulation=scoped","src/components/af-image/af-image.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.image-container {\n position: relative;\n overflow: hidden;\n}\n\n/* Shape variants — matches Webflow's rounded-edge image treatments */\n.image-container--rounded {\n border-radius: var(--radius-md, 12px);\n}\n\n.image-container--rounded-left {\n border-top-left-radius: var(--radius-md, 12px);\n border-bottom-left-radius: var(--radius-md, 12px);\n}\n\n.image-container--rounded-right {\n border-top-right-radius: var(--radius-md, 12px);\n border-bottom-right-radius: var(--radius-md, 12px);\n}\n\n.image-container--square {\n border-radius: 0;\n}\n\n.image {\n display: block;\n width: 100%;\n height: auto;\n object-fit: cover;\n}\n\n/* Inset border overlay — inherits the host's border radius via parent clip */\n.image-border {\n position: absolute;\n inset: 0;\n box-shadow: inset 0 0 0 1px var(--af-background-border-subtle, rgba(0, 0, 0, 0.08));\n pointer-events: none;\n border-radius: inherit;\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * A styled image container with rounded corners and a subtle inset border.\n * Provides consistent image styling across the design system.\n */\n@Component({\n tag: 'af-image',\n styleUrl: 'af-image.css',\n shadow: false,\n scoped: true\n})\nexport class AfImage {\n /**\n * The image source URL\n */\n @Prop() src!: string;\n\n /**\n * Alternative text for the image (required for accessibility)\n */\n @Prop() alt!: string;\n\n /**\n * Shape / corner rounding variant. Matches Webflow's `.image-fill.rounded-*`\n * patterns where only one edge is rounded so the image bleeds into a\n * neighbouring section.\n * - `rounded` (default) — symmetric rounded corners on all four sides.\n * - `rounded-left` — rounded only on the left edge (top-left + bottom-left).\n * - `rounded-right` — rounded only on the right edge.\n * - `square` — no corner rounding.\n */\n @Prop() shape: 'rounded' | 'rounded-left' | 'rounded-right' | 'square' = 'rounded';\n\n render() {\n return (\n <Host>\n <div class={`image-container image-container--${this.shape}`}>\n <img src={this.src} alt={this.alt} class=\"image\" />\n <div class=\"image-border\" aria-hidden=\"true\"></div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -23,7 +23,7 @@ const AfIconBox = /*@__PURE__*/ proxyCustomElement(class AfIconBox extends H {
|
|
|
23
23
|
[`icon-box--size-${this.size}`]: true,
|
|
24
24
|
};
|
|
25
25
|
const iconSize = this.size === 'small' ? 20 : this.size === 'large' ? 48 : 40;
|
|
26
|
-
return (h(Host, { key: '
|
|
26
|
+
return (h(Host, { key: 'b224f522fa4db3081cb97fbe88aec0a4f4198d61' }, h("div", { key: '99ee87a2104918c6d3855cc5d7e90dcbda2d9638', class: containerClasses }, h("af-icon", { key: '778170ce3b08ca6b34289cc6bd1d49ade9583bc1', name: this.icon, size: iconSize }))));
|
|
27
27
|
}
|
|
28
28
|
static get style() { return afIconBoxCss; }
|
|
29
29
|
}, [258, "af-icon-box", {
|
|
@@ -50,6 +50,6 @@ function defineCustomElement() {
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
export { AfIconBox as A, defineCustomElement as d };
|
|
53
|
-
//# sourceMappingURL=p-
|
|
53
|
+
//# sourceMappingURL=p-D_xTKF7j.js.map
|
|
54
54
|
|
|
55
|
-
//# sourceMappingURL=p-
|
|
55
|
+
//# sourceMappingURL=p-D_xTKF7j.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-
|
|
1
|
+
{"file":"p-D_xTKF7j.js","mappings":";;;AAAA,MAAM,YAAY,GAAG,6lBAA6lB;;MCqBrmB,SAAS,iBAAAA,kBAAA,CAAA,MAAA,SAAA,SAAAC,CAAA,CAAA;AANtB,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;AAYE;;;;;AAKG;AACK,QAAA,IAAI,CAAA,IAAA,GAAkC,SAAS;AAkBxD;IAhBC,MAAM,GAAA;AACJ,QAAA,MAAM,gBAAgB,GAAG;AACvB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAE,CAAA,GAAG,IAAI;SACtC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,EAAE,GAAG,EAAE;QAE7E,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,gBAAgB,EAAA,EAC1B,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAA,CAAY,CAChD,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-icon-box/af-icon-box.css?tag=af-icon-box&encapsulation=scoped","src/components/af-icon-box/af-icon-box.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.icon-box {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 16px;\n background-color: var(--af-background-contrast, var(--colour-brand-mist-green, #c6d5d1));\n color: var(--af-background-icon-default, var(--colour-brand-inkwell, #14343b));\n flex-shrink: 0;\n}\n\n/* Size variants */\n.icon-box--size-small {\n width: 48px;\n height: 48px;\n padding: 14px;\n border-radius: 12px;\n}\n\n.icon-box--size-default {\n width: 64px;\n height: 64px;\n padding: 12px;\n border-radius: 16px;\n}\n\n.icon-box--size-large {\n width: 80px;\n height: 80px;\n padding: 16px;\n border-radius: 20px;\n}\n\n","import { Component, h, Prop, Host } from '@stencil/core';\nimport type { IconName } from '@affinda/icons';\n\n/**\n * IconBox atom - a themed container for displaying an icon with a rounded background.\n * \n * Inherits theme colors from parent Section via CSS custom properties:\n * - Background uses `--af-background-contrast`\n * - Icon color uses `--af-background-icon-default`\n * \n * @example\n * ```html\n * <af-icon-box icon=\"settings\" size=\"default\"></af-icon-box>\n * ```\n */\n@Component({\n tag: 'af-icon-box',\n styleUrl: 'af-icon-box.css',\n shadow: false,\n scoped: true,\n})\nexport class AfIconBox {\n /**\n * The name of the icon to display (from @affinda/icons)\n */\n @Prop() icon!: IconName;\n\n /**\n * Size variant of the icon box\n * - 'small': 48px container, 20px icon\n * - 'default': 64px container, 40px icon\n * - 'large': 80px container, 48px icon\n */\n @Prop() size: 'small' | 'default' | 'large' = 'default';\n\n render() {\n const containerClasses = {\n 'icon-box': true,\n [`icon-box--size-${this.size}`]: true,\n };\n\n const iconSize = this.size === 'small' ? 20 : this.size === 'large' ? 48 : 40;\n\n return (\n <Host>\n <div class={containerClasses}>\n <af-icon name={this.icon} size={iconSize}></af-icon>\n </div>\n </Host>\n );\n }\n}\n\n"],"version":3}
|