@redocly/theme 0.71.0-next.2 → 0.71.0-next.4

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.
@@ -65,7 +65,6 @@ const numberedListDarkMode = (0, styled_components_1.css) `
65
65
  */
66
66
 
67
67
  --md-numbered-list-marker-bg-color: var(--color-warm-grey-3); // @presenter Color
68
- --md-numbered-list-marker-bg-color-hover: var(--color-warm-grey-4); // @presenter Color
69
68
 
70
69
  // @tokens End
71
70
  `;
package/lib/index.d.ts CHANGED
@@ -289,6 +289,7 @@ export * from './icons/ColorPaletteIcon/ColorPaletteIcon';
289
289
  export * from './icons/IdeaIcon/IdeaIcon';
290
290
  export * from './icons/NewChatIcon/NewChatIcon';
291
291
  export * from './layouts/RootLayout';
292
+ export * from './layouts/CustomContexts';
292
293
  export * from './layouts/PageLayout';
293
294
  export * from './layouts/NotFound';
294
295
  export * from './layouts/Forbidden';
package/lib/index.js CHANGED
@@ -354,6 +354,7 @@ __exportStar(require("./icons/IdeaIcon/IdeaIcon"), exports);
354
354
  __exportStar(require("./icons/NewChatIcon/NewChatIcon"), exports);
355
355
  /* Layouts */
356
356
  __exportStar(require("./layouts/RootLayout"), exports);
357
+ __exportStar(require("./layouts/CustomContexts"), exports);
357
358
  __exportStar(require("./layouts/PageLayout"), exports);
358
359
  __exportStar(require("./layouts/NotFound"), exports);
359
360
  __exportStar(require("./layouts/Forbidden"), exports);
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { JSX } from 'react';
3
+ type CustomContextsProps = React.PropsWithChildren<{}>;
4
+ export declare function CustomContexts({ children }: CustomContextsProps): JSX.Element;
5
+ export {};
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CustomContexts = CustomContexts;
7
+ const react_1 = __importDefault(require("react"));
8
+ // Eject this component to wrap every page in custom React context providers.
9
+ function CustomContexts({ children }) {
10
+ return react_1.default.createElement(react_1.default.Fragment, null, children);
11
+ }
12
+ //# sourceMappingURL=CustomContexts.js.map
@@ -10,14 +10,16 @@ const Footer_1 = require("../components/Footer/Footer");
10
10
  const SkipContent_1 = require("../components/SkipContent/SkipContent");
11
11
  const AIAssistantButton_1 = require("../components/Buttons/AIAssistantButton");
12
12
  const hooks_1 = require("../core/hooks");
13
+ const CustomContexts_1 = require("../layouts/CustomContexts");
13
14
  function RootLayout({ children }) {
14
15
  const { useSearchFeatures } = (0, hooks_1.useThemeHooks)();
15
16
  const { askAi } = useSearchFeatures();
16
17
  return (react_1.default.createElement("div", { "data-component-name": "layouts/RootLayout" },
17
- react_1.default.createElement(SkipContent_1.SkipContent, null),
18
- react_1.default.createElement(Navbar_1.Navbar, null),
19
- children,
20
- react_1.default.createElement(Footer_1.Footer, null),
21
- askAi && react_1.default.createElement(AIAssistantButton_1.AIAssistantButton, null)));
18
+ react_1.default.createElement(CustomContexts_1.CustomContexts, null,
19
+ react_1.default.createElement(SkipContent_1.SkipContent, null),
20
+ react_1.default.createElement(Navbar_1.Navbar, null),
21
+ children,
22
+ react_1.default.createElement(Footer_1.Footer, null),
23
+ askAi && react_1.default.createElement(AIAssistantButton_1.AIAssistantButton, null))));
22
24
  }
23
25
  //# sourceMappingURL=RootLayout.js.map
