@salesforcedevs/docs-components 1.3.2 → 1.3.4-alpha

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 (74) hide show
  1. package/lwc.config.json +8 -1
  2. package/package.json +13 -13
  3. package/src/modules/doc/{amfReference/utils.ts → amfModelParser/amfModelParser.ts} +10 -5
  4. package/src/modules/doc/amfReference/amfReference.css +23 -3
  5. package/src/modules/doc/amfReference/amfReference.html +34 -21
  6. package/src/modules/doc/amfReference/amfReference.ts +225 -92
  7. package/src/modules/doc/amfReference/types.ts +3 -11
  8. package/src/modules/doc/amfTopic/amfTopic.css +20 -0
  9. package/src/modules/doc/amfTopic/amfTopic.ts +35 -18
  10. package/src/modules/doc/amfTopic/types.ts +15 -13
  11. package/src/modules/doc/amfTopic/utils.ts +12 -6
  12. package/src/modules/doc/breadcrumbItem/breadcrumbItem.ts +17 -10
  13. package/src/modules/doc/breadcrumbs/breadcrumbs.html +7 -9
  14. package/src/modules/doc/breadcrumbs/breadcrumbs.ts +30 -34
  15. package/src/modules/doc/componentPlayground/componentPlayground.css +22 -0
  16. package/src/modules/doc/componentPlayground/componentPlayground.html +15 -0
  17. package/src/modules/doc/componentPlayground/componentPlayground.ts +20 -0
  18. package/src/modules/doc/content/content.css +70 -76
  19. package/src/modules/doc/content/content.ts +18 -14
  20. package/src/modules/doc/contentCallout/contentCallout.css +12 -1
  21. package/src/modules/doc/contentCallout/contentCallout.html +11 -4
  22. package/src/modules/doc/contentCallout/contentCallout.ts +8 -1
  23. package/src/modules/doc/contentLayout/contentLayout.css +1 -98
  24. package/src/modules/doc/contentLayout/contentLayout.html +25 -11
  25. package/src/modules/doc/contentLayout/contentLayout.ts +296 -89
  26. package/src/modules/doc/doDont/doDont.css +47 -0
  27. package/src/modules/doc/doDont/doDont.html +27 -0
  28. package/src/modules/doc/doDont/doDont.ts +17 -0
  29. package/src/modules/doc/header/header.css +65 -36
  30. package/src/modules/doc/header/header.html +40 -146
  31. package/src/modules/doc/header/header.ts +32 -81
  32. package/src/modules/doc/heading/heading.css +16 -37
  33. package/src/modules/doc/heading/heading.html +4 -4
  34. package/src/modules/doc/heading/heading.ts +12 -10
  35. package/src/modules/doc/headingAnchor/headingAnchor.css +2 -2
  36. package/src/modules/doc/headingAnchor/headingAnchor.ts +2 -2
  37. package/src/modules/doc/headingContent/headingContent.css +1 -1
  38. package/src/modules/doc/headingContent/headingContent.html +2 -2
  39. package/src/modules/doc/headingContent/headingContent.ts +2 -2
  40. package/src/modules/doc/lwcContentLayout/lwcContentLayout.css +1 -0
  41. package/src/modules/doc/lwcContentLayout/lwcContentLayout.html +64 -0
  42. package/src/modules/doc/lwcContentLayout/lwcContentLayout.ts +168 -0
  43. package/src/modules/doc/overview/overview.css +40 -0
  44. package/src/modules/doc/overview/overview.html +34 -0
  45. package/src/modules/doc/overview/overview.ts +12 -0
  46. package/src/modules/doc/phase/phase.css +18 -3
  47. package/src/modules/doc/phase/phase.html +12 -2
  48. package/src/modules/doc/phase/phase.ts +44 -8
  49. package/src/modules/doc/specificationContent/specificationContent.css +31 -0
  50. package/src/modules/doc/specificationContent/specificationContent.html +164 -0
  51. package/src/modules/doc/specificationContent/specificationContent.ts +114 -0
  52. package/src/modules/doc/sprigSurvey/sprigSurvey.html +20 -0
  53. package/src/modules/doc/sprigSurvey/sprigSurvey.scoped.css +16 -0
  54. package/src/modules/doc/sprigSurvey/sprigSurvey.ts +16 -0
  55. package/src/modules/doc/toc/toc.html +1 -3
  56. package/src/modules/doc/toc/toc.ts +1 -1
  57. package/src/modules/doc/toolbar/toolbar.ts +6 -6
  58. package/src/modules/doc/versionPicker/versionPicker.css +64 -0
  59. package/src/modules/doc/versionPicker/versionPicker.html +38 -0
  60. package/src/modules/doc/versionPicker/versionPicker.ts +65 -0
  61. package/src/modules/doc/xmlContent/types.ts +9 -3
  62. package/src/modules/doc/xmlContent/utils.ts +3 -1
  63. package/src/modules/doc/xmlContent/xmlContent.css +25 -3
  64. package/src/modules/doc/xmlContent/xmlContent.html +29 -17
  65. package/src/modules/doc/xmlContent/xmlContent.ts +197 -75
  66. package/src/modules/docHelpers/amfStyle/amfStyle.css +6 -6
  67. package/src/modules/docHelpers/contentLayoutStyle/contentLayoutStyle.css +131 -0
  68. package/src/modules/docHelpers/imgStyle/imgStyle.css +59 -0
  69. package/src/modules/docHelpers/status/status.css +1 -1
  70. package/src/modules/docUtils/{SearchSyncer/SearchSyncer.ts → searchSyncer/searchSyncer.ts} +1 -0
  71. package/src/modules/docUtils/utils/utils.ts +32 -0
  72. package/LICENSE +0 -12
  73. package/src/modules/docBaseElements/lightningElementWithState/lightningElementWithState.ts +0 -93
  74. package/src/modules/docHelpers/phaseContentLayout/phaseContentLayout.css +0 -39
