@salesforcedevs/docs-components 0.7.0 → 0.7.59-sppage-alpha2

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 (102) hide show
  1. package/lwc.config.json +17 -3
  2. package/package.json +16 -6
  3. package/src/modules/README.md +41 -0
  4. package/src/modules/doc/amfModelParser/amfModelParser.ts +674 -0
  5. package/src/modules/doc/amfReference/amfReference.css +25 -0
  6. package/src/modules/doc/amfReference/amfReference.html +60 -0
  7. package/src/modules/doc/amfReference/amfReference.ts +1494 -0
  8. package/src/modules/doc/amfReference/constants.ts +76 -0
  9. package/src/modules/doc/amfReference/types.ts +125 -0
  10. package/src/modules/doc/amfTopic/amfTopic.css +21 -0
  11. package/src/modules/doc/amfTopic/amfTopic.html +3 -0
  12. package/src/modules/doc/amfTopic/amfTopic.ts +111 -0
  13. package/src/modules/doc/amfTopic/types.ts +56 -0
  14. package/src/modules/doc/amfTopic/utils.ts +136 -0
  15. package/src/modules/doc/breadcrumbItem/breadcrumbItem.css +51 -0
  16. package/src/modules/doc/breadcrumbItem/breadcrumbItem.html +5 -0
  17. package/src/modules/doc/breadcrumbItem/breadcrumbItem.ts +71 -0
  18. package/src/modules/doc/breadcrumbs/breadcrumbs.css +27 -0
  19. package/src/modules/doc/breadcrumbs/breadcrumbs.html +58 -0
  20. package/src/modules/doc/breadcrumbs/breadcrumbs.ts +192 -0
  21. package/src/modules/doc/content/content.css +94 -70
  22. package/src/modules/doc/content/content.ts +233 -169
  23. package/src/modules/doc/contentCallout/contentCallout.css +17 -23
  24. package/src/modules/doc/contentCallout/contentCallout.html +13 -4
  25. package/src/modules/doc/contentCallout/contentCallout.ts +16 -3
  26. package/src/modules/doc/contentLayout/contentLayout.css +131 -0
  27. package/src/modules/doc/contentLayout/contentLayout.html +64 -0
  28. package/src/modules/doc/contentLayout/contentLayout.ts +610 -0
  29. package/src/modules/doc/doDont/doDont.css +47 -0
  30. package/src/modules/doc/doDont/doDont.html +27 -0
  31. package/src/modules/doc/doDont/doDont.ts +17 -0
  32. package/src/modules/doc/header/header.css +70 -37
  33. package/src/modules/doc/header/header.html +40 -135
  34. package/src/modules/doc/header/header.ts +29 -78
  35. package/src/modules/doc/heading/heading.css +33 -0
  36. package/src/modules/doc/heading/heading.html +14 -0
  37. package/src/modules/doc/heading/heading.ts +67 -0
  38. package/src/modules/doc/headingAnchor/headingAnchor.css +33 -0
  39. package/src/modules/doc/headingAnchor/headingAnchor.html +19 -0
  40. package/src/modules/doc/headingAnchor/headingAnchor.ts +43 -0
  41. package/src/modules/doc/headingContent/headingContent.css +53 -0
  42. package/src/modules/doc/headingContent/headingContent.html +13 -0
  43. package/src/modules/doc/headingContent/headingContent.ts +30 -0
  44. package/src/modules/doc/overview/overview.css +40 -0
  45. package/src/modules/doc/overview/overview.html +34 -0
  46. package/src/modules/doc/overview/overview.ts +12 -0
  47. package/src/modules/doc/phase/phase.css +70 -0
  48. package/src/modules/doc/phase/phase.html +38 -0
  49. package/src/modules/doc/phase/phase.ts +93 -0
  50. package/src/modules/doc/specificationContent/specificationContent.css +3 -0
  51. package/src/modules/doc/specificationContent/specificationContent.html +99 -0
  52. package/src/modules/doc/specificationContent/specificationContent.ts +56 -0
  53. package/src/modules/doc/sprigSurvey/sprigSurvey.html +20 -0
  54. package/src/modules/doc/sprigSurvey/sprigSurvey.scoped.css +16 -0
  55. package/src/modules/doc/sprigSurvey/sprigSurvey.ts +16 -0
  56. package/src/modules/doc/toc/toc.ts +1 -1
  57. package/src/modules/doc/versionPicker/versionPicker.css +64 -0
  58. package/src/modules/doc/versionPicker/versionPicker.html +38 -0
  59. package/src/modules/doc/versionPicker/versionPicker.ts +65 -0
  60. package/src/modules/doc/xmlContent/types.ts +120 -0
  61. package/src/modules/doc/xmlContent/utils.ts +163 -0
  62. package/src/modules/doc/xmlContent/xmlContent.css +54 -0
  63. package/src/modules/doc/xmlContent/xmlContent.html +52 -0
  64. package/src/modules/doc/xmlContent/xmlContent.ts +780 -0
  65. package/src/modules/docHelpers/amfStyle/amfStyle.css +355 -0
  66. package/src/modules/docHelpers/imgStyle/imgStyle.css +59 -0
  67. package/src/modules/docHelpers/status/status.css +22 -0
  68. package/src/modules/docUtils/searchSyncer/searchSyncer.ts +86 -0
  69. package/src/modules/docUtils/utils/utils.ts +32 -0
  70. package/LICENSE +0 -12
  71. package/src/modules/doc/content/__tests__/content.test.ts +0 -120
  72. package/src/modules/doc/content/__tests__/mockDocContent.ts +0 -292
  73. package/src/modules/doc/content/__tests__/mockPageReference.ts +0 -8
  74. package/src/modules/doc/content/content.stories.ts +0 -108
  75. package/src/modules/doc/contentCallout/__tests__/contentCallout.test.ts +0 -80
  76. package/src/modules/doc/contentCallout/__tests__/mockProps.ts +0 -14
  77. package/src/modules/doc/contentCallout/contentCallout.stories.ts +0 -29
  78. package/src/modules/doc/contentMedia/__tests__/contentMedia.test.ts +0 -97
  79. package/src/modules/doc/contentMedia/contentMedia.stories.ts +0 -113
  80. package/src/modules/doc/header/__tests__/coveoConfig.ts +0 -12
  81. package/src/modules/doc/header/__tests__/header.test.ts +0 -434
  82. package/src/modules/doc/header/__tests__/mockNavDevelopers.ts +0 -427
  83. package/src/modules/doc/header/__tests__/mockNavs.ts +0 -115
  84. package/src/modules/doc/header/__tests__/mockProps.ts +0 -149
  85. package/src/modules/doc/header/header.stories.ts +0 -160
  86. package/src/modules/doc/nav/__tests__/mockAvailableLanguages.ts +0 -8
  87. package/src/modules/doc/nav/__tests__/mockAvailableVersions.ts +0 -122
  88. package/src/modules/doc/nav/__tests__/mockPageReference.ts +0 -8
  89. package/src/modules/doc/nav/__tests__/mockPdfUrl.ts +0 -1
  90. package/src/modules/doc/nav/__tests__/mockSelectedLanguage.ts +0 -8
  91. package/src/modules/doc/nav/__tests__/mockSelectedVersion.ts +0 -8
  92. package/src/modules/doc/nav/__tests__/mockToc.ts +0 -146
  93. package/src/modules/doc/nav/__tests__/nav.test.ts +0 -58
  94. package/src/modules/doc/toc/__tests__/mockPageReference.ts +0 -8
  95. package/src/modules/doc/toc/__tests__/mockToc.ts +0 -146
  96. package/src/modules/doc/toc/__tests__/toc.test.ts +0 -29
  97. package/src/modules/doc/toolbar/__tests__/mockAvailableLanguages.ts +0 -8
  98. package/src/modules/doc/toolbar/__tests__/mockAvailableVersions.ts +0 -122
  99. package/src/modules/doc/toolbar/__tests__/mockPdfUrl.ts +0 -1
  100. package/src/modules/doc/toolbar/__tests__/mockSelectedLanguage.ts +0 -8
  101. package/src/modules/doc/toolbar/__tests__/mockSelectedVersion.ts +0 -8
  102. package/src/modules/doc/toolbar/__tests__/toolbar.test.ts +0 -44
