@doyourjob/gravity-ui-page-constructor-addons 2.1.33 → 2.1.35

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 (77) hide show
  1. package/build/cjs/components/NewHeader/NewHeader.css +3 -6
  2. package/build/cjs/components/NewHeader/NewHeader.js +6 -5
  3. package/build/cjs/components/NewHeader/components/NHBanner/NHBanner.css +42 -0
  4. package/build/cjs/components/NewHeader/components/NHBanner/NHBanner.d.ts +3 -0
  5. package/build/cjs/components/NewHeader/components/NHBanner/NHBanner.js +17 -0
  6. package/build/cjs/components/NewHeader/components/NHDefaultPopup/NHDefaultPopup.css +38 -88
  7. package/build/cjs/components/NewHeader/components/NHDefaultPopup/NHDefaultPopup.js +28 -33
  8. package/build/cjs/components/NewHeader/components/NHEventCard/NHEventCard.css +48 -0
  9. package/build/cjs/components/NewHeader/components/NHEventCard/NHEventCard.d.ts +3 -0
  10. package/build/cjs/components/NewHeader/components/NHEventCard/NHEventCard.js +15 -0
  11. package/build/cjs/components/NewHeader/components/NHLogo/NHLogo.css +4 -0
  12. package/build/cjs/components/NewHeader/components/NHLogo/NHLogo.d.ts +6 -0
  13. package/build/cjs/components/NewHeader/components/NHLogo/NHLogo.js +12 -0
  14. package/build/cjs/components/NewHeader/components/NHMobileNavigation/NHMobileNavigation.css +43 -8
  15. package/build/cjs/components/NewHeader/components/NHMobileNavigation/NHMobileNavigation.d.ts +4 -3
  16. package/build/cjs/components/NewHeader/components/NHMobileNavigation/NHMobileNavigation.js +19 -12
  17. package/build/cjs/components/NewHeader/components/NHMobileNavigationItem/NHMobileNavigationItem.css +41 -40
  18. package/build/cjs/components/NewHeader/components/NHMobileNavigationItem/NHMobileNavigationItem.d.ts +6 -2
  19. package/build/cjs/components/NewHeader/components/NHMobileNavigationItem/NHMobileNavigationItem.js +15 -11
  20. package/build/cjs/components/NewHeader/components/NHMobileNavigationItem/components/NHDefaultPopupContent/NHDefaultPopupContent.css +56 -0
  21. package/build/cjs/components/NewHeader/components/NHMobileNavigationItem/components/NHDefaultPopupContent/NHDefaultPopupContent.d.ts +5 -0
  22. package/build/cjs/components/NewHeader/components/NHMobileNavigationItem/components/NHDefaultPopupContent/NHDefaultPopupContent.js +32 -0
  23. package/build/cjs/components/NewHeader/components/NHMobileNavigationPopup/NHMobileNavigationPopup.css +11 -30
  24. package/build/cjs/components/NewHeader/components/NHMobileNavigationPopup/NHMobileNavigationPopup.js +1 -5
  25. package/build/cjs/components/NewHeader/components/NHNavigation/NHNavigation.js +1 -4
  26. package/build/cjs/components/NewHeader/components/NHNavigationItem/NHNavigationItem.js +2 -2
  27. package/build/cjs/components/NewHeader/components/NHPopupItem/NHPopupItem.css +15 -1
  28. package/build/cjs/components/NewHeader/components/NHStock/NHStock.css +47 -0
  29. package/build/cjs/components/NewHeader/components/NHStock/NHStock.d.ts +3 -0
  30. package/build/cjs/components/NewHeader/components/NHStock/NHStock.js +21 -0
  31. package/build/cjs/components/NewHeader/components/NHStoryCard/NHStoryCard.css +42 -0
  32. package/build/cjs/components/NewHeader/components/NHStoryCard/NHStoryCard.d.ts +3 -0
  33. package/build/cjs/components/NewHeader/components/NHStoryCard/NHStoryCard.js +14 -0
  34. package/build/cjs/components/NewHeader/models.d.ts +9 -43
  35. package/build/cjs/components/NewHeader/models.js +0 -1
  36. package/build/esm/components/NewHeader/NewHeader.css +3 -6
  37. package/build/esm/components/NewHeader/NewHeader.js +7 -6
  38. package/build/esm/components/NewHeader/components/NHBanner/NHBanner.css +42 -0
  39. package/build/esm/components/NewHeader/components/NHBanner/NHBanner.d.ts +4 -0
  40. package/build/esm/components/NewHeader/components/NHBanner/NHBanner.js +13 -0
  41. package/build/esm/components/NewHeader/components/NHDefaultPopup/NHDefaultPopup.css +38 -88
  42. package/build/esm/components/NewHeader/components/NHDefaultPopup/NHDefaultPopup.js +27 -32
  43. package/build/esm/components/NewHeader/components/NHEventCard/NHEventCard.css +48 -0
  44. package/build/esm/components/NewHeader/components/NHEventCard/NHEventCard.d.ts +4 -0
  45. package/build/esm/components/NewHeader/components/NHEventCard/NHEventCard.js +11 -0
  46. package/build/esm/components/NewHeader/components/NHLogo/NHLogo.css +4 -0
  47. package/build/esm/components/NewHeader/components/NHLogo/NHLogo.d.ts +7 -0
  48. package/build/esm/components/NewHeader/components/NHLogo/NHLogo.js +8 -0
  49. package/build/esm/components/NewHeader/components/NHMobileNavigation/NHMobileNavigation.css +43 -8
  50. package/build/esm/components/NewHeader/components/NHMobileNavigation/NHMobileNavigation.d.ts +4 -3
  51. package/build/esm/components/NewHeader/components/NHMobileNavigation/NHMobileNavigation.js +19 -12
  52. package/build/esm/components/NewHeader/components/NHMobileNavigationItem/NHMobileNavigationItem.css +41 -40
  53. package/build/esm/components/NewHeader/components/NHMobileNavigationItem/NHMobileNavigationItem.d.ts +6 -2
  54. package/build/esm/components/NewHeader/components/NHMobileNavigationItem/NHMobileNavigationItem.js +15 -11
  55. package/build/esm/components/NewHeader/components/NHMobileNavigationItem/components/NHDefaultPopupContent/NHDefaultPopupContent.css +56 -0
  56. package/build/esm/components/NewHeader/components/NHMobileNavigationItem/components/NHDefaultPopupContent/NHDefaultPopupContent.d.ts +6 -0
  57. package/build/esm/components/NewHeader/components/NHMobileNavigationItem/components/NHDefaultPopupContent/NHDefaultPopupContent.js +28 -0
  58. package/build/esm/components/NewHeader/components/NHMobileNavigationPopup/NHMobileNavigationPopup.css +11 -30
  59. package/build/esm/components/NewHeader/components/NHMobileNavigationPopup/NHMobileNavigationPopup.js +1 -5
  60. package/build/esm/components/NewHeader/components/NHNavigation/NHNavigation.js +1 -4
  61. package/build/esm/components/NewHeader/components/NHNavigationItem/NHNavigationItem.js +2 -2
  62. package/build/esm/components/NewHeader/components/NHPopupItem/NHPopupItem.css +15 -1
  63. package/build/esm/components/NewHeader/components/NHStock/NHStock.css +47 -0
  64. package/build/esm/components/NewHeader/components/NHStock/NHStock.d.ts +4 -0
  65. package/build/esm/components/NewHeader/components/NHStock/NHStock.js +17 -0
  66. package/build/esm/components/NewHeader/components/NHStoryCard/NHStoryCard.css +42 -0
  67. package/build/esm/components/NewHeader/components/NHStoryCard/NHStoryCard.d.ts +4 -0
  68. package/build/esm/components/NewHeader/components/NHStoryCard/NHStoryCard.js +10 -0
  69. package/build/esm/components/NewHeader/models.d.ts +9 -43
  70. package/build/esm/components/NewHeader/models.js +0 -1
  71. package/package.json +1 -1
  72. package/build/cjs/components/NewHeader/components/NHProductsPopup/NHProductsPopup.css +0 -118
  73. package/build/cjs/components/NewHeader/components/NHProductsPopup/NHProductsPopup.d.ts +0 -3
  74. package/build/cjs/components/NewHeader/components/NHProductsPopup/NHProductsPopup.js +0 -43
  75. package/build/esm/components/NewHeader/components/NHProductsPopup/NHProductsPopup.css +0 -118
  76. package/build/esm/components/NewHeader/components/NHProductsPopup/NHProductsPopup.d.ts +0 -4
  77. package/build/esm/components/NewHeader/components/NHProductsPopup/NHProductsPopup.js +0 -39
