@anywayseo/tools 5.5.0 → 5.6.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 (114) hide show
  1. package/dist/components/base/h1/index.d.ts +4 -0
  2. package/dist/components/base/h2/index.d.ts +4 -0
  3. package/dist/components/base/h3/index.d.ts +4 -0
  4. package/dist/components/base/index.d.ts +8 -0
  5. package/dist/components/base/link/index.d.ts +5 -1
  6. package/dist/components/base/link/utils.d.ts +1 -0
  7. package/dist/components/base/ol/index.d.ts +4 -0
  8. package/dist/components/base/p/index.d.ts +4 -0
  9. package/dist/components/base/ul/index.d.ts +4 -0
  10. package/dist/components/index.cjs +21 -9
  11. package/dist/components/index.d.ts +1 -3
  12. package/dist/components/index.mjs +27 -15
  13. package/dist/components/{contact-form → pages/contacts/contact-form}/index.d.ts +1 -1
  14. package/dist/components/pages/contacts/index.d.ts +3 -0
  15. package/dist/components/pages/cookie-policy/index.d.ts +3 -0
  16. package/dist/components/pages/index.d.ts +5 -0
  17. package/dist/components/pages/privacy-policy/index.d.ts +6 -0
  18. package/dist/components/pages/terms-and-conditions/index.d.ts +6 -0
  19. package/dist/hooks/index.cjs +1 -1
  20. package/dist/hooks/index.mjs +1 -1
  21. package/dist/i18n/index.cjs +10 -5
  22. package/dist/i18n/index.mjs +10 -5
  23. package/dist/i18n/resources/bg/index.d.ts +280 -0
  24. package/dist/i18n/resources/da/index.d.ts +280 -0
  25. package/dist/i18n/resources/de/index.d.ts +168 -0
  26. package/dist/i18n/resources/en/index.d.ts +168 -0
  27. package/dist/i18n/resources/fi/index.d.ts +280 -0
  28. package/dist/i18n/resources/fr/index.d.ts +168 -0
  29. package/dist/i18n/resources/it/index.d.ts +168 -0
  30. package/dist/i18n/resources/ka/index.d.ts +280 -0
  31. package/dist/i18n/resources/pt/index.d.ts +280 -0
  32. package/dist/i18n/resources/ru/index.d.ts +168 -0
  33. package/dist/{index-CAfBnNV6.js → index-5J1CqqcW.js} +1 -1
  34. package/dist/index-B1PwYYQt.mjs +24 -0
  35. package/dist/index-B6wz_B9_.js +145 -0
  36. package/dist/index-BEjKnOZA.mjs +28 -0
  37. package/dist/{index-BmaWfWLV.mjs → index-Bph7a3PR.mjs} +4 -0
  38. package/dist/index-C-ri0Fgy.js +23 -0
  39. package/dist/index-C2T70CMa.mjs +44 -0
  40. package/dist/index-COv56GyV.mjs +146 -0
  41. package/dist/{index-DZBLiQFh.js → index-CR5rM7at.js} +21 -6
  42. package/dist/index-CWMHJGbL.mjs +2957 -0
  43. package/dist/{index-BICcOaT7.js → index-CkRY_NXp.js} +0 -21
  44. package/dist/index-CyuHme_p.js +1059 -0
  45. package/dist/{index-BcFDxh8P.js → index-D4zJ5RBA.js} +13 -26
  46. package/dist/index-DDg_PkD2.js +27 -0
  47. package/dist/index-DMR4Ptkt.js +2956 -0
  48. package/dist/{index-tj12BA6U.mjs → index-DYS7zQW4.mjs} +1 -1
  49. package/dist/{index-At00w6EN.js → index-DgrIJs-a.js} +4 -0
  50. package/dist/{index-BCK4kr6V.mjs → index-Drz_7u2p.mjs} +3 -24
  51. package/dist/{index-8_-KtKsW.mjs → index-HLGPI9-S.mjs} +23 -8
  52. package/dist/{index-cEaX-HbN.mjs → index-JUwyHkmj.mjs} +222 -691
  53. package/dist/index.cjs +61 -45
  54. package/dist/index.d.ts +1 -0
  55. package/dist/index.mjs +52 -36
  56. package/dist/{components/layout → layout}/footer/navigation/index.d.ts +1 -1
  57. package/dist/layout/header/locale-switcher/icons/brazil/index.d.ts +2 -0
  58. package/dist/layout/header/locale-switcher/icons/bulgaria/index.d.ts +2 -0
  59. package/dist/layout/header/locale-switcher/icons/denmark/index.d.ts +2 -0
  60. package/dist/layout/header/locale-switcher/icons/finland/index.d.ts +2 -0
  61. package/dist/layout/header/locale-switcher/icons/france/index.d.ts +2 -0
  62. package/dist/layout/header/locale-switcher/icons/georgia/index.d.ts +2 -0
  63. package/dist/layout/header/locale-switcher/icons/germany/index.d.ts +2 -0
  64. package/dist/layout/header/locale-switcher/icons/globe/index.d.ts +2 -0
  65. package/dist/layout/header/locale-switcher/icons/index.d.ts +10 -0
  66. package/dist/layout/header/locale-switcher/icons/italy/index.d.ts +2 -0
  67. package/dist/layout/header/locale-switcher/icons/russia/index.d.ts +2 -0
  68. package/dist/{components/layout → layout}/header/locale-switcher/index.d.ts +1 -1
  69. package/dist/{components/layout → layout}/header/locale-switcher/utils.d.ts +1 -1
  70. package/dist/{components/layout → layout}/header/navigation/desktop/index.d.ts +1 -1
  71. package/dist/{components/layout → layout}/header/navigation/desktop/nav-list/index.d.ts +1 -1
  72. package/dist/{components/layout → layout}/header/navigation/index.d.ts +1 -1
  73. package/dist/{components/layout → layout}/header/navigation/mobile/index.d.ts +1 -1
  74. package/dist/{components/layout → layout}/header/navigation/mobile/nav-list/index.d.ts +1 -1
  75. package/dist/{components/layout → layout}/header/navigation/nav-link/index.d.ts +1 -1
  76. package/dist/{components/layout → layout}/hero/index.d.ts +1 -1
  77. package/dist/layout/index.cjs +596 -0
  78. package/dist/layout/index.mjs +597 -0
  79. package/dist/providers/index.cjs +2 -2
  80. package/dist/providers/index.mjs +2 -2
  81. package/dist/providers/mdx-provider/types.d.ts +3 -1
  82. package/dist/providers/mdx-provider/utils.d.ts +1 -2
  83. package/dist/types/components/strapi-component/index.d.ts +1 -1
  84. package/dist/types/i18n/index.d.ts +1 -1
  85. package/dist/utils/index.cjs +12 -10
  86. package/dist/utils/index.mjs +10 -8
  87. package/dist/utils/navigation/index.d.ts +1 -0
  88. package/package.json +7 -1
  89. package/dist/components/layout/header/locale-switcher/icons/earth/index.d.ts +0 -2
  90. package/dist/components/layout/header/locale-switcher/icons/france/index.d.ts +0 -2
  91. package/dist/components/layout/header/locale-switcher/icons/germany/index.d.ts +0 -2
  92. package/dist/components/layout/header/locale-switcher/icons/globe/index.d.ts +0 -2
  93. package/dist/components/layout/header/locale-switcher/icons/index.d.ts +0 -6
  94. package/dist/components/layout/header/locale-switcher/icons/italy/index.d.ts +0 -2
  95. package/dist/components/layout/header/locale-switcher/icons/russia/index.d.ts +0 -2
  96. package/dist/index-Bts2DBYS.mjs +0 -637
  97. package/dist/index-CJVr79Z2.js +0 -636
  98. package/dist/index-C_FekfFC.mjs +0 -57
  99. package/dist/index-D86anUPd.js +0 -1528
  100. /package/dist/components/{layout → base}/container/index.d.ts +0 -0
  101. /package/dist/components/{layout → base}/logo/index.d.ts +0 -0
  102. /package/dist/components/{not-found → pages/not-found}/index.d.ts +0 -0
  103. /package/dist/{components/layout → layout}/content/index.d.ts +0 -0
  104. /package/dist/{components/layout → layout}/footer/brand/index.d.ts +0 -0
  105. /package/dist/{components/layout → layout}/footer/copyright/index.d.ts +0 -0
  106. /package/dist/{components/layout → layout}/footer/disclaimer/index.d.ts +0 -0
  107. /package/dist/{components/layout → layout}/footer/extra/index.d.ts +0 -0
  108. /package/dist/{components/layout → layout}/footer/index.d.ts +0 -0
  109. /package/dist/{components/layout → layout}/header/brand/index.d.ts +0 -0
  110. /package/dist/{components/layout → layout}/header/index.d.ts +0 -0
  111. /package/dist/{components/layout → layout}/header/theme-toggler/index.d.ts +0 -0
  112. /package/dist/{components/layout → layout}/index.d.ts +0 -0
  113. /package/dist/{components/layout → layout}/main/index.d.ts +0 -0
  114. /package/dist/{components/layout → layout}/scroll-to-top/index.d.ts +0 -0
