@ptcwebops/ptcw-design 6.4.14-beta → 6.4.15-beta

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 (166) hide show
  1. package/dist/cjs/buying-option-cards-slider.cjs.entry.js +1 -1
  2. package/dist/cjs/event-podcast-slider-example.cjs.entry.js +1 -1
  3. package/dist/cjs/featured-events-slider-example.cjs.entry.js +1 -1
  4. package/dist/cjs/homepage-jumbotron.cjs.entry.js +1 -1
  5. package/dist/cjs/innovator-toggle-container.cjs.entry.js +1 -1
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/cjs/ptc-button.cjs.entry.js +117 -0
  8. package/dist/cjs/ptc-card-content.cjs.entry.js +1 -1
  9. package/dist/cjs/ptc-card_2.cjs.entry.js +1 -1
  10. package/dist/cjs/ptc-case-studies-slider.cjs.entry.js +1 -1
  11. package/dist/cjs/ptc-filter-dropdown_4.cjs.entry.js +1 -1
  12. package/dist/cjs/ptc-form-checkbox_4.cjs.entry.js +1 -1
  13. package/dist/cjs/ptc-homepage-video-background.cjs.entry.js +1 -1
  14. package/dist/cjs/ptc-icon-card-slider-example.cjs.entry.js +1 -1
  15. package/dist/cjs/ptc-icon-component.cjs.entry.js +1 -1
  16. package/dist/cjs/ptc-image-download-strip.cjs.entry.js +1 -1
  17. package/dist/cjs/ptc-nav-card.cjs.entry.js +1 -1
  18. package/dist/cjs/ptc-para.cjs.entry.js +139 -0
  19. package/dist/cjs/ptc-picture.cjs.entry.js +168 -0
  20. package/dist/cjs/ptc-spacer.cjs.entry.js +38 -0
  21. package/dist/cjs/ptc-subnav-v2.cjs.entry.js +91 -94
  22. package/dist/cjs/ptc-title.cjs.entry.js +161 -0
  23. package/dist/cjs/ptc-value-prop-card.cjs.entry.js +1 -1
  24. package/dist/cjs/ptc-white-paper.cjs.entry.js +1 -1
  25. package/dist/cjs/ptcw-design.cjs.js +1 -1
  26. package/dist/cjs/storefront-enhanced-product-list-alt-example.cjs.entry.js +1 -1
  27. package/dist/cjs/storefront-enhanced-product-list-example.cjs.entry.js +1 -1
  28. package/dist/collection/components/buying-option-cards-slider/buying-option-cards-slider.css +9 -0
  29. package/dist/collection/components/innovator-toggle-container/innovator-toggle-container.css +2 -4
  30. package/dist/collection/components/organism-bundles/event-podcast-slider-example/event-podcast-slider-example.css +16 -11
  31. package/dist/collection/components/organism-bundles/featured-events-slider-example/featured-events-slider-example.css +16 -11
  32. package/dist/collection/components/organism-bundles/homepage-jumbotron/homepage-jumbotron.css +16 -11
  33. package/dist/collection/components/organism-bundles/ptc-icon-card-slider-example/ptc-icon-card-slider-example.css +16 -11
  34. package/dist/collection/components/organism-bundles/storefront-enhanced-product-list-example/storefront-enhanced-product-list-example.css +16 -11
  35. package/dist/collection/components/ptc-card/ptc-card.css +1 -15
  36. package/dist/collection/components/ptc-card-content/ptc-card-content.css +21 -3
  37. package/dist/collection/components/ptc-card-content/ptc-card-content.js +2 -2
  38. package/dist/collection/components/ptc-case-studies-slider/ptc-case-studies-slider.css +16 -11
  39. package/dist/collection/components/ptc-filter-dropdown/ptc-filter-dropdown.css +0 -1
  40. package/dist/collection/components/ptc-homepage-video-background/ptc-homepage-video-background.css +1 -2
  41. package/dist/collection/components/ptc-icon-component/ptc-icon-component.css +16 -11
  42. package/dist/collection/components/ptc-image-download-strip/ptc-image-download-strip.css +1 -2
  43. package/dist/collection/components/ptc-nav-card/ptc-nav-card.css +2 -5
  44. package/dist/collection/components/ptc-seo-title/ptc-seo-title.js +3 -3
  45. package/dist/collection/components/ptc-subnav-v2/ptc-subnav-v2.css +94 -104
  46. package/dist/collection/components/ptc-subnav-v2/ptc-subnav-v2.js +90 -94
  47. package/dist/collection/components/ptc-textfield/ptc-textfield.css +1 -1
  48. package/dist/collection/components/ptc-value-prop-card/ptc-value-prop-card.css +1 -2
  49. package/dist/collection/components/ptc-white-paper/ptc-white-paper.css +1 -2
  50. package/dist/collection/stories/organisms/ptc/Subnav New/preview.stories.js +360 -0
  51. package/dist/custom-elements/index.js +109 -112
  52. package/dist/esm/blog-detail-content_2.entry.js +1 -1
  53. package/dist/esm/blog-detail-layout.entry.js +1 -1
  54. package/dist/esm/blogs-search-section.entry.js +1 -1
  55. package/dist/esm/buying-option-cards-slider.entry.js +1 -1
  56. package/dist/esm/event-podcast-slider-example.entry.js +1 -1
  57. package/dist/esm/featured-events-slider-example.entry.js +1 -1
  58. package/dist/esm/homepage-jumbotron.entry.js +2 -2
  59. package/dist/esm/homepage-toggled-content.entry.js +1 -1
  60. package/dist/esm/innovator-toggle-container.entry.js +2 -2
  61. package/dist/esm/{interfaces-7c0243be.js → interfaces-4caedd26.js} +1 -1
  62. package/dist/esm/loader.js +1 -1
  63. package/dist/esm/most-popular-news.entry.js +1 -1
  64. package/dist/esm/my-component.entry.js +1 -1
  65. package/dist/esm/ptc-accordion-item.entry.js +1 -1
  66. package/dist/esm/ptc-background-video.entry.js +1 -1
  67. package/dist/esm/ptc-button.entry.js +113 -0
  68. package/dist/esm/ptc-card-content.entry.js +1 -1
  69. package/dist/esm/ptc-card_2.entry.js +1 -1
  70. package/dist/esm/ptc-case-studies-slider.entry.js +1 -1
  71. package/dist/esm/ptc-collapse-list.entry.js +1 -1
  72. package/dist/esm/ptc-filter-dropdown_4.entry.js +1 -1
  73. package/dist/esm/ptc-form-checkbox_4.entry.js +2 -2
  74. package/dist/esm/ptc-homepage-image-feature.entry.js +1 -1
  75. package/dist/esm/ptc-homepage-video-background.entry.js +2 -2
  76. package/dist/esm/ptc-icon-card-slider-example.entry.js +1 -1
  77. package/dist/esm/ptc-icon-card.entry.js +1 -1
  78. package/dist/esm/ptc-icon-component.entry.js +1 -1
  79. package/dist/esm/ptc-image-download-strip.entry.js +1 -1
  80. package/dist/esm/ptc-img.entry.js +1 -1
  81. package/dist/esm/ptc-link.entry.js +1 -1
  82. package/dist/esm/ptc-media-card.entry.js +1 -1
  83. package/dist/esm/ptc-nav-card.entry.js +1 -1
  84. package/dist/esm/ptc-para.entry.js +135 -0
  85. package/dist/esm/ptc-picture.entry.js +164 -0
  86. package/dist/esm/ptc-pricing-packaging-table.entry.js +1 -1
  87. package/dist/esm/ptc-pricing-tabs.entry.js +1 -1
  88. package/dist/esm/ptc-social-icons-footer.entry.js +1 -1
  89. package/dist/esm/ptc-spacer.entry.js +34 -0
  90. package/dist/esm/ptc-subnav-v2.entry.js +91 -94
  91. package/dist/esm/ptc-title.entry.js +157 -0
  92. package/dist/esm/ptc-value-prop-card.entry.js +1 -1
  93. package/dist/esm/ptc-white-paper.entry.js +1 -1
  94. package/dist/esm/ptcw-design.js +1 -1
  95. package/dist/esm/storefront-enhanced-product-list-alt-example.entry.js +1 -1
  96. package/dist/esm/storefront-enhanced-product-list-example.entry.js +1 -1
  97. package/dist/esm/{utils-a64ba942.js → utils-bdd0cc16.js} +1 -1
  98. package/dist/ptcw-design/p-0c69ea52.entry.js +1 -0
  99. package/dist/ptcw-design/{p-ff66587b.entry.js → p-0fbdcd78.entry.js} +1 -1
  100. package/dist/ptcw-design/{p-9ca635fa.entry.js → p-13963d40.entry.js} +1 -1
  101. package/dist/ptcw-design/{p-df66407c.entry.js → p-187ef77b.entry.js} +1 -1
  102. package/dist/ptcw-design/{p-1c26f390.entry.js → p-1c63c812.entry.js} +1 -1
  103. package/dist/ptcw-design/{p-32bec5ef.entry.js → p-1d789cd7.entry.js} +1 -1
  104. package/dist/ptcw-design/{p-90f1a7af.entry.js → p-26b70120.entry.js} +1 -1
  105. package/dist/ptcw-design/{p-62e3cd51.entry.js → p-26e8ad2e.entry.js} +1 -1
  106. package/dist/ptcw-design/p-2cd2a8bd.entry.js +1 -0
  107. package/dist/ptcw-design/p-312c41b8.entry.js +1 -0
  108. package/dist/ptcw-design/{p-36a3eb03.entry.js → p-3b40bfbf.entry.js} +2 -2
  109. package/dist/ptcw-design/{p-92ad78c5.entry.js → p-3cb011c9.entry.js} +1 -1
  110. package/dist/ptcw-design/{p-c160bda4.entry.js → p-3cfe0126.entry.js} +1 -1
  111. package/dist/ptcw-design/p-3e4861a2.entry.js +1 -0
  112. package/dist/ptcw-design/p-4703e417.entry.js +1 -0
  113. package/dist/ptcw-design/p-4ab3249d.entry.js +1 -0
  114. package/dist/ptcw-design/{p-0df868d2.entry.js → p-4c89d63d.entry.js} +1 -1
  115. package/dist/ptcw-design/{p-2d00fefd.entry.js → p-502f534b.entry.js} +1 -1
  116. package/dist/ptcw-design/{p-1e32a493.entry.js → p-53dee19b.entry.js} +1 -1
  117. package/dist/ptcw-design/{p-f2675bb0.entry.js → p-5a2ed8fb.entry.js} +1 -1
  118. package/dist/ptcw-design/p-6a561487.entry.js +1 -0
  119. package/dist/ptcw-design/{p-1519b36f.entry.js → p-6f9f55b3.entry.js} +1 -1
  120. package/dist/ptcw-design/{p-ee1183b2.js → p-711bcdad.js} +1 -1
  121. package/dist/ptcw-design/p-7218fe2c.entry.js +1 -0
  122. package/dist/ptcw-design/p-761a31f8.entry.js +1 -0
  123. package/dist/ptcw-design/p-9027d2d9.entry.js +1 -0
  124. package/dist/ptcw-design/{p-456c5cbb.entry.js → p-9c6cad16.entry.js} +1 -1
  125. package/dist/ptcw-design/p-9da57f76.entry.js +1 -0
  126. package/dist/ptcw-design/{p-5ec17b43.entry.js → p-9efa8199.entry.js} +1 -1
  127. package/dist/ptcw-design/{p-9063956c.entry.js → p-9fca5392.entry.js} +1 -1
  128. package/dist/ptcw-design/{p-46b47ed7.entry.js → p-a4dd4e83.entry.js} +1 -1
  129. package/dist/ptcw-design/p-ac766cb3.entry.js +1 -0
  130. package/dist/ptcw-design/p-ad0e7843.entry.js +1 -0
  131. package/dist/ptcw-design/p-b0a16f1a.entry.js +1 -0
  132. package/dist/ptcw-design/{p-9fb21bdf.entry.js → p-bfadd78e.entry.js} +1 -1
  133. package/dist/ptcw-design/{p-5cf5b9f8.entry.js → p-c3b27836.entry.js} +1 -1
  134. package/dist/ptcw-design/{p-22cf00e7.js → p-c7e948b2.js} +1 -1
  135. package/dist/ptcw-design/p-cbbe2bba.entry.js +1 -0
  136. package/dist/ptcw-design/p-d6ee094b.entry.js +1 -0
  137. package/dist/ptcw-design/p-d9df1a16.entry.js +1 -0
  138. package/dist/ptcw-design/p-e3a6ed56.entry.js +1 -0
  139. package/dist/ptcw-design/{p-82f766d2.entry.js → p-e5e1e8fb.entry.js} +1 -1
  140. package/dist/ptcw-design/{p-3572eccc.entry.js → p-ef870202.entry.js} +1 -1
  141. package/dist/ptcw-design/{p-9ef2b1e7.entry.js → p-fb8584e4.entry.js} +1 -1
  142. package/dist/ptcw-design/ptcw-design.esm.js +1 -1
  143. package/dist/types/components/ptc-card-content/ptc-card-content.d.ts +1 -1
  144. package/dist/types/components/ptc-subnav-v2/ptc-subnav-v2.d.ts +20 -5
  145. package/dist/types/components.d.ts +66 -64
  146. package/package.json +101 -101
  147. package/readme.md +23 -23
  148. package/dist/cjs/ptc-button_5.cjs.entry.js +0 -597
  149. package/dist/collection/stories/organisms/ptc/Subanv New/preview.stories.js +0 -338
  150. package/dist/esm/ptc-button_5.entry.js +0 -589
  151. package/dist/ptcw-design/p-02622aa7.entry.js +0 -1
  152. package/dist/ptcw-design/p-086ab73a.entry.js +0 -1
  153. package/dist/ptcw-design/p-1f0daed2.entry.js +0 -1
  154. package/dist/ptcw-design/p-46c518c8.entry.js +0 -1
  155. package/dist/ptcw-design/p-50569afd.entry.js +0 -1
  156. package/dist/ptcw-design/p-53a96796.entry.js +0 -1
  157. package/dist/ptcw-design/p-60d001c8.entry.js +0 -1
  158. package/dist/ptcw-design/p-6ac4cfab.entry.js +0 -1
  159. package/dist/ptcw-design/p-6b9d075f.entry.js +0 -1
  160. package/dist/ptcw-design/p-7fe4d383.entry.js +0 -1
  161. package/dist/ptcw-design/p-bd3d71f1.entry.js +0 -1
  162. package/dist/ptcw-design/p-cc7d5eb7.entry.js +0 -1
  163. package/dist/ptcw-design/p-d391c01b.entry.js +0 -1
  164. package/dist/ptcw-design/p-e7c00e48.entry.js +0 -1
  165. package/dist/types/components/ptc-mobile-select/mobile-select/dist/mobile-select.d.ts +0 -209
  166. package/dist/types/utils/eloqua.d.ts +0 -9