@@ -55,8 +55,8 @@ function NumberedItem({ headline, anchorId, headlineLevel, icon, iconRawContent,
55
55
  type === exports.NumberedListType.ICON && (react_1.default.createElement(MarkerContent, { className: "numbered-item-marker-content" },
56
56
  react_1.default.createElement(GenericIcon_1.GenericIcon, { icon: icon, rawContent: iconRawContent }))),
57
57
  type === exports.NumberedListType.NUMBER && (react_1.default.createElement(MarkerContent, { className: "numbered-item-marker-content" }, index)),
58
- anchorId && (react_1.default.createElement(MarkerLink, { className: "numbered-item-marker-link", $isDot: isDot },
59
- react_1.default.createElement(MarkerLinkIcon, { "aria-hidden": "true", focusable: "false", color: "--md-numbered-list-marker-text-color" })))));
58
+ anchorId && (react_1.default.createElement(MarkerLink, { className: "numbered-item-marker-link", "aria-hidden": "true" },
59
+ react_1.default.createElement(MarkerLinkIcon, { "aria-hidden": "true", focusable: "false", size: "var(--md-numbered-list-marker-link-size)", color: "--md-numbered-list-marker-link-icon-color" })))));
60
60
  return (react_1.default.createElement(NumberedItemWrapper, { "data-component-name": "Markdoc/NumberedList/NumberedItem", className: className, id: anchorId, $size: size, $isDot: isDot },
61
61
  react_1.default.createElement(MarkerRail, null,
62
62
  anchorId ? (react_1.default.createElement("a", Object.assign({ href: `#${anchorId}` }, (headline
@@ -110,24 +110,23 @@ const MarkerContent = styled_components_1.default.span `
110
110
  justify-content: center;
111
111
  `;
112
112
  const MarkerLink = styled_components_1.default.span `
113
+ position: absolute;
114
+ inset-inline-end: calc(100% + var(--md-numbered-list-marker-link-gap));
113
115
  display: none;
114
116
  align-items: center;
115
117
  justify-content: center;
116
118
 
117
- svg {
118
- width: var(--icon-width, 16px);
119
- height: var(--icon-height, 16px);
119
+ &::before {
120
+ content: '';
121
+ position: absolute;
122
+ inset-block: 0;
123
+ inset-inline-start: 100%;
124
+ width: var(--md-numbered-list-marker-link-gap);
120
125
  }
121
-
122
- ${({ $isDot }) => $isDot &&
123
- (0, styled_components_1.css) `
124
- position: absolute;
125
- inset-inline-end: calc(100% + var(--md-numbered-list-dot-link-gap));
126
- `}
127
126
  `;
128
127
  const MarkerLinkIcon = (0, styled_components_1.default)(LinkIcon_1.LinkIcon) `
129
128
  path:first-of-type {
130
- fill: var(--md-numbered-list-marker-icon-bg-color);
129
+ fill: var(--md-numbered-list-marker-link-bg-color);
131
130
  }
132
131
  `;
133
132
  const MarkerRail = styled_components_1.default.span `
@@ -199,17 +198,10 @@ const NumberedItemWrapper = styled_components_1.default.li `
199
198
  padding-bottom: 0;
200
199
  }
201
200
 
202
- &:hover,
203
- &:focus-within {
204
- ${Marker} {
205
- background-color: ${({ $isDot }) => $isDot ? 'var(--text-color-primary)' : 'var(--md-numbered-list-marker-bg-color-hover)'};
206
- }
207
-
208
- a ${Marker}:not([data-dot]) .numbered-item-marker-content {
209
- display: none;
210
- }
211
-
212
- a ${Marker} .numbered-item-marker-link {
201
+ &:has(${MarkerRail} a:hover),
202
+ &:has(${MarkerRail} a:focus-visible),
203
+ &:has(${NumberedItemHeadline}:hover) {
204
+ .numbered-item-marker-link {
213
205
  display: flex;
214
206
  }
215
207
  }
@@ -11,8 +11,6 @@ exports.markdownNumberedList = (0, styled_components_1.css) `
11
11
  --md-numbered-list-gap: var(--spacing-base); // @presenter Spacing
12
12
 
13
13
  --md-numbered-list-marker-bg-color: var(--color-warm-grey-2); // @presenter Color
14
- --md-numbered-list-marker-bg-color-hover: var(--color-warm-grey-3); // @presenter Color
15
- --md-numbered-list-marker-icon-bg-color: transparent; // @presenter Color
16
14
  --md-numbered-list-marker-text-color: var(--text-color-primary); // @presenter Color
17
15
  --md-numbered-list-marker-font-size: var(--font-size-base); // @presenter FontSize
18
16
 
@@ -23,7 +21,10 @@ exports.markdownNumberedList = (0, styled_components_1.css) `
23
21
  --md-numbered-list-icon-small-size: 12px; // @presenter Spacing
24
22
  --md-numbered-list-dot-size: 10px; // @presenter Spacing
25
23
  --md-numbered-list-dot-rail-padding-top: 7px; // @presenter Spacing
26
- --md-numbered-list-dot-link-gap: 6px; // @presenter Spacing
24
+ --md-numbered-list-marker-link-gap: 10px; // @presenter Spacing
25
+ --md-numbered-list-marker-link-size: 20px; // @presenter Spacing
26
+ --md-numbered-list-marker-link-icon-color: var(--md-numbered-list-marker-text-color); // @presenter Color
27
+ --md-numbered-list-marker-link-bg-color: var(--bg-color-tonal); // @presenter Color
27
28
 
28
29
  --md-numbered-list-tail-bg-color: var(--md-numbered-list-marker-bg-color); // @presenter Color
29
30
  --md-numbered-list-tail-fade-gradient: linear-gradient(to bottom, var(--md-numbered-list-tail-bg-color), transparent); // @presenter Color
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/theme",
3
- "version": "0.71.0-next.2",
3
+ "version": "0.71.0-next.4",
4
4
  "description": "Shared UI components lib",
5
5
  "keywords": [
6
6
  "theme",
@@ -67,7 +67,6 @@ const numberedListDarkMode = css`
67
67
  */
68
68
 
69
69
  --md-numbered-list-marker-bg-color: var(--color-warm-grey-3); // @presenter Color
70
- --md-numbered-list-marker-bg-color-hover: var(--color-warm-grey-4); // @presenter Color
71
70
 
72
71
  // @tokens End
73
72
  `
package/src/index.ts CHANGED
@@ -318,6 +318,7 @@ export * from '@redocly/theme/icons/IdeaIcon/IdeaIcon';
318
318
  export * from '@redocly/theme/icons/NewChatIcon/NewChatIcon';
319
319
  /* Layouts */
320
320
  export * from '@redocly/theme/layouts/RootLayout';
321
+ export * from '@redocly/theme/layouts/CustomContexts';
321
322
  export * from '@redocly/theme/layouts/PageLayout';
322
323
  export * from '@redocly/theme/layouts/NotFound';
323
324
  export * from '@redocly/theme/layouts/Forbidden';
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+
3
+ import type { JSX } from 'react';
4
+
5
+ type CustomContextsProps = React.PropsWithChildren<{}>;
6
+
7
+ // Eject this component to wrap every page in custom React context providers.
8
+ export function CustomContexts({ children }: CustomContextsProps): JSX.Element {
9
+ return <>{children}</>;
10
+ }
@@ -7,6 +7,7 @@ import { Footer } from '@redocly/theme/components/Footer/Footer';
7
7
  import { SkipContent } from '@redocly/theme/components/SkipContent/SkipContent';
8
8
  import { AIAssistantButton } from '@redocly/theme/components/Buttons/AIAssistantButton';
9
9
  import { useThemeHooks } from '@redocly/theme/core/hooks';
10
+ import { CustomContexts } from '@redocly/theme/layouts/CustomContexts';
10
11
 
11
12
  export type LayoutConfig = {
12
13
  children: React.ReactNode;
@@ -18,11 +19,13 @@ export function RootLayout({ children }: LayoutConfig): JSX.Element {
18
19
 
19
20
  return (
20
21
  <div data-component-name="layouts/RootLayout">
21
- <SkipContent />
22
- <Navbar />
23
- {children}
24
- <Footer />
25
- {askAi && <AIAssistantButton />}
22
+ <CustomContexts>
23
+ <SkipContent />
24
+ <Navbar />
25
+ {children}
26
+ <Footer />
27
+ {askAi && <AIAssistantButton />}
28
+ </CustomContexts>
26
29
  </div>
27
30
  );
28
31
  }
@@ -63,11 +63,12 @@ export function NumberedItem({
63
63
  <MarkerContent className="numbered-item-marker-content">{index}</MarkerContent>
64
64
  )}
65
65
  {anchorId && (
66
- <MarkerLink className="numbered-item-marker-link" $isDot={isDot}>
66
+ <MarkerLink className="numbered-item-marker-link" aria-hidden="true">
67
67
  <MarkerLinkIcon
68
68
  aria-hidden="true"
69
69
  focusable="false"
70
- color="--md-numbered-list-marker-text-color"
70
+ size="var(--md-numbered-list-marker-link-size)"
71
+ color="--md-numbered-list-marker-link-icon-color"
71
72
  />
72
73
  </MarkerLink>
73
74
  )}
@@ -156,27 +157,25 @@ const MarkerContent = styled.span`
156
157
  justify-content: center;
157
158
  `;
158
159
 
159
- const MarkerLink = styled.span<{ $isDot?: boolean }>`
160
+ const MarkerLink = styled.span`
161
+ position: absolute;
162
+ inset-inline-end: calc(100% + var(--md-numbered-list-marker-link-gap));
160
163
  display: none;
161
164
  align-items: center;
162
165
  justify-content: center;
163
166
 
164
- svg {
165
- width: var(--icon-width, 16px);
166
- height: var(--icon-height, 16px);
167
+ &::before {
168
+ content: '';
169
+ position: absolute;
170
+ inset-block: 0;
171
+ inset-inline-start: 100%;
172
+ width: var(--md-numbered-list-marker-link-gap);
167
173
  }
168
-
169
- ${({ $isDot }) =>
170
- $isDot &&
171
- css`
172
- position: absolute;
173
- inset-inline-end: calc(100% + var(--md-numbered-list-dot-link-gap));
174
- `}
175
174
  `;
176
175
 
177
176
  const MarkerLinkIcon = styled(LinkIcon)`
178
177
  path:first-of-type {
179
- fill: var(--md-numbered-list-marker-icon-bg-color);
178
+ fill: var(--md-numbered-list-marker-link-bg-color);
180
179
  }
181
180
  `;
182
181
 
@@ -256,18 +255,10 @@ const NumberedItemWrapper = styled.li<{ $size?: string; $isDot?: boolean }>`
256
255
  padding-bottom: 0;
257
256
  }
258
257
 
259
- &:hover,
260
- &:focus-within {
261
- ${Marker} {
262
- background-color: ${({ $isDot }) =>
263
- $isDot ? 'var(--text-color-primary)' : 'var(--md-numbered-list-marker-bg-color-hover)'};
264
- }
265
-
266
- a ${Marker}:not([data-dot]) .numbered-item-marker-content {
267
- display: none;
268
- }
269
-
270
- a ${Marker} .numbered-item-marker-link {
258
+ &:has(${MarkerRail} a:hover),
259
+ &:has(${MarkerRail} a:focus-visible),
260
+ &:has(${NumberedItemHeadline}:hover) {
261
+ .numbered-item-marker-link {
271
262
  display: flex;
272
263
  }
273
264
  }
@@ -9,8 +9,6 @@ export const markdownNumberedList = css`
9
9
  --md-numbered-list-gap: var(--spacing-base); // @presenter Spacing
10
10
 
11
11
  --md-numbered-list-marker-bg-color: var(--color-warm-grey-2); // @presenter Color
12
- --md-numbered-list-marker-bg-color-hover: var(--color-warm-grey-3); // @presenter Color
13
- --md-numbered-list-marker-icon-bg-color: transparent; // @presenter Color
14
12
  --md-numbered-list-marker-text-color: var(--text-color-primary); // @presenter Color
15
13
  --md-numbered-list-marker-font-size: var(--font-size-base); // @presenter FontSize
16
14
 
@@ -21,7 +19,10 @@ export const markdownNumberedList = css`
21
19
  --md-numbered-list-icon-small-size: 12px; // @presenter Spacing
22
20
  --md-numbered-list-dot-size: 10px; // @presenter Spacing
23
21
  --md-numbered-list-dot-rail-padding-top: 7px; // @presenter Spacing
24
- --md-numbered-list-dot-link-gap: 6px; // @presenter Spacing
22
+ --md-numbered-list-marker-link-gap: 10px; // @presenter Spacing
23
+ --md-numbered-list-marker-link-size: 20px; // @presenter Spacing
24
+ --md-numbered-list-marker-link-icon-color: var(--md-numbered-list-marker-text-color); // @presenter Color
25
+ --md-numbered-list-marker-link-bg-color: var(--bg-color-tonal); // @presenter Color
25
26
 
26
27
  --md-numbered-list-tail-bg-color: var(--md-numbered-list-marker-bg-color); // @presenter Color
27
28
  --md-numbered-list-tail-fade-gradient: linear-gradient(to bottom, var(--md-numbered-list-tail-bg-color), transparent); // @presenter Color