@@ -0,0 +1,597 @@
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import { Box, Divider, AbsoluteCenter, useColorModeValue, Text, SimpleGrid, Flex, Menu, MenuButton, Button, HStack, Icon, MenuList, MenuItem, Popover, PopoverTrigger, PopoverContent, List, ListItem, Stack, Collapse, useDisclosure, IconButton, Heading } from "@chakra-ui/react";
3
+ import "react-medium-image-zoom";
4
+ import { L as Link, a as useSiteContext, u as usePageContext } from "../index-HLGPI9-S.mjs";
5
+ import { useMemo, forwardRef, useState, useEffect } from "react";
6
+ import { useTranslation } from "react-i18next";
7
+ import { C as Container, a as Logo, b as SocialNetworks, L as LinkButton } from "../index-COv56GyV.mjs";
8
+ import "@mdx-js/react";
9
+ import "../index-BJRvnR8Q.mjs";
10
+ import "../index-CWMHJGbL.mjs";
11
+ import { ChevronDownIcon, ChevronRightIcon, CloseIcon, HamburgerIcon, ChevronUpIcon } from "@chakra-ui/icons";
12
+ import "i18next";
13
+ import "react-markdown";
14
+ import { g as getCurrentYear } from "../index-B1PwYYQt.mjs";
15
+ import { b as buildPath } from "../index-Bph7a3PR.mjs";
16
+ const Content = ({ children }) => {
17
+ return /* @__PURE__ */ jsx(Box, { as: "section", py: 4, children: /* @__PURE__ */ jsx(Container, { children }) });
18
+ };
19
+ const Brand$1 = ({ brand }) => {
20
+ return /* @__PURE__ */ jsxs(Box, { position: "relative", my: 2, py: 8, children: [
21
+ /* @__PURE__ */ jsx(Divider, {}),
22
+ /* @__PURE__ */ jsx(AbsoluteCenter, { display: "flex", bgColor: useColorModeValue("gray.50", "gray.900"), children: /* @__PURE__ */ jsx(Link, { to: "/", children: brand }) })
23
+ ] });
24
+ };
25
+ const Copyright = () => {
26
+ const { metadata } = useSiteContext();
27
+ const { t } = useTranslation("footer");
28
+ const siteName = metadata.name;
29
+ const lang = metadata.lang;
30
+ return /* @__PURE__ */ jsx(Text, { as: "small", colorScheme: "gray", display: "flex", align: "center", justifyContent: "center", children: t("copyright", { year: getCurrentYear(lang), siteName }) });
31
+ };
32
+ const Disclaimer = () => {
33
+ const { metadata } = useSiteContext();
34
+ const { t } = useTranslation("footer");
35
+ const siteName = metadata.name;
36
+ return /* @__PURE__ */ jsxs(Text, { as: "small", colorScheme: "gray", fontSize: "sm", children: [
37
+ /* @__PURE__ */ jsx(Text, { as: "span", fontWeight: "bold", color: "red.600", children: t("disclaimer.title") }),
38
+ t("disclaimer.description", { siteName })
39
+ ] });
40
+ };
41
+ const Extra = ({ children }) => {
42
+ return /* @__PURE__ */ jsx(Box, { as: "section", my: 2, children });
43
+ };
44
+ const Navigation$1 = ({ menu }) => {
45
+ return /* @__PURE__ */ jsx(
46
+ SimpleGrid,
47
+ {
48
+ as: "ul",
49
+ columns: { base: 1, sm: 2, md: 4 },
50
+ mt: 4,
51
+ mb: 6,
52
+ p: 0,
53
+ spacing: 4,
54
+ justifyItems: { base: "flex-start", md: "center" },
55
+ justifyContent: "space-between",
56
+ children: menu.map(({ slug, label }, index) => /* @__PURE__ */ jsx(Flex, { as: "li", children: /* @__PURE__ */ jsx(
57
+ Text,
58
+ {
59
+ as: Link,
60
+ to: slug,
61
+ fontSize: "md",
62
+ fontWeight: "semibold",
63
+ colorScheme: "gray",
64
+ _hover: { textDecoration: "none", color: "brand.400" },
65
+ children: label
66
+ }
67
+ ) }, index))
68
+ }
69
+ );
70
+ };
71
+ const Footer = () => {
72
+ const { metadata, navigation, config } = useSiteContext();
73
+ const { currentLocale } = usePageContext();
74
+ const menu = navigation.footer[currentLocale.code] ?? [];
75
+ const socialNetworks = metadata.socialNetworks ?? [];
76
+ const { extra, showDisclaimer = true } = (config == null ? void 0 : config.footer) ?? {};
77
+ const hasNavigation = !!menu.length;
78
+ const hasSocialNetworks = !!socialNetworks.length;
79
+ const hasExtra = !!extra;
80
+ return /* @__PURE__ */ jsx(
81
+ Box,
82
+ {
83
+ as: "footer",
84
+ bg: useColorModeValue("gray.50", "gray.900"),
85
+ color: useColorModeValue("gray.700", "gray.200"),
86
+ py: 4,
87
+ children: /* @__PURE__ */ jsxs(Container, { children: [
88
+ hasNavigation && /* @__PURE__ */ jsx(Navigation$1, { menu }),
89
+ hasExtra && /* @__PURE__ */ jsx(Extra, { children: extra }),
90
+ showDisclaimer && /* @__PURE__ */ jsx(Disclaimer, {}),
91
+ /* @__PURE__ */ jsx(Brand$1, { brand: /* @__PURE__ */ jsx(Logo, {}) }),
92
+ hasSocialNetworks && /* @__PURE__ */ jsx(SocialNetworks, { socialNetworks, justify: "center", my: 2 }),
93
+ /* @__PURE__ */ jsx(Copyright, {})
94
+ ] })
95
+ }
96
+ );
97
+ };
98
+ const Brand = ({ brand }) => {
99
+ return /* @__PURE__ */ jsx(Link, { to: "/", children: brand });
100
+ };
101
+ const BrazilIcon = (props) => {
102
+ return /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", width: "1em", height: "1em", ...props, children: [
103
+ /* @__PURE__ */ jsx("mask", { id: "circleFlagsBr0", children: /* @__PURE__ */ jsx("circle", { cx: "256", cy: "256", r: "256", fill: "#fff" }) }),
104
+ /* @__PURE__ */ jsxs("g", { mask: "url(#circleFlagsBr0)", children: [
105
+ /* @__PURE__ */ jsx("path", { fill: "#6da544", d: "M0 0h512v512H0z" }),
106
+ /* @__PURE__ */ jsx("path", { fill: "#ffda44", d: "M256 100.2L467.5 256L256 411.8L44.5 256z" }),
107
+ /* @__PURE__ */ jsx(
108
+ "path",
109
+ {
110
+ fill: "#eee",
111
+ d: "M174.2 221a87 87 0 0 0-7.2 36.3l162 49.8a88.5 88.5 0 0 0 14.4-34c-40.6-65.3-119.7-80.3-169.1-52z"
112
+ }
113
+ ),
114
+ /* @__PURE__ */ jsx(
115
+ "path",
116
+ {
117
+ fill: "#0052b4",
118
+ d: "M255.7 167a89 89 0 0 0-41.9 10.6a89 89 0 0 0-39.6 43.4a181.7 181.7 0 0 1 169.1 52.2a89 89 0 0 0-9-59.4a89 89 0 0 0-78.6-46.8M212 250.5a149 149 0 0 0-45 6.8a89 89 0 0 0 10.5 40.9a89 89 0 0 0 120.6 36.2a89 89 0 0 0 30.7-27.3A151 151 0 0 0 212 250.5"
119
+ }
120
+ )
121
+ ] })
122
+ ] });
123
+ };
124
+ const BulgariaIcon = (props) => {
125
+ return /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", width: "1em", height: "1em", ...props, children: [
126
+ /* @__PURE__ */ jsx("mask", { id: "circleFlagsBg0", children: /* @__PURE__ */ jsx("circle", { cx: "256", cy: "256", r: "256", fill: "#fff" }) }),
127
+ /* @__PURE__ */ jsxs("g", { mask: "url(#circleFlagsBg0)", children: [
128
+ /* @__PURE__ */ jsx("path", { fill: "#496e2d", d: "m0 166.9l258-31.7l254 31.7v178l-251.4 41.3L0 344.9z" }),
129
+ /* @__PURE__ */ jsx("path", { fill: "#eee", d: "M0 0h512v166.9H0z" }),
130
+ /* @__PURE__ */ jsx("path", { fill: "#d80027", d: "M0 344.9h512V512H0z" })
131
+ ] })
132
+ ] });
133
+ };
134
+ const DenmarkIcon = (props) => {
135
+ return /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", width: "1em", height: "1em", ...props, children: [
136
+ /* @__PURE__ */ jsx("mask", { id: "circleFlagsDk0", children: /* @__PURE__ */ jsx("circle", { cx: "256", cy: "256", r: "256", fill: "#fff" }) }),
137
+ /* @__PURE__ */ jsxs("g", { mask: "url(#circleFlagsDk0)", children: [
138
+ /* @__PURE__ */ jsx(
139
+ "path",
140
+ {
141
+ fill: "#d80027",
142
+ d: "M0 0h133.6l32.7 20.3l34-20.3H512v222.6L491.4 256l20.6 33.4V512H200.3l-31.7-20.4l-35 20.4H0V289.4l29.4-33L0 222.7z"
143
+ }
144
+ ),
145
+ /* @__PURE__ */ jsx("path", { fill: "#eee", d: "M133.6 0v222.6H0v66.8h133.6V512h66.7V289.4H512v-66.8H200.3V0z" })
146
+ ] })
147
+ ] });
148
+ };
149
+ const FinlandIcon = (props) => {
150
+ return /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", width: "1em", height: "1em", ...props, children: [
151
+ /* @__PURE__ */ jsx("mask", { id: "circleFlagsFi0", children: /* @__PURE__ */ jsx("circle", { cx: "256", cy: "256", r: "256", fill: "#fff" }) }),
152
+ /* @__PURE__ */ jsxs("g", { mask: "url(#circleFlagsFi0)", children: [
153
+ /* @__PURE__ */ jsx(
154
+ "path",
155
+ {
156
+ fill: "#eee",
157
+ d: "M0 0h133.6l35.3 16.7L200.3 0H512v222.6l-22.6 31.7l22.6 35.1V512H200.3l-32-19.8l-34.7 19.8H0V289.4l22.1-33.3L0 222.6z"
158
+ }
159
+ ),
160
+ /* @__PURE__ */ jsx("path", { fill: "#0052b4", d: "M133.6 0v222.6H0v66.8h133.6V512h66.7V289.4H512v-66.8H200.3V0z" })
161
+ ] })
162
+ ] });
163
+ };
164
+ const FranceIcon = (props) => {
165
+ return /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", width: "1em", height: "1em", ...props, children: [
166
+ /* @__PURE__ */ jsx("mask", { id: "circleFlagsFr0", children: /* @__PURE__ */ jsx("circle", { cx: "256", cy: "256", r: "256", fill: "#fff" }) }),
167
+ /* @__PURE__ */ jsxs("g", { mask: "url(#circleFlagsFr0)", children: [
168
+ /* @__PURE__ */ jsx("path", { fill: "#eee", d: "M167 0h178l25.9 252.3L345 512H167l-29.8-253.4z" }),
169
+ /* @__PURE__ */ jsx("path", { fill: "#0052b4", d: "M0 0h167v512H0z" }),
170
+ /* @__PURE__ */ jsx("path", { fill: "#d80027", d: "M345 0h167v512H345z" })
171
+ ] })
172
+ ] });
173
+ };
174
+ const GeorgiaIcon = (props) => {
175
+ return /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", width: "1em", height: "1em", ...props, children: [
176
+ /* @__PURE__ */ jsx("mask", { id: "circleFlagsGe0", children: /* @__PURE__ */ jsx("circle", { cx: "256", cy: "256", r: "256", fill: "#fff" }) }),
177
+ /* @__PURE__ */ jsxs("g", { mask: "url(#circleFlagsGe0)", children: [
178
+ /* @__PURE__ */ jsx(
179
+ "path",
180
+ {
181
+ fill: "#eee",
182
+ d: "M0 0h224l32 32l32-32h224v224l-32 32l32 32v224H288l-32-32l-32 32H0V288l32-32l-32-32Z"
183
+ }
184
+ ),
185
+ /* @__PURE__ */ jsx(
186
+ "path",
187
+ {
188
+ fill: "#d80027",
189
+ d: "M224 0v224H0v64h224v224h64V288h224v-64H288V0zm-96 96v32H96v32h32v32h32v-32h32v-32h-32V96zm224 0v32h-32v32h32v32h32v-32h32v-32h-32V96zM128 320v32H96v32h32v32h32v-32h32v-32h-32v-32zm224 0v32h-32v32h32v32h32v-32h32v-32h-32v-32z"
190
+ }
191
+ )
192
+ ] })
193
+ ] });
194
+ };
195
+ const GermanyIcon = (props) => {
196
+ return /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", width: "1em", height: "1em", ...props, children: [
197
+ /* @__PURE__ */ jsx("mask", { id: "circleFlagsDe0", children: /* @__PURE__ */ jsx("circle", { cx: "256", cy: "256", r: "256", fill: "#fff" }) }),
198
+ /* @__PURE__ */ jsxs("g", { mask: "url(#circleFlagsDe0)", children: [
199
+ /* @__PURE__ */ jsx("path", { fill: "#ffda44", d: "m0 345l256.7-25.5L512 345v167H0z" }),
200
+ /* @__PURE__ */ jsx("path", { fill: "#d80027", d: "m0 167l255-23l257 23v178H0z" }),
201
+ /* @__PURE__ */ jsx("path", { fill: "#333", d: "M0 0h512v167H0z" })
202
+ ] })
203
+ ] });
204
+ };
205
+ const GlobeIcon = (props) => {
206
+ return /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 496", width: "1em", height: "1em", ...props, children: /* @__PURE__ */ jsx(
207
+ "path",
208
+ {
209
+ fill: "currentColor",
210
+ d: "M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64m324.7-96c-28.6-67.9-86.5-120.4-158-141.6c24.4 33.8 41.2 84.7 50 141.6zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6M487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64M120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64m39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6M19.3 352c28.6 67.9 86.5 120.4 158 141.6c-24.4-33.8-41.2-84.7-50-141.6z"
211
+ }
212
+ ) });
213
+ };
214
+ const ItalyIcon = (props) => {
215
+ return /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", width: "1em", height: "1em", ...props, children: [
216
+ /* @__PURE__ */ jsx("mask", { id: "circleFlagsIt0", children: /* @__PURE__ */ jsx("circle", { cx: "256", cy: "256", r: "256", fill: "#fff" }) }),
217
+ /* @__PURE__ */ jsxs("g", { mask: "url(#circleFlagsIt0)", children: [
218
+ /* @__PURE__ */ jsx("path", { fill: "#eee", d: "M167 0h178l25.9 252.3L345 512H167l-29.8-253.4z" }),
219
+ /* @__PURE__ */ jsx("path", { fill: "#6da544", d: "M0 0h167v512H0z" }),
220
+ /* @__PURE__ */ jsx("path", { fill: "#d80027", d: "M345 0h167v512H345z" })
221
+ ] })
222
+ ] });
223
+ };
224
+ const RussiaIcon = (props) => {
225
+ return /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", width: "1em", height: "1em", ...props, children: [
226
+ /* @__PURE__ */ jsx("mask", { id: "circleFlagsRu0", children: /* @__PURE__ */ jsx("circle", { cx: "256", cy: "256", r: "256", fill: "#fff" }) }),
227
+ /* @__PURE__ */ jsxs("g", { mask: "url(#circleFlagsRu0)", children: [
228
+ /* @__PURE__ */ jsx("path", { fill: "#0052b4", d: "M512 170v172l-256 32L0 342V170l256-32z" }),
229
+ /* @__PURE__ */ jsx("path", { fill: "#eee", d: "M512 0v170H0V0Z" }),
230
+ /* @__PURE__ */ jsx("path", { fill: "#d80027", d: "M512 342v170H0V342Z" })
231
+ ] })
232
+ ] });
233
+ };
234
+ function getMappedIcon(code) {
235
+ let icon = GlobeIcon;
236
+ switch (code) {
237
+ case "pt-BR":
238
+ icon = BrazilIcon;
239
+ break;
240
+ case "bg":
241
+ case "bg-BG":
242
+ icon = BulgariaIcon;
243
+ break;
244
+ case "da":
245
+ case "da-DK":
246
+ case "en-DK":
247
+ icon = DenmarkIcon;
248
+ break;
249
+ case "fi":
250
+ case "fi-FI":
251
+ case "sv-FI":
252
+ case "en-FI":
253
+ icon = FinlandIcon;
254
+ break;
255
+ case "fr":
256
+ case "fr-FR":
257
+ icon = FranceIcon;
258
+ break;
259
+ case "ka":
260
+ case "ka-GE":
261
+ icon = GeorgiaIcon;
262
+ break;
263
+ case "de":
264
+ case "de-DE":
265
+ case "en-DE":
266
+ icon = GermanyIcon;
267
+ break;
268
+ case "it":
269
+ case "it-IT":
270
+ icon = ItalyIcon;
271
+ break;
272
+ case "ru":
273
+ case "ru-RU":
274
+ icon = RussiaIcon;
275
+ break;
276
+ case "en":
277
+ default:
278
+ icon = GlobeIcon;
279
+ break;
280
+ }
281
+ return icon;
282
+ }
283
+ const LocaleSwitcher = ({ currentLocale, locales }) => {
284
+ const localeCode = currentLocale.code;
285
+ const localeIcon = getMappedIcon(localeCode);
286
+ const localeMenuItems = useMemo(
287
+ () => locales.map((locale) => ({ ...locale, icon: getMappedIcon(locale.code) })),
288
+ [locales]
289
+ );
290
+ return /* @__PURE__ */ jsxs(Menu, { placement: "bottom-end", children: [
291
+ /* @__PURE__ */ jsx(
292
+ MenuButton,
293
+ {
294
+ as: Button,
295
+ rightIcon: /* @__PURE__ */ jsx(ChevronDownIcon, {}),
296
+ w: { base: 20, md: "28" },
297
+ px: { base: 1, md: 4 },
298
+ size: { base: "sm", md: "lg" },
299
+ children: /* @__PURE__ */ jsxs(HStack, { children: [
300
+ /* @__PURE__ */ jsx(Icon, { as: localeIcon }),
301
+ /* @__PURE__ */ jsx("span", { children: localeCode.toUpperCase() })
302
+ ] })
303
+ }
304
+ ),
305
+ /* @__PURE__ */ jsx(MenuList, { minW: "fit-content", children: localeMenuItems.map(({ code, name, icon }) => /* @__PURE__ */ jsx(MenuItem, { as: Link, to: `/${code}`, icon: /* @__PURE__ */ jsx(Icon, { as: icon, w: 4, h: 4 }), children: name }, code)) })
306
+ ] });
307
+ };
308
+ const NavLink = forwardRef(({ slug, label }, ref) => {
309
+ return /* @__PURE__ */ jsx(
310
+ Text,
311
+ {
312
+ ref,
313
+ as: Link,
314
+ to: slug,
315
+ p: 2,
316
+ fontWeight: "semibold",
317
+ _hover: { textDecoration: "none", color: "brand.400" },
318
+ children: label
319
+ }
320
+ );
321
+ });
322
+ NavLink.displayName = "NavLink";
323
+ const NavList$1 = ({ slug, label, children }) => {
324
+ const background = useColorModeValue("white", "gray.800");
325
+ const backgroundHover = useColorModeValue("brand.50", "gray.900");
326
+ return /* @__PURE__ */ jsxs(Popover, { trigger: "hover", placement: "bottom-start", children: [
327
+ /* @__PURE__ */ jsx(PopoverTrigger, { children: /* @__PURE__ */ jsx(
328
+ Text,
329
+ {
330
+ p: 2,
331
+ fontWeight: "semibold",
332
+ cursor: "pointer",
333
+ tabIndex: 0,
334
+ _hover: { textDecoration: "none", color: "brand.400" },
335
+ children: label
336
+ }
337
+ ) }),
338
+ /* @__PURE__ */ jsx(
339
+ PopoverContent,
340
+ {
341
+ p: 2,
342
+ border: 0,
343
+ minW: "sm",
344
+ maxH: 300,
345
+ overflowY: "auto",
346
+ rounded: "xl",
347
+ boxShadow: "xl",
348
+ bg: background,
349
+ children: /* @__PURE__ */ jsx(List, { spacing: 2, p: 0, children: children == null ? void 0 : children.map((child, index) => {
350
+ return /* @__PURE__ */ jsx(ListItem, { rounded: "md", _hover: { bg: backgroundHover }, children: /* @__PURE__ */ jsxs(Flex, { as: Link, to: buildPath(child.slug, slug), p: 2, role: "group", children: [
351
+ /* @__PURE__ */ jsx(Text, { fontWeight: 500, transition: "all .3s ease", _groupHover: { color: "brand.400" }, children: child.label }),
352
+ /* @__PURE__ */ jsx(
353
+ Flex,
354
+ {
355
+ flex: 1,
356
+ justify: "flex-end",
357
+ align: "center",
358
+ opacity: 0,
359
+ transition: "all .3s ease",
360
+ transform: "translateX(-10px)",
361
+ _groupHover: { opacity: 1, transform: "translateX(0)" },
362
+ children: /* @__PURE__ */ jsx(Icon, { as: ChevronRightIcon, color: "brand.400", w: 5, h: 5 })
363
+ }
364
+ )
365
+ ] }) }, index);
366
+ }) })
367
+ }
368
+ )
369
+ ] });
370
+ };
371
+ const DesktopNavigation = ({ menu }) => {
372
+ return /* @__PURE__ */ jsx(Flex, { as: "ul", role: "list", gap: 2, p: 0, display: { base: "none", md: "flex" }, children: menu.map((item, index) => {
373
+ var _a;
374
+ return /* @__PURE__ */ jsx(Flex, { as: "li", role: "listitem", children: ((_a = item.children) == null ? void 0 : _a.length) ? /* @__PURE__ */ jsx(NavList$1, { ...item }) : /* @__PURE__ */ jsx(NavLink, { ...item }) }, index);
375
+ }) });
376
+ };
377
+ const CHEVRON_DOWN_ICON_SIZE = "1.5rem";
378
+ const NavList = ({ slug, label, children, isExpanded, onExpand }) => {
379
+ return /* @__PURE__ */ jsxs(Stack, { flex: 1, children: [
380
+ /* @__PURE__ */ jsxs(
381
+ Flex,
382
+ {
383
+ as: "button",
384
+ p: 2,
385
+ pr: "3px",
386
+ align: "center",
387
+ justifyContent: "space-between",
388
+ _hover: { textDecoration: "none", color: "brand.400" },
389
+ onClick: onExpand,
390
+ children: [
391
+ /* @__PURE__ */ jsx(Text, { isTruncated: true, fontWeight: 600, children: label }),
392
+ /* @__PURE__ */ jsx(
393
+ ChevronDownIcon,
394
+ {
395
+ w: CHEVRON_DOWN_ICON_SIZE,
396
+ h: CHEVRON_DOWN_ICON_SIZE,
397
+ transform: isExpanded ? "rotate(180deg)" : "",
398
+ transition: "all .25s ease-in-out"
399
+ }
400
+ )
401
+ ]
402
+ }
403
+ ),
404
+ /* @__PURE__ */ jsx(Collapse, { in: isExpanded, transition: { enter: { ease: "easeIn" }, exit: { duration: 0.2 } }, children: /* @__PURE__ */ jsx(
405
+ List,
406
+ {
407
+ ml: 2,
408
+ pl: 0,
409
+ maxH: 300,
410
+ overflowY: "auto",
411
+ borderLeft: 1,
412
+ borderStyle: "solid",
413
+ borderColor: useColorModeValue("gray.200", "gray.700"),
414
+ children: children == null ? void 0 : children.map((child, index) => /* @__PURE__ */ jsx(Flex, { as: "li", role: "listitem", children: /* @__PURE__ */ jsx(Text, { as: Link, to: buildPath(child.slug, slug), p: 2, fontSize: "sm", children: child.label }) }, index))
415
+ }
416
+ ) })
417
+ ] });
418
+ };
419
+ const CLOSE_ICON_SIZE = "0.75rem";
420
+ const HAMBURGER_ICON_SIZE = "1rem";
421
+ const MobileNavigation = ({ menu }) => {
422
+ const [expanded, setExpanded] = useState(null);
423
+ const { isOpen, onToggle } = useDisclosure();
424
+ const background = useColorModeValue("gray.50", "gray.900");
425
+ function handleExpand(index) {
426
+ return () => {
427
+ setExpanded((prev) => prev === index ? null : index);
428
+ };
429
+ }
430
+ function handleClick() {
431
+ setExpanded(null);
432
+ onToggle();
433
+ }
434
+ return /* @__PURE__ */ jsxs(Box, { display: { base: "block", md: "none" }, children: [
435
+ /* @__PURE__ */ jsx(
436
+ IconButton,
437
+ {
438
+ icon: isOpen ? /* @__PURE__ */ jsx(CloseIcon, { w: CLOSE_ICON_SIZE, h: CLOSE_ICON_SIZE }) : /* @__PURE__ */ jsx(HamburgerIcon, { w: HAMBURGER_ICON_SIZE, h: HAMBURGER_ICON_SIZE }),
439
+ size: "sm",
440
+ variant: "ghost",
441
+ "aria-label": `${isOpen ? "Close" : "Open"} navigation menu`,
442
+ "aria-expanded": isOpen,
443
+ onClick: handleClick
444
+ }
445
+ ),
446
+ /* @__PURE__ */ jsx(Collapse, { in: isOpen, animateOpacity: true, children: /* @__PURE__ */ jsx(Box, { position: "absolute", top: 16, left: 0, right: 0, w: "100vw", px: 2, children: /* @__PURE__ */ jsx(
447
+ List,
448
+ {
449
+ spacing: 2,
450
+ p: 2,
451
+ boxShadow: "md",
452
+ borderWidth: "1px",
453
+ borderColor: useColorModeValue("gray.200", "gray.700"),
454
+ borderRadius: "md",
455
+ bg: background,
456
+ children: menu.map((item, index) => {
457
+ var _a;
458
+ return /* @__PURE__ */ jsx(Flex, { as: "li", role: "listitem", children: ((_a = item.children) == null ? void 0 : _a.length) ? /* @__PURE__ */ jsx(NavList, { ...item, isExpanded: index === expanded, onExpand: handleExpand(index) }) : /* @__PURE__ */ jsx(NavLink, { ...item }) }, index);
459
+ })
460
+ }
461
+ ) }) })
462
+ ] });
463
+ };
464
+ const Navigation = ({ menu }) => {
465
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
466
+ /* @__PURE__ */ jsx(DesktopNavigation, { menu }),
467
+ /* @__PURE__ */ jsx(MobileNavigation, { menu })
468
+ ] });
469
+ };
470
+ const Header = () => {
471
+ var _a;
472
+ const { navigation, localization, config } = useSiteContext();
473
+ const { currentLocale } = usePageContext();
474
+ const locales = localization.locales;
475
+ const menu = navigation.header[currentLocale.code] ?? [];
476
+ const toolbar = (_a = config == null ? void 0 : config.header) == null ? void 0 : _a.toolbar;
477
+ const isMultiLanguage = locales.length > 1;
478
+ const hasNavigation = !!menu.length;
479
+ const hasToolbar = !!toolbar || isMultiLanguage;
480
+ return /* @__PURE__ */ jsx(
481
+ Box,
482
+ {
483
+ as: "header",
484
+ position: "sticky",
485
+ top: 0,
486
+ bg: useColorModeValue("white", "gray.900"),
487
+ color: useColorModeValue("gray.700", "gray.200"),
488
+ boxShadow: "sm",
489
+ zIndex: 100,
490
+ children: /* @__PURE__ */ jsx(Container, { children: /* @__PURE__ */ jsxs(Flex, { as: "nav", gap: 2, py: 2, children: [
491
+ /* @__PURE__ */ jsx(Brand, { brand: /* @__PURE__ */ jsx(Logo, {}) }),
492
+ (hasNavigation || hasToolbar) && /* @__PURE__ */ jsxs(
493
+ Flex,
494
+ {
495
+ as: "section",
496
+ flex: 1,
497
+ flexDir: { base: "row-reverse", md: "row" },
498
+ justifyContent: "end",
499
+ align: "center",
500
+ gap: 2,
501
+ children: [
502
+ hasNavigation && /* @__PURE__ */ jsx(Flex, { flex: { base: 0, md: 1 }, children: /* @__PURE__ */ jsx(Navigation, { menu }) }),
503
+ hasToolbar && /* @__PURE__ */ jsxs(Flex, { gap: 2, flex: { base: 1, md: 0 }, justifyContent: "flex-end", children: [
504
+ !!toolbar && toolbar,
505
+ isMultiLanguage && /* @__PURE__ */ jsx(LocaleSwitcher, { currentLocale, locales })
506
+ ] })
507
+ ]
508
+ }
509
+ )
510
+ ] }) })
511
+ }
512
+ );
513
+ };
514
+ const Hero = ({ title, subtitle, content, link, image }) => {
515
+ return /* @__PURE__ */ jsx(Box, { as: "section", bg: "gray.900", children: /* @__PURE__ */ jsx(Container, { children: /* @__PURE__ */ jsxs(Flex, { direction: { base: "column", md: "row" }, children: [
516
+ /* @__PURE__ */ jsx(Flex, { align: "center", justify: { base: "center", md: "flex-start" }, flex: 1, py: 8, pe: 8, children: /* @__PURE__ */ jsxs(Stack, { spacing: 6, w: "full", maxW: "lg", children: [
517
+ /* @__PURE__ */ jsxs(Heading, { as: "h1", fontSize: { base: "3xl", md: "4xl", lg: "5xl" }, children: [
518
+ /* @__PURE__ */ jsxs(Text, { as: "span", display: "block", children: [
519
+ title,
520
+ " —"
521
+ ] }),
522
+ /* @__PURE__ */ jsx(Text, { as: "span", display: "block", color: "brand.400", children: subtitle })
523
+ ] }),
524
+ /* @__PURE__ */ jsx(Text, { fontSize: { base: "md", lg: "lg" }, color: "gray.500", children: content }),
525
+ !!link && /* @__PURE__ */ jsx(Flex, { direction: { base: "column", md: "row" }, children: /* @__PURE__ */ jsx(LinkButton, { ...link, size: "md", textDecoration: "none" }) })
526
+ ] }) }),
527
+ image && /* @__PURE__ */ jsx(Flex, { display: { base: "none", md: "flex" }, flex: 1, children: image })
528
+ ] }) }) });
529
+ };
530
+ const Main = ({ children }) => {
531
+ return /* @__PURE__ */ jsx(
532
+ Flex,
533
+ {
534
+ as: "main",
535
+ direction: "column",
536
+ flexGrow: 1,
537
+ bg: useColorModeValue("white", "gray.800"),
538
+ color: useColorModeValue("gray.700", "gray.200"),
539
+ children
540
+ }
541
+ );
542
+ };
543
+ const ScrollToTop = () => {
544
+ const [isVisible, setIsVisible] = useState(false);
545
+ useEffect(() => {
546
+ const toggleVisibility = () => {
547
+ setIsVisible(window.scrollY > 300);
548
+ };
549
+ window.addEventListener("scroll", toggleVisibility);
550
+ return () => {
551
+ window.removeEventListener("scroll", toggleVisibility);
552
+ };
553
+ }, []);
554
+ function handleClick() {
555
+ window.scrollTo({
556
+ top: 0,
557
+ behavior: "smooth"
558
+ });
559
+ }
560
+ return /* @__PURE__ */ jsx(
561
+ Box,
562
+ {
563
+ position: "fixed",
564
+ bottom: { base: 4, md: 8, lg: 16 },
565
+ right: { base: 4, md: 8, lg: 16 },
566
+ zIndex: "1000",
567
+ opacity: isVisible ? 1 : 0,
568
+ transform: isVisible ? "translateY(0)" : "translateY(0.5rem)",
569
+ transition: "opacity 0.4s ease, transform 0.4s ease",
570
+ pointerEvents: isVisible ? "auto" : "none",
571
+ children: /* @__PURE__ */ jsx(
572
+ IconButton,
573
+ {
574
+ "aria-label": "Scroll to top",
575
+ icon: /* @__PURE__ */ jsx(ChevronUpIcon, { w: 6, h: 6 }),
576
+ size: "lg",
577
+ shadow: "lg",
578
+ colorScheme: "brand",
579
+ isRound: true,
580
+ onClick: handleClick
581
+ }
582
+ )
583
+ }
584
+ );
585
+ };
586
+ const Layout = ({ children }) => {
587
+ const content = typeof children === "function" ? children({ Hero, Content }) : /* @__PURE__ */ jsx(Content, { children });
588
+ return /* @__PURE__ */ jsxs(Stack, { spacing: 0, position: "relative", w: "100%", minH: "100dvh", children: [
589
+ /* @__PURE__ */ jsx(Header, {}),
590
+ /* @__PURE__ */ jsx(Main, { children: content }),
591
+ /* @__PURE__ */ jsx(Footer, {}),
592
+ /* @__PURE__ */ jsx(ScrollToTop, {})
593
+ ] });
594
+ };
595
+ export {
596
+ Layout as default
597
+ };
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const index = require("../index-BcFDxh8P.js");
4
- const index$1 = require("../index-DZBLiQFh.js");
3
+ const index = require("../index-D4zJ5RBA.js");
4
+ const index$1 = require("../index-CR5rM7at.js");
5
5
  exports.MdxProvider = index.MdxProvider;
