@ptcwebops/ptcw-design 6.4.4 → 6.4.5

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.
Files changed (138) hide show
  1. package/dist/cjs/blog-detail-content_2.cjs.entry.js +1 -1
  2. package/dist/cjs/blog-detail-layout.cjs.entry.js +1 -1
  3. package/dist/cjs/blogs-search-section.cjs.entry.js +1 -1
  4. package/dist/cjs/homepage-jumbotron.cjs.entry.js +1 -1
  5. package/dist/cjs/homepage-toggled-content.cjs.entry.js +1 -1
  6. package/dist/cjs/innovator-toggle-container.cjs.entry.js +39 -3
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/most-popular-news.cjs.entry.js +1 -1
  9. package/dist/cjs/my-component.cjs.entry.js +1 -1
  10. package/dist/cjs/ptc-accordion-item.cjs.entry.js +1 -1
  11. package/dist/cjs/ptc-background-video.cjs.entry.js +99 -28
  12. package/dist/cjs/ptc-button_5.cjs.entry.js +597 -0
  13. package/dist/cjs/ptc-card_2.cjs.entry.js +1 -1
  14. package/dist/cjs/ptc-collapse-list.cjs.entry.js +1 -1
  15. package/dist/cjs/ptc-form-checkbox_2.cjs.entry.js +1 -1
  16. package/dist/cjs/ptc-homepage-image-feature.cjs.entry.js +1 -1
  17. package/dist/cjs/ptc-homepage-video-background.cjs.entry.js +1 -1
  18. package/dist/cjs/ptc-icon-card.cjs.entry.js +1 -1
  19. package/dist/cjs/ptc-jumbotron.cjs.entry.js +1 -1
  20. package/dist/cjs/ptc-link.cjs.entry.js +1 -1
  21. package/dist/cjs/ptc-media-card.cjs.entry.js +74 -6
  22. package/dist/cjs/ptc-multi-select_2.cjs.entry.js +1 -1
  23. package/dist/cjs/ptc-pricing-packaging-table.cjs.entry.js +1 -1
  24. package/dist/cjs/ptc-pricing-tabs.cjs.entry.js +1 -1
  25. package/dist/cjs/ptc-skeleton.cjs.entry.js +1 -1
  26. package/dist/cjs/ptc-social-icons-footer.cjs.entry.js +1 -1
  27. package/dist/cjs/ptc-subnav-v2.cjs.entry.js +430 -0
  28. package/dist/cjs/ptc-text-copy-with-background.cjs.entry.js +1 -1
  29. package/dist/cjs/ptcw-design.cjs.js +1 -1
  30. package/dist/cjs/{utils-b63aef52.js → utils-0ff09a53.js} +13 -0
  31. package/dist/collection/collection-manifest.json +1 -0
  32. package/dist/collection/components/innovator-toggle-container/innovator-toggle-container.js +39 -3
  33. package/dist/collection/components/ptc-background-video/ptc-background-video.css +21 -0
  34. package/dist/collection/components/ptc-background-video/ptc-background-video.js +110 -43
  35. package/dist/collection/components/ptc-jumbotron/ptc-jumbotron.css +5 -0
  36. package/dist/collection/components/ptc-media-card/ptc-media-card.js +78 -7
  37. package/dist/collection/components/ptc-preloader-section/ptc-preloader-section.css +16 -0
  38. package/dist/collection/components/ptc-seo-title/ptc-seo-title.js +3 -3
  39. package/dist/collection/components/ptc-skeleton/ptc-skeleton.css +6 -0
  40. package/dist/collection/components/ptc-subnav-v2/ptc-subnav-v2.css +394 -0
  41. package/dist/collection/components/ptc-subnav-v2/ptc-subnav-v2.js +483 -0
  42. package/dist/collection/components/ptc-text-copy-with-background/ptc-text-copy-with-background.css +19 -0
  43. package/dist/collection/stories/organisms/ptc/Subnav New/preview.stories.js +360 -0
  44. package/dist/collection/utils/utils.js +11 -0
  45. package/dist/custom-elements/index.d.ts +6 -0
  46. package/dist/custom-elements/index.js +654 -42
  47. package/dist/esm/blog-detail-content_2.entry.js +1 -1
  48. package/dist/esm/blog-detail-layout.entry.js +1 -1
  49. package/dist/esm/blogs-search-section.entry.js +1 -1
  50. package/dist/esm/homepage-jumbotron.entry.js +1 -1
  51. package/dist/esm/homepage-toggled-content.entry.js +1 -1
  52. package/dist/esm/innovator-toggle-container.entry.js +39 -3
  53. package/dist/esm/{interfaces-4caedd26.js → interfaces-7c0243be.js} +1 -1
  54. package/dist/esm/loader.js +1 -1
  55. package/dist/esm/most-popular-news.entry.js +1 -1
  56. package/dist/esm/my-component.entry.js +1 -1
  57. package/dist/esm/ptc-accordion-item.entry.js +1 -1
  58. package/dist/esm/ptc-background-video.entry.js +99 -28
  59. package/dist/esm/ptc-button_5.entry.js +589 -0
  60. package/dist/esm/ptc-card_2.entry.js +1 -1
  61. package/dist/esm/ptc-collapse-list.entry.js +1 -1
  62. package/dist/esm/ptc-form-checkbox_2.entry.js +1 -1
  63. package/dist/esm/ptc-homepage-image-feature.entry.js +1 -1
  64. package/dist/esm/ptc-homepage-video-background.entry.js +1 -1
  65. package/dist/esm/ptc-icon-card.entry.js +1 -1
  66. package/dist/esm/ptc-img.entry.js +1 -1
  67. package/dist/esm/ptc-jumbotron.entry.js +1 -1
  68. package/dist/esm/ptc-link.entry.js +1 -1
  69. package/dist/esm/ptc-media-card.entry.js +74 -6
  70. package/dist/esm/ptc-multi-select_2.entry.js +1 -1
  71. package/dist/esm/ptc-pricing-packaging-table.entry.js +1 -1
  72. package/dist/esm/ptc-pricing-tabs.entry.js +1 -1
  73. package/dist/esm/ptc-skeleton.entry.js +1 -1
  74. package/dist/esm/ptc-social-icons-footer.entry.js +1 -1
  75. package/dist/esm/ptc-subnav-v2.entry.js +426 -0
  76. package/dist/esm/ptc-text-copy-with-background.entry.js +1 -1
  77. package/dist/esm/ptcw-design.js +1 -1
  78. package/dist/esm/{utils-2f12c081.js → utils-a64ba942.js} +12 -1
  79. package/dist/ptcw-design/{p-9dbcfcee.entry.js → p-01497d7a.entry.js} +1 -1
  80. package/dist/ptcw-design/p-043be054.entry.js +1 -0
  81. package/dist/ptcw-design/{p-257267e3.entry.js → p-0df868d2.entry.js} +1 -1
  82. package/dist/ptcw-design/{p-fe8392c4.entry.js → p-1489b374.entry.js} +1 -1
  83. package/dist/ptcw-design/p-1c569057.entry.js +1 -0
  84. package/dist/ptcw-design/p-22cf00e7.js +1 -0
  85. package/dist/ptcw-design/p-28113014.entry.js +1 -0
  86. package/dist/ptcw-design/{p-d0fb9bfb.entry.js → p-2f21b69b.entry.js} +1 -1
  87. package/dist/ptcw-design/{p-45b1f3fc.entry.js → p-456c5cbb.entry.js} +1 -1
  88. package/dist/ptcw-design/{p-c3022c48.entry.js → p-54b589a6.entry.js} +1 -1
  89. package/dist/ptcw-design/{p-9b0df204.entry.js → p-5877f093.entry.js} +1 -1
  90. package/dist/ptcw-design/{p-78370e3d.entry.js → p-5a8e7557.entry.js} +1 -1
  91. package/dist/ptcw-design/{p-3ed4a7ed.entry.js → p-5ca42138.entry.js} +1 -1
  92. package/dist/ptcw-design/{p-901c31b3.entry.js → p-5cf5b9f8.entry.js} +1 -1
  93. package/dist/ptcw-design/{p-4fff8cc8.entry.js → p-6a1d9c7d.entry.js} +1 -1
  94. package/dist/ptcw-design/{p-a5fc048f.entry.js → p-82f766d2.entry.js} +1 -1
  95. package/dist/ptcw-design/{p-76dab076.entry.js → p-8aca7181.entry.js} +1 -1
  96. package/dist/ptcw-design/{p-52e17d34.entry.js → p-92ad78c5.entry.js} +1 -1
  97. package/dist/ptcw-design/p-9c8b739c.entry.js +1 -0
  98. package/dist/ptcw-design/{p-4098e953.entry.js → p-9f4ad29d.entry.js} +1 -1
  99. package/dist/ptcw-design/p-a8bfef4d.entry.js +1 -0
  100. package/dist/ptcw-design/{p-abadbe5b.entry.js → p-bd9d995b.entry.js} +1 -1
  101. package/dist/ptcw-design/{p-8c121480.entry.js → p-c160bda4.entry.js} +1 -1
  102. package/dist/ptcw-design/p-c555a45c.entry.js +1 -0
  103. package/dist/ptcw-design/{p-96163196.entry.js → p-d0ebcace.entry.js} +1 -1
  104. package/dist/ptcw-design/{p-81e5fa38.entry.js → p-d2998707.entry.js} +1 -1
  105. package/dist/ptcw-design/{p-19a407ff.entry.js → p-de650865.entry.js} +1 -1
  106. package/dist/ptcw-design/{p-54f5a5be.entry.js → p-e23bc4a1.entry.js} +1 -1
  107. package/dist/ptcw-design/{p-711bcdad.js → p-ee1183b2.js} +1 -1
  108. package/dist/ptcw-design/{p-9f01419b.entry.js → p-f2675bb0.entry.js} +1 -1
  109. package/dist/ptcw-design/ptcw-design.css +1 -1
  110. package/dist/ptcw-design/ptcw-design.esm.js +1 -1
  111. package/dist/types/components/innovator-toggle-container/innovator-toggle-container.d.ts +3 -0
  112. package/dist/types/components/ptc-background-video/ptc-background-video.d.ts +31 -47
  113. package/dist/types/components/ptc-media-card/ptc-media-card.d.ts +8 -2
  114. package/dist/types/components/ptc-subnav-v2/ptc-subnav-v2.d.ts +55 -0
  115. package/dist/types/components.d.ts +105 -88
  116. package/dist/types/utils/utils.d.ts +2 -0
  117. package/package.json +98 -98
  118. package/readme.md +19 -19
  119. package/dist/cjs/ptc-button.cjs.entry.js +0 -117
  120. package/dist/cjs/ptc-para.cjs.entry.js +0 -139
  121. package/dist/cjs/ptc-picture.cjs.entry.js +0 -168
  122. package/dist/cjs/ptc-spacer.cjs.entry.js +0 -38
  123. package/dist/cjs/ptc-title.cjs.entry.js +0 -161
  124. package/dist/esm/ptc-button.entry.js +0 -113
  125. package/dist/esm/ptc-para.entry.js +0 -135
  126. package/dist/esm/ptc-picture.entry.js +0 -164
  127. package/dist/esm/ptc-spacer.entry.js +0 -34
  128. package/dist/esm/ptc-title.entry.js +0 -157
  129. package/dist/ptcw-design/p-0c69ea52.entry.js +0 -1
  130. package/dist/ptcw-design/p-24776ca2.entry.js +0 -1
  131. package/dist/ptcw-design/p-605b13a2.entry.js +0 -1
  132. package/dist/ptcw-design/p-80122e26.js +0 -1
  133. package/dist/ptcw-design/p-8cea8943.entry.js +0 -1
  134. package/dist/ptcw-design/p-a8872ce3.entry.js +0 -1
  135. package/dist/ptcw-design/p-c6431ebc.entry.js +0 -1
  136. package/dist/ptcw-design/p-d51438de.entry.js +0 -1
  137. package/dist/ptcw-design/p-d875f96d.entry.js +0 -1
  138. package/dist/ptcw-design/p-e4eb925f.entry.js +0 -1