@@ -1,6 +1,5 @@
1
1
  import type { ButtonProps, LinkProps } from '@doyourjob/gravity-ui-page-constructor';
2
2
  export declare enum NHNavigationItemType {
3
- NHProductsPopup = "products-popup",
4
3
  NHDefaultPopup = "default-popup",
5
4
  Link = "link"
6
5
  }
@@ -29,29 +28,13 @@ export interface NHProductBannerData {
29
28
  color?: string;
30
29
  border?: boolean;
31
30
  }
32
- export interface NHProductsPopupSectionBase {
33
- title: string;
34
- subtitle: string;
35
- items?: NHPopupItemData[];
36
- }
37
- export interface NHProductsPopupSectionRun extends NHProductsPopupSectionBase {
38
- mode: 'run';
39
- }
40
- export interface NHProductsPopupSectionScale extends NHProductsPopupSectionBase {
41
- mode: 'scale';
42
- banner?: NHProductBannerData;
43
- }
44
- export type NHProductsPopupSection = NHProductsPopupSectionRun | NHProductsPopupSectionScale | NHProductsPopupSectionBase;
45
- export interface NHProductsPopupData {
46
- primaryColor?: string;
47
- primaryColorHover?: string;
48
- sections: NHProductsPopupSection[];
49
- }
50
31
  export interface NHDefaultPopupSection {
51
32
  title: string;
52
33
  subtitle: string;
53
34
  items: NHPopupItemData[];
54
35
  columns?: number;
36
+ mode?: 'run' | 'scale' | 'build';
37
+ banner?: NHProductBannerData;
55
38
  }
