@redocly/theme 0.68.0-next.0 → 0.68.0-next.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 (41) hide show
  1. package/lib/components/Catalog/CatalogEntities.js +2 -11
  2. package/lib/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityRelationsTable.js +3 -16
  3. package/lib/components/Catalog/CatalogEntity/CatalogEntitySchema.d.ts +1 -1
  4. package/lib/components/Catalog/CatalogEntity/CatalogEntitySchema.js +3 -9
  5. package/lib/components/Catalog/CatalogFilter/CatalogFilterCheckboxes.js +1 -7
  6. package/lib/components/Feedback/Feedback.js +4 -1
  7. package/lib/core/hooks/use-active-heading.js +5 -2
  8. package/lib/core/hooks/use-telemetry-fallback.d.ts +1 -1
  9. package/lib/core/hooks/use-telemetry-fallback.js +1 -1
  10. package/lib/core/styles/dark.js +11 -0
  11. package/lib/core/styles/global.js +36 -34
  12. package/lib/markdoc/components/NumberedList/NumberedItem.d.ts +25 -0
  13. package/lib/markdoc/components/NumberedList/NumberedItem.js +217 -0
  14. package/lib/markdoc/components/NumberedList/NumberedList.d.ts +5 -0
  15. package/lib/markdoc/components/NumberedList/NumberedList.js +28 -0
  16. package/lib/markdoc/components/NumberedList/variables.d.ts +1 -0
  17. package/lib/markdoc/components/NumberedList/variables.js +42 -0
  18. package/lib/markdoc/components/default.d.ts +2 -0
  19. package/lib/markdoc/components/default.js +2 -0
  20. package/lib/markdoc/default.js +4 -0
  21. package/lib/markdoc/tags/numbered-item.d.ts +2 -0
  22. package/lib/markdoc/tags/numbered-item.js +35 -0
  23. package/lib/markdoc/tags/numbered-list.d.ts +2 -0
  24. package/lib/markdoc/tags/numbered-list.js +28 -0
  25. package/package.json +1 -1
  26. package/src/components/Catalog/CatalogEntities.tsx +7 -11
  27. package/src/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityRelationsTable.tsx +8 -9
  28. package/src/components/Catalog/CatalogEntity/CatalogEntitySchema.tsx +6 -8
  29. package/src/components/Catalog/CatalogFilter/CatalogFilterCheckboxes.tsx +2 -4
  30. package/src/components/Feedback/Feedback.tsx +11 -1
  31. package/src/core/hooks/use-active-heading.ts +7 -2
  32. package/src/core/hooks/use-telemetry-fallback.ts +1 -1
  33. package/src/core/styles/dark.ts +12 -0
  34. package/src/core/styles/global.ts +2 -0
  35. package/src/markdoc/components/NumberedList/NumberedItem.tsx +274 -0
  36. package/src/markdoc/components/NumberedList/NumberedList.tsx +37 -0
  37. package/src/markdoc/components/NumberedList/variables.ts +39 -0
  38. package/src/markdoc/components/default.ts +2 -0
  39. package/src/markdoc/default.ts +4 -0
  40. package/src/markdoc/tags/numbered-item.ts +46 -0
  41. package/src/markdoc/tags/numbered-list.ts +34 -0
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.CatalogEntities = CatalogEntities;
37
37
  const react_1 = __importStar(require("react"));
38
38
  const hooks_1 = require("../../core/hooks");
39
+ const utils_1 = require("../../core/utils");
39
40
  const ArrowDownIcon_1 = require("../../icons/ArrowDownIcon/ArrowDownIcon");
40
41
  const CatalogCardView_1 = require("../../components/Catalog/CatalogCardView/CatalogCardView");
41
42
  const CatalogTableView_1 = require("../../components/Catalog/CatalogTableView/CatalogTableView");
