@salesforcedevs/docs-components 1.34.3-final-alpha → 1.34.3-fix-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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforcedevs/docs-components",
3
- "version": "1.34.3-final-alpha",
3
+ "version": "1.34.3-fix-alpha",
4
4
  "description": "Docs Lightning web components for DSC",
5
5
  "license": "MIT",
6
6
  "main": "index.js",
@@ -21,6 +21,7 @@ nav {
21
21
 
22
22
  dx-dropdown {
23
23
  --dx-c-dropdown-option-font-size: var(--dx-g-text-sm);
24
+ --dx-c-dropdown-option-font-weight: var(--dx-g-font-bold);
24
25
  --dx-c-dropdown-option-label-color: var(
25
26
  --dx-c-breadcrumbs-breadcrumb-color
26
27
  );
@@ -127,26 +127,26 @@ export default class ContentActionToolbar extends LightningElement {
127
127
  {
128
128
  id: ACTION_COPY_MARKDOWN,
129
129
  label: COPY_MARKDOWN_LABEL,
130
- iconSprite: "utility",
131
- iconSymbol: "copy"
130
+ endIconSprite: "utility",
131
+ endIconSymbol: "copy"
132
132
  },
133
133
  {
134
134
  id: ACTION_VIEW_MARKDOWN,
135
135
  label: VIEW_MARKDOWN_LABEL,
136
- iconSprite: "utility",
137
- iconSymbol: "new_window"
136
+ endIconSprite: "utility",
137
+ endIconSymbol: "new_window"
138
138
  },
139
139
  {
140
140
  id: ACTION_COPY_MARKDOWN_URL,
141
141
  label: COPY_MARKDOWN_URL_LABEL,
142
- iconSprite: "utility",
143
- iconSymbol: "link"
142
+ endIconSprite: "utility",
143
+ endIconSymbol: "link"
144
144
  },
145
145
  ...AI_ASSISTANTS.map(({ action, label }) => ({
146
146
  id: action,
147
147
  label,
148
- iconSprite: "utility",
149
- iconSymbol: "new_window"
148
+ endIconSprite: "utility",
149
+ endIconSymbol: "new_window"
150
150
  }))
151
151
  ]
152
152
  });
@@ -159,14 +159,14 @@ export default class ContentActionToolbar extends LightningElement {
159
159
  {
160
160
  id: ACTION_VIEW_LLMS,
161
161
  label: VIEW_LLMS_LABEL,
162
- iconSprite: "utility",
163
- iconSymbol: "new_window"
162
+ endIconSprite: "utility",
163
+ endIconSymbol: "new_window"
164
164
  },
165
165
  {
166
166
  id: ACTION_COPY_LLMS_URL,
167
167
  label: COPY_LLMS_URL_LABEL,
168
- iconSprite: "utility",
169
- iconSymbol: "link"
168
+ endIconSprite: "utility",
169
+ endIconSymbol: "link"
170
170
  }
171
171
  ]
172
172
  });
@@ -8,7 +8,7 @@
8
8
  }
9
9
 
10
10
  dx-sidebar {
11
- --dx-c-sidebar-width: unset;
11
+ --dx-c-sidebar-content-width: unset;
12
12
 
13
13
  display: block;
14
14
  }
@@ -16,36 +16,13 @@ import type { DocPhaseInfo, OptionWithLink, TreeNode } from "typings/custom";
16
16
  */
17
17
  const TOPIC_TYPE_SPEC = "spec";
18
18
 
19
- /**
20
- * Walks down the first-child chain and returns the first markdown content
21
- * page found, descending through nested content-less parents. Returns
22
- * undefined if the chain breaks on a spec or external link before reaching a
23
- * content page.
24
- */
25
- function firstChildContentPage(node: TreeNode): TreeNode | undefined {
26
- const firstChild = node.children?.[0];
27
- if (!firstChild) {
28
- return undefined;
29
- }
30
-
31
- const isSpec =
32
- (firstChild as { topicType?: string }).topicType === TOPIC_TYPE_SPEC;
33
- const isExternal = firstChild.link?.target === "_blank";
34
- if (isSpec || isExternal) {
35
- return undefined;
36
- }
37
-
38
- if (firstChild.link?.href) {
39
- return firstChild;
40
- }
41
-
42
- return firstChildContentPage(firstChild);
43
- }
44
-
45
19
  /**
46
20
  * Translates per-topic `topicType` into the generic `showForwardArrow` flag
47
- * that `dx-tree-tile` reads (spec topics get the forward arrow icon for Redoc),
48
- * and redirects content-less parent topics whose first child is a content page
21
+ * that `dx-tree-tile` reads (spec topics get the forward arrow icon for Redoc).
22
+ *
23
+ * Content-less parents are left without a link. The tree treats them as
24
+ * parent-only sections and selects the first markdown descendant. Copying that
25
+ * child's href onto the parent makes the parent win selection.
49
26
  */
