@astral/ui 4.47.0 → 4.48.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/components/ComplianceStatus/ComplianceStatus.js +1 -1
- package/components/DashboardSidebar/constants.d.ts +6 -0
- package/components/DashboardSidebar/constants.js +6 -0
- package/components/DashboardSidebar/styles.js +22 -3
- package/components/DescriptionList/DescriptionList.d.ts +1 -1
- package/components/DescriptionList/DescriptionList.js +31 -8
- package/components/DescriptionList/constants.d.ts +13 -0
- package/components/DescriptionList/constants.js +13 -0
- package/components/DescriptionList/styles.d.ts +0 -2
- package/components/DescriptionList/styles.js +35 -12
- package/components/DescriptionList/types.d.ts +4 -0
- package/components/DescriptionList/{hooks → useLogic/hooks}/useGroupedDescriptionItems/useGroupedDescriptionItems.d.ts +1 -1
- package/components/DescriptionList/useLogic/index.d.ts +1 -0
- package/components/DescriptionList/useLogic/index.js +1 -0
- package/components/DescriptionList/useLogic/useLogic.d.ts +8 -0
- package/components/DescriptionList/useLogic/useLogic.js +21 -0
- package/components/NavMenu/Item/ItemButton/ItemButton.js +17 -1
- package/components/NavMenu/Item/ItemButton/constants.d.ts +6 -0
- package/components/NavMenu/Item/ItemButton/constants.js +7 -0
- package/components/NavMenu/Item/ItemButton/index.d.ts +1 -0
- package/components/NavMenu/Item/ItemButton/index.js +1 -0
- package/components/NavMenu/Item/ItemButton/styles.d.ts +0 -5
- package/components/NavMenu/Item/ItemButton/styles.js +15 -16
- package/components/NavMenu/Item/index.d.ts +1 -0
- package/components/NavMenu/Item/index.js +1 -0
- package/components/utils/cva/cva.d.ts +1 -0
- package/components/utils/cva/cva.js +1 -0
- package/components/utils/cva/index.d.ts +1 -0
- package/components/utils/cva/index.js +1 -0
- package/components/utils/cva/public.d.ts +1 -0
- package/components/utils/cva/public.js +1 -0
- package/node/components/ComplianceStatus/ComplianceStatus.js +2 -2
- package/node/components/DashboardSidebar/constants.d.ts +6 -0
- package/node/components/DashboardSidebar/constants.js +7 -1
- package/node/components/DashboardSidebar/styles.js +21 -2
- package/node/components/DescriptionList/DescriptionList.d.ts +1 -1
- package/node/components/DescriptionList/DescriptionList.js +31 -8
- package/node/components/DescriptionList/constants.d.ts +13 -0
- package/node/components/DescriptionList/constants.js +16 -0
- package/node/components/DescriptionList/styles.d.ts +0 -2
- package/node/components/DescriptionList/styles.js +34 -11
- package/node/components/DescriptionList/types.d.ts +4 -0
- package/node/components/DescriptionList/{hooks → useLogic/hooks}/useGroupedDescriptionItems/useGroupedDescriptionItems.d.ts +1 -1
- package/node/components/DescriptionList/useLogic/index.d.ts +1 -0
- package/node/components/DescriptionList/useLogic/index.js +17 -0
- package/node/components/DescriptionList/useLogic/useLogic.d.ts +8 -0
- package/node/components/DescriptionList/useLogic/useLogic.js +25 -0
- package/node/components/NavMenu/Item/ItemButton/ItemButton.js +17 -1
- package/node/components/NavMenu/Item/ItemButton/constants.d.ts +6 -0
- package/node/components/NavMenu/Item/ItemButton/constants.js +10 -0
- package/node/components/NavMenu/Item/ItemButton/index.d.ts +1 -0
- package/node/components/NavMenu/Item/ItemButton/index.js +1 -0
- package/node/components/NavMenu/Item/ItemButton/styles.d.ts +0 -5
- package/node/components/NavMenu/Item/ItemButton/styles.js +16 -17
- package/node/components/NavMenu/Item/index.d.ts +1 -0
- package/node/components/NavMenu/Item/index.js +3 -0
- package/node/components/utils/cva/cva.d.ts +1 -0
- package/node/components/utils/cva/cva.js +5 -0
- package/node/components/utils/cva/index.d.ts +1 -0
- package/node/components/utils/cva/index.js +17 -0
- package/node/components/utils/cva/public.d.ts +1 -0
- package/node/components/utils/cva/public.js +17 -0
- package/package.json +1 -1
- /package/components/DescriptionList/{hooks → useLogic/hooks}/index.d.ts +0 -0
- /package/components/DescriptionList/{hooks → useLogic/hooks}/index.js +0 -0
- /package/components/DescriptionList/{hooks → useLogic/hooks}/useGroupedDescriptionItems/index.d.ts +0 -0
- /package/components/DescriptionList/{hooks → useLogic/hooks}/useGroupedDescriptionItems/index.js +0 -0
- /package/components/DescriptionList/{hooks → useLogic/hooks}/useGroupedDescriptionItems/useGroupedDescriptionItems.js +0 -0
- /package/node/components/DescriptionList/{hooks → useLogic/hooks}/index.d.ts +0 -0
- /package/node/components/DescriptionList/{hooks → useLogic/hooks}/index.js +0 -0
- /package/node/components/DescriptionList/{hooks → useLogic/hooks}/useGroupedDescriptionItems/index.d.ts +0 -0
- /package/node/components/DescriptionList/{hooks → useLogic/hooks}/useGroupedDescriptionItems/index.js +0 -0
- /package/node/components/DescriptionList/{hooks → useLogic/hooks}/useGroupedDescriptionItems/useGroupedDescriptionItems.js +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { cva } from 'class-variance-authority';
|
|
3
2
|
import { OverflowTypography } from '../OverflowTypography';
|
|
4
3
|
import { Typography } from '../Typography';
|
|
4
|
+
import { cva } from '../utils/cva';
|
|
5
5
|
import { complianceStatusClassnames, complianceStatusColorClassnames, complianceStatusVariantClassnames, } from './constants';
|
|
6
6
|
import { EmptyIcon, Inner, Item, RejectIcon, StyledLoader, SuccessIcon, Wrapper, } from './styles';
|
|
7
7
|
const ICON_BY_STATUS = {
|
|
@@ -3,3 +3,9 @@ export const dashboardSidebarClassnames = {
|
|
|
3
3
|
root: createUIKitClassname('dashboard-layout-sidebar'),
|
|
4
4
|
hasMenuOrganization: createUIKitClassname('dashboard-layout-sidebar_has-menu-organization'),
|
|
5
5
|
};
|
|
6
|
+
export const LABEL_WIDTH = {
|
|
7
|
+
default: '170px',
|
|
8
|
+
counter: '130px',
|
|
9
|
+
group: '140px',
|
|
10
|
+
groupCounter: '100px',
|
|
11
|
+
};
|
|
@@ -2,10 +2,11 @@ import { FOOTER_DESKTOP_HEIGHT, FOOTER_LAPTOP_HEIGHT } from '../constants';
|
|
|
2
2
|
import { HEADER_HEIGHT_MOBILE } from '../DashboardLayout/constants';
|
|
3
3
|
import { menuOrganizationClassnames } from '../MenuOrganization/constants';
|
|
4
4
|
import { MOBILE_BUTTON_HEIGHT } from '../MenuOrganization/OrganizationButton';
|
|
5
|
+
import { navMenuItemButtonClassnames } from '../NavMenu/Item';
|
|
5
6
|
import { Paper } from '../Paper';
|
|
6
7
|
import { pinButtonClassnames } from '../PinButton';
|
|
7
8
|
import { styled } from '../styled';
|
|
8
|
-
import { dashboardSidebarClassnames } from './constants';
|
|
9
|
+
import { dashboardSidebarClassnames, LABEL_WIDTH } from './constants';
|
|
9
10
|
export const Wrapper = styled('div', {
|
|
10
11
|
shouldForwardProp: (prop) => !['$isPinned', '$alertHeight'].includes(prop),
|
|
11
12
|
}) `
|
|
@@ -59,7 +60,7 @@ export const SidebarRoot = styled('aside', {
|
|
|
59
60
|
width: ${({ $collapsedIn, $isPinned }) => $isPinned || (!$isPinned && $collapsedIn) ? '242px' : '58px'};
|
|
60
61
|
height: 100%;
|
|
61
62
|
|
|
62
|
-
background-color: ${({ theme }) => theme.palette.background.default}
|
|
63
|
+
background-color: ${({ theme }) => theme.palette.background.default};
|
|
63
64
|
border-radius: ${({ theme }) => theme.shape.medium};
|
|
64
65
|
box-shadow: ${({ theme, $isPinned, $collapsedIn }) => ($isPinned || !$collapsedIn ? 'unset' : theme.elevation[300])};
|
|
65
66
|
|
|
@@ -115,6 +116,24 @@ export const SidebarContent = styled.div `
|
|
|
115
116
|
});
|
|
116
117
|
}};
|
|
117
118
|
|
|
119
|
+
& .${navMenuItemButtonClassnames.label} {
|
|
120
|
+
width: ${LABEL_WIDTH.default};
|
|
121
|
+
|
|
122
|
+
&.${navMenuItemButtonClassnames.labelHasCounter} {
|
|
123
|
+
width: ${LABEL_WIDTH.counter};
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
& .${navMenuItemButtonClassnames.hasGroup} {
|
|
128
|
+
& .${navMenuItemButtonClassnames.label} {
|
|
129
|
+
width: ${LABEL_WIDTH.group};
|
|
130
|
+
|
|
131
|
+
&.${navMenuItemButtonClassnames.labelHasCounter} {
|
|
132
|
+
width: ${LABEL_WIDTH.groupCounter};
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
118
137
|
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
119
138
|
width: inherit;
|
|
120
139
|
padding: ${({ theme, $hasHeader }) => theme.spacing($hasHeader ? 0 : 2, 0, 0, 0)};
|
|
@@ -134,7 +153,7 @@ export const Footer = styled.footer `
|
|
|
134
153
|
border-bottom-left-radius: ${({ theme }) => theme.shape.medium};
|
|
135
154
|
|
|
136
155
|
.${pinButtonClassnames.root} {
|
|
137
|
-
padding-left: ${({ theme }) => theme.microSpacing(9)}
|
|
156
|
+
padding-left: ${({ theme }) => theme.microSpacing(9)};
|
|
138
157
|
}
|
|
139
158
|
|
|
140
159
|
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { DescriptionListProps } from './types';
|
|
2
|
-
export declare const DescriptionList: ({ items, variant: listVariant, title, direction, ...props }: DescriptionListProps) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const DescriptionList: ({ items, variant: listVariant, title, direction, alignNameWidth, leader, ...props }: DescriptionListProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -4,11 +4,32 @@ import { Description } from '../Description';
|
|
|
4
4
|
import { GuidTypography } from '../GuidTypography';
|
|
5
5
|
import { Tag } from '../Tag';
|
|
6
6
|
import { Typography } from '../Typography';
|
|
7
|
-
import {
|
|
7
|
+
import { cva } from '../utils/cva';
|
|
8
|
+
import { descriptionListClassnames } from './constants';
|
|
8
9
|
import { DescriptionWrapper, ListWrapper, StyledDescriptionName, StyledDescriptionValue, Title, Wrapper, } from './styles';
|
|
10
|
+
import { useLogic } from './useLogic';
|
|
9
11
|
import { getTooltipProps } from './utils';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
+
const descriptionList = cva(descriptionListClassnames.root, {
|
|
13
|
+
variants: {
|
|
14
|
+
variant: {
|
|
15
|
+
contained: descriptionListClassnames.contained,
|
|
16
|
+
default: descriptionListClassnames.default,
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
const descriptionItem = cva(descriptionListClassnames.item, {
|
|
21
|
+
variants: {
|
|
22
|
+
alignNameWidth: {
|
|
23
|
+
true: descriptionListClassnames.itemAlignNameWidth,
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
export const DescriptionList = ({ items, variant: listVariant = 'default', title, direction, alignNameWidth, leader, ...props }) => {
|
|
28
|
+
const { descriptionItems, descriptionListStyles } = useLogic({
|
|
29
|
+
items,
|
|
30
|
+
alignNameWidth,
|
|
31
|
+
leader,
|
|
32
|
+
});
|
|
12
33
|
const render = useCallback((value, optionProps) => {
|
|
13
34
|
const { renderValue, color, canCopy, copyPosition, variant, copyText } = optionProps;
|
|
14
35
|
if (renderValue) {
|
|
@@ -25,19 +46,21 @@ export const DescriptionList = ({ items, variant: listVariant = 'default', title
|
|
|
25
46
|
}, []);
|
|
26
47
|
const renderTitle = () => {
|
|
27
48
|
if (typeof title === 'string') {
|
|
28
|
-
return _jsx(Title, { variant: "h6", children: title });
|
|
49
|
+
return (_jsx(Title, { variant: "h6", className: descriptionListClassnames.title, children: title }));
|
|
29
50
|
}
|
|
30
|
-
return _jsx(Title, { component: "div", children: title });
|
|
51
|
+
return (_jsx(Title, { component: "div", className: descriptionListClassnames.title, children: title }));
|
|
31
52
|
};
|
|
32
53
|
const renderNote = (note) => {
|
|
33
54
|
if (typeof note === 'string') {
|
|
34
|
-
return (_jsx(Typography, { variant: "caption", color: "textSecondary", children: note }));
|
|
55
|
+
return (_jsx(Typography, { variant: "caption", color: "textSecondary", className: descriptionListClassnames.note, children: note }));
|
|
35
56
|
}
|
|
36
57
|
return note;
|
|
37
58
|
};
|
|
38
59
|
const renderItem = (value, name, options) => {
|
|
39
60
|
const { nameMaxWidth, note, ...restOptions } = options || {};
|
|
40
|
-
return (_jsxs(DescriptionWrapper, {
|
|
61
|
+
return (_jsxs(DescriptionWrapper, { className: descriptionItem({
|
|
62
|
+
alignNameWidth: Boolean(alignNameWidth),
|
|
63
|
+
}), children: [_jsxs(Description, { direction: direction, leader: leader, ...props, component: "div", children: [_jsx(StyledDescriptionName, { "$nameMaxWidth": nameMaxWidth, "$direction": direction, children: name }), render(value, restOptions)] }), note && renderNote(note)] }, `${name}:${value}`));
|
|
41
64
|
};
|
|
42
|
-
return (_jsxs(Wrapper, {
|
|
65
|
+
return (_jsxs(Wrapper, { className: descriptionList({ variant: listVariant }), style: descriptionListStyles, children: [title && renderTitle(), descriptionItems.map((group, groupIndex) => (_jsx(ListWrapper, { "$direction": direction, "$hasDivider": groupIndex !== 0, "$variant": listVariant, children: group.map(({ name, value, options }) => renderItem(value, name, options)) }, groupIndex)))] }));
|
|
43
66
|
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const descriptionListVariantClassnames: {
|
|
2
|
+
contained: string;
|
|
3
|
+
default: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const descriptionListClassnames: {
|
|
6
|
+
contained: string;
|
|
7
|
+
default: string;
|
|
8
|
+
root: string;
|
|
9
|
+
title: string;
|
|
10
|
+
item: string;
|
|
11
|
+
itemAlignNameWidth: string;
|
|
12
|
+
note: string;
|
|
13
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createUIKitClassname } from '../utils/createUIKitClassname';
|
|
2
|
+
export const descriptionListVariantClassnames = {
|
|
3
|
+
contained: createUIKitClassname('description-list_variant-contained'),
|
|
4
|
+
default: createUIKitClassname('description-list_variant-default'),
|
|
5
|
+
};
|
|
6
|
+
export const descriptionListClassnames = {
|
|
7
|
+
root: createUIKitClassname('description-list'),
|
|
8
|
+
title: createUIKitClassname('description-list__title'),
|
|
9
|
+
item: createUIKitClassname('description-list__item'),
|
|
10
|
+
itemAlignNameWidth: createUIKitClassname('description-list__item_align-name-width'),
|
|
11
|
+
note: createUIKitClassname('description-list__note'),
|
|
12
|
+
...descriptionListVariantClassnames,
|
|
13
|
+
};
|
|
@@ -11,8 +11,6 @@ export declare const StyledDescriptionName: import("../styled").StyledComponent<
|
|
|
11
11
|
export declare const Wrapper: import("../styled").StyledComponent<{
|
|
12
12
|
theme?: import("@emotion/react").Theme | undefined;
|
|
13
13
|
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
14
|
-
} & {
|
|
15
|
-
$variant: DescriptionListVariant;
|
|
16
14
|
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLElement>, HTMLElement>, {}>;
|
|
17
15
|
export declare const ListWrapper: import("../styled").StyledComponent<{
|
|
18
16
|
theme?: import("@emotion/react").Theme | undefined;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Description } from '../Description';
|
|
1
|
+
import { Description, descriptionClassnames } from '../Description';
|
|
2
2
|
import { styled } from '../styled';
|
|
3
3
|
import { Typography } from '../Typography';
|
|
4
|
+
import { descriptionListClassnames } from './constants';
|
|
4
5
|
export const StyledDescriptionName = styled(Description.Name, {
|
|
5
6
|
shouldForwardProp: (prop) => !['$nameMaxWidth', '$direction'].includes(prop),
|
|
6
7
|
}) `
|
|
@@ -11,20 +12,17 @@ export const StyledDescriptionName = styled(Description.Name, {
|
|
|
11
12
|
margin-bottom: ${({ theme, $direction }) => Object.is($direction, 'row') ? 0 : theme.spacing(1)};
|
|
12
13
|
}
|
|
13
14
|
`;
|
|
14
|
-
export const Wrapper = styled
|
|
15
|
-
shouldForwardProp: (prop) => !['$variant'].includes(prop),
|
|
16
|
-
}) `
|
|
15
|
+
export const Wrapper = styled.article `
|
|
17
16
|
display: grid;
|
|
18
17
|
|
|
19
|
-
padding: ${({ $variant, theme }) => $variant === 'contained' ? theme.spacing(4) : 0};
|
|
20
|
-
|
|
21
|
-
background-color: ${({ $variant, theme }) => $variant === 'contained'
|
|
22
|
-
? theme.palette.background.default
|
|
23
|
-
: 'transparent'};
|
|
24
|
-
border: ${({ $variant, theme }) => $variant === 'contained'
|
|
25
|
-
? `1px solid ${theme.palette.grey[300]}`
|
|
26
|
-
: 'unset'};
|
|
27
18
|
border-radius: ${({ theme }) => theme.shape.small};
|
|
19
|
+
|
|
20
|
+
&.${descriptionListClassnames.contained} {
|
|
21
|
+
padding: ${({ theme }) => theme.spacing(4)};
|
|
22
|
+
|
|
23
|
+
background-color: ${({ theme }) => theme.palette.background.default};
|
|
24
|
+
border: 1px solid ${({ theme }) => theme.palette.grey[300]};
|
|
25
|
+
}
|
|
28
26
|
`;
|
|
29
27
|
export const ListWrapper = styled('dl', {
|
|
30
28
|
shouldForwardProp: (prop) => !['$direction', '$hasDivider', '$variant'].includes(prop),
|
|
@@ -60,6 +58,31 @@ export const DescriptionWrapper = styled.div `
|
|
|
60
58
|
display: flex;
|
|
61
59
|
flex-direction: column;
|
|
62
60
|
gap: ${({ theme }) => theme.spacing(1)};
|
|
61
|
+
|
|
62
|
+
${({ theme }) => theme.breakpoints.up('sm')} {
|
|
63
|
+
&.${descriptionListClassnames.itemAlignNameWidth} {
|
|
64
|
+
display: grid;
|
|
65
|
+
grid-template-columns: var(--name-desktop-width) 1fr;
|
|
66
|
+
|
|
67
|
+
& .${descriptionListClassnames.note} {
|
|
68
|
+
grid-column: 1 / -1;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
& .${descriptionClassnames.root} {
|
|
72
|
+
display: grid;
|
|
73
|
+
grid-column: 1 / -1;
|
|
74
|
+
grid-template-columns: inherit;
|
|
75
|
+
gap: ${({ theme }) => theme.spacing(1)};
|
|
76
|
+
|
|
77
|
+
/* Причина игнора: прогрессивное улучшение */
|
|
78
|
+
/* stylelint-disable plugin/no-unsupported-browser-features */
|
|
79
|
+
@supports (grid-template-columns: subgrid) {
|
|
80
|
+
grid-template-columns: subgrid;
|
|
81
|
+
}
|
|
82
|
+
/* stylelint-enable plugin/no-unsupported-browser-features */
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
63
86
|
`;
|
|
64
87
|
export const Title = styled(Typography) `
|
|
65
88
|
margin-bottom: ${({ theme }) => theme.spacing(3)};
|
|
@@ -37,4 +37,8 @@ export type DescriptionListProps = Pick<DescriptionProps, 'justifyContent' | 'le
|
|
|
37
37
|
* Заголовок блока
|
|
38
38
|
*/
|
|
39
39
|
title?: ReactNode;
|
|
40
|
+
/**
|
|
41
|
+
* Включает выравнивание колонок DescriptionList с указанной шириной для поля наименования.
|
|
42
|
+
*/
|
|
43
|
+
alignNameWidth?: `${string}px`;
|
|
40
44
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DescriptionListItem, DescriptionListProps } from '
|
|
1
|
+
import type { DescriptionListItem, DescriptionListProps } from '../../../types';
|
|
2
2
|
type UseNormalizedDescriptionItemsParams = Pick<DescriptionListProps, 'items'>;
|
|
3
3
|
/**
|
|
4
4
|
* Группирует элементы описания в логические секции для рендеринга.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useLogic';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useLogic';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type CSSProperties } from 'react';
|
|
2
|
+
import type { DescriptionListProps } from '../types';
|
|
3
|
+
type UseLogicParams = Pick<DescriptionListProps, 'items' | 'alignNameWidth' | 'leader'>;
|
|
4
|
+
export declare const useLogic: ({ items, alignNameWidth, leader }: UseLogicParams) => {
|
|
5
|
+
descriptionItems: import("../types").DescriptionListItem[][];
|
|
6
|
+
descriptionListStyles: CSSProperties;
|
|
7
|
+
};
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { useGroupedDescriptionItems } from './hooks';
|
|
3
|
+
export const useLogic = ({ items, alignNameWidth, leader }) => {
|
|
4
|
+
const descriptionItems = useGroupedDescriptionItems({ items });
|
|
5
|
+
const getDescriptionListStyles = () => {
|
|
6
|
+
if (!alignNameWidth) {
|
|
7
|
+
return {};
|
|
8
|
+
}
|
|
9
|
+
return { '--name-desktop-width': alignNameWidth };
|
|
10
|
+
};
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
if (leader && alignNameWidth) {
|
|
13
|
+
// biome-ignore lint/suspicious/noConsole: Сообщение для интеграторов
|
|
14
|
+
console.error('DescriptionList: Параметры leader и alignNameWidth не могут быть использованы вместе');
|
|
15
|
+
}
|
|
16
|
+
}, [leader, alignNameWidth]);
|
|
17
|
+
return {
|
|
18
|
+
descriptionItems,
|
|
19
|
+
descriptionListStyles: getDescriptionListStyles(),
|
|
20
|
+
};
|
|
21
|
+
};
|
|
@@ -2,11 +2,27 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
2
2
|
import { forwardRef, } from 'react';
|
|
3
3
|
import { Collapse } from '../../../Collapse';
|
|
4
4
|
import { useViewportType } from '../../../useViewportType';
|
|
5
|
+
import { cva } from '../../../utils/cva';
|
|
6
|
+
import { navMenuItemButtonClassnames } from './constants';
|
|
5
7
|
import { EndAdornmentWrapper, NavMenuItemButtonChevron, NavMenuItemButtonIcon, NavMenuItemButtonText, StyledListItemButton, StyledPageDotOutlineMd, } from './styles';
|
|
8
|
+
const itemButton = cva(navMenuItemButtonClassnames.root, {
|
|
9
|
+
variants: {
|
|
10
|
+
hasGroup: {
|
|
11
|
+
true: navMenuItemButtonClassnames.hasGroup,
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
const itemButtonLabel = cva(navMenuItemButtonClassnames.label, {
|
|
16
|
+
variants: {
|
|
17
|
+
hasCounter: {
|
|
18
|
+
true: navMenuItemButtonClassnames.labelHasCounter,
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
});
|
|
6
22
|
export const ItemButton = forwardRef((props, ref) => {
|
|
7
23
|
const { collapsedIn, opened, text, icon, component = 'a', counter, isNested = false, isGroupTitleItem = false, selected, ...restProps } = props;
|
|
8
24
|
const { isMobile } = useViewportType();
|
|
9
25
|
const Counter = counter?.component;
|
|
10
26
|
const { max, count } = counter || {};
|
|
11
|
-
return (_jsxs(StyledListItemButton, {
|
|
27
|
+
return (_jsxs(StyledListItemButton, { className: itemButton({ hasGroup: isGroupTitleItem }), ref: ref, component: component, withoutContainer: true, selected: selected, "aria-selected": selected, ...restProps, children: [isMobile ? (_jsxs(_Fragment, { children: [isNested && _jsx(StyledPageDotOutlineMd, {}), _jsx(NavMenuItemButtonText, { children: text, rowsCount: 2 })] })) : (_jsxs(_Fragment, { children: [_jsx(NavMenuItemButtonIcon, { children: Counter && Number(count) ? (_jsx(Counter.Badge, { invisible: collapsedIn, children: icon })) : (icon) }), _jsx(Collapse, { orientation: "horizontal", in: collapsedIn, children: _jsx(NavMenuItemButtonText, { tooltipProps: { placement: 'right' }, className: itemButtonLabel({ hasCounter: Boolean(counter) }), children: text, rowsCount: 2 }) })] })), _jsxs(EndAdornmentWrapper, { "$collapsedIn": collapsedIn, children: [Counter && _jsx(Counter, { max: max, count: count }), isGroupTitleItem && (_jsx(NavMenuItemButtonChevron, { "$collapsedIn": collapsedIn, "$opened": opened }))] })] }));
|
|
12
28
|
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createUIKitClassname } from '../../../utils/createUIKitClassname';
|
|
2
|
+
export const navMenuItemButtonClassnames = {
|
|
3
|
+
root: createUIKitClassname('nav-menu-item-button'),
|
|
4
|
+
hasGroup: createUIKitClassname('nav-menu-item-button_has-group'),
|
|
5
|
+
label: createUIKitClassname('nav-menu-item-button__label'),
|
|
6
|
+
labelHasCounter: createUIKitClassname('nav-menu-item-button__label_has-counter'),
|
|
7
|
+
};
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
/// <reference types="react" />
|
|
3
3
|
export declare const StyledListItemButton: import("../../../styled").StyledComponent<Omit<import("../../../ListItemButton").ListItemButtonProps, "ref"> & import("react").RefAttributes<HTMLDivElement> & {
|
|
4
4
|
theme?: import("@emotion/react").Theme | undefined;
|
|
5
|
-
} & {
|
|
6
|
-
$isGroupTitleItem: boolean;
|
|
7
5
|
}, {}, {}>;
|
|
8
6
|
export declare const NavMenuItemButtonIcon: import("../../../styled").StyledComponent<Omit<{
|
|
9
7
|
classes?: Partial<import("@mui/material").ListItemIconClasses> | undefined;
|
|
@@ -637,9 +635,6 @@ export declare const NavMenuItemButtonText: import("../../../styled").StyledComp
|
|
|
637
635
|
children?: import("react").ReactNode;
|
|
638
636
|
} & import("react").RefAttributes<HTMLElement> & {
|
|
639
637
|
theme?: import("@emotion/react").Theme | undefined;
|
|
640
|
-
} & {
|
|
641
|
-
$isGroupTitleItem: boolean;
|
|
642
|
-
$isCounter?: boolean | undefined;
|
|
643
638
|
}, {}, {}>;
|
|
644
639
|
export declare const NavMenuItemButtonChevron: import("../../../styled").StyledComponent<{
|
|
645
640
|
children?: import("react").ReactNode;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { listItemButtonClasses } from '@mui/material/ListItemButton';
|
|
1
2
|
import { ChevronDOutlineMd } from '../../../../icons/ChevronDOutlineMd';
|
|
2
3
|
import { PageDotOutlineMd } from '../../../../icons/PageDotOutlineMd';
|
|
3
4
|
import { ListItemButton } from '../../../ListItemButton';
|
|
@@ -6,15 +7,8 @@ import { OverflowTypography } from '../../../OverflowTypography';
|
|
|
6
7
|
import { svgIconClassnames } from '../../../SvgIcon';
|
|
7
8
|
import { styled } from '../../../styled';
|
|
8
9
|
import { UpDownTransition } from '../../../styled/mixins';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return isGroupTitleItem ? '140px' : '170px';
|
|
12
|
-
}
|
|
13
|
-
return isGroupTitleItem ? '100px' : '130px';
|
|
14
|
-
};
|
|
15
|
-
export const StyledListItemButton = styled(ListItemButton, {
|
|
16
|
-
shouldForwardProp: (prop) => !['$isGroupTitleItem'].includes(prop),
|
|
17
|
-
}) `
|
|
10
|
+
import { navMenuItemButtonClassnames } from './constants';
|
|
11
|
+
export const StyledListItemButton = styled(ListItemButton) `
|
|
18
12
|
overflow: hidden;
|
|
19
13
|
|
|
20
14
|
box-sizing: border-box;
|
|
@@ -23,10 +17,10 @@ export const StyledListItemButton = styled(ListItemButton, {
|
|
|
23
17
|
|
|
24
18
|
border-radius: ${({ theme }) => theme.shape.small};
|
|
25
19
|
|
|
26
|
-
|
|
20
|
+
&.${listItemButtonClasses.selected} {
|
|
27
21
|
color: ${({ theme }) => theme.palette.grey[900]};
|
|
28
22
|
|
|
29
|
-
background-color: ${({ theme
|
|
23
|
+
background-color: ${({ theme }) => theme.palette.primary[100]};
|
|
30
24
|
|
|
31
25
|
&::before {
|
|
32
26
|
content: '';
|
|
@@ -40,7 +34,15 @@ export const StyledListItemButton = styled(ListItemButton, {
|
|
|
40
34
|
}
|
|
41
35
|
|
|
42
36
|
&:hover {
|
|
43
|
-
background-color: ${({ theme
|
|
37
|
+
background-color: ${({ theme }) => theme.palette.primary[100]};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
&.${navMenuItemButtonClassnames.hasGroup} {
|
|
41
|
+
background-color: inherit;
|
|
42
|
+
|
|
43
|
+
&:hover {
|
|
44
|
+
background-color: inherit;
|
|
45
|
+
}
|
|
44
46
|
}
|
|
45
47
|
}
|
|
46
48
|
|
|
@@ -86,10 +88,7 @@ export const NavMenuItemButtonIcon = styled(ListItemIcon) `
|
|
|
86
88
|
height: 20px;
|
|
87
89
|
}
|
|
88
90
|
`;
|
|
89
|
-
export const NavMenuItemButtonText = styled(OverflowTypography
|
|
90
|
-
shouldForwardProp: (prop) => !['$isGroupTitleItem', '$isCounter'].includes(prop),
|
|
91
|
-
}) `
|
|
92
|
-
width: ${({ $isGroupTitleItem, $isCounter }) => getItemWidth($isGroupTitleItem, $isCounter)};
|
|
91
|
+
export const NavMenuItemButtonText = styled(OverflowTypography) `
|
|
93
92
|
margin-left: ${({ theme }) => theme.spacing(3)};
|
|
94
93
|
|
|
95
94
|
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { cva } from 'class-variance-authority';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { cva } from 'class-variance-authority';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './cva';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './cva';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './cva';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './cva';
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ComplianceStatus = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
const class_variance_authority_1 = require("class-variance-authority");
|
|
6
5
|
const OverflowTypography_1 = require("../OverflowTypography");
|
|
7
6
|
const Typography_1 = require("../Typography");
|
|
7
|
+
const cva_1 = require("../utils/cva");
|
|
8
8
|
const constants_1 = require("./constants");
|
|
9
9
|
const styles_1 = require("./styles");
|
|
10
10
|
const ICON_BY_STATUS = {
|
|
@@ -13,7 +13,7 @@ const ICON_BY_STATUS = {
|
|
|
13
13
|
reject: (0, jsx_runtime_1.jsx)(styles_1.RejectIcon, {}),
|
|
14
14
|
loading: (0, jsx_runtime_1.jsx)(styles_1.StyledLoader, {}),
|
|
15
15
|
};
|
|
16
|
-
const complianceStatus = (0,
|
|
16
|
+
const complianceStatus = (0, cva_1.cva)(constants_1.complianceStatusClassnames.root, {
|
|
17
17
|
variants: {
|
|
18
18
|
backgroundColor: {
|
|
19
19
|
grey: constants_1.complianceStatusColorClassnames.grey,
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.dashboardSidebarClassnames = void 0;
|
|
3
|
+
exports.LABEL_WIDTH = exports.dashboardSidebarClassnames = void 0;
|
|
4
4
|
const createUIKitClassname_1 = require("../utils/createUIKitClassname");
|
|
5
5
|
exports.dashboardSidebarClassnames = {
|
|
6
6
|
root: (0, createUIKitClassname_1.createUIKitClassname)('dashboard-layout-sidebar'),
|
|
7
7
|
hasMenuOrganization: (0, createUIKitClassname_1.createUIKitClassname)('dashboard-layout-sidebar_has-menu-organization'),
|
|
8
8
|
};
|
|
9
|
+
exports.LABEL_WIDTH = {
|
|
10
|
+
default: '170px',
|
|
11
|
+
counter: '130px',
|
|
12
|
+
group: '140px',
|
|
13
|
+
groupCounter: '100px',
|
|
14
|
+
};
|
|
@@ -5,6 +5,7 @@ const constants_1 = require("../constants");
|
|
|
5
5
|
const constants_2 = require("../DashboardLayout/constants");
|
|
6
6
|
const constants_3 = require("../MenuOrganization/constants");
|
|
7
7
|
const OrganizationButton_1 = require("../MenuOrganization/OrganizationButton");
|
|
8
|
+
const Item_1 = require("../NavMenu/Item");
|
|
8
9
|
const Paper_1 = require("../Paper");
|
|
9
10
|
const PinButton_1 = require("../PinButton");
|
|
10
11
|
const styled_1 = require("../styled");
|
|
@@ -62,7 +63,7 @@ exports.SidebarRoot = (0, styled_1.styled)('aside', {
|
|
|
62
63
|
width: ${({ $collapsedIn, $isPinned }) => $isPinned || (!$isPinned && $collapsedIn) ? '242px' : '58px'};
|
|
63
64
|
height: 100%;
|
|
64
65
|
|
|
65
|
-
background-color: ${({ theme }) => theme.palette.background.default}
|
|
66
|
+
background-color: ${({ theme }) => theme.palette.background.default};
|
|
66
67
|
border-radius: ${({ theme }) => theme.shape.medium};
|
|
67
68
|
box-shadow: ${({ theme, $isPinned, $collapsedIn }) => ($isPinned || !$collapsedIn ? 'unset' : theme.elevation[300])};
|
|
68
69
|
|
|
@@ -118,6 +119,24 @@ exports.SidebarContent = styled_1.styled.div `
|
|
|
118
119
|
});
|
|
119
120
|
}};
|
|
120
121
|
|
|
122
|
+
& .${Item_1.navMenuItemButtonClassnames.label} {
|
|
123
|
+
width: ${constants_4.LABEL_WIDTH.default};
|
|
124
|
+
|
|
125
|
+
&.${Item_1.navMenuItemButtonClassnames.labelHasCounter} {
|
|
126
|
+
width: ${constants_4.LABEL_WIDTH.counter};
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
& .${Item_1.navMenuItemButtonClassnames.hasGroup} {
|
|
131
|
+
& .${Item_1.navMenuItemButtonClassnames.label} {
|
|
132
|
+
width: ${constants_4.LABEL_WIDTH.group};
|
|
133
|
+
|
|
134
|
+
&.${Item_1.navMenuItemButtonClassnames.labelHasCounter} {
|
|
135
|
+
width: ${constants_4.LABEL_WIDTH.groupCounter};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
121
140
|
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
122
141
|
width: inherit;
|
|
123
142
|
padding: ${({ theme, $hasHeader }) => theme.spacing($hasHeader ? 0 : 2, 0, 0, 0)};
|
|
@@ -137,7 +156,7 @@ exports.Footer = styled_1.styled.footer `
|
|
|
137
156
|
border-bottom-left-radius: ${({ theme }) => theme.shape.medium};
|
|
138
157
|
|
|
139
158
|
.${PinButton_1.pinButtonClassnames.root} {
|
|
140
|
-
padding-left: ${({ theme }) => theme.microSpacing(9)}
|
|
159
|
+
padding-left: ${({ theme }) => theme.microSpacing(9)};
|
|
141
160
|
}
|
|
142
161
|
|
|
143
162
|
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { DescriptionListProps } from './types';
|
|
2
|
-
export declare const DescriptionList: ({ items, variant: listVariant, title, direction, ...props }: DescriptionListProps) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const DescriptionList: ({ items, variant: listVariant, title, direction, alignNameWidth, leader, ...props }: DescriptionListProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -7,11 +7,32 @@ const Description_1 = require("../Description");
|
|
|
7
7
|
const GuidTypography_1 = require("../GuidTypography");
|
|
8
8
|
const Tag_1 = require("../Tag");
|
|
9
9
|
const Typography_1 = require("../Typography");
|
|
10
|
-
const
|
|
10
|
+
const cva_1 = require("../utils/cva");
|
|
11
|
+
const constants_1 = require("./constants");
|
|
11
12
|
const styles_1 = require("./styles");
|
|
13
|
+
const useLogic_1 = require("./useLogic");
|
|
12
14
|
const utils_1 = require("./utils");
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
+
const descriptionList = (0, cva_1.cva)(constants_1.descriptionListClassnames.root, {
|
|
16
|
+
variants: {
|
|
17
|
+
variant: {
|
|
18
|
+
contained: constants_1.descriptionListClassnames.contained,
|
|
19
|
+
default: constants_1.descriptionListClassnames.default,
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
const descriptionItem = (0, cva_1.cva)(constants_1.descriptionListClassnames.item, {
|
|
24
|
+
variants: {
|
|
25
|
+
alignNameWidth: {
|
|
26
|
+
true: constants_1.descriptionListClassnames.itemAlignNameWidth,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
const DescriptionList = ({ items, variant: listVariant = 'default', title, direction, alignNameWidth, leader, ...props }) => {
|
|
31
|
+
const { descriptionItems, descriptionListStyles } = (0, useLogic_1.useLogic)({
|
|
32
|
+
items,
|
|
33
|
+
alignNameWidth,
|
|
34
|
+
leader,
|
|
35
|
+
});
|
|
15
36
|
const render = (0, react_1.useCallback)((value, optionProps) => {
|
|
16
37
|
const { renderValue, color, canCopy, copyPosition, variant, copyText } = optionProps;
|
|
17
38
|
if (renderValue) {
|
|
@@ -28,20 +49,22 @@ const DescriptionList = ({ items, variant: listVariant = 'default', title, direc
|
|
|
28
49
|
}, []);
|
|
29
50
|
const renderTitle = () => {
|
|
30
51
|
if (typeof title === 'string') {
|
|
31
|
-
return (0, jsx_runtime_1.jsx)(styles_1.Title, { variant: "h6", children: title });
|
|
52
|
+
return ((0, jsx_runtime_1.jsx)(styles_1.Title, { variant: "h6", className: constants_1.descriptionListClassnames.title, children: title }));
|
|
32
53
|
}
|
|
33
|
-
return (0, jsx_runtime_1.jsx)(styles_1.Title, { component: "div", children: title });
|
|
54
|
+
return ((0, jsx_runtime_1.jsx)(styles_1.Title, { component: "div", className: constants_1.descriptionListClassnames.title, children: title }));
|
|
34
55
|
};
|
|
35
56
|
const renderNote = (note) => {
|
|
36
57
|
if (typeof note === 'string') {
|
|
37
|
-
return ((0, jsx_runtime_1.jsx)(Typography_1.Typography, { variant: "caption", color: "textSecondary", children: note }));
|
|
58
|
+
return ((0, jsx_runtime_1.jsx)(Typography_1.Typography, { variant: "caption", color: "textSecondary", className: constants_1.descriptionListClassnames.note, children: note }));
|
|
38
59
|
}
|
|
39
60
|
return note;
|
|
40
61
|
};
|
|
41
62
|
const renderItem = (value, name, options) => {
|
|
42
63
|
const { nameMaxWidth, note, ...restOptions } = options || {};
|
|
43
|
-
return ((0, jsx_runtime_1.jsxs)(styles_1.DescriptionWrapper, {
|
|
64
|
+
return ((0, jsx_runtime_1.jsxs)(styles_1.DescriptionWrapper, { className: descriptionItem({
|
|
65
|
+
alignNameWidth: Boolean(alignNameWidth),
|
|
66
|
+
}), children: [(0, jsx_runtime_1.jsxs)(Description_1.Description, { direction: direction, leader: leader, ...props, component: "div", children: [(0, jsx_runtime_1.jsx)(styles_1.StyledDescriptionName, { "$nameMaxWidth": nameMaxWidth, "$direction": direction, children: name }), render(value, restOptions)] }), note && renderNote(note)] }, `${name}:${value}`));
|
|
44
67
|
};
|
|
45
|
-
return ((0, jsx_runtime_1.jsxs)(styles_1.Wrapper, {
|
|
68
|
+
return ((0, jsx_runtime_1.jsxs)(styles_1.Wrapper, { className: descriptionList({ variant: listVariant }), style: descriptionListStyles, children: [title && renderTitle(), descriptionItems.map((group, groupIndex) => ((0, jsx_runtime_1.jsx)(styles_1.ListWrapper, { "$direction": direction, "$hasDivider": groupIndex !== 0, "$variant": listVariant, children: group.map(({ name, value, options }) => renderItem(value, name, options)) }, groupIndex)))] }));
|
|
46
69
|
};
|
|
47
70
|
exports.DescriptionList = DescriptionList;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const descriptionListVariantClassnames: {
|
|
2
|
+
contained: string;
|
|
3
|
+
default: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const descriptionListClassnames: {
|
|
6
|
+
contained: string;
|
|
7
|
+
default: string;
|
|
8
|
+
root: string;
|
|
9
|
+
title: string;
|
|
10
|
+
item: string;
|
|
11
|
+
itemAlignNameWidth: string;
|
|
12
|
+
note: string;
|
|
13
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.descriptionListClassnames = exports.descriptionListVariantClassnames = void 0;
|
|
4
|
+
const createUIKitClassname_1 = require("../utils/createUIKitClassname");
|
|
5
|
+
exports.descriptionListVariantClassnames = {
|
|
6
|
+
contained: (0, createUIKitClassname_1.createUIKitClassname)('description-list_variant-contained'),
|
|
7
|
+
default: (0, createUIKitClassname_1.createUIKitClassname)('description-list_variant-default'),
|
|
8
|
+
};
|
|
9
|
+
exports.descriptionListClassnames = {
|
|
10
|
+
root: (0, createUIKitClassname_1.createUIKitClassname)('description-list'),
|
|
11
|
+
title: (0, createUIKitClassname_1.createUIKitClassname)('description-list__title'),
|
|
12
|
+
item: (0, createUIKitClassname_1.createUIKitClassname)('description-list__item'),
|
|
13
|
+
itemAlignNameWidth: (0, createUIKitClassname_1.createUIKitClassname)('description-list__item_align-name-width'),
|
|
14
|
+
note: (0, createUIKitClassname_1.createUIKitClassname)('description-list__note'),
|
|
15
|
+
...exports.descriptionListVariantClassnames,
|
|
16
|
+
};
|
|
@@ -11,8 +11,6 @@ export declare const StyledDescriptionName: import("@emotion/styled/dist/declara
|
|
|
11
11
|
export declare const Wrapper: import("@emotion/styled/dist/declarations/src/types").StyledComponent<{
|
|
12
12
|
theme?: import("@emotion/react").Theme | undefined;
|
|
13
13
|
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
14
|
-
} & {
|
|
15
|
-
$variant: DescriptionListVariant;
|
|
16
14
|
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLElement>, HTMLElement>, {}>;
|
|
17
15
|
export declare const ListWrapper: import("@emotion/styled/dist/declarations/src/types").StyledComponent<{
|
|
18
16
|
theme?: import("@emotion/react").Theme | undefined;
|
|
@@ -4,6 +4,7 @@ exports.Title = exports.DescriptionWrapper = exports.StyledDescriptionValue = ex
|
|
|
4
4
|
const Description_1 = require("../Description");
|
|
5
5
|
const styled_1 = require("../styled");
|
|
6
6
|
const Typography_1 = require("../Typography");
|
|
7
|
+
const constants_1 = require("./constants");
|
|
7
8
|
exports.StyledDescriptionName = (0, styled_1.styled)(Description_1.Description.Name, {
|
|
8
9
|
shouldForwardProp: (prop) => !['$nameMaxWidth', '$direction'].includes(prop),
|
|
9
10
|
}) `
|
|
@@ -14,20 +15,17 @@ exports.StyledDescriptionName = (0, styled_1.styled)(Description_1.Description.N
|
|
|
14
15
|
margin-bottom: ${({ theme, $direction }) => Object.is($direction, 'row') ? 0 : theme.spacing(1)};
|
|
15
16
|
}
|
|
16
17
|
`;
|
|
17
|
-
exports.Wrapper =
|
|
18
|
-
shouldForwardProp: (prop) => !['$variant'].includes(prop),
|
|
19
|
-
}) `
|
|
18
|
+
exports.Wrapper = styled_1.styled.article `
|
|
20
19
|
display: grid;
|
|
21
20
|
|
|
22
|
-
padding: ${({ $variant, theme }) => $variant === 'contained' ? theme.spacing(4) : 0};
|
|
23
|
-
|
|
24
|
-
background-color: ${({ $variant, theme }) => $variant === 'contained'
|
|
25
|
-
? theme.palette.background.default
|
|
26
|
-
: 'transparent'};
|
|
27
|
-
border: ${({ $variant, theme }) => $variant === 'contained'
|
|
28
|
-
? `1px solid ${theme.palette.grey[300]}`
|
|
29
|
-
: 'unset'};
|
|
30
21
|
border-radius: ${({ theme }) => theme.shape.small};
|
|
22
|
+
|
|
23
|
+
&.${constants_1.descriptionListClassnames.contained} {
|
|
24
|
+
padding: ${({ theme }) => theme.spacing(4)};
|
|
25
|
+
|
|
26
|
+
background-color: ${({ theme }) => theme.palette.background.default};
|
|
27
|
+
border: 1px solid ${({ theme }) => theme.palette.grey[300]};
|
|
28
|
+
}
|
|
31
29
|
`;
|
|
32
30
|
exports.ListWrapper = (0, styled_1.styled)('dl', {
|
|
33
31
|
shouldForwardProp: (prop) => !['$direction', '$hasDivider', '$variant'].includes(prop),
|
|
@@ -63,6 +61,31 @@ exports.DescriptionWrapper = styled_1.styled.div `
|
|
|
63
61
|
display: flex;
|
|
64
62
|
flex-direction: column;
|
|
65
63
|
gap: ${({ theme }) => theme.spacing(1)};
|
|
64
|
+
|
|
65
|
+
${({ theme }) => theme.breakpoints.up('sm')} {
|
|
66
|
+
&.${constants_1.descriptionListClassnames.itemAlignNameWidth} {
|
|
67
|
+
display: grid;
|
|
68
|
+
grid-template-columns: var(--name-desktop-width) 1fr;
|
|
69
|
+
|
|
70
|
+
& .${constants_1.descriptionListClassnames.note} {
|
|
71
|
+
grid-column: 1 / -1;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
& .${Description_1.descriptionClassnames.root} {
|
|
75
|
+
display: grid;
|
|
76
|
+
grid-column: 1 / -1;
|
|
77
|
+
grid-template-columns: inherit;
|
|
78
|
+
gap: ${({ theme }) => theme.spacing(1)};
|
|
79
|
+
|
|
80
|
+
/* Причина игнора: прогрессивное улучшение */
|
|
81
|
+
/* stylelint-disable plugin/no-unsupported-browser-features */
|
|
82
|
+
@supports (grid-template-columns: subgrid) {
|
|
83
|
+
grid-template-columns: subgrid;
|
|
84
|
+
}
|
|
85
|
+
/* stylelint-enable plugin/no-unsupported-browser-features */
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
66
89
|
`;
|
|
67
90
|
exports.Title = (0, styled_1.styled)(Typography_1.Typography) `
|
|
68
91
|
margin-bottom: ${({ theme }) => theme.spacing(3)};
|
|
@@ -37,4 +37,8 @@ export type DescriptionListProps = Pick<DescriptionProps, 'justifyContent' | 'le
|
|
|
37
37
|
* Заголовок блока
|
|
38
38
|
*/
|
|
39
39
|
title?: ReactNode;
|
|
40
|
+
/**
|
|
41
|
+
* Включает выравнивание колонок DescriptionList с указанной шириной для поля наименования.
|
|
42
|
+
*/
|
|
43
|
+
alignNameWidth?: `${string}px`;
|
|
40
44
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DescriptionListItem, DescriptionListProps } from '
|
|
1
|
+
import type { DescriptionListItem, DescriptionListProps } from '../../../types';
|
|
2
2
|
type UseNormalizedDescriptionItemsParams = Pick<DescriptionListProps, 'items'>;
|
|
3
3
|
/**
|
|
4
4
|
* Группирует элементы описания в логические секции для рендеринга.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useLogic';
|
|
@@ -0,0 +1,17 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./useLogic"), exports);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type CSSProperties } from 'react';
|
|
2
|
+
import type { DescriptionListProps } from '../types';
|
|
3
|
+
type UseLogicParams = Pick<DescriptionListProps, 'items' | 'alignNameWidth' | 'leader'>;
|
|
4
|
+
export declare const useLogic: ({ items, alignNameWidth, leader }: UseLogicParams) => {
|
|
5
|
+
descriptionItems: import("../types").DescriptionListItem[][];
|
|
6
|
+
descriptionListStyles: CSSProperties;
|
|
7
|
+
};
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useLogic = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const hooks_1 = require("./hooks");
|
|
6
|
+
const useLogic = ({ items, alignNameWidth, leader }) => {
|
|
7
|
+
const descriptionItems = (0, hooks_1.useGroupedDescriptionItems)({ items });
|
|
8
|
+
const getDescriptionListStyles = () => {
|
|
9
|
+
if (!alignNameWidth) {
|
|
10
|
+
return {};
|
|
11
|
+
}
|
|
12
|
+
return { '--name-desktop-width': alignNameWidth };
|
|
13
|
+
};
|
|
14
|
+
(0, react_1.useEffect)(() => {
|
|
15
|
+
if (leader && alignNameWidth) {
|
|
16
|
+
// biome-ignore lint/suspicious/noConsole: Сообщение для интеграторов
|
|
17
|
+
console.error('DescriptionList: Параметры leader и alignNameWidth не могут быть использованы вместе');
|
|
18
|
+
}
|
|
19
|
+
}, [leader, alignNameWidth]);
|
|
20
|
+
return {
|
|
21
|
+
descriptionItems,
|
|
22
|
+
descriptionListStyles: getDescriptionListStyles(),
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
exports.useLogic = useLogic;
|
|
@@ -5,11 +5,27 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const Collapse_1 = require("../../../Collapse");
|
|
7
7
|
const useViewportType_1 = require("../../../useViewportType");
|
|
8
|
+
const cva_1 = require("../../../utils/cva");
|
|
9
|
+
const constants_1 = require("./constants");
|
|
8
10
|
const styles_1 = require("./styles");
|
|
11
|
+
const itemButton = (0, cva_1.cva)(constants_1.navMenuItemButtonClassnames.root, {
|
|
12
|
+
variants: {
|
|
13
|
+
hasGroup: {
|
|
14
|
+
true: constants_1.navMenuItemButtonClassnames.hasGroup,
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
const itemButtonLabel = (0, cva_1.cva)(constants_1.navMenuItemButtonClassnames.label, {
|
|
19
|
+
variants: {
|
|
20
|
+
hasCounter: {
|
|
21
|
+
true: constants_1.navMenuItemButtonClassnames.labelHasCounter,
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
});
|
|
9
25
|
exports.ItemButton = (0, react_1.forwardRef)((props, ref) => {
|
|
10
26
|
const { collapsedIn, opened, text, icon, component = 'a', counter, isNested = false, isGroupTitleItem = false, selected, ...restProps } = props;
|
|
11
27
|
const { isMobile } = (0, useViewportType_1.useViewportType)();
|
|
12
28
|
const Counter = counter?.component;
|
|
13
29
|
const { max, count } = counter || {};
|
|
14
|
-
return ((0, jsx_runtime_1.jsxs)(styles_1.StyledListItemButton, {
|
|
30
|
+
return ((0, jsx_runtime_1.jsxs)(styles_1.StyledListItemButton, { className: itemButton({ hasGroup: isGroupTitleItem }), ref: ref, component: component, withoutContainer: true, selected: selected, "aria-selected": selected, ...restProps, children: [isMobile ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [isNested && (0, jsx_runtime_1.jsx)(styles_1.StyledPageDotOutlineMd, {}), (0, jsx_runtime_1.jsx)(styles_1.NavMenuItemButtonText, { children: text, rowsCount: 2 })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(styles_1.NavMenuItemButtonIcon, { children: Counter && Number(count) ? ((0, jsx_runtime_1.jsx)(Counter.Badge, { invisible: collapsedIn, children: icon })) : (icon) }), (0, jsx_runtime_1.jsx)(Collapse_1.Collapse, { orientation: "horizontal", in: collapsedIn, children: (0, jsx_runtime_1.jsx)(styles_1.NavMenuItemButtonText, { tooltipProps: { placement: 'right' }, className: itemButtonLabel({ hasCounter: Boolean(counter) }), children: text, rowsCount: 2 }) })] })), (0, jsx_runtime_1.jsxs)(styles_1.EndAdornmentWrapper, { "$collapsedIn": collapsedIn, children: [Counter && (0, jsx_runtime_1.jsx)(Counter, { max: max, count: count }), isGroupTitleItem && ((0, jsx_runtime_1.jsx)(styles_1.NavMenuItemButtonChevron, { "$collapsedIn": collapsedIn, "$opened": opened }))] })] }));
|
|
15
31
|
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.navMenuItemButtonClassnames = void 0;
|
|
4
|
+
const createUIKitClassname_1 = require("../../../utils/createUIKitClassname");
|
|
5
|
+
exports.navMenuItemButtonClassnames = {
|
|
6
|
+
root: (0, createUIKitClassname_1.createUIKitClassname)('nav-menu-item-button'),
|
|
7
|
+
hasGroup: (0, createUIKitClassname_1.createUIKitClassname)('nav-menu-item-button_has-group'),
|
|
8
|
+
label: (0, createUIKitClassname_1.createUIKitClassname)('nav-menu-item-button__label'),
|
|
9
|
+
labelHasCounter: (0, createUIKitClassname_1.createUIKitClassname)('nav-menu-item-button__label_has-counter'),
|
|
10
|
+
};
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
/// <reference types="react" />
|
|
3
3
|
export declare const StyledListItemButton: import("@emotion/styled/dist/declarations/src/types").StyledComponent<Omit<import("../../../ListItemButton").ListItemButtonProps, "ref"> & import("react").RefAttributes<HTMLDivElement> & {
|
|
4
4
|
theme?: import("@emotion/react").Theme | undefined;
|
|
5
|
-
} & {
|
|
6
|
-
$isGroupTitleItem: boolean;
|
|
7
5
|
}, {}, {}>;
|
|
8
6
|
export declare const NavMenuItemButtonIcon: import("@emotion/styled/dist/declarations/src/types").StyledComponent<Omit<{
|
|
9
7
|
classes?: Partial<import("@mui/material").ListItemIconClasses> | undefined;
|
|
@@ -637,9 +635,6 @@ export declare const NavMenuItemButtonText: import("@emotion/styled/dist/declara
|
|
|
637
635
|
children?: import("react").ReactNode;
|
|
638
636
|
} & import("react").RefAttributes<HTMLElement> & {
|
|
639
637
|
theme?: import("@emotion/react").Theme | undefined;
|
|
640
|
-
} & {
|
|
641
|
-
$isGroupTitleItem: boolean;
|
|
642
|
-
$isCounter?: boolean | undefined;
|
|
643
638
|
}, {}, {}>;
|
|
644
639
|
export declare const NavMenuItemButtonChevron: import("@emotion/styled/dist/declarations/src/types").StyledComponent<{
|
|
645
640
|
children?: import("react").ReactNode;
|
|
@@ -1,23 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StyledPageDotOutlineMd = exports.EndAdornmentWrapper = exports.NavMenuItemButtonChevron = exports.NavMenuItemButtonText = exports.NavMenuItemButtonIcon = exports.StyledListItemButton = void 0;
|
|
4
|
+
const ListItemButton_1 = require("@mui/material/ListItemButton");
|
|
4
5
|
const ChevronDOutlineMd_1 = require("../../../../icons/ChevronDOutlineMd");
|
|
5
6
|
const PageDotOutlineMd_1 = require("../../../../icons/PageDotOutlineMd");
|
|
6
|
-
const
|
|
7
|
+
const ListItemButton_2 = require("../../../ListItemButton");
|
|
7
8
|
const ListItemIcon_1 = require("../../../ListItemIcon");
|
|
8
9
|
const OverflowTypography_1 = require("../../../OverflowTypography");
|
|
9
10
|
const SvgIcon_1 = require("../../../SvgIcon");
|
|
10
11
|
const styled_1 = require("../../../styled");
|
|
11
12
|
const mixins_1 = require("../../../styled/mixins");
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
return isGroupTitleItem ? '140px' : '170px';
|
|
15
|
-
}
|
|
16
|
-
return isGroupTitleItem ? '100px' : '130px';
|
|
17
|
-
};
|
|
18
|
-
exports.StyledListItemButton = (0, styled_1.styled)(ListItemButton_1.ListItemButton, {
|
|
19
|
-
shouldForwardProp: (prop) => !['$isGroupTitleItem'].includes(prop),
|
|
20
|
-
}) `
|
|
13
|
+
const constants_1 = require("./constants");
|
|
14
|
+
exports.StyledListItemButton = (0, styled_1.styled)(ListItemButton_2.ListItemButton) `
|
|
21
15
|
overflow: hidden;
|
|
22
16
|
|
|
23
17
|
box-sizing: border-box;
|
|
@@ -26,10 +20,10 @@ exports.StyledListItemButton = (0, styled_1.styled)(ListItemButton_1.ListItemBut
|
|
|
26
20
|
|
|
27
21
|
border-radius: ${({ theme }) => theme.shape.small};
|
|
28
22
|
|
|
29
|
-
|
|
23
|
+
&.${ListItemButton_1.listItemButtonClasses.selected} {
|
|
30
24
|
color: ${({ theme }) => theme.palette.grey[900]};
|
|
31
25
|
|
|
32
|
-
background-color: ${({ theme
|
|
26
|
+
background-color: ${({ theme }) => theme.palette.primary[100]};
|
|
33
27
|
|
|
34
28
|
&::before {
|
|
35
29
|
content: '';
|
|
@@ -43,7 +37,15 @@ exports.StyledListItemButton = (0, styled_1.styled)(ListItemButton_1.ListItemBut
|
|
|
43
37
|
}
|
|
44
38
|
|
|
45
39
|
&:hover {
|
|
46
|
-
background-color: ${({ theme
|
|
40
|
+
background-color: ${({ theme }) => theme.palette.primary[100]};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
&.${constants_1.navMenuItemButtonClassnames.hasGroup} {
|
|
44
|
+
background-color: inherit;
|
|
45
|
+
|
|
46
|
+
&:hover {
|
|
47
|
+
background-color: inherit;
|
|
48
|
+
}
|
|
47
49
|
}
|
|
48
50
|
}
|
|
49
51
|
|
|
@@ -89,10 +91,7 @@ exports.NavMenuItemButtonIcon = (0, styled_1.styled)(ListItemIcon_1.ListItemIcon
|
|
|
89
91
|
height: 20px;
|
|
90
92
|
}
|
|
91
93
|
`;
|
|
92
|
-
exports.NavMenuItemButtonText = (0, styled_1.styled)(OverflowTypography_1.OverflowTypography
|
|
93
|
-
shouldForwardProp: (prop) => !['$isGroupTitleItem', '$isCounter'].includes(prop),
|
|
94
|
-
}) `
|
|
95
|
-
width: ${({ $isGroupTitleItem, $isCounter }) => getItemWidth($isGroupTitleItem, $isCounter)};
|
|
94
|
+
exports.NavMenuItemButtonText = (0, styled_1.styled)(OverflowTypography_1.OverflowTypography) `
|
|
96
95
|
margin-left: ${({ theme }) => theme.spacing(3)};
|
|
97
96
|
|
|
98
97
|
${({ theme }) => theme.breakpoints.down('sm')} {
|
|
@@ -14,5 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.navMenuItemButtonClassnames = void 0;
|
|
17
18
|
__exportStar(require("./Item"), exports);
|
|
18
19
|
__exportStar(require("./types"), exports);
|
|
20
|
+
var ItemButton_1 = require("./ItemButton");
|
|
21
|
+
Object.defineProperty(exports, "navMenuItemButtonClassnames", { enumerable: true, get: function () { return ItemButton_1.navMenuItemButtonClassnames; } });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { cva } from 'class-variance-authority';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cva = void 0;
|
|
4
|
+
var class_variance_authority_1 = require("class-variance-authority");
|
|
5
|
+
Object.defineProperty(exports, "cva", { enumerable: true, get: function () { return class_variance_authority_1.cva; } });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './cva';
|
|
@@ -0,0 +1,17 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./cva"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './cva';
|
|
@@ -0,0 +1,17 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./cva"), exports);
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
/package/components/DescriptionList/{hooks → useLogic/hooks}/useGroupedDescriptionItems/index.d.ts
RENAMED
|
File without changes
|
/package/components/DescriptionList/{hooks → useLogic/hooks}/useGroupedDescriptionItems/index.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|