@@ -0,0 +1,58 @@
1
+ <template>
2
+ <nav role="navigation" aria-label={ariaLabel}>
3
+ <template if:true={displayCrumbs}>
4
+ <template if:false={renderSmallVariant}>
5
+ <doc-breadcrumb-item
6
+ href={firstCrumb.href}
7
+ label={firstCrumb.label}
8
+ breadcrumb-labels={breadcrumbLabels}
9
+ ></doc-breadcrumb-item>
10
+ <span class="breadcrumb-item_slash">/</span>
11
+ <template if:true={renderDropdown}>
12
+ <dx-dropdown
13
+ analytics-event="custEv_breadcrumbClick"
14
+ analytics-payload={ANALYTICS_PAYLOAD}
15
+ if:true={renderDropdown}
16
+ options={dropdownOptions}
17
+ open-on-hover
18
+ placement="bottom"
19
+ variant="indented"
20
+ width="fit-content"
21
+ >
22
+ <dx-button
23
+ aria-label="Open Breadcrumbs Dropdown"
24
+ icon-size="large"
25
+ icon-symbol="threedots"
26
+ variant="tertiary"
27
+ ></dx-button>
28
+ </dx-dropdown>
29
+ <span class="breadcrumb-item_slash">/</span>
30
+ </template>
31
+ <template for:each={breadcrumbItems} for:item="breadcrumb">
32
+ <doc-breadcrumb-item
33
+ href={breadcrumb.href}
34
+ key={breadcrumb.id}
35
+ label={breadcrumb.label}
36
+ level={breadcrumb.level}
37
+ breadcrumb-labels={breadcrumbLabels}
38
+ ></doc-breadcrumb-item>
39
+ <span class="breadcrumb-item_slash" key={breadcrumb.label}>
40
+ /
41
+ </span>
42
+ </template>
43
+ <doc-breadcrumb-item
44
+ label={lastCrumb.label}
45
+ breadcrumb-labels={breadcrumbLabels}
46
+ ></doc-breadcrumb-item>
47
+ </template>
48
+ <template if:true={renderSmallVariant}>
49
+ <doc-breadcrumb-item
50
+ href={lastLinkCrump.href}
51
+ label={lastLinkCrump.label}
52
+ breadcrumb-labels={breadcrumbLabels}
53
+ variant="back-arrow"
54
+ ></doc-breadcrumb-item>
55
+ </template>
56
+ </template>
57
+ </nav>
58
+ </template>
@@ -0,0 +1,192 @@
1
+ import { LightningElement, api } from "lwc";
2
+ import { Breadcrumb, OptionWithLink } from "typings/custom";
3
+ import { toJson } from "dxUtils/normalizers";
4
+
5
+ type BreadcrumbConfig = {
6
+ minWidth: number;
7
+ crumbsInDropdown: number;
8
+ };
9
+
10
+ const GAP = 8;
11
+
12
+ // Unit in pixels based on Salesforce Sans font-family.
13
+ const CONSTANTS = {
14
+ pixelPerCharacter: 7.7,
15
+ pixelPerCrumbSpace: GAP * 2 + 8.6,
16
+ minWidthPerCrumb: 200,
17
+ dropdownWidth: 32
18
+ };
19
+
20
+ export default class Breadcrumbs extends LightningElement {
21
+ @api ariaLabel: string = "Documentation Breadcrumbs";
22
+
23
+ @api
24
+ get breadcrumbs(): Breadcrumb[] {
25
+ return this._breadcrumbs;
26
+ }
27
+
28
+ set breadcrumbs(value) {
29
+ this.normalizeAndAssignBreadcrumbs(value);
30
+ this.calculateBreadcrumbsConfigs();
31
+ if (this.observer) {
32
+ this.updateDropdownOptionAmount();
33
+ }
34
+ }
35
+
36
+ @api
37
+ get pixelPerCharacter(): number {
38
+ return this._pixelPerCharacter;
39
+ }
40
+
41
+ set pixelPerCharacter(value: number | string) {
42
+ this._pixelPerCharacter = +value;
43
+ }
44
+
45
+ private _breadcrumbs: Breadcrumb[] = [];
46
+ private _pixelPerCharacter = CONSTANTS.pixelPerCharacter;
47
+ private navWidth = 0;
48
+ private observer: ResizeObserver | null = null;
49
+ private breadcrumbConfigs: BreadcrumbConfig[] = [];
50
+ private dropdownOptionAmount? = 0;
51
+
52
+ private get renderSmallVariant(): boolean {
53
+ return (
54
+ !this.dropdownOptionAmount &&
55
+ this.dropdownOptionAmount !== 0 &&
56
+ !!this.lastLinkCrump
57
+ );
58
+ }
59
+
60
+ private get lastLinkCrump(): Breadcrumb {
61
+ return this.breadcrumbs[this.breadcrumbs.length - 2];
62
+ }
63
+
64
+ private get hasInternalBreadcrumbs(): boolean {
65
+ return this.breadcrumbs.length > 2;
66
+ }
67
+
68
+ private get breadcrumbItems(): Breadcrumb[] {
69
+ return this.breadcrumbs!.slice(
70
+ this.dropdownOptionAmount! + 1,
71
+ this._breadcrumbs.length - 1
72
+ );
73
+ }
74
+
75
+ private get renderDropdown(): boolean {
76
+ return this.hasInternalBreadcrumbs && !!this.dropdownOptionAmount;
77
+ }
78
+ private get dropdownOptions(): OptionWithLink[] {
79
+ return this.breadcrumbs!.slice(1, this.dropdownOptionAmount! + 1).map(
80
+ (link) => ({
81
+ id: link.id!,
82
+ label: link.label,
83
+ link: { href: link.href! }
84
+ })
85
+ );
86
+ }
87
+
88
+ private get displayCrumbs(): boolean {
89
+ return this.breadcrumbs.length > 1;
90
+ }
91
+
92
+ private get firstCrumb(): Breadcrumb {
93
+ return this.breadcrumbs[0];
94
+ }
95
+
96
+ private get breadcrumbLabels(): string {
97
+ return this.breadcrumbs.map((crumb) => crumb.label).join(":");
98
+ }
99
+
100
+ private get lastCrumb(): Breadcrumb {
101
+ return this.breadcrumbs[this.breadcrumbs.length - 1];
102
+ }
103
+
104
+ // this payload is only used for breadcrumb dropdown
105
+ private get ANALYTICS_PAYLOAD() {
106
+ return {
107
+ element_type: "link",
108
+ nav_type: "breadcrumb",
109
+ nav_level: 1
110
+ };
111
+ }
112
+
113
+ renderedCallback(): void {
114
+ if (!this.observer) {
115
+ try {
116
+ this.observer = new ResizeObserver((entries) => {
117
+ const [nav] = entries;
118
+ if (this.navWidth === nav.contentRect.width) {
119
+ return;
120
+ }
121
+ this.navWidth = nav.contentRect.width;
122
+ this.updateDropdownOptionAmount();
123
+ });
124
+
125
+ this.observer.observe(this.template.querySelector("nav")!);
126
+ } catch (error) {
127
+ console.error(
128
+ "Error occured while setting up ResizeObserver on breadcrumbs",
129
+ error
130
+ );
131
+ }
132
+ }
133
+ }
134
+
135
+ disconnectedCallback(): void {
136
+ this.observer?.disconnect();
137
+ }
138
+
139
+ private normalizeAndAssignBreadcrumbs(breadcrumbs?: Breadcrumb[] | string) {
140
+ if (!breadcrumbs) {
141
+ return;
142
+ }
143
+
144
+ this._breadcrumbs = toJson(breadcrumbs).map(
145
+ (crumb: Breadcrumb, index: number) => ({
146
+ ...crumb,
147
+ id: crumb.id || crumb.href,
148
+ level: index
149
+ })
150
+ );
151
+ }
152
+
153
+ private updateDropdownOptionAmount(): void {
154
+ this.dropdownOptionAmount = this.breadcrumbConfigs.find(
155
+ ({ minWidth }) => minWidth <= this.navWidth
156
+ )?.crumbsInDropdown;
157
+ }
158
+
159
+ private calculateBreadcrumbsConfigs(): void {
160
+ this.breadcrumbConfigs = [
161
+ ...Array(this._breadcrumbs.length - 1).keys()
162
+ ].map((optionsAmount) => {
163
+ const breadcrumbs = [...this._breadcrumbs];
164
+ breadcrumbs.splice(1, optionsAmount);
165
+ return {
166
+ crumbsInDropdown: optionsAmount,
167
+ minWidth: this.reduceBreadcrumbs(
168
+ breadcrumbs,
169
+ optionsAmount
170
+ ? CONSTANTS.dropdownWidth + CONSTANTS.pixelPerCrumbSpace
171
+ : 0
172
+ )
173
+ };
174
+ });
175
+ }
176
+
177
+ private reduceBreadcrumbs(
178
+ breadcrumbs: Breadcrumb[],
179
+ offset: number = 0
180
+ ): number {
181
+ return breadcrumbs.reduce(
182
+ (previousValue, element) =>
183
+ previousValue +
184
+ Math.min(
185
+ element.label.length *
186
+ (this.pixelPerCharacter || CONSTANTS.pixelPerCharacter),
187
+ CONSTANTS.minWidthPerCrumb
188
+ ),
189
+ (breadcrumbs.length - 1) * CONSTANTS.pixelPerCrumbSpace + offset
190
+ );
191
+ }
192
+ }
@@ -4,10 +4,10 @@
4
4
  * pattern validation cannot be applied