56
39
  export interface NHStoryCardData {
57
40
  title: string;
@@ -66,6 +49,11 @@ export interface NHEventCardData {
66
49
  image: string;
67
50
  url: string;
68
51
  }
52
+ export interface NHStockData {
53
+ title?: string;
54
+ image?: string;
55
+ delayed?: string;
56
+ }
69
57
  export interface NHDefaultPopupData {
70
58
  sections: NHDefaultPopupSection[];
71
59
  maxWidth?: number;
@@ -75,8 +63,7 @@ export interface NHDefaultPopupData {
75
63
  title: string;
76
64
  stories?: NHStoryCardData[];
77
65
  events?: NHEventCardData[];
78
- stock?: boolean;
79
- stockImage?: string;
66
+ stock?: NHStockData;
80
67
  };
81
68
  }
82
69
  export interface NHLoginItemData {
@@ -95,35 +82,14 @@ export interface NHNavigationLinkData extends NHNavigationDefaultData {
95
82
  type: NHNavigationItemType.Link;
96
83
  data: LinkProps;
97
84
  }
98
- export interface NHNavigationProductsPopupData extends NHNavigationDefaultData {
99
- type: NHNavigationItemType.NHProductsPopup;
100
- data: NHProductsPopupData;
101
- }
102
85
  export interface NHNavigationDefaultPopupData extends NHNavigationDefaultData {
103
86
  type: NHNavigationItemType.NHDefaultPopup;
104
87
  data: NHDefaultPopupData;
105
88
  }
106
- export type NHNavigationItemData = NHNavigationLinkData | NHNavigationProductsPopupData | NHNavigationDefaultPopupData;
107
- export interface NHMobileNavigationDefaultData {
108
- title: string;
109
- }
110
- export interface NHMobileNavigationLinkData extends NHMobileNavigationDefaultData {
111
- link: LinkProps;
112
- }
113
- export interface NHMobileNavigationGroupData extends NHMobileNavigationDefaultData {
114
- data: {
115
- title?: string;
116
- items: {
117
- title: string;
118
- url: string;
119
- }[];
120
- }[];
121
- }
122
- export type NHMobileNavigationItemData = NHMobileNavigationLinkData | NHMobileNavigationGroupData;
89
+ export type NHNavigationItemData = NHNavigationLinkData | NHNavigationDefaultPopupData;
123
90
  export interface NHNavigationData {
124
91
  left?: NHNavigationItemData[];
125
92
  right?: NHNavigationItemData[];
126
- mobile?: NHMobileNavigationItemData[];
127
93
  login?: NHLoginPopupData;
128
94
  logo?: NHLogoData;
129
95
  buttons?: ButtonProps[];
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NHNavigationItemType = void 0;
4
4
  var NHNavigationItemType;
5
5
  (function (NHNavigationItemType) {
6
- NHNavigationItemType["NHProductsPopup"] = "products-popup";
7
6
  NHNavigationItemType["NHDefaultPopup"] = "default-popup";
8
7
  NHNavigationItemType["Link"] = "link";
9
8
  })(NHNavigationItemType = exports.NHNavigationItemType || (exports.NHNavigationItemType = {}));
@@ -5,7 +5,9 @@ unpredictable css rules order in build */
5
5
  --g-color-scroll-handle: var(--g-color-base-generic);
6
6
  --g-color-scroll-handle-hover: var(--g-color-line-generic);
7
7
  width: 100%;
8
- z-index: 100;
8
+ position: sticky;
9
+ top: 0;
10
+ z-index: 1001;
9
11
  background: var(--pc-transparent);
10
12
  }
11
13
 
@@ -137,11 +139,6 @@ unpredictable css rules order in build */
137
139
  box-shadow: 0 3px 10px var(--g-color-base-generic-hover);
138
140
  }
139
141
 
140
- .pc-addons-new-header__logo-img {
141
- display: block;
142
- height: 36px;
143
- }
144
-
145
142
  .pc-addons-new-header_search .pc-addons-new-header__left,
146
143
  .pc-addons-new-header_search .pc-addons-new-header__navigation,
147
144
  .pc-addons-new-header_search .pc-addons-new-header__wrap > div:not(.pc-addons-new-header__icons-container) {
@@ -1,7 +1,8 @@
1
1
  import React, { useCallback, useEffect, useRef, useState } from 'react';
2
- import { Button as PCButton, getLinkProps, } from '@doyourjob/gravity-ui-page-constructor';
2
+ import { Button as PCButton } from '@doyourjob/gravity-ui-page-constructor';
3
3
  import { block } from '../../utils/cn';
4
4
  import { NHLoginButton } from './components/NHLoginButton/NHLoginButton';
5
+ import { NHLogo } from './components/NHLogo/NHLogo';
5
6
  import { NHMobileNavigation } from './components/NHMobileNavigation/NHMobileNavigation';
6
7
  import { NHNavigation } from './components/NHNavigation/NHNavigation';
7
8
  import { RouteChangeHandlerContext } from './contexts/route-change';
@@ -9,7 +10,7 @@ import './NewHeader.css';
9
10
  const b = block('new-header');
10
11
  export const MOBILE_ICON_SIZE = 24;
11
12
  export const NewHeader = ({ data, setupRouteChangeHandler, renderSearch, className, scrollOffset = 0, }) => {
12
- const { logo, buttons, left, right, mobile, login } = data;
13
+ const { logo, buttons, left, right, login } = data;
13
14
  const headerRef = useRef(null);
14
15
  const [withBackground, setWithBackground] = useState(false);
15
16
  const [isSearchMode, setIsSearchMode] = useState(false);
@@ -48,11 +49,11 @@ export const NewHeader = ({ data, setupRouteChangeHandler, renderSearch, classNa
48
49
  return (React.createElement(RouteChangeHandlerContext.Provider, { value: setupRouteChangeHandler },
49
50
  React.createElement("header", { className: b({
50
51
  search: isSearchMode,
51
- 'with-background': withBackground,
52
+ 'with-background': withBackground || isMobileNavigationOpen,
52
53
  }, className), ref: headerRef },
53
54
  React.createElement("div", { className: b('container') },
54
55
  React.createElement("div", { className: b('left') },
55
- logo && (React.createElement("a", Object.assign({ href: logo.href, className: b('logo') }, getLinkProps(logo.href || '')), logo.src && (React.createElement("img", { className: b('logo-img'), alt: logo.alt, src: logo.src })))),
56
+ logo && React.createElement(NHLogo, { data: logo }),
56
57
  left ? (React.createElement("div", { className: b('navigation') },
57
58
  React.createElement(NHNavigation, { data: left, headerRef: headerRef }))) : null),
58
59
  React.createElement("div", { className: b('right') },
@@ -62,7 +63,7 @@ export const NewHeader = ({ data, setupRouteChangeHandler, renderSearch, classNa
62
63
  renderSearch && (React.createElement("div", { className: b('icons-container') }, renderSearch({ onActiveToggle: toggleSearch }))),
63
64
  React.createElement("div", { className: b('buttons') },
64
65
  showButtonsContainer &&
65
- (buttons === null || buttons === void 0 ? void 0 : buttons.map((button) => (React.createElement(PCButton, Object.assign({}, button, { className: b('button'), size: "l", key: button.text }))))),
66
+ (buttons === null || buttons === void 0 ? void 0 : buttons.map((button, index) => (React.createElement(PCButton, Object.assign({}, button, { className: b('button'), size: "l", key: index }))))),
66
67
  login && React.createElement(NHLoginButton, { data: login, headerRef: headerRef })),
67
- mobile ? (React.createElement(NHMobileNavigation, { toogleOpen: toggleMobileNavigationPopup, isOpened: isMobileNavigationOpen, isSearchOpen: isSearchMode, data: mobile, buttons: buttons, onMenuScroll: onMenuScroll, popupClassName: b('user-popup') })) : null))))));
68
+ React.createElement(NHMobileNavigation, { toogleOpen: toggleMobileNavigationPopup, isOpened: isMobileNavigationOpen, isSearchOpen: isSearchMode, data: data, onMenuScroll: onMenuScroll, popupClassName: b('user-popup') })))))));
68
69
  };
