@salesforcedevs/dx-components 1.28.0 → 1.28.1-banner-1

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 (32) hide show
  1. package/lwc.config.json +5 -1
  2. package/package.json +2 -2
  3. package/src/modules/dx/alert/alert.css +0 -1
  4. package/src/modules/dx/codeBlock/codeBlock.ts +6 -6
  5. package/src/modules/dx/emptyState/emptyState.html +1 -1
  6. package/src/modules/dx/emptyState/emptyState.ts +2 -2
  7. package/src/modules/dx/error/error.css +3 -3
  8. package/src/modules/dx/errorFallback/errorFallback.html +1 -1
  9. package/src/modules/dx/feature/feature.css +2 -2
  10. package/src/modules/dx/feature/feature.html +1 -1
  11. package/src/modules/dx/featuredContentHeader/featuredContentHeader.css +5 -5
  12. package/src/modules/dx/featuredContentHeader/svgs.ts +2 -2
  13. package/src/modules/dx/footer/footer.css +176 -4
  14. package/src/modules/dx/footer/footer.html +91 -3
  15. package/src/modules/dx/footer/footer.ts +276 -1
  16. package/src/modules/dx/footerMfe/footerMfe.ts +2 -0
  17. package/src/modules/dx/input/input.ts +1 -1
  18. package/src/modules/dx/logo/logo.ts +1 -1
  19. package/src/modules/dx/searchResults/resultsTemplate.js +1 -1
  20. package/src/modules/dx/searchResults/searchResults.css +4 -4
  21. package/src/modules/dx/sectionBanner/sectionBanner.html +1 -1
  22. package/src/modules/dx/sidebar/sidebar.html +1 -1
  23. package/src/modules/dx/toc/toc.css +21 -0
  24. package/src/modules/dx/toc/toc.ts +2 -0
  25. package/src/modules/dx/treeItem/treeItem.html +1 -1
  26. package/src/modules/dxUtils/shiki/__mocks__/shiki.ts +2 -1
  27. package/src/modules/dxUtils/shiki/__mocks__/shikijs.ts +6 -0
  28. package/src/modules/dxUtils/shiki/shiki.ts +26 -176
  29. package/src/modules/dxUtils/shikiCore/shikiCore.ts +188 -0
  30. package/src/modules/dxUtils/shikiGrammars/shikiGrammars.ts +151 -41
  31. package/src/modules/dxUtils/shikiStatic/shikiStatic.html +3 -0
  32. package/src/modules/dxUtils/shikiStatic/shikiStatic.ts +46 -0
package/lwc.config.json CHANGED
@@ -56,6 +56,7 @@
56
56
  "dx/featuresListHeader",
57
57
  "dx/filterMenu",
58
58
  "dx/footer",
59
+ "dx/footerMfe",
59
60
  "dx/formattedDateTime",
60
61
  "dx/formattedRichText",
61
62
  "dx/grid",
@@ -139,6 +140,9 @@
139
140
  "dxUtils/recentSearches",
140
141
  "dxUtils/regexps",
141
142
  "dxUtils/withTypedRefs",
142
- "dxUtils/wordpress"
143
+ "dxUtils/wordpress",
144
+ "dxUtils/shiki",
145
+ "dxUtils/shikiStatic",
146
+ "dxUtils/shikiCore"
143
147
  ]
144
148
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforcedevs/dx-components",
3
- "version": "1.28.0",
3
+ "version": "1.28.1-banner-1",
4
4
  "description": "DX Lightning web components",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -44,5 +44,5 @@
44
44
  "luxon": "3.4.4",
45
45
  "msw": "^2.12.4"
46
46
  },
47
- "gitHead": "1debd8003256f4071bfd65dffa1f1e5e1acf735d"
47
+ "gitHead": "66d2158d53e1ed5e503f558021b0e1e0b0206d52"
48
48
  }
