@redocly/theme 0.63.0-next.5 → 0.63.0
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/lib/components/Accordion/variables.js +2 -2
- package/lib/components/Catalog/Catalog.js +114 -50
- package/lib/components/Catalog/CatalogAvatar.d.ts +5 -0
- package/lib/components/Catalog/CatalogAvatar.js +92 -0
- package/lib/components/Catalog/CatalogCardView/CatalogCard.js +26 -7
- package/lib/components/Catalog/CatalogCardView/CatalogCardView.js +10 -2
- package/lib/components/Catalog/CatalogEntity/CatalogEntity.js +17 -17
- package/lib/components/Catalog/CatalogEntity/CatalogEntityGraph/CatalogEntityRelationsLinkedNode.js +4 -20
- package/lib/components/Catalog/CatalogEntity/CatalogEntityGraph/CatalogEntityRelationsNodeContent.d.ts +7 -0
- package/lib/components/Catalog/CatalogEntity/CatalogEntityGraph/CatalogEntityRelationsNodeContent.js +53 -0
- package/lib/components/Catalog/CatalogEntity/CatalogEntityGraph/CatalogEntityRelationsRootNode.js +3 -17
- package/lib/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityHistoryButton.js +30 -9
- package/lib/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityHistorySidebar.js +16 -3
- package/lib/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityVersionItem.js +8 -4
- package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/CatalogEntityProperties.js +11 -5
- package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/DomainsProperty.js +1 -1
- package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/OwnersProperty.js +1 -1
- package/lib/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityApiDescriptionRelations.js +1 -1
- package/lib/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityRelationsTable.js +4 -1
- package/lib/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityRelationsTableContent.js +7 -2
- package/lib/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityTeamRelations.js +1 -1
- package/lib/components/Catalog/CatalogEntity/CatalogEntitySchema.js +1 -1
- package/lib/components/Catalog/CatalogFilter/CatalogFilterCheckboxes.js +1 -1
- package/lib/components/Catalog/CatalogFilter/CatalogFilterContent.d.ts +4 -2
- package/lib/components/Catalog/CatalogFilter/CatalogFilterContent.js +25 -8
- package/lib/components/Catalog/CatalogMobileFiltersPanel/CatalogMobileFiltersPanel.d.ts +7 -0
- package/lib/components/Catalog/CatalogMobileFiltersPanel/CatalogMobileFiltersPanel.js +24 -0
- package/lib/components/Catalog/CatalogMobileFiltersPanel/CatalogMobileFiltersPanelHeader.d.ts +6 -0
- package/lib/components/Catalog/CatalogMobileFiltersPanel/CatalogMobileFiltersPanelHeader.js +26 -0
- package/lib/components/Catalog/CatalogMobileFiltersPanel/CatalogMobileFiltersPanelOverlay.d.ts +7 -0
- package/lib/components/Catalog/CatalogMobileFiltersPanel/CatalogMobileFiltersPanelOverlay.js +30 -0
- package/lib/components/Catalog/CatalogMobileTopBar/CatalogMobileTopBar.d.ts +13 -0
- package/lib/components/Catalog/CatalogMobileTopBar/CatalogMobileTopBar.js +30 -0
- package/lib/components/Catalog/CatalogMobileTopBar/CatalogMobileTopBarControls.d.ts +11 -0
- package/lib/components/Catalog/CatalogMobileTopBar/CatalogMobileTopBarControls.js +21 -0
- package/lib/components/Catalog/CatalogMobileTopBar/CatalogMobileTopBarFiltersButton.d.ts +7 -0
- package/lib/components/Catalog/CatalogMobileTopBar/CatalogMobileTopBarFiltersButton.js +25 -0
- package/lib/components/Catalog/CatalogPageDescription.js +0 -6
- package/lib/components/Catalog/CatalogSelector.d.ts +0 -1
- package/lib/components/Catalog/CatalogSelector.js +50 -16
- package/lib/components/Catalog/CatalogTableView/CatalogTableView.d.ts +2 -1
- package/lib/components/Catalog/CatalogTableView/CatalogTableView.js +20 -5
- package/lib/components/Catalog/CatalogTableView/CatalogUserEntityCell.js +2 -23
- package/lib/components/Catalog/CatalogTagsWithTooltip.d.ts +2 -1
- package/lib/components/Catalog/CatalogTagsWithTooltip.js +14 -6
- package/lib/components/Catalog/variables.js +78 -36
- package/lib/components/Filter/variables.js +1 -1
- package/lib/components/LoadMore/LoadMore.js +1 -0
- package/lib/components/PageActions/PageActions.js +1 -2
- package/lib/components/UserMenu/UserMenu.js +1 -3
- package/lib/core/hooks/index.d.ts +1 -0
- package/lib/core/hooks/index.js +1 -0
- package/lib/core/hooks/use-is-truncated.d.ts +1 -0
- package/lib/core/hooks/use-is-truncated.js +19 -0
- package/lib/core/hooks/use-tabs.d.ts +1 -1
- package/lib/core/hooks/use-tabs.js +30 -17
- package/lib/core/types/l10n.d.ts +1 -1
- package/lib/core/utils/custom-catalog-options-casing.d.ts +15 -0
- package/lib/core/utils/custom-catalog-options-casing.js +32 -0
- package/lib/core/utils/index.d.ts +1 -0
- package/lib/core/utils/index.js +1 -0
- package/lib/markdoc/components/MarkdocExample/MarkdocExample.js +2 -2
- package/lib/markdoc/components/Tabs/Tabs.d.ts +1 -2
- package/lib/markdoc/components/Tabs/Tabs.js +9 -22
- package/package.json +4 -4
- package/src/components/Accordion/variables.ts +2 -2
- package/src/components/Catalog/Catalog.tsx +157 -95
- package/src/components/Catalog/CatalogAvatar.tsx +68 -0
- package/src/components/Catalog/CatalogCardView/CatalogCard.tsx +29 -5
- package/src/components/Catalog/CatalogCardView/CatalogCardView.tsx +10 -2
- package/src/components/Catalog/CatalogEntity/CatalogEntity.tsx +17 -17
- package/src/components/Catalog/CatalogEntity/CatalogEntityGraph/CatalogEntityRelationsLinkedNode.tsx +4 -21
- package/src/components/Catalog/CatalogEntity/CatalogEntityGraph/CatalogEntityRelationsNodeContent.tsx +82 -0
- package/src/components/Catalog/CatalogEntity/CatalogEntityGraph/CatalogEntityRelationsRootNode.tsx +4 -22
- package/src/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityHistoryButton.tsx +39 -10
- package/src/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityHistorySidebar.tsx +19 -3
- package/src/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityVersionItem.tsx +8 -4
- package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/CatalogEntityProperties.tsx +12 -10
- package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/DomainsProperty.tsx +5 -1
- package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/OwnersProperty.tsx +1 -0
- package/src/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityApiDescriptionRelations.tsx +1 -1
- package/src/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityRelationsTable.tsx +6 -2
- package/src/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityRelationsTableContent.tsx +10 -2
- package/src/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityTeamRelations.tsx +1 -1
- package/src/components/Catalog/CatalogEntity/CatalogEntitySchema.tsx +1 -1
- package/src/components/Catalog/CatalogFilter/CatalogFilterCheckboxes.tsx +1 -1
- package/src/components/Catalog/CatalogFilter/CatalogFilterContent.tsx +30 -6
- package/src/components/Catalog/CatalogMobileFiltersPanel/CatalogMobileFiltersPanel.tsx +31 -0
- package/src/components/Catalog/CatalogMobileFiltersPanel/CatalogMobileFiltersPanelHeader.tsx +34 -0
- package/src/components/Catalog/CatalogMobileFiltersPanel/CatalogMobileFiltersPanelOverlay.tsx +40 -0
- package/src/components/Catalog/CatalogMobileTopBar/CatalogMobileTopBar.tsx +54 -0
- package/src/components/Catalog/CatalogMobileTopBar/CatalogMobileTopBarControls.tsx +34 -0
- package/src/components/Catalog/CatalogMobileTopBar/CatalogMobileTopBarFiltersButton.tsx +39 -0
- package/src/components/Catalog/CatalogPageDescription.tsx +0 -6
- package/src/components/Catalog/CatalogSelector.tsx +23 -21
- package/src/components/Catalog/CatalogTableView/CatalogTableView.tsx +37 -6
- package/src/components/Catalog/CatalogTableView/CatalogUserEntityCell.tsx +2 -26
- package/src/components/Catalog/CatalogTagsWithTooltip.tsx +24 -9
- package/src/components/Catalog/variables.ts +78 -36
- package/src/components/Filter/variables.ts +1 -1
- package/src/components/LoadMore/LoadMore.tsx +1 -0
- package/src/components/PageActions/PageActions.tsx +1 -2
- package/src/components/UserMenu/UserMenu.tsx +1 -3
- package/src/core/hooks/code-walkthrough/use-code-walkthrough.ts +1 -1
- package/src/core/hooks/index.ts +1 -0
- package/src/core/hooks/use-is-truncated.ts +20 -0
- package/src/core/hooks/use-tabs.ts +40 -21
- package/src/core/types/l10n.ts +2 -0
- package/src/core/utils/custom-catalog-options-casing.ts +29 -0
- package/src/core/utils/index.ts +1 -0
- package/src/markdoc/components/MarkdocExample/MarkdocExample.tsx +2 -6
- package/src/markdoc/components/Tabs/Tabs.tsx +4 -37
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import styled from 'styled-components';
|
|
3
|
+
|
|
4
|
+
import { CatalogEntityIcon } from '@redocly/theme/components/Catalog/CatalogEntityIcon';
|
|
5
|
+
import { customCatalogOptionsCasing } from '@redocly/theme/core/utils';
|
|
6
|
+
|
|
7
|
+
export type CatalogEntityRelationsNodeContentProps = {
|
|
8
|
+
entityType: string;
|
|
9
|
+
label: string;
|
|
10
|
+
isRoot: boolean;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export function CatalogEntityRelationsNodeContent({
|
|
14
|
+
entityType,
|
|
15
|
+
label,
|
|
16
|
+
isRoot,
|
|
17
|
+
}: CatalogEntityRelationsNodeContentProps): React.ReactElement {
|
|
18
|
+
const formattedEntityType = customCatalogOptionsCasing(entityType);
|
|
19
|
+
|
|
20
|
+
return (
|
|
21
|
+
<CatalogEntityRelationsNodeContentWrapper
|
|
22
|
+
isRoot={isRoot}
|
|
23
|
+
data-component-name="Catalog/CatalogEntity/CatalogEntityGraph/CatalogEntityRelationsNodeContent"
|
|
24
|
+
>
|
|
25
|
+
<CatalogEntityRelationsNodeTypeRow isRoot={isRoot}>
|
|
26
|
+
{isRoot ? (
|
|
27
|
+
<CatalogEntityIcon
|
|
28
|
+
entityType={entityType}
|
|
29
|
+
forceColor="var(--catalog-entity-relations-node-root-icon-color)"
|
|
30
|
+
/>
|
|
31
|
+
) : (
|
|
32
|
+
<CatalogEntityIcon entityType={entityType} defaultColor={false} />
|
|
33
|
+
)}
|
|
34
|
+
<span>{formattedEntityType}</span>
|
|
35
|
+
</CatalogEntityRelationsNodeTypeRow>
|
|
36
|
+
<CatalogEntityRelationsNodeLabelRow isRoot={isRoot}>
|
|
37
|
+
{label}
|
|
38
|
+
</CatalogEntityRelationsNodeLabelRow>
|
|
39
|
+
</CatalogEntityRelationsNodeContentWrapper>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const CatalogEntityRelationsNodeTypeRow = styled.div<{ isRoot: boolean }>`
|
|
44
|
+
display: flex;
|
|
45
|
+
align-items: center;
|
|
46
|
+
gap: var(--catalog-entity-relations-node-gap);
|
|
47
|
+
line-height: var(--line-height-sm);
|
|
48
|
+
font-size: var(--font-size-sm);
|
|
49
|
+
color: ${({ isRoot }) =>
|
|
50
|
+
isRoot
|
|
51
|
+
? 'var(--catalog-entity-relations-node-root-text-color)'
|
|
52
|
+
: 'var(--text-color-description)'};
|
|
53
|
+
`;
|
|
54
|
+
|
|
55
|
+
const CatalogEntityRelationsNodeLabelRow = styled.div<{ isRoot: boolean }>`
|
|
56
|
+
display: flex;
|
|
57
|
+
align-items: center;
|
|
58
|
+
gap: var(--catalog-entity-relations-node-gap);
|
|
59
|
+
line-height: var(--line-height-lg);
|
|
60
|
+
font-size: var(--font-size-lg);
|
|
61
|
+
color: ${({ isRoot }) =>
|
|
62
|
+
isRoot ? 'var(--catalog-entity-relations-node-root-text-color)' : 'var(--text-color-primary)'};
|
|
63
|
+
`;
|
|
64
|
+
|
|
65
|
+
const CatalogEntityRelationsNodeContentWrapper = styled.div<{ isRoot: boolean }>`
|
|
66
|
+
display: flex;
|
|
67
|
+
flex-direction: column;
|
|
68
|
+
align-items: flex-start;
|
|
69
|
+
gap: var(--catalog-entity-relations-node-gap);
|
|
70
|
+
padding: var(--catalog-entity-relations-node-padding);
|
|
71
|
+
border-radius: var(--catalog-entity-relations-node-border-radius);
|
|
72
|
+
font-style: normal;
|
|
73
|
+
font-weight: var(--catalog-entity-relations-node-font-weight);
|
|
74
|
+
background: ${({ isRoot }) =>
|
|
75
|
+
isRoot
|
|
76
|
+
? 'var(--catalog-entity-relations-node-root-bg-color)'
|
|
77
|
+
: 'var(--catalog-entity-relations-node-bg-color)'};
|
|
78
|
+
border: ${({ isRoot }) =>
|
|
79
|
+
isRoot
|
|
80
|
+
? 'none'
|
|
81
|
+
: `var(--catalog-entity-relations-node-border-width) var(--catalog-entity-relations-node-border-style) var(--catalog-entity-relations-node-border-color)`};
|
|
82
|
+
`;
|
package/src/components/Catalog/CatalogEntity/CatalogEntityGraph/CatalogEntityRelationsRootNode.tsx
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Handle, Position } from '@xyflow/react';
|
|
3
|
-
import styled from 'styled-components';
|
|
4
3
|
|
|
5
|
-
import { CatalogEntityIcon } from '@redocly/theme/components/Catalog/CatalogEntityIcon';
|
|
6
4
|
import { GraphHandleType } from '@redocly/theme/core/constants/catalog';
|
|
5
|
+
import { CatalogEntityRelationsNodeContent } from '@redocly/theme/components/Catalog/CatalogEntity/CatalogEntityGraph/CatalogEntityRelationsNodeContent';
|
|
7
6
|
|
|
8
7
|
export type CatalogEntityRelationsRootNodeProps = {
|
|
9
8
|
label: string;
|
|
@@ -17,33 +16,16 @@ export function CatalogEntityRelationsRootNode({
|
|
|
17
16
|
className,
|
|
18
17
|
}: CatalogEntityRelationsRootNodeProps): React.ReactElement {
|
|
19
18
|
return (
|
|
20
|
-
<
|
|
19
|
+
<div
|
|
21
20
|
className={className}
|
|
22
21
|
data-component-name="Catalog/CatalogEntity/CatalogEntityGraph/CatalogEntityRelationsRootNode"
|
|
23
22
|
>
|
|
24
|
-
<
|
|
25
|
-
entityType={entityType}
|
|
26
|
-
forceColor="var(--catalog-entity-relations-node-root-icon-color)"
|
|
27
|
-
/>
|
|
28
|
-
<div>{label}</div>
|
|
23
|
+
<CatalogEntityRelationsNodeContent entityType={entityType} label={label} isRoot={true} />
|
|
29
24
|
<Handle
|
|
30
25
|
type={GraphHandleType.Source}
|
|
31
26
|
position={Position.Bottom}
|
|
32
27
|
id={GraphHandleType.Source}
|
|
33
28
|
/>
|
|
34
|
-
</
|
|
29
|
+
</div>
|
|
35
30
|
);
|
|
36
31
|
}
|
|
37
|
-
|
|
38
|
-
const RelationsRootNodeWrapper = styled.div`
|
|
39
|
-
display: flex;
|
|
40
|
-
align-items: center;
|
|
41
|
-
gap: var(--catalog-entity-relations-node-gap);
|
|
42
|
-
padding: var(--catalog-entity-relations-node-padding);
|
|
43
|
-
border-radius: var(--catalog-entity-relations-node-border-radius);
|
|
44
|
-
font-style: normal;
|
|
45
|
-
font-weight: var(--catalog-entity-relations-node-font-weight-root);
|
|
46
|
-
background: var(--catalog-entity-relations-node-root-bg-color);
|
|
47
|
-
color: var(--catalog-entity-relations-node-root-text-color);
|
|
48
|
-
border: none;
|
|
49
|
-
`;
|
package/src/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityHistoryButton.tsx
CHANGED
|
@@ -5,6 +5,8 @@ import { RecentlyViewedIcon } from '@redocly/theme/icons/RecentlyViewedIcon/Rece
|
|
|
5
5
|
import { CheckmarkOutlineIcon } from '@redocly/theme/icons/CheckmarkOutlineIcon/CheckmarkOutlineIcon';
|
|
6
6
|
import { useThemeHooks } from '@redocly/theme/core/hooks';
|
|
7
7
|
import { VERSION_NOT_SPECIFIED } from '@redocly/theme/core/constants';
|
|
8
|
+
import { Tooltip } from '@redocly/theme/components/Tooltip/Tooltip';
|
|
9
|
+
import { useIsTruncated } from '@redocly/theme/core/hooks';
|
|
8
10
|
|
|
9
11
|
export type CatalogHistoryButtonProps = {
|
|
10
12
|
version: string | null;
|
|
@@ -18,6 +20,7 @@ export function CatalogEntityHistoryButton({
|
|
|
18
20
|
const [label, setLabel] = useState(version === VERSION_NOT_SPECIFIED ? null : version);
|
|
19
21
|
const { useTranslate } = useThemeHooks();
|
|
20
22
|
const { translate } = useTranslate();
|
|
23
|
+
const [labelRef, isLabelTruncated] = useIsTruncated<HTMLSpanElement>(label);
|
|
21
24
|
|
|
22
25
|
const handleClose = useCallback(
|
|
23
26
|
(e: CustomEvent): void => {
|
|
@@ -57,10 +60,19 @@ export function CatalogEntityHistoryButton({
|
|
|
57
60
|
<HistoryContent>
|
|
58
61
|
<HistoryText>{translate('catalog.history.button.label', 'Version history')}</HistoryText>
|
|
59
62
|
{label && (
|
|
60
|
-
<
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
<Tooltip
|
|
64
|
+
tip={label}
|
|
65
|
+
placement="bottom"
|
|
66
|
+
arrowPosition="left"
|
|
67
|
+
disabled={!isLabelTruncated}
|
|
68
|
+
>
|
|
69
|
+
<VersionPillWrapper>
|
|
70
|
+
<VersionPill>
|
|
71
|
+
<CheckmarkIcon />
|
|
72
|
+
<span ref={labelRef}>{label}</span>
|
|
73
|
+
</VersionPill>
|
|
74
|
+
</VersionPillWrapper>
|
|
75
|
+
</Tooltip>
|
|
64
76
|
)}
|
|
65
77
|
</HistoryContent>
|
|
66
78
|
</HistoryItem>
|
|
@@ -69,7 +81,7 @@ export function CatalogEntityHistoryButton({
|
|
|
69
81
|
}
|
|
70
82
|
|
|
71
83
|
const CatalogHistoryButtonWrapper = styled.div`
|
|
72
|
-
width:
|
|
84
|
+
width: var(--catalog-history-button-width);
|
|
73
85
|
`;
|
|
74
86
|
|
|
75
87
|
const Separator = styled.div`
|
|
@@ -88,7 +100,7 @@ const HistoryItem = styled.button`
|
|
|
88
100
|
gap: var(--catalog-history-item-gap);
|
|
89
101
|
padding: var(--catalog-history-item-padding);
|
|
90
102
|
margin-bottom: var(--catalog-history-item-margin-bottom);
|
|
91
|
-
width:
|
|
103
|
+
width: var(--catalog-history-button-item-width);
|
|
92
104
|
border-radius: var(--catalog-history-item-border-radius);
|
|
93
105
|
cursor: pointer;
|
|
94
106
|
transition: background-color 0.2s ease;
|
|
@@ -100,19 +112,29 @@ const HistoryItem = styled.button`
|
|
|
100
112
|
|
|
101
113
|
const HistoryContent = styled.div`
|
|
102
114
|
display: flex;
|
|
115
|
+
flex-wrap: wrap;
|
|
103
116
|
align-items: center;
|
|
104
117
|
justify-content: space-between;
|
|
105
118
|
flex: 1;
|
|
106
119
|
gap: var(--catalog-history-item-gap);
|
|
120
|
+
min-width: 0;
|
|
121
|
+
max-width: var(--catalog-history-content-max-width);
|
|
107
122
|
`;
|
|
108
123
|
|
|
109
124
|
const HistoryText = styled.span`
|
|
125
|
+
flex: 0 0 auto;
|
|
110
126
|
font-family: var(--catalog-history-text-font-family);
|
|
111
127
|
font-size: var(--catalog-history-text-font-size);
|
|
112
128
|
font-weight: var(--catalog-history-text-font-weight);
|
|
113
129
|
line-height: var(--catalog-history-text-line-height);
|
|
114
130
|
color: var(--catalog-history-text-color);
|
|
115
|
-
|
|
131
|
+
white-space: nowrap;
|
|
132
|
+
`;
|
|
133
|
+
|
|
134
|
+
const VersionPillWrapper = styled.div`
|
|
135
|
+
flex: 0 1 auto;
|
|
136
|
+
min-width: 0;
|
|
137
|
+
max-width: var(--catalog-history-content-max-width);
|
|
116
138
|
`;
|
|
117
139
|
|
|
118
140
|
const HistoryIcon = styled(RecentlyViewedIcon)`
|
|
@@ -125,23 +147,30 @@ const VersionPill = styled.div`
|
|
|
125
147
|
display: flex;
|
|
126
148
|
align-items: center;
|
|
127
149
|
gap: var(--catalog-history-pill-gap);
|
|
128
|
-
padding: var(--catalog-history-pill-padding-vertical)
|
|
129
|
-
var(--catalog-history-pill-padding-horizontal);
|
|
150
|
+
padding: var(--catalog-history-pill-padding-vertical) var(--catalog-history-pill-padding-horizontal);
|
|
130
151
|
border: 1px solid var(--catalog-history-pill-border-color);
|
|
131
152
|
border-radius: var(--catalog-history-pill-border-radius);
|
|
132
153
|
background-color: transparent;
|
|
133
|
-
|
|
154
|
+
min-width: 0;
|
|
155
|
+
max-width: 100%;
|
|
134
156
|
|
|
135
157
|
span {
|
|
136
158
|
font-family: var(--catalog-history-pill-font-family);
|
|
137
159
|
font-size: var(--catalog-history-pill-font-size);
|
|
138
160
|
line-height: var(--catalog-history-pill-line-height);
|
|
139
161
|
color: var(--catalog-history-pill-text-color);
|
|
162
|
+
overflow: hidden;
|
|
163
|
+
text-overflow: ellipsis;
|
|
164
|
+
white-space: nowrap;
|
|
165
|
+
min-width: 0;
|
|
140
166
|
}
|
|
141
167
|
`;
|
|
142
168
|
|
|
143
169
|
const CheckmarkIcon = styled(CheckmarkOutlineIcon)`
|
|
144
170
|
width: var(--catalog-history-pill-icon-size);
|
|
145
171
|
height: var(--catalog-history-pill-icon-size);
|
|
172
|
+
min-width: var(--catalog-history-pill-icon-size);
|
|
173
|
+
min-height: var(--catalog-history-pill-icon-size);
|
|
174
|
+
flex-shrink: 0;
|
|
146
175
|
color: var(--catalog-history-pill-icon-color);
|
|
147
176
|
`;
|
package/src/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityHistorySidebar.tsx
CHANGED
|
@@ -8,6 +8,7 @@ import { MenuContainer } from '@redocly/theme/components/Menu/MenuContainer';
|
|
|
8
8
|
import { transformRevisionsToVersionHistory } from '@redocly/theme/core/utils';
|
|
9
9
|
import { DEFAULT_LOCALE_PLACEHOLDER } from '@redocly/theme/core/constants';
|
|
10
10
|
import { CatalogEntityVersionItem } from '@redocly/theme/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityVersionItem';
|
|
11
|
+
import { RecentlyViewedIcon } from '@redocly/theme/icons/RecentlyViewedIcon/RecentlyViewedIcon';
|
|
11
12
|
|
|
12
13
|
export type CatalogHistorySidebarProps = {
|
|
13
14
|
entityKey: string;
|
|
@@ -100,7 +101,10 @@ export function CatalogEntityHistorySidebar({
|
|
|
100
101
|
return (
|
|
101
102
|
<SidebarOverlay className={className} data-component-name="Catalog/CatalogHistorySidebar">
|
|
102
103
|
<SidebarHeader>
|
|
103
|
-
<
|
|
104
|
+
<HeaderWrapper>
|
|
105
|
+
<HistoryIcon />
|
|
106
|
+
<HeaderTitle>{translate('catalog.history.sidebar.title', 'Version history')}</HeaderTitle>
|
|
107
|
+
</HeaderWrapper>
|
|
104
108
|
<CloseButton
|
|
105
109
|
onClick={handleClose}
|
|
106
110
|
aria-label={translate('catalog.history.sidebar.close', 'Close version history')}
|
|
@@ -128,10 +132,10 @@ export function CatalogEntityHistorySidebar({
|
|
|
128
132
|
|
|
129
133
|
const SidebarOverlay = styled.div`
|
|
130
134
|
position: fixed;
|
|
131
|
-
top: calc(var(--navbar-height) + var(--banner-height
|
|
135
|
+
top: calc(var(--navbar-height) + var(--banner-height));
|
|
132
136
|
left: 0;
|
|
133
137
|
width: var(--sidebar-width);
|
|
134
|
-
height: calc(100vh - var(--navbar-height) - var(--banner-height
|
|
138
|
+
height: calc(100vh - var(--navbar-height) - var(--banner-height));
|
|
135
139
|
background-color: var(--catalog-history-sidebar-bg-color);
|
|
136
140
|
border-right: 1px solid var(--catalog-history-sidebar-border-color);
|
|
137
141
|
display: flex;
|
|
@@ -181,3 +185,15 @@ const VersionList = styled.ul`
|
|
|
181
185
|
padding: var(--catalog-history-sidebar-content-padding);
|
|
182
186
|
margin-top: var(--catalog-history-sidebar-content-margin-top);
|
|
183
187
|
`;
|
|
188
|
+
|
|
189
|
+
const HistoryIcon = styled(RecentlyViewedIcon)`
|
|
190
|
+
width: var(--catalog-history-icon-size);
|
|
191
|
+
height: var(--catalog-history-icon-size);
|
|
192
|
+
flex-shrink: 0;
|
|
193
|
+
`;
|
|
194
|
+
|
|
195
|
+
const HeaderWrapper = styled.div`
|
|
196
|
+
display: flex;
|
|
197
|
+
align-items: center;
|
|
198
|
+
gap: var(--spacing-xs);
|
|
199
|
+
`;
|
package/src/components/Catalog/CatalogEntity/CatalogEntityHistory/CatalogEntityVersionItem.tsx
CHANGED
|
@@ -54,8 +54,8 @@ export function CatalogEntityVersionItem({
|
|
|
54
54
|
const singleRevisionLink = buildRevisionUrl(basePath, group.singleRevisionDate, group.version);
|
|
55
55
|
|
|
56
56
|
const versionTitle = isNotSpecifiedVersion
|
|
57
|
-
? `${translate('catalog.history.version.label', 'Version')}
|
|
58
|
-
: `${translate('catalog.history.version.label', 'Version')}
|
|
57
|
+
? `${translate('catalog.history.version.label', 'Version')}:\u00a0${translate('catalog.history.version.notSpecified', 'not specified')}`
|
|
58
|
+
: `${translate('catalog.history.version.label', 'Version')}:\u00a0${group.version}`;
|
|
59
59
|
|
|
60
60
|
const versionButton = (
|
|
61
61
|
<VersionButton
|
|
@@ -80,11 +80,12 @@ export function CatalogEntityVersionItem({
|
|
|
80
80
|
<Tag
|
|
81
81
|
color="grey"
|
|
82
82
|
borderless
|
|
83
|
-
textTransform="
|
|
83
|
+
textTransform="lowercase"
|
|
84
84
|
style={{
|
|
85
85
|
fontSize: 'var(--font-size-xs)',
|
|
86
86
|
borderRadius: 'var(--catalog-history-sidebar-version-tag-border-radius)',
|
|
87
87
|
flexShrink: 0,
|
|
88
|
+
marginLeft: 'var(--spacing-xxs)',
|
|
88
89
|
}}
|
|
89
90
|
>
|
|
90
91
|
{translate('catalog.history.version.default', 'default')}
|
|
@@ -216,6 +217,8 @@ const VersionTitle = styled.span`
|
|
|
216
217
|
color: var(--catalog-history-sidebar-version-title-color);
|
|
217
218
|
flex-shrink: 1;
|
|
218
219
|
min-width: 0;
|
|
220
|
+
overflow-wrap: break-word;
|
|
221
|
+
word-break: break-word;
|
|
219
222
|
`;
|
|
220
223
|
|
|
221
224
|
const VersionDate = styled.span`
|
|
@@ -239,6 +242,7 @@ const RevisionsList = styled.ul`
|
|
|
239
242
|
margin: 0;
|
|
240
243
|
padding: 0;
|
|
241
244
|
padding-left: var(--catalog-history-sidebar-revisions-padding-left);
|
|
245
|
+
padding-bottom: var(--catalog-history-sidebar-revisions-padding-bottom);
|
|
242
246
|
position: relative;
|
|
243
247
|
|
|
244
248
|
&::before {
|
|
@@ -246,7 +250,7 @@ const RevisionsList = styled.ul`
|
|
|
246
250
|
position: absolute;
|
|
247
251
|
left: 22px;
|
|
248
252
|
top: 0;
|
|
249
|
-
bottom:
|
|
253
|
+
bottom: var(--catalog-history-sidebar-revisions-padding-bottom);
|
|
250
254
|
width: 1px;
|
|
251
255
|
background-color: var(
|
|
252
256
|
--catalog-history-sidebar-revision-line-color,
|
package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/CatalogEntityProperties.tsx
CHANGED
|
@@ -10,6 +10,7 @@ import { DomainsProperty } from '@redocly/theme/components/Catalog/CatalogEntity
|
|
|
10
10
|
import { OwnersProperty } from '@redocly/theme/components/Catalog/CatalogEntity/CatalogEntityProperties/OwnersProperty';
|
|
11
11
|
import { ContactProperty } from '@redocly/theme/components/Catalog/CatalogEntity/CatalogEntityProperties/ContactProperty';
|
|
12
12
|
import { FormatProperty } from '@redocly/theme/components/Catalog/CatalogEntity/CatalogEntityProperties/FormatProperty';
|
|
13
|
+
import { breakpoints } from '@redocly/theme/core';
|
|
13
14
|
|
|
14
15
|
type PropertyRenderer = {
|
|
15
16
|
key: string;
|
|
@@ -67,15 +68,8 @@ export type CatalogEntityPropertiesProps = {
|
|
|
67
68
|
export function CatalogEntityProperties({ entity }: CatalogEntityPropertiesProps): JSX.Element {
|
|
68
69
|
const renderers = propertyRenderers.filter((renderer) => renderer.condition(entity));
|
|
69
70
|
|
|
70
|
-
const gridTemplateColumns = [1, 2, 4].includes(renderers.length)
|
|
71
|
-
? 'repeat(2, 1fr)'
|
|
72
|
-
: 'repeat(3, 1fr)';
|
|
73
|
-
|
|
74
71
|
return (
|
|
75
|
-
<CatalogEntityPropertiesGridWrapper
|
|
76
|
-
data-component-name="Catalog/CatalogEntity/CatalogEntityProperties/CatalogEntityProperties"
|
|
77
|
-
gridTemplateColumns={gridTemplateColumns}
|
|
78
|
-
>
|
|
72
|
+
<CatalogEntityPropertiesGridWrapper data-component-name="Catalog/CatalogEntity/CatalogEntityProperties/CatalogEntityProperties">
|
|
79
73
|
{renderers.map((renderer) => (
|
|
80
74
|
<renderer.component key={renderer.key + entity.id} entity={entity} />
|
|
81
75
|
))}
|
|
@@ -83,8 +77,16 @@ export function CatalogEntityProperties({ entity }: CatalogEntityPropertiesProps
|
|
|
83
77
|
);
|
|
84
78
|
}
|
|
85
79
|
|
|
86
|
-
const CatalogEntityPropertiesGridWrapper = styled.div
|
|
80
|
+
const CatalogEntityPropertiesGridWrapper = styled.div`
|
|
87
81
|
display: grid;
|
|
88
|
-
grid-template-columns: ${({ gridTemplateColumns }) => gridTemplateColumns};
|
|
89
82
|
gap: var(--spacing-base);
|
|
83
|
+
grid-template-columns: 1fr;
|
|
84
|
+
|
|
85
|
+
@media screen and (min-width: ${breakpoints.small}) {
|
|
86
|
+
grid-template-columns: repeat(2, 1fr);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@media screen and (min-width: ${breakpoints.max}) {
|
|
90
|
+
grid-template-columns: repeat(3, 1fr);
|
|
91
|
+
}
|
|
90
92
|
`;
|
|
@@ -28,7 +28,11 @@ export function DomainsProperty({ entity }: DomainsPropertyProps): JSX.Element {
|
|
|
28
28
|
content={
|
|
29
29
|
<>
|
|
30
30
|
{domains?.map((domain) => (
|
|
31
|
-
<Tag
|
|
31
|
+
<Tag
|
|
32
|
+
key={domain?.id}
|
|
33
|
+
style={{ backgroundColor: 'var(--bg-color)' }}
|
|
34
|
+
variant="outline"
|
|
35
|
+
>
|
|
32
36
|
<GraphIcon />
|
|
33
37
|
{domain?.title}
|
|
34
38
|
</Tag>
|
|
@@ -51,7 +51,7 @@ export function CatalogEntityApiDescriptionRelations({
|
|
|
51
51
|
}: CatalogEntityApiDescriptionRelationsProps): JSX.Element {
|
|
52
52
|
return (
|
|
53
53
|
<div data-component-name="Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityApiDescriptionRelations">
|
|
54
|
-
<Tabs key={entity.id}
|
|
54
|
+
<Tabs key={entity.id} size={TabsSize.MEDIUM}>
|
|
55
55
|
<TabItem
|
|
56
56
|
label="Operations"
|
|
57
57
|
icon={<MoleculesIcon />}
|
package/src/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityRelationsTable.tsx
CHANGED
|
@@ -79,7 +79,7 @@ export function CatalogEntityRelationsTable({
|
|
|
79
79
|
};
|
|
80
80
|
|
|
81
81
|
return (
|
|
82
|
-
<
|
|
82
|
+
<CatalogEntityRelationsTableWrapper data-component-name="Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityRelationsTable">
|
|
83
83
|
{heading && <Heading>{heading}</Heading>}
|
|
84
84
|
<CatalogActionsRow
|
|
85
85
|
searchQuery={searchQuery}
|
|
@@ -103,10 +103,14 @@ export function CatalogEntityRelationsTable({
|
|
|
103
103
|
listType={listType}
|
|
104
104
|
onRowClick={onRowClick}
|
|
105
105
|
/>
|
|
106
|
-
</
|
|
106
|
+
</CatalogEntityRelationsTableWrapper>
|
|
107
107
|
);
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
+
const CatalogEntityRelationsTableWrapper = styled.div`
|
|
111
|
+
min-width: 0;
|
|
112
|
+
`;
|
|
113
|
+
|
|
110
114
|
const Heading = styled.h2`
|
|
111
115
|
margin: var(--spacing-base) 0;
|
|
112
116
|
font-size: var(--font-size-md);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { JSX } from 'react';
|
|
2
|
+
import styled from 'styled-components';
|
|
2
3
|
|
|
3
4
|
import type { CatalogEntityConfig, EntitiesCatalogConfig } from '@redocly/config';
|
|
4
5
|
import type { ListType } from '@redocly/theme/core/types';
|
|
@@ -48,7 +49,7 @@ export function CatalogEntityRelationsTableContent({
|
|
|
48
49
|
onRowClick,
|
|
49
50
|
}: CatalogEntityRelationsTableContentProps): JSX.Element {
|
|
50
51
|
return (
|
|
51
|
-
<
|
|
52
|
+
<TableContentWrapper data-component-name="Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityRelationsTableContent">
|
|
52
53
|
<HighlightContext.Provider value={[searchQuery]}>
|
|
53
54
|
{relations.length > 0 ? (
|
|
54
55
|
<CatalogTableView
|
|
@@ -62,6 +63,7 @@ export function CatalogEntityRelationsTableContent({
|
|
|
62
63
|
isColumnSorted={isColumnSorted}
|
|
63
64
|
style={{ marginTop: 0 }}
|
|
64
65
|
onRowClick={onRowClick}
|
|
66
|
+
contentMinWidth={TABLE_SCROLL_MIN_WIDTH_PX}
|
|
65
67
|
/>
|
|
66
68
|
) : (
|
|
67
69
|
<CatalogEntitiesEmptyState listType={listType} />
|
|
@@ -76,6 +78,12 @@ export function CatalogEntityRelationsTableContent({
|
|
|
76
78
|
label={query.isFetchingNextPage ? 'Loading...' : 'Load More'}
|
|
77
79
|
/>
|
|
78
80
|
)}
|
|
79
|
-
</
|
|
81
|
+
</TableContentWrapper>
|
|
80
82
|
);
|
|
81
83
|
}
|
|
84
|
+
|
|
85
|
+
const TABLE_SCROLL_MIN_WIDTH_PX = 608;
|
|
86
|
+
|
|
87
|
+
const TableContentWrapper = styled.div`
|
|
88
|
+
min-width: 0; /* Constrain width so table overflow-x scroll works inside tabs */
|
|
89
|
+
`;
|
package/src/components/Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityTeamRelations.tsx
CHANGED
|
@@ -79,7 +79,7 @@ export function CatalogEntityTeamRelations({
|
|
|
79
79
|
}: CatalogEntityTeamRelationsProps): JSX.Element {
|
|
80
80
|
return (
|
|
81
81
|
<div data-component-name="Catalog/CatalogEntity/CatalogEntityRelations/CatalogEntityTeamRelations">
|
|
82
|
-
<Tabs
|
|
82
|
+
<Tabs size={TabsSize.MEDIUM}>
|
|
83
83
|
<TabItem label="Members" icon={<PeopleIcon />} onClick={() => setFilter('type:user')}>
|
|
84
84
|
<CatalogEntityRelationsTable
|
|
85
85
|
key="members-table"
|
|
@@ -122,7 +122,7 @@ const SplitViewWrapper = styled.div`
|
|
|
122
122
|
const SchemaSampleWrapper = styled.div`
|
|
123
123
|
flex: 1;
|
|
124
124
|
position: sticky;
|
|
125
|
-
top: calc(var(--navbar-height) + var(--spacing-md));
|
|
125
|
+
top: calc(var(--navbar-height) + var(--banner-height) + var(--spacing-md));
|
|
126
126
|
align-self: flex-start;
|
|
127
127
|
padding-top: var(--spacing-sm);
|
|
128
128
|
`;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import styled from 'styled-components';
|
|
3
3
|
|
|
4
|
-
import type { JSX } from 'react';
|
|
4
|
+
import type { JSX, ReactNode } from 'react';
|
|
5
5
|
import type { ResolvedFilter } from '@redocly/theme/core/types';
|
|
6
6
|
import type { RedoclyConfig } from '@redocly/theme/config';
|
|
7
7
|
|
|
8
8
|
import { useThemeHooks } from '@redocly/theme/core/hooks';
|
|
9
9
|
import { Button } from '@redocly/theme/components/Button/Button';
|
|
10
10
|
import { CatalogFilter } from '@redocly/theme/components/Catalog/CatalogFilter/CatalogFilter';
|
|
11
|
+
import { breakpoints } from '@redocly/theme/core/utils';
|
|
11
12
|
import { isFromToSelectedOptions } from '@redocly/theme/core/utils';
|
|
12
13
|
|
|
13
14
|
export type CatalogFilterContentProps = {
|
|
@@ -18,6 +19,8 @@ export type CatalogFilterContentProps = {
|
|
|
18
19
|
| NonNullable<RedoclyConfig['catalog']>[string]['filterValuesCasing']
|
|
19
20
|
| ((str: string) => string);
|
|
20
21
|
showCounter?: boolean;
|
|
22
|
+
catalogSelector?: ReactNode;
|
|
23
|
+
searchInput?: ReactNode;
|
|
21
24
|
className?: string;
|
|
22
25
|
};
|
|
23
26
|
|
|
@@ -27,6 +30,8 @@ export function CatalogFilterContent({
|
|
|
27
30
|
filterTerm,
|
|
28
31
|
filterValuesCasing,
|
|
29
32
|
showCounter = true,
|
|
33
|
+
catalogSelector,
|
|
34
|
+
searchInput,
|
|
30
35
|
className,
|
|
31
36
|
}: CatalogFilterContentProps): JSX.Element | null {
|
|
32
37
|
const { useTranslate } = useThemeHooks();
|
|
@@ -50,7 +55,7 @@ export function CatalogFilterContent({
|
|
|
50
55
|
onClear();
|
|
51
56
|
};
|
|
52
57
|
|
|
53
|
-
if (!filters.length) {
|
|
58
|
+
if (!filters.length && !catalogSelector) {
|
|
54
59
|
return null;
|
|
55
60
|
}
|
|
56
61
|
|
|
@@ -64,12 +69,16 @@ export function CatalogFilterContent({
|
|
|
64
69
|
{translate('catalog.filters.title', 'Filters')}
|
|
65
70
|
</FiltersTitle>
|
|
66
71
|
{hasActiveFilters ? (
|
|
67
|
-
<Button size="medium"
|
|
72
|
+
<Button size="medium" variant="ghost" onClick={handleClearAll}>
|
|
68
73
|
{translate('catalog.filters.clearAll', 'Clear filters')}
|
|
69
74
|
</Button>
|
|
70
75
|
) : null}
|
|
71
76
|
</FiltersHeader>
|
|
77
|
+
{searchInput ? <FiltersSearchWrapper>{searchInput}</FiltersSearchWrapper> : null}
|
|
72
78
|
<FilterItems>
|
|
79
|
+
{catalogSelector ? (
|
|
80
|
+
<CatalogSelectorItemWrapper>{catalogSelector}</CatalogSelectorItemWrapper>
|
|
81
|
+
) : null}
|
|
73
82
|
{filters.map((filter, idx) => (
|
|
74
83
|
<CatalogFilter
|
|
75
84
|
filter={filter}
|
|
@@ -91,8 +100,7 @@ const CatalogFilterContentWrapper = styled.div`
|
|
|
91
100
|
|
|
92
101
|
const FiltersHeader = styled.div`
|
|
93
102
|
display: flex;
|
|
94
|
-
padding: var(--filter-content-header-padding
|
|
95
|
-
var(--filter-content-header-padding-horizontal);
|
|
103
|
+
padding: var(--catalog-filter-content-header-padding);
|
|
96
104
|
`;
|
|
97
105
|
|
|
98
106
|
const FiltersTitle = styled.div`
|
|
@@ -102,9 +110,25 @@ const FiltersTitle = styled.div`
|
|
|
102
110
|
line-height: var(--filter-content-title-line-height);
|
|
103
111
|
`;
|
|
104
112
|
|
|
113
|
+
const CatalogSelectorItemWrapper = styled.div`
|
|
114
|
+
padding: var(--filter-group-padding);
|
|
115
|
+
display: flex;
|
|
116
|
+
flex-direction: column;
|
|
117
|
+
gap: var(--filter-group-gap);
|
|
118
|
+
border-bottom: 1px solid var(--catalog-table-border-color);
|
|
119
|
+
`;
|
|
120
|
+
|
|
121
|
+
const FiltersSearchWrapper = styled.div`
|
|
122
|
+
padding: 0 var(--spacing-base) var(--spacing-base) var(--spacing-base);
|
|
123
|
+
|
|
124
|
+
@media screen and (min-width: ${breakpoints.medium}) {
|
|
125
|
+
display: none;
|
|
126
|
+
}
|
|
127
|
+
`;
|
|
128
|
+
|
|
105
129
|
const FilterItems = styled.div`
|
|
106
130
|
height: 100%;
|
|
107
131
|
display: flex;
|
|
108
132
|
flex-direction: column;
|
|
109
|
-
border-top: 1px solid var(--border-color
|
|
133
|
+
border-top: 1px solid var(--catalog-table-border-color);
|
|
110
134
|
`;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React, { JSX } from 'react';
|
|
2
|
+
import styled from 'styled-components';
|
|
3
|
+
|
|
4
|
+
import { CatalogMobileFiltersPanelHeader } from '@redocly/theme/components/Catalog/CatalogMobileFiltersPanel/CatalogMobileFiltersPanelHeader';
|
|
5
|
+
|
|
6
|
+
type CatalogMobileFiltersPanelProps = {
|
|
7
|
+
setMobileFiltersPanelOpen: (open: boolean) => void;
|
|
8
|
+
filterContent: React.ReactNode;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export function CatalogMobileFiltersPanel({
|
|
12
|
+
setMobileFiltersPanelOpen,
|
|
13
|
+
filterContent,
|
|
14
|
+
}: CatalogMobileFiltersPanelProps): JSX.Element {
|
|
15
|
+
return (
|
|
16
|
+
<CatalogMobileFiltersPanelWrapper>
|
|
17
|
+
<CatalogMobileFiltersPanelHeader setMobileFiltersPanelOpen={setMobileFiltersPanelOpen} />
|
|
18
|
+
{filterContent}
|
|
19
|
+
</CatalogMobileFiltersPanelWrapper>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const CatalogMobileFiltersPanelWrapper = styled.div`
|
|
24
|
+
width: 100%;
|
|
25
|
+
max-height: calc(100vh - var(--navbar-height) - var(--banner-height));
|
|
26
|
+
overflow-y: auto;
|
|
27
|
+
background: var(--sidebar-bg-color);
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-direction: column;
|
|
30
|
+
height: 100%;
|
|
31
|
+
`;
|