@@ -0,0 +1,42 @@
1
+ /* use this for style redefinitions to awoid problems with
2
+ unpredictable css rules order in build */
3
+ .pc-addons-nh-banner {
4
+ color: inherit;
5
+ text-decoration: none;
6
+ grid-area: 1/3/3/4;
7
+ border-radius: 16px;
8
+ padding: 16px;
9
+ display: flex;
10
+ gap: 20px;
11
+ background: var(--nh-banner-background, transparent);
12
+ }
13
+
14
+ .pc-addons-nh-banner_border {
15
+ border: 1px solid var(--g-color-line-generic-solid);
16
+ }
17
+
18
+ .pc-addons-nh-banner__wrap {
19
+ display: flex;
20
+ flex-direction: column;
21
+ flex: 1;
22
+ gap: 4px;
23
+ }
24
+
25
+ .pc-addons-nh-banner__title {
26
+ font-size: var(--g-text-body-2-font-size, var(--pc-text-body-2-font-size));
27
+ line-height: var(--g-text-body-2-line-height, var(--pc-text-body-2-line-height));
28
+ color: var(--nh-banner-color, var(--g-color-text-primary));
29
+ font-weight: 600;
30
+ }
31
+
32
+ .pc-addons-nh-banner__description {
33
+ font-size: var(--g-text-body-1-font-size, var(--pc-text-body-1-font-size));
34
+ line-height: var(--g-text-body-1-line-height, var(--pc-text-body-1-line-height));
35
+ color: var(--nh-banner-color, var(--g-color-text-secondary));
36
+ }
37
+
38
+ .pc-addons-nh-banner__image {
39
+ display: block;
40
+ width: 86px;
41
+ aspect-ratio: 1;
42
+ }
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { NHProductBannerData } from '../../models';
3
+ import './NHBanner.css';
4
+ export declare const NHBanner: ({ title, description, image, url, background, color, border, }: NHProductBannerData) => React.JSX.Element;
@@ -0,0 +1,13 @@
1
+ import React, { useMemo } from 'react';
2
+ import { Image, getLinkProps } from '@doyourjob/gravity-ui-page-constructor';
3
+ import { block } from '../../../../utils/cn';
4
+ import './NHBanner.css';
5
+ const b = block('nh-banner');
6
+ export const NHBanner = ({ title, description, image, url, background, color, border, }) => {
7
+ const styles = useMemo(() => (Object.assign(Object.assign({}, (background ? { '--nh-banner-background': background } : {})), (color ? { '--nh-banner-color': color } : {}))), [background, color]);
8
+ return (React.createElement("a", Object.assign({ href: url, className: b({ border }), style: styles }, getLinkProps(url)),
9
+ React.createElement(Image, { className: b('image'), src: image }),
10
+ React.createElement("div", { className: b('wrap') },
11
+ React.createElement("div", { className: b('title') }, title),
12
+ React.createElement("div", { className: b('description') }, description))));
13
+ };
@@ -51,117 +51,67 @@ unpredictable css rules order in build */
51
51
  gap: 24px;