@@ -2,11 +2,39 @@
2
2
 
3
3
  dx-logo {
4
4
  min-width: fit-content;
5
- min-width: -moz-fit-content;
5
+ }
6
+
7
+ .dev-center-link {
8
+ display: inline-block;
9
+ padding: var(--dx-g-spacing-smd) var(--dx-g-spacing-lg) 0
10
+ var(--dx-g-global-header-padding-horizontal);
11
+ height: var(--dx-g-spacing-xl);
12
+ }
13
+
14
+ .dev-center-content {
15
+ display: flex;
16
+ align-items: center;
17
+ text-decoration: none;
18
+ color: inherit;
19
+ font-weight: var(--dx-g-font-bold);
20
+ }
21
+
22
+ dx-icon {
23
+ --dx-c-icon-size: var(--dx-g-icon-size-xs);
24
+ --dx-c-icon-color: var(--dx-g-blue-vibrant-20);
25
+ }
26
+
27
+ .dev-center-content > * + * {
28
+ margin-left: 8px; /* Adjust this value to your desired spacing */
6
29
  }
7
30
 
8
31
  .header_l2 {
9
32
  justify-content: space-between;
33
+ height: var(--dx-g-doc-header-main-nav-height);
34
+ }
35
+
36
+ .has-brand .header_l2 {
37
+ height: var(--dx-g-spacing-3xl);
10
38
  }
11
39
 
12
40
  .nav_menu-button {
@@ -16,50 +44,44 @@ dx-logo {
16
44
  );
17
45
  }
18
46
 
47
+ .has-brand.has-scoped-nav-items {
48
+ border-bottom: 1px solid var(--dx-g-gray-90);
49
+ border-top: 1px solid var(--dx-g-gray-90);
50
+ }
51
+
19
52
  .nav_menu-ctas {
20
53
  margin-right: var(--dx-g-spacing-sm);
21
54
  }
22
55
 