@@ -4,7 +4,6 @@
4
4
  :host {
5
5
  --dx-c-alert-top: 0;
6
6
  --dx-c-alert-container-align-items: flex-start;
7
- --dx-c-alert-horizontal-padding: var(--dx-g-spacing-lg);
8
7
  --dx-c-alert-vertical-padding: var(--dx-g-spacing-md);
9
8
  --dx-c-alert-success-color: var(--dx-g-green-vibrant-95);
10
9
  --dx-c-alert-warning-color: rgb(254 243 217);
@@ -34,6 +34,7 @@ export default class CodeBlock extends LightningElement {
34
34
  private _codeBlockRendered: boolean = false;
35
35
  private _showLoadingIndicator: boolean = false;
36
36
  private _isCbHeightCalculated: boolean = false;
37
+ private _plainCodeForCopy: string = "";
37
38
  private markupLangs = ["visualforce", "html", "xml"];
38
39
  private componentLoaded: boolean = false;
39
40
  private showLanguageDropdown: boolean = false;
@@ -290,6 +291,9 @@ export default class CodeBlock extends LightningElement {
290
291
  );
291
292
  }
292
293
  }
294
+ // Get the plain code for copy functionality
295
+ const codeElement = this.template.querySelector("code");
296
+ this._plainCodeForCopy = codeElement?.textContent?.trim() ?? "";
293
297
  // Add line numbers to each line
294
298
  this.addLineNumbers();
295
299
  }
@@ -328,12 +332,8 @@ export default class CodeBlock extends LightningElement {
328
332
  });
329
333
 
