@redneckz/wildless-cms-uni-blocks 0.2.101 → 0.2.105
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/bundle/blocks.schema.json +1 -1
- package/bundle/bundle.umd.js +128 -67
- package/bundle/bundle.umd.min.js +1 -1
- package/dist/components/BlockContent.d.ts +3 -2
- package/dist/components/Blocks.d.ts +1 -0
- package/dist/components/Blocks.js +2 -0
- package/dist/components/Blocks.js.map +1 -1
- package/dist/components/Footer/FooterContent.d.ts +1 -1
- package/dist/components/Footer/Sitemap.d.ts +1 -1
- package/dist/components/Footer/Sitemap.js +2 -2
- package/dist/components/Footer/Sitemap.js.map +1 -1
- package/dist/components/Gallery/GalleryContainer.js +1 -1
- package/dist/components/Gallery/GalleryContainer.js.map +1 -1
- package/dist/components/Header/Header.js +13 -9
- package/dist/components/Header/Header.js.map +1 -1
- package/dist/components/Header/HeaderContent.d.ts +8 -1
- package/dist/components/Header/HeaderSecondaryMenu.d.ts +2 -1
- package/dist/components/Header/HeaderSecondaryMenu.js +14 -2
- package/dist/components/Header/HeaderSecondaryMenu.js.map +1 -1
- package/dist/components/Header/HeaderSecondaryMenuButton.js +1 -1
- package/dist/components/Header/HeaderSecondaryMenuButton.js.map +1 -1
- package/dist/components/Headline/HeadlineContent.d.ts +2 -9
- package/dist/components/MobileBlocks.d.ts +1 -0
- package/dist/components/MobileBlocks.js +2 -0
- package/dist/components/MobileBlocks.js.map +1 -1
- package/dist/components/Navigation/Navigation.d.ts +5 -0
- package/dist/components/Navigation/Navigation.js +16 -0
- package/dist/components/Navigation/Navigation.js.map +1 -0
- package/dist/components/Navigation/NavigationContent.d.ts +10 -0
- package/dist/components/Navigation/NavigationContent.js +2 -0
- package/dist/components/Navigation/NavigationContent.js.map +1 -0
- package/dist/components/Navigation/NavigationItem.d.ts +4 -0
- package/dist/components/Navigation/NavigationItem.js +6 -0
- package/dist/components/Navigation/NavigationItem.js.map +1 -0
- package/dist/components/TariffsTable/TariffsTableCell.js +1 -3
- package/dist/components/TariffsTable/TariffsTableCell.js.map +1 -1
- package/dist/components/TariffsTable/TariffsTableRow.js +1 -1
- package/dist/components/TariffsTable/TariffsTableRow.js.map +1 -1
- package/dist/components/Tile/Tile.d.ts +1 -0
- package/dist/components/Tile/Tile.js +2 -2
- package/dist/components/Tile/Tile.js.map +1 -1
- package/dist/hooks/useLink.js +2 -1
- package/dist/hooks/useLink.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js.map +1 -1
- package/dist/model/BgColorVersion.d.ts +8 -0
- package/dist/model/BgColorVersion.js +2 -0
- package/dist/model/BgColorVersion.js.map +1 -0
- package/dist/services/sitemap/SitemapProps.d.ts +13 -0
- package/dist/services/sitemap/SitemapProps.js +2 -0
- package/dist/services/sitemap/SitemapProps.js.map +1 -0
- package/dist/services/sitemap/findActiveSubItem.d.ts +3 -0
- package/dist/services/sitemap/findActiveSubItem.js +13 -0
- package/dist/services/sitemap/findActiveSubItem.js.map +1 -0
- package/dist/services/sitemap/isHrefActive.d.ts +4 -0
- package/dist/services/sitemap/isHrefActive.js +9 -0
- package/dist/services/sitemap/isHrefActive.js.map +1 -0
- package/dist/services/sitemap/isSubItemActive.d.ts +3 -0
- package/dist/services/sitemap/isSubItemActive.js +6 -0
- package/dist/services/sitemap/isSubItemActive.js.map +1 -0
- package/dist/services/sitemap/isTopItemActive.d.ts +3 -0
- package/dist/services/sitemap/isTopItemActive.js +7 -0
- package/dist/services/sitemap/isTopItemActive.js.map +1 -0
- package/dist/services/sitemap/mergeTopItems.d.ts +2 -0
- package/dist/{mergeTopItems.js → services/sitemap/mergeTopItems.js} +1 -3
- package/dist/services/sitemap/mergeTopItems.js.map +1 -0
- package/dist/services/sitemap/useSitemap.d.ts +3 -0
- package/dist/{hooks → services/sitemap}/useSitemap.js +1 -1
- package/dist/services/sitemap/useSitemap.js.map +1 -0
- package/dist/ui-kit/HeaderItem/HeaderItem.js +16 -4
- package/dist/ui-kit/HeaderItem/HeaderItem.js.map +1 -1
- package/dist/ui-kit/Icon/IconProps.d.ts +21 -20
- package/dist/ui-kit/Icon/IconProps.js +17 -17
- package/dist/ui-kit/Icon/IconProps.js.map +1 -1
- package/dist/ui-kit/Logo/Logo.d.ts +1 -0
- package/dist/ui-kit/Logo/Logo.js +10 -2
- package/dist/ui-kit/Logo/Logo.js.map +1 -1
- package/dist/ui-kit/SearchBar.js +3 -3
- package/dist/ui-kit/SearchBar.js.map +1 -1
- package/dist/ui-kit/TopItem/TopItem.d.ts +2 -0
- package/dist/ui-kit/TopItem/TopItem.js +19 -7
- package/dist/ui-kit/TopItem/TopItem.js.map +1 -1
- package/dist/utils/adjustHref.d.ts +4 -0
- package/dist/utils/adjustHref.js +21 -0
- package/dist/utils/adjustHref.js.map +1 -0
- package/dist/utils/maxBy.d.ts +2 -0
- package/dist/utils/maxBy.js +7 -0
- package/dist/utils/maxBy.js.map +1 -0
- package/dist/utils/url.d.ts +0 -13
- package/dist/utils/url.js +2 -26
- package/dist/utils/url.js.map +1 -1
- package/dist/utils/withoutMobilePath.d.ts +2 -0
- package/dist/utils/withoutMobilePath.js +6 -0
- package/dist/utils/withoutMobilePath.js.map +1 -0
- package/lib/common.css +1 -1
- package/lib/components/BlockContent.d.ts +3 -2
- package/lib/components/Blocks.d.ts +1 -0
- package/lib/components/Blocks.js +2 -0
- package/lib/components/Blocks.js.map +1 -1
- package/lib/components/Footer/FooterContent.d.ts +1 -1
- package/lib/components/Footer/Sitemap.d.ts +1 -1
- package/lib/components/Footer/Sitemap.js +2 -2
- package/lib/components/Footer/Sitemap.js.map +1 -1
- package/lib/components/Gallery/GalleryContainer.js +1 -1
- package/lib/components/Gallery/GalleryContainer.js.map +1 -1
- package/lib/components/Header/Header.fixture.d.ts +4 -1
- package/lib/components/Header/Header.js +13 -9
- package/lib/components/Header/Header.js.map +1 -1
- package/lib/components/Header/HeaderContent.d.ts +8 -1
- package/lib/components/Header/HeaderSecondaryMenu.d.ts +2 -1
- package/lib/components/Header/HeaderSecondaryMenu.js +14 -2
- package/lib/components/Header/HeaderSecondaryMenu.js.map +1 -1
- package/lib/components/Header/HeaderSecondaryMenuButton.js +1 -1
- package/lib/components/Header/HeaderSecondaryMenuButton.js.map +1 -1
- package/lib/components/Headline/HeadlineContent.d.ts +2 -9
- package/lib/components/MobileBlocks.d.ts +1 -0
- package/lib/components/MobileBlocks.js +2 -0
- package/lib/components/MobileBlocks.js.map +1 -1
- package/lib/components/Navigation/Navigation.d.ts +5 -0
- package/lib/components/Navigation/Navigation.fixture.d.ts +2 -0
- package/lib/components/Navigation/Navigation.js +14 -0
- package/lib/components/Navigation/Navigation.js.map +1 -0
- package/lib/components/Navigation/NavigationContent.d.ts +10 -0
- package/lib/components/Navigation/NavigationContent.js +2 -0
- package/lib/components/Navigation/NavigationContent.js.map +1 -0
- package/lib/components/Navigation/NavigationItem.d.ts +4 -0
- package/lib/components/Navigation/NavigationItem.js +4 -0
- package/lib/components/Navigation/NavigationItem.js.map +1 -0
- package/lib/components/TariffsTable/TariffsTableCell.js +1 -3
- package/lib/components/TariffsTable/TariffsTableCell.js.map +1 -1
- package/lib/components/TariffsTable/TariffsTableRow.js +1 -1
- package/lib/components/TariffsTable/TariffsTableRow.js.map +1 -1
- package/lib/components/Tile/Tile.d.ts +1 -0
- package/lib/components/Tile/Tile.js +2 -2
- package/lib/components/Tile/Tile.js.map +1 -1
- package/lib/hooks/useLink.js +2 -1
- package/lib/hooks/useLink.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js.map +1 -1
- package/lib/model/BgColorVersion.d.ts +8 -0
- package/lib/model/BgColorVersion.js +2 -0
- package/lib/model/BgColorVersion.js.map +1 -0
- package/lib/services/sitemap/SitemapProps.d.ts +13 -0
- package/lib/services/sitemap/SitemapProps.js +2 -0
- package/lib/services/sitemap/SitemapProps.js.map +1 -0
- package/lib/services/sitemap/findActiveSubItem.d.ts +3 -0
- package/lib/services/sitemap/findActiveSubItem.js +10 -0
- package/lib/services/sitemap/findActiveSubItem.js.map +1 -0
- package/lib/services/sitemap/isHrefActive.d.ts +4 -0
- package/lib/services/sitemap/isHrefActive.js +6 -0
- package/lib/services/sitemap/isHrefActive.js.map +1 -0
- package/lib/services/sitemap/isSubItemActive.d.ts +3 -0
- package/lib/services/sitemap/isSubItemActive.js +3 -0
- package/lib/services/sitemap/isSubItemActive.js.map +1 -0
- package/lib/services/sitemap/isTopItemActive.d.ts +3 -0
- package/lib/services/sitemap/isTopItemActive.js +4 -0
- package/lib/services/sitemap/isTopItemActive.js.map +1 -0
- package/lib/services/sitemap/mergeTopItems.d.ts +2 -0
- package/lib/{mergeTopItems.js → services/sitemap/mergeTopItems.js} +1 -3
- package/lib/services/sitemap/mergeTopItems.js.map +1 -0
- package/lib/services/sitemap/useSitemap.d.ts +3 -0
- package/lib/{hooks → services/sitemap}/useSitemap.js +1 -1
- package/lib/services/sitemap/useSitemap.js.map +1 -0
- package/lib/ui-kit/HeaderItem/HeaderItem.js +16 -4
- package/lib/ui-kit/HeaderItem/HeaderItem.js.map +1 -1
- package/lib/ui-kit/Icon/IconProps.d.ts +21 -20
- package/lib/ui-kit/Icon/IconProps.js +17 -17
- package/lib/ui-kit/Icon/IconProps.js.map +1 -1
- package/lib/ui-kit/Logo/Logo.d.ts +1 -0
- package/lib/ui-kit/Logo/Logo.js +10 -2
- package/lib/ui-kit/Logo/Logo.js.map +1 -1
- package/lib/ui-kit/SearchBar.js +3 -3
- package/lib/ui-kit/SearchBar.js.map +1 -1
- package/lib/ui-kit/TopItem/TopItem.d.ts +2 -0
- package/lib/ui-kit/TopItem/TopItem.js +19 -7
- package/lib/ui-kit/TopItem/TopItem.js.map +1 -1
- package/lib/utils/adjustHref.d.ts +4 -0
- package/lib/utils/adjustHref.js +18 -0
- package/lib/utils/adjustHref.js.map +1 -0
- package/lib/utils/maxBy.d.ts +2 -0
- package/lib/utils/maxBy.js +3 -0
- package/lib/utils/maxBy.js.map +1 -0
- package/lib/utils/url.d.ts +0 -13
- package/lib/utils/url.js +1 -21
- package/lib/utils/url.js.map +1 -1
- package/lib/utils/withoutMobilePath.d.ts +2 -0
- package/lib/utils/withoutMobilePath.js +3 -0
- package/lib/utils/withoutMobilePath.js.map +1 -0
- package/package.json +4 -2
- package/src/components/BlockContent.ts +4 -2
- package/src/components/Blocks.ts +2 -0
- package/src/components/ContentPage/ContentPage.page.json +33 -16
- package/src/components/Footer/FooterContent.ts +1 -1
- package/src/components/Footer/Sitemap.tsx +4 -3
- package/src/components/Gallery/GalleryContainer.tsx +1 -0
- package/src/components/Header/Header.fixture.tsx +4 -18
- package/src/components/Header/Header.tsx +56 -45
- package/src/components/Header/HeaderContent.ts +8 -1
- package/src/components/Header/HeaderSecondaryMenu.tsx +25 -12
- package/src/components/Header/HeaderSecondaryMenuButton.tsx +2 -4
- package/src/components/Headline/HeadlineContent.ts +2 -10
- package/src/components/MobileBlocks.ts +2 -0
- package/src/components/Navigation/Navigation.fixture.tsx +28 -0
- package/src/components/Navigation/Navigation.tsx +39 -0
- package/src/components/Navigation/NavigationContent.ts +11 -0
- package/src/components/Navigation/NavigationItem.tsx +17 -0
- package/src/components/PictureText/PictureText.example.json +1 -1
- package/src/components/PictureText/PictureText.fixture.tsx +1 -1
- package/src/components/ProductGallery/ProductGallery.fixture.tsx +2 -2
- package/src/components/TariffsTable/TariffsTableCell.tsx +1 -3
- package/src/components/TariffsTable/TariffsTableRow.tsx +6 -1
- package/src/components/Tile/Tile.tsx +5 -2
- package/src/hooks/useLink.ts +2 -1
- package/src/icons/Calendar2Icon.svg +1 -1
- package/src/icons/CalendarTickIcon.svg +1 -1
- package/src/icons/CalendarWhiteIcon.svg +1 -1
- package/src/icons/CardWithGemIcon.svg +1 -1
- package/src/icons/ChartSquareIcon.svg +1 -1
- package/src/icons/CreditCardsIcon.svg +1 -1
- package/src/icons/DiscountShapeIcon.svg +1 -0
- package/src/icons/EarthIcon.svg +1 -1
- package/src/icons/EmptyWalletWhiteIcon.svg +1 -1
- package/src/icons/GlobalIcon.svg +1 -1
- package/src/icons/GridIcon.svg +1 -1
- package/src/icons/GridIconWhite.svg +4 -0
- package/src/icons/InterestGrowthIcon.svg +1 -1
- package/src/icons/InterestIcon.svg +1 -1
- package/src/icons/MoneyInsuranceIcon.svg +1 -1
- package/src/icons/OfficeIcon.svg +1 -1
- package/src/icons/PercentageRoundIcon.svg +1 -1
- package/src/icons/PercentageSquareWhiteIcon.svg +1 -1
- package/src/icons/PersonalCardIcon.svg +1 -1
- package/src/icons/RoundRubleIcon.svg +1 -1
- package/src/icons/SafeIcon.svg +1 -1
- package/src/icons/SmallClockIcon.svg +1 -1
- package/src/icons/WalletAdd2Icon.svg +1 -1
- package/src/icons/WalletAddIcon.svg +1 -1
- package/src/icons/WalletIcon.svg +1 -0
- package/src/icons/WalletWithMoneyIcon.svg +1 -1
- package/src/index.ts +9 -2
- package/src/model/BgColorVersion.ts +8 -0
- package/src/services/sitemap/SitemapProps.ts +15 -0
- package/src/services/sitemap/findActiveSubItem.ts +14 -0
- package/src/services/sitemap/isHrefActive.ts +13 -0
- package/src/services/sitemap/isSubItemActive.ts +8 -0
- package/src/services/sitemap/isTopItemActive.ts +9 -0
- package/src/{mergeTopItems.spec.ts → services/sitemap/mergeTopItems.spec.ts} +0 -0
- package/src/{mergeTopItems.ts → services/sitemap/mergeTopItems.ts} +3 -4
- package/src/{hooks → services/sitemap}/useSitemap.ts +3 -3
- package/src/ui-kit/HeaderItem/HeaderItem.tsx +32 -18
- package/src/ui-kit/Icon/IconProps.ts +7 -6
- package/src/ui-kit/Logo/Logo.tsx +30 -18
- package/src/ui-kit/SearchBar.tsx +15 -18
- package/src/ui-kit/TopItem/TopItem.tsx +46 -19
- package/src/utils/adjustHref.spec.ts +25 -0
- package/src/utils/adjustHref.ts +24 -0
- package/src/utils/maxBy.spec.ts +11 -0
- package/src/utils/maxBy.ts +7 -0
- package/src/utils/url.spec.ts +1 -37
- package/src/utils/url.ts +2 -39
- package/src/utils/withoutMobilePath.ts +3 -0
- package/dist/components/Header/isSubItemActive.d.ts +0 -3
- package/dist/components/Header/isSubItemActive.js +0 -8
- package/dist/components/Header/isSubItemActive.js.map +0 -1
- package/dist/components/Header/isTopItemActive.d.ts +0 -3
- package/dist/components/Header/isTopItemActive.js +0 -8
- package/dist/components/Header/isTopItemActive.js.map +0 -1
- package/dist/hooks/useSitemap.d.ts +0 -3
- package/dist/hooks/useSitemap.js.map +0 -1
- package/dist/mergeTopItems.d.ts +0 -2
- package/dist/mergeTopItems.js.map +0 -1
- package/lib/components/Header/isSubItemActive.d.ts +0 -3
- package/lib/components/Header/isSubItemActive.js +0 -5
- package/lib/components/Header/isSubItemActive.js.map +0 -1
- package/lib/components/Header/isTopItemActive.d.ts +0 -3
- package/lib/components/Header/isTopItemActive.js +0 -5
- package/lib/components/Header/isTopItemActive.js.map +0 -1
- package/lib/hooks/useSitemap.d.ts +0 -3
- package/lib/hooks/useSitemap.js.map +0 -1
- package/lib/mergeTopItems.d.ts +0 -2
- package/lib/mergeTopItems.js.map +0 -1
- package/src/components/Header/isSubItemActive.ts +0 -7
- package/src/components/Header/isTopItemActive.ts +0 -8
- package/src/icons/DischountStarIcon.svg +0 -1
- package/src/icons/DiscountShape.svg +0 -7
package/src/ui-kit/SearchBar.tsx
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
2
|
import type { UniBlockProps } from '../types';
|
|
3
|
+
import { Button } from './Button/Button';
|
|
3
4
|
import { Icon } from './Icon/Icon';
|
|
4
5
|
|
|
5
6
|
export const SearchBar = JSX<UniBlockProps>(({ className, context }) => {
|
|
6
7
|
const { term, setTerm } = context.useSearch();
|
|
7
|
-
const [inputHasFocus, setInputHasFocus] = context.useState<boolean>(false);
|
|
8
8
|
return (
|
|
9
9
|
<form className={`relative ${className || ''}`}>
|
|
10
10
|
<div className="absolute rounded h-full flex items-center justify-center pl-4 max-w-[170px] gap-3.5 pointer-events-none">
|
|
@@ -22,28 +22,25 @@ export const SearchBar = JSX<UniBlockProps>(({ className, context }) => {
|
|
|
22
22
|
</div>
|
|
23
23
|
<input
|
|
24
24
|
id="search-bar-input"
|
|
25
|
-
className={
|
|
26
|
-
|
|
27
|
-
}
|
|
25
|
+
className={
|
|
26
|
+
'h-12 pl-12 w-full peer font-sans font-normal text-base text-black border border-solid rounded h-full box-border outline-none pr-[6%] border-main-divider focus:border-primary-text'
|
|
27
|
+
}
|
|
28
28
|
value={term}
|
|
29
29
|
onChange={(e) => setTerm(e.target.value)}
|
|
30
|
-
onFocus={(e) => setInputHasFocus(true)}
|
|
31
|
-
onBlur={(e) => setInputHasFocus(false)}
|
|
32
30
|
type="text"
|
|
33
31
|
name="search-bar-input"
|
|
34
32
|
/>
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
)}
|
|
33
|
+
<Button
|
|
34
|
+
version="primary"
|
|
35
|
+
text="Найти"
|
|
36
|
+
className="invisible peer-focus:visible absolute top-1 right-1"
|
|
37
|
+
onClick={(e) => {
|
|
38
|
+
e.preventDefault();
|
|
39
|
+
console.log('click');
|
|
40
|
+
}}
|
|
41
|
+
>
|
|
42
|
+
<div className="font-normal text-sm px-9 py-[9px]">Найти</div>
|
|
43
|
+
</Button>
|
|
47
44
|
</form>
|
|
48
45
|
);
|
|
49
46
|
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { BgColorVersion } from '../../model/BgColorVersion';
|
|
2
3
|
import type { LinkProps } from '../../model/LinkProps';
|
|
3
4
|
|
|
4
5
|
export interface TopItemContent extends LinkProps {
|
|
@@ -10,28 +11,54 @@ export interface TopItemProps extends TopItemContent {
|
|
|
10
11
|
flat?: boolean;
|
|
11
12
|
ariaLabel?: string;
|
|
12
13
|
onClick?: (ev: MouseEvent) => any;
|
|
14
|
+
bgColor?: BgColorVersion;
|
|
13
15
|
}
|
|
14
16
|
|
|
17
|
+
const TEXT_CLASSES = 'font-sans font-normal text-sm';
|
|
18
|
+
const LINK_CLASSES = 'inline-block border border-solid bg-transparent text-center no-underline';
|
|
19
|
+
|
|
15
20
|
export const TopItem = JSX<TopItemProps>(
|
|
16
|
-
({
|
|
17
|
-
|
|
18
|
-
|
|
21
|
+
({
|
|
22
|
+
className = '',
|
|
23
|
+
text,
|
|
24
|
+
href,
|
|
25
|
+
target,
|
|
26
|
+
active,
|
|
27
|
+
flat,
|
|
28
|
+
onClick,
|
|
29
|
+
children,
|
|
30
|
+
ariaLabel,
|
|
31
|
+
bgColor = 'bg-white',
|
|
32
|
+
}) => (
|
|
33
|
+
<a
|
|
34
|
+
className={`${getLinkClasses(bgColor, active, flat)} ${className}`}
|
|
35
|
+
href={href}
|
|
36
|
+
target={target}
|
|
37
|
+
onClick={onClick}
|
|
38
|
+
rel="noopener noreferrer"
|
|
39
|
+
aria-label={ariaLabel}
|
|
40
|
+
>
|
|
41
|
+
<span className={getTextClasses(bgColor, active, flat)}>{text || children}</span>
|
|
42
|
+
</a>
|
|
43
|
+
),
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
const getLinkClasses = (bgColor: BgColorVersion, active?: boolean, flat?: boolean) => {
|
|
47
|
+
let classes = 'border-transparent';
|
|
48
|
+
if (active) {
|
|
49
|
+
classes = `rounded-md ${bgColor === 'bg-white' ? 'border-primary-main' : 'border-white'}`;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return `${classes} ${LINK_CLASSES} ${flat ? '' : 'px-4 py-2'}`;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const getTextClasses = (bgColor: BgColorVersion, active?: boolean, flat?: boolean) => {
|
|
56
|
+
let classes = 'text-white';
|
|
57
|
+
if (bgColor === 'bg-white') {
|
|
58
|
+
classes = active
|
|
19
59
|
? 'text-primary-main'
|
|
20
60
|
: `${flat ? 'text-primary-text' : 'text-secondary-text'} hover:text-primary-main`;
|
|
61
|
+
}
|
|
21
62
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
className={`inline-block border border-solid bg-transparent text-center no-underline ${
|
|
25
|
-
flat ? '' : 'px-4 py-2'
|
|
26
|
-
} ${linkStyle} ${className || ''}`}
|
|
27
|
-
href={href}
|
|
28
|
-
target={target}
|
|
29
|
-
onClick={onClick}
|
|
30
|
-
rel="noopener noreferrer"
|
|
31
|
-
aria-label={ariaLabel}
|
|
32
|
-
>
|
|
33
|
-
<span className={`font-sans font-normal text-sm ${textStyle}`}>{text || children}</span>
|
|
34
|
-
</a>
|
|
35
|
-
);
|
|
36
|
-
},
|
|
37
|
-
);
|
|
63
|
+
return `${classes} ${TEXT_CLASSES}`;
|
|
64
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { adjustHref } from './adjustHref';
|
|
2
|
+
|
|
3
|
+
describe('adjustHref', () => {
|
|
4
|
+
it('should compute URL relative to some base URL', () => {
|
|
5
|
+
expect(
|
|
6
|
+
adjustHref('http://foo.ru/other/path', {
|
|
7
|
+
pathname: '/some/path',
|
|
8
|
+
href: 'http://foo.ru/some/path',
|
|
9
|
+
}),
|
|
10
|
+
).toBe('/other/path');
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it('should compute mobile URL for mobile pages', () => {
|
|
14
|
+
expect(
|
|
15
|
+
adjustHref('http://foo.ru/other/path', {
|
|
16
|
+
pathname: '/mobile/some/path',
|
|
17
|
+
href: 'http://foo.ru/mobile/some/path',
|
|
18
|
+
}),
|
|
19
|
+
).toBe('/mobile/other/path');
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it('should return nothing if nothing provided', () => {
|
|
23
|
+
expect(adjustHref(undefined, { pathname: '/mobile/some/path' })).toBe(undefined);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { getOrigin, isURL } from './url';
|
|
2
|
+
import { MOBILE_URL_PATH } from './withoutMobilePath';
|
|
3
|
+
|
|
4
|
+
export const adjustHref = (
|
|
5
|
+
href: string | undefined,
|
|
6
|
+
router: { pathname: string; href?: string },
|
|
7
|
+
) => {
|
|
8
|
+
if (!href) {
|
|
9
|
+
return href;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const relativeHref = toRelativeHref(href, router) || '';
|
|
13
|
+
const isMobilePage = router?.pathname.startsWith(MOBILE_URL_PATH);
|
|
14
|
+
return isMobilePage && !isURL(relativeHref) ? `${MOBILE_URL_PATH}${relativeHref}` : relativeHref;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const toRelativeHref = (href: string | undefined, router: { href?: string }) => {
|
|
18
|
+
if (!href) {
|
|
19
|
+
return href;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const origin = getOrigin(router?.href);
|
|
23
|
+
return origin ? href.replace(origin, '') || '/' : href;
|
|
24
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { maxBy } from './maxBy';
|
|
2
|
+
|
|
3
|
+
describe('maxBy', () => {
|
|
4
|
+
it('should return max value', () => {
|
|
5
|
+
expect(maxBy((_: number) => _)([1, 3, 2])).toBe(3);
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
it('should return max value with respect to discriminator', () => {
|
|
9
|
+
expect(maxBy((_: string) => _.length)(['123', '123456789', '123456'])).toBe('123456789');
|
|
10
|
+
});
|
|
11
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export const maxBy =
|
|
2
|
+
<Item, Value>(discriminator: (item: Item) => Value) =>
|
|
3
|
+
(list: Item[]): Item =>
|
|
4
|
+
list.reduceRight((a, b) => (discriminator(a) > discriminator(b) ? a : b));
|
|
5
|
+
|
|
6
|
+
export const minBy = <Item, Value>(discriminator: (item: Item) => Value) =>
|
|
7
|
+
maxBy((_: Item) => -discriminator(_));
|
package/src/utils/url.spec.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getOrigin, withoutQuery } from './url';
|
|
2
2
|
|
|
3
3
|
describe('url', () => {
|
|
4
4
|
describe('withoutQuery', () => {
|
|
@@ -14,40 +14,4 @@ describe('url', () => {
|
|
|
14
14
|
expect(getOrigin('http://foo.ru/other/path?first=1&second=2')).toBe('http://foo.ru');
|
|
15
15
|
});
|
|
16
16
|
});
|
|
17
|
-
|
|
18
|
-
describe('adjustHref', () => {
|
|
19
|
-
it('should compute URL relative to some base URL', () => {
|
|
20
|
-
expect(
|
|
21
|
-
adjustHref('http://foo.ru/other/path', {
|
|
22
|
-
pathname: '/some/path',
|
|
23
|
-
href: 'http://foo.ru/some/path',
|
|
24
|
-
}),
|
|
25
|
-
).toBe('/other/path');
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it('should compute mobile URL for mobile pages', () => {
|
|
29
|
-
expect(
|
|
30
|
-
adjustHref('http://foo.ru/other/path', {
|
|
31
|
-
pathname: '/mobile/some/path',
|
|
32
|
-
href: 'http://foo.ru/mobile/some/path',
|
|
33
|
-
}),
|
|
34
|
-
).toBe('/mobile/other/path');
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
it('should return nothing if nothing provided', () => {
|
|
38
|
-
expect(adjustHref(undefined, { pathname: '/mobile/some/path' })).toBe(undefined);
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
describe('toRelativeHref', () => {
|
|
43
|
-
it('should compute URL relative to some base URL', () => {
|
|
44
|
-
expect(toRelativeHref('http://foo.ru/other/path', { href: 'http://foo.ru/some/path' })).toBe(
|
|
45
|
-
'/other/path',
|
|
46
|
-
);
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
it('should return nothing if nothing provided', () => {
|
|
50
|
-
expect(toRelativeHref(undefined, {})).toBe(undefined);
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
17
|
});
|
package/src/utils/url.ts
CHANGED
|
@@ -1,52 +1,15 @@
|
|
|
1
|
-
export const MOBILE_URL_PATH = '/mobile';
|
|
2
|
-
|
|
3
1
|
export const isURL = (href?: string) => href?.includes('//');
|
|
4
2
|
|
|
5
|
-
export const isHrefActive = (
|
|
6
|
-
href: string | undefined,
|
|
7
|
-
router: { pathname?: string; href?: string },
|
|
8
|
-
cmp: (href: string, baseHref: string) => boolean = (href, baseHref) => href === baseHref,
|
|
9
|
-
) => {
|
|
10
|
-
return cmp(
|
|
11
|
-
withoutQuery(href),
|
|
12
|
-
withoutMobilePath(withoutQuery(isURL(href) ? router.href : router.pathname)),
|
|
13
|
-
);
|
|
14
|
-
};
|
|
15
|
-
|
|
16
3
|
export const withoutQuery = (href?: string) => (href || '').replace(/\/?\?.*/, '');
|
|
17
4
|
|
|
18
|
-
export const withoutMobilePath = (href?: string) => (href || '').replace(MOBILE_URL_PATH, '');
|
|
19
|
-
|
|
20
5
|
export const getOrigin = (href?: string) => {
|
|
21
|
-
if (!isURL(href)) {
|
|
6
|
+
if (!href || !isURL(href)) {
|
|
22
7
|
return undefined;
|
|
23
8
|
}
|
|
24
9
|
|
|
25
|
-
const url = href
|
|
10
|
+
const url = href;
|
|
26
11
|
const protoSeparator = '//';
|
|
27
12
|
const endOfProto = url.indexOf(protoSeparator);
|
|
28
13
|
const endOfOrigin = url.indexOf('/', endOfProto + protoSeparator.length);
|
|
29
14
|
return endOfOrigin !== -1 ? url.substring(0, endOfOrigin) : url;
|
|
30
15
|
};
|
|
31
|
-
|
|
32
|
-
export const adjustHref = (
|
|
33
|
-
href: string | undefined,
|
|
34
|
-
router: { pathname: string; href?: string },
|
|
35
|
-
) => {
|
|
36
|
-
if (!href) {
|
|
37
|
-
return href;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
const relativeHref = toRelativeHref(href, router)!;
|
|
41
|
-
const isMobilePage = router?.pathname.startsWith(MOBILE_URL_PATH);
|
|
42
|
-
return isMobilePage && !isURL(relativeHref) ? `${MOBILE_URL_PATH}${relativeHref}` : relativeHref;
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
export const toRelativeHref = (href: string | undefined, router: { href?: string }) => {
|
|
46
|
-
if (!href) {
|
|
47
|
-
return href;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const origin = getOrigin(router?.href);
|
|
51
|
-
return origin ? href.replace(origin, '') || '/' : href;
|
|
52
|
-
};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
-
exports.isSubItemActive = void 0;
|
|
3
|
-
const url_1 = require("../../utils/url");
|
|
4
|
-
function isSubItemActive(router) {
|
|
5
|
-
return (subItem) => (0, url_1.isHrefActive)(subItem.href, router);
|
|
6
|
-
}
|
|
7
|
-
exports.isSubItemActive = isSubItemActive;
|
|
8
|
-
//# sourceMappingURL=isSubItemActive.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isSubItemActive.js","sourceRoot":"","sources":["../../../src/components/Header/isSubItemActive.ts"],"names":[],"mappings":";;AACA,yCAA+C;AAG/C,SAAgB,eAAe,CAAC,MAAc;IAC5C,OAAO,CAAC,OAAkB,EAAW,EAAE,CAAC,IAAA,kBAAY,EAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC;AAFD,0CAEC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
-
exports.isTopItemActive = void 0;
|
|
3
|
-
const url_1 = require("../../utils/url");
|
|
4
|
-
function isTopItemActive(router) {
|
|
5
|
-
return (topItem) => (0, url_1.isHrefActive)(topItem.href, router, (topItemHref, baseHref) => baseHref.startsWith(topItemHref));
|
|
6
|
-
}
|
|
7
|
-
exports.isTopItemActive = isTopItemActive;
|
|
8
|
-
//# sourceMappingURL=isTopItemActive.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isTopItemActive.js","sourceRoot":"","sources":["../../../src/components/Header/isTopItemActive.ts"],"names":[],"mappings":";;AACA,yCAA+C;AAG/C,SAAgB,eAAe,CAAC,MAAc;IAC5C,OAAO,CAAC,OAAkB,EAAW,EAAE,CACrC,IAAA,kBAAY,EAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;AACpG,CAAC;AAHD,0CAGC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSitemap.js","sourceRoot":"","sources":["../../src/hooks/useSitemap.ts"],"names":[],"mappings":";;AAEA,wDAAqD;AAErD,SAAgB,UAAU,CAAC,YAA2B;IACpD,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC,CAAC;IAC1D,OAAO,IAAI,IAAI,EAAE,CAAC;AACpB,CAAC;AAHD,gCAGC;AAED,KAAK,UAAU,YAAY;IACzB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3C,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,mBAAmB,iCAAe,CAAC,OAAO,IAAI,SAAS,OAAO,CAAC;AACxE,CAAC"}
|
package/dist/mergeTopItems.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mergeTopItems.js","sourceRoot":"","sources":["../src/mergeTopItems.ts"],"names":[],"mappings":";;AAEA,MAAM,GAAG,GAAG,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC;AAEtE,MAAM,UAAU,GAAG,CAAsB,KAAW,EAAE,YAAkB,EAAO,EAAE,CAC/E,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAE5D,MAAM,QAAQ,GAAG,CAAsB,OAAa,EAAE,UAAgB,EAAO,EAAE,CAC7E,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3D,SAAgB,aAAa,CAAsB,IAAU,EAAE,KAAW;IACxE,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/D,CAAC;AAFD,sCAEC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isSubItemActive.js","sourceRoot":"","sources":["../../../src/components/Header/isSubItemActive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO,CAAC,OAAkB,EAAW,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isTopItemActive.js","sourceRoot":"","sources":["../../../src/components/Header/isTopItemActive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO,CAAC,OAAkB,EAAW,EAAE,CACrC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;AACpG,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSitemap.js","sourceRoot":"","sources":["../../src/hooks/useSitemap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,UAAU,UAAU,CAAC,YAA2B;IACpD,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC,CAAC;IAC1D,OAAO,IAAI,IAAI,EAAE,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,YAAY;IACzB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3C,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,mBAAmB,eAAe,CAAC,OAAO,IAAI,SAAS,OAAO,CAAC;AACxE,CAAC"}
|
package/lib/mergeTopItems.d.ts
DELETED
package/lib/mergeTopItems.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mergeTopItems.js","sourceRoot":"","sources":["../src/mergeTopItems.ts"],"names":[],"mappings":"AAEA,MAAM,GAAG,GAAG,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC;AAEtE,MAAM,UAAU,GAAG,CAAsB,KAAW,EAAE,YAAkB,EAAO,EAAE,CAC/E,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAE5D,MAAM,QAAQ,GAAG,CAAsB,OAAa,EAAE,UAAgB,EAAO,EAAE,CAC7E,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3D,MAAM,UAAU,aAAa,CAAsB,IAAU,EAAE,KAAW;IACxE,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { LinkProps } from '../../model/LinkProps';
|
|
2
|
-
import { isHrefActive } from '../../utils/url';
|
|
3
|
-
import type { Router } from '../ContentPage/ContentPageContext';
|
|
4
|
-
|
|
5
|
-
export function isSubItemActive(router: Router) {
|
|
6
|
-
return (subItem: LinkProps): boolean => isHrefActive(subItem.href, router);
|
|
7
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { LinkProps } from '../../model/LinkProps';
|
|
2
|
-
import { isHrefActive } from '../../utils/url';
|
|
3
|
-
import type { Router } from '../ContentPage/ContentPageContext';
|
|
4
|
-
|
|
5
|
-
export function isTopItemActive(router: Router) {
|
|
6
|
-
return (topItem: LinkProps): boolean =>
|
|
7
|
-
isHrefActive(topItem.href, router, (topItemHref, baseHref) => baseHref.startsWith(topItemHref));
|
|
8
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="m14.66 20.01-1.52 1.52c-.62.62-1.64.62-2.26 0l-1.52-1.52c-.26-.26-.77-.47-1.13-.47H6.08c-.88 0-1.6-.72-1.6-1.6v-2.15c0-.36-.21-.87-.47-1.13l-1.52-1.52c-.62-.62-.62-1.64 0-2.26l1.52-1.52c.26-.26.47-.77.47-1.13V6.08c0-.88.72-1.6 1.6-1.6M9.34 3.99l1.52-1.52c.62-.62 1.64-.62 2.26 0l1.52 1.52c.26.26.77.47 1.13.47h2.15c.88 0 1.6.72 1.6 1.6v2.15c0 .36.21.87.47 1.13l1.52 1.52c.62.62.62 1.64 0 2.26l-1.52 1.52c-.26.26-.47.77-.47 1.13v2.15c0 .88-.72 1.6-1.6 1.6" stroke="#1C1C1C" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="m9 15 6-6M14.495 14.5h.009M9.495 9.5h.008" stroke="#42AB44" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
<svg id="icon" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<path d="M14.6599 20.01L13.1399 21.53C12.5199 22.15 11.4999 22.15 10.8799 21.53L9.3599 20.01C9.0999 19.75 8.58992 19.54 8.22992 19.54H6.0799C5.1999 19.54 4.47992 18.8199 4.47992 17.9399V15.79C4.47992 15.43 4.26992 14.92 4.00992 14.66L2.4899 13.14C1.8699 12.52 1.8699 11.5 2.4899 10.88L4.00992 9.35999C4.26992 9.09999 4.47992 8.58998 4.47992 8.22998V6.07996C4.47992 5.19996 5.1999 4.47998 6.0799 4.47998" stroke="#1C1C1C" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
-
<path d="M9.33984 3.9899L10.8598 2.46988C11.4798 1.84988 12.4998 1.84988 13.1198 2.46988L14.6399 3.9899C14.8999 4.2499 15.4098 4.45987 15.7698 4.45987H17.9199C18.7999 4.45987 19.5198 5.17997 19.5198 6.05997V8.20987C19.5198 8.56987 19.7298 9.07988 19.9898 9.33988L21.5099 10.8599C22.1299 11.4799 22.1299 12.4999 21.5099 13.1199L19.9898 14.6399C19.7298 14.8999 19.5198 15.4099 19.5198 15.7699V17.92C19.5198 18.8 18.7999 19.5199 17.9199 19.5199" stroke="#1C1C1C" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
4
|
-
<path d="M9 15L15 9" stroke="#42AB44" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
5
|
-
<path d="M14.4945 14.5H14.5035" stroke="#42AB44" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
6
|
-
<path d="M9.49451 9.5H9.50349" stroke="#42AB44" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7
|
-
</svg>
|