@alfalab/core-components-navigation-bar-private 0.1.9 → 0.2.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.
Files changed (45) hide show
  1. package/Component.js +1 -1
  2. package/components/back-arrow-addon/Component.js +1 -1
  3. package/components/back-arrow-addon/index.css +18 -16
  4. package/components/closer/Component.js +1 -1
  5. package/components/closer/index.css +6 -6
  6. package/cssm/components/back-arrow-addon/index.module.css +6 -4
  7. package/cssm/index.module.css +6 -4
  8. package/esm/Component.js +1 -1
  9. package/esm/components/back-arrow-addon/Component.js +1 -1
  10. package/esm/components/back-arrow-addon/index.css +18 -16
  11. package/esm/components/closer/Component.js +1 -1
  12. package/esm/components/closer/index.css +6 -6
  13. package/esm/index.css +33 -31
  14. package/index.css +33 -31
  15. package/modern/Component.js +1 -1
  16. package/modern/components/back-arrow-addon/Component.js +1 -1
  17. package/modern/components/back-arrow-addon/index.css +18 -16
  18. package/modern/components/closer/Component.js +1 -1
  19. package/modern/components/closer/index.css +6 -6
  20. package/modern/index.css +33 -31
  21. package/moderncssm/Component.d.ts +5 -0
  22. package/moderncssm/Component.js +159 -0
  23. package/moderncssm/components/back-arrow-addon/Component.d.ts +26 -0
  24. package/moderncssm/components/back-arrow-addon/Component.js +21 -0
  25. package/moderncssm/components/back-arrow-addon/index.d.ts +1 -0
  26. package/moderncssm/components/back-arrow-addon/index.js +1 -0
  27. package/moderncssm/components/back-arrow-addon/index.module.css +62 -0
  28. package/moderncssm/components/closer/Component.d.ts +35 -0
  29. package/moderncssm/components/closer/Component.js +18 -0
  30. package/moderncssm/components/closer/index.d.ts +1 -0
  31. package/moderncssm/components/closer/index.js +1 -0
  32. package/moderncssm/components/closer/index.module.css +33 -0
  33. package/moderncssm/index.d.ts +2 -0
  34. package/moderncssm/index.js +1 -0
  35. package/moderncssm/index.module.css +131 -0
  36. package/moderncssm/shared/index.d.ts +2 -0
  37. package/moderncssm/shared/index.js +2 -0
  38. package/moderncssm/types.d.ts +118 -0
  39. package/moderncssm/types.js +1 -0
  40. package/moderncssm/vars.css +7 -0
  41. package/package.json +6 -6
  42. package/src/components/back-arrow-addon/index.module.css +5 -5
  43. package/src/components/closer/index.module.css +1 -1
  44. package/src/index.module.css +5 -5
  45. package/src/vars.css +1 -1
