@affinda/wc 0.0.22 → 0.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/affinda/affinda.esm.js +1 -1
- package/dist/affinda/p-04a096ee.entry.js +1 -0
- package/dist/affinda/{p-20fe557e.entry.js → p-0c408447.entry.js} +1 -1
- package/dist/affinda/{p-0ae3495c.entry.js → p-1d94a137.entry.js} +1 -1
- package/dist/affinda/p-1f51e065.entry.js +1 -0
- package/dist/affinda/{p-d9cfea73.entry.js → p-21b7ea67.entry.js} +1 -1
- package/dist/affinda/p-26362b90.entry.js +1 -0
- package/dist/affinda/{p-8742f8fe.entry.js → p-29fd5654.entry.js} +1 -1
- package/dist/affinda/p-2e1df315.entry.js +1 -0
- package/dist/affinda/{p-404f2cea.entry.js → p-39967eba.entry.js} +1 -1
- package/dist/affinda/{p-00a226ba.entry.js → p-3b4fb1a5.entry.js} +1 -1
- package/dist/affinda/p-40456eb5.entry.js +1 -0
- package/dist/affinda/{p-854f6a9e.entry.js → p-416836f3.entry.js} +1 -1
- package/dist/affinda/p-43c24797.entry.js +1 -0
- package/dist/affinda/{p-f825b81f.entry.js → p-45d62b98.entry.js} +1 -1
- package/dist/affinda/{p-26a60b00.entry.js → p-470b9a06.entry.js} +1 -1
- package/dist/affinda/p-4758f89c.entry.js +1 -0
- package/dist/affinda/{p-8c394de2.entry.js → p-4844d749.entry.js} +1 -1
- package/dist/affinda/p-4c362739.entry.js +1 -0
- package/dist/affinda/p-5636afa9.entry.js +1 -0
- package/dist/affinda/p-6059b95e.entry.js +1 -0
- package/dist/affinda/p-60cf2a82.entry.js +1 -0
- package/dist/affinda/p-65207722.entry.js +1 -0
- package/dist/affinda/{p-7ed6ee6a.entry.js → p-66dd6356.entry.js} +1 -1
- package/dist/affinda/{p-6c99b2bb.entry.js → p-678cb08c.entry.js} +1 -1
- package/dist/affinda/p-6c10d037.entry.js +1 -0
- package/dist/affinda/p-6d43ed06.entry.js +1 -0
- package/dist/affinda/p-6dc635ec.entry.js +1 -0
- package/dist/affinda/p-6f5d8680.entry.js +1 -0
- package/dist/affinda/p-7bc1ed79.entry.js +1 -0
- package/dist/affinda/{p-2d4c1202.entry.js → p-7c4f05a7.entry.js} +1 -1
- package/dist/affinda/p-821c1522.entry.js +1 -0
- package/dist/affinda/{p-81de8fbd.entry.js → p-8c34efbb.entry.js} +1 -1
- package/dist/affinda/p-9405394d.entry.js +1 -0
- package/dist/affinda/p-ad71a40c.entry.js +1 -0
- package/dist/affinda/{p-468d16b1.entry.js → p-b0babcae.entry.js} +1 -1
- package/dist/affinda/p-b435de99.entry.js +1 -0
- package/dist/affinda/{p-e61dfb97.entry.js → p-b563bb90.entry.js} +1 -1
- package/dist/affinda/{p-f79781ff.entry.js → p-c1cb8ef8.entry.js} +1 -1
- package/dist/affinda/{p-9018ddec.entry.js → p-c1df7855.entry.js} +1 -1
- package/dist/affinda/p-c83e8184.entry.js +1 -0
- package/dist/affinda/p-d3d9eac1.entry.js +1 -0
- package/dist/affinda/p-d3e3653e.entry.js +1 -0
- package/dist/affinda/{p-589a860a.entry.js → p-da9d1f7d.entry.js} +1 -1
- package/dist/affinda/{p-289cb56f.entry.js → p-dce846f2.entry.js} +1 -1
- package/dist/affinda/p-ddd41c87.entry.js +1 -0
- package/dist/affinda/{p-0264279f.entry.js → p-e169a37b.entry.js} +1 -1
- package/dist/affinda/p-e91ef47c.entry.js +1 -0
- package/dist/affinda/{p-b9f58a18.entry.js → p-fb01c4e0.entry.js} +1 -1
- package/dist/cjs/af-accordion-item.cjs.entry.js +27 -1
- package/dist/cjs/af-accordion.cjs.entry.js +1 -1
- package/dist/cjs/af-button.cjs.entry.js +4 -5
- package/dist/cjs/af-card.cjs.entry.js +2 -2
- package/dist/cjs/af-center.cjs.entry.js +1 -1
- package/dist/cjs/af-client-carousel.cjs.entry.js +30 -2
- package/dist/cjs/af-contact-item.cjs.entry.js +1 -1
- package/dist/cjs/af-container.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 +2 -2
- 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 +2 -2
- package/dist/cjs/af-grid.cjs.entry.js +3 -3
- package/dist/cjs/af-heading_5.cjs.entry.js +98 -21
- 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-text.cjs.entry.js +1 -1
- package/dist/cjs/af-illustrated-card.cjs.entry.js +1 -1
- package/dist/cjs/af-image.cjs.entry.js +2 -12
- package/dist/cjs/af-in-page-banner.cjs.entry.js +2 -2
- 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 +17 -2
- package/dist/cjs/af-nav-accordion.cjs.entry.js +1 -1
- package/dist/cjs/af-nav-menu-nest.cjs.entry.js +2 -2
- 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-show.cjs.entry.js +2 -2
- 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 +1 -1
- package/dist/cjs/af-stepper.cjs.entry.js +1 -1
- package/dist/cjs/af-tag.cjs.entry.js +8 -7
- package/dist/cjs/af-testimonial-carousel.cjs.entry.js +2 -2
- 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-text-image-nest.cjs.entry.js +1 -1
- package/dist/cjs/af-text-image.cjs.entry.js +2 -1
- package/dist/cjs/af-theme-override.cjs.entry.js +2 -2
- package/dist/cjs/af-typography-lockup.cjs.entry.js +28 -3
- 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/components/af-accordion/af-accordion.js +1 -1
- package/dist/collection/components/af-accordion-item/af-accordion-item.js +27 -1
- package/dist/collection/components/af-button/af-button.css +24 -24
- package/dist/collection/components/af-button/af-button.js +9 -10
- 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.css +17 -2
- package/dist/collection/components/af-client-carousel/af-client-carousel.js +41 -5
- package/dist/collection/components/af-contact-item/af-contact-item.js +1 -1
- package/dist/collection/components/af-container/af-container.css +6 -11
- package/dist/collection/components/af-divider/af-divider.js +1 -1
- package/dist/collection/components/af-feature-accordion/af-feature-accordion.css +2 -0
- package/dist/collection/components/af-feature-accordion/af-feature-accordion.js +2 -2
- package/dist/collection/components/af-feature-card/af-feature-card.css +1 -0
- package/dist/collection/components/af-feature-grid/af-feature-grid.css +6 -4
- package/dist/collection/components/af-feature-grid/af-feature-grid.js +1 -1
- package/dist/collection/components/af-footer/af-footer.css +11 -4
- 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.css +5 -2
- package/dist/collection/components/af-grid/af-grid.js +2 -2
- package/dist/collection/components/af-grid-callout/af-grid-callout.css +2 -0
- package/dist/collection/components/af-heading/af-heading.css +19 -32
- 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.css +1 -0
- package/dist/collection/components/af-icon-text/af-icon-text.js +3 -3
- package/dist/collection/components/af-illustrated-card/af-illustrated-card.js +3 -4
- package/dist/collection/components/af-image/af-image.css +4 -21
- package/dist/collection/components/af-image/af-image.js +1 -33
- 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 +1 -11
- package/dist/collection/components/af-inline/af-inline.js +1 -1
- package/dist/collection/components/af-logo-well/af-logo-well.css +1 -0
- 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 +19 -4
- package/dist/collection/components/af-nav-item/af-nav-item.css +5 -8
- package/dist/collection/components/af-nav-item/af-nav-item.js +31 -4
- 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.css +25 -1
- package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.js +1 -1
- package/dist/collection/components/af-navbar/af-navbar.css +30 -14
- package/dist/collection/components/af-navbar/af-navbar.js +89 -14
- package/dist/collection/components/af-number-badge/af-number-badge.js +1 -1
- 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.css +4 -4
- 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.css +1 -0
- 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 +1 -0
- package/dist/collection/components/af-stepper/af-stepper.js +1 -1
- package/dist/collection/components/af-stepper-step/af-stepper-step.css +1 -0
- package/dist/collection/components/af-stepper-step/af-stepper-step.js +1 -1
- package/dist/collection/components/af-tag/af-tag.css +21 -41
- package/dist/collection/components/af-tag/af-tag.js +13 -16
- package/dist/collection/components/af-testimonial/af-testimonial.css +24 -29
- package/dist/collection/components/af-testimonial/af-testimonial.js +6 -14
- package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.css +8 -0
- 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 +10 -0
- package/dist/collection/components/af-text-image/af-text-image.js +4 -3
- package/dist/collection/components/af-text-image-nest/af-text-image-nest.css +1 -0
- 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 +4 -22
- package/dist/collection/components/af-typography-lockup/af-typography-lockup.js +49 -3
- package/dist/collection/components/af-video-container/af-video-container.css +1 -0
- 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 -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 +1 -1
- package/dist/components/af-contact-item.js +1 -1
- package/dist/components/af-container.js +1 -1
- package/dist/components/af-divider.js +1 -1
- package/dist/components/af-feature-accordion.js +1 -1
- package/dist/components/af-feature-card.js +1 -1
- package/dist/components/af-feature-grid.js +1 -1
- 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 +1 -1
- package/dist/components/af-heading.js +1 -1
- 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 +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 +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 +1 -1
- package/dist/components/af-nav-accordion.js +1 -1
- package/dist/components/af-nav-item.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-navbar.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 +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 +1 -1
- package/dist/components/af-stack.js +1 -1
- package/dist/components/af-stepper-step.js +1 -1
- package/dist/components/af-stepper.js +1 -1
- package/dist/components/af-tag.js +1 -1
- package/dist/components/af-testimonial-carousel.js +1 -1
- package/dist/components/af-testimonial-stat.js +1 -1
- package/dist/components/af-testimonial.js +1 -1
- package/dist/components/af-text-image-nest.js +1 -1
- package/dist/components/af-text-image.js +1 -1
- package/dist/components/af-theme-override.js +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 +1 -1
- package/dist/components/p-2f5xVWwF.js +1 -0
- package/dist/components/{p-DPujlxcb.js → p-B7-0t_dL.js} +1 -1
- package/dist/components/p-B7lJGMfD.js +1 -0
- package/dist/components/p-BAJW_4SY.js +1 -0
- package/dist/components/{p-9SgEr6QK.js → p-BE3eM0xx.js} +1 -1
- package/dist/components/p-BMwWkh8F.js +1 -0
- package/dist/components/p-BvLGR36l.js +1 -0
- package/dist/components/p-C5_nFNYV.js +1 -0
- package/dist/components/p-CB_hDYLo.js +1 -0
- package/dist/components/p-CRW9bpXa.js +1 -0
- package/dist/components/p-Cv9-Wbu_.js +1 -0
- package/dist/components/p-CwPFdy8d.js +1 -0
- package/dist/components/p-oawfHsaK.js +1 -0
- package/dist/components/p-wM1k9Wi7.js +1 -0
- package/dist/esm/af-accordion-item.entry.js +27 -1
- package/dist/esm/af-accordion.entry.js +1 -1
- package/dist/esm/af-button.entry.js +4 -5
- package/dist/esm/af-card.entry.js +2 -2
- package/dist/esm/af-center.entry.js +1 -1
- package/dist/esm/af-client-carousel.entry.js +31 -3
- package/dist/esm/af-contact-item.entry.js +1 -1
- package/dist/esm/af-container.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 +2 -2
- 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 +2 -2
- package/dist/esm/af-grid.entry.js +3 -3
- package/dist/esm/af-heading_5.entry.js +98 -21
- 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-text.entry.js +1 -1
- package/dist/esm/af-illustrated-card.entry.js +1 -1
- package/dist/esm/af-image.entry.js +2 -12
- package/dist/esm/af-in-page-banner.entry.js +2 -2
- 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 +17 -2
- package/dist/esm/af-nav-accordion.entry.js +1 -1
- package/dist/esm/af-nav-menu-nest.entry.js +2 -2
- 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-show.entry.js +2 -2
- 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 +1 -1
- package/dist/esm/af-stepper.entry.js +1 -1
- package/dist/esm/af-tag.entry.js +8 -7
- package/dist/esm/af-testimonial-carousel.entry.js +2 -2
- package/dist/esm/af-testimonial-stat.entry.js +1 -1
- package/dist/esm/af-testimonial.entry.js +3 -3
- package/dist/esm/af-text-image-nest.entry.js +1 -1
- package/dist/esm/af-text-image.entry.js +2 -1
- package/dist/esm/af-theme-override.entry.js +2 -2
- package/dist/esm/af-typography-lockup.entry.js +29 -4
- 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 +5 -6
- package/dist/types/components/af-client-carousel/af-client-carousel.d.ts +26 -3
- 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 +2 -3
- package/dist/types/components/af-image/af-image.d.ts +0 -10
- package/dist/types/components/af-in-page-banner/af-in-page-banner.d.ts +0 -10
- package/dist/types/components/af-nav-accordion-item/af-nav-accordion-item.d.ts +9 -0
- package/dist/types/components/af-nav-item/af-nav-item.d.ts +14 -0
- package/dist/types/components/af-navbar/af-navbar.d.ts +31 -8
- package/dist/types/components/af-tag/af-tag.d.ts +7 -10
- package/dist/types/components/af-testimonial/af-testimonial.d.ts +2 -11
- package/dist/types/components/af-text-image/af-text-image.d.ts +2 -1
- package/dist/types/components/af-typography-lockup/af-typography-lockup.d.ts +26 -1
- package/dist/types/components.d.ts +180 -115
- package/package.json +1 -1
- package/dist/affinda/p-09184969.entry.js +0 -1
- package/dist/affinda/p-0c6b7f0b.entry.js +0 -1
- package/dist/affinda/p-14c85efd.entry.js +0 -1
- package/dist/affinda/p-2c0c94c5.entry.js +0 -1
- package/dist/affinda/p-2ce405df.entry.js +0 -1
- package/dist/affinda/p-2f1e0c44.entry.js +0 -1
- package/dist/affinda/p-3899a278.entry.js +0 -1
- package/dist/affinda/p-46efe4e4.entry.js +0 -1
- package/dist/affinda/p-63e86a14.entry.js +0 -1
- package/dist/affinda/p-9fea6229.entry.js +0 -1
- package/dist/affinda/p-a5f7d3d6.entry.js +0 -1
- package/dist/affinda/p-a8af25d5.entry.js +0 -1
- package/dist/affinda/p-af9e25ea.entry.js +0 -1
- package/dist/affinda/p-bd3f81fc.entry.js +0 -1
- package/dist/affinda/p-ca14e17a.entry.js +0 -1
- package/dist/affinda/p-cb889d6b.entry.js +0 -1
- package/dist/affinda/p-cbf0911b.entry.js +0 -1
- package/dist/affinda/p-d7129564.entry.js +0 -1
- package/dist/affinda/p-df7b1b09.entry.js +0 -1
- package/dist/affinda/p-e0915179.entry.js +0 -1
- package/dist/affinda/p-e3cd6671.entry.js +0 -1
- package/dist/affinda/p-e6b4761c.entry.js +0 -1
- package/dist/affinda/p-ef754e65.entry.js +0 -1
- package/dist/affinda/p-f3d5d1be.entry.js +0 -1
- package/dist/affinda/p-fc1452ba.entry.js +0 -1
- package/dist/affinda/p-ffdd2c30.entry.js +0 -1
- package/dist/components/p-B6I3yxMd.js +0 -1
- package/dist/components/p-BUFbtjxU.js +0 -1
- package/dist/components/p-BXFj61qz.js +0 -1
- package/dist/components/p-BeVM-2kH.js +0 -1
- package/dist/components/p-BlfywPKX.js +0 -1
- package/dist/components/p-BzH2LxRQ.js +0 -1
- package/dist/components/p-CHNaDIj5.js +0 -1
- package/dist/components/p-CTcar4TG.js +0 -1
- package/dist/components/p-DOJEJFNa.js +0 -1
- package/dist/components/p-UTiuvQaz.js +0 -1
- package/dist/components/p-tB2jS8S_.js +0 -1
- package/dist/components/p-tF59ipRp.js +0 -1
|
@@ -4,20 +4,8 @@ import { h, Host } from "@stencil/core";
|
|
|
4
4
|
* Provides consistent image styling across the design system.
|
|
5
5
|
*/
|
|
6
6
|
export class AfImage {
|
|
7
|
-
constructor() {
|
|
8
|
-
/**
|
|
9
|
-
* Shape / corner rounding variant. Matches Webflow's `.image-fill.rounded-*`
|
|
10
|
-
* patterns where only one edge is rounded so the image bleeds into a
|
|
11
|
-
* neighbouring section.
|
|
12
|
-
* - `rounded` (default) — symmetric rounded corners on all four sides.
|
|
13
|
-
* - `rounded-left` — rounded only on the left edge (top-left + bottom-left).
|
|
14
|
-
* - `rounded-right` — rounded only on the right edge.
|
|
15
|
-
* - `square` — no corner rounding.
|
|
16
|
-
*/
|
|
17
|
-
this.shape = 'rounded';
|
|
18
|
-
}
|
|
19
7
|
render() {
|
|
20
|
-
return (h(Host, { key: '
|
|
8
|
+
return (h(Host, { key: '4cb4ea9887de4a009e044ff094061e776439c3a1' }, h("div", { key: 'e4db690fe52d08361b3420028aa80a7407e155c6', class: "image-container" }, h("img", { key: 'a3475febafc35e240ece6be513340bfb004e5315', src: this.src, alt: this.alt, class: "image" }), h("div", { key: 'c1d492a212f6ad3c4b7eac4c56bf5b91b2ea1809', class: "image-border", "aria-hidden": "true" }))));
|
|
21
9
|
}
|
|
22
10
|
static get is() { return "af-image"; }
|
|
23
11
|
static get encapsulation() { return "scoped"; }
|
|
@@ -70,26 +58,6 @@ export class AfImage {
|
|
|
70
58
|
"setter": false,
|
|
71
59
|
"reflect": false,
|
|
72
60
|
"attribute": "alt"
|
|
73
|
-
},
|
|
74
|
-
"shape": {
|
|
75
|
-
"type": "string",
|
|
76
|
-
"mutable": false,
|
|
77
|
-
"complexType": {
|
|
78
|
-
"original": "'rounded' | 'rounded-left' | 'rounded-right' | 'square'",
|
|
79
|
-
"resolved": "\"rounded\" | \"rounded-left\" | \"rounded-right\" | \"square\"",
|
|
80
|
-
"references": {}
|
|
81
|
-
},
|
|
82
|
-
"required": false,
|
|
83
|
-
"optional": false,
|
|
84
|
-
"docs": {
|
|
85
|
-
"tags": [],
|
|
86
|
-
"text": "Shape / corner rounding variant. Matches Webflow's `.image-fill.rounded-*`\npatterns where only one edge is rounded so the image bleeds into a\nneighbouring section.\n- `rounded` (default) \u2014 symmetric rounded corners on all four sides.\n- `rounded-left` \u2014 rounded only on the left edge (top-left + bottom-left).\n- `rounded-right` \u2014 rounded only on the right edge.\n- `square` \u2014 no corner rounding."
|
|
87
|
-
},
|
|
88
|
-
"getter": false,
|
|
89
|
-
"setter": false,
|
|
90
|
-
"reflect": false,
|
|
91
|
-
"attribute": "shape",
|
|
92
|
-
"defaultValue": "'rounded'"
|
|
93
61
|
}
|
|
94
62
|
};
|
|
95
63
|
}
|
|
@@ -212,7 +212,7 @@
|
|
|
212
212
|
gap: 16px;
|
|
213
213
|
max-width: 840px;
|
|
214
214
|
width: 100%;
|
|
215
|
-
white-space:
|
|
215
|
+
white-space: pre-wrap;
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
/* ==========================================================================
|
|
@@ -232,7 +232,7 @@
|
|
|
232
232
|
letter-spacing: -0.88px;
|
|
233
233
|
color: var(--banner-heading-color, var(--colour-brand-inkwell, #14343b));
|
|
234
234
|
margin: 0;
|
|
235
|
-
white-space:
|
|
235
|
+
white-space: pre-wrap;
|
|
236
236
|
}
|
|
237
237
|
|
|
238
238
|
/* ==========================================================================
|
|
@@ -252,7 +252,7 @@
|
|
|
252
252
|
line-height: 26px;
|
|
253
253
|
color: var(--banner-body-color, var(--colour-inkwell-400, #2b484f));
|
|
254
254
|
margin: 0;
|
|
255
|
-
white-space:
|
|
255
|
+
white-space: pre-wrap;
|
|
256
256
|
}
|
|
257
257
|
|
|
258
258
|
/* ==========================================================================
|
|
@@ -22,16 +22,6 @@ import { h, Host } from "@stencil/core";
|
|
|
22
22
|
* ```
|
|
23
23
|
*
|
|
24
24
|
* Alternatively, use the `illustration` slot for completely custom content.
|
|
25
|
-
*
|
|
26
|
-
* **Slot-based composition (preferred for rich content):**
|
|
27
|
-
* - `heading` — heading markup (overrides the `heading` prop when provided).
|
|
28
|
-
* - `description` — description markup (overrides the `description` prop).
|
|
29
|
-
* - `buttons` — custom button group (overrides the primary/secondary button
|
|
30
|
-
* props; use when you need ghost variants, more than two buttons, or
|
|
31
|
-
* per-button icons).
|
|
32
|
-
* - `illustration` — custom illustration markup.
|
|
33
|
-
*
|
|
34
|
-
* The string props remain supported for simple cases.
|
|
35
25
|
*/
|
|
36
26
|
export class AfInPageBanner {
|
|
37
27
|
constructor() {
|
|
@@ -66,7 +56,7 @@ export class AfInPageBanner {
|
|
|
66
56
|
return (h("div", { class: "banner__wave-overlay", "aria-hidden": "true" }, h("svg", { viewBox: "0 0 521 323", fill: "none", xmlns: "http://www.w3.org/2000/svg", class: "banner__wave-svg" }, h("path", { d: "M473.775 46.273C443.539 15.92 403.701 -0.631616 361.351 0.0184478H154.183L112.67 67.225H361.893C362.189 67.225 362.533 67.225 362.829 67.225C387.155 67.225 410.004 76.7259 427.289 94.0776C445.017 111.879 454.816 135.682 454.816 161.134C454.816 213.389 412.959 255.843 361.548 255.843H108.041C84.9457 255.843 66.1345 236.742 66.1345 213.289C66.1345 189.837 84.9949 170.435 107.992 169.735H334.957L377.799 102.528H106.859C47.9636 104.029 0 153.683 0 213.289C0 272.895 48.456 323 108.041 323H361.548C449.449 323 521 250.343 521 161.084C521 117.53 504.257 76.7759 473.824 46.2229L473.775 46.273Z", fill: "currentColor" }))));
|
|
67
57
|
}
|
|
68
58
|
render() {
|
|
69
|
-
return (h(Host, { key: '
|
|
59
|
+
return (h(Host, { key: '2720fd3ccb0d8f2e37144265de17ce7ec40d5197' }, h("div", { key: 'edfa5812b8de06a50fd4502ee57a4590bab7891c', class: `banner theme-${this.theme}` }, this.showWaveDecoration && this.renderWaveOverlay(), h("div", { key: '401c710a4642b04cae3ad4795db1a9444a25ca13', class: "banner__illustration" }, this.illustrationUrl ? (h("img", { src: this.illustrationUrl, alt: "", class: "banner__illustration-img", loading: "lazy" })) : (h("slot", { name: "illustration" }))), h("div", { key: 'f09c44f258171263a035081af7918085e11aede6', class: "banner__content" }, h("div", { key: '3badcdab323c0c16b9d484d4fc55989b37cdbe08', class: "banner__copy" }, this.heading && (h("h2", { key: 'c35214a8429164d16bbb024292daf8d18fbeba29', class: "banner__heading" }, this.heading)), this.description && (h("p", { key: 'ecbfa1ff0649d77d8d874582b2d09b60c8e193c6', class: "banner__description" }, this.description))), (this.primaryButtonText || this.secondaryButtonText) && (h("div", { key: '6ef15b587a684ac9d4cc9ce4af81fca6d0a23446', class: "banner__buttons" }, this.primaryButtonText && (h("af-button", { key: 'ef632338bc8a8e9332f12c30ada3ad2c83201688', href: this.primaryButtonUrl, variant: "primary" }, this.primaryButtonText)), this.secondaryButtonText && (h("af-button", { key: '6265d2595f6e7ad3f45bb1284b9b2953f03e0cfe', href: this.secondaryButtonUrl, variant: "secondary" }, this.secondaryButtonText))))))));
|
|
70
60
|
}
|
|
71
61
|
static get is() { return "af-in-page-banner"; }
|
|
72
62
|
static get encapsulation() { return "scoped"; }
|
|
@@ -49,7 +49,7 @@ export class AfInline {
|
|
|
49
49
|
justifyContent: justifyMap[this.justify],
|
|
50
50
|
flexWrap: this.wrap ? 'wrap' : 'nowrap',
|
|
51
51
|
};
|
|
52
|
-
return (h(Host, { key: '
|
|
52
|
+
return (h(Host, { key: '98aab1aa94a068796ee7abdd00d44cac516f6be1', style: style }, h("slot", { key: '2c700f8333f3c010344d499b7d8bc5126d139745' })));
|
|
53
53
|
}
|
|
54
54
|
static get is() { return "af-inline"; }
|
|
55
55
|
static get encapsulation() { return "shadow"; }
|
|
@@ -4,7 +4,7 @@ import { h, Host } from "@stencil/core";
|
|
|
4
4
|
*/
|
|
5
5
|
export class AfLogoWell {
|
|
6
6
|
render() {
|
|
7
|
-
return (h(Host, { key: '
|
|
7
|
+
return (h(Host, { key: '8101d42a68af7c5cfc90e6a13706e93823da27c3' }, h("div", { key: '2403b1d1f5b365cc2f7e37cb9387e9c2009efd5f', class: "logo-well" }, h("slot", { key: 'da5724c0fb823b8aa7f85fd7d95b94c2841c2f70' }))));
|
|
8
8
|
}
|
|
9
9
|
static get is() { return "af-logo-well"; }
|
|
10
10
|
static get encapsulation() { return "shadow"; }
|
|
@@ -71,7 +71,7 @@ export class AfNavAccordion {
|
|
|
71
71
|
this.syncItems();
|
|
72
72
|
}
|
|
73
73
|
render() {
|
|
74
|
-
return (h(Host, { key: '
|
|
74
|
+
return (h(Host, { key: '9764092415b6f501cdbf38649e00d172bbbf8e12', class: { [`breakpoint-${this.breakpoint}`]: true, [`mode-${this.mode}`]: true } }, h("div", { key: 'c8dbefa2fcffc74ade77432b4a97e0decbc15823', class: "nav-accordion" }, h("slot", { key: '688c01dc567713e5e1040b766f32f8d1a67b8d0f' }))));
|
|
75
75
|
}
|
|
76
76
|
static get is() { return "af-nav-accordion"; }
|
|
77
77
|
static get encapsulation() { return "scoped"; }
|
|
@@ -22,6 +22,7 @@ export class AfNavAccordionItem {
|
|
|
22
22
|
this.breakpoint = 'mobile';
|
|
23
23
|
this.contentHeight = 0;
|
|
24
24
|
this.hasTriggerSlot = false;
|
|
25
|
+
this.hasContent = false;
|
|
25
26
|
this.handleTriggerClick = (event) => {
|
|
26
27
|
// If it's a link, let it navigate (unless they clicked the chevron specifically)
|
|
27
28
|
if (this.href) {
|
|
@@ -46,6 +47,16 @@ export class AfNavAccordionItem {
|
|
|
46
47
|
this.measureContent();
|
|
47
48
|
}
|
|
48
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Detect whether the host has any default-slot children — i.e. whether
|
|
52
|
+
* this item expands to reveal a sub-menu, or is just a simple link.
|
|
53
|
+
* We check in componentWillLoad (before render) because after render
|
|
54
|
+
* Stencil has appended its own output to the host and this.el.children
|
|
55
|
+
* would include that.
|
|
56
|
+
*/
|
|
57
|
+
componentWillLoad() {
|
|
58
|
+
this.hasContent = Array.from(this.el.children).some((child) => !child.hasAttribute('slot'));
|
|
59
|
+
}
|
|
49
60
|
componentDidLoad() {
|
|
50
61
|
if (this.open) {
|
|
51
62
|
this.measureContent();
|
|
@@ -69,12 +80,15 @@ export class AfNavAccordionItem {
|
|
|
69
80
|
const contentStyle = {
|
|
70
81
|
maxHeight: this.open ? `${this.contentHeight}px` : '0px'
|
|
71
82
|
};
|
|
72
|
-
|
|
73
|
-
|
|
83
|
+
// Only render the chevron toggle when this item actually has
|
|
84
|
+
// sub-content to expand. A plain href item with no children is a
|
|
85
|
+
// direct link and shouldn't show a disclosure affordance.
|
|
86
|
+
const hasDropdownContent = this.hasContent;
|
|
87
|
+
return (h(Host, { key: '959165c0c1ba72e3e3e33956862a47a9e080ce91', class: {
|
|
74
88
|
'is-open': this.open,
|
|
75
89
|
'is-disabled': this.disabled,
|
|
76
90
|
[`breakpoint-${this.breakpoint}`]: true
|
|
77
|
-
} }, h("div", { key: '
|
|
91
|
+
} }, h("div", { key: '7edc90a2480aa453ca8407acf31c6af8c44bc9ab', class: "nav-accordion-item" }, this.href ? (h("a", { href: this.href, class: "trigger", "aria-expanded": this.open ? 'true' : 'false', "aria-controls": `content-${this.itemId}` }, h("div", { class: "trigger-content" }, h("slot", { name: "trigger", onSlotchange: this.handleSlotChange }, h("span", { class: "label" }, this.label))), hasDropdownContent && (h("button", { class: "chevron-button", onClick: (e) => { e.preventDefault(); e.stopPropagation(); this.toggle(); }, "aria-label": this.open ? 'Collapse' : 'Expand', type: "button" }, h("div", { class: { 'chevron': true, 'is-open': this.open } }, h("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor" }, h("path", { d: "M6 9l6 6 6-6", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }))))))) : (h("button", { class: "trigger", onClick: this.handleTriggerClick, onKeyDown: this.handleKeyDown, "aria-expanded": this.open ? 'true' : 'false', "aria-controls": `content-${this.itemId}`, disabled: this.disabled, type: "button" }, h("div", { class: "trigger-content" }, h("slot", { name: "trigger", onSlotchange: this.handleSlotChange }, h("span", { class: "label" }, this.label))), hasDropdownContent && (h("div", { class: { 'chevron': true, 'is-open': this.open } }, h("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor" }, h("path", { d: "M6 9l6 6 6-6", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" })))))), h("div", { key: '826855c6ca16a807c1f4dec417c771c8bbdc0966', id: `content-${this.itemId}`, class: "content-wrapper", style: contentStyle, "aria-hidden": !this.open ? 'true' : 'false' }, h("div", { key: '9a614290248120ad48b7658fbeecb8d4e83e53db', class: "content", ref: (el) => (this.contentRef = el) }, h("slot", { key: 'dd22fe45b6ad6f7a7c39b1a0a1055421b7b80a51' }))))));
|
|
78
92
|
}
|
|
79
93
|
static get is() { return "af-nav-accordion-item"; }
|
|
80
94
|
static get encapsulation() { return "scoped"; }
|
|
@@ -212,7 +226,8 @@ export class AfNavAccordionItem {
|
|
|
212
226
|
static get states() {
|
|
213
227
|
return {
|
|
214
228
|
"contentHeight": {},
|
|
215
|
-
"hasTriggerSlot": {}
|
|
229
|
+
"hasTriggerSlot": {},
|
|
230
|
+
"hasContent": {}
|
|
216
231
|
};
|
|
217
232
|
}
|
|
218
233
|
static get events() {
|
|
@@ -210,13 +210,9 @@
|
|
|
210
210
|
color: var(--af-nav-item-secondary, var(--af-typography-body-default, #2b484f));
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
-
/* Icon rotation on
|
|
214
|
-
|
|
215
|
-
.
|
|
216
|
-
transform: rotate(180deg);
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
/* Icon rotation on active for mobile primary with dropdown indicator */
|
|
213
|
+
/* Icon rotation on active for mobile primary with dropdown indicator.
|
|
214
|
+
Desktop chevrons stay static — rotating on hover/active felt fidgety
|
|
215
|
+
and the open/closed state is already clear from the dropdown panel. */
|
|
220
216
|
.hierarchy-primary.breakpoint-mobile.active ::slotted([slot="icon-right"]) {
|
|
221
217
|
transform: rotate(180deg);
|
|
222
218
|
}
|
|
@@ -237,7 +233,8 @@
|
|
|
237
233
|
}
|
|
238
234
|
|
|
239
235
|
/* Fallback media query for when breakpoint prop is not set */
|
|
240
|
-
|
|
236
|
+
/* ≤ tablet */
|
|
237
|
+
@media (max-width: 1023px) {
|
|
241
238
|
:host([breakpoint="auto"]) .hierarchy-primary,
|
|
242
239
|
:host(:not([breakpoint])) .hierarchy-primary {
|
|
243
240
|
padding: 20px 12px;
|
|
@@ -2,6 +2,13 @@ import { h, Host } from "@stencil/core";
|
|
|
2
2
|
/**
|
|
3
3
|
* A generic navigation item component that can be used in navigation bars, menus, and sidebars.
|
|
4
4
|
* Supports multiple hierarchy levels, variants, and states (active, hover).
|
|
5
|
+
*
|
|
6
|
+
* **Dropdown trigger a11y:** when the host carries a `data-dropdown="id"`
|
|
7
|
+
* attribute and has no `href`, the inner wrapper is promoted to
|
|
8
|
+
* `role="button"` with `tabindex="0"` and keyboard activation (Enter/Space),
|
|
9
|
+
* so keyboard users can open the matching dropdown panel just like a
|
|
10
|
+
* pointer click. The companion `af-navbar` keeps `aria-expanded` on the
|
|
11
|
+
* host in sync with the active dropdown.
|
|
5
12
|
*/
|
|
6
13
|
export class AfNavItem {
|
|
7
14
|
constructor() {
|
|
@@ -27,6 +34,17 @@ export class AfNavItem {
|
|
|
27
34
|
* Whether this nav item is currently active/selected
|
|
28
35
|
*/
|
|
29
36
|
this.active = false;
|
|
37
|
+
/**
|
|
38
|
+
* Promote Enter and Space on a focused trigger into a synthetic click
|
|
39
|
+
* so the surrounding af-navbar (which listens on click) treats the
|
|
40
|
+
* keyboard activation identically to a pointer click.
|
|
41
|
+
*/
|
|
42
|
+
this.handleTriggerKeyDown = (event) => {
|
|
43
|
+
if (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar') {
|
|
44
|
+
event.preventDefault();
|
|
45
|
+
this.el.click();
|
|
46
|
+
}
|
|
47
|
+
};
|
|
30
48
|
}
|
|
31
49
|
render() {
|
|
32
50
|
const classes = {
|
|
@@ -34,13 +52,21 @@ export class AfNavItem {
|
|
|
34
52
|
[`hierarchy-${this.hierarchy}`]: true,
|
|
35
53
|
[`variant-${this.variant}`]: true,
|
|
36
54
|
[`breakpoint-${this.breakpoint}`]: true,
|
|
37
|
-
'active': this.active
|
|
55
|
+
'active': this.active,
|
|
38
56
|
};
|
|
39
|
-
const
|
|
57
|
+
const innerContent = [
|
|
58
|
+
h("slot", { name: "icon-left" }),
|
|
59
|
+
h("div", { class: "label-container" }, h("slot", null)),
|
|
60
|
+
h("slot", { name: "icon-right" }),
|
|
61
|
+
];
|
|
40
62
|
if (this.href) {
|
|
41
|
-
return (h(Host, null, h("a", { href: this.href, class: "nav-link" },
|
|
63
|
+
return (h(Host, null, h("a", { href: this.href, class: "nav-link" }, h("div", { class: classes }, innerContent))));
|
|
64
|
+
}
|
|
65
|
+
const isDropdownTrigger = this.el.hasAttribute('data-dropdown');
|
|
66
|
+
if (isDropdownTrigger) {
|
|
67
|
+
return (h(Host, null, h("div", { class: classes, role: "button", tabindex: 0, "aria-haspopup": "menu", onKeyDown: this.handleTriggerKeyDown }, innerContent)));
|
|
42
68
|
}
|
|
43
|
-
return h(Host, null,
|
|
69
|
+
return h(Host, null, h("div", { class: classes }, innerContent));
|
|
44
70
|
}
|
|
45
71
|
static get is() { return "af-nav-item"; }
|
|
46
72
|
static get encapsulation() { return "scoped"; }
|
|
@@ -157,4 +183,5 @@ export class AfNavItem {
|
|
|
157
183
|
}
|
|
158
184
|
};
|
|
159
185
|
}
|
|
186
|
+
static get elementRef() { return "el"; }
|
|
160
187
|
}
|
|
@@ -30,7 +30,7 @@ export class AfNavMenu {
|
|
|
30
30
|
'has-border': this.showBorder,
|
|
31
31
|
'card-style': this.cardStyle
|
|
32
32
|
};
|
|
33
|
-
return (h(Host, { key: '
|
|
33
|
+
return (h(Host, { key: '11f883b5cc420ee5cb99c723cc492b7346c3761d' }, h("div", { key: 'c3261a46a80fcbbdbfc3d82ee43e4cb31f6de4d8', class: classes }, this.heading && (h("div", { key: 'fd6f90c2bc9f34ef30efc22b49eb36bd6fd7ae52', class: "menu-header" }, h("h3", { key: '5e80c33bdd36dcc23d3445fd92af76f69f28a7c8', class: "menu-heading" }, this.heading))), h("div", { key: '6b62d13e30422c7f331350ec39ab2429f5a50294', class: "menu-items" }, h("slot", { key: '49740ab88d6c957395b902f98526b60353af4be5' })))));
|
|
34
34
|
}
|
|
35
35
|
static get is() { return "af-nav-menu"; }
|
|
36
36
|
static get encapsulation() { return "scoped"; }
|
|
@@ -36,8 +36,13 @@
|
|
|
36
36
|
margin-top: 16px;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
/* Slotted NavMenu in columns -
|
|
39
|
+
/* Slotted NavMenu in columns - equal-width flex items with border and
|
|
40
|
+
* spacing. `flex: 1 1 0` gives every column the same width regardless of
|
|
41
|
+
* content; `min-width: 0` lets the content wrap within its column rather
|
|
42
|
+
* than forcing the whole row to grow. */
|
|
40
43
|
.nav-menu-nest.breakpoint-desktop .menu-columns ::slotted(af-nav-menu) {
|
|
44
|
+
flex: 1 1 0;
|
|
45
|
+
min-width: 0;
|
|
41
46
|
border-right: 1px solid var(--af-background-border-subtle, #e8eeed);
|
|
42
47
|
padding-right: 32px;
|
|
43
48
|
padding-top: 16px;
|
|
@@ -55,6 +60,25 @@
|
|
|
55
60
|
padding-right: 32px;
|
|
56
61
|
}
|
|
57
62
|
|
|
63
|
+
/* Tighter layout in the 992–1199px band where the desktop nav is still
|
|
64
|
+
* shown but horizontal room is limited — reduces gap/padding so the
|
|
65
|
+
* four-column layout doesn't read as cramped. */
|
|
66
|
+
@media (max-width: 1199px) {
|
|
67
|
+
.nav-menu-nest.breakpoint-desktop .menu-columns {
|
|
68
|
+
gap: 20px;
|
|
69
|
+
padding: 20px 0 24px 24px;
|
|
70
|
+
}
|
|
71
|
+
.nav-menu-nest.breakpoint-desktop .menu-sidebar {
|
|
72
|
+
padding: 20px 24px 24px 20px;
|
|
73
|
+
}
|
|
74
|
+
.nav-menu-nest.breakpoint-desktop .menu-columns ::slotted(af-nav-menu) {
|
|
75
|
+
padding-right: 20px;
|
|
76
|
+
}
|
|
77
|
+
:host([show-sidebar-border]) .nav-menu-nest.breakpoint-desktop .menu-columns ::slotted(af-nav-menu:last-of-type) {
|
|
78
|
+
padding-right: 20px;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
58
82
|
/* Mobile layout */
|
|
59
83
|
.nav-menu-nest.breakpoint-mobile {
|
|
60
84
|
flex-direction: column;
|
|
@@ -48,7 +48,7 @@ export class AfNavMenuNest {
|
|
|
48
48
|
[`type-${this.type}`]: true,
|
|
49
49
|
[`breakpoint-${this.breakpoint}`]: true
|
|
50
50
|
};
|
|
51
|
-
return (h(Host, { key: '
|
|
51
|
+
return (h(Host, { key: '8b256672578e162c65c1dd83b735f3fd8af8bb56' }, h("div", { key: '1f009f9f0986790e3b330eec97fa5e9f63604108', class: classes }, h("div", { key: 'db3540b0259d8474093e1d31c51e7ae1311700c0', class: "menu-columns" }, h("slot", { key: '06c90ac9305b96d64bc86fcf16ba639db31c4d08' })), h("div", { key: '5ad8cb59dd4c88c6dadf38aac88df6697541ad52', class: "menu-sidebar" }, h("slot", { key: '98a73cb259c755fa1efc70294772abf89d233581', name: "sidebar" })))));
|
|
52
52
|
}
|
|
53
53
|
static get is() { return "af-nav-menu-nest"; }
|
|
54
54
|
static get encapsulation() { return "scoped"; }
|
|
@@ -28,11 +28,15 @@
|
|
|
28
28
|
/* Sticky navbar that floats above the spacer */
|
|
29
29
|
.navbar-container {
|
|
30
30
|
position: fixed;
|
|
31
|
-
top
|
|
31
|
+
/* Add safe-area-inset-top so the pill drops below the iOS notch / status bar
|
|
32
|
+
when the page uses viewport-fit=cover. Falls back to the original 32px. */
|
|
33
|
+
top: max(32px, env(safe-area-inset-top));
|
|
32
34
|
left: 0;
|
|
33
35
|
right: 0;
|
|
34
36
|
z-index: 10;
|
|
35
|
-
padding
|
|
37
|
+
/* Horizontal padding honours safe-area-inset-left/right for landscape on
|
|
38
|
+
notched devices; the inset is added on top of the existing 80px gutter. */
|
|
39
|
+
padding: 0 calc(80px + env(safe-area-inset-right)) 0 calc(80px + env(safe-area-inset-left));
|
|
36
40
|
box-sizing: border-box;
|
|
37
41
|
}
|
|
38
42
|
|
|
@@ -101,13 +105,19 @@
|
|
|
101
105
|
align-items: center;
|
|
102
106
|
}
|
|
103
107
|
|
|
104
|
-
/* Dropdown container
|
|
108
|
+
/* Dropdown container. The container's top is raised 8px into what
|
|
109
|
+
was previously a blank gap between the nav pill and the panel, and
|
|
110
|
+
that 8px is absorbed as container top-padding — so the visible panel
|
|
111
|
+
stays put, but the hoverable region is now continuous between the
|
|
112
|
+
nav pill and the dropdown. Without this, the mouse crosses an
|
|
113
|
+
un-hovered strip on its way from trigger to panel and the navbar's
|
|
114
|
+
mouseleave handler fires a close. */
|
|
105
115
|
.dropdown-container {
|
|
106
116
|
position: absolute;
|
|
107
|
-
top:
|
|
117
|
+
top: 100px;
|
|
108
118
|
left: 0;
|
|
109
119
|
right: 0;
|
|
110
|
-
padding:
|
|
120
|
+
padding: 8px 80px 0;
|
|
111
121
|
pointer-events: none;
|
|
112
122
|
opacity: 0;
|
|
113
123
|
transform: translateY(-8px);
|
|
@@ -142,7 +152,13 @@
|
|
|
142
152
|
bottom: 0;
|
|
143
153
|
background: var(--colour-background-base, #ffffff);
|
|
144
154
|
z-index: 9;
|
|
145
|
-
|
|
155
|
+
/* Full-viewport drawer: pad the top below the notch, the bottom above the
|
|
156
|
+
home indicator, and the sides away from landscape edge cutouts. */
|
|
157
|
+
padding:
|
|
158
|
+
max(100px, calc(100px + env(safe-area-inset-top)))
|
|
159
|
+
calc(16px + env(safe-area-inset-right))
|
|
160
|
+
max(24px, env(safe-area-inset-bottom))
|
|
161
|
+
calc(16px + env(safe-area-inset-left));
|
|
146
162
|
overflow-y: auto;
|
|
147
163
|
opacity: 0;
|
|
148
164
|
pointer-events: none;
|
|
@@ -199,8 +215,8 @@
|
|
|
199
215
|
}
|
|
200
216
|
|
|
201
217
|
.navbar-container {
|
|
202
|
-
top: 24px;
|
|
203
|
-
padding: 0 40px;
|
|
218
|
+
top: max(24px, env(safe-area-inset-top));
|
|
219
|
+
padding: 0 calc(40px + env(safe-area-inset-right)) 0 calc(40px + env(safe-area-inset-left));
|
|
204
220
|
}
|
|
205
221
|
|
|
206
222
|
.navbar-left {
|
|
@@ -226,8 +242,8 @@
|
|
|
226
242
|
}
|
|
227
243
|
|
|
228
244
|
.navbar-container {
|
|
229
|
-
top: 16px;
|
|
230
|
-
padding: 0 16px;
|
|
245
|
+
top: max(16px, env(safe-area-inset-top));
|
|
246
|
+
padding: 0 calc(16px + env(safe-area-inset-right)) 0 calc(16px + env(safe-area-inset-left));
|
|
231
247
|
z-index: 11; /* Above mobile menu panel */
|
|
232
248
|
}
|
|
233
249
|
|
|
@@ -277,7 +293,7 @@
|
|
|
277
293
|
|
|
278
294
|
/* Mobile menu panel adjustments */
|
|
279
295
|
.mobile-menu-panel {
|
|
280
|
-
padding-top: 88px; /* Accounts for navbar height */
|
|
296
|
+
padding-top: max(88px, calc(88px + env(safe-area-inset-top))); /* Accounts for navbar height + notch */
|
|
281
297
|
}
|
|
282
298
|
|
|
283
299
|
.mobile-button-container {
|
|
@@ -303,8 +319,8 @@
|
|
|
303
319
|
}
|
|
304
320
|
|
|
305
321
|
:host([force-mobile]) .navbar-container {
|
|
306
|
-
top: 16px;
|
|
307
|
-
padding: 0 16px;
|
|
322
|
+
top: max(16px, env(safe-area-inset-top));
|
|
323
|
+
padding: 0 calc(16px + env(safe-area-inset-right)) 0 calc(16px + env(safe-area-inset-left));
|
|
308
324
|
z-index: 11;
|
|
309
325
|
}
|
|
310
326
|
|
|
@@ -353,7 +369,7 @@
|
|
|
353
369
|
}
|
|
354
370
|
|
|
355
371
|
:host([force-mobile]) .mobile-menu-panel {
|
|
356
|
-
padding-top: 88px;
|
|
372
|
+
padding-top: max(88px, calc(88px + env(safe-area-inset-top)));
|
|
357
373
|
}
|
|
358
374
|
|
|
359
375
|
:host([force-mobile]) .mobile-menu-panel.is-open {
|
|
@@ -58,9 +58,8 @@ export class AfNavbar {
|
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
60
|
/**
|
|
61
|
-
* Open the dropdown matching
|
|
62
|
-
*
|
|
63
|
-
* navigation behaviour.
|
|
61
|
+
* Open the dropdown matching a `[data-dropdown]` trigger on click —
|
|
62
|
+
* acts as a toggle so keyboard/touch users can still dismiss it.
|
|
64
63
|
*/
|
|
65
64
|
handleTriggerClick(event) {
|
|
66
65
|
const target = event.target;
|
|
@@ -72,8 +71,52 @@ export class AfNavbar {
|
|
|
72
71
|
return;
|
|
73
72
|
event.preventDefault();
|
|
74
73
|
event.stopPropagation();
|
|
74
|
+
this.cancelScheduledClose();
|
|
75
|
+
this.lastActiveTrigger = trigger;
|
|
75
76
|
this.toggleDropdown(id);
|
|
76
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Open the dropdown matching a `[data-dropdown]` trigger on hover.
|
|
80
|
+
* Uses mouseover (which bubbles) and checks for the trigger ancestor.
|
|
81
|
+
*/
|
|
82
|
+
handleHover(event) {
|
|
83
|
+
const target = event.target;
|
|
84
|
+
const trigger = target?.closest?.('[data-dropdown]');
|
|
85
|
+
if (!trigger || !this.el.contains(trigger))
|
|
86
|
+
return;
|
|
87
|
+
const id = trigger.getAttribute('data-dropdown');
|
|
88
|
+
if (!id || this.activeDropdown === id) {
|
|
89
|
+
this.cancelScheduledClose();
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
this.cancelScheduledClose();
|
|
93
|
+
this.lastActiveTrigger = trigger;
|
|
94
|
+
this.openDropdown(id);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* When the pointer leaves the navbar entirely (including any open
|
|
98
|
+
* dropdown panel), schedule a close. Re-entering cancels it.
|
|
99
|
+
*/
|
|
100
|
+
handleHostLeave() {
|
|
101
|
+
this.scheduleClose();
|
|
102
|
+
}
|
|
103
|
+
handleHostEnter() {
|
|
104
|
+
this.cancelScheduledClose();
|
|
105
|
+
}
|
|
106
|
+
scheduleClose() {
|
|
107
|
+
// Close immediately on mouseleave. The css change in af-navbar.css
|
|
108
|
+
// bridges the former 8px dead-zone between the nav pill and the
|
|
109
|
+
// dropdown panel into a single hoverable region, so there's no
|
|
110
|
+
// longer a mid-transit mouseleave to swallow with a debounce.
|
|
111
|
+
this.cancelScheduledClose();
|
|
112
|
+
this.closeDropdown();
|
|
113
|
+
}
|
|
114
|
+
cancelScheduledClose() {
|
|
115
|
+
if (this.closeTimer !== undefined) {
|
|
116
|
+
clearTimeout(this.closeTimer);
|
|
117
|
+
this.closeTimer = undefined;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
77
120
|
/**
|
|
78
121
|
* Handle clicks outside the navbar to close dropdowns
|
|
79
122
|
*/
|
|
@@ -84,35 +127,49 @@ export class AfNavbar {
|
|
|
84
127
|
}
|
|
85
128
|
}
|
|
86
129
|
/**
|
|
87
|
-
* Keep the visibility of slotted dropdown panels
|
|
88
|
-
*
|
|
89
|
-
* and carries a `data-for`
|
|
130
|
+
* Keep the visibility of slotted dropdown panels, and the `data-active`
|
|
131
|
+
* flag on their triggers, in sync with the currently active dropdown.
|
|
132
|
+
* Each panel lives in the `dropdowns` slot and carries a `data-for`
|
|
133
|
+
* attribute that matches its trigger's id.
|
|
90
134
|
*/
|
|
91
135
|
componentDidLoad() {
|
|
92
|
-
this.
|
|
136
|
+
this.syncDropdownState();
|
|
93
137
|
}
|
|
94
138
|
componentDidUpdate() {
|
|
95
|
-
this.
|
|
139
|
+
this.syncDropdownState();
|
|
96
140
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
panels.forEach((panel) => {
|
|
141
|
+
syncDropdownState() {
|
|
142
|
+
this.el.querySelectorAll('[data-for]').forEach((panel) => {
|
|
100
143
|
if (!this.el.contains(panel))
|
|
101
144
|
return;
|
|
102
145
|
panel.hidden = panel.getAttribute('data-for') !== this.activeDropdown;
|
|
103
146
|
});
|
|
147
|
+
this.el.querySelectorAll('[data-dropdown]').forEach((trigger) => {
|
|
148
|
+
if (!this.el.contains(trigger))
|
|
149
|
+
return;
|
|
150
|
+
const active = trigger.getAttribute('data-dropdown') === this.activeDropdown;
|
|
151
|
+
if (active)
|
|
152
|
+
trigger.setAttribute('data-active', '');
|
|
153
|
+
else
|
|
154
|
+
trigger.removeAttribute('data-active');
|
|
155
|
+
trigger.setAttribute('aria-expanded', active ? 'true' : 'false');
|
|
156
|
+
});
|
|
104
157
|
}
|
|
105
158
|
/**
|
|
106
|
-
* Handle escape key to close dropdowns
|
|
159
|
+
* Handle escape key to close dropdowns. If a dropdown is open, restore
|
|
160
|
+
* focus to the trigger that opened it so keyboard users don't lose
|
|
161
|
+
* their place in the tab order.
|
|
107
162
|
*/
|
|
108
163
|
handleKeyDown(event) {
|
|
109
|
-
if (event.key === 'Escape') {
|
|
164
|
+
if (event.key === 'Escape' && this.activeDropdown !== null) {
|
|
165
|
+
const toFocus = this.lastActiveTrigger;
|
|
110
166
|
this.closeDropdown();
|
|
167
|
+
toFocus?.focus?.();
|
|
111
168
|
}
|
|
112
169
|
}
|
|
113
170
|
render() {
|
|
114
171
|
const hasDropdown = this.activeDropdown !== null;
|
|
115
|
-
return (h(Host, { key: '
|
|
172
|
+
return (h(Host, { key: 'c92f2eb42ee2a82970d6d0173a2a2f06749519c4', class: { 'has-dropdown-open': hasDropdown } }, h("div", { key: 'c395ed813e5e0a2ee40005492d750c45ade71b52', class: `navbar-spacer${this.theme ? ` theme-${this.theme}` : ''}` }), h("nav", { key: '172a9748e455a0eed9d0c403eec9264174330c52', class: "navbar-container" }, h("div", { key: '1208708b75f9a1c5f48c3301e2288553f85de763', class: "navbar theme-white" }, h("div", { key: '4aeea43bcf455af574450195bdc2612728609c8f', class: "navbar-left" }, h("div", { key: '833f39108ba12057f952b10cd082c2c96a2f0f0d', class: "logo" }, h("slot", { key: 'acd75c0ce9ed06ed0ca25347c90c3048851ec247', name: "logo" }, this.showDefaultLogo && h("af-logo", { key: '03efa58fd39bc47901749d0e573313b9cb5e62ec' }))), h("button", { key: '6cbeadaf552bed6ff5ea5b237173908446a67409', class: "mobile-menu-toggle", onClick: this.toggleMobileMenu, "aria-label": "Toggle navigation menu", "aria-expanded": this.mobileMenuOpen ? 'true' : 'false' }, this.mobileMenuOpen ? (h("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor" }, h("path", { d: "M18 6L6 18M6 6l12 12", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }))) : (h("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor" }, h("path", { d: "M3 12h18M3 6h18M3 18h18", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" })))), h("div", { key: 'a9a2adecf1cbbc99d2f40067fcc911d9bccd7a6f', class: `nav-links ${this.mobileMenuOpen ? 'mobile-open' : ''}` }, h("slot", { key: '379e4561319583d8c06f7326b9e496f5c9e53563', name: "start" }))), h("div", { key: 'd81e54abc11534835c87c6d035bd3c6d1f532557', class: `navbar-right ${this.mobileMenuOpen ? 'mobile-open' : ''}` }, h("div", { key: 'e5e2b70ccf406e11d061cd178876ee939e028f76', class: "nav-actions" }, h("slot", { key: '3b268fd03cb76a820d7d0a17a08752eb2c92ba6e', name: "end" })), h("div", { key: 'b8320a6e68a3a63b2ea9864691a910879295f65f', class: "nav-button" }, h("slot", { key: 'c8d021843b572c57eb79162e8129bdea98503938', name: "button" })))), h("div", { key: 'a84301f02c46413d795aaa531ae7300d1a872957', class: `dropdown-container ${hasDropdown ? 'is-open' : ''}` }, h("div", { key: '86231e59e9e35b2b1d766ec51f5e72fbe0788882', class: "dropdown-panel theme-white" }, h("slot", { key: 'e57c57fc13dc9fd7194ac92063c1ddb1bd5d078f', name: "dropdowns" })))), h("div", { key: 'dd1ee04b61f0882a73e2254dee676cc94b4db63d', class: `mobile-menu-panel theme-white ${this.mobileMenuOpen ? 'is-open' : ''}` }, h("div", { key: '0fa91c6f29a2cdbd3a67788194f9dc0c7eb9d0e5', class: "mobile-button-container" }, h("slot", { key: 'f6766b2ca0001ad68ea47b3d2ba661a663612019', name: "mobile-button" }, h("slot", { key: 'efd0c11aeabf2cdc147317e98cb3429bd14ad31c', name: "button" }))), h("div", { key: '9d4d65978dfe70c22383e77fbc57c9889433b58b', class: "mobile-menu-content" }, h("slot", { key: '7be698d9e1460cc780a5df9f80b919c932af00a5', name: "mobile-menu" })))));
|
|
116
173
|
}
|
|
117
174
|
static get is() { return "af-navbar"; }
|
|
118
175
|
static get encapsulation() { return "scoped"; }
|
|
@@ -203,6 +260,24 @@ export class AfNavbar {
|
|
|
203
260
|
"target": undefined,
|
|
204
261
|
"capture": false,
|
|
205
262
|
"passive": false
|
|
263
|
+
}, {
|
|
264
|
+
"name": "mouseover",
|
|
265
|
+
"method": "handleHover",
|
|
266
|
+
"target": undefined,
|
|
267
|
+
"capture": false,
|
|
268
|
+
"passive": true
|
|
269
|
+
}, {
|
|
270
|
+
"name": "mouseleave",
|
|
271
|
+
"method": "handleHostLeave",
|
|
272
|
+
"target": undefined,
|
|
273
|
+
"capture": false,
|
|
274
|
+
"passive": true
|
|
275
|
+
}, {
|
|
276
|
+
"name": "mouseenter",
|
|
277
|
+
"method": "handleHostEnter",
|
|
278
|
+
"target": undefined,
|
|
279
|
+
"capture": false,
|
|
280
|
+
"passive": true
|
|
206
281
|
}, {
|
|
207
282
|
"name": "click",
|
|
208
283
|
"method": "handleDocumentClick",
|