50
27
  function decorateTopicsWithForwardArrow(
51
28
  topics:
@@ -67,20 +44,6 @@ function decorateTopicsWithForwardArrow(
67
44
  );
68
45
  }
69
46
 
70
- /** Redirect a parent that has no content of its own to its first child
71
- * but only when that first child is itself a content page
72
- */
73
- const isContentlessParent =
74
- !!decorated.children?.length && !decorated.link?.href;
75
-
76
- if (isContentlessParent) {
77
- decorated.redirectToChild = true;
78
- const firstChild = firstChildContentPage(topic);
79
- if (firstChild?.link) {
80
- decorated.link = { ...firstChild.link };
81
- }
82
- }
83
-
84
47
  return decorated;
85
48
  });
86
49
  }
@@ -1,12 +1,12 @@
1
1
  @import "dxHelpers/reset";
2
2
 
3
- /* NOTE: doc-version-picker-width width variable is used by both dx-button and dx-dropdown to maintain a consistent width. */
3
+ /* The large picker fills its row (the sidebar sets the row padding). The small
4
+ menu stops at --doc-version-picker-width, which the sidebar sets. */
4
5
  :host {
5
- --dx-c-dropdown-option-font-weight: normal;
6
- --dx-c-dropdown-option-label-color: var(--dx-g-gray-10);
7
- --dx-c-dropdown-option-padding: var(--dx-g-spacing-sm)
8
- var(--dx-g-spacing-lg);
9
- --dx-c-popover-padding: var(--dx-g-spacing-sm) 0;
6
+ display: block;
7
+
8
+ /* Menu labels wrap; break long unspaced labels instead of overflowing. */
9
+ --dx-c-dropdown-option-overflow-wrap: anywhere;
10
10
  --popover-container-open-transform: translateY(4px);
11
11
  }
12
12
 
@@ -47,16 +47,31 @@
47
47
 
48
48
  .version-picker-button {
49
49
  display: flex;
50
- width: var(--doc-version-picker-width, 296px);
50
+ width: 100%;
51
51
 
52
52
  --dx-c-button-horizontal-spacing: var(--dx-g-spacing-sm);
53
- --dx-g-button-icon-color: var(--dx-g-gray-50);
53
+ --dx-c-button-icon-color: var(--dx-g-gray-50);
54
+
55
+ /* A real 1px border at rest. Hover and the open menu turn it dark blue and
56
+ add a 1px inset shadow, so the edge looks 2px without resizing. */
57
+ --dx-c-button-custom-color: var(--dx-g-gray-10);
58
+ --dx-c-button-custom-color-hover: var(--dx-g-gray-10);
59
+ --dx-c-button-custom-background: white;
60
+ --dx-c-button-custom-background-hover: var(--dx-g-blue-vibrant-95);
61
+ --dx-c-button-custom-border: var(--dx-g-gray-50);
62
+ --dx-c-button-custom-border-hover: var(--dx-g-blue-vibrant-20);
63
+ --dx-c-button-custom-border-shadow-hover: inset 0 0 0 1px
64
+ var(--dx-g-blue-vibrant-20);
65
+
66
+ /* Keyboard focus keeps the 2px edge inside the white band. */
67
+ --dx-c-button-focus-shadow: inset 0 0 0 1px var(--dx-g-blue-vibrant-20),
68
+ 0 0 0 2px white;
54
69
  }
55
70
 
56
71
  .version-picker-button:hover,
57
72
  .version-picker-button:focus-within,
58
73
  .version-picker-button[aria-expanded="true"] {
59
- --dx-g-button-icon-color: var(--dx-g-blue-vibrant-20);
74
+ --dx-c-button-icon-color: var(--dx-g-blue-vibrant-20);
60
75
  }