330
334
  try {
331
- const snippetContainer: HTMLElement | null =
332
- this.template.querySelector(".code-block-content");
333
- if (snippetContainer && snippetContainer.textContent) {
334
- await navigator.clipboard.writeText(
335
- snippetContainer.textContent
336
- );
335
+ if (this._plainCodeForCopy) {
336
+ await navigator.clipboard.writeText(this._plainCodeForCopy);
337
337
  this.copyBtnText = "Copied!";
338
338
  setTimeout(() => {
339
339
  this.copyBtnText = "Click to copy";
@@ -3,7 +3,7 @@
3
3
  <img class={imageClassName} src={imageAssetPath} alt={imageAlt} />
4
4
  <img
5
5
  class="image-alt-small"
6
- src="https://a.sfdcstatic.com/developer-website/prod/images/binary-cloud-circle-small.svg"
6
+ src="https://developer.salesforce.com/ns-assets/binary-cloud-circle-small.svg"
7
7
  alt="Cloud with binary code floating above"
8
8
  lwc:if={altVariant}
9
9
  />
@@ -60,10 +60,10 @@ export default class EmptyState extends LightningElement {
60
60
 
61
61
  get imageAssetPath() {
62
62
  return this.variant === "base"
63
- ? `https://a.sfdcstatic.com/developer-website/prod/images/docs-empty-state${
63
+ ? `https://developer.salesforce.com/ns-assets/docs-empty-state${
64
64
  this.size === "small" ? "-small" : ""
65
65
  }.svg`
66
- : `https://a.sfdcstatic.com/developer-website/prod/images/binary-cloud-circle${
66
+ : `https://developer.salesforce.com/ns-assets/binary-cloud-circle${
67
67
  this.size === "small" ? "-small" : ""
68
68
  }.svg`;
69
69
  }
@@ -8,9 +8,9 @@
8
8
 
9
9
  .error_container {
10
10
  background-color: #3a49da;
11
- background-image: url("https://a.sfdcstatic.com/developer-website/prod/images/bottom-right.svg"),
12
- url("https://a.sfdcstatic.com/developer-website/prod/images/lower-left.svg"),
13
- url("https://a.sfdcstatic.com/developer-website/prod/images/top-right.svg");
11
+ background-image: url("https://developer.salesforce.com/ns-assets/bottom-right.svg"),
12
+ url("https://developer.salesforce.com/ns-assets/lower-left.svg"),
13
+ url("https://developer.salesforce.com/ns-assets/top-right.svg");
14
14
  background-position: right bottom, left 90%, right top;
15
15
  background-repeat: no-repeat;
16
16
  padding: var(--dx-g-spacing-3xl) calc(var(--dx-g-spacing-3xl) + 20px) 130px
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div class="error-container">
3
3
  <img
4
- src="https://a.sfdcstatic.com/developer-website/prod/images/error-fallback.svg"
4
+ src="https://developer.salesforce.com/ns-assets/error-fallback.svg"
5
5
  alt="error fallback image"
6
6
  class="error-image"
7
7
  />
@@ -3,7 +3,7 @@
3
3
 
4
4
  :host {
5
5
  --dx-c-feature-img-box-shadow: 0 6px 30px 0 rgb(0 20 45 / 40%);
6
- --dx-c-feature-description-left-img-src: url("https://a.sfdcstatic.com/developer-website/prod/images/feature-backdrop1.svg");
6
+ --dx-c-feature-description-left-img-src: url("https://developer.salesforce.com/ns-assets/feature-backdrop1.svg");
7
7
  --dx-c-feature-description-max-width: 31.75rem;
8
8
  --dx-c-feature-img-margin-left: auto;
9
9
  --dx-c-feature-img-container-padding: 4rem;
@@ -83,7 +83,7 @@ section {
83
83
 
84
84
  .description-right .image {
85
85
  margin-right: auto;
86
- background-image: url("https://a.sfdcstatic.com/developer-website/prod/images/feature-backdrop2.svg");
86
+ background-image: url("https://developer.salesforce.com/ns-assets/feature-backdrop2.svg");
87
87
  }
88
88
 
89
89
  .image-display-container {
@@ -21,7 +21,7 @@
21
21
  <div if:true={isDisplay} class="image-display-container">
22
22
  <img
23
23
  class="image-display"
24
- src="https://a.sfdcstatic.com/developer-website/prod/images/featured-demo-art-blank.svg"
24
+ src="https://developer.salesforce.com/ns-assets/featured-demo-art-blank.svg"
25
25
  alt={header}
26
26
  />
27
27
  <div class="image-container">
@@ -221,8 +221,8 @@
221
221
 
222
222
  .custom-bg-trial::after {
223
223
  content: "";
224
- background-image: url("https://a.sfdcstatic.com/developer-website/prod/images/trial-left.svg"),
225
- url("https://a.sfdcstatic.com/developer-website/prod/images/trial-right.svg");
224
+ background-image: url("https://developer.salesforce.com/ns-assets/trial-left.svg"),
225
+ url("https://developer.salesforce.com/ns-assets/trial-right.svg");
226
226
  background-position: var(--dx-g-page-padding-horizontal) 50px,
227
227
  right 15px top;
228
228
  background-repeat: no-repeat;
@@ -235,7 +235,7 @@
235
235
 
236
236
  @media screen and (max-width: 1024px) {
237
237
  .custom-bg-trial::after {
238
- background-image: url("https://a.sfdcstatic.com/developer-website/prod/images/trial-left.svg");
238
+ background-image: url("https://developer.salesforce.com/ns-assets/trial-left.svg");
239
239
  background-position: 48px 30px;
240
240
  background-size: contain;
241
241
  }
@@ -243,7 +243,7 @@
243
243
 
244
244
  .custom-bg-big-moon::after {
245
245
  content: "";
246
- background-image: url("https://a.sfdcstatic.com/developer-website/prod/images/big-moon.svg");
246
+ background-image: url("https://developer.salesforce.com/ns-assets/big-moon.svg");
247
247
  background-position: top right;
248
248
  background-repeat: no-repeat;
249
249
  position: absolute;
@@ -258,7 +258,7 @@
258
258
  justify-content: center;
259
259
  align-items: center;
260
260
  position: absolute;
261
- background-image: url("https://a.sfdcstatic.com/developer-website/prod/images/blue-circle.svg");
261
+ background-image: url("https://developer.salesforce.com/ns-assets/blue-circle.svg");
262
262
  top: 110px;
263
263
  right: 230px;
264
264
  left: unset;
@@ -6,10 +6,10 @@ const treesMobile =
6
6
 
7
7
  // These codey-* ones are a bit of a hack for now: we were only given a PNG and limited time, so we're wrapping the PNG in an SVG.
8
8
  const codeyDesktop =
9
- '<svg class="codey-desktop" width="381" height="337" viewBox="0 0 381 337" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><image width="381" height="337" xlink:href="https://a.sfdcstatic.com/developer-website/prod/images/podcast-bear.png" />';
9
+ '<svg class="codey-desktop" width="381" height="337" viewBox="0 0 381 337" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><image width="381" height="337" xlink:href="https://developer.salesforce.com/ns-assets/podcast-bear.png" />';
10
10
 
11
11
  const codeyMobile =
12
- '<svg class="codey-mobile" width="381" height="337" viewBox="0 0 381 337" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><image width="381" height="337" xlink:href="https://a.sfdcstatic.com/developer-website/prod/images/podcast-bear.png" />';
12
+ '<svg class="codey-mobile" width="381" height="337" viewBox="0 0 381 337" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><image width="381" height="337" xlink:href="https://developer.salesforce.com/ns-assets/podcast-bear.png" />';
13
13
 
14
14
  const moonDesktop =
15
15
  '<svg width="1221" height="507" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M745.819 45.482c0 24.567-19.915 44.482-44.482 44.482s-44.483-19.915-44.483-44.482C656.854 20.916 676.77 1 701.337 1c24.567 0 44.482 19.916 44.482 44.482"/><path d="M745.819 45.482c0 24.567-19.915 44.482-44.482 44.482s-44.483-19.915-44.483-44.482C656.854 20.916 676.77 1 701.337 1c24.567 0 44.482 19.916 44.482 44.482Z" stroke="#90D0FE" stroke-width="2"/><path d="M476.154 420.627a4.095 4.095 0 1 1-8.191 0 4.095 4.095 0 1 1 8.19 0ZM99.154 150.627a4.095 4.095 0 1 1-8.191 0 4.095 4.095 0 1 1 8.19 0ZM1210.142 97.587l-1.518 4.1a1.063 1.063 0 0 1-.631.633l-4.102 1.518c-.933.346-.933 1.664 0 2.009l4.102 1.517c.293.109.523.34.63.633l1.519 4.102c.346.93 1.664.93 2.009 0l1.517-4.102c.109-.293.34-.524.633-.633l4.102-1.517c.932-.345.932-1.663 0-2.01l-4.102-1.517a1.068 1.068 0 0 1-.633-.632l-1.517-4.101c-.345-.933-1.663-.933-2.01 0ZM8.142 490.372l-1.518 4.1a1.067 1.067 0 0 1-.632.633l-4.1 1.518c-.934.345-.934 1.664 0 2.009l4.1 1.517c.293.109.524.34.632.633l1.518 4.1c.345.933 1.664.933 2.01 0l1.516-4.1c.11-.293.34-.524.633-.633l4.101-1.517c.932-.345.932-1.664 0-2.01l-4.1-1.517a1.071 1.071 0 0 1-.634-.632l-1.517-4.101c-.345-.933-1.664-.933-2.009 0ZM127.142 115.587l-1.518 4.1a1.064 1.064 0 0 1-.632.633l-4.1 1.518c-.934.346-.934 1.664 0 2.009l4.1 1.517c.293.109.524.34.632.633l1.518 4.102c.345.93 1.664.93 2.01 0l1.516-4.102c.11-.293.34-.524.633-.633l4.101-1.517c.932-.345.932-1.663 0-2.01l-4.1-1.517a1.068 1.068 0 0 1-.634-.632l-1.517-4.101c-.345-.933-1.664-.933-2.009 0ZM909.009 306.108c-5.999-11.612-9.387-24.793-9.387-38.765 0-11.403 2.257-22.279 6.348-32.206M1067.92 255.215c.568 3.96.862 8.01.862 12.129 0 46.713-37.867 84.58-84.58 84.58-28.474 0-53.664-14.071-68.99-35.64M911.555 224.004c14.768-24.701 41.776-41.24 72.647-41.24 38.302 0 70.658 25.459 81.068 60.378M1055.511 147.787l-3.452 9.329a2.439 2.439 0 0 1-1.44 1.44l-9.329 3.452c-2.121.784-2.121 3.784 0 4.569l9.329 3.452a2.436 2.436 0 0 1 1.44 1.44l3.452 9.329c.785 2.12 3.785 2.12 4.569 0l3.452-9.33a2.441 2.441 0 0 1 1.44-1.44l9.329-3.451c2.121-.785 2.121-3.785 0-4.57l-9.329-3.451a2.444 2.444 0 0 1-1.44-1.44l-3.452-9.33c-.784-2.12-3.784-2.12-4.569 0ZM919.251 376.385c0 5.69-4.614 10.304-10.306 10.304-5.69 0-10.305-4.613-10.305-10.305 0-5.692 4.614-10.306 10.305-10.306 5.692 0 10.306 4.615 10.306 10.307Z" stroke="#90D0FE" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M984.116 224.502a5.027 5.027 0 1 1-10.054 0 5.027 5.027 0 0 1 10.054 0" fill="#90D0FE"/><path stroke="#90D0FE" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M1046.716 254.771h29.772M1087.929 254.771h7.089M902.279 225.33h23.242M870.108 225.33h10.053"/><path d="M893.055 225.33a2.01 2.01 0 1 1-4.021 0 2.01 2.01 0 0 1 4.02 0" fill="#90D0FE"/><path stroke="#90D0FE" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M893.425 315.627h31.409"/><path d="M936.898 315.627a2.011 2.011 0 1 1-4.023 0 2.011 2.011 0 0 1 4.023 0" fill="#90D0FE"/><path stroke="#90D0FE" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M1013.52 292.398v-16.036M1021.537 284.382l-16.051.002"/></g></svg>';
@@ -113,7 +113,7 @@ footer.signup-variant-no-signup {
113
113
  height: 112px;
114
114
  width: 110px;
115
115
  margin-right: var(--dx-g-spacing-lg);
116
- background-image: url("https://a.sfdcstatic.com/developer-website/prod/images/footer-graphic-trees.svg");
116
+ background-image: url("https://developer.salesforce.com/ns-assets/footer-graphic-trees.svg");
117
117
  filter: var(--dx-g-svg-filter);
118
118
  }
119
119
 
@@ -121,7 +121,7 @@ footer.signup-variant-no-signup {
121
121
  height: 96px;
122
122
  width: 220px;
123
123
  margin-right: var(--dx-g-spacing-lg);
124
- background-image: url("https://a.sfdcstatic.com/developer-website/prod/images/footer-graphic-mountains-2.svg");
124
+ background-image: url("https://developer.salesforce.com/ns-assets/footer-graphic-mountains-2.svg");
125
125
  filter: var(--dx-g-svg-filter);
126
126
  }
127
127
 
@@ -132,7 +132,7 @@ footer.signup-variant-no-signup {
132
132
  bottom: 0;
133
133
  height: 56px;
134
134
  width: 100px;
135
- background-image: url("https://a.sfdcstatic.com/developer-website/prod/images/footer-graphic-mountains-small-2.svg");
135
+ background-image: url("https://developer.salesforce.com/ns-assets/footer-graphic-mountains-small-2.svg");
136
136
  filter: var(--dx-g-svg-filter);
137
137
  }
138
138
 
@@ -140,7 +140,7 @@ footer.signup-variant-no-signup {
140
140
  height: 66px;
141
141
  width: 52px;
142
142
  margin-left: var(--dx-g-spacing-lg);
143
- background-image: url("https://a.sfdcstatic.com/developer-website/prod/images/footer-graphic-trees-small.svg");
143
+ background-image: url("https://developer.salesforce.com/ns-assets/footer-graphic-trees-small.svg");
144
144
  filter: var(--dx-g-svg-filter);
145
145
  }
146
146
 
@@ -275,3 +275,175 @@ footer.signup-variant-no-signup {
275
275
  width: 100%;
276
276
  }
277
277
  }
278
+
279
+ /*
280
+ ================================
281
+ BEGIN OLD FOOTER STYLES -- CAN BE DELETED ONCE FOOTER MFE IS RE-DEPLOYED
282
+ ================================
283
+ */
284
+ .term-icon {
285
+ width: 35px;
286
+ margin: 0 var(--dx-g-spacing-xs);
287
+ }
288
+
289
+ .content-container_middle {
290
+ display: grid;
291
+ grid-gap: var(--dx-g-spacing-xl);
292
+ grid-template:
293
+ "logo general" auto
294
+ "socials general" max-content
295
+ "locales general" max-content / auto max-content;
296
+ background: var(--dx-footer-themed-background-color);
297
+ padding-top: var(--dx-g-spacing-4xl);
298
+ padding-bottom: var(--dx-g-spacing-3xl);
299
+ }
300
+
301
+ .logo {
302
+ grid-area: logo;
303
+ width: max-content;
304
+ height: var(--dx-g-spacing-4xl);
305
+ }
306
+
307
+ .logo > img {
308
+ height: 100%;
309
+ user-select: none;
310
+ -webkit-user-drag: none;
311
+ }
312
+
313
+ .general {
314
+ grid-area: general;
315
+ display: grid;
316
+ grid-template-columns: repeat(3, max-content);
317
+ grid-gap: var(--dx-g-spacing-4xl);
318
+ }
319
+
320
+ .locales {
321
+ grid-area: locales;
322
+ }
323
+
324
+ .socials {
325
+ grid-area: socials;
326
+ display: grid;
327
+ grid-template-columns: repeat(3, max-content);
328
+ grid-auto-rows: min-content;
329
+ grid-gap: var(--dx-g-spacing-sm);
330
+ }
331
+
332
+ .socials > a {
333
+ border-radius: 50%;
334
+ height: var(--dx-g-spacing-xl);
335
+ width: var(--dx-g-spacing-xl);
336
+ flex-shrink: 0;
337
+ display: flex;
338
+ justify-content: center;
339
+ align-items: center;
340
+ color: var(--dx-g-cloud-blue-vibrant-95);
341
+ }
342
+
343
+ .terms a {
344
+ color: var(--dx-g-blue-vibrant-70);
345
+ text-decoration: underline;
346
+ }
347
+
348
+ .terms > span,
349
+ .terms_links > a {
350
+ margin: var(--dx-g-spacing-sm) 0;
351
+ }
352
+
353
+ .terms > span > a {
354
+ display: inline;
355
+ }
356
+
357
+ .terms a:hover {
358
+ color: var(--dx-g-blue-vibrant-80);
359
+ }
360
+
361
+ .socials > a:hover {
362
+ background: var(--dx-g-blue-vibrant-80);
363
+ }
364
+
365
+ .socials > a > svg {
366
+ fill: var(--dx-footer-themed-svg-icon-color);
367
+ height: 100%;
368
+ }
369
+
370
+ /* BOTTOM */
371
+ .content-container_bottom {
372
+ display: flex;
373
+ background: var(--dx-footer-themed-terms-and-conditions-background-color);
374
+ }
375
+
376
+ .content-container_bottom a {
377
+ text-decoration: underline;
378
+ }
379
+
380
+ .terms {
381
+ width: 100%;
382
+ display: flex;
383
+ justify-content: center;
384
+ flex-wrap: wrap;
385
+ font-family: var(--dx-g-font-sans);
386
+ font-size: var(--dx-g-text-xs);
387
+ margin: var(--dx-g-spacing-md) 0;
388
+ }
389
+
390
+ .terms > span {
391
+ padding-right: var(--dx-g-spacing-lg);
392
+ color: white;
393
+ }
394
+
395
+ .terms > span > img {
396
+ margin-right: var(--dx-g-spacing-xs);
397
+ }
398
+
399
+ .terms_links {
400
+ display: flex;
401
+ flex-wrap: wrap;
402
+ }
403
+
404
+ .terms_links > *:not(:last-child) {
405
+ margin-right: var(--dx-g-spacing-lg);
406
+ }
407
+
408
+ @media screen and (max-width: 1024px) {
409
+ .content-container_middle {
410
+ grid-gap: var(--dx-g-spacing-lg);
411
+ padding-top: var(--dx-g-spacing-2xl);
412
+ padding-bottom: var(--dx-g-spacing-2xl);
413
+ }
414
+
415
+ .logo {
416
+ height: var(--dx-g-spacing-2xl);
417
+ }
418
+
419
+ .socials > a {
420
+ height: var(--dx-g-spacing-lg);
421
+ width: var(--dx-g-spacing-lg);
422
+ }
423
+
424
+ .socials > a > dx-icon {
425
+ --dx-c-icon-size: var(--dx-g-icon-size-xs);
426
+ }
427
+
428
+ .socials > a.github > dx-icon {
429
+ --dx-c-icon-size: var(--dx-g-spacing-lg);
430
+ }
431
+ }
432
+
433
+ @media screen and (max-width: 768px) {
434
+ .content-container_middle {
435
+ display: none;
436
+ }
437
+ }
438
+
439
+ @media screen and (max-width: 640px) {
440
+ .term-icon {
441
+ margin-left: 0;
442
+ }
443
+ }
444
+
445
+ /*
446
+ ================================
447
+ END OLD FOOTER STYLES -- CAN BE DELETED ONCE FOOTER MFE IS RE-DEPLOYED
448
+ ================================
449
+ */
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <footer class={className}>
3
3
  <div
4
- if:true={showSmallSignup}
4
+ lwc:if={showSmallSignup}
5
5
  class="content-container content-container_top"
6
6
  >
7
7
  <div class="graphic graphic-trees" alt=""></div>
@@ -14,7 +14,7 @@
14
14
  <div class="graphic graphic-trees-small" alt=""></div>
15
15
  </div>
16
16
  <div
17
- if:true={showLargeSignup}
17
+ lwc:if={showLargeSignup}
18
18
  class="content-container content-container_top_large"
19
19
  >
20
20
  <div class="graphic graphic-large" alt=""></div>
@@ -34,7 +34,7 @@
34
34
  </dx-button>
35
35
  </div>
36
36
  </div>
37
- <div if:true={showLargeNoSignup} class={largeNoSignupClassName}>
37
+ <div lwc:if={showLargeNoSignup} class={largeNoSignupClassName}>
38
38
  <div class="graphic graphic-large" alt=""></div>
39
39
  <slot
40
40
  class="large-signup-heading"
@@ -43,8 +43,96 @@
43
43
  ></slot>
44
44
  </div>
45
45
  <dx-footer-mfe
46
+ lwc:if={useMfe}
46
47
  legal-only={showLegalOnly}
47
48
  origin={mfeConfigOrigin}
49
+ home-href={mfeHomeHref}
48
50
  ></dx-footer-mfe>
51
+ <!-- TODO: Probably just remove template below and always render the dx-footer-mfe above once footer MFE supports rendering in non-full-width contexts -->
52
+ <template lwc:else>
53
+ <div
54
+ lwc:if={showContainerMiddle}
55
+ class="content-container content-container_middle"
56
+ >
57
+ <a class="logo" href="/" onclick={handleLogoClick}>
58
+ <img
59
+ src="https://developer.salesforce.com/ns-assets/salesforce-logo-corporate.svg"
60
+ alt="Salesforce logo"
61
+ />
62
+ </a>
63
+ <div class="socials">
64
+ <template for:each={socialLinks} for:item="link">
65
+ <a
66
+ aria-label={link.label}
67
+ href={link.href}
68
+ key={link.iconSymbol}
69
+ class={link.iconSymbol}
70
+ target="_blank"
71
+ rel="noopener"
72
+ onclick={handleSocialLinkClick}
73
+ >
74
+ <svg
75
+ xmlns="http://www.w3.org/2000/svg"
76
+ part="svg"
77
+ aria-hidden="true"
78
+ >
79
+ <use xlink:href={link.iconURL}></use>
80
+ </svg>
81
+ </a>
82
+ </template>
83
+ </div>
84
+ <div class="general">
85
+ <template for:each={generalLinks} for:item="item">
86
+ <div class="footer-group" key={item.id}>
87
+ <h2 class="subheading">{item.label}</h2>
88
+ <template for:each={item.options} for:item="option">
89
+ <dx-footer-option
90
+ key={option.id}
91
+ general-label={item.label}
92
+ label={option.label}
93
+ href={option.link.href}
94
+ target={option.link.target}
95
+ ></dx-footer-option>
96
+ </template>
97
+ </div>
98
+ </template>
99
+ </div>
100
+ </div>
101
+ <div class="content-container content-container_bottom">
102
+ <div class="terms">
103
+ <span class="copyright-notice" lwc:dom="manual"></span>
104
+ <div class="terms_links">
105
+ <template for:each={termsLinks} for:item="term">
106
+ <template lwc:if={term.onclick}>
107
+ <a
108
+ href={term.href}
109
+ key={term.label}
110
+ rel={term.rel}
111
+ onclick={handleCookiePreferencesClick}
112
+ >
113
+ {term.label}
114
+ </a>
115
+ </template>
116
+ <template lwc:else>
117
+ <a
118
+ href={term.href}
119
+ key={term.label}
120
+ rel={term.rel}
121
+ onclick={handleTermsClick}
122
+ >
123
+ <img
124
+ lwc:if={term.img}
125
+ class="term-icon"
126
+ src={term.img}
127
+ alt="Footer Term Icon"
128
+ />
129
+ {term.label}
130
+ </a>
131
+ </template>
132
+ </template>
133
+ </div>
134
+ </div>
135
+ </div>
136
+ </template>
49
137
  </footer>
50
138
  </template>