52
52
  }
53
53
 
54
- .pc-addons-nh-default-popup__wrap {
55
- display: grid;
56
- gap: 24px 40px;
57
- align-items: flex-start;
54
+ .pc-addons-nh-default-popup__section_side-head {
55
+ flex-direction: row;
56
+ gap: 0;
58
57
  }
59
58
 
60
- .pc-addons-nh-default-popup__right {
61
- width: 100%;
62
- max-width: 320px;
63
- flex-shrink: 0;
64
- border-left: 1px solid var(--g-color-line-generic-solid);
59
+ .pc-addons-nh-default-popup__section-head {
65
60
  display: flex;
66
61
  flex-direction: column;
67
- padding: 24px 32px;
68
- gap: 20px;
62
+ width: 200px;
63
+ padding-right: 32px;
64
+ flex-shrink: 0;
65
+ gap: 2px;
69
66
  }
70
67
 
71
- .pc-addons-nh-default-popup__cards {
72
- display: flex;
73
- flex-direction: column;
74
- gap: 24px;
68
+ .pc-addons-nh-default-popup__wrap {
69
+ display: grid;
70
+ gap: 24px 40px;
71
+ align-items: flex-start;
75
72
  }
76
73
 
77
- .pc-addons-nh-default-popup__card {
78
- color: inherit;
79
- text-decoration: none;
80
- border-radius: 16px;
81
- display: flex;
82
- flex-direction: column;
83
- gap: 12px;
84
- cursor: pointer;
85
- transition: opacity 0.2s;
74
+ .pc-addons-nh-default-popup__wrap_mode_run {
75
+ grid-template-columns: repeat(12, 1fr);
86
76
  }
87
77
 
88
- .pc-addons-nh-default-popup__card:hover {
89
- opacity: 0.8;
78
+ .pc-addons-nh-default-popup__wrap_mode_run > a {
79
+ grid-column: span 4;
80
+ grid-row: 1;
90
81
  }
91
82
 
92
- .pc-addons-nh-default-popup__card-wrap {
93
- display: flex;
94
- flex-direction: column;
95
- gap: 4px;
83
+ .pc-addons-nh-default-popup__wrap_mode_run > .pc-addons-nh-default-popup__inner-wrap:empty {
84
+ display: none;
96
85
  }
97
86
 
98
- .pc-addons-nh-default-popup__card-caption {
99
- font-size: var(--g-text-body-1-font-size, var(--pc-text-body-1-font-size));
100
- line-height: var(--g-text-body-1-line-height, var(--pc-text-body-1-line-height));
101
- color: var(--g-color-text-secondary);
87
+ .pc-addons-nh-default-popup__wrap_mode_run > a + .pc-addons-nh-default-popup__inner-wrap {
88
+ grid-column: span 8;
102
89
  }
103
90
 
104
- .pc-addons-nh-default-popup__card-title {
105
- font-size: var(--g-text-body-2-font-size, var(--pc-text-body-2-font-size));
106
- line-height: var(--g-text-body-2-line-height, var(--pc-text-body-2-line-height));
107
- color: var(--g-color-text-primary);
108
- font-weight: 600;
91
+ .pc-addons-nh-default-popup__wrap_mode_run > .pc-addons-nh-default-popup__inner-wrap:last-child {
92
+ grid-column: span 12;
109
93
  }
110
94
 
111
- .pc-addons-nh-default-popup__card-description {
112
- font-size: var(--g-text-body-1-font-size, var(--pc-text-body-1-font-size));
113
- line-height: var(--g-text-body-1-line-height, var(--pc-text-body-1-line-height));
114
- color: var(--g-color-text-secondary);
95
+ .pc-addons-nh-default-popup__inner-wrap {
96
+ display: grid;
97
+ gap: 24px 40px;
98
+ align-items: flex-start;
99
+ grid-template-columns: 1fr 1fr 1fr;
115
100
  }
116
101
 
117
- .pc-addons-nh-default-popup__card-image {
118
- display: block;
102
+ .pc-addons-nh-default-popup__right {
119
103
  width: 100%;
120
- aspect-ratio: 16/9;
121
- object-fit: cover;
122
- }
123
-
124
- .pc-addons-nh-default-popup__stock {
125
- position: relative;
126
- padding: 20px;
104
+ max-width: 320px;
105
+ flex-shrink: 0;
106
+ border-left: 1px solid var(--g-color-line-generic-solid);
127
107
  display: flex;
128
108
  flex-direction: column;
129
- min-height: 310px;
130
- border-radius: 8px;
131
- }
132
-
133
- .pc-addons-nh-default-popup__stock-background {
134
- position: absolute;
135
- top: 0;
136
- left: 0;
137
- width: 100%;
138
- height: 100%;
139
- object-fit: cover;
140
- display: block;
141
- }
142
-
143
- .pc-addons-nh-default-popup__stock-title {
144
- font-size: var(--g-text-body-2-font-size, var(--pc-text-body-2-font-size));
145
- line-height: var(--g-text-body-2-line-height, var(--pc-text-body-2-line-height));
146
- color: var(--g-color-text-primary);
147
- font-weight: 600;
148
- z-index: 1;
149
- margin-bottom: 4px;
150
- }
151
-
152
- .pc-addons-nh-default-popup__stock-value {
153
- color: var(--g-color-text-primary);
154
- font-size: 36px;
155
- line-height: 48px;
156
- font-weight: 600;
157
- z-index: 1;
158
- margin-top: auto;
109
+ padding: 24px 32px;
110
+ gap: 20px;
159
111
  }
160
112
 
161
- .pc-addons-nh-default-popup__stock-date {
162
- font-size: var(--g-text-body-1-font-size, var(--pc-text-body-1-font-size));
163
- line-height: var(--g-text-body-1-line-height, var(--pc-text-body-1-line-height));
164
- color: var(--g-color-text-secondary);
165
- z-index: 1;
166
- margin-top: 4px;
113
+ .pc-addons-nh-default-popup__cards {
114
+ display: flex;
115
+ flex-direction: column;
116
+ gap: 24px;
167
117
  }
@@ -1,32 +1,12 @@
1
- import React, { useContext, useMemo } from 'react';
2
- import { HeaderStockContext, Image, getLinkProps } from '@doyourjob/gravity-ui-page-constructor';
1
+ import React, { useMemo } from 'react';
3
2
  import { block } from '../../../../utils/cn';
3
+ import { NHBanner } from '../NHBanner/NHBanner';
4
+ import { NHEventCard } from '../NHEventCard/NHEventCard';
4
5
  import { NHPopupItem } from '../NHPopupItem/NHPopupItem';
6
+ import { NHStock } from '../NHStock/NHStock';
7
+ import { NHStoryCard } from '../NHStoryCard/NHStoryCard';
5
8
  import './NHDefaultPopup.css';
6
9
  const b = block('nh-default-popup');
7
- const NHStoryCard = ({ title, description, image, url }) => (React.createElement("a", Object.assign({ href: url, className: b('card') }, getLinkProps(url)),
8
- React.createElement(Image, { className: b('card-image'), src: image }),
9
- React.createElement("div", { className: b('card-wrap') },
10
- React.createElement("div", { className: b('card-title') }, title),
11
- React.createElement("div", { className: b('card-description') }, description))));
12
- const NHEventCard = ({ title, caption, description, image, url }) => (React.createElement("a", Object.assign({ href: url, className: b('card') }, getLinkProps(url)),
13
- React.createElement(Image, { className: b('card-image'), src: image }),
14
- React.createElement("div", { className: b('card-wrap') },
15
- React.createElement("div", { className: b('card-caption') }, caption),
16
- React.createElement("div", { className: b('card-title') }, title),
17
- React.createElement("div", { className: b('card-description') }, description))));
18
- const NHStock = ({ background }) => {
19
- const data = useContext(HeaderStockContext);
20
- if (!data.price)
21
- return null;
22
- return (React.createElement("div", { className: b('stock') },
23
- background ? (React.createElement("img", { className: b('stock-background'), src: background, alt: "Stock background" })) : null,
24
- React.createElement("div", { className: b('stock-title') }, data.price.name),
25
- React.createElement("div", { className: b('stock-title') }, data.price.percent),
26
- React.createElement("div", { className: b('stock-value') }, data.price.price),
27
- React.createElement("div", { className: b('stock-date') }, data.price.update),
28
- React.createElement("div", { className: b('stock-date') }, data.price.delayed)));
29
- };
30
10
  export const NHDefaultPopup = ({ sections, right, maxWidth, primaryColor, primaryColorHover, }) => {
31
11
  const rootStyle = useMemo(() => maxWidth
32
12
  ? {
@@ -35,7 +15,7 @@ export const NHDefaultPopup = ({ sections, right, maxWidth, primaryColor, primar
35
15
  }
36
16
  : undefined, [maxWidth]);
37
17
  const wrapsStyle = useMemo(() => sections.map((section) => ({
38
- gridTemplateColumns: `repeat(${section.columns || 3}, 1fr)`,
18
+ gridTemplateColumns: section.mode === 'run' ? undefined : `repeat(${section.columns || 3}, 1fr)`,
39
19
  })), [sections]);
40
20
  const cards = useMemo(() => {
41
21
  if (right === null || right === void 0 ? void 0 : right.stories) {
@@ -46,14 +26,29 @@ export const NHDefaultPopup = ({ sections, right, maxWidth, primaryColor, primar
46
26
  }
47
27
  return null;
48
28
  }, [right]);
29
+ const renderSectionContent = (section, index) => {
30
+ var _a, _b, _c;
31
+ if (section.mode === 'run') {
32
+ return (React.createElement("div", { className: b('wrap', { mode: 'run' }) },
33
+ ((_a = section.items) === null || _a === void 0 ? void 0 : _a[0]) && React.createElement(NHPopupItem, Object.assign({}, section.items[0], { column: true })),
34
+ React.createElement("div", { className: b('inner-wrap') }, (_b = section.items) === null || _b === void 0 ? void 0 : _b.slice(1, 4).map((item, cardIndex) => (React.createElement(NHPopupItem, Object.assign({ key: cardIndex }, item, { column: true }))))),
35
+ React.createElement("div", { className: b('inner-wrap') }, (_c = section.items) === null || _c === void 0 ? void 0 : _c.slice(4).map((item, cardIndex) => (React.createElement(NHPopupItem, Object.assign({ key: cardIndex }, item, { column: true })))))));
36
+ }
37
+ return (React.createElement("div", { className: b('wrap'), style: wrapsStyle[index] },
38
+ section.items.map((item, idx) => (React.createElement(NHPopupItem, Object.assign({ key: idx }, item, { imageColor: primaryColor, imageColorHover: primaryColorHover })))),
39
+ section.mode === 'scale' && section.banner && React.createElement(NHBanner, Object.assign({}, section.banner))));
40
+ };
49
41
  return (React.createElement("div", { className: b(), style: rootStyle },
50
- React.createElement("div", { className: b('left') }, sections.map((section, index) => (React.createElement("div", { key: index, className: b('section') },
51
- section.title || section.subtitle ? (React.createElement("div", { className: b('head') },
52
- React.createElement("div", { className: b('title') }, section.title),
53
- React.createElement("div", { className: b('subtitle') }, section.subtitle))) : null,
54
- React.createElement("div", { className: b('wrap'), style: wrapsStyle[index] }, section.items.map((item) => (React.createElement(NHPopupItem, Object.assign({ key: item.title }, item, { imageColor: primaryColor, imageColorHover: primaryColorHover }))))))))),
42
+ React.createElement("div", { className: b('left') }, sections.map((section, index) => {
43
+ const hasSideHead = Boolean(section.mode);
44
+ return (React.createElement("div", { key: index, className: b('section', { 'side-head': hasSideHead }) },
45
+ section.title || section.subtitle ? (React.createElement("div", { className: b(hasSideHead ? 'section-head' : 'head') },
46
+ React.createElement("div", { className: b('title') }, section.title),
47
+ React.createElement("div", { className: b('subtitle') }, section.subtitle))) : null,
48
+ renderSectionContent(section, index)));
49
+ })),
55
50
  right && (React.createElement("div", { className: b('right') },
56
51
  React.createElement("div", { className: b('title') }, right.title),
57
52
  cards && React.createElement("div", { className: b('cards') }, cards),
58
- right.stock && React.createElement(NHStock, { background: right.stockImage })))));
53
+ right.stock && React.createElement(NHStock, Object.assign({}, right.stock))))));
59
54
  };
@@ -0,0 +1,48 @@
1
+ /* use this for style redefinitions to awoid problems with
2
+ unpredictable css rules order in build */
3
+ .pc-addons-nh-event-card {
4
+ color: inherit;
5
+ text-decoration: none;
6
+ display: flex;
7
+ flex-direction: column;
8
+ gap: 12px;
9
+ cursor: pointer;
10
+ transition: opacity 0.2s;
11
+ }
12
+
13
+ .pc-addons-nh-event-card:hover {
14
+ opacity: 0.8;
15
+ }
16
+
17
+ .pc-addons-nh-event-card__wrap {
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: 4px;
21
+ }
22
+
23
+ .pc-addons-nh-event-card__caption {
24
+ font-size: var(--g-text-body-1-font-size, var(--pc-text-body-1-font-size));
25
+ line-height: var(--g-text-body-1-line-height, var(--pc-text-body-1-line-height));
26
+ color: var(--g-color-text-secondary);
27
+ }
28
+
29
+ .pc-addons-nh-event-card__title {
30
+ font-size: var(--g-text-body-2-font-size, var(--pc-text-body-2-font-size));
31
+ line-height: var(--g-text-body-2-line-height, var(--pc-text-body-2-line-height));
32
+ color: var(--g-color-text-primary);
33
+ font-weight: 600;
34
+ }
35
+
36
+ .pc-addons-nh-event-card__description {
37
+ font-size: var(--g-text-body-1-font-size, var(--pc-text-body-1-font-size));
38
+ line-height: var(--g-text-body-1-line-height, var(--pc-text-body-1-line-height));
39
+ color: var(--g-color-text-secondary);
40
+ }
41
+
42
+ .pc-addons-nh-event-card__image {
43
+ display: block;
44
+ width: 100%;
45
+ aspect-ratio: 16/9;
46
+ object-fit: cover;
47
+ border-radius: 16px;
48
+ }
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { NHEventCardData } from '../../models';
3
+ import './NHEventCard.css';
4
+ export declare const NHEventCard: ({ title, caption, description, image, url }: NHEventCardData) => React.JSX.Element;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { Image, getLinkProps } from '@doyourjob/gravity-ui-page-constructor';
3
+ import { block } from '../../../../utils/cn';
4
+ import './NHEventCard.css';
5
+ const b = block('nh-event-card');
6
+ export const NHEventCard = ({ title, caption, description, image, url }) => (React.createElement("a", Object.assign({ href: url, className: b() }, getLinkProps(url)),
7
+ React.createElement(Image, { className: b('image'), src: image }),
8
+ React.createElement("div", { className: b('wrap') },
9
+ React.createElement("div", { className: b('caption') }, caption),
10
+ React.createElement("div", { className: b('title') }, title),
11
+ React.createElement("div", { className: b('description') }, description))));
@@ -0,0 +1,4 @@
1
+ .pc-addons-nh-logo__img {
2
+ display: block;
3
+ height: 36px;
4
+ }
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { NHLogoData } from '../../models';
3
+ import './NHLogo.css';
4
+ export interface NHLogoProps {
5
+ data: NHLogoData;
6
+ }
7
+ export declare const NHLogo: ({ data }: NHLogoProps) => React.JSX.Element;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { getLinkProps } from '@doyourjob/gravity-ui-page-constructor';
3
+ import { block } from '../../../../utils/cn';
4
+ import './NHLogo.css';
5
+ const b = block('nh-logo');
6
+ export const NHLogo = ({ data }) => {
7
+ return (React.createElement("a", Object.assign({ href: data.href, className: b() }, getLinkProps(data.href || '')), data.src && React.createElement("img", { className: b('img'), alt: data.alt, src: data.src })));
8
+ };
@@ -25,21 +25,56 @@ unpredictable css rules order in build */
25
25
  color: var(--g-color-text-complementary);
26
26
  }
27
27
 
28
- .pc-addons-nh-mobile-navigation__icon-icon {
29
- position: relative;
30
- top: 3px;
31
- }
32
-
33
28
  .pc-addons-nh-mobile-navigation__icon_hidden {
34
29
  display: none;
35
30
  }
36
31
 
37
- .pc-addons-nh-mobile-navigation__user {
38
- margin-top: 24px;
32
+ .pc-addons-nh-mobile-navigation__nav {
33
+ display: flex;
34
+ flex-direction: column;
35
+ padding: 12px 16px;
36
+ }
37
+
38
+ .pc-addons-nh-mobile-navigation__list {
39
+ margin: 0;
40
+ padding: 0;
41
+ list-style: none;
42
+ display: flex;
43
+ flex-direction: column;
44
+ border-bottom: 1px solid var(--g-color-line-generic);
45
+ }
46
+
47
+ .pc-addons-nh-mobile-navigation__list > li + li {
48
+ border-top: 1px solid var(--g-color-line-generic);
49
+ }
50
+
51
+ .pc-addons-nh-mobile-navigation__list + .pc-addons-nh-mobile-navigation__list {
52
+ margin-top: 150px;
39
53
  }
40
54
 
41
55
  .pc-addons-nh-mobile-navigation__buttons {
42
- margin-top: 8px;
56
+ display: flex;
57
+ flex-direction: column;
58
+ gap: 16px;
59
+ margin-top: 32px;
60
+ }
61
+
62
+ .pc-addons-nh-mobile-navigation__button {
63
+ width: 100%;
64
+ }
65
+
66
+ .pc-addons-nh-mobile-navigation__login-items {
67
+ display: flex;
68
+ flex-direction: column;
69
+ margin-top: 32px;
70
+ }
71
+
72
+ .pc-addons-nh-mobile-navigation__login-item {
73
+ padding: 8px 0;
74
+ }
75
+
76
+ .pc-addons-nh-mobile-navigation__login-item + .pc-addons-nh-mobile-navigation__login-item {
77
+ border-top: 1px solid var(--g-color-line-generic);
43
78
  }
44
79
 
45
80
  @media (max-width: 1081px) {
@@ -1,15 +1,16 @@
1
1
  import React from 'react';
2
2
  import type { ButtonProps } from '@doyourjob/gravity-ui-page-constructor';
3
- import { NHMobileNavigationItemData } from '../../models';
3
+ import { NHLoginPopupData, NHNavigationData } from '../../models';
4
4
  import './NHMobileNavigation.css';
5
5
  interface MobileNavigationProps {
6
6
  isOpened: boolean;
7
7
  toogleOpen: (isOpened: boolean) => void;
8
8
  isSearchOpen: boolean;
9
- data: NHMobileNavigationItemData[];
9
+ data?: NHNavigationData;
10
10
  onMenuScroll: (scrollTop: number) => void;
11
11
  popupClassName?: string;
12
12
  buttons?: ButtonProps[];
13
+ login?: NHLoginPopupData;
13
14
  }
14
- export declare const NHMobileNavigation: ({ isOpened, toogleOpen, isSearchOpen, data, buttons, onMenuScroll, }: MobileNavigationProps) => React.JSX.Element;
15
+ export declare const NHMobileNavigation: ({ isOpened, toogleOpen, isSearchOpen, data, onMenuScroll, }: MobileNavigationProps) => React.JSX.Element;
15
16
  export {};