23
56
  header:not(.has-brand) > .header_l1 {
24
- background: var(--dx-g-brand-current-color-background);
57
+ background: white;
58
+ border-bottom: 1px solid var(--dx-g-gray-90);
25
59
  }
26
60
 
27
61
  header:not(.has-brand) > .header_l2 {
28
- background: var(--dx-g-brand-current-color-background-2);
62
+ border-bottom: 1px solid var(--dx-g-gray-90);
63
+ border-top: 1px solid var(--dx-g-gray-90);
29
64
  }
30
65
 
31
66
  .header_l2_group.header_l2_group-right-ctas {
32
67
  align-items: baseline;
33
68
  }
34
69
 
35
- .header_bail-link {
36
- --dx-c-button-horizontal-spacing: var(--dx-g-spacing-sm);
37
-
38
- margin-left: var(--dx-g-spacing-sm);
39
- }
40
-
41
- .header_lang-dropdown {
42
- --button-primary-color: var(--dx-g-blue-vibrant-50);
43
- --button-primary-color-hover: var(--dx-g-blue-vibrant-40);
44
- }
45
-
46
- .header_lang-dropdown > dx-button {
47
- --dx-c-button-primary-color: var(--button-primary-color);
48
- --dx-c-button-primary-color-hover: var(--button-primary-color-hover);
49
- --dx-c-slot-empty-width: min-content;
50
- --border-color: var(--button-primary-color);
51
-
52
- border-bottom: 1px dashed var(--border-color);
70
+ .has-brand .header_l2_group-title {
71
+ padding: var(--dx-g-spacing-sm) var(--dx-g-spacing-xl)
72
+ calc(var(--dx-g-spacing-smd) - 1px) 0;
73
+ min-width: 320px;
53
74
  }
54
75
 
55
- .header_lang-dropdown > dx-button:hover {
56
- --border-color: var(--button-primary-color-hover);
76
+ .no-header-content {
77
+ border-top: 1px solid var(--dx-g-gray-90);
57
78
  }
58
79
 
59
- @media (max-width: 740px) {
80
+ @media (max-width: 768px) {
60
81
  .header_l2 {
61
82
  padding: 0;
62
83
  flex-wrap: wrap;
84
+ height: 100%;
63
85
  }
64
86
 
65
87
  .has-nav-items .header_l2 {
@@ -70,34 +92,41 @@ header:not(.has-brand) > .header_l2 {
70
92
  width: 100%;
71
93
  }
72
94
 
95
+ .header_l2_group-title {
96
+ margin-right: 0;
97
+ padding: var(--dx-g-spacing-sm) 0 2px
98
+ var(--dx-g-global-header-padding-horizontal);
99
+ min-height: var(--dx-g-doc-header-main-nav-height);
100
+ }
101
+
73
102
  .header_l2_group-nav {
74
103
  height: var(--dx-g-spacing-3xl);
75
104
  padding: 0;
76
- padding-left: var(--dx-g-spacing-sm);
105
+ margin-top: calc(var(--dx-g-spacing-2xs) + 1px);
77
106
  }
78
107
 
79
108
  .header_l2_group-nav_overflow {
109
+ height: var(--dx-g-spacing-3xl);
80
110
  margin-right: var(--dx-g-spacing-sm);
81
111
  }
82
112
 
83
- .header_l2_group-title {
84
- margin-right: 0;
85
- padding: var(--dx-g-spacing-smd) var(--dx-g-page-padding-horizontal);
113
+ .subtitle {
114
+ font-weight: var(--dx-g-font-demi);
115
+ letter-spacing: -0.08px;
86
116
  }
87
117
 
88
- .header_l2_group-title .header_lang-dropdown {
89
- margin-left: auto;
90
- }
91
-
92
- .header_lang-dropdown > dx-button {
93
- padding: var(--dx-g-spacing-2xs) 0;
118
+ .has-brand .header_l2_group-title {
119
+ margin-right: 0;
120
+ padding: var(--dx-g-spacing-sm) 0 var(--dx-g-spacing-2xs)
121
+ var(--dx-g-global-header-padding-horizontal);
94
122
  }
95
123
 
96
124
  .has-scoped-nav-items > .header_l2 {
97
125
  height: unset;
98
126
  }
99
127
 
100
- .has-scoped-nav-items .header_l2_group-title {
101
- border-bottom: 1px solid var(--dx-g-brand-current-color-border-2);
128
+ header:not(.has-brand) > .header_l2 {
129
+ padding-bottom: 0;
130
+ border: 0;
102
131
  }
103
132
  }
@@ -1,160 +1,54 @@
1
1
  <template>
2
- <dx-brand-theme-provider brand={brand}>
3
- <header class={className}>
4
- <dx-skip-nav-link></dx-skip-nav-link>
5
- <dx-banner
6
- if:true={bannerMarkup}
7
- banner-markup={bannerMarkup}
8
- ></dx-banner>
9
- <div class="header_l1">
10
- <div if:true={showMenuButton} class="nav_menu-ctas">
11
- <dx-button
12
- aria-label="Menu Button"
13
- class="nav_menu-button"
14
- icon-size="large"
15
- icon-symbol={mobileMenuIconSymbol}
16
- variant="tertiary"
17
- onclick={toggleMobileNavMenu}
18
- ></dx-button>
19
- </div>
20
- <dx-logo label={title}></dx-logo>
21
- <dx-header-nav
22
- if:true={showDesktopNavItems}
23
- aria-label="Global Navigation Bar"
24
- nav-items={navItems}
25
- onrequestopennavmenu={onRequestOpenNavMenu}
26
- pathname={pathname}
27
- variant="small"
28
- ></dx-header-nav>
29
- <div class="header-cta-container">
30
- <dx-header-search
31
- if:true={hasSearch}
32
- coveo-organization-id={coveoOrganizationId}
33
- coveo-public-access-token={coveoPublicAccessToken}
34
- coveo-search-pipeline={coveoSearchPipeline}
35
- coveo-search-hub={coveoSearchHub}
36
- mobile={tablet}
37
- onstatechange={handleStateChange}
38
- ></dx-header-search>
39
- </div>
40
- <div
41
- if:true={showTbidLogin}
42
- class="header-tbid-login"
43
- onclick={closeMobileNavMenu}
44
- >
45
- <dw-tbid-login-menu></dw-tbid-login-menu>
46
- </div>
47
- <div if:true={showSignup} class="header-login-signup">
48
- <dx-button
49
- aria-label="Sign Up For Salesforce Developer Edition"
50
- size="small"
51
- href={signupLink}
52
- onclick={handleSignUpClick}
53
- >
54
- Sign Up
55
- </dx-button>
56
- </div>
57
- <dx-header-mobile-nav-menu
58
- if:true={hasNavItems}
59
- nav-items={navItems}
60
- open={showMobileNavMenu}
61
- pathname={pathname}
62
- value={mobileNavMenuValue}
63
- onchange={onMobileNavMenuChange}
64
- onrequestclose={closeMobileNavMenu}
65
- >
66
- <dx-button
67
- aria-label={bailLabel}
68
- if:true={hasBailLink}
69
- href={bailHref}
70
- variant="tertiary"
71
- icon-symbol="new_window"
72
- >
73
- {bailLabel}
74
- </dx-button>
75
- </dx-header-mobile-nav-menu>
76
- </div>
77
- <div class="header_l2">
78
- <div class="header_l2_group header_l2_group-title">
79
- <a href={headerHref} class="home-link">
2
+ <template lwc:if={shouldRender}>
3
+ <dx-brand-theme-provider brand={brand}>
4
+ <header class={className}>
5
+ <dx-banner
6
+ lwc:if={showBanner}
7
+ banner-markup={bannerMarkup}
8
+ ></dx-banner>
9
+ <div lwc:if={devCenter} class="dev-center-link">
10
+ <a href={devCenter.link} class="dev-center-content">
11
+ <dx-icon symbol="back"></dx-icon>
80
12
  <dx-icon
81
13
  class="brand-icon"
82
- if:true={isValidBrand}
14
+ lwc:if={devCenter.icon}
83
15
  sprite="salesforcebrand"
84
16
  symbol={brand}
85
- size="xlarge"
17
+ size="large"
86
18
  ></dx-icon>
87
- <span class="subtitle dx-text-heading-4">
88
- {subtitle}
19
+ <span class="subtitle dx-text-body-4">
20
+ {devCenter.title}
89
21
  </span>
90
22
  </a>
91
- <dx-dropdown
92
- if:true={showMobileLanguages}
93
- class="header_lang-dropdown"
94
- options={languages}
95
- small
96
- value={language}
97
- value-path={langValuePath}
98
- onchange={onLangChange}
99
- >
100
- <dx-button
101
- aria-label="Select Language"
102
- variant="inline"
103
- icon-size="large"
104
- icon-symbol="world"
105
- ></dx-button>
106
- </dx-dropdown>
107
23
  </div>
108
- <div
109
- if:true={hasScopedNavItems}
110
- class="header_l2_group header_l2_group-nav"
111
- >
112
- <div
113
- class="header_l2_group-nav_overflow"
114
- onscroll={onNavScroll}
115
- >
116
- <dx-header-nav
117
- aria-label="Scoped Navigation Bar"
118
- nav-items={scopedNavItems}
119
- pathname={pathname}
120
- ></dx-header-nav>
24
+ <div class="header_l2">
25
+ <div class="header_l2_group header_l2_group-title">
26
+ <a href={headerHref} class="home-link">
27
+ <span class="subtitle dx-text-display-7">
28
+ {subtitle}
29
+ </span>
30
+ </a>
121
31
  </div>
122
- </div>
123
- <div
124
- if:false={smallMobile}
125
- class="header_l2_group header_l2_group-right-ctas"
126
- >
127
- <dx-dropdown
128
- if:true={hasLanguages}
129
- class="header_lang-dropdown"
130
- options={languages}
131
- small
132
- value-path={langValuePath}
133
- value={language}
134
- onchange={onLangChange}
32
+ <div
33
+ lwc:if={hasScopedNavItems}
34
+ class="header_l2_group header_l2_group-nav"
135
35
  >
136
- <dx-button
137
- aria-label="Select Language"
138
- variant="inline"
139
- icon-size="small"
140
- icon-symbol="world"
36
+ <div
37
+ class="header_l2_group-nav_overflow"
38
+ onscroll={onNavScroll}
141
39
  >
142
- {languageLabel}
143
- </dx-button>
144
- </dx-dropdown>
145
- <dx-button
146
- if:true={hasBailLink}
147
- aria-label={bailLabel}
148
- class="header_bail-link"
149
- href={bailHref}
150
- variant="tertiary"
151
- icon-symbol="new_window"
152
- target="_blank"
153
- >
154
- {bailLabel}
155
- </dx-button>
40
+ <dx-header-nav
41
+ aria-label="Scoped Navigation Bar"
42
+ nav-items={scopedNavItems}
43
+ pathname={pathname}
44
+ ></dx-header-nav>
45
+ </div>
46
+ </div>
156
47
  </div>
157
- </div>
158
- </header>
159
- </dx-brand-theme-provider>
48
+ </header>
49
+ </dx-brand-theme-provider>
50
+ </template>
51
+ <template lwc:if={showDocDivider}>
52
+ <div class="no-header-content"></div>
53
+ </template>
160
54
  </template>
@@ -1,13 +1,18 @@
1
1
  import { api } from "lwc";
2
2
  import cx from "classnames";
3
- import type { OptionWithNested, OptionWithLink } from "typings/custom";
3
+ import type { OptionWithNested } from "typings/custom";
4
4
  import { HeaderBase } from "dxBaseElements/headerBase";
5
5
  import { toJson } from "dxUtils/normalizers";
6
- import get from "lodash.get";
7
6
 
8
7
  const TABLET_MATCH = "980px";
9
- const MOBILE_MATCH = "880px";
10
- const SMALL_MOBILE_MATCH = "740px";
8
+ const MOBILE_MATCH = "768px";
9
+
10
+ const isStorybook = () => {
11
+ const { host } = window.location;
12
+ return (
13
+ host === "localhost:6006" || /^dsc-comp.*\.herokuapp\.com$/.test(host)
14
+ );
15
+ };
11
16
 
12
17
  export default class Header extends HeaderBase {
13
18
  @api langValuePath: string = "id"; // allows to override how language property is interpreted, follows valuePath dropdown api.
@@ -23,32 +28,20 @@ export default class Header extends HeaderBase {
23
28
  }
24
29
 
25
30
  @api
26
- get languages() {
27
- return this._languages;
31
+ get devCenter() {
32
+ return this._devCenter;
28
33
  }
29
34
 
30
- set languages(value) {
31
- this._languages = toJson(value);
35
+ set devCenter(value) {
36
+ this._devCenter = toJson(value);
32
37
  }
33
38
 
34
- @api
35
- get language() {
36
- return this._language;
37
- }
38
-
39
- set language(value) {
40
- if (this._language !== value) {
41
- this._language = value;
42
- }
43
- }
44
-
45
- private _language: string | null = null;
46
- private _languages!: OptionWithLink[];
47
39
  private _scopedNavItems!: OptionWithNested[];
48
- private smallMobile = false;
49
- private smallMobileMatchMedia!: MediaQueryList;
50
40
  private tablet = false;
51
41
  private tabletMatchMedia!: MediaQueryList;
42
+ private shouldRender: boolean = false;
43
+ private showDocDivider: boolean = false;
44
+ private _devCenter: any;
52
45
 
53
46
  protected mobileBreakpoint(): string {
54
47
  return MOBILE_MATCH;
@@ -58,42 +51,6 @@ export default class Header extends HeaderBase {
58
51
  return this.scopedNavItems && this.scopedNavItems.length > 0;
59
52
  }
60
53
 
61
- private get showDesktopNavItems(): boolean {
62
- return !this.mobile && this.hasNavItems;
63
- }
64
-
65
- private get showTbidLogin(): boolean {
66
- return this.showSignup;
67
- }
68
-
69
- private get showSignup(): boolean {
70
- return this.signupLink
71
- ? (this.tablet && !this.isSearchOpen) || !this.tablet
72
- : false;
73
- }
74
-
75
- private get hasLanguages(): boolean {
76
- return !!(this.languages && this.languages.length);
77
- }
78
-
79
- private get showMobileLanguages(): boolean {
80
- return this.smallMobile && this.hasLanguages;
81
- }
82
-
83
- private get languageLabel(): string {
84
- return (
85
- (this.language &&
86
- this.languages.find(
87
- (lang) => get(lang, this.langValuePath) === this.language
88
- )?.label) ||
89
- this.languages[0].label
90
- );
91
- }
92
-
93
- private get showMenuButton(): boolean {
94
- return this.mobile && this.hasNavItems;
95
- }
96
-
97
54
  connectedCallback(): void {
98
55
  super.connectedCallback();
99
56
  this.tabletMatchMedia = window.matchMedia(
@@ -102,14 +59,22 @@ export default class Header extends HeaderBase {
102
59
  this.onTabletChange(this.tabletMatchMedia);
103
60
  this.tabletMatchMedia.addEventListener("change", this.onTabletChange);
104
61
 
105
- this.smallMobileMatchMedia = window.matchMedia(
106
- `(max-width: ${SMALL_MOBILE_MATCH})`
107
- );
108
- this.onSmallMobileChange(this.smallMobileMatchMedia);
109
- this.smallMobileMatchMedia.addEventListener(
110
- "change",
111
- this.onSmallMobileChange
112
- );
62
+ if (
63
+ (window.location.pathname.includes("/docs/") &&
64
+ window.location.pathname !== "/docs/apis") ||
65
+ window.location.pathname ===
66
+ "/tableau/embedding-playground/overview" ||
67
+ isStorybook()
68
+ ) {
69
+ this.shouldRender = true;
70
+ }
71
+
72
+ if (this.shouldRender && window.location.pathname.includes("/docs/")) {
73
+ if (!this.brand && !this.mobile) {
74
+ this.shouldRender = false;
75
+ this.showDocDivider = true;
76
+ }
77
+ }
113
78
  }
114
79
 
115
80
  disconnectedCallback(): void {
@@ -118,29 +83,15 @@ export default class Header extends HeaderBase {
118
83
  "change",
119
84
  this.onTabletChange
120
85
  );
121
-
122
- this.smallMobileMatchMedia.removeEventListener(
123
- "change",
124
- this.onSmallMobileChange
125
- );
126
86
  }
127
87
 
128
88
  private onTabletChange = (e: MediaQueryListEvent | MediaQueryList) =>
129
89
  (this.tablet = e.matches);
130
90
 
131
- private onSmallMobileChange = (e: MediaQueryListEvent | MediaQueryList) =>
132
- (this.smallMobile = e.matches);
133
-
134
91
  protected additionalClasses(): string {
135
92
  return cx(
136
93
  this.brand && "has-brand",
137
94
  this.hasScopedNavItems && "has-scoped-nav-items"
138
95
  );
139
96
  }
140
-
141
- private onLangChange(event: CustomEvent<string>): void {
142
- const { detail } = event;
143
- this._language = detail;
144
- this.dispatchEvent(new CustomEvent("langchange", { detail }));
145
- }
146
97
  }
@@ -1,54 +1,33 @@
1
- h1,
2
- h2,
3
- h3,
4
- h4,
5
- h5,
6
- h6 {
7
- color: var(--dx-g-blue-vibrant-20);
8
- font-family: var(--dx-g-font-display);
9
- font-weight: var(--dx-g-font-demi);
10
- }
1
+ @import "dxHelpers/text";
11
2
 
12
- .display-3 {
13
- margin: 0 0 24px 0;
14
- font-size: var(--dx-g-text-3xl);
15
- letter-spacing: -0.85px;
16
- line-height: var(--dx-g-text-4xl);
3
+ h1 {
4
+ margin: var(--dx-g-spacing-2xl) 0 var(--dx-g-spacing-md) 0;
17
5
  }
18
6
 
19
- .display-3 doc-heading-content {
20
- --doc-c-heading-anchor-button-bottom: 8px;
7
+ h1 doc-heading-content {
8
+ --doc-c-heading-anchor-button-bottom: 9.5px;
21
9
  }
22
10
 
23
- .display-4 {
24
- margin: var(--dx-g-spacing-xl) 0 var(--dx-g-spacing-md) 0;
25
- font-size: var(--dx-g-text-xl);
26
- letter-spacing: -0.1px;
27
- line-height: var(--dx-g-spacing-lg);
11
+ h2 {
12
+ margin: var(--dx-g-spacing-2xl) 0 var(--dx-g-spacing-md) 0;
28
13
  }
29
14
 
30
- .display-4 doc-heading-content {
31
- --doc-c-heading-anchor-button-bottom: -3px;
15
+ h2 doc-heading-content {
16
+ --doc-c-heading-anchor-button-bottom: 3px;
32
17
  }
33
18
 
34
- .display-5 {
35
- margin: var(--dx-g-spacing-lg) 0 var(--dx-g-spacing-md) 0;
36
- font-size: var(--dx-g-text-lg);
37
- letter-spacing: -0.1px;
38
- line-height: var(--dx-g-spacing-lg);
19
+ h3 {
20
+ margin: var(--dx-g-spacing-xl) 0 var(--dx-g-spacing-md) 0;
39
21
  }
40
22
 
41
- .display-5 doc-heading-content {
42
- --doc-c-heading-anchor-button-bottom: -4px;
23
+ h3 doc-heading-content {
24
+ --doc-c-heading-anchor-button-bottom: -0.5px;
43
25
  }
44
26
 
45
- .display-6 {
46
- margin: var(--dx-g-spacing-md) 0 var(--dx-g-spacing-sm) 0;
47
- font-size: var(--dx-g-text-base);
48
- letter-spacing: 0;
49
- line-height: var(--dx-g-spacing-mlg);
27
+ h4 {
28
+ margin: var(--dx-g-spacing-lg) 0 var(--dx-g-spacing-sm) 0;
50
29
  }
51
30
 
52
- .display-6 doc-heading-content {
31
+ h4 doc-heading-content {
53
32
  --doc-c-heading-anchor-button-bottom: -6px;
54
33
  }
@@ -1,14 +1,14 @@
1
1
  <template>
2
2
  <h1 class={className} if:true={isAriaLevelOne}>
3
- <doc-heading-content title={title} hash={hash}></doc-heading-content>
3
+ <doc-heading-content header={header} hash={hash}></doc-heading-content>
4
4
  </h1>
5
5
  <h2 class={className} if:true={isAriaLevelTwo}>
6
- <doc-heading-content title={title} hash={hash}></doc-heading-content>
6
+ <doc-heading-content header={header} hash={hash}></doc-heading-content>
7
7
  </h2>
8
8
  <h3 class={className} if:true={isAriaLevelThree}>
9
- <doc-heading-content title={title} hash={hash}></doc-heading-content>
9
+ <doc-heading-content header={header} hash={hash}></doc-heading-content>
10
10
  </h3>
11
11
  <h4 class={className} if:true={isAriaLevelFour}>
12
- <doc-heading-content title={title} hash={hash}></doc-heading-content>
12
+ <doc-heading-content header={header} hash={hash}></doc-heading-content>
13
13
  </h4>
14
14
  </template>
@@ -1,22 +1,24 @@
1
1
  import { LightningElement, api } from "lwc";
2
2
 
3
- export const displayLevels = ["3", "4", "5", "6"];
4
-
5
- export const ariaLevels = ["1", "2", "3", "4"];
6
-
7
3
  export const ariaDisplayLevels: { [key: string]: string } = {
8
- "1": "3",
9
- "2": "4",
10
- "3": "5",
11
- "4": "6"
4
+ "1": "4",
5
+ "2": "5",
6
+ "3": "6",
7
+ "4": "8"
12
8
  };
13
9
 
10
+ export const ariaLevels = Object.keys(ariaDisplayLevels);
11
+
12
+ export const displayLevels = Object.values(ariaDisplayLevels);
13
+
14
+ // @ts-ignore: Really Dark Magic (TM) to do with ariaLevel needing explicit getter/setters
14
15
  export default class Heading extends LightningElement {
15
- @api title: string = "";
16
+ @api header: string = "";
16
17
  @api hash: string | null = null;
17
18
 
18
19
  @api
19
20
  private get ariaLevel(): string {
21
+ // Really Dark Magic (TM)
20
22
  return this._ariaLevel || "2";
21
23
  }
22
24
  private set ariaLevel(value: string | null) {
@@ -60,6 +62,6 @@ export default class Heading extends LightningElement {
60
62
  }
61
63
 
62
64
  private get className(): string {
63
- return `display-${this.displayLevel}`;
65
+ return `dx-text-display-${this.displayLevel}`;
64
66
  }
65
67
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  button {
4
4
  opacity: 0;
5
- color: rgb(11, 92, 171);
5
+ color: rgb(11 92 171);
6
6
  }
7
7
 
8
8
  button:hover {
@@ -17,7 +17,7 @@ button:focus {
17
17
 
18
18
  button:focus-visible {
19
19
  border-radius: 4px;
20
- border: 2px solid rgb(11, 92, 171);
20
+ border: 2px solid rgb(11 92 171);
21
21
  }
22
22
 
23
23
  .icon-wrapper {