@cloud-ru/uikit-product-site-banner 0.3.22 → 0.4.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/CHANGELOG.md +20 -0
- package/dist/cjs/components/BannerPrimary/BannerPrimary.js +1 -1
- package/dist/cjs/components/BannerPrimary/styles.module.css +3 -0
- package/dist/cjs/components/BannerTertiary/BannerTertiary.js +1 -1
- package/dist/cjs/components/BannerTertiary/styles.module.css +9 -4
- package/dist/cjs/helperComponents/BannerCommon/styles.module.css +11 -7
- package/dist/esm/components/BannerPrimary/BannerPrimary.js +1 -1
- package/dist/esm/components/BannerPrimary/styles.module.css +3 -0
- package/dist/esm/components/BannerTertiary/BannerTertiary.js +1 -1
- package/dist/esm/components/BannerTertiary/styles.module.css +9 -4
- package/dist/esm/helperComponents/BannerCommon/styles.module.css +11 -7
- package/package.json +4 -4
- package/src/components/BannerPrimary/BannerPrimary.tsx +7 -1
- package/src/components/BannerPrimary/styles.module.scss +4 -0
- package/src/components/BannerTertiary/BannerTertiary.tsx +1 -0
- package/src/components/BannerTertiary/styles.module.scss +13 -5
- package/src/helperComponents/BannerCommon/styles.module.scss +16 -8
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,26 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# 0.4.0 (2025-12-15)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **SITE-10394:** add border radius ([5e950bc](https://gitverse.ru/cloud-ru-tech/uikit-product/commits/5e950bce806fab0a3213eef811a7ebcb411f1860))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## 0.3.23 (2025-12-12)
|
|
18
|
+
|
|
19
|
+
### Only dependencies have been changed
|
|
20
|
+
* [@cloud-ru/uikit-product-button-predefined@0.7.14](https://gitverse.ru/cloud-ru-tech/uikit-product/-/blob/master/packages/button-predefined/CHANGELOG.md)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
6
26
|
## 0.3.22 (2025-12-08)
|
|
7
27
|
|
|
8
28
|
### Only dependencies have been changed
|
|
@@ -29,5 +29,5 @@ const IMAGE_SIZE = {
|
|
|
29
29
|
};
|
|
30
30
|
function BannerPrimary(_a) {
|
|
31
31
|
var { tags, imgType, layoutType, expirationDate } = _a, props = __rest(_a, ["tags", "imgType", "layoutType", "expirationDate"]);
|
|
32
|
-
return ((0, jsx_runtime_1.jsx)(BannerCommon_1.BannerCommon, Object.assign({ sizes: { image: IMAGE_SIZE[layoutType][imgType], mainGap: layoutType === 'mobile' ? 24 : 32 }, layoutType: layoutType, topSlot: (tags || expirationDate) && ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.tags, children: [expirationDate && ((0, jsx_runtime_1.jsx)(promo_tag_1.PromoTag, { size: 'xs', text: `Действует до ${expirationDate}`, appearance: 'neutral', color: 'decor' })), tags === null || tags === void 0 ? void 0 : tags.map((props, index) => ((0, jsx_runtime_1.jsx)(uikit_product_site_tag_1.TagSpecial, Object.assign({}, props), index)))] })) }, props)));
|
|
32
|
+
return ((0, jsx_runtime_1.jsx)(BannerCommon_1.BannerCommon, Object.assign({ sizes: { image: IMAGE_SIZE[layoutType][imgType], mainGap: layoutType === 'mobile' ? 24 : 32 }, layoutType: layoutType, topSlot: (tags || expirationDate) && ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.tags, children: [expirationDate && ((0, jsx_runtime_1.jsx)(promo_tag_1.PromoTag, { size: 'xs', text: `Действует до ${expirationDate}`, appearance: 'neutral', color: 'decor', className: styles_module_scss_1.default.promoTag })), tags === null || tags === void 0 ? void 0 : tags.map((props, index) => ((0, jsx_runtime_1.jsx)(uikit_product_site_tag_1.TagSpecial, Object.assign({}, props), index)))] })) }, props)));
|
|
33
33
|
}
|
|
@@ -33,5 +33,5 @@ const MAP_LAYOUT_TO_TEXT_SIZE = {
|
|
|
33
33
|
function BannerTertiary(_a) {
|
|
34
34
|
var { layoutType, title, description, img, button, erid, className, topRightCornerSlot } = _a, rest = __rest(_a, ["layoutType", "title", "description", "img", "button", "erid", "className", "topRightCornerSlot"]);
|
|
35
35
|
const isMobile = layoutType === 'mobile';
|
|
36
|
-
return ((0, jsx_runtime_1.jsxs)(ColorWrapper_1.ColorWrapper, Object.assign({}, rest, { className: (0, classnames_1.default)(className, styles_module_scss_1.default.root), "data-layout-type": layoutType, children: [(topRightCornerSlot || erid) && ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.topRightCorner, children: [erid && ((0, jsx_runtime_1.jsx)(uikit_product_site_tag_1.Erid, { className: styles_module_scss_1.default.erid, tip: erid.tip, appearance: ColorWrapper_1.ColorWrapper.getEridAppearance(rest.appearance) })), topRightCornerSlot] })), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.content, children: [(0, jsx_runtime_1.jsx)("img", { className: styles_module_scss_1.default.image, src: img, alt: title }), (0, jsx_runtime_1.jsxs)("div", { "data-color-wrapper-role": 'text', className: styles_module_scss_1.default.texts, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { size: MAP_LAYOUT_TO_TEXT_SIZE[layoutType], className: styles_module_scss_1.default.title, purpose: 'title', family: 'sans', children: (0, jsx_runtime_1.jsx)(uikit_product_site_rich_text_1.RichText, { richText: title }) }), (0, jsx_runtime_1.jsx)(typography_1.Typography, { size: MAP_LAYOUT_TO_TEXT_SIZE[layoutType], className: styles_module_scss_1.default.description, purpose: 'body', family: 'sans', children: (0, jsx_runtime_1.jsx)(uikit_product_site_rich_text_1.RichText, { richText: description }) })] }), (0, jsx_runtime_1.jsx)(uikit_product_button_predefined_1.ButtonPromo, Object.assign({ target: '_self' }, button, { size: 'l', appearance: ColorWrapper_1.ColorWrapper.getButtonAppearance(rest.appearance), fullWidth: isMobile }))] })] })));
|
|
36
|
+
return ((0, jsx_runtime_1.jsxs)(ColorWrapper_1.ColorWrapper, Object.assign({}, rest, { className: (0, classnames_1.default)(className, styles_module_scss_1.default.root), "data-layout-type": layoutType, children: [(topRightCornerSlot || erid) && ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.topRightCorner, children: [erid && ((0, jsx_runtime_1.jsx)(uikit_product_site_tag_1.Erid, { className: styles_module_scss_1.default.erid, tip: erid.tip, appearance: ColorWrapper_1.ColorWrapper.getEridAppearance(rest.appearance) })), topRightCornerSlot] })), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.content, children: [(0, jsx_runtime_1.jsx)("img", { className: styles_module_scss_1.default.image, src: img, alt: title }), (0, jsx_runtime_1.jsxs)("div", { "data-color-wrapper-role": 'text', className: styles_module_scss_1.default.texts, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { size: MAP_LAYOUT_TO_TEXT_SIZE[layoutType], className: styles_module_scss_1.default.title, purpose: 'title', family: 'sans', children: (0, jsx_runtime_1.jsx)(uikit_product_site_rich_text_1.RichText, { richText: title }) }), (0, jsx_runtime_1.jsx)(typography_1.Typography, { size: MAP_LAYOUT_TO_TEXT_SIZE[layoutType], className: styles_module_scss_1.default.description, purpose: 'body', family: 'sans', children: (0, jsx_runtime_1.jsx)(uikit_product_site_rich_text_1.RichText, { richText: description }) })] }), (0, jsx_runtime_1.jsx)(uikit_product_button_predefined_1.ButtonPromo, Object.assign({ target: '_self' }, button, { size: 'l', appearance: ColorWrapper_1.ColorWrapper.getButtonAppearance(rest.appearance), fullWidth: isMobile, className: styles_module_scss_1.default.button }))] })] })));
|
|
37
37
|
}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
.root{
|
|
2
|
-
position:relative;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
1
|
.topRightCorner{
|
|
6
2
|
position:absolute;
|
|
7
3
|
top:0;
|
|
@@ -25,6 +21,7 @@
|
|
|
25
21
|
.image{
|
|
26
22
|
max-width:105px;
|
|
27
23
|
max-height:72px;
|
|
24
|
+
border-radius:4px;
|
|
28
25
|
}
|
|
29
26
|
|
|
30
27
|
.texts{
|
|
@@ -33,4 +30,12 @@
|
|
|
33
30
|
flex-direction:column;
|
|
34
31
|
align-self:stretch;
|
|
35
32
|
gap:4px;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.root{
|
|
36
|
+
position:relative;
|
|
37
|
+
border-radius:4px;
|
|
38
|
+
}
|
|
39
|
+
.root .content .button{
|
|
40
|
+
border-radius:2px;
|
|
36
41
|
}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
.content{
|
|
2
|
-
display:flex;
|
|
3
|
-
flex-direction:column;
|
|
4
|
-
gap:var(--site-banner-main-gap);
|
|
5
|
-
padding:32px;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
1
|
.title,
|
|
9
2
|
.description{
|
|
10
3
|
word-break:break-word;
|
|
@@ -27,6 +20,7 @@
|
|
|
27
20
|
max-width:var(--site-banner-image-max-width);
|
|
28
21
|
max-height:var(--site-banner-image-max-height);
|
|
29
22
|
flex-shrink:0;
|
|
23
|
+
border-radius:4px;
|
|
30
24
|
}
|
|
31
25
|
.imgWrapper{
|
|
32
26
|
width:100%;
|
|
@@ -41,6 +35,16 @@
|
|
|
41
35
|
top:2px;
|
|
42
36
|
}
|
|
43
37
|
|
|
38
|
+
.content{
|
|
39
|
+
display:flex;
|
|
40
|
+
flex-direction:column;
|
|
41
|
+
gap:var(--site-banner-main-gap);
|
|
42
|
+
padding:32px;
|
|
43
|
+
}
|
|
44
|
+
.content .buttons .button{
|
|
45
|
+
border-radius:2px;
|
|
46
|
+
}
|
|
47
|
+
|
|
44
48
|
.root{
|
|
45
49
|
position:relative;
|
|
46
50
|
display:grid;
|
|
@@ -23,5 +23,5 @@ const IMAGE_SIZE = {
|
|
|
23
23
|
};
|
|
24
24
|
export function BannerPrimary(_a) {
|
|
25
25
|
var { tags, imgType, layoutType, expirationDate } = _a, props = __rest(_a, ["tags", "imgType", "layoutType", "expirationDate"]);
|
|
26
|
-
return (_jsx(BannerCommon, Object.assign({ sizes: { image: IMAGE_SIZE[layoutType][imgType], mainGap: layoutType === 'mobile' ? 24 : 32 }, layoutType: layoutType, topSlot: (tags || expirationDate) && (_jsxs("div", { className: styles.tags, children: [expirationDate && (_jsx(PromoTag, { size: 'xs', text: `Действует до ${expirationDate}`, appearance: 'neutral', color: 'decor' })), tags === null || tags === void 0 ? void 0 : tags.map((props, index) => (_jsx(TagSpecial, Object.assign({}, props), index)))] })) }, props)));
|
|
26
|
+
return (_jsx(BannerCommon, Object.assign({ sizes: { image: IMAGE_SIZE[layoutType][imgType], mainGap: layoutType === 'mobile' ? 24 : 32 }, layoutType: layoutType, topSlot: (tags || expirationDate) && (_jsxs("div", { className: styles.tags, children: [expirationDate && (_jsx(PromoTag, { size: 'xs', text: `Действует до ${expirationDate}`, appearance: 'neutral', color: 'decor', className: styles.promoTag })), tags === null || tags === void 0 ? void 0 : tags.map((props, index) => (_jsx(TagSpecial, Object.assign({}, props), index)))] })) }, props)));
|
|
27
27
|
}
|
|
@@ -27,5 +27,5 @@ const MAP_LAYOUT_TO_TEXT_SIZE = {
|
|
|
27
27
|
export function BannerTertiary(_a) {
|
|
28
28
|
var { layoutType, title, description, img, button, erid, className, topRightCornerSlot } = _a, rest = __rest(_a, ["layoutType", "title", "description", "img", "button", "erid", "className", "topRightCornerSlot"]);
|
|
29
29
|
const isMobile = layoutType === 'mobile';
|
|
30
|
-
return (_jsxs(ColorWrapper, Object.assign({}, rest, { className: cn(className, styles.root), "data-layout-type": layoutType, children: [(topRightCornerSlot || erid) && (_jsxs("div", { className: styles.topRightCorner, children: [erid && (_jsx(Erid, { className: styles.erid, tip: erid.tip, appearance: ColorWrapper.getEridAppearance(rest.appearance) })), topRightCornerSlot] })), _jsxs("div", { className: styles.content, children: [_jsx("img", { className: styles.image, src: img, alt: title }), _jsxs("div", { "data-color-wrapper-role": 'text', className: styles.texts, children: [_jsx(Typography, { size: MAP_LAYOUT_TO_TEXT_SIZE[layoutType], className: styles.title, purpose: 'title', family: 'sans', children: _jsx(RichText, { richText: title }) }), _jsx(Typography, { size: MAP_LAYOUT_TO_TEXT_SIZE[layoutType], className: styles.description, purpose: 'body', family: 'sans', children: _jsx(RichText, { richText: description }) })] }), _jsx(ButtonPromo, Object.assign({ target: '_self' }, button, { size: 'l', appearance: ColorWrapper.getButtonAppearance(rest.appearance), fullWidth: isMobile }))] })] })));
|
|
30
|
+
return (_jsxs(ColorWrapper, Object.assign({}, rest, { className: cn(className, styles.root), "data-layout-type": layoutType, children: [(topRightCornerSlot || erid) && (_jsxs("div", { className: styles.topRightCorner, children: [erid && (_jsx(Erid, { className: styles.erid, tip: erid.tip, appearance: ColorWrapper.getEridAppearance(rest.appearance) })), topRightCornerSlot] })), _jsxs("div", { className: styles.content, children: [_jsx("img", { className: styles.image, src: img, alt: title }), _jsxs("div", { "data-color-wrapper-role": 'text', className: styles.texts, children: [_jsx(Typography, { size: MAP_LAYOUT_TO_TEXT_SIZE[layoutType], className: styles.title, purpose: 'title', family: 'sans', children: _jsx(RichText, { richText: title }) }), _jsx(Typography, { size: MAP_LAYOUT_TO_TEXT_SIZE[layoutType], className: styles.description, purpose: 'body', family: 'sans', children: _jsx(RichText, { richText: description }) })] }), _jsx(ButtonPromo, Object.assign({ target: '_self' }, button, { size: 'l', appearance: ColorWrapper.getButtonAppearance(rest.appearance), fullWidth: isMobile, className: styles.button }))] })] })));
|
|
31
31
|
}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
.root{
|
|
2
|
-
position:relative;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
1
|
.topRightCorner{
|
|
6
2
|
position:absolute;
|
|
7
3
|
top:0;
|
|
@@ -25,6 +21,7 @@
|
|
|
25
21
|
.image{
|
|
26
22
|
max-width:105px;
|
|
27
23
|
max-height:72px;
|
|
24
|
+
border-radius:4px;
|
|
28
25
|
}
|
|
29
26
|
|
|
30
27
|
.texts{
|
|
@@ -33,4 +30,12 @@
|
|
|
33
30
|
flex-direction:column;
|
|
34
31
|
align-self:stretch;
|
|
35
32
|
gap:4px;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.root{
|
|
36
|
+
position:relative;
|
|
37
|
+
border-radius:4px;
|
|
38
|
+
}
|
|
39
|
+
.root .content .button{
|
|
40
|
+
border-radius:2px;
|
|
36
41
|
}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
.content{
|
|
2
|
-
display:flex;
|
|
3
|
-
flex-direction:column;
|
|
4
|
-
gap:var(--site-banner-main-gap);
|
|
5
|
-
padding:32px;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
1
|
.title,
|
|
9
2
|
.description{
|
|
10
3
|
word-break:break-word;
|
|
@@ -27,6 +20,7 @@
|
|
|
27
20
|
max-width:var(--site-banner-image-max-width);
|
|
28
21
|
max-height:var(--site-banner-image-max-height);
|
|
29
22
|
flex-shrink:0;
|
|
23
|
+
border-radius:4px;
|
|
30
24
|
}
|
|
31
25
|
.imgWrapper{
|
|
32
26
|
width:100%;
|
|
@@ -41,6 +35,16 @@
|
|
|
41
35
|
top:2px;
|
|
42
36
|
}
|
|
43
37
|
|
|
38
|
+
.content{
|
|
39
|
+
display:flex;
|
|
40
|
+
flex-direction:column;
|
|
41
|
+
gap:var(--site-banner-main-gap);
|
|
42
|
+
padding:32px;
|
|
43
|
+
}
|
|
44
|
+
.content .buttons .button{
|
|
45
|
+
border-radius:2px;
|
|
46
|
+
}
|
|
47
|
+
|
|
44
48
|
.root{
|
|
45
49
|
position:relative;
|
|
46
50
|
display:grid;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloud-ru/uikit-product-site-banner",
|
|
3
3
|
"title": "Site Banner",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.4.0",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"*.css",
|
|
7
7
|
"*.woff",
|
|
@@ -36,14 +36,14 @@
|
|
|
36
36
|
},
|
|
37
37
|
"scripts": {},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@cloud-ru/uikit-product-button-predefined": "0.7.
|
|
39
|
+
"@cloud-ru/uikit-product-button-predefined": "0.7.14",
|
|
40
40
|
"@cloud-ru/uikit-product-site-rich-text": "0.2.16",
|
|
41
|
-
"@cloud-ru/uikit-product-site-tag": "0.
|
|
41
|
+
"@cloud-ru/uikit-product-site-tag": "0.4.0",
|
|
42
42
|
"@cloud-ru/uikit-product-utils": "8.0.2",
|
|
43
43
|
"@snack-uikit/promo-tag": "0.7.1",
|
|
44
44
|
"@snack-uikit/typography": "0.8.4",
|
|
45
45
|
"@snack-uikit/utils": "3.7.0",
|
|
46
46
|
"classnames": "2.5.1"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "fdcf94a6757e590c66ace1a43667bb29ce748d64"
|
|
49
49
|
}
|
|
@@ -30,7 +30,13 @@ export function BannerPrimary({ tags, imgType, layoutType, expirationDate, ...pr
|
|
|
30
30
|
(tags || expirationDate) && (
|
|
31
31
|
<div className={styles.tags}>
|
|
32
32
|
{expirationDate && (
|
|
33
|
-
<PromoTag
|
|
33
|
+
<PromoTag
|
|
34
|
+
size='xs'
|
|
35
|
+
text={`Действует до ${expirationDate}`}
|
|
36
|
+
appearance='neutral'
|
|
37
|
+
color='decor'
|
|
38
|
+
className={styles.promoTag}
|
|
39
|
+
/>
|
|
34
40
|
)}
|
|
35
41
|
|
|
36
42
|
{tags?.map((props, index) => (
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
.root {
|
|
2
|
-
position: relative;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
1
|
.topRightCorner {
|
|
6
2
|
position: absolute;
|
|
7
3
|
top: 0;
|
|
@@ -26,6 +22,7 @@
|
|
|
26
22
|
.image {
|
|
27
23
|
max-width: 105px;
|
|
28
24
|
max-height: 72px;
|
|
25
|
+
border-radius: 4px;
|
|
29
26
|
}
|
|
30
27
|
|
|
31
28
|
.texts {
|
|
@@ -34,4 +31,15 @@
|
|
|
34
31
|
flex-direction: column;
|
|
35
32
|
align-self: stretch;
|
|
36
33
|
gap: 4px;
|
|
37
|
-
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.root {
|
|
37
|
+
position: relative;
|
|
38
|
+
border-radius: 4px;
|
|
39
|
+
|
|
40
|
+
.content {
|
|
41
|
+
.button {
|
|
42
|
+
border-radius: 2px;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
.content {
|
|
2
|
-
display: flex;
|
|
3
|
-
flex-direction: column;
|
|
4
|
-
gap: var(--site-banner-main-gap);
|
|
5
|
-
|
|
6
|
-
padding: 32px;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
1
|
.title,
|
|
10
2
|
.description {
|
|
11
3
|
word-break: break-word;
|
|
@@ -30,6 +22,8 @@
|
|
|
30
22
|
|
|
31
23
|
flex-shrink: 0;
|
|
32
24
|
|
|
25
|
+
border-radius: 4px;
|
|
26
|
+
|
|
33
27
|
&Wrapper {
|
|
34
28
|
width: 100%;
|
|
35
29
|
display: flex;
|
|
@@ -44,6 +38,20 @@
|
|
|
44
38
|
top: 2px;
|
|
45
39
|
}
|
|
46
40
|
|
|
41
|
+
.content {
|
|
42
|
+
display: flex;
|
|
43
|
+
flex-direction: column;
|
|
44
|
+
gap: var(--site-banner-main-gap);
|
|
45
|
+
|
|
46
|
+
padding: 32px;
|
|
47
|
+
|
|
48
|
+
.buttons {
|
|
49
|
+
.button {
|
|
50
|
+
border-radius: 2px;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
47
55
|
.root {
|
|
48
56
|
position: relative;
|
|
49
57
|
|