@@ -45,9 +46,6 @@ const CatalogEntitiesEmptyState_1 = require("../../components/Catalog/CatalogEnt
45
46
  const LOAD_MORE_THRESHOLD = 10;
46
47
  function CatalogEntities(props) {
47
48
  const { catalogConfig, excludedEntities, filterQuery, entitiesTypes, sortOption, searchQuery, viewMode, setEntitiesCounter, handleSortClick, isColumnSorted, } = props;
48
- const { getEntityDetailsLink } = (0, hooks_1.useCatalogEntityDetails)({
49
- catalogConfig,
50
- });
51
49
  const { useTelemetry, useFetchCatalogEntities } = (0, hooks_1.useThemeHooks)();
52
50
  const telemetry = useTelemetry();
53
51
  const { initialFilter } = (0, hooks_1.useCatalogEntities)({
@@ -65,14 +63,7 @@ function CatalogEntities(props) {
65
63
  const onRowClick = (entity) => {
66
64
  if (searchQuery) {
67
65
  telemetry.sendCatalogEntitiesListSearchResultClickedMessage([
68
- {
69
- id: entity.id,
70
- object: 'catalog_entity',
71
- uri: getEntityDetailsLink(entity),
72
- query: searchQuery,
73
- entityKey: entity.key,
74
- entityType: entity.type,
75
- },
66
+ Object.assign(Object.assign({}, (0, utils_1.getBaseDataAttributes)('catalogEntitiesListSearchResultId', 'catalogEntitiesListSearchResult')), { query: searchQuery, entityId: entity.id, entityKey: entity.key, entityType: entity.type }),
76
67
  ]);
77
68
  }
78
69
  };
@@ -9,28 +9,15 @@ const styled_components_1 = __importDefault(require("styled-components"));
9
9
  const CatalogActionsRow_1 = require("../../../../components/Catalog/CatalogActionsRow");
10
10
  const CatalogEntityRelationsTableContent_1 = require("../../../../components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityRelationsTableContent");
11
11
  const hooks_1 = require("../../../../core/hooks");
12
+ const utils_1 = require("../../../../core/utils");
12
13
  const constants_1 = require("../../../../core/constants");
13
14
  function CatalogEntityRelationsTable({ entity, entitiesCatalogConfig, catalogConfig, relations, query, searchQuery, setSearchQuery, heading, columns, setSortOption, sortOption, handleSortClick, isColumnSorted, shouldShowLoadMore, listType, }) {
14
15
  const { useTelemetry } = (0, hooks_1.useThemeHooks)();
15
16
  const telemetry = useTelemetry();
16
- const { getEntityDetailsLink } = (0, hooks_1.useCatalogEntityDetails)({
17
- catalogConfig,
18
- entitiesCatalogConfig,
19
- });
20
17
  const onRowClick = (relatedEntity) => {
21
18
  if (searchQuery) {
22
- telemetry.sendCatalogEntitiesRelatedEntitiesListSearchResultClickMessage([
23
- {
24
- id: relatedEntity.id,
25
- object: 'catalog_entity',
26
- uri: getEntityDetailsLink(relatedEntity),
27
- query: searchQuery,
28
- entityKey: entity.key,
29
- entityType: entity.type,
30
- relationType: constants_1.reverseRelationMap[relatedEntity.relationType],
31
- relatedEntityKey: relatedEntity.key,
32
- relatedEntityType: relatedEntity.type,
33
- },
19
+ telemetry.sendCatalogEntitiesRelatedEntitiesListSearchResultClickedMessage([
20
+ Object.assign(Object.assign({}, (0, utils_1.getBaseDataAttributes)('catalogEntitiesRelatedEntitiesListSearchResultId', 'catalogEntitiesRelatedEntitiesListSearchResult')), { query: searchQuery, entityKey: entity.key, entityType: entity.type, relationType: constants_1.reverseRelationMap[relatedEntity.relationType], relatedEntityId: relatedEntity.id, relatedEntityKey: relatedEntity.key, relatedEntityType: relatedEntity.type }),
34
21
  ]);
35
22
  }
36
23
  };
@@ -12,4 +12,4 @@ export type CatalogEntitySchemaProps = {
12
12
  typeName: string;
13
13
  }>;
14
14
  };
15
- export declare function CatalogEntitySchema({ entity, relatedEntity, catalogConfig, RedocSchema, StoreProvider, GraphqlTypeRenderer }: CatalogEntitySchemaProps): React.JSX.Element;
15
+ export declare function CatalogEntitySchema({ entity, relatedEntity, RedocSchema, StoreProvider, GraphqlTypeRenderer }: CatalogEntitySchemaProps): React.JSX.Element;
@@ -42,9 +42,10 @@ const styled_components_1 = __importDefault(require("styled-components"));
42
42
  const Sampler = __importStar(require("openapi-sampler"));
43
43
  const hooks_1 = require("../../../core/hooks");
44
44
  const hooks_2 = require("../../../core/hooks");
45
+ const utils_1 = require("../../../core/utils");
45
46
  const JsonViewer_1 = require("../../../components/JsonViewer/JsonViewer");
46
47
  const CopyButton_1 = require("../../../components/Buttons/CopyButton");
47
- function CatalogEntitySchema({ entity, relatedEntity, catalogConfig, RedocSchema, StoreProvider, GraphqlTypeRenderer, }) {
48
+ function CatalogEntitySchema({ entity, relatedEntity, RedocSchema, StoreProvider, GraphqlTypeRenderer, }) {
48
49
  var _a, _b;
49
50
  const { useTranslate, useTelemetry } = (0, hooks_1.useThemeHooks)();
50
51
  const telemetry = useTelemetry();
@@ -52,18 +53,11 @@ function CatalogEntitySchema({ entity, relatedEntity, catalogConfig, RedocSchema
52
53
  const { definition, parsedSchema, rawSchema } = (0, hooks_2.useCatalogEntitySchema)({ entity, relatedEntity });
53
54
  const isGraphql = ((_a = entity.metadata) === null || _a === void 0 ? void 0 : _a.specType) === 'graphql';
54
55
  const graphqlSDL = (_b = entity === null || entity === void 0 ? void 0 : entity.metadata) === null || _b === void 0 ? void 0 : _b.sdl;
55
- const { getEntityDetailsLink } = (0, hooks_1.useCatalogEntityDetails)({
56
- catalogConfig,
57
- });
58
56
  return (react_1.default.createElement(MetadataWrapper, { "data-component-name": "Catalog/CatalogEntity/CatalogEntitySchema" },
59
57
  react_1.default.createElement(HeaderWrapper, null,
60
58
  react_1.default.createElement(Heading, null, translate('catalog.entity.schema.title')),
61
59
  !isGraphql && (react_1.default.createElement(CopyButton_1.CopyButton, { data: rawSchema, buttonText: "Copy Schema", type: "compound", variant: "secondary", iconPosition: "right", size: "medium", onCopyClick: () => telemetry.sendCatalogEntitiesCopyDataSchemaClickedMessage([
62
- {
63
- id: entity.id,
64
- object: 'catalog_entity',
65
- uri: getEntityDetailsLink(entity),
66
- },
60
+ Object.assign(Object.assign({}, (0, utils_1.getBaseDataAttributes)('catalogEntitiesCopyDataSchemaId', 'button')), { entityId: entity.id, entityKey: entity.key, entityType: entity.type }),
67
61
  ]) }))),
68
62
  react_1.default.createElement(SplitViewWrapper, null,
69
63
  react_1.default.createElement(SchemaContentWrapper, null, isGraphql && graphqlSDL && GraphqlTypeRenderer ? (react_1.default.createElement(GraphqlTypeRenderer, { sdl: graphqlSDL, typeName: entity.title })) : (react_1.default.createElement(StoreProvider, { definition: definition },
@@ -104,13 +104,7 @@ function CatalogFilterCheckboxes({ filter, filterValuesCasing, showCounter = tru
104
104
  return (react_1.default.createElement(FilterCheckboxOption, { key: id, role: "link", onClick: () => {
105
105
  filter.toggleOption(value);
106
106
  telemetry.sendCatalogEntitiesFilterCheckboxToggledMessage([
107
- {
108
- id: filter.property + '--' + value,
109
- object: 'checkbox',
110
- uri: window.location.href,
111
- category: filter.property,
112
- value: value,
113
- },
107
+ Object.assign(Object.assign({}, (0, utils_1.getBaseDataAttributes)('catalogEntitiesFilterCheckboxId', 'checkbox')), { category: filter.property, value: value }),
114
108
  ]);
115
109
  } },
116
110
  react_1.default.createElement(CheckboxIcon_1.CheckboxIcon, { checked: filter.selectedOptions instanceof Set
@@ -47,6 +47,7 @@ const Comment_1 = require("../../components/Feedback/Comment");
47
47
  const Mood_1 = require("../../components/Feedback/Mood");
48
48
  const Scale_1 = require("../../components/Feedback/Scale");
49
49
  const constants_1 = require("../../core/constants");
50
+ const utils_1 = require("../../core/utils");
50
51
  const feedbackComponents = {
51
52
  rating: Rating_1.Rating,
52
53
  sentiment: Sentiment_1.Sentiment,
@@ -74,7 +75,9 @@ function Feedback(props) {
74
75
  return (React.createElement(FeedbackWrapper, { "data-component-name": "Feedback/Feedback" },
75
76
  React.createElement(FeedbackComponent, { settings: settings, onSubmit: (values) => {
76
77
  submitFeedback({ type, values, path });
77
- telemetry.sendFeedbackMessage({ feedbackType: type });
78
+ telemetry.sendFeedbackMessage([
79
+ Object.assign(Object.assign({}, (0, utils_1.getBaseDataAttributes)('feedbackFormId', 'feedbackForm')), { feedbackType: type }),
80
+ ]);
78
81
  } })));
79
82
  };
80
83
  return React.createElement(React.Fragment, { key: pathname }, renderFeedbackComponent());
@@ -46,8 +46,11 @@ function useActiveHeading(contentElement, displayedHeadings) {
46
46
  const allHeaders = allContent.querySelectorAll(`.${constants_1.HEADING_ANCHOR_CLASS}`);
47
47
  const headers = Array.from(allHeaders);
48
48
  if (displayedHeadingsRef.current && displayedHeadingsRef.current.length > 0) {
49
- const displayedIds = displayedHeadingsRef.current.map((h) => h === null || h === void 0 ? void 0 : h.id).filter(Boolean);
50
- return headers.filter((header) => displayedIds.includes(header.id));
49
+ // Resolve targets by id so anchors that are not headings (e.g. numbered
50
+ // list items with a lifted headline) can be scrolled to and tracked.
51
+ return displayedHeadingsRef.current
52
+ .map((heading) => (heading === null || heading === void 0 ? void 0 : heading.id) ? allContent.querySelector(`[id="${heading.id}"]`) : null)
53
+ .filter((element) => element !== null);
51
54
  }
52
55
  return headers;
53
56
  };
@@ -6,7 +6,7 @@ export declare const useTelemetryFallback: () => {
6
6
  sendCatalogEntitiesCopyDataSchemaClickedMessage: () => void;
7
7
  sendCatalogEntitiesViewModeChangedMessage: () => void;
8
8
  sendCatalogEntitiesRelatedEntitiesListSearchQueryMessage: () => void;
9
- sendCatalogEntitiesRelatedEntitiesListSearchResultClickMessage: () => void;
9
+ sendCatalogEntitiesRelatedEntitiesListSearchResultClickedMessage: () => void;
10
10
  sendCatalogEntitiesListSearchQueryMessage: () => void;
11
11
  sendCatalogEntitiesListSearchResultClickedMessage: () => void;
12
12
  sendRedirectMessage: () => void;
@@ -11,7 +11,7 @@ const useTelemetryFallback = () => ({
11
11
  sendCatalogEntitiesCopyDataSchemaClickedMessage: () => { },
12
12
  sendCatalogEntitiesViewModeChangedMessage: () => { },
13
13
  sendCatalogEntitiesRelatedEntitiesListSearchQueryMessage: () => { },
14
- sendCatalogEntitiesRelatedEntitiesListSearchResultClickMessage: () => { },
14
+ sendCatalogEntitiesRelatedEntitiesListSearchResultClickedMessage: () => { },
15
15
  sendCatalogEntitiesListSearchQueryMessage: () => { },
16
16
  sendCatalogEntitiesListSearchResultClickedMessage: () => { },
17
17
  sendRedirectMessage: () => { },
@@ -58,6 +58,16 @@ const badgesDarkMode = (0, styled_components_1.css) `
58
58
 
59
59
  // @tokens End
60
60
  `;
61
+ const numberedListDarkMode = (0, styled_components_1.css) `
62
+ /**
63
+ * @tokens Markdown Numbered List
64
+ */
65
+
66
+ --md-numbered-list-marker-bg-color: var(--color-warm-grey-3); // @presenter Color
67
+ --md-numbered-list-marker-bg-color-hover: var(--color-warm-grey-4); // @presenter Color
68
+
69
+ // @tokens End
70
+ `;
61
71
  exports.darkMode = (0, styled_components_1.css) `
62
72
  /* === Dark Theme Colors === */
63
73
 
@@ -349,6 +359,7 @@ exports.darkMode = (0, styled_components_1.css) `
349
359
  ${variables_dark_14.bannerDarkMode}
350
360
  ${variables_dark_15.admonitionDarkMode}
351
361
  ${badgesDarkMode}
362
+ ${numberedListDarkMode}
352
363
  ${palette_dark_1.activeBrandPaletteDark}
353
364
  ${variables_dark_16.codeBlockDarkMode}
354
365
  /**
@@ -31,23 +31,24 @@ const variables_26 = require("../../components/Product/variables");
31
31
  const variables_27 = require("../../components/Markdown/variables");
32
32
  const variables_28 = require("../../components/Banner/variables");
33
33
  const variables_29 = require("../../markdoc/components/Tabs/variables");
34
- const variables_30 = require("../../markdoc/components/Diagram/variables");
35
- const variables_31 = require("../../components/LastUpdated/variables");
36
- const variables_32 = require("../../components/Logo/variables");
37
- const variables_33 = require("../../components/StatusCode/variables");
38
- const variables_34 = require("../../components/Segmented/variables");
39
- const variables_35 = require("../../components/UserMenu/variables");
40
- const variables_36 = require("../../components/Tags/variables");
41
- const variables_37 = require("../../components/VersionPicker/variables");
42
- const variables_38 = require("../../components/DatePicker/variables");
43
- const variables_39 = require("../../components/Switch/variables");
44
- const variables_40 = require("../../markdoc/components/Cards/variables");
45
- const variables_41 = require("../../markdoc/components/CodeWalkthrough/variables");
46
- const variables_42 = require("../../components/SkipContent/variables");
47
- const variables_43 = require("../../components/PageActions/variables");
48
- const variables_44 = require("../../components/SvgViewer/variables");
49
- const variables_45 = require("../../components/Toast/variables");
50
- const variables_46 = require("../../components/PageNavigation/variables");
34
+ const variables_30 = require("../../markdoc/components/NumberedList/variables");
35
+ const variables_31 = require("../../markdoc/components/Diagram/variables");
36
+ const variables_32 = require("../../components/LastUpdated/variables");
37
+ const variables_33 = require("../../components/Logo/variables");
38
+ const variables_34 = require("../../components/StatusCode/variables");
39
+ const variables_35 = require("../../components/Segmented/variables");
40
+ const variables_36 = require("../../components/UserMenu/variables");
41
+ const variables_37 = require("../../components/Tags/variables");
42
+ const variables_38 = require("../../components/VersionPicker/variables");
43
+ const variables_39 = require("../../components/DatePicker/variables");
44
+ const variables_40 = require("../../components/Switch/variables");
45
+ const variables_41 = require("../../markdoc/components/Cards/variables");
46
+ const variables_42 = require("../../markdoc/components/CodeWalkthrough/variables");
47
+ const variables_43 = require("../../components/SkipContent/variables");
48
+ const variables_44 = require("../../components/PageActions/variables");
49
+ const variables_45 = require("../../components/SvgViewer/variables");
50
+ const variables_46 = require("../../components/Toast/variables");
51
+ const variables_47 = require("../../components/PageNavigation/variables");
51
52
  const palette_1 = require("./palette");
52
53
  const dark_1 = require("./dark");
53
54
  const themeColors = (0, styled_components_1.css) `
@@ -1300,28 +1301,29 @@ exports.styles = (0, styled_components_1.css) `
1300
1301
  ${variables_20.button}
1301
1302
  ${variables_21.aiAssistantButton}
1302
1303
  ${variables_21.connectMCPButton}
1303
- ${variables_40.cards}
1304
+ ${variables_41.cards}
1304
1305
  ${variables_8.catalog}
1305
1306
  ${variables_11.catalogClassic}
1306
1307
  ${variables_25.code}
1307
- ${variables_41.codeWalkthrough}
1308
+ ${variables_42.codeWalkthrough}
1308
1309
  ${docsDropdown}
1309
1310
  ${variables_15.dropdown}
1310
1311
  ${error}
1311
1312
  ${variables_10.filter}
1312
1313
  ${variables_19.footer}
1313
1314
  ${headingsTypography}
1314
- ${variables_36.httpTag}
1315
+ ${variables_37.httpTag}
1315
1316
  ${variables_9.image}
1316
1317
  ${inputs}
1317
1318
  ${variables_1.languagePicker}
1318
- ${variables_31.lastUpdated}
1319
+ ${variables_32.lastUpdated}
1319
1320
  ${links}
1320
1321
  ${loadProgressBar}
1321
- ${variables_32.logo}
1322
+ ${variables_33.logo}
1322
1323
  ${variables_27.markdown}
1323
1324
  ${variables_29.markdownTabs}
1324
- ${variables_30.diagram}
1325
+ ${variables_30.markdownNumberedList}
1326
+ ${variables_31.diagram}
1325
1327
  ${variables_24.menu}
1326
1328
  ${variables_24.mobileMenu}
1327
1329
  ${modal}
@@ -1340,26 +1342,26 @@ exports.styles = (0, styled_components_1.css) `
1340
1342
  ${variables_7.toc}
1341
1343
  ${variables_16.tooltip}
1342
1344
  ${typography}
1343
- ${variables_35.userMenu}
1344
- ${variables_37.versionPicker}
1345
+ ${variables_36.userMenu}
1346
+ ${variables_38.versionPicker}
1345
1347
  ${zIndexDepth}
1346
1348
  ${scorecardColors}
1347
- ${variables_33.statusCode}
1349
+ ${variables_34.statusCode}
1348
1350
  ${tab}
1349
1351
  ${icon}
1350
1352
  ${tree}
1351
- ${variables_34.segmented}
1352
- ${variables_39.switcher}
1353
+ ${variables_35.segmented}
1354
+ ${variables_40.switcher}
1353
1355
  ${variables_17.checkbox}
1354
1356
  ${variables_3.feedback}
1355
1357
  ${variables_2.scorecard}
1356
- ${variables_38.datePicker}
1358
+ ${variables_39.datePicker}
1357
1359
  ${replay}
1358
- ${variables_42.skipContent}
1359
- ${variables_43.pageActions}
1360
- ${variables_44.svgViewer}
1361
- ${variables_45.toast}
1362
- ${variables_46.pageNavigation}
1360
+ ${variables_43.skipContent}
1361
+ ${variables_44.pageActions}
1362
+ ${variables_45.svgViewer}
1363
+ ${variables_46.toast}
1364
+ ${variables_47.pageNavigation}
1363
1365
 
1364
1366
  background-color: var(--bg-color);
1365
1367
  color: var(--text-color-primary);
@@ -0,0 +1,25 @@
1
+ import type { JSX, PropsWithChildren, ReactNode } from 'react';
2
+ export declare const NumberedListType: {
3
+ readonly ICON: 'icon';
4
+ readonly NUMBER: 'number';
5
+ readonly DOT: 'dot';
6
+ };
7
+ export type NumberedListType = (typeof NumberedListType)[keyof typeof NumberedListType];
8
+ export declare const NumberedListSize: {
9
+ readonly SMALL: 'small';
10
+ readonly MEDIUM: 'medium';
11
+ };
12
+ export type NumberedListSize = (typeof NumberedListSize)[keyof typeof NumberedListSize];
13
+ export type NumberedItemProps = PropsWithChildren<{
14
+ headline?: ReactNode;
15
+ anchorId?: string;
16
+ headlineLevel?: number;
17
+ icon?: string | ReactNode;
18
+ iconRawContent?: string;
19
+ className?: string;
20
+ type?: NumberedListType;
21
+ size?: NumberedListSize;
22
+ index?: number;
23
+ isLast?: boolean;
24
+ }>;
25
+ export declare function NumberedItem({ headline, anchorId, headlineLevel, icon, iconRawContent, className, type, size, index, isLast, children }: NumberedItemProps): JSX.Element;
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.NumberedListSize = exports.NumberedListType = void 0;
37
+ exports.NumberedItem = NumberedItem;
38
+ const react_1 = __importStar(require("react"));
39
+ const styled_components_1 = __importStar(require("styled-components"));
40
+ const GenericIcon_1 = require("../../../icons/GenericIcon/GenericIcon");
41
+ const LinkIcon_1 = require("../../../icons/LinkIcon/LinkIcon");
42
+ exports.NumberedListType = {
43
+ ICON: 'icon',
44
+ NUMBER: 'number',
45
+ DOT: 'dot',
46
+ };
47
+ exports.NumberedListSize = {
48
+ SMALL: 'small',
49
+ MEDIUM: 'medium',
50
+ };
51
+ function NumberedItem({ headline, anchorId, headlineLevel, icon, iconRawContent, className, type = exports.NumberedListType.NUMBER, size = exports.NumberedListSize.MEDIUM, index = 1, isLast = true, children, }) {
52
+ const isDot = type === exports.NumberedListType.DOT;
53
+ const headlineTextId = anchorId ? `${anchorId}-heading-text` : undefined;
54
+ const marker = (react_1.default.createElement(Marker, { $type: type, $size: size, "data-dot": isDot || undefined },
55
+ type === exports.NumberedListType.ICON && (react_1.default.createElement(MarkerContent, { className: "numbered-item-marker-content" },
56
+ react_1.default.createElement(GenericIcon_1.GenericIcon, { icon: icon, rawContent: iconRawContent }))),
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" })))));
60
+ return (react_1.default.createElement(NumberedItemWrapper, { "data-component-name": "Markdoc/NumberedList/NumberedItem", className: className, id: anchorId, $size: size, $isDot: isDot },
61
+ react_1.default.createElement(MarkerRail, null,
62
+ anchorId ? (react_1.default.createElement("a", Object.assign({ href: `#${anchorId}` }, (headline
63
+ ? { 'aria-labelledby': headlineTextId }
64
+ : { 'aria-label': 'Link to this item' })), marker)) : (marker),
65
+ react_1.default.createElement(Tail, { "data-testid": "numbered-item-tail", $isLast: isLast })),
66
+ react_1.default.createElement(NumberedItemContent, null,
67
+ headline &&
68
+ (0, react_1.createElement)(NumberedItemHeadline, { as: `h${headlineLevel !== null && headlineLevel !== void 0 ? headlineLevel : 3}`, id: headlineTextId }, headline),
69
+ react_1.default.createElement(NumberedItemBody, null, children))));
70
+ }
71
+ const markerSize = (0, styled_components_1.css) `
72
+ ${({ $size }) => $size === exports.NumberedListSize.SMALL
73
+ ? (0, styled_components_1.css) `
74
+ width: var(--md-numbered-list-marker-small-size);
75
+ height: var(--md-numbered-list-marker-small-size);
76
+ --icon-width: var(--md-numbered-list-icon-small-size);
77
+ --icon-height: var(--md-numbered-list-icon-small-size);
78
+ `
79
+ : (0, styled_components_1.css) `
80
+ width: var(--md-numbered-list-marker-medium-size);
81
+ height: var(--md-numbered-list-marker-medium-size);
82
+ --icon-width: var(--md-numbered-list-icon-medium-size);
83
+ --icon-height: var(--md-numbered-list-icon-medium-size);
84
+ `}
85
+ `;
86
+ const Marker = styled_components_1.default.span `
87
+ position: relative;
88
+ display: flex;
89
+ align-items: center;
90
+ justify-content: center;
91
+ flex-shrink: 0;
92
+ border-radius: 50%;
93
+ color: var(--md-numbered-list-marker-text-color);
94
+ font-size: var(--md-numbered-list-marker-font-size);
95
+
96
+ ${({ $type }) => $type === exports.NumberedListType.DOT
97
+ ? (0, styled_components_1.css) `
98
+ width: var(--md-numbered-list-dot-size);
99
+ height: var(--md-numbered-list-dot-size);
100
+ background-color: var(--text-color-primary);
101
+ `
102
+ : (0, styled_components_1.css) `
103
+ ${markerSize}
104
+ background-color: var(--md-numbered-list-marker-bg-color);
105
+ `}
106
+ `;
107
+ const MarkerContent = styled_components_1.default.span `
108
+ display: flex;
109
+ align-items: center;
110
+ justify-content: center;
111
+ `;
112
+ const MarkerLink = styled_components_1.default.span `
113
+ display: none;
114
+ align-items: center;
115
+ justify-content: center;
116
+
117
+ svg {
118
+ width: var(--icon-width, 16px);
119
+ height: var(--icon-height, 16px);
120
+ }
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
+ `;
128
+ const MarkerLinkIcon = (0, styled_components_1.default)(LinkIcon_1.LinkIcon) `
129
+ path:first-of-type {
130
+ fill: var(--md-numbered-list-marker-icon-bg-color);
131
+ }
132
+ `;
133
+ const MarkerRail = styled_components_1.default.span `
134
+ display: flex;
135
+ flex-direction: column;
136
+ align-items: center;
137
+ align-self: stretch;
138
+ flex-shrink: 0;
139
+
140
+ a {
141
+ display: flex;
142
+ border-radius: 50%;
143
+ /* Overrides the global markdown link rule a:not([role='button']), which is more specific. */
144
+ text-decoration: none !important;
145
+
146
+ &:hover,
147
+ &:focus {
148
+ text-decoration: none !important;
149
+ }
150
+ }
151
+ `;
152
+ const Tail = styled_components_1.default.span `
153
+ flex: 1 0 0;
154
+ min-height: var(--spacing-xs);
155
+ width: var(--md-numbered-list-tail-width);
156
+ background: ${({ $isLast }) => $isLast
157
+ ? 'var(--md-numbered-list-tail-fade-gradient)'
158
+ : 'var(--md-numbered-list-tail-bg-color)'};
159
+ `;
160
+ const NumberedItemHeadline = styled_components_1.default.h3 `
161
+ margin: 0;
162
+ color: var(--md-numbered-list-headline-text-color);
163
+ font-size: var(--md-numbered-list-headline-font-size);
164
+ font-weight: var(--md-numbered-list-headline-font-weight);
165
+ line-height: var(--md-numbered-list-headline-line-height);
166
+ `;
167
+ const NumberedItemBody = styled_components_1.default.div `
168
+ display: flex;
169
+ flex-direction: column;
170
+ gap: var(--md-numbered-list-body-gap);
171
+ color: var(--md-numbered-list-body-text-color);
172
+ font-size: var(--md-numbered-list-body-font-size);
173
+
174
+ > p {
175
+ margin: 0;
176
+ }
177
+ `;
178
+ const NumberedItemContent = styled_components_1.default.div `
179
+ display: flex;
180
+ flex-direction: column;
181
+ gap: var(--spacing-unit);
182
+ flex: 1;
183
+ min-width: 0;
184
+ padding-bottom: var(--spacing-sm);
185
+ `;
186
+ const NumberedItemWrapper = styled_components_1.default.li `
187
+ display: flex;
188
+ gap: var(--md-numbered-list-gap);
189
+ align-items: stretch;
190
+
191
+ ${({ $isDot }) => $isDot &&
192
+ (0, styled_components_1.css) `
193
+ ${MarkerRail} {
194
+ padding-top: var(--md-numbered-list-dot-rail-padding-top);
195
+ }
196
+ `}
197
+
198
+ &:last-child ${NumberedItemContent} {
199
+ padding-bottom: 0;
200
+ }
201
+
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 {
213
+ display: flex;
214
+ }
215
+ }
216
+ `;
217
+ //# sourceMappingURL=NumberedItem.js.map
@@ -0,0 +1,5 @@
1
+ import type { JSX, PropsWithChildren } from 'react';
2
+ export type NumberedListProps = PropsWithChildren<{
3
+ className?: string;
4
+ }>;
5
+ export declare function NumberedList({ className, children }: NumberedListProps): JSX.Element | null;
@@ -0,0 +1,28 @@
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.NumberedList = NumberedList;
7
+ const react_1 = __importDefault(require("react"));
8
+ const styled_components_1 = __importDefault(require("styled-components"));
9
+ function NumberedList({ className, children }) {
10
+ if (react_1.default.Children.count(children) === 0) {
11
+ return null;
12
+ }
13
+ return (react_1.default.createElement(NumberedListWrapper, { "data-component-name": "Markdoc/NumberedList/NumberedList", className: className }, children));
14
+ }
15
+ const NumberedListWrapper = styled_components_1.default.ol `
16
+ display: flex;
17
+ flex-direction: column;
18
+ margin: var(--md-numbered-list-margin);
19
+ padding: 0;
20
+ list-style: none;
21
+
22
+ && {
23
+ & > li:not(:last-child) {
24
+ margin-bottom: 0;
25
+ }
26
+ }
27
+ `;
28
+ //# sourceMappingURL=NumberedList.js.map
@@ -0,0 +1 @@
1
+ export declare const markdownNumberedList: import("styled-components").RuleSet<object>;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.markdownNumberedList = void 0;
4
+ const styled_components_1 = require("styled-components");
5
+ exports.markdownNumberedList = (0, styled_components_1.css) `
6
+ /**
7
+ * @tokens Markdown Numbered List
8
+ */
9
+
10
+ --md-numbered-list-margin: var(--spacing-sm) 0; // @presenter Spacing
11
+ --md-numbered-list-gap: var(--spacing-base); // @presenter Spacing
12
+
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
+ --md-numbered-list-marker-text-color: var(--text-color-primary); // @presenter Color
17
+ --md-numbered-list-marker-font-size: var(--font-size-base); // @presenter FontSize
18
+
19
+ --md-numbered-list-marker-medium-size: 28px; // @presenter Spacing
20
+ --md-numbered-list-icon-medium-size: 16px; // @presenter Spacing
21
+ --md-numbered-list-tail-width: 1px; // @presenter Spacing
22
+ --md-numbered-list-marker-small-size: 24px; // @presenter Spacing
23
+ --md-numbered-list-icon-small-size: 12px; // @presenter Spacing
24
+ --md-numbered-list-dot-size: 10px; // @presenter Spacing
25
+ --md-numbered-list-dot-rail-padding-top: 7px; // @presenter Spacing
26
+ --md-numbered-list-dot-link-gap: 6px; // @presenter Spacing
27
+
28
+ --md-numbered-list-tail-bg-color: var(--md-numbered-list-marker-bg-color); // @presenter Color
29
+ --md-numbered-list-tail-fade-gradient: linear-gradient(to bottom, var(--md-numbered-list-tail-bg-color), transparent); // @presenter Color
30
+
31
+ --md-numbered-list-headline-text-color: var(--text-color-primary); // @presenter Color
32
+ --md-numbered-list-headline-font-size: var(--font-size-base); // @presenter FontSize
33
+ --md-numbered-list-headline-font-weight: var(--font-weight-medium); // @presenter FontWeight
34
+ --md-numbered-list-headline-line-height: var(--line-height-base); // @presenter LineHeight
35
+
36
+ --md-numbered-list-body-text-color: var(--text-color-secondary); // @presenter Color
37
+ --md-numbered-list-body-gap: var(--spacing-xs); // @presenter Spacing
38
+ --md-numbered-list-body-font-size: var(--font-size-base); // @presenter FontSize
39
+
40
+ // @tokens End
41
+ `;
42
+ //# sourceMappingURL=variables.js.map