6
6
  exports.PageProvider = index$1.PageProvider;
7
7
  exports.SiteProvider = index$1.SiteProvider;
@@ -1,5 +1,5 @@
1
- import { M } from "../index-C_FekfFC.mjs";
2
- import { P, S, u, a } from "../index-8_-KtKsW.mjs";
1
+ import { M } from "../index-C2T70CMa.mjs";
2
+ import { P, S, u, a } from "../index-HLGPI9-S.mjs";
3
3
  export {
4
4
  M as MdxProvider,
5
5
  P as PageProvider,
@@ -1,3 +1,5 @@
1
- import { DetailedHTMLProps, HTMLAttributes, ReactElement } from 'react';
1
+ import { AnchorHTMLAttributes, DetailedHTMLProps, HTMLAttributes, ImgHTMLAttributes, ReactElement } from 'react';
2
2
  export type Props<E extends HTMLElement, A extends HTMLAttributes<E> = HTMLAttributes<E>> = DetailedHTMLProps<A, E>;
3
3
  export type ComponentCallback<T extends HTMLElement> = (props: Props<T>) => ReactElement;
4
+ export type LinkProps = Props<HTMLAnchorElement, AnchorHTMLAttributes<HTMLAnchorElement>>;
5
+ export type ImageProps = Props<HTMLImageElement, ImgHTMLAttributes<HTMLImageElement>>;
@@ -1,3 +1,2 @@
1
- import { ComponentCallback, Props } from './types';
2
- export declare function omitProps<T extends HTMLElement>(props: Props<T>, omittedKeys: string[]): Props<T>;
1
+ import { ComponentCallback } from './types';
3
2
  export declare function preprocessProps<T extends HTMLElement>(callback: ComponentCallback<T>): ComponentCallback<T>;
@@ -1,4 +1,4 @@
1
- export type StrapiComponentType = 'STRAPI__COMPONENT_CONTENT_FAQ' | 'STRAPI__COMPONENT_CONTENT_FEATURES' | 'STRAPI__COMPONENT_CONTENT_GAME_CARDS' | 'STRAPI__COMPONENT_CONTENT_GAME_CARD_TABS' | 'STRAPI__COMPONENT_CONTENT_GAME_DEMO' | 'STRAPI__COMPONENT_CONTENT_GAME_INFO' | 'STRAPI__COMPONENT_CONTENT_HOW_TO' | 'STRAPI__COMPONENT_CONTENT_LIST' | 'STRAPI__COMPONENT_CONTENT_MEDIA' | 'STRAPI__COMPONENT_CONTENT_PROS_CONS' | 'STRAPI__COMPONENT_CONTENT_RICH_TEXT' | 'STRAPI__COMPONENT_CONTENT_TABLE' | 'STRAPI__COMPONENT_CONTENT_TIP';
1
+ export type StrapiComponentType = 'STRAPI__COMPONENT_CONTENT_CONTACTS_PAGE' | 'STRAPI__COMPONENT_CONTENT_COOKIE_POLICY_PAGE' | 'STRAPI__COMPONENT_CONTENT_FAQ' | 'STRAPI__COMPONENT_CONTENT_FEATURES' | 'STRAPI__COMPONENT_CONTENT_GAME_CARDS' | 'STRAPI__COMPONENT_CONTENT_GAME_CARD_TABS' | 'STRAPI__COMPONENT_CONTENT_GAME_DEMO' | 'STRAPI__COMPONENT_CONTENT_GAME_INFO' | 'STRAPI__COMPONENT_CONTENT_HOW_TO' | 'STRAPI__COMPONENT_CONTENT_LIST' | 'STRAPI__COMPONENT_CONTENT_MEDIA' | 'STRAPI__COMPONENT_CONTENT_PRIVACY_POLICY_PAGE' | 'STRAPI__COMPONENT_CONTENT_PROS_CONS' | 'STRAPI__COMPONENT_CONTENT_RICH_TEXT' | 'STRAPI__COMPONENT_CONTENT_TABLE' | 'STRAPI__COMPONENT_CONTENT_TERMS_CONDITIONS_PAGE' | 'STRAPI__COMPONENT_CONTENT_TIP';
2
2
  export interface IStrapiComponentFragment {
3
3
  __typename: StrapiComponentType;
4
4
  [prop: string]: unknown;
@@ -1,4 +1,4 @@
1
- export type LanguageCode = 'en' | 'it' | 'de' | 'fr' | 'ru';
1
+ export type LanguageCode = 'en' | 'it' | 'de' | 'fr' | 'ru' | 'pt' | 'ka' | 'fi' | 'bg' | 'da';
2
2
  export type Currency = 'USD' | 'EUR' | 'GBP' | 'RUB';
3
3
  type LocaleCode = string;
4
4
  export interface ILocale {