5
5
  */
6
6
 
7
- @import "helpers/text";
8
- @import "helpers/reset";
9
- @import "helpers/card";
10
- @import "helpers/table";
7
+ @import "dxHelpers/text";
8
+ @import "dxHelpers/reset";
9
+ @import "dxHelpers/table";
10
+ @import "docHelpers/imgStyle";
11
11
 
12
12
  .doc-content {
13
13
  width: 100%;
@@ -31,11 +31,6 @@
31
31
  margin-bottom: var(--dx-g-spacing-md);
32
32
  }
33
33
 
34
- .helpHead2 {
35
- margin-top: 36px;
36
- margin-bottom: var(--dx-g-spacing-md);
37
- }
38
-
39
34
  .relinfo {
40
35
  padding-top: var(--dx-g-spacing-sm);
41
36
  padding-bottom: var(--dx-g-spacing-sm);
@@ -46,17 +41,10 @@
46
41
  padding-bottom: var(--dx-g-spacing-sm);
47
42
  }
48
43
 
49
- img.content-image {
50
- height: auto;
51
- display: unset;
52
- }
53
-
54
44
  .image-block .content-image {
55
45
  margin-top: var(--dx-g-spacing-lg);
56
46
  margin-bottom: var(--dx-g-spacing-sm);
57
47
  display: block;
58
- margin-left: auto;
59
- margin-right: auto;
60
48
  }