@@ -0,0 +1 @@
1
+ export { BackArrowAddon } from './Component.js';
@@ -0,0 +1,62 @@
1
+ /* */
2
+ :root {
3
+ /* closer-mobile */
4
+
5
+ /* back-arrow */
6
+ --navigation-bar-back-arrow-mobile-fill: var(--color-light-neutral-translucent-700);
7
+ }
8
+ .component {
9
+ height: 100%;
10
+ background: var(--color-light-bg-primary-alpha-40);
11
+ -webkit-backdrop-filter: blur(10px);
12
+ backdrop-filter: blur(10px);
13
+ border-radius: var(--border-radius-pill);
14
+ min-width: 48px
15
+ }
16
+ .component svg > path {
17
+ transition: fill 0.2s ease;
18
+ fill: var(--color-light-neutral-translucent-1300);
19
+ }
20
+ .component:hover svg > path {
21
+ fill: var(--color-light-neutral-translucent-1300-hover);
22
+ }
23
+ .component:active svg > path {
24
+ fill: var(--color-light-neutral-translucent-1300-press);
25
+ }
26
+ .mobileComponent {
27
+ height: 32px;
28
+ min-width: 32px;
29
+ margin: 0 var(--gap-8);
30
+ -webkit-backdrop-filter: none;
31
+ backdrop-filter: none;
32
+ background: none;
33
+ }
34
+ .flex {
35
+ display: flex;
36
+ align-items: center;
37
+ }
38
+ .iconWrapper {
39
+ display: inline-flex;
40
+ align-items: center;
41
+ justify-content: center;
42
+ height: 48px;
43
+ margin: 0 var(--gap-8) 0 var(--gap-12);
44
+ border-radius: var(--border-radius-circle)
45
+ }
46
+ .iconWrapper + .text {
47
+ margin-right: var(--gap-12);
48
+ }
49
+ .mobileWrapper {
50
+ width: 32px;
51
+ height: 32px;
52
+ background: var(--color-light-neutral-translucent-100);
53
+ -webkit-backdrop-filter: blur(10px);
54
+ backdrop-filter: blur(10px);
55
+ margin: 0
56
+ }
57
+ .mobileWrapper + .text {
58
+ margin: 0 var(--gap-12) 0 var(--gap-8);
59
+ }
60
+ .mobileWrapper svg > path {
61
+ fill: var(--navigation-bar-back-arrow-mobile-fill);
62
+ }
@@ -0,0 +1,35 @@
1
+ /// <reference types="react" />
2
+ import React from 'react';
3
+ import { ButtonHTMLAttributes, ElementType, FC } from "react";
4
+ interface CloserProps extends ButtonHTMLAttributes<HTMLButtonElement> {
5
+ /**
6
+ * Вид компонента
7
+ */
8
+ view: 'desktop' | 'mobile';
9
+ /**
10
+ * Дополнительный класс
11
+ */
12
+ className?: string;
13
+ /**
14
+ * Позиция крестика
15
+ */
16
+ align?: 'left' | 'right';
17
+ /**
18
+ * Фиксирует крестик
19
+ */
20
+ sticky?: boolean;
21
+ /**
22
+ * Иконка
23
+ */
24
+ icon?: ElementType;
25
+ /**
26
+ * Идентификатор для систем автоматизированного тестирования
27
+ */
28
+ dataTestId?: string;
29
+ /**
30
+ * Коллбэк закрытия.
31
+ */
32
+ onClose?: (event: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>, reason?: 'backdropClick' | 'escapeKeyDown' | 'closerClick') => void;
33
+ }
34
+ declare const Closer: FC<CloserProps>;
35
+ export { CloserProps, Closer };
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import cn from 'classnames';
3
+ import { IconButton } from '@alfalab/core-components-icon-button/moderncssm';
4
+ import { CrossHeavyMIcon } from '@alfalab/icons-glyph/CrossHeavyMIcon';
5
+ import { CrossMIcon } from '@alfalab/icons-glyph/CrossMIcon';
6
+ import styles from './index.module.css';
7
+
8
+ const Closer = ({ view, className, sticky, icon = view === 'desktop' ? CrossHeavyMIcon : CrossMIcon, dataTestId, onClose, ...restProps }) => {
9
+ const handleClick = (event) => {
10
+ onClose?.(event, 'closerClick');
11
+ };
12
+ return (React.createElement("div", { className: cn(styles.closer, className, {
13
+ [styles.sticky]: sticky,
14
+ }) },
15
+ React.createElement(IconButton, { size: view === 'desktop' ? 's' : 'xs', className: cn(styles.button, { [styles.mobile]: view === 'mobile' }), "aria-label": '\u0437\u0430\u043A\u0440\u044B\u0442\u044C', onClick: handleClick, icon: icon, dataTestId: dataTestId, ...restProps })));
16
+ };
17
+
18
+ export { Closer };
@@ -0,0 +1 @@
1
+ export * from "./Component";
@@ -0,0 +1 @@
1
+ export { Closer } from './Component.js';
@@ -0,0 +1,33 @@
1
+ /* */
2
+ :root {
3
+ /* closer-mobile */
4
+ --navigation-bar-closer-mobile-color: var(--color-light-neutral-translucent-700);
5
+
6
+ /* back-arrow */
7
+ }
8
+ .closer {
9
+ flex-shrink: 0;
10
+ width: 48px;
11
+ height: 48px;
12
+ margin-left: auto;
13
+ display: flex;
14
+ align-items: center;
15
+ justify-content: center;
16
+ }
17
+ .button {
18
+ background: var(--color-light-bg-primary-alpha-40);
19
+ -webkit-backdrop-filter: blur(10px);
20
+ backdrop-filter: blur(10px);
21
+ color: var(--color-light-neutral-translucent-1300)
22
+ }
23
+ .button.mobile {
24
+ background: var(--color-light-neutral-translucent-100);
25
+ color: var(--navigation-bar-closer-mobile-color);
26
+ }
27
+ .button.button {
28
+ border-radius: var(--border-radius-circle);
29
+ }
30
+ .sticky {
31
+ position: sticky;
32
+ top: 0;
33
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./Component";
2
+ export type { NavigationBarPrivateProps } from "./types";
@@ -0,0 +1 @@
1
+ export { NavigationBarPrivate } from './Component.js';
@@ -0,0 +1,131 @@
1
+ /* */
2
+
3
+ .header {
4
+ width: 100%;
5
+ box-sizing: border-box;
6
+ transition: box-shadow 0.2s ease, background 0.2s ease
7
+ }
8
+
9
+ .header.header.backgroundImage {
10
+ background-repeat: no-repeat;
11
+ background-position: center;
12
+ background-size: cover;
13
+ }
14
+
15
+ .mainLine {
16
+ display: flex;
17
+ align-items: stretch;
18
+ justify-content: space-between;
19
+ z-index: 1;
20
+ background-color: inherit;
21
+ }
22
+
23
+ .mainLineSticky {
24
+ position: sticky;
25
+ top: 0;
26
+ }
27
+
28
+ .mainLineWithImageBg {
29
+ background-color: transparent;
30
+ background-color: initial;
31
+ }
32
+
33
+ .content {
34
+ color: var(--color-light-text-primary);
35
+ display: flex;
36
+ flex-flow: column nowrap;
37
+ justify-content: center;
38
+ flex-grow: 1;
39
+ align-self: baseline;
40
+ box-sizing: border-box;
41
+ min-height: 48px
42
+ }
43
+
44
+ .content.withBothAddons,
45
+ .content.withCompactTitle {
46
+ font-size: 16px;
47
+ line-height: 20px;
48
+ font-weight: 500;
49
+ align-self: center;
50
+ padding-top: var(--gap-4);
51
+ padding-bottom: var(--gap-4)
52
+ }
53
+
54
+ .content.withBothAddons > .children,
55
+ .content.withBothAddons > .title,
56
+ .content.withCompactTitle > .children,
57
+ .content.withCompactTitle > .title {
58
+ -webkit-line-clamp: 1;
59
+ word-break: break-all;
60
+ }
61
+
62
+ .content.contentOnBotDesktop.contentOnBotDesktop {
63
+ padding-top: var(--gap-12);
64
+ }
65
+
66
+ .content.contentOnBotMobile.contentOnBotMobile {
67
+ padding-top: var(--gap-12);
68
+ }
69
+
70
+ .title {
71
+ word-break: break-word;
72
+ }
73
+
74
+ .subtitle {
75
+ font-size: 14px;
76
+ line-height: 20px;
77
+ font-weight: 400;
78
+ -webkit-line-clamp: 1;
79
+ display: -webkit-box;
80
+ -webkit-box-orient: vertical;
81
+ overflow: hidden;
82
+
83
+ color: var(--color-light-text-secondary);
84
+ word-break: break-all;
85
+ }
86
+
87
+ .addonsWrapper {
88
+ display: flex;
89
+ }
90
+
91
+ .rightAddons {
92
+ margin-left: auto;
93
+ }
94
+
95
+ .addon {
96
+ min-width: 48px;
97
+ height: 48px;
98
+ display: flex;
99
+ justify-content: center;
100
+ align-items: center;
101
+ flex-shrink: 0;
102
+ pointer-events: all;
103
+ }
104
+
105
+ .bottomAddons {
106
+ pointer-events: all;
107
+ }
108
+
109
+ .closer {
110
+ margin-left: auto;
111
+ }
112
+
113
+ .left {
114
+ text-align: left;
115
+ }
116
+
117
+ .center {
118
+ text-align: center;
119
+ }
120
+
121
+ .trim {
122
+ overflow: hidden
123
+ }
124
+
125
+ .trim .title,
126
+ .trim .children {
127
+ -webkit-line-clamp: 2;
128
+ display: -webkit-box;
129
+ -webkit-box-orient: vertical;
130
+ overflow: hidden;
131
+ }
@@ -0,0 +1,2 @@
1
+ export * from "../components/closer/index";
2
+ export * from "../components/back-arrow-addon/index";
@@ -0,0 +1,2 @@
1
+ export { Closer } from '../components/closer/Component.js';
2
+ export { BackArrowAddon } from '../components/back-arrow-addon/Component.js';
@@ -0,0 +1,118 @@
1
+ /// <reference types="react" />
2
+ import React from 'react';
3
+ import { ReactNode } from "react";
4
+ import { BackArrowAddonProps } from "./components/back-arrow-addon/index";
5
+ import { CloserProps } from "./components/closer/index";
6
+ type NavigationBarPrivateProps = {
7
+ /**
8
+ * Контент шапки
9
+ */
10
+ children?: ReactNode;
11
+ /**
12
+ * Заголовок шапки
13
+ */
14
+ title?: string;
15
+ /**
16
+ * Подзаголовок (доступен только в мобильной версии)
17
+ */
18
+ subtitle?: ReactNode;
19
+ /**
20
+ * Размер заголовка (compact доступен только в мобильной версии)
21
+ */
22
+ titleSize?: 'default' | 'compact';
23
+ /**
24
+ * Доп. класс для аддонов
25
+ */
26
+ addonClassName?: string;
27
+ /**
28
+ * Слот слева
29
+ */
30
+ leftAddons?: ReactNode;
31
+ /**
32
+ * Слот справа
33
+ */
34
+ rightAddons?: ReactNode;
35
+ /**
36
+ * Дополнительный класс для closer
37
+ */
38
+ closerClassName?: string;
39
+ /**
40
+ * Слот снизу
41
+ */
42
+ bottomAddons?: ReactNode;
43
+ /**
44
+ * Наличие компонента крестика
45
+ */
46
+ hasCloser?: boolean;
47
+ /**
48
+ * Наличие кнопки "Назад"
49
+ */
50
+ hasBackButton?: boolean;
51
+ /**
52
+ * Дополнительный класс для правого аддона
53
+ */
54
+ backButtonClassName?: string;
55
+ /**
56
+ * Дополнительные пропсы для кнопки "Назад"
57
+ */
58
+ backButtonProps?: Omit<BackArrowAddonProps, 'view' | 'textOpacity' | 'onClick'>;
59
+ /**
60
+ * Дополнительный класс
61
+ */
62
+ className?: string;
63
+ /**
64
+ * Дополнительный класс для контента
65
+ */
66
+ contentClassName?: string;
67
+ /**
68
+ * Дополнительный класс для нижнего аддона
69
+ */
70
+ bottomAddonsClassName?: string;
71
+ /**
72
+ * Выравнивание заголовка
73
+ */
74
+ align?: 'left' | 'center';
75
+ /**
76
+ * Обрезать ли заголовок
77
+ */
78
+ trim?: boolean;
79
+ /**
80
+ * Фиксирует шапку
81
+ */
82
+ sticky?: boolean;
83
+ /**
84
+ * Идентификатор для систем автоматизированного тестирования
85
+ */
86
+ dataTestId?: string;
87
+ /**
88
+ * Фоновое изображение
89
+ */
90
+ imageUrl?: string;
91
+ /**
92
+ * Иконка closer.
93
+ */
94
+ closerIcon?: React.ElementType;
95
+ /**
96
+ * Обработчик закрытия
97
+ */
98
+ onClose?: CloserProps['onClose'];
99
+ /**
100
+ * обработчик клика по кнопке "назад"
101
+ */
102
+ onBack?: () => void;
103
+ /**
104
+ * Вид шапки - мобильный или десктоп
105
+ */
106
+ view: 'desktop' | 'mobile';
107
+ /**
108
+ * Ссылка на родительскую ноду overflow: auto
109
+ */
110
+ scrollableParentRef?: React.RefObject<HTMLDivElement>;
111
+ };
112
+ type ContentParams = {
113
+ extraClassName?: string;
114
+ wrapperRef?: React.RefObject<HTMLDivElement>;
115
+ style?: React.CSSProperties;
116
+ hidden?: boolean;
117
+ };
118
+ export { NavigationBarPrivateProps, ContentParams };
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,7 @@
1
+ /* */
2
+
3
+ :root {
4
+ /* closer-mobile */
5
+
6
+ /* back-arrow */
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-navigation-bar-private",
3
- "version": "0.1.9",
3
+ "version": "0.2.0",
4
4
  "description": "Navigation bar private component",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -11,9 +11,9 @@
11
11
  "directory": "dist"
12
12
  },
13
13
  "dependencies": {
14
- "@alfalab/core-components-icon-button": "^6.7.4",
15
- "@alfalab/core-components-button": "^11.5.4",
16
- "@alfalab/core-components-typography": "^4.8.0",
14
+ "@alfalab/core-components-icon-button": "^6.8.0",
15
+ "@alfalab/core-components-button": "^11.6.0",
16
+ "@alfalab/core-components-typography": "^4.10.0",
17
17
  "@alfalab/core-components-shared": "^0.12.0",
18
18
  "@alfalab/hooks": "^1.13.0",
19
19
  "@alfalab/icons-glyph": "^2.139.0",
@@ -24,6 +24,6 @@
24
24
  "peerDependencies": {
25
25
  "react": "^16.9.0 || ^17.0.1 || ^18.0.0"
26
26
  },
27
- "themesVersion": "13.0.1",
28
- "varsVersion": "9.11.1"
27
+ "themesVersion": "13.1.0",
28
+ "varsVersion": "9.12.0"
29
29
  }
@@ -1,4 +1,4 @@
1
- @import '@alfalab/core-components-themes/src/default.css';
1
+ @import '@alfalab/core-components-vars/src/index.css';
2
2
  @import '../../vars.css';
3
3
 
4
4
  .component {
@@ -29,7 +29,7 @@
29
29
  .mobileComponent {
30
30
  height: 32px;
31
31
  min-width: 32px;
32
- margin: 0 var(--gap-xs);
32
+ margin: 0 var(--gap-8);
33
33
  backdrop-filter: none;
34
34
  background: none;
35
35
  }
@@ -44,11 +44,11 @@
44
44
  align-items: center;
45
45
  justify-content: center;
46
46
  height: 48px;
47
- margin: 0 var(--gap-xs) 0 var(--gap-s);
47
+ margin: 0 var(--gap-8) 0 var(--gap-12);
48
48
  border-radius: var(--border-radius-circle);
49
49
 
50
50
  & + .text {
51
- margin-right: var(--gap-s);
51
+ margin-right: var(--gap-12);
52
52
  }
53
53
  }
54
54
 
@@ -60,7 +60,7 @@
60
60
  margin: 0;
61
61
 
62
62
  & + .text {
63
- margin: 0 var(--gap-s) 0 var(--gap-xs);
63
+ margin: 0 var(--gap-12) 0 var(--gap-8);
64
64
  }
65
65
 
66
66
  & svg > path {
@@ -1,4 +1,4 @@
1
- @import '@alfalab/core-components-themes/src/default.css';
1
+ @import '@alfalab/core-components-vars/src/index.css';
2
2
  @import '../../vars.css';
3
3
 
4
4
  .closer {
@@ -1,4 +1,4 @@
1
- @import '@alfalab/core-components-themes/src/default.css';
1
+ @import '@alfalab/core-components-vars/src/index.css';
2
2
 
3
3
  .header {
4
4
  width: 100%;
@@ -43,8 +43,8 @@
43
43
  &.withCompactTitle {
44
44
  @mixin action_component;
45
45
  align-self: center;
46
- padding-top: var(--gap-2xs);
47
- padding-bottom: var(--gap-2xs);
46
+ padding-top: var(--gap-4);
47
+ padding-bottom: var(--gap-4);
48
48
 
49
49
  & > .children,
50
50
  & > .title {
@@ -54,11 +54,11 @@
54
54
  }
55
55
 
56
56
  &.contentOnBotDesktop.contentOnBotDesktop {
57
- padding-top: var(--gap-s);
57
+ padding-top: var(--gap-12);
58
58
  }
59
59
 
60
60
  &.contentOnBotMobile.contentOnBotMobile {
61
- padding-top: var(--gap-s);
61
+ padding-top: var(--gap-12);
62
62
  }
63
63
  }
64
64
 
package/src/vars.css CHANGED
@@ -1,4 +1,4 @@
1
- @import '@alfalab/core-components-themes/src/default.css';
1
+ @import '@alfalab/core-components-vars/src/index.css';
2
2
 
3
3
  :root {
4
4
  /* closer-mobile */