@@ -0,0 +1,430 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const index = require('./index-63ddc79c.js');
6
+
7
+ const ptcSubnavV2Css = "h1,h2,h3,h4,h5,h6,p,ul,li,ptc-subnav,ptc-tab-list,ptc-link,ptc-square-card,.hyphenate-text,ptc-footer{word-break:break-word;hyphens:manual;-webkit-hyphens:manual;-moz-hyphens:manual;-ms-hyphens:manual}@supports (hyphenate-limit-chars: 12 3 3){h1,h2,h3,h4,h5,h6,p,ul,li,ptc-subnav,ptc-tab-list,ptc-link,ptc-square-card,.hyphenate-text,ptc-footer{hyphens:auto;-webkit-hyphenate-limit-before:3;-webkit-hyphenate-limit-after:3;hyphenate-limit-chars:12 3 3;hyphenate-limit-lines:2;hyphenate-limit-last:always;hyphenate-limit-zone:6%;-webkit-hyphens:auto;-webkit-hyphenate-limit-before:3;-webkit-hyphenate-limit-after:3;-webkit-hyphenate-limit-chars:12 3 3;-webkit-hyphenate-limit-lines:2;-moz-hyphens:auto;-moz-hyphenate-limit-chars:12 3 3;-moz-hyphenate-limit-lines:2;-ms-hyphens:auto;-ms-hyphenate-limit-chars:12 3 3;-ms-hyphenate-limit-lines:2}}:host .mobile-dropdown-container .mobile-dropdown-button,:host .subnav-menu-left .overflow-menu-container .overflow-button,:host .subnav-menu-left ul.desktop-menu li a{color:var(--color-gray-07);text-decoration:none;padding:8px 12px;font-size:var(--ptc-font-size-xx-small);font-weight:var(--ptc-font-weight-bold);line-height:var(--ptc-line-height-densest);display:flex;align-items:center;position:relative;border-bottom:3px solid transparent;height:100%;box-sizing:border-box}:host .subnav-menu-left .overflow-menu-container .overflow-dropdown{position:absolute;top:100%;right:0;background:var(--color-white);border-radius:var(--ptc-border-radius-standard);box-shadow:var(--ptc-shadow-x-large);min-width:200px;z-index:1001;padding:14px 0;margin-top:-4px;max-width:312px;width:max-content}:host .mobile-dropdown-container .mobile-dropdown li .mobile-dropdown-item,:host .subnav-menu-left .overflow-menu-container .overflow-dropdown a{display:block;padding:10px 32px 10px 24px;color:var(--color-gray-07);text-decoration:none;font-size:var(--ptc-font-size-xx-small);font-weight:var(--ptc-font-weight-bold);line-height:var(--ptc-line-height-densest);transition:all 0.2s ease;position:relative;border:none}:host{display:block;font-family:var(--ptc-font-latin);position:sticky;top:0;z-index:105;background-color:var(--color-standard-gray);box-shadow:var(--ptc-shadow-small)}:host .subnav-container{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:0 24px;margin:0 auto;max-width:1200px;gap:24px}@media only screen and (min-width: 768px){:host .subnav-container{flex-wrap:wrap;gap:48px}}@media only screen and (min-width: 1200px){:host .subnav-container{padding:0;max-width:1136px}}@media only screen and (min-width: 1440px){:host .subnav-container{padding:0;max-width:1200px}}:host .subnav-container.full-width{justify-content:flex-start}:host .subnav-menu-left{display:flex;align-items:center;flex:1;align-self:stretch}@media only screen and (min-width: 768px){:host .subnav-menu-left{justify-content:flex-start}}:host .subnav-menu-left ul.desktop-menu{list-style:none;padding:0;margin:0;display:flex;align-items:center;justify-content:center;gap:4px;flex-wrap:wrap;align-self:stretch}@media only screen and (min-width: 768px){:host .subnav-menu-left ul.desktop-menu{justify-content:flex-start;gap:32px}}:host .subnav-menu-left ul.desktop-menu li{display:inline-block;height:100%}@media only screen and (min-width: 768px){:host .subnav-menu-left ul.desktop-menu li a{padding:20px 0}}:host .subnav-menu-left ul.desktop-menu li a:hover{color:var(--color-gray-10)}:host .subnav-menu-left ul.desktop-menu li a.active{color:var(--color-gray-10);border-bottom:3px solid var(--color-green-07)}:host .subnav-menu-left ul.desktop-menu li a:focus-visible{border-radius:var(--ptc-border-radius-standard);outline:5px solid var(--keyboard-nav-outline)}:host .subnav-menu-left .overflow-menu-container{position:relative;display:none}@media only screen and (min-width: 768px){:host .subnav-menu-left .overflow-menu-container{display:inline-block}}:host .subnav-menu-left .overflow-menu-container .overflow-button{background:none;border:none;padding:20px 0;cursor:pointer;justify-content:center;min-width:32px}:host .subnav-menu-left .overflow-menu-container .overflow-button:hover{color:var(--color-gray-10)}:host .subnav-menu-left .overflow-menu-container .overflow-button:focus-visible{border-radius:var(--ptc-border-radius-standard);outline:5px solid var(--keyboard-nav-outline)}:host .subnav-menu-left .overflow-menu-container .overflow-button .overflow-dots{border-radius:2px;border:1px solid var(--color-gray-07);line-height:1;width:18px;height:18px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all 0.2s ease}:host .subnav-menu-left .overflow-menu-container .overflow-button .overflow-dots:hover{background-color:var(--color-gray-04);border-color:var(--color-gray-04)}:host .subnav-menu-left .overflow-menu-container .overflow-button .overflow-dots:hover svg circle{fill:var(--color-gray-10)}:host .subnav-menu-left .overflow-menu-container .overflow-button .overflow-dots:focus-visible{border-radius:var(--ptc-border-radius-standard);outline:5px solid var(--keyboard-nav-outline)}:host .subnav-menu-left .overflow-menu-container .overflow-button[aria-expanded],:host .subnav-menu-left .overflow-menu-container .overflow-button.selected-active{border-bottom:3px solid var(--color-green-07)}:host .subnav-menu-left .overflow-menu-container .overflow-button[aria-expanded] .overflow-dots,:host .subnav-menu-left .overflow-menu-container .overflow-button.selected-active .overflow-dots{background-color:var(--color-green-07);border-color:var(--color-green-07)}:host .subnav-menu-left .overflow-menu-container .overflow-button[aria-expanded] .overflow-dots svg circle,:host .subnav-menu-left .overflow-menu-container .overflow-button.selected-active .overflow-dots svg circle{fill:var(--color-white)}:host .subnav-menu-left .overflow-menu-container .overflow-dropdown a:hover{background-color:var(--color-gray-02);color:var(--color-gray-10)}:host .subnav-menu-left .overflow-menu-container .overflow-dropdown a.active{color:var(--color-gray-10);border-bottom:none}:host .subnav-menu-left .overflow-menu-container .overflow-dropdown a.active::before{content:\"\";display:block;width:2px;height:100%;background-color:var(--color-green-07);position:absolute;left:16px;top:0}:host .subnav-menu-left .overflow-menu-container .overflow-dropdown a:focus-visible{border-radius:var(--ptc-border-radius-standard);outline:5px solid var(--keyboard-nav-outline)}:host .subnav-menu-left.full-width{flex:1;width:100%;justify-content:flex-start}:host .subnav-menu-left.full-width .desktop-menu{width:100%}:host .mobile-dropdown-container{position:relative;display:block;height:100%;box-sizing:border-box}@media only screen and (min-width: 768px){:host .mobile-dropdown-container{display:none !important}}:host .mobile-dropdown-container .mobile-dropdown-button{background:transparent;border:none;border-bottom:3px solid var(--color-green-07);padding:20px 0;justify-content:center;gap:10px;cursor:pointer}:host .mobile-dropdown-container .mobile-dropdown-button:hover{border-color:var(--color-gray-04);color:var(--color-gray-10)}:host .mobile-dropdown-container .mobile-dropdown-button:focus-visible{border-radius:var(--ptc-border-radius-standard);outline:5px solid var(--keyboard-nav-outline)}:host .mobile-dropdown-container .mobile-dropdown-button[aria-expanded]{border-color:var(--color-green-07);color:var(--color-gray-10)}:host .mobile-dropdown-container .mobile-dropdown-button .mobile-selected-item{flex:1;text-align:left;color:var(--color-gray-07);font-size:var(--ptc-font-size-xx-small);font-weight:var(--ptc-font-weight-bold);line-height:var(--ptc-line-height-densest);display:-webkit-box;line-clamp:1;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;max-width:100%}:host .mobile-dropdown-container .mobile-dropdown-button .mobile-arrow{display:flex;align-items:center;justify-content:center;transition:transform 0.2s ease}:host .mobile-dropdown-container .mobile-dropdown-button .mobile-arrow svg{transition:transform 0.2s ease}:host .mobile-dropdown-container .mobile-dropdown-button .mobile-arrow.rotated svg{transform:rotate(180deg)}:host .mobile-dropdown-container .mobile-dropdown{position:absolute;top:calc(100% - 4px);background:var(--color-white);border:1px solid var(--color-gray-02);border-radius:var(--ptc-border-radius-standard);box-shadow:var(--ptc-shadow-medium);z-index:1001;margin:4px 0 0 0;overflow-y:auto;min-width:280px;width:fit-content;list-style:none;padding:14px 0}:host .mobile-dropdown-container .mobile-dropdown li{display:block}:host .mobile-dropdown-container .mobile-dropdown li:last-child{border-bottom:none}:host .mobile-dropdown-container .mobile-dropdown li .mobile-dropdown-item{width:100%;background:none;text-align:left;cursor:pointer;word-break:break-word;display:block}:host .mobile-dropdown-container .mobile-dropdown li .mobile-dropdown-item.active{color:var(--color-gray-10)}:host .mobile-dropdown-container .mobile-dropdown li .mobile-dropdown-item.active::before{content:\"\";display:block;width:2px;height:100%;background-color:var(--color-green-07);position:absolute;left:16px;top:0}:host .mobile-dropdown-container .mobile-dropdown li .mobile-dropdown-item:focus-visible{border-radius:var(--ptc-border-radius-standard);outline:5px solid var(--keyboard-nav-outline)}:host .subnav-menu-right{max-width:50%;padding:12px 0}@media only screen and (min-width: 768px){:host .subnav-menu-right{margin-left:48px;width:auto;max-width:300px}}";
8
+
9
+ const PtcSubnavV2 = class {
10
+ constructor(hostRef) {
11
+ index.registerInstance(this, hostRef);
12
+ this.cachedNavItems = null;
13
+ this.handleClickOutside = (event) => {
14
+ if (!this.el.contains(event.target)) {
15
+ this.showOverflowMenu = false;
16
+ }
17
+ };
18
+ this.handleKeyDown = (event) => {
19
+ var _a;
20
+ if (event.key === "Escape" && this.showOverflowMenu) {
21
+ this.showOverflowMenu = false;
22
+ (_a = this.overflowButton) === null || _a === void 0 ? void 0 : _a.focus();
23
+ }
24
+ };
25
+ this.handleScroll = () => {
26
+ // Throttle scroll events for better performance
27
+ if (this.scrollThrottleTimeout) {
28
+ return;
29
+ }
30
+ this.scrollThrottleTimeout = window.setTimeout(() => {
31
+ // Don't update active state if user just manually navigated
32
+ if (this.isManualNavigation) {
33
+ this.scrollThrottleTimeout = null;
34
+ return;
35
+ }
36
+ // Fallback scroll handler to ensure active state is updated
37
+ const navItems = this.getNavItems();
38
+ const subnavHeight = this.el.offsetHeight;
39
+ const scrollPosition = window.scrollY + subnavHeight + 100; // Offset for better detection
40
+ // Find the section that should be active based on scroll position
41
+ let activeSection = navItems[0].id; // Default to first section
42
+ for (let i = navItems.length - 1; i >= 0; i--) {
43
+ const section = document.getElementById(navItems[i].id);
44
+ if (section && section.offsetTop <= scrollPosition) {
45
+ activeSection = navItems[i].id;
46
+ break;
47
+ }
48
+ }
49
+ // Only update if different from current active
50
+ if (activeSection !== this.currentActive) {
51
+ this.currentActive = activeSection;
52
+ // Update mobile selected item if in mobile mode
53
+ if (this.isMobile) {
54
+ const activeItem = navItems.find((item) => item.id === activeSection);
55
+ if (activeItem) {
56
+ this.selectedMobileItem = activeItem;
57
+ }
58
+ }
59
+ }
60
+ this.scrollThrottleTimeout = null;
61
+ }, 16); // ~60fps throttling
62
+ };
63
+ this.handleResize = () => {
64
+ this.navContainer && setTimeout(() => this.calculateVisibleItems(), 10);
65
+ };
66
+ this.setupIntersectionObserver = () => {
67
+ // Get all sections that correspond to our navigation items
68
+ const navItems = this.getNavItems();
69
+ // Create intersection observer
70
+ this.intersectionObserver = new IntersectionObserver((entries) => {
71
+ // Clear any existing timeout
72
+ if (this.scrollTimeout) {
73
+ clearTimeout(this.scrollTimeout);
74
+ }
75
+ // Debounce the intersection changes
76
+ this.scrollTimeout = window.setTimeout(() => {
77
+ // Don't update active state if user just manually navigated
78
+ if (this.isManualNavigation) {
79
+ return;
80
+ }
81
+ // Find all intersecting sections
82
+ const intersectingSections = entries.filter((entry) => entry.isIntersecting);
83
+ if (intersectingSections.length > 0) {
84
+ // Sort by intersection ratio (how much of the section is visible)
85
+ // and then by position (top to bottom)
86
+ intersectingSections.sort((a, b) => {
87
+ // First sort by intersection ratio (higher = more visible)
88
+ if (b.intersectionRatio !== a.intersectionRatio) {
89
+ return (b.intersectionRatio - a.intersectionRatio);
90
+ }
91
+ // If intersection ratios are equal, sort by position
92
+ return (a.boundingClientRect.top -
93
+ b.boundingClientRect.top);
94
+ });
95
+ // Get the most visible section
96
+ const mostVisibleSection = intersectingSections[0];
97
+ const sectionId = mostVisibleSection.target.id;
98
+ if (sectionId && sectionId !== this.currentActive) {
99
+ this.currentActive = sectionId;
100
+ // Update mobile selected item if in mobile mode
101
+ if (this.isMobile) {
102
+ const activeItem = navItems.find((item) => item.id === sectionId);
103
+ if (activeItem) {
104
+ this.selectedMobileItem = activeItem;
105
+ }
106
+ }
107
+ }
108
+ }
109
+ }, 100); // Increased debounce time for better performance
110
+ }, {
111
+ root: null,
112
+ rootMargin: "-20% 0px -60% 0px",
113
+ threshold: [0, 0.1, 0.25, 0.5, 0.75, 1.0], // Multiple thresholds for better detection
114
+ });
115
+ // Observe all sections
116
+ navItems.forEach((item) => {
117
+ const section = document.getElementById(item.id);
118
+ if (section) {
119
+ this.intersectionObserver.observe(section);
120
+ }
121
+ });
122
+ };
123
+ this.extractNavItemsFromSlots = () => {
124
+ const slotElement = this.el.querySelector('[slot="nav-items"]');
125
+ if (!slotElement)
126
+ return null;
127
+ const links = slotElement.querySelectorAll("a");
128
+ const items = Array.from(links)
129
+ .map((link) => {
130
+ var _a, _b;
131
+ return ({
132
+ id: ((_a = link.getAttribute("href")) === null || _a === void 0 ? void 0 : _a.substring(1)) || "",
133
+ label: ((_b = link.textContent) === null || _b === void 0 ? void 0 : _b.trim()) || "",
134
+ title: link.getAttribute("title") || undefined,
135
+ trackerId: link.getAttribute("tracker-id") || undefined,
136
+ });
137
+ })
138
+ .filter((item) => Boolean(item.id && item.label));
139
+ return items.length > 0 ? items : null;
140
+ };
141
+ this.getNavItems = () => {
142
+ // Return cached items if available
143
+ if (this.cachedNavItems) {
144
+ return this.cachedNavItems;
145
+ }
146
+ // Extract navigation items from slots (SEO-friendly approach)
147
+ const slotItems = this.extractNavItemsFromSlots();
148
+ if (slotItems) {
149
+ this.cachedNavItems = slotItems;
150
+ return slotItems;
151
+ }
152
+ // If navItems prop is provided, parse and use it (fallback)
153
+ const propItems = this.parsePropNavItems();
154
+ if (propItems) {
155
+ this.cachedNavItems = propItems;
156
+ return propItems;
157
+ }
158
+ // Return empty array if no navigation items found
159
+ console.warn("No navigation items found in slots or props for ptc-subnav-v2");
160
+ return [];
161
+ };
162
+ this.calculateMobileDropdownItems = () => {
163
+ this.mobileDropdownItems = this.getNavItems();
164
+ };
165
+ this.hasActiveOverflowItem = () => {
166
+ return this.overflowItems.some((item) => item.id === this.currentActive);
167
+ };
168
+ this.hasSubnavMenuRightContent = () => {
169
+ const slotElement = this.el.querySelector('[slot="subnav-menu-right"]');
170
+ return Boolean(slotElement === null || slotElement === void 0 ? void 0 : slotElement.children.length);
171
+ };
172
+ this.calculateVisibleItems = () => {
173
+ const navItems = this.getNavItems();
174
+ // Handle case where no navigation items are found
175
+ if (navItems.length === 0) {
176
+ this.visibleItems = [];
177
+ this.overflowItems = [];
178
+ this.selectedMobileItem = null;
179
+ return;
180
+ }
181
+ // Check if we're in mobile mode (below 767px)
182
+ const wasMobile = this.isMobile;
183
+ this.isMobile = window.innerWidth <= 767;
184
+ // Force re-render if mobile state changed
185
+ if (wasMobile !== this.isMobile) {
186
+ this.showOverflowMenu = false; // Close any open menus when switching modes
187
+ }
188
+ if (this.isMobile) {
189
+ // On mobile, show only the current active item
190
+ const activeItem = navItems.find((item) => item.id === this.currentActive) ||
191
+ navItems[0];
192
+ this.selectedMobileItem = activeItem;
193
+ this.visibleItems = [activeItem];
194
+ this.overflowItems = navItems.filter((item) => item.id !== activeItem.id);
195
+ }
196
+ else {
197
+ // Desktop behavior - calculate based on available width
198
+ const containerWidth = this.navContainer
199
+ ? this.navContainer.offsetWidth
200
+ : 0;
201
+ const buttonWidth = this.overflowButton
202
+ ? this.overflowButton.offsetWidth + 32
203
+ : 0; // 32px for gap
204
+ const availableWidth = containerWidth - buttonWidth - 48; // 48px for right margin
205
+ // Fallback if container width is not available yet
206
+ if (containerWidth === 0) {
207
+ this.visibleItems = navItems;
208
+ this.overflowItems = [];
209
+ return;
210
+ }
211
+ let visibleCount = 0;
212
+ let totalWidth = 0;
213
+ // Create temporary elements to measure width
214
+ const tempContainer = document.createElement("div");
215
+ tempContainer.style.position = "absolute";
216
+ tempContainer.style.visibility = "hidden";
217
+ tempContainer.style.whiteSpace = "nowrap";
218
+ tempContainer.style.fontSize = "14px";
219
+ tempContainer.style.fontWeight = "700";
220
+ tempContainer.style.padding = "20px 0 20px 0";
221
+ document.body.appendChild(tempContainer);
222
+ for (let i = 0; i < navItems.length; i++) {
223
+ const item = navItems[i];
224
+ tempContainer.textContent = item.label;
225
+ const itemWidth = tempContainer.offsetWidth + 32; // 32px for gap
226
+ if (totalWidth + itemWidth <= availableWidth) {
227
+ totalWidth += itemWidth;
228
+ visibleCount++;
229
+ }
230
+ else {
231
+ break;
232
+ }
233
+ }
234
+ document.body.removeChild(tempContainer);
235
+ this.visibleItems = navItems.slice(0, visibleCount);
236
+ this.overflowItems = navItems.slice(visibleCount);
237
+ }
238
+ // Don't automatically show overflow menu - it should be closed by default
239
+ // this.showOverflowMenu = this.overflowItems.length > 0;
240
+ };
241
+ this.toggleOverflowMenu = () => {
242
+ this.showOverflowMenu = !this.showOverflowMenu;
243
+ };
244
+ this.handleNavClick = (event, section) => {
245
+ event.preventDefault();
246
+ this.currentActive = section;
247
+ // Update mobile selected item if in mobile mode
248
+ if (this.isMobile) {
249
+ const navItems = this.getNavItems();
250
+ const activeItem = navItems.find((item) => item.id === section);
251
+ if (activeItem) {
252
+ this.selectedMobileItem = activeItem;
253
+ this.calculateMobileDropdownItems();
254
+ }
255
+ }
256
+ // Set manual navigation flag to prevent intersection observer from overriding
257
+ this.isManualNavigation = true;
258
+ // Clear any existing manual navigation timeout
259
+ if (this.manualNavigationTimeout) {
260
+ clearTimeout(this.manualNavigationTimeout);
261
+ }
262
+ // Reset manual navigation flag after scroll animation completes
263
+ this.manualNavigationTimeout = window.setTimeout(() => {
264
+ this.isManualNavigation = false;
265
+ }, 1500); // Give enough time for smooth scroll to complete
266
+ // Emit custom event for parent components
267
+ const customEvent = new CustomEvent("sectionChange", {
268
+ detail: { section },
269
+ bubbles: true,
270
+ composed: true,
271
+ });
272
+ this.el.dispatchEvent(customEvent);
273
+ // Smooth scroll to section if it exists
274
+ const targetElement = document.querySelector(`#${section}`);
275
+ if (targetElement) {
276
+ targetElement.scrollIntoView({
277
+ behavior: "smooth",
278
+ block: "start",
279
+ });
280
+ }
281
+ };
282
+ this.activeSection = "overview";
283
+ this.navItems = "";
284
+ this.currentActive = "overview";
285
+ this.visibleItems = [];
286
+ this.overflowItems = [];
287
+ this.showOverflowMenu = false;
288
+ this.isMobile = false;
289
+ this.selectedMobileItem = null;
290
+ this.isManualNavigation = false;
291
+ this.mobileDropdownItems = [];
292
+ }
293
+ componentWillLoad() {
294
+ this.currentActive = this.activeSection;
295
+ this.initializeMobileItem();
296
+ this.calculateMobileDropdownItems();
297
+ }
298
+ initializeMobileItem() {
299
+ const navItems = this.getNavItems();
300
+ this.selectedMobileItem =
301
+ navItems.length > 0
302
+ ? navItems.find((item) => item.id === this.activeSection) ||
303
+ navItems[0]
304
+ : null;
305
+ }
306
+ componentDidLoad() {
307
+ this.bindEventHandlers();
308
+ this.calculateMobileDropdownItems();
309
+ this.handleResize();
310
+ this.addEventListeners();
311
+ this.setupIntersectionObserver();
312
+ }
313
+ bindEventHandlers() {
314
+ this.boundHandleResize = this.handleResize.bind(this);
315
+ this.boundHandleClickOutside = this.handleClickOutside.bind(this);
316
+ this.boundHandleScroll = this.handleScroll.bind(this);
317
+ this.boundHandleKeyDown = this.handleKeyDown.bind(this);
318
+ }
319
+ addEventListeners() {
320
+ window.addEventListener("resize", this.boundHandleResize);
321
+ document.addEventListener("click", this.boundHandleClickOutside);
322
+ document.addEventListener("keydown", this.boundHandleKeyDown);
323
+ window.addEventListener("scroll", this.boundHandleScroll, {
324
+ passive: true,
325
+ });
326
+ }
327
+ disconnectedCallback() {
328
+ this.removeEventListeners();
329
+ this.cleanupTimeouts();
330
+ this.cleanupIntersectionObserver();
331
+ }
332
+ removeEventListeners() {
333
+ window.removeEventListener("resize", this.boundHandleResize);
334
+ document.removeEventListener("click", this.boundHandleClickOutside);
335
+ document.removeEventListener("keydown", this.boundHandleKeyDown);
336
+ window.removeEventListener("scroll", this.boundHandleScroll);
337
+ }
338
+ cleanupTimeouts() {
339
+ [
340
+ this.scrollTimeout,
341
+ this.scrollThrottleTimeout,
342
+ this.manualNavigationTimeout,
343
+ ]
344
+ .filter(Boolean)
345
+ .forEach((timeout) => clearTimeout(timeout));
346
+ }
347
+ cleanupIntersectionObserver() {
348
+ if (this.intersectionObserver) {
349
+ this.intersectionObserver.disconnect();
350
+ }
351
+ }
352
+ parsePropNavItems() {
353
+ var _a;
354
+ if (!((_a = this.navItems) === null || _a === void 0 ? void 0 : _a.trim()))
355
+ return null;
356
+ try {
357
+ const parsedItems = JSON.parse(this.navItems);
358
+ if (Array.isArray(parsedItems) && parsedItems.length > 0) {
359
+ const validItems = parsedItems.filter((item) => Boolean(item &&
360
+ typeof item.id === "string" &&
361
+ typeof item.label === "string"));
362
+ return validItems.length > 0 ? validItems : null;
363
+ }
364
+ }
365
+ catch (error) {
366
+ console.warn("Invalid navItems JSON provided to ptc-subnav-v2:", error);
367
+ }
368
+ return null;
369
+ }
370
+ render() {
371
+ var _a, _b;
372
+ const navItems = this.getNavItems();
373
+ // If no navigation items, don't render the navigation
374
+ if (navItems.length === 0) {
375
+ const hasRightContent = this.hasSubnavMenuRightContent();
376
+ return (index.h(index.Host, null, index.h("div", { class: `subnav-container ${!hasRightContent ? "full-width" : ""}` }, hasRightContent && (index.h("div", { class: "subnav-menu-right" }, index.h("slot", { name: "subnav-menu-right" }))))));
377
+ }
378
+ const hasRightContent = this.hasSubnavMenuRightContent();
379
+ return (index.h(index.Host, null, index.h("div", { class: `subnav-container ${!hasRightContent ? "full-width" : ""}` }, index.h("nav", { class: `subnav-menu-left ${!hasRightContent ? "full-width" : ""}`, role: "navigation", "aria-label": "Sub navigation", ref: (el) => (this.navContainer = el) }, this.isMobile ? (
380
+ // Mobile layout - dropdown with arrows
381
+ index.h("div", { class: "mobile-dropdown-container" }, index.h("button", { class: "mobile-dropdown-button", onClick: this.toggleOverflowMenu, onKeyDown: (e) => {
382
+ if (e.key === "Enter" ||
383
+ e.key === " ") {
384
+ e.preventDefault();
385
+ this.toggleOverflowMenu();
386
+ }
387
+ }, "aria-expanded": this.showOverflowMenu, "aria-haspopup": "true", "aria-label": `${((_a = this.selectedMobileItem) === null || _a === void 0 ? void 0 : _a.label) || "Select Section"} - Choose navigation section`, "tracker-id": "mobile-dropdown-button", ref: (el) => (this.overflowButton = el) }, index.h("span", { class: "mobile-selected-item" }, ((_b = this.selectedMobileItem) === null || _b === void 0 ? void 0 : _b.label) ||
388
+ "Select Section"), index.h("span", { class: `mobile-arrow ${this.showOverflowMenu ? "rotated" : ""}`, "aria-hidden": "true" }, index.h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "12", height: "8", viewBox: "0 0 12 8", fill: "none", "aria-hidden": "true" }, index.h("path", { d: "M1 1.5L5.94975 6.44975L10.8995 1.5", stroke: "#00890B", "stroke-width": "2", "stroke-linecap": "round" })))), this.showOverflowMenu && (index.h("ul", { class: "mobile-dropdown", role: "menu", "aria-label": "Navigation sections" }, this.mobileDropdownItems.map((item) => (index.h("li", { key: item.id }, index.h("a", { href: `#${item.id}`, class: `mobile-dropdown-item mf-listen ${this
389
+ .currentActive ===
390
+ item.id
391
+ ? "active"
392
+ : ""}`, role: "menuitem", "aria-current": this
393
+ .currentActive ===
394
+ item.id
395
+ ? "page"
396
+ : undefined, "tracker-id": item.trackerId ||
397
+ `mobile-nav-${item.id}`, title: item.title || "", onClick: (e) => {
398
+ this.handleNavClick(e, item.id);
399
+ this.showOverflowMenu = false;
400
+ } }, item.label)))))))) : (
401
+ // Desktop layout - original behavior
402
+ index.h("ul", { class: "desktop-menu" }, this.visibleItems.map((item) => (index.h("li", { key: item.id, class: "mf-listen", "tracker-id": item.trackerId || `nav-${item.id}` }, index.h("a", { href: `#${item.id}`, class: this.currentActive === item.id
403
+ ? "active"
404
+ : "", title: item.title || "", onClick: (e) => this.handleNavClick(e, item.id), "aria-current": this.currentActive === item.id
405
+ ? "page"
406
+ : undefined }, item.label)))), this.overflowItems.length > 0 && (index.h("li", { class: "overflow-menu-container mf-listen", "tracker-id": "overflow-menu" }, index.h("button", { class: `overflow-button ${this.hasActiveOverflowItem() ? "selected-active" : ""}`, onClick: this.toggleOverflowMenu, onKeyDown: (e) => {
407
+ if (e.key === "Enter" ||
408
+ e.key === " ") {
409
+ e.preventDefault();
410
+ this.toggleOverflowMenu();
411
+ }
412
+ }, "aria-expanded": this.showOverflowMenu, "aria-haspopup": "true", "aria-label": "Show more navigation items", "tracker-id": "overflow-button", ref: (el) => (this.overflowButton = el) }, index.h("span", { class: "overflow-dots", "aria-hidden": "true" }, index.h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", "aria-hidden": "true" }, index.h("circle", { cx: "1.25", cy: "5", r: "1.25", fill: "#617480" }), index.h("circle", { cx: "5", cy: "5", r: "1.25", fill: "#617480" }), index.h("circle", { cx: "8.75", cy: "5", r: "1.25", fill: "#617480" })))), this.showOverflowMenu && (index.h("div", { class: "overflow-dropdown", role: "menu", "aria-label": "Additional navigation sections" }, this.overflowItems.map((item) => (index.h("a", { key: item.id, href: `#${item.id}`, class: `mf-listen ${this
413
+ .currentActive ===
414
+ item.id
415
+ ? "active"
416
+ : ""}`, title: item.title || "", "tracker-id": item.trackerId ||
417
+ `overflow-link-${item.id}`, role: "menuitem", onClick: (e) => {
418
+ this.handleNavClick(e, item.id);
419
+ this.showOverflowMenu = false;
420
+ }, "aria-current": this
421
+ .currentActive ===
422
+ item.id
423
+ ? "page"
424
+ : undefined }, item.label)))))))))), hasRightContent && (index.h("div", { class: "subnav-menu-right" }, index.h("slot", { name: "subnav-menu-right" }))))));
425
+ }
426
+ get el() { return index.getElement(this); }
427
+ };
428
+ PtcSubnavV2.style = ptcSubnavV2Css;
429
+
430
+ exports.ptc_subnav_v2 = PtcSubnavV2;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-63ddc79c.js');
6
6
 
7
- const ptcTextCopyWithBackgroundCss = "h1,h2,h3,h4,h5,h6,p,ul,li,ptc-subnav,ptc-tab-list,ptc-link,ptc-square-card,.hyphenate-text,ptc-footer{word-break:break-word;hyphens:manual;-webkit-hyphens:manual;-moz-hyphens:manual;-ms-hyphens:manual}@supports (hyphenate-limit-chars: 12 3 3){h1,h2,h3,h4,h5,h6,p,ul,li,ptc-subnav,ptc-tab-list,ptc-link,ptc-square-card,.hyphenate-text,ptc-footer{hyphens:auto;-webkit-hyphenate-limit-before:3;-webkit-hyphenate-limit-after:3;hyphenate-limit-chars:12 3 3;hyphenate-limit-lines:2;hyphenate-limit-last:always;hyphenate-limit-zone:6%;-webkit-hyphens:auto;-webkit-hyphenate-limit-before:3;-webkit-hyphenate-limit-after:3;-webkit-hyphenate-limit-chars:12 3 3;-webkit-hyphenate-limit-lines:2;-moz-hyphens:auto;-moz-hyphenate-limit-chars:12 3 3;-moz-hyphenate-limit-lines:2;-ms-hyphens:auto;-ms-hyphenate-limit-chars:12 3 3;-ms-hyphenate-limit-lines:2}}:host{display:block;position:relative;width:100%;padding:var(--ptc-layout-spacing-05) var(--ptc-layout-spacing-01);color:var(--color-white)}@media only screen and (min-width: 768px){:host{padding:var(--ptc-layout-spacing-05) var(--ptc-layout-spacing-03)}}@media only screen and (min-width: 992px){:host{padding:var(--ptc-layout-spacing-06) 0}}@media only screen and (min-width: 1200px){:host{padding:var(--ptc-layout-spacing-06) var(--ptc-layout-spacing-03)}}:host .content-wrap{position:relative}:host .tcb-top-slit{fill:#f3f3f3;transform:scale(1.5, -1);position:absolute;top:-1px;right:80px;z-index:99;display:none}@media only screen and (min-width: 992px){:host .tcb-top-slit{display:block}}:host .bg-img-filter{-webkit-filter:url(#blur);filter:url(#blur);-webkit-mask:-webkit-gradient(linear, left top, right top, color-stop(30%, var(--color-black)), to(rgba(0, 0, 0, 0)));-webkit-mask:linear-gradient(90deg, var(--color-black) 30%, rgba(0, 0, 0, 0));-webkit-filter:blur(7px)}:host .copy-bg-image{top:0;left:0;height:100%;width:100%;position:absolute;-o-object-fit:cover;object-fit:cover}@media only screen and (min-width: 992px){:host .copy-bg-image{display:block}}:host .copy-bg-overlay-layer{position:absolute;top:0;left:0;height:100%;width:100%;background:var(--color-black);opacity:0.6}:host(.hero-footer-cta){padding:var(--ptc-layout-spacing-05) 0}@media only screen and (min-width: 768px){:host(.hero-footer-cta){padding:calc(var(--ptc-layout-spacing-06) + var(--ptc-layout-spacing-01)) 0}}:host(.hero-footer-cta) .copy-bg-overlay-layer{opacity:0.6}:host(.tab-cta-with-background){min-height:300px;padding:var(--ptc-layout-spacing-02)}:host(.tab-cta-with-background) .copy-bg-image{top:0;left:0;height:100%;width:100%;position:absolute;-o-object-fit:cover;object-fit:cover;display:none;border-radius:4px}@media only screen and (min-width: 992px){:host(.tab-cta-with-background){min-height:400px}:host(.tab-cta-with-background) .copy-bg-image{display:block}}@media only screen and (min-width: 992px){:host(.tab-cta-with-background){display:flex;align-items:center;padding:var(--ptc-element-spacing-09)}}:host(.tab-cta-with-background) .copy-bg-overlay-layer{background:initial;opacity:1;background-image:linear-gradient(180deg, #fff 30%, rgba(255, 255, 255, 0.9) 63%, rgba(176, 188, 194, 0) 95%)}@media only screen and (min-width: 992px){:host(.tab-cta-with-background) .copy-bg-overlay-layer{background-image:linear-gradient(90deg, rgba(255, 255, 255, 0.95) 43%, rgba(176, 188, 194, 0) 95%)}}:host(.bottom-right) .tcb-top-slit{top:auto;bottom:-1px;transform:scale(1.5, 1)}:host(.bottom-left) .tcb-top-slit{top:auto;bottom:-1px;transform:scale(1.5, 1) scaleX(-1);left:80px;right:auto}:host(.top-left) .tcb-top-slit{top:-1px;bottom:auto;transform:scale(1.5, 1) rotate(180deg);left:80px;right:auto}:host(.case-studies){min-height:25rem;height:auto;margin-bottom:10rem;display:flex;align-items:center}@media only screen and (min-width: 768px){:host(.case-studies){min-height:33.75rem;height:auto;margin-bottom:0;padding-top:var(--ptc-layout-spacing-06)}}:host(.case-studies) .card-wrap{position:relative;border:1px solid transparent;width:100%;height:100%;max-width:540px;bottom:-13rem}@media only screen and (min-width: 768px){:host(.case-studies) .card-wrap{bottom:auto}}:host(.case-studies) .card-wrap::after{position:absolute;width:0;height:1px;content:\"\";background:#fff;top:0px;left:0px;animation:widthAnimate 0.2s linear 0.2s 1 forwards}:host(.case-studies) .card-wrap::before{position:absolute;width:1px;height:0;content:\"\";background:#fff;top:0px;right:0px;animation:heightAnimate 0.2s linear 0.4s 1 forwards}:host(.case-studies) .card-wrap .card-animated-border{border:1px solid transparent;position:absolute;left:-1px;right:0;bottom:0px;top:-1px;width:100%;height:100%;box-shadow:var(--ptc-shadow-x-small)}:host(.case-studies) .card-wrap .card-animated-border::after{position:absolute;width:0;height:1px;content:\"\";background:#fff;bottom:0px;right:0px;animation:widthAnimate 0.2s linear 0.6s 1 forwards}:host(.case-studies) .card-wrap .card-animated-border::before{position:absolute;width:1px;height:0;content:\"\";background:#fff;bottom:0px;left:0px;animation:heightAnimate 0.2s linear 0.8s 1 forwards}:host(.case-studies) .card-wrap .card-content{opacity:0;animation:fadeIn 0.5s ease-in 0.9s 1 forwards;background-color:transparent;width:100%;height:100%}:host(.case-studies) .card-wrap .card-content .card-layout{padding:var(--ptc-layout-spacing-04);background-color:#fff}@keyframes widthAnimate{0%{width:0}100%{width:100%}}@keyframes heightAnimate{0%{height:0}100%{height:100%}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}:host(.case-studies) .content-wrap{width:100%}:host(.case-studies) .ptc-container{padding-right:24px;padding-left:24px;margin-right:auto;margin-left:auto}@media only screen and (min-width: 1200px){:host(.case-studies) .ptc-container{padding-left:0;padding-right:0;max-width:1136px}}@media only screen and (min-width: 1440px){:host(.case-studies) .ptc-container{padding-left:0;padding-right:0;max-width:1200px}}:host(.bg-image-absent){padding:0rem}";
7
+ const ptcTextCopyWithBackgroundCss = "h1,h2,h3,h4,h5,h6,p,ul,li,ptc-subnav,ptc-tab-list,ptc-link,ptc-square-card,.hyphenate-text,ptc-footer{word-break:break-word;hyphens:manual;-webkit-hyphens:manual;-moz-hyphens:manual;-ms-hyphens:manual}@supports (hyphenate-limit-chars: 12 3 3){h1,h2,h3,h4,h5,h6,p,ul,li,ptc-subnav,ptc-tab-list,ptc-link,ptc-square-card,.hyphenate-text,ptc-footer{hyphens:auto;-webkit-hyphenate-limit-before:3;-webkit-hyphenate-limit-after:3;hyphenate-limit-chars:12 3 3;hyphenate-limit-lines:2;hyphenate-limit-last:always;hyphenate-limit-zone:6%;-webkit-hyphens:auto;-webkit-hyphenate-limit-before:3;-webkit-hyphenate-limit-after:3;-webkit-hyphenate-limit-chars:12 3 3;-webkit-hyphenate-limit-lines:2;-moz-hyphens:auto;-moz-hyphenate-limit-chars:12 3 3;-moz-hyphenate-limit-lines:2;-ms-hyphens:auto;-ms-hyphenate-limit-chars:12 3 3;-ms-hyphenate-limit-lines:2}}:host{display:block;position:relative;width:100%;padding:var(--ptc-layout-spacing-05) var(--ptc-layout-spacing-01);color:var(--color-white)}@media only screen and (min-width: 768px){:host{padding:var(--ptc-layout-spacing-05) var(--ptc-layout-spacing-03)}}@media only screen and (min-width: 992px){:host{padding:var(--ptc-layout-spacing-06) 0}}@media only screen and (min-width: 1200px){:host{padding:var(--ptc-layout-spacing-06) var(--ptc-layout-spacing-03)}}:host .content-wrap{position:relative}:host .tcb-top-slit{fill:#f3f3f3;transform:scale(1.5, -1);position:absolute;top:-1px;right:80px;z-index:99;display:none}@media only screen and (min-width: 992px){:host .tcb-top-slit{display:block}}:host .bg-img-filter{-webkit-filter:url(#blur);filter:url(#blur);-webkit-mask:-webkit-gradient(linear, left top, right top, color-stop(30%, var(--color-black)), to(rgba(0, 0, 0, 0)));-webkit-mask:linear-gradient(90deg, var(--color-black) 30%, rgba(0, 0, 0, 0));-webkit-filter:blur(7px)}:host .copy-bg-image{top:0;left:0;height:100%;width:100%;position:absolute;-o-object-fit:cover;object-fit:cover}@media only screen and (min-width: 992px){:host .copy-bg-image{display:block}}:host .copy-bg-overlay-layer{position:absolute;top:0;left:0;height:100%;width:100%;background:var(--color-black);opacity:0.6}:host(.hero-footer-cta){padding:var(--ptc-layout-spacing-05) 0}@media only screen and (min-width: 768px){:host(.hero-footer-cta){padding:calc(var(--ptc-layout-spacing-06) + var(--ptc-layout-spacing-01)) 0}}:host(.hero-footer-cta) .copy-bg-overlay-layer{opacity:0.6}:host(.tab-cta-with-background){min-height:300px;padding:var(--ptc-layout-spacing-02)}:host(.tab-cta-with-background) .copy-bg-image{top:0;left:0;height:100%;width:100%;position:absolute;-o-object-fit:cover;object-fit:cover;display:none;border-radius:4px}@media only screen and (min-width: 992px){:host(.tab-cta-with-background){min-height:400px}:host(.tab-cta-with-background) .copy-bg-image{display:block}}@media only screen and (min-width: 992px){:host(.tab-cta-with-background){display:flex;align-items:center;padding:var(--ptc-element-spacing-09)}}:host(.tab-cta-with-background) .copy-bg-overlay-layer{background:initial;opacity:1;background-image:linear-gradient(180deg, #fff 30%, rgba(255, 255, 255, 0.9) 63%, rgba(176, 188, 194, 0) 95%)}@media only screen and (min-width: 992px){:host(.tab-cta-with-background) .copy-bg-overlay-layer{background-image:linear-gradient(90deg, rgba(255, 255, 255, 0.95) 43%, rgba(176, 188, 194, 0) 95%)}}:host(.bottom-right) .tcb-top-slit{top:auto;bottom:-1px;transform:scale(1.5, 1)}:host(.bottom-left) .tcb-top-slit{top:auto;bottom:-1px;transform:scale(1.5, 1) scaleX(-1);left:80px;right:auto}:host(.top-left) .tcb-top-slit{top:-1px;bottom:auto;transform:scale(1.5, 1) rotate(180deg);left:80px;right:auto}:host(.case-studies){min-height:25rem;height:auto;margin-bottom:10rem;display:flex;align-items:center}@media only screen and (min-width: 768px){:host(.case-studies){min-height:33.75rem;height:auto;margin-bottom:0;padding-top:var(--ptc-layout-spacing-06)}}:host(.case-studies) .card-wrap{position:relative;border:1px solid transparent;width:100%;height:100%;max-width:540px;bottom:-13rem}@media only screen and (min-width: 768px){:host(.case-studies) .card-wrap{bottom:auto}}:host(.case-studies) .card-wrap::after{position:absolute;width:0;height:1px;content:\"\";background:#fff;top:0px;left:0px;animation:widthAnimate 0.2s linear 0.2s 1 forwards}:host(.case-studies) .card-wrap::before{position:absolute;width:1px;height:0;content:\"\";background:#fff;top:0px;right:0px;animation:heightAnimate 0.2s linear 0.4s 1 forwards}:host(.case-studies) .card-wrap .card-animated-border{border:1px solid transparent;position:absolute;left:-1px;right:0;bottom:0px;top:-1px;width:100%;height:100%;box-shadow:var(--ptc-shadow-x-small)}:host(.case-studies) .card-wrap .card-animated-border::after{position:absolute;width:0;height:1px;content:\"\";background:#fff;bottom:0px;right:0px;animation:widthAnimate 0.2s linear 0.6s 1 forwards}:host(.case-studies) .card-wrap .card-animated-border::before{position:absolute;width:1px;height:0;content:\"\";background:#fff;bottom:0px;left:0px;animation:heightAnimate 0.2s linear 0.8s 1 forwards}:host(.case-studies) .card-wrap .card-content{opacity:0;animation:fadeIn 0.5s ease-in 0.9s 1 forwards;background-color:transparent;width:100%;height:100%}:host(.case-studies) .card-wrap .card-content .card-layout{padding:var(--ptc-layout-spacing-04);background-color:#fff}@keyframes widthAnimate{0%{width:0}100%{width:100%}}@keyframes heightAnimate{0%{height:0}100%{height:100%}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}:host(.case-studies) .content-wrap{width:100%}:host(.case-studies) .ptc-container{padding-right:24px;padding-left:24px;margin-right:auto;margin-left:auto}@media only screen and (min-width: 1200px){:host(.case-studies) .ptc-container{padding-left:0;padding-right:0;max-width:1136px}}@media only screen and (min-width: 1440px){:host(.case-studies) .ptc-container{padding-left:0;padding-right:0;max-width:1200px}}@media (prefers-reduced-motion: reduce){:host(.case-studies) .card-wrap::after{animation:none}:host(.case-studies) .card-wrap::before{animation:none}:host(.case-studies) .card-wrap .card-animated-border::before{animation:none}:host(.case-studies) .card-wrap .card-animated-border::after{animation:none}:host(.case-studies) .card-wrap .card-content{opacity:1;visibility:visible;animation:none}}:host(.bg-image-absent){padding:0rem}";
8
8
 
9
9
  const PtcTextCopyWithBackground = class {
10
10
  constructor(hostRef) {