61
49
 
62
50
  td > img.content-image:first-child:last-child[alt="Yes"],
@@ -64,45 +52,61 @@ td > img.content-image:first-child:last-child[alt="No"] {
64
52
  width: var(--dx-g-spacing-md);
65
53
  }
66
54
 
67
- h1 {
55
+ h1,
56
+ h2,
57
+ h3,
58
+ h4,
59
+ h5,
60
+ h6 {
61
+ color: var(--dx-g-blue-vibrant-20);
68
62
  font-family: var(--dx-g-font-display);
69
- font-size: 40px;
63
+ font-weight: var(--dx-g-font-demi);
64
+ }
70
65
 
71
- /* not registered */
72
- color: var(--dx-g-blue-vibrant-20);
73
- letter-spacing: -0.4px;
74
- line-height: 40px;
66
+ h1 {
67
+ font-size: var(--dx-g-text-3xl);
68
+ letter-spacing: -0.8px;
69
+ line-height: var(--dx-g-spacing-3xl);
70
+ margin: var(--dx-g-spacing-2xl) 0 var(--dx-g-spacing-md) 0;
75
71
  }
76
72
 
77
73
  h2 {
78
- font-family: var(--dx-g-font-display);
79
- font-size: var(--dx-g-text-xl);
80
- color: var(--dx-g-blue-vibrant-20);
81
- letter-spacing: -0.1px;
82
- line-height: var(--dx-g-spacing-lg);
74
+ font-size: var(--dx-g-text-2xl);
75
+ letter-spacing: -0.4px;
76
+ line-height: var(--dx-g-spacing-2xl);
77
+ margin: var(--dx-g-spacing-2xl) 0 var(--dx-g-spacing-md) 0;
83
78
  }
84
79
 
85
80
  h3 {
86
- font-family: var(--dx-g-font-display);
87
- font-size: var(--dx-g-text-lg);
88
- color: var(--dx-g-blue-vibrant-20);
89
- letter-spacing: -0.1px;
90
- line-height: var(--dx-g-spacing-lg);
81
+ font-size: var(--dx-g-text-xl);
82
+ letter-spacing: -0.4px;
83
+ line-height: var(--dx-g-spacing-xl);
84
+ margin: var(--dx-g-spacing-xl) 0 var(--dx-g-spacing-md) 0;
91
85
  }
92
86
 
93
87
  h4 {
94
- font-family: var(--dx-g-font-display);
95
88
  font-size: var(--dx-g-text-base);
96
- color: var(--dx-g-blue-vibrant-20);
97
- letter-spacing: 0;
89
+ letter-spacing: -0.5px;
90
+ line-height: var(--dx-g-spacing-lg);
91
+ margin: var(--dx-g-spacing-lg) 0 var(--dx-g-spacing-sm) 0;
92
+ }
93
+
94
+ h5 {
95
+ font-size: var(--dx-g-text-sm);
96
+ letter-spacing: -0.3px;
98
97
  line-height: var(--dx-g-spacing-mlg);
98
+ margin: var(--dx-g-spacing-md) 0 var(--dx-g-spacing-sm) 0;
99
99
  }
100
100
 
101
- .dx-text-heading-alt-1 {
102
- color: var(--dx-g-gray-30);
103
- font-family: var(--dx-g-font-sans);
104
- font-size: var(--slds-text-lg);
105
- line-height: 25px;
101
+ h6 {
102
+ font-size: var(--dx-g-text-xs);
103
+ letter-spacing: -0.3px;
104
+ line-height: var(--dx-g-spacing-md);
105
+ margin: var(--dx-g-spacing-sm) 0 var(--dx-g-spacing-sm) 0;
106
+ }
107
+
108
+ img {
109
+ image-rendering: optimize-contrast;
106
110
  }
107
111
 
108
112
  p,
@@ -116,6 +120,12 @@ p,
116
120
  margin-bottom: var(--dx-g-spacing-md);
117
121
  }
118
122
 
123
+ dd > p,
124
+ dd > .p {
125
+ margin-top: 0;
126
+ margin-bottom: 0;
127
+ }
128
+
119
129
  .li {
120
130
  font-family: var(--dx-g-font-sans);
121
131
  font-size: var(--dx-g-text-base);
@@ -143,10 +153,6 @@ a,
143
153
  color: var(--dx-g-blue-vibrant-50);
144
154
  }
145
155
 
146
- .helpHead1 {
147
- margin-bottom: var(--dx-g-spacing-lg);
148
- }
149
-
150
156
  .shortdesc {
151
157
  font-family: var(--dx-g-font-sans);
152
158
  font-size: var(--dx-g-text-base);
@@ -175,7 +181,8 @@ a,
175
181
  margin-right: var(--dx-g-spacing-lg);
176
182
  }
177
183
 
178
- .codeph {
184
+ .codeph,
185
+ .filepath {
179
186
  font-family: var(--dx-g-font-mono);
180
187
  font-size: var(--dx-g-text-sm);
181
188
  line-height: var(--dx-g-text-lg);
@@ -238,10 +245,17 @@ dd {
238
245
  color: var(--dx-g-gray-10);
239
246
  letter-spacing: 0;
240
247
  line-height: var(--dx-g-spacing-lg);
248
+ margin-left: var(--dx-g-spacing-smd);
249
+ margin-bottom: var(--dx-g-spacing-md);
241
250
  }
242
251
 
243
252
  li {
244
- margin-left: var(--dx-g-spacing-lg);
253
+ margin: var(--dx-g-spacing-sm) 0 var(--dx-g-spacing-sm)
254
+ var(--dx-g-spacing-lg);
255
+ }
256
+
257
+ li table {
258
+ margin-bottom: var(--dx-g-spacing-lg);
245
259
  }
246
260
 
247
261
  li > li {
@@ -257,27 +271,6 @@ a:hover,
257
271
  text-decoration: underline;
258
272
  }
259
273
 
260
- @media (max-width: 640px) {
261
- /* Mobile */
262
- img.content-image {
263
- max-width: 95vw;
264
- }
265
- }
266
-
267
- @media (min-width: 641px) {
268
- /* Tablet (medium) */
269
- img.content-image {
270
- max-width: 80vw;
271
- }
272
- }
273
-
274
- @media (min-width: 769px) {
275
- /* Desktop */
276
- img.content-image {
277
- max-width: min(60vw, 650px);
278
- }
279
- }
280
-
281
274
  ul,
282
275
  ol {
283
276
  margin-left: var(--dx-g-spacing-lg);
@@ -350,13 +343,30 @@ ul ul ul ul ul ul {
350
343
  margin: var(--dx-g-spacing-lg) 0;
351
344
  }
352
345
 
353
- figure {
346
+ figure,
347
+ .fig {
354
348
  margin: var(--dx-g-spacing-lg) 0;
349
+ text-align: left;
350
+ display: flex;
351
+ flex-direction: column;
352
+ align-items: left;
353
+ justify-content: left;
355
354
  }
356
355
 
357
- figcaption {
356
+ figcaption,
357
+ .figcap {
358
+ display: block;
358
359
  font-size: var(--dx-g-text-xs);
359
- margin-top: var(--dx-g-spacing-sm);
360
+ margin: var(--dx-g-spacing-sm) 0;
361
+ order: 2;
362
+ }
363
+
364
+ .figcap .image {
365
+ order: 1;
366
+ }
367
+
368
+ .fig.fig-centered {
369
+ text-align: center;
360
370
  }
361
371
 
362
372
  code,
@@ -367,3 +377,17 @@ samp,
367
377
  font-family: Menlo, monospace;
368
378
  font-size: 1em;
369
379
  }
380
+
381
+ mark {
382
+ background-color: var(--dx-g-yellow-vibrant-90);
383
+ }
384
+
385
+ /* offset page jump link due to fixed header */
386
+ [id] {
387
+ --dx-c-content-scroll-margin-top: calc(
388
+ var(--dx-g-global-header-height) + var(--dx-g-doc-header-height) +
389
+ var(--dx-g-spacing-2xl)
390
+ );
391
+
392
+ scroll-margin-top: var(--dx-c-content-scroll-margin-top);
393
+ }