61
76
 
62
77
  /**
@@ -68,27 +83,6 @@ dx-button::part(content) {
68
83
  overflow: hidden;
69
84
  }
70
85
 
71
- /* The border is an inset box-shadow so thickening it on hover/focus doesn't
72
- resize the small variant's fit-content box. */
73
- .version-picker-button::part(container) {
74
- background: white;
75
- box-shadow: inset 0 0 0 1px var(--dx-g-gray-50);
76
- color: var(--dx-g-gray-10);
77
- }
78
-
79
- .version-picker-button::part(container):hover {
80
- background: var(--dx-g-blue-vibrant-95);
81
- box-shadow: inset 0 0 0 2px var(--dx-g-blue-vibrant-20);
82
- }
83
-
84
- /* aria-expanded keeps the focus ring while the menu is open. */
85
- .version-picker-button:focus-within::part(container),
86
- .version-picker-button[aria-expanded="true"]::part(container) {
87
- background: var(--dx-g-blue-vibrant-95);
88
- box-shadow: inset 0 0 0 2px var(--dx-g-blue-vibrant-20), 0 0 0 2px white,
89
- 0 0 0 4px var(--dx-g-blue-vibrant-60);
90
- }
91
-
92
86
  .selected-version {
93
87
  display: flex;
94
88
  flex-direction: row;
@@ -112,24 +106,11 @@ dx-type-badge.not-latest-badge {
112
106
  * Small "dot" variant (opt-in via `small`). Additive
113
107
  * ------------------------------------------------------------------ */
114
108
 
115
- /* Option padding is sm both axes: the small menu tracks the ~104px trigger, so
116
- the default 24px horizontal would crowd the labels. */
109
+ /* The small menu hugs its longest label but never grows wider than the sidebar
110
+ content (--doc-version-picker-width, set by the sidebar). Labels wrap only at
111
+ that width. The large menu always matches its trigger (width-mode="full"). */
117
112
  .version-picker-dropdown-small {
118
- --dx-c-dropdown-option-font-size: var(--dx-g-text-xs);
119
- --dx-c-dropdown-option-padding: var(--dx-g-spacing-sm)
120
- var(--dx-g-spacing-sm);
121
- --dx-c-dropdown-option-border-radius: 0;
122
- --dx-c-popover-border: none;
123
-
124
- /* Hug the labels (down to the shortest) but never wider than the ToC
125
- content: 296px on desktop, and on the smallest breakpoint the sidebar
126
- variable grows with the viewport up to 720px. Long labels wrap inside
127
- that cap. */
128
113
  --dx-c-dropdown-menu-max-width: var(--doc-version-picker-width, 296px);
129
- --dx-c-dropdown-fit-white-space: normal;
130
- --dx-c-dropdown-fit-overflow: hidden;
131
- --dx-c-dropdown-fit-text-overflow: clip;
132
- --dx-c-dropdown-option-overflow-wrap: anywhere;
133
114
  }
134
115
 
135
116
  .version-picker-button-small {
@@ -154,7 +135,8 @@ dx-type-badge.not-latest-badge {
154
135
  }
155
136
 
156
137
  /* width:100% re-ties to the 104px-capped host (container is width:inherit,
157
- which copies width but not max-width). Border/bg/states are shared above. */
138
+ which copies width but not max-width). Border, fill, and states come from the
139
+ dx-button hooks on .version-picker-button. */
158
140
  .version-picker-button-small::part(container) {
159
141
  width: 100%;
160
142
  height: var(--dx-g-spacing-lg);
@@ -186,7 +168,7 @@ dx-type-badge.not-latest-badge {
186
168
  .version-picker-readonly {
187
169
  box-sizing: border-box;
188
170
  display: inline-block;
189
- width: var(--doc-version-picker-width, 296px);
171
+ width: 100%;
190
172
  height: var(--dx-g-spacing-xl);
191
173
  margin: 0;
192
174
  padding: 0 var(--dx-g-spacing-sm);
@@ -21,7 +21,7 @@
21
21
  >
22
22
  <dx-button
23
23
  class={triggerClass}
24
- variant="tertiary"
24
+ variant="custom"
25
25
  size="small"
26
26
  font="sans"
27
27
  icon-symbol="chevrondown"