@@ -58,6 +58,50 @@ ptc-footer {
58
58
  }
59
59
  }
60
60
 
61
+ :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 {
62
+ color: var(--color-gray-07);
63
+ text-decoration: none;
64
+ padding: 8px 12px;
65
+ font-size: var(--ptc-font-size-xx-small);
66
+ font-weight: var(--ptc-font-weight-bold);
67
+ line-height: var(--ptc-line-height-densest);
68
+ display: flex;
69
+ align-items: center;
70
+ position: relative;
71
+ border-bottom: 3px solid transparent;
72
+ height: 100%;
73
+ box-sizing: border-box;
74
+ }
75
+
76
+ :host .subnav-menu-left .overflow-menu-container .overflow-dropdown {
77
+ position: absolute;
78
+ top: 100%;
79
+ right: 0;
80
+ background: var(--color-white);
81
+ border-radius: var(--ptc-border-radius-standard);
82
+ box-shadow: var(--ptc-shadow-x-large);
83
+ min-width: 200px;
84
+ z-index: 1001;
85
+ padding: 14px 0;
86
+ margin-top: -4px;
87
+ max-width: 312px;
88
+ width: -moz-max-content;
89
+ width: max-content;
90
+ }
91
+
92
+ :host .mobile-dropdown-container .mobile-dropdown li .mobile-dropdown-item, :host .subnav-menu-left .overflow-menu-container .overflow-dropdown a {
93
+ display: block;
94
+ padding: 10px 32px 10px 24px;
95
+ color: var(--color-gray-07);
96
+ text-decoration: none;
97
+ font-size: var(--ptc-font-size-xx-small);
98
+ font-weight: var(--ptc-font-weight-bold);
99
+ line-height: var(--ptc-line-height-densest);
100
+ transition: all 0.2s ease;
101
+ position: relative;
102
+ border: none;
103
+ }
104
+
61
105
  :host {
62
106
  display: block;
63
107
  font-family: var(--ptc-font-latin);
@@ -85,22 +129,24 @@ ptc-footer {
85
129
  }
86
130
  @media only screen and (min-width: 1200px) {
87
131
  :host .subnav-container {
88
- padding-left: 0;
89
- padding-right: 0;
132
+ padding: 0;
90
133
  max-width: 1136px;
91
134
  }
92
135
  }
93
136
  @media only screen and (min-width: 1440px) {
94
137
  :host .subnav-container {
95
- padding-left: 0;
96
- padding-right: 0;
138
+ padding: 0;
97
139
  max-width: 1200px;
98
140
  }
99
141
  }
142
+ :host .subnav-container.full-width {
143
+ justify-content: flex-start;
144
+ }
100
145
  :host .subnav-menu-left {
101
146
  display: flex;
102
147
  align-items: center;
103
148
  flex: 1;
149
+ align-self: stretch;
104
150
  }
105
151
  @media only screen and (min-width: 768px) {
106
152
  :host .subnav-menu-left {
@@ -116,7 +162,7 @@ ptc-footer {
116
162
  justify-content: center;
117
163
  gap: 4px;
118
164
  flex-wrap: wrap;
119
- margin-bottom: -2px;
165
+ align-self: stretch;
120
166
  }
121
167
  @media only screen and (min-width: 768px) {
122
168
  :host .subnav-menu-left ul.desktop-menu {
@@ -126,21 +172,11 @@ ptc-footer {
126
172
  }
127
173
  :host .subnav-menu-left ul.desktop-menu li {
128
174
  display: inline-block;
129
- }
130
- :host .subnav-menu-left ul.desktop-menu li a {
131
- color: var(--color-gray-07);
132
- text-decoration: none;
133
- padding: 8px 12px;
134
- font-size: var(--ptc-font-size-xx-small);
135
- font-weight: var(--ptc-font-weight-bold);
136
- line-height: var(--ptc-line-height-densest);
137
- display: block;
138
- position: relative;
139
- border-bottom: 3px solid transparent;
175
+ height: 100%;
140
176
  }
141
177
  @media only screen and (min-width: 768px) {
142
178
  :host .subnav-menu-left ul.desktop-menu li a {
143
- padding: 20px 0 17px 0;
179
+ padding: 20px 0;
144
180
  }
145
181
  }
146
182
  :host .subnav-menu-left ul.desktop-menu li a:hover {
@@ -166,17 +202,10 @@ ptc-footer {
166
202
  :host .subnav-menu-left .overflow-menu-container .overflow-button {
167
203
  background: none;
168
204
  border: none;
169
- padding: 20px 0 17px 0;
170
- font-size: var(--ptc-font-size-xx-small);
171
- font-weight: var(--ptc-font-weight-bold);
172
- color: var(--color-gray-07);
205
+ padding: 20px 0;
173
206
  cursor: pointer;
174
- display: flex;
175
- align-items: center;
176
207
  justify-content: center;
177
208
  min-width: 32px;
178
- border-bottom: 3px solid transparent;
179
- transition: all 0.2s ease;
180
209
  }
181
210
  :host .subnav-menu-left .overflow-menu-container .overflow-button:hover {
182
211
  color: var(--color-gray-10);
@@ -218,33 +247,6 @@ ptc-footer {
218
247
  :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 {
219
248
  fill: var(--color-white);
220
249
  }
221
- :host .subnav-menu-left .overflow-menu-container .overflow-dropdown {
222
- position: absolute;
223
- top: 100%;
224
- right: 0;
225
- background: var(--color-white);
226
- border-radius: var(--ptc-border-radius-standard);
227
- box-shadow: var(--ptc-shadow-x-large);
228
- min-width: 200px;
229
- z-index: 1001;
230
- padding: 14px 0;
231
- margin-top: -4px;
232
- max-width: 312px;
233
- width: -moz-max-content;
234
- width: max-content;
235
- }
236
- :host .subnav-menu-left .overflow-menu-container .overflow-dropdown a {
237
- display: block;
238
- padding: 12px 32px 12px 24px;
239
- color: var(--color-gray-07);
240
- text-decoration: none;
241
- font-size: var(--ptc-font-size-xx-small);
242
- font-weight: var(--ptc-font-weight-bold);
243
- line-height: var(--ptc-line-height-densest);
244
- transition: all 0.2s ease;
245
- position: relative;
246
- border: none;
247
- }
248
250
  :host .subnav-menu-left .overflow-menu-container .overflow-dropdown a:hover {
249
251
  background-color: var(--color-gray-02);
250
252
  color: var(--color-gray-10);
@@ -257,7 +259,7 @@ ptc-footer {
257
259
  content: "";
258
260
  display: block;
259
261
  width: 2px;
260
- height: calc(100% - 0px);
262
+ height: 100%;
261
263
  background-color: var(--color-green-07);
262
264
  position: absolute;
263
265
  left: 16px;
@@ -267,46 +269,33 @@ ptc-footer {
267
269
  border-radius: var(--ptc-border-radius-standard);
268
270
  outline: 5px solid var(--keyboard-nav-outline);
269
271
  }
272
+ :host .subnav-menu-left.full-width {
273
+ flex: 1;
274
+ width: 100%;
275
+ justify-content: flex-start;
276
+ }
277
+ :host .subnav-menu-left.full-width .desktop-menu {
278
+ width: 100%;
279
+ }
270
280
  :host .mobile-dropdown-container {
271
281
  position: relative;
272
282
  display: block;
283
+ height: 100%;
284
+ box-sizing: border-box;
273
285
  }
274
286
  @media only screen and (min-width: 768px) {
275
287
  :host .mobile-dropdown-container {
276
288
  display: none !important;
277
289
  }
278
290
  }
279
- @media (min-width: 768px) {
280
- :host .mobile-dropdown-container {
281
- display: none !important;
282
- }
283
- }
284
291
  :host .mobile-dropdown-container .mobile-dropdown-button {
285
- display: flex;
286
- padding: 20px 0 17px 0;
292
+ background: transparent;
293
+ border: none;
294
+ border-bottom: 3px solid var(--color-green-07);
295
+ padding: 20px 0;
287
296
  justify-content: center;
288
- align-items: center;
289
297
  gap: 10px;
290
- align-self: stretch;
291
- border: none;
292
298
  cursor: pointer;
293
- transition: all 0.2s ease;
294
- background-color: transparent;
295
- border-bottom: 3px solid var(--color-green-07);
296
- }
297
- :host .mobile-dropdown-container .mobile-dropdown-button .mobile-selected-item {
298
- color: var(--color-gray-07);
299
- font-size: var(--ptc-font-size-xx-small);
300
- font-style: normal;
301
- font-weight: var(--ptc-font-weight-bold);
302
- line-height: var(--ptc-line-height-densest);
303
- display: -webkit-box;
304
- line-clamp: 1;
305
- -webkit-line-clamp: 1;
306
- -webkit-box-orient: vertical;
307
- overflow: hidden;
308
- text-overflow: ellipsis;
309
- max-width: 100%;
310
299
  }
311
300
  :host .mobile-dropdown-container .mobile-dropdown-button:hover {
312
301
  border-color: var(--color-gray-04);
@@ -323,6 +312,17 @@ ptc-footer {
323
312
  :host .mobile-dropdown-container .mobile-dropdown-button .mobile-selected-item {
324
313
  flex: 1;
325
314
  text-align: left;
315
+ color: var(--color-gray-07);
316
+ font-size: var(--ptc-font-size-xx-small);
317
+ font-weight: var(--ptc-font-weight-bold);
318
+ line-height: var(--ptc-line-height-densest);
319
+ display: -webkit-box;
320
+ line-clamp: 1;
321
+ -webkit-line-clamp: 1;
322
+ -webkit-box-orient: vertical;
323
+ overflow: hidden;
324
+ text-overflow: ellipsis;
325
+ max-width: 100%;
326
326
  }
327
327
  :host .mobile-dropdown-container .mobile-dropdown-button .mobile-arrow {
328
328
  display: flex;
@@ -339,25 +339,21 @@ ptc-footer {
339
339
  :host .mobile-dropdown-container .mobile-dropdown {
340
340
  position: absolute;
341
341
  top: calc(100% - 4px);
342
- left: auto;
343
- right: auto;
344
342
  background: var(--color-white);
345
343
  border: 1px solid var(--color-gray-02);
346
344
  border-radius: var(--ptc-border-radius-standard);
347
345
  box-shadow: var(--ptc-shadow-medium);
348
346
  z-index: 1001;
349
- margin-top: 4px;
347
+ margin: 4px 0 0 0;
350
348
  overflow-y: auto;
351
349
  min-width: 280px;
352
350
  width: -moz-fit-content;
353
351
  width: fit-content;
354
352
  list-style: none;
355
- padding: 0;
356
- margin: 4px 0 0 0;
353
+ padding: 14px 0;
357
354
  }
358
355
  :host .mobile-dropdown-container .mobile-dropdown li {
359
356
  display: block;
360
- border-bottom: 1px solid var(--color-gray-01);
361
357
  }
362
358
  :host .mobile-dropdown-container .mobile-dropdown li:last-child {
363
359
  border-bottom: none;
@@ -365,42 +361,36 @@ ptc-footer {
365
361
  :host .mobile-dropdown-container .mobile-dropdown li .mobile-dropdown-item {
366
362
  width: 100%;
367
363
  background: none;
368
- border: none;
369
- padding: 12px 16px;
370
- color: var(--color-gray-07);
371
- text-decoration: none;
372
- font-size: var(--ptc-font-size-xx-small);
373
- font-weight: var(--ptc-font-weight-bold);
374
- line-height: var(--ptc-line-height-densest);
375
364
  text-align: left;
376
365
  cursor: pointer;
377
- transition: all 0.2s ease;
378
366
  word-break: break-word;
379
367
  display: block;
380
368
  }
381
- :host .mobile-dropdown-container .mobile-dropdown li .mobile-dropdown-item:hover {
382
- background-color: var(--color-gray-01);
383
- color: var(--color-gray-10);
384
- }
385
369
  :host .mobile-dropdown-container .mobile-dropdown li .mobile-dropdown-item.active {
386
- background-color: var(--color-gray-01);
387
370
  color: var(--color-gray-10);
388
- border-left: 3px solid var(--color-green-07);
371
+ }
372
+ :host .mobile-dropdown-container .mobile-dropdown li .mobile-dropdown-item.active::before {
373
+ content: "";
374
+ display: block;
375
+ width: 2px;
376
+ height: 100%;
377
+ background-color: var(--color-green-07);
378
+ position: absolute;
379
+ left: 16px;
380
+ top: 0;
389
381
  }
390
382
  :host .mobile-dropdown-container .mobile-dropdown li .mobile-dropdown-item:focus-visible {
391
383
  border-radius: var(--ptc-border-radius-standard);
392
384
  outline: 5px solid var(--keyboard-nav-outline);
393
385
  }
394
386
  :host .subnav-menu-right {
395
- max-width: 300px;
387
+ max-width: 50%;
396
388
  padding: 12px 0;
397
389
  }
398
390
  @media only screen and (min-width: 768px) {
399
391
  :host .subnav-menu-right {
400
392
  margin-left: 48px;
401
393
  width: auto;
394
+ max-width: 300px;
402
395
  }
403
- }
404
- :host .subnav-menu-right ptc-button {
405
- max-width: 300px;
406
396
  }
@@ -1,20 +1,17 @@
1
1
  import { Host, h } from "@stencil/core";
2
2
  export class PtcSubnavV2 {
3
3
  constructor() {
4
+ this.cachedNavItems = null;
4
5
  this.handleClickOutside = (event) => {
5
- const target = event.target;
6
- if (!this.el.contains(target)) {
6
+ if (!this.el.contains(event.target)) {
7
7
  this.showOverflowMenu = false;
8
8
  }
9
9
  };
10
10
  this.handleKeyDown = (event) => {
11
- // Handle Escape key to close dropdowns
11
+ var _a;
12
12
  if (event.key === "Escape" && this.showOverflowMenu) {
13
13
  this.showOverflowMenu = false;
14
- // Return focus to the button that opened the menu
15
- if (this.overflowButton) {
16
- this.overflowButton.focus();
17
- }
14
+ (_a = this.overflowButton) === null || _a === void 0 ? void 0 : _a.focus();
18
15
  }
19
16
  };
20
17
  this.handleScroll = () => {
@@ -56,12 +53,7 @@ export class PtcSubnavV2 {
56
53
  }, 16); // ~60fps throttling
57
54
  };
58
55
  this.handleResize = () => {
59
- if (this.navContainer) {
60
- // Add a small delay to ensure DOM has been updated
61
- setTimeout(() => {
62
- this.calculateVisibleItems();
63
- }, 10);
64
- }
56
+ this.navContainer && setTimeout(() => this.calculateVisibleItems(), 10);
65
57
  };
66
58
  this.setupIntersectionObserver = () => {
67
59
  // Get all sections that correspond to our navigation items
@@ -121,72 +113,54 @@ export class PtcSubnavV2 {
121
113
  });
122
114
  };
123
115
  this.extractNavItemsFromSlots = () => {
124
- // Look for slot content with nav-items in the light DOM
125
116
  const slotElement = this.el.querySelector('[slot="nav-items"]');
126
- if (slotElement) {
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") || "",
135
- trackerId: link.getAttribute("tracker-id") || "",
136
- });
137
- })
138
- .filter((item) => item.id && item.label);
139
- if (items.length > 0) {
140
- return items;
141
- }
142
- }
143
- return null;
117
+ if (!slotElement)
118
+ return null;
119
+ const links = slotElement.querySelectorAll("a");
120
+ const items = Array.from(links)
121
+ .map((link) => {
122
+ var _a, _b;
123
+ return ({
124
+ id: ((_a = link.getAttribute("href")) === null || _a === void 0 ? void 0 : _a.substring(1)) || "",
125
+ label: ((_b = link.textContent) === null || _b === void 0 ? void 0 : _b.trim()) || "",
126
+ title: link.getAttribute("title") || undefined,
127
+ trackerId: link.getAttribute("tracker-id") || undefined,
128
+ });
129
+ })
130
+ .filter((item) => Boolean(item.id && item.label));
131
+ return items.length > 0 ? items : null;
144
132
  };
145
133
  this.getNavItems = () => {
134
+ // Return cached items if available
135
+ if (this.cachedNavItems) {
136
+ return this.cachedNavItems;
137
+ }
146
138
  // Extract navigation items from slots (SEO-friendly approach)
147
139
  const slotItems = this.extractNavItemsFromSlots();
148
140
  if (slotItems) {
141
+ this.cachedNavItems = slotItems;
149
142
  return slotItems;
150
143
  }
151
144
  // If navItems prop is provided, parse and use it (fallback)
152
- if (this.navItems && this.navItems.trim()) {
153
- try {
154
- const parsedItems = JSON.parse(this.navItems);
155
- // Validate that it's an array with proper structure
156
- if (Array.isArray(parsedItems) && parsedItems.length > 0) {
157
- // Ensure each item has required properties
158
- const validItems = parsedItems.filter((item) => item &&
159
- typeof item.id === "string" &&
160
- typeof item.label === "string");
161
- if (validItems.length > 0) {
162
- return validItems;
163
- }
164
- }
165
- }
166
- catch (error) {
167
- console.warn("Invalid navItems JSON provided to ptc-subnav-v2:", error);
168
- }
145
+ const propItems = this.parsePropNavItems();
146
+ if (propItems) {
147
+ this.cachedNavItems = propItems;
148
+ return propItems;
169
149
  }
170
150
  // Return empty array if no navigation items found
171
151
  console.warn("No navigation items found in slots or props for ptc-subnav-v2");
172
152
  return [];
173
153
  };
174
154
  this.calculateMobileDropdownItems = () => {
175
- const navItems = this.getNavItems();
176
- // Handle case where no navigation items are found
177
- if (navItems.length === 0) {
178
- this.mobileDropdownItems = [];
179
- return;
180
- }
181
- const currentItem = this.selectedMobileItem || {
182
- id: this.currentActive,
183
- };
184
- // Filter out the currently selected item from all nav items
185
- this.mobileDropdownItems = navItems.filter((item) => item.id !== currentItem.id);
155
+ this.mobileDropdownItems = this.getNavItems();
186
156
  };
187
157
  this.hasActiveOverflowItem = () => {
188
158
  return this.overflowItems.some((item) => item.id === this.currentActive);
189
159
  };
160
+ this.hasSubnavMenuRightContent = () => {
161
+ const slotElement = this.el.querySelector('[slot="subnav-menu-right"]');
162
+ return Boolean(slotElement === null || slotElement === void 0 ? void 0 : slotElement.children.length);
163
+ };
190
164
  this.calculateVisibleItems = () => {
191
165
  const navItems = this.getNavItems();
192
166
  // Handle case where no navigation items are found
@@ -235,7 +209,7 @@ export class PtcSubnavV2 {
235
209
  tempContainer.style.whiteSpace = "nowrap";
236
210
  tempContainer.style.fontSize = "14px";
237
211
  tempContainer.style.fontWeight = "700";
238
- tempContainer.style.padding = "20px 0 17px 0";
212
+ tempContainer.style.padding = "20px 0 20px 0";
239
213
  document.body.appendChild(tempContainer);
240
214
  for (let i = 0; i < navItems.length; i++) {
241
215
  const item = navItems[i];
@@ -303,7 +277,6 @@ export class PtcSubnavV2 {
303
277
  this.visibleItems = [];
304
278
  this.overflowItems = [];
305
279
  this.showOverflowMenu = false;
306
- this.containerWidth = 0;
307
280
  this.isMobile = false;
308
281
  this.selectedMobileItem = null;
309
282
  this.isManualNavigation = false;
@@ -311,67 +284,91 @@ export class PtcSubnavV2 {
311
284
  }
312
285
  componentWillLoad() {
313
286
  this.currentActive = this.activeSection;
314
- // Initialize selected mobile item with the current active section
315
- const navItems = this.getNavItems();
316
- if (navItems.length > 0) {
317
- this.selectedMobileItem =
318
- navItems.find((item) => item.id === this.activeSection) ||
319
- navItems[0];
320
- }
321
- else {
322
- this.selectedMobileItem = null;
323
- }
287
+ this.initializeMobileItem();
324
288
  this.calculateMobileDropdownItems();
325
289
  }
290
+ initializeMobileItem() {
291
+ const navItems = this.getNavItems();
292
+ this.selectedMobileItem =
293
+ navItems.length > 0
294
+ ? navItems.find((item) => item.id === this.activeSection) ||
295
+ navItems[0]
296
+ : null;
297
+ }
326
298
  componentDidLoad() {
327
- // Bind the functions once
299
+ this.bindEventHandlers();
300
+ this.calculateMobileDropdownItems();
301
+ this.handleResize();
302
+ this.addEventListeners();
303
+ this.setupIntersectionObserver();
304
+ }
305
+ bindEventHandlers() {
328
306
  this.boundHandleResize = this.handleResize.bind(this);
329
307
  this.boundHandleClickOutside = this.handleClickOutside.bind(this);
330
308
  this.boundHandleScroll = this.handleScroll.bind(this);
331
309
  this.boundHandleKeyDown = this.handleKeyDown.bind(this);
332
- // Recalculate navigation items in case slots are used
333
- this.calculateMobileDropdownItems();
334
- this.handleResize();
310
+ }
311
+ addEventListeners() {
335
312
  window.addEventListener("resize", this.boundHandleResize);
336
313
  document.addEventListener("click", this.boundHandleClickOutside);
337
314
  document.addEventListener("keydown", this.boundHandleKeyDown);
338
- // Setup intersection observer for scroll-based active state
339
- this.setupIntersectionObserver();
340
- // Add scroll listener as fallback
341
315
  window.addEventListener("scroll", this.boundHandleScroll, {
342
316
  passive: true,
343
317
  });
344
318
  }
345
319
  disconnectedCallback() {
320
+ this.removeEventListeners();
321
+ this.cleanupTimeouts();
322
+ this.cleanupIntersectionObserver();
323
+ }
324
+ removeEventListeners() {
346
325
  window.removeEventListener("resize", this.boundHandleResize);
347
326
  document.removeEventListener("click", this.boundHandleClickOutside);
348
327
  document.removeEventListener("keydown", this.boundHandleKeyDown);
349
328
  window.removeEventListener("scroll", this.boundHandleScroll);
350
- // Clean up intersection observer
329
+ }
330
+ cleanupTimeouts() {
331
+ [
332
+ this.scrollTimeout,
333
+ this.scrollThrottleTimeout,
334
+ this.manualNavigationTimeout,
335
+ ]
336
+ .filter(Boolean)
337
+ .forEach((timeout) => clearTimeout(timeout));
338
+ }
339
+ cleanupIntersectionObserver() {
351
340
  if (this.intersectionObserver) {
352
341
  this.intersectionObserver.disconnect();
353
342
  }
354
- // Clean up scroll timeout
355
- if (this.scrollTimeout) {
356
- clearTimeout(this.scrollTimeout);
357
- }
358
- // Clean up scroll throttle timeout
359
- if (this.scrollThrottleTimeout) {
360
- clearTimeout(this.scrollThrottleTimeout);
343
+ }
344
+ parsePropNavItems() {
345
+ var _a;
346
+ if (!((_a = this.navItems) === null || _a === void 0 ? void 0 : _a.trim()))
347
+ return null;
348
+ try {
349
+ const parsedItems = JSON.parse(this.navItems);
350
+ if (Array.isArray(parsedItems) && parsedItems.length > 0) {
351
+ const validItems = parsedItems.filter((item) => Boolean(item &&
352
+ typeof item.id === "string" &&
353
+ typeof item.label === "string"));
354
+ return validItems.length > 0 ? validItems : null;
355
+ }
361
356
  }
362
- // Clean up manual navigation timeout
363
- if (this.manualNavigationTimeout) {
364
- clearTimeout(this.manualNavigationTimeout);
357
+ catch (error) {
358
+ console.warn("Invalid navItems JSON provided to ptc-subnav-v2:", error);
365
359
  }
360
+ return null;
366
361
  }
367
362
  render() {
368
363
  var _a, _b;
369
364
  const navItems = this.getNavItems();
370
365
  // If no navigation items, don't render the navigation
371
366
  if (navItems.length === 0) {
372
- return (h(Host, null, h("div", { class: "subnav-container" }, h("div", { class: "subnav-menu-right" }, h("slot", { name: "subnav-menu-right" })))));
367
+ const hasRightContent = this.hasSubnavMenuRightContent();
368
+ return (h(Host, null, h("div", { class: `subnav-container ${!hasRightContent ? "full-width" : ""}` }, hasRightContent && (h("div", { class: "subnav-menu-right" }, h("slot", { name: "subnav-menu-right" }))))));
373
369
  }
374
- return (h(Host, null, h("div", { class: "subnav-container" }, h("nav", { class: "subnav-menu-left", role: "navigation", "aria-label": "Sub navigation", ref: (el) => (this.navContainer = el) }, this.isMobile ? (
370
+ const hasRightContent = this.hasSubnavMenuRightContent();
371
+ return (h(Host, null, h("div", { class: `subnav-container ${!hasRightContent ? "full-width" : ""}` }, h("nav", { class: `subnav-menu-left ${!hasRightContent ? "full-width" : ""}`, role: "navigation", "aria-label": "Sub navigation", ref: (el) => (this.navContainer = el) }, this.isMobile ? (
375
372
  // Mobile layout - dropdown with arrows
376
373
  h("div", { class: "mobile-dropdown-container" }, h("button", { class: "mobile-dropdown-button", onClick: this.toggleOverflowMenu, onKeyDown: (e) => {
377
374
  if (e.key === "Enter" ||
@@ -416,7 +413,7 @@ export class PtcSubnavV2 {
416
413
  .currentActive ===
417
414
  item.id
418
415
  ? "page"
419
- : undefined }, item.label)))))))))), h("div", { class: "subnav-menu-right" }, h("slot", { name: "subnav-menu-right" })))));
416
+ : undefined }, item.label)))))))))), hasRightContent && (h("div", { class: "subnav-menu-right" }, h("slot", { name: "subnav-menu-right" }))))));
420
417
  }
421
418
  static get is() { return "ptc-subnav-v2"; }
422
419
  static get encapsulation() { return "shadow"; }
@@ -476,7 +473,6 @@ export class PtcSubnavV2 {
476
473
  "visibleItems": {},
477
474
  "overflowItems": {},
478
475
  "showOverflowMenu": {},
479
- "containerWidth": {},
480
476
  "isMobile": {},
481
477
  "selectedMobileItem": {},
482
478
  "isManualNavigation": {},
@@ -3743,7 +3743,7 @@ ptc-footer {
3743
3743
  .ptc-text-field .iti__flag {
3744
3744
  background-image: url("https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/18.2.1/img/flags.png");
3745
3745
  }
3746
- @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
3746
+ @media (min-resolution: 192dpi) {
3747
3747
  .ptc-text-field .iti__flag {
3748
3748
  background-image: url("https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/18.2.1/img/flags@2x.png");
3749
3749
  }
@@ -107,8 +107,7 @@ ptc-footer {
107
107
  border-radius: var(--ptc-border-radius-large);
108
108
  border: 1px solid var(--color-white);
109
109
  background-color: rgba(0, 0, 0, 0.6);
110
- -webkit-backdrop-filter: blur(2px);
111
- backdrop-filter: blur(2px);
110
+ backdrop-filter: blur(2px);
112
111
  color: var(--color-white);
113
112
  z-index: 10;
114
113
  display: flex;
@@ -6113,8 +6113,7 @@ blockquote p {
6113
6113
  z-index: 900;
6114
6114
  transition: all 0.1s ease 0s;
6115
6115
  background-color: var(--color-standard-white);
6116
- -webkit-backdrop-filter: blur(22px);
6117
- backdrop-filter: blur(22px);
6116
+ backdrop-filter: blur(22px);
6118
6117
  background-image: linear-gradient(93deg, #f4f4f4, #fff 100%);
6119
6118
  box-shadow: 1px 1px 15px 0 rgba(0, 0, 0, 0.16);
6120
6119
  }