@anywayseo/tools 5.5.0 → 5.7.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 (156) hide show
  1. package/dist/components/action-button/index.d.ts +5 -0
  2. package/dist/components/article-card/index.d.ts +7 -0
  3. package/dist/components/article-card-grid/index.d.ts +7 -0
  4. package/dist/components/article-info-card/index.d.ts +5 -0
  5. package/dist/components/base/article-meta/index.d.ts +7 -0
  6. package/dist/components/base/article-meta/item/index.d.ts +7 -0
  7. package/dist/components/base/copy-text/index.d.ts +6 -0
  8. package/dist/components/base/grid/index.d.ts +2 -4
  9. package/dist/components/base/h1/index.d.ts +4 -0
  10. package/dist/components/base/h2/index.d.ts +4 -0
  11. package/dist/components/base/h3/index.d.ts +4 -0
  12. package/dist/components/base/index.d.ts +11 -0
  13. package/dist/components/base/link/index.d.ts +5 -1
  14. package/dist/components/base/link/utils.d.ts +1 -0
  15. package/dist/components/base/ol/index.d.ts +4 -0
  16. package/dist/components/base/p/index.d.ts +4 -0
  17. package/dist/components/base/rating/index.d.ts +10 -0
  18. package/dist/components/base/ul/index.d.ts +4 -0
  19. package/dist/components/bonus-card-grid/index.d.ts +2 -4
  20. package/dist/components/casino-table/index.d.ts +8 -0
  21. package/dist/components/casino-table/row/casino-actions/index.d.ts +8 -0
  22. package/dist/components/casino-table/row/casino-bonus/index.d.ts +8 -0
  23. package/dist/components/casino-table/row/casino-info/index.d.ts +7 -0
  24. package/dist/components/casino-table/row/casino-info/item/index.d.ts +7 -0
  25. package/dist/components/casino-table/row/casino-info/utils.d.ts +2 -0
  26. package/dist/components/casino-table/row/casino-license/index.d.ts +5 -0
  27. package/dist/components/casino-table/row/casino-logo/index.d.ts +9 -0
  28. package/dist/components/casino-table/row/casino-name/index.d.ts +8 -0
  29. package/dist/components/casino-table/row/cell/index.d.ts +7 -0
  30. package/dist/components/casino-table/row/index.d.ts +7 -0
  31. package/dist/components/feature-card-grid/index.d.ts +2 -4
  32. package/dist/components/game-card-grid/index.d.ts +2 -4
  33. package/dist/components/game-demo/content/index.d.ts +1 -1
  34. package/dist/components/game-demo/index.d.ts +2 -2
  35. package/dist/components/game-demo/preview/alert/index.d.ts +3 -0
  36. package/dist/components/game-demo/preview/index.d.ts +2 -1
  37. package/dist/components/index.cjs +30 -9
  38. package/dist/components/index.d.ts +7 -3
  39. package/dist/components/index.mjs +44 -23
  40. package/dist/components/informer/index.d.ts +9 -0
  41. package/dist/components/informer/utils.d.ts +5 -0
  42. package/dist/components/{contact-form → pages/contacts/contact-form}/index.d.ts +1 -1
  43. package/dist/components/pages/contacts/index.d.ts +3 -0
  44. package/dist/components/pages/cookie-policy/index.d.ts +3 -0
  45. package/dist/components/pages/index.d.ts +5 -0
  46. package/dist/components/pages/privacy-policy/index.d.ts +6 -0
  47. package/dist/components/pages/terms-and-conditions/index.d.ts +6 -0
  48. package/dist/components/tip/index.d.ts +3 -0
  49. package/dist/hooks/index.cjs +2 -2
  50. package/dist/hooks/index.mjs +2 -2
  51. package/dist/i18n/index.cjs +10 -5
  52. package/dist/i18n/index.mjs +10 -5
  53. package/dist/i18n/resources/bg/index.d.ts +331 -0
  54. package/dist/i18n/resources/da/index.d.ts +331 -0
  55. package/dist/i18n/resources/de/index.d.ts +219 -0
  56. package/dist/i18n/resources/en/index.d.ts +219 -0
  57. package/dist/i18n/resources/fi/index.d.ts +331 -0
  58. package/dist/i18n/resources/fr/index.d.ts +219 -0
  59. package/dist/i18n/resources/it/index.d.ts +219 -0
  60. package/dist/i18n/resources/ka/index.d.ts +331 -0
  61. package/dist/i18n/resources/pt/index.d.ts +331 -0
  62. package/dist/i18n/resources/ru/index.d.ts +219 -0
  63. package/dist/index-B-k9oWE7.js +3552 -0
  64. package/dist/{index-D86anUPd.js → index-B71VkIfX.js} +426 -726
  65. package/dist/index-BEjKnOZA.mjs +28 -0
  66. package/dist/index-BTpEZIok.js +401 -0
  67. package/dist/index-BeJTy4iY.mjs +26 -0
  68. package/dist/index-BfITsKAr.js +25 -0
  69. package/dist/{index-BmaWfWLV.mjs → index-Bph7a3PR.mjs} +4 -0
  70. package/dist/{index-BCK4kr6V.mjs → index-C7z5qqm_.mjs} +3 -26
  71. package/dist/{index-tj12BA6U.mjs → index-CB0JfZMx.mjs} +1 -1
  72. package/dist/{index-cEaX-HbN.mjs → index-CEqTLcAR.mjs} +427 -727
  73. package/dist/index-CVN8I7r9.mjs +3553 -0
  74. package/dist/{index-CAfBnNV6.js → index-D15SAjJc.js} +1 -1
  75. package/dist/index-DDg_PkD2.js +27 -0
  76. package/dist/{index-BzbpMLDD.mjs → index-DHURrUMW.mjs} +1 -1
  77. package/dist/{index-At00w6EN.js → index-DgrIJs-a.js} +4 -0
  78. package/dist/index-FfZIjQy3.mjs +45 -0
  79. package/dist/index-Lln67Kfn.mjs +402 -0
  80. package/dist/{index-DZBLiQFh.js → index-QPgJfbrC.js} +52 -36
  81. package/dist/{index-BcFDxh8P.js → index-TxqSZvgf.js} +15 -27
  82. package/dist/{index-8_-KtKsW.mjs → index-ksqN4RPm.mjs} +50 -34
  83. package/dist/{index-WFgDSB1A.js → index-ma-iV7GU.js} +1 -1
  84. package/dist/{index-BICcOaT7.js → index-qR3kVjjs.js} +0 -23
  85. package/dist/index.cjs +73 -45
  86. package/dist/index.d.ts +1 -0
  87. package/dist/index.mjs +75 -47
  88. package/dist/{components/layout → layout}/footer/navigation/index.d.ts +1 -1
  89. package/dist/layout/header/locale-switcher/icons/brazil/index.d.ts +2 -0
  90. package/dist/layout/header/locale-switcher/icons/bulgaria/index.d.ts +2 -0
  91. package/dist/layout/header/locale-switcher/icons/denmark/index.d.ts +2 -0
  92. package/dist/layout/header/locale-switcher/icons/finland/index.d.ts +2 -0
  93. package/dist/layout/header/locale-switcher/icons/france/index.d.ts +2 -0
  94. package/dist/layout/header/locale-switcher/icons/georgia/index.d.ts +2 -0
  95. package/dist/layout/header/locale-switcher/icons/germany/index.d.ts +2 -0
  96. package/dist/layout/header/locale-switcher/icons/globe/index.d.ts +2 -0
  97. package/dist/layout/header/locale-switcher/icons/index.d.ts +10 -0
  98. package/dist/layout/header/locale-switcher/icons/italy/index.d.ts +2 -0
  99. package/dist/layout/header/locale-switcher/icons/russia/index.d.ts +2 -0
  100. package/dist/{components/layout → layout}/header/locale-switcher/index.d.ts +1 -1
  101. package/dist/{components/layout → layout}/header/locale-switcher/utils.d.ts +1 -1
  102. package/dist/{components/layout → layout}/header/navigation/desktop/index.d.ts +1 -1
  103. package/dist/{components/layout → layout}/header/navigation/desktop/nav-list/index.d.ts +1 -1
  104. package/dist/{components/layout → layout}/header/navigation/index.d.ts +1 -1
  105. package/dist/{components/layout → layout}/header/navigation/mobile/index.d.ts +1 -1
  106. package/dist/{components/layout → layout}/header/navigation/mobile/nav-list/index.d.ts +1 -1
  107. package/dist/{components/layout → layout}/header/navigation/nav-link/index.d.ts +1 -1
  108. package/dist/{components/layout → layout}/hero/index.d.ts +1 -1
  109. package/dist/layout/index.cjs +597 -0
  110. package/dist/layout/index.mjs +598 -0
  111. package/dist/providers/index.cjs +2 -2
  112. package/dist/providers/index.mjs +2 -2
  113. package/dist/providers/mdx-provider/types.d.ts +3 -1
  114. package/dist/providers/mdx-provider/utils.d.ts +1 -2
  115. package/dist/types/components/article-card/index.d.ts +9 -0
  116. package/dist/types/components/button/index.d.ts +1 -1
  117. package/dist/types/components/casino/index.d.ts +32 -0
  118. package/dist/types/components/casino-info/index.d.ts +12 -0
  119. package/dist/types/components/common/index.d.ts +1 -1
  120. package/dist/types/components/game-info/index.d.ts +4 -8
  121. package/dist/types/components/grid/index.d.ts +4 -0
  122. package/dist/types/components/index.d.ts +4 -0
  123. package/dist/types/components/informer/index.d.ts +5 -0
  124. package/dist/types/components/strapi-component/index.d.ts +1 -1
  125. package/dist/types/content/article/index.d.ts +12 -0
  126. package/dist/types/content/index.d.ts +1 -0
  127. package/dist/types/i18n/index.d.ts +2 -2
  128. package/dist/utils/index.cjs +15 -13
  129. package/dist/utils/index.mjs +10 -8
  130. package/dist/utils/navigation/index.d.ts +1 -0
  131. package/package.json +7 -1
  132. package/dist/components/layout/header/locale-switcher/icons/earth/index.d.ts +0 -2
  133. package/dist/components/layout/header/locale-switcher/icons/france/index.d.ts +0 -2
  134. package/dist/components/layout/header/locale-switcher/icons/germany/index.d.ts +0 -2
  135. package/dist/components/layout/header/locale-switcher/icons/globe/index.d.ts +0 -2
  136. package/dist/components/layout/header/locale-switcher/icons/index.d.ts +0 -6
  137. package/dist/components/layout/header/locale-switcher/icons/italy/index.d.ts +0 -2
  138. package/dist/components/layout/header/locale-switcher/icons/russia/index.d.ts +0 -2
  139. package/dist/index-Bts2DBYS.mjs +0 -637
  140. package/dist/index-CJVr79Z2.js +0 -636
  141. package/dist/index-C_FekfFC.mjs +0 -57
  142. /package/dist/components/{layout → base}/container/index.d.ts +0 -0
  143. /package/dist/components/{layout → base}/logo/index.d.ts +0 -0
  144. /package/dist/components/{not-found → pages/not-found}/index.d.ts +0 -0
  145. /package/dist/{components/layout → layout}/content/index.d.ts +0 -0
  146. /package/dist/{components/layout → layout}/footer/brand/index.d.ts +0 -0
  147. /package/dist/{components/layout → layout}/footer/copyright/index.d.ts +0 -0
  148. /package/dist/{components/layout → layout}/footer/disclaimer/index.d.ts +0 -0
  149. /package/dist/{components/layout → layout}/footer/extra/index.d.ts +0 -0
  150. /package/dist/{components/layout → layout}/footer/index.d.ts +0 -0
  151. /package/dist/{components/layout → layout}/header/brand/index.d.ts +0 -0
  152. /package/dist/{components/layout → layout}/header/index.d.ts +0 -0
  153. /package/dist/{components/layout → layout}/header/theme-toggler/index.d.ts +0 -0
  154. /package/dist/{components/layout → layout}/index.d.ts +0 -0
  155. /package/dist/{components/layout → layout}/main/index.d.ts +0 -0
  156. /package/dist/{components/layout → layout}/scroll-to-top/index.d.ts +0 -0
@@ -2,101 +2,48 @@
2
2
  const jsxRuntime = require("react/jsx-runtime");
3
3
  const react = require("@chakra-ui/react");
4
4
  const reactI18next = require("react-i18next");
5
+ const react$2 = require("@mdx-js/react");
6
+ const index = require("./index-QPgJfbrC.js");
7
+ require("./index-C6MG_f24.js");
8
+ const index$6 = require("./index-B-k9oWE7.js");
5
9
  require("react-medium-image-zoom");
6
- const index = require("./index-DZBLiQFh.js");
7
10
  const react$1 = require("react");
8
- const index$3 = require("./index-C6MG_f24.js");
9
- const index$5 = require("./index-CJVr79Z2.js");
10
- const react$2 = require("@mdx-js/react");
11
11
  const icons = require("@chakra-ui/icons");
12
- const index$4 = require("./index-BICcOaT7.js");
13
- const index$2 = require("./index-At00w6EN.js");
14
- const index$1 = require("./index-CAfBnNV6.js");
12
+ const index$3 = require("./index-DDg_PkD2.js");
13
+ const index$1 = require("./index-qR3kVjjs.js");
14
+ const index$2 = require("./index-BTpEZIok.js");
15
+ const index$4 = require("./index-D15SAjJc.js");
16
+ const index$5 = require("./index-BfITsKAr.js");
15
17
  const i18next = require("i18next");
16
18
  const Markdown = require("react-markdown");
17
- const FacebookIcon = (props) => {
18
- return /* @__PURE__ */ jsxRuntime.jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", "aria-label": "Facebook", ...props, children: [
19
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "1", y: "1", width: "22", height: "22", rx: "5", fill: "none", stroke: "currentColor", strokeWidth: "2" }),
19
+ const ArticleMetaItem = ({ label, value }) => {
20
+ const color = react.useColorModeValue("gray.600", "gray.400");
21
+ return /* @__PURE__ */ jsxRuntime.jsxs(react.Box, { children: [
22
+ /* @__PURE__ */ jsxRuntime.jsx(react.Text, { as: "span", color, children: label }),
23
+ value
24
+ ] });
25
+ };
26
+ const ArticleMeta = ({ createdAt, updatedAt, minutesToRead, author, variant = "full" }) => {
27
+ const { currentLocale } = index.usePageContext();
28
+ const { t } = reactI18next.useTranslation("article");
29
+ return /* @__PURE__ */ jsxRuntime.jsxs(react.Flex, { columnGap: 4, rowGap: 2, wrap: "wrap", children: [
20
30
  /* @__PURE__ */ jsxRuntime.jsx(
21
- "path",
31
+ ArticleMetaItem,
32
+ {
33
+ label: variant === "full" ? `📅 ${t("meta.publicationDate")}` : "📅 ",
34
+ value: index$1.formatDate({ value: updatedAt ?? createdAt, locale: currentLocale.code })
35
+ }
36
+ ),
37
+ !!minutesToRead && /* @__PURE__ */ jsxRuntime.jsx(
38
+ ArticleMetaItem,
22
39
  {
23
- d: "M13.5 8h2V6h-2c-2.2 0-3.5 1.3-3.5 3.5V11H8v2h2v5h2v-5h2l.5-2h-2v-1.3c0-.5.2-.7 1-.7Z",
24
- fill: "currentColor"
40
+ label: variant === "full" ? `⏳ ${t("meta.readingTime.label")}` : "⏳ ",
41
+ value: t("meta.readingTime.count", { count: minutesToRead })
25
42
  }
26
- )
43
+ ),
44
+ !!author && /* @__PURE__ */ jsxRuntime.jsx(ArticleMetaItem, { label: variant === "full" ? `🧑🏻‍💻 ${t("meta.author")}` : "🧑🏻‍💻 ", value: author.name })
27
45
  ] });
28
46
  };
29
- const InstagramIcon = (props) => {
30
- return /* @__PURE__ */ jsxRuntime.jsxs(
31
- "svg",
32
- {
33
- xmlns: "http://www.w3.org/2000/svg",
34
- width: "24",
35
- height: "24",
36
- viewBox: "0 0 24 24",
37
- "aria-label": "Instagram",
38
- ...props,
39
- children: [
40
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "1", y: "1", width: "22", height: "22", rx: "5", fill: "none", stroke: "currentColor", strokeWidth: "2" }),
41
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "4", fill: "none", stroke: "currentColor", strokeWidth: "2" }),
42
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "17", cy: "7", r: "1.25", fill: "currentColor" })
43
- ]
44
- }
45
- );
46
- };
47
- const PinterestIcon = (props) => {
48
- return /* @__PURE__ */ jsxRuntime.jsx(
49
- "svg",
50
- {
51
- xmlns: "http://www.w3.org/2000/svg",
52
- width: "24",
53
- height: "24",
54
- viewBox: "0 0 24 24",
55
- "aria-label": "Pinterest",
56
- ...props,
57
- children: /* @__PURE__ */ jsxRuntime.jsx(
58
- "path",
59
- {
60
- fill: "currentColor",
61
- d: "M12 0C5.373 0 0 5.373 0 12c0 4.99 3.657 9.128 8.438 10.122-.117-.858-.222-2.178.047-3.116.242-.83 1.557-5.288 1.557-5.288s-.396-.792-.396-1.963c0-1.84 1.067-3.215 2.395-3.215 1.13 0 1.675.848 1.675 1.866 0 1.138-.724 2.842-1.097 4.421-.312 1.319.663 2.395 1.965 2.395 2.358 0 3.947-3.032 3.947-6.617 0-2.727-1.84-4.769-5.178-4.769-3.774 0-6.134 2.822-6.134 5.97 0 1.086.322 1.852.827 2.443.232.274.264.384.18.698-.06.23-.197.786-.256 1.007-.084.322-.34.437-.628.318-1.75-.714-2.564-2.63-2.564-4.785 0-3.555 2.998-7.817 8.946-7.817 4.782 0 7.923 3.454 7.923 7.168 0 4.924-2.74 8.6-6.781 8.6-1.356 0-2.63-.73-3.066-1.565l-.833 3.173c-.301 1.147-1.118 2.582-1.667 3.455C9.708 23.812 10.828 24 12 24c6.627 0 12-5.373 12-12S18.627 0 12 0z"
62
- }
63
- )
64
- }
65
- );
66
- };
67
- const XcomIcon = (props) => {
68
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", "aria-label": "X", ...props, children: /* @__PURE__ */ jsxRuntime.jsx(
69
- "path",
70
- {
71
- fill: "currentColor",
72
- d: "M18.244 2H21l-6.57 7.498L22 22h-5.657l-4.403-5.808L6.06 22H3.302l7.02-8.006L2 2h5.822l3.983 5.293L18.244 2zM16.97 20h1.9L8.153 4h-1.9L16.97 20z"
73
- }
74
- ) });
75
- };
76
- const YoutubeIcon = (props) => {
77
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", "aria-label": "YouTube", ...props, children: /* @__PURE__ */ jsxRuntime.jsx(
78
- "path",
79
- {
80
- fill: "currentColor",
81
- d: "M23.498 6.186a2.974 2.974 0 0 0-2.095-2.107C19.505 3.5 12 3.5 12 3.5s-7.505 0-9.403.579A2.974 2.974 0 0 0 .502 6.186C0 8.09 0 12 0 12s0 3.91.502 5.814a2.974 2.974 0 0 0 2.095 2.107C4.495 20.5 12 20.5 12 20.5s7.505 0 9.403-.579a2.974 2.974 0 0 0 2.095-2.107C24 15.91 24 12 24 12s0-3.91-.502-5.814zM9.75 15.02V8.98L15.5 12l-5.75 3.02z"
82
- }
83
- ) });
84
- };
85
- const SocialNetworkMap = {
86
- facebook: FacebookIcon,
87
- instagram: InstagramIcon,
88
- pinterest: PinterestIcon,
89
- x: XcomIcon,
90
- youtube: YoutubeIcon
91
- };
92
- const SocialNetwork = ({ kind, url }) => {
93
- const Icon = SocialNetworkMap[kind];
94
- return /* @__PURE__ */ jsxRuntime.jsx(react.Link, { href: url, target: "_blank", rel: "noopener noreferrer nofollow", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, {}) });
95
- };
96
- const SocialNetworks = ({ socialNetworks, ...flexProps }) => {
97
- const uniqueSocialNetworks = [...new Map(socialNetworks.map((item) => [item.kind, item])).values()];
98
- return /* @__PURE__ */ jsxRuntime.jsx(react.Flex, { gap: 2, ...flexProps, children: uniqueSocialNetworks.map((socialNetwork) => /* @__PURE__ */ jsxRuntime.jsx(SocialNetwork, { ...socialNetwork }, socialNetwork.kind)) });
99
- };
100
47
  const ONE_LINE_HEIGHT = 24;
101
48
  const Bio = ({ content, maxLines = 1 }) => {
102
49
  const ref = react$1.useRef(null);
@@ -139,7 +86,7 @@ const Author = ({ author, variant }) => {
139
86
  `${name}, `,
140
87
  /* @__PURE__ */ jsxRuntime.jsx(react.Text, { as: "span", display: "inline-block", color: "gray.500", children: role })
141
88
  ] }),
142
- (socialNetworks == null ? void 0 : socialNetworks.length) && /* @__PURE__ */ jsxRuntime.jsx(SocialNetworks, { socialNetworks }),
89
+ (socialNetworks == null ? void 0 : socialNetworks.length) && /* @__PURE__ */ jsxRuntime.jsx(index$2.SocialNetworks, { socialNetworks }),
143
90
  /* @__PURE__ */ jsxRuntime.jsx(Bio, { content: bio })
144
91
  ] }) })
145
92
  ] });
@@ -149,52 +96,45 @@ const Center = ({ children, ...boxProps }) => {
149
96
  };
150
97
  const defaultColumns = { base: 1, sm: 2, md: 3, lg: 4, xl: 5 };
151
98
  const Grid = ({ items, columns = defaultColumns, gap, render, getKey, ...boxProps }) => {
152
- return /* @__PURE__ */ jsxRuntime.jsx(react.SimpleGrid, { as: "ul", columns, spacing: gap, p: 0, m: 0, listStyleType: "none", ...boxProps, children: items.map((item, index2) => /* @__PURE__ */ jsxRuntime.jsx(react.Box, { as: "li", children: render(item) }, getKey ? getKey(item) : index2)) });
99
+ return /* @__PURE__ */ jsxRuntime.jsx(react.SimpleGrid, { as: "ul", columns, spacing: gap, p: 0, m: 0, listStyleType: "none", ...boxProps, children: items.map((item, index2) => /* @__PURE__ */ jsxRuntime.jsx(react.Box, { as: "li", children: render(item) }, getKey ? getKey(item, index2) : index2)) });
153
100
  };
154
- const LinkButton = ({
155
- label,
156
- href,
157
- linkType = "redirect",
158
- size = "auto",
159
- width = "auto",
160
- textTransform,
161
- textDecoration,
162
- animation,
163
- onClick,
101
+ const ActionButton = ({ label, href, ...boxProps }) => {
102
+ return /* @__PURE__ */ jsxRuntime.jsx(react.Flex, { justifyContent: "center", ...boxProps, children: /* @__PURE__ */ jsxRuntime.jsx(index$2.LinkButton, { label, href, textDecoration: "none" }) });
103
+ };
104
+ const ArticleCard = ({ title, image, meta, url }) => {
105
+ return /* @__PURE__ */ jsxRuntime.jsxs(react.Card, { as: index.Link, to: url, overflow: "hidden", _hover: { transform: "scale(1.02)", textDecoration: "none" }, children: [
106
+ /* @__PURE__ */ jsxRuntime.jsxs(react.CardBody, { as: "section", p: 0, children: [
107
+ !!image && /* @__PURE__ */ jsxRuntime.jsx(index.Image, { src: image, alt: title, mode: "thumbnail" }),
108
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading2, { size: "md", px: 4, children: title })
109
+ ] }),
110
+ !!meta && /* @__PURE__ */ jsxRuntime.jsx(react.CardFooter, { as: "footer", fontSize: "sm", pt: 0, px: 4, children: /* @__PURE__ */ jsxRuntime.jsx(ArticleMeta, { ...meta, variant: "short" }) })
111
+ ] });
112
+ };
113
+ const ArticleCardGrid = ({
114
+ items,
115
+ columns = { base: 1, md: 2, lg: 3 },
116
+ gap = 4,
164
117
  ...boxProps
165
118
  }) => {
166
- var _a;
167
- const { config } = index.useSiteContext();
168
- const { color, invertedColor } = index$1.usePrimaryColors();
169
- const isInvertedColor = (_a = config == null ? void 0 : config.theme) == null ? void 0 : _a.isInvertedColor;
170
- const isRedirectLink = linkType === "redirect";
171
- const isInternalLink = index$2.isRelativePath(href);
172
- const LinkComponent = isInternalLink ? index.Link : react.Link;
173
- const hrefKey = isInternalLink ? "to" : "href";
174
- const hrefValue = isRedirectLink ? `/follow?to=${href}` : href;
175
119
  return /* @__PURE__ */ jsxRuntime.jsx(
176
- react.Button,
120
+ Grid,
177
121
  {
178
- w: width,
179
- size: size === "auto" ? { base: "sm", md: "lg" } : size,
180
- bg: "brand.500",
181
- color: isInvertedColor ? invertedColor : color,
182
- animation: animation ? index$3.Animation[animation.type](animation.params) : void 0,
183
- textTransform,
184
- _hover: { textDecoration, bg: "brand.200" },
185
- _active: { transform: "scale(0.95)" },
186
- onClick,
187
- ...boxProps,
188
- ...href ? {
189
- as: LinkComponent,
190
- [hrefKey]: hrefValue,
191
- target: isRedirectLink ? "_blank" : "_self",
192
- rel: isInternalLink ? "" : "noopener noreferrer nofollow"
193
- } : {},
194
- children: label
122
+ items,
123
+ columns,
124
+ gap,
125
+ getKey: (_, index2) => index2,
126
+ render: (item) => /* @__PURE__ */ jsxRuntime.jsx(ArticleCard, { ...item }),
127
+ ...boxProps
195
128
  }
196
129
  );
197
130
  };
131
+ const ArticleInfoCard = ({ title, description, meta, ...boxProps }) => {
132
+ return /* @__PURE__ */ jsxRuntime.jsxs(react.Card, { as: "article", variant: "filled", ...boxProps, children: [
133
+ /* @__PURE__ */ jsxRuntime.jsx(react.CardHeader, { as: "header", pb: 0, children: /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading1, { children: title }) }),
134
+ /* @__PURE__ */ jsxRuntime.jsx(react.CardBody, { as: "section", py: 0, children: description }),
135
+ !!meta && /* @__PURE__ */ jsxRuntime.jsx(react.CardFooter, { as: "footer", children: /* @__PURE__ */ jsxRuntime.jsx(ArticleMeta, { ...meta }) })
136
+ ] });
137
+ };
198
138
  const AuthorCard = ({ author, ...boxProps }) => {
199
139
  const { t } = reactI18next.useTranslation("author");
200
140
  return /* @__PURE__ */ jsxRuntime.jsxs(react.Card, { as: "article", variant: "filled", ...boxProps, children: [
@@ -265,7 +205,7 @@ const BonusCard = ({
265
205
  /* @__PURE__ */ jsxRuntime.jsx(react.Text, { fontSize: "2xl", fontWeight: "bold", my: 2, children: subtitle }),
266
206
  /* @__PURE__ */ jsxRuntime.jsx(BonusCardContent, { content, buttonColor: textColor })
267
207
  ] }),
268
- /* @__PURE__ */ jsxRuntime.jsx(react.CardFooter, { as: "footer", p: 4, children: /* @__PURE__ */ jsxRuntime.jsx(LinkButton, { ...link, width: "full", size: "md", textDecoration: "none" }) })
208
+ /* @__PURE__ */ jsxRuntime.jsx(react.CardFooter, { as: "footer", p: 4, children: /* @__PURE__ */ jsxRuntime.jsx(index$2.LinkButton, { ...link, width: "full", size: "md", textDecoration: "none" }) })
269
209
  ]
270
210
  }
271
211
  );
@@ -288,78 +228,8 @@ const BonusCardGrid = ({
288
228
  }
289
229
  );
290
230
  };
291
- const ContactForm = ({ ...boxProps }) => {
292
- const toast = react.useToast();
293
- const { t } = reactI18next.useTranslation("contactForm");
294
- function handleSubmit(event) {
295
- event.preventDefault();
296
- const form = event.currentTarget;
297
- const formData = new FormData(form);
298
- const name = formData.get("name");
299
- const email = formData.get("email");
300
- const message = formData.get("message");
301
- if (name && email && message) {
302
- form.reset();
303
- toast({
304
- title: t("notification.title", { name }),
305
- description: t("notification.description", { email }),
306
- colorScheme: "brand",
307
- status: "success",
308
- duration: 5e3,
309
- isClosable: true
310
- });
311
- } else {
312
- console.error("Please fill out both fields");
313
- }
314
- }
315
- return /* @__PURE__ */ jsxRuntime.jsx(
316
- react.Box,
317
- {
318
- as: "form",
319
- borderRadius: "lg",
320
- p: 8,
321
- color: react.useColorModeValue("gray.700", "whiteAlpha.900"),
322
- bg: react.useColorModeValue("white", "gray.700"),
323
- shadow: "base",
324
- onSubmit: handleSubmit,
325
- ...boxProps,
326
- children: /* @__PURE__ */ jsxRuntime.jsxs(react.VStack, { spacing: 4, children: [
327
- /* @__PURE__ */ jsxRuntime.jsxs(react.FormControl, { isRequired: true, children: [
328
- /* @__PURE__ */ jsxRuntime.jsx(react.FormLabel, { children: t("field.name.label") }),
329
- /* @__PURE__ */ jsxRuntime.jsxs(react.InputGroup, { children: [
330
- /* @__PURE__ */ jsxRuntime.jsx(react.InputLeftElement, { children: /* @__PURE__ */ jsxRuntime.jsx(
331
- "svg",
332
- {
333
- xmlns: "http://www.w3.org/2000/svg",
334
- width: "16",
335
- height: "16",
336
- fill: "currentColor",
337
- className: "bi bi-person-fill",
338
- viewBox: "0 0 16 16",
339
- children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6" })
340
- }
341
- ) }),
342
- /* @__PURE__ */ jsxRuntime.jsx(react.Input, { type: "text", name: "name", placeholder: t("field.name.placeholder") })
343
- ] })
344
- ] }),
345
- /* @__PURE__ */ jsxRuntime.jsxs(react.FormControl, { isRequired: true, children: [
346
- /* @__PURE__ */ jsxRuntime.jsx(react.FormLabel, { children: t("field.email.label") }),
347
- /* @__PURE__ */ jsxRuntime.jsxs(react.InputGroup, { children: [
348
- /* @__PURE__ */ jsxRuntime.jsx(react.InputLeftElement, { children: /* @__PURE__ */ jsxRuntime.jsx(icons.EmailIcon, {}) }),
349
- /* @__PURE__ */ jsxRuntime.jsx(react.Input, { type: "email", name: "email", placeholder: t("field.email.placeholder") })
350
- ] })
351
- ] }),
352
- /* @__PURE__ */ jsxRuntime.jsxs(react.FormControl, { isRequired: true, children: [
353
- /* @__PURE__ */ jsxRuntime.jsx(react.FormLabel, { children: t("field.message.label") }),
354
- /* @__PURE__ */ jsxRuntime.jsx(react.Textarea, { name: "message", placeholder: t("field.message.placeholder"), rows: 6, resize: "none" })
355
- ] }),
356
- /* @__PURE__ */ jsxRuntime.jsx(react.Button, { type: "submit", colorScheme: "brand", width: "full", children: t("action.send") })
357
- ] })
358
- }
359
- );
360
- };
361
231
  const Faq = ({ items, ...boxProps }) => {
362
- const { bgColor, invertedColor } = index$1.usePrimaryColors();
232
+ const { bgColor, invertedColor } = index$4.usePrimaryColors();
363
233
  return /* @__PURE__ */ jsxRuntime.jsx(react.Accordion, { allowToggle: true, ...boxProps, children: items.map(({ question, answer }) => {
364
234
  return /* @__PURE__ */ jsxRuntime.jsxs(react.AccordionItem, { border: 0, children: [
365
235
  /* @__PURE__ */ jsxRuntime.jsx(react.Box, { as: "h3", children: /* @__PURE__ */ jsxRuntime.jsxs(react.AccordionButton, { _hover: { color: invertedColor, bgColor }, children: [
@@ -392,7 +262,7 @@ const FeatureCardGrid = ({
392
262
  items,
393
263
  columns,
394
264
  gap,
395
- getKey: ({ title }) => title,
265
+ getKey: (_, index2) => index2,
396
266
  render: (item) => /* @__PURE__ */ jsxRuntime.jsx(FeatureCard, { ...item }),
397
267
  ...boxProps
398
268
  }
@@ -414,7 +284,7 @@ const GameCard = ({ name, description, image, url, height = "auto" }) => {
414
284
  children: [
415
285
  /* @__PURE__ */ jsxRuntime.jsx(index.Image, { src: image, alt: name, mode: "thumbnail" }),
416
286
  /* @__PURE__ */ jsxRuntime.jsxs(react.Box, { as: "section", rounded: "md", p: 4, children: [
417
- /* @__PURE__ */ jsxRuntime.jsx(react.Text, { as: "span", children: url ? /* @__PURE__ */ jsxRuntime.jsx(react.LinkOverlay, { href: url, target: "_blank", rel: "noopener noreferrer nofollow", children: name }) : name }),
287
+ /* @__PURE__ */ jsxRuntime.jsx(react.Text, { as: "span", children: url ? /* @__PURE__ */ jsxRuntime.jsx(react.LinkOverlay, { as: index.Link, to: url, children: name }) : name }),
418
288
  !!description && /* @__PURE__ */ jsxRuntime.jsx(react.Text, { fontSize: "sm", color: "gray.600", children: description })
419
289
  ] })
420
290
  ]
@@ -432,7 +302,7 @@ const GameCardGrid = ({
432
302
  }) => {
433
303
  let sortedItems = items;
434
304
  if (order === "random") {
435
- sortedItems = [...items].sort(randomSeed ? index$4.getSeededRandomComparator(randomSeed) : index$4.randomComparator);
305
+ sortedItems = [...items].sort(randomSeed ? index$5.getSeededRandomComparator(randomSeed) : index$5.randomComparator);
436
306
  }
437
307
  return /* @__PURE__ */ jsxRuntime.jsx(
438
308
  Grid,
@@ -502,19 +372,54 @@ const GameDemoContent = ({
502
372
  /* @__PURE__ */ jsxRuntime.jsx(react.AbsoluteCenter, { children: /* @__PURE__ */ jsxRuntime.jsx(react.Spinner, { size: "xl", thickness: "0.6rem", display: isLoaded ? "none" : "block", color: "brand.100" }) })
503
373
  ] });
504
374
  };
505
- const GameDemoPreview = ({ image, alt, href, imageFit = "contain", onPlayDemo }) => {
375
+ const GameDemoAlert = () => {
506
376
  const { t } = reactI18next.useTranslation("gameDemo");
507
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
508
- /* @__PURE__ */ jsxRuntime.jsx(index.Image, { src: image, alt, objectFit: imageFit, w: "100%", h: "100%" }),
509
- /* @__PURE__ */ jsxRuntime.jsx(react.AbsoluteCenter, { children: /* @__PURE__ */ jsxRuntime.jsxs(react.Stack, { spacing: 4, children: [
510
- /* @__PURE__ */ jsxRuntime.jsx(
511
- LinkButton,
512
- {
513
- animation: { type: "pulse", params: { duration: 2, timingFunction: "ease-out", isInfinite: true } },
514
- ...href ? { label: t("action.playForReal"), href } : { label: t("action.playForFree"), onClick: onPlayDemo }
515
- }
516
- ),
517
- !!href && /* @__PURE__ */ jsxRuntime.jsx(
377
+ return /* @__PURE__ */ jsxRuntime.jsxs(
378
+ react.Alert,
379
+ {
380
+ status: "warning",
381
+ flexDirection: { base: "column", md: "row" },
382
+ justifyContent: { base: "center", md: "flex-start" },
383
+ alignItems: "center",
384
+ rounded: "lg",
385
+ children: [
386
+ /* @__PURE__ */ jsxRuntime.jsx(react.AlertIcon, {}),
387
+ /* @__PURE__ */ jsxRuntime.jsxs(
388
+ react.Flex,
389
+ {
390
+ direction: { base: "column", md: "row" },
391
+ justifyContent: { base: "center", md: "flex-start" },
392
+ alignItems: { base: "center", md: "baseline" },
393
+ wrap: "wrap",
394
+ textAlign: { base: "center", md: "start" },
395
+ children: [
396
+ /* @__PURE__ */ jsxRuntime.jsx(react.AlertTitle, { my: 1, fontSize: { base: "sm", sm: "md", md: "lg" }, lineHeight: "short", children: t("alert.title") }),
397
+ /* @__PURE__ */ jsxRuntime.jsx(react.AlertDescription, { fontSize: { base: "sm", sm: "md", md: "lg" }, lineHeight: "short", children: t("alert.description") })
398
+ ]
399
+ }
400
+ )
401
+ ]
402
+ }
403
+ );
404
+ };
405
+ const buttonAnimationProps = {
406
+ type: "pulse",
407
+ params: { duration: 2, timingFunction: "ease-out", isInfinite: true }
408
+ };
409
+ const GameDemoPreview = ({ image, alt, src, refLink, imageFit = "contain", onPlayDemo }) => {
410
+ const { t } = reactI18next.useTranslation("gameDemo");
411
+ function getPrimaryButton() {
412
+ if (refLink) {
413
+ return /* @__PURE__ */ jsxRuntime.jsx(index$2.LinkButton, { animation: buttonAnimationProps, label: t("action.playForReal"), href: refLink });
414
+ } else if (src) {
415
+ return /* @__PURE__ */ jsxRuntime.jsx(index$2.LinkButton, { animation: buttonAnimationProps, label: t("action.playForFree"), onClick: onPlayDemo });
416
+ } else {
417
+ return null;
418
+ }
419
+ }
420
+ function getSecondaryButton() {
421
+ if (refLink && src) {
422
+ return /* @__PURE__ */ jsxRuntime.jsx(
518
423
  react.Button,
519
424
  {
520
425
  variant: "solid",
@@ -524,11 +429,23 @@ const GameDemoPreview = ({ image, alt, href, imageFit = "contain", onPlayDemo })
524
429
  onClick: onPlayDemo,
525
430
  children: t("action.playForFree")
526
431
  }
527
- )
528
- ] }) })
432
+ );
433
+ } else {
434
+ return null;
435
+ }
436
+ }
437
+ return /* @__PURE__ */ jsxRuntime.jsxs(react.Stack, { children: [
438
+ !src && /* @__PURE__ */ jsxRuntime.jsx(GameDemoAlert, {}),
439
+ /* @__PURE__ */ jsxRuntime.jsxs(react.Box, { position: "relative", children: [
440
+ /* @__PURE__ */ jsxRuntime.jsx(index.Image, { src: image, alt, objectFit: imageFit, w: "100%", h: "100%" }),
441
+ /* @__PURE__ */ jsxRuntime.jsx(react.AbsoluteCenter, { children: /* @__PURE__ */ jsxRuntime.jsxs(react.Stack, { spacing: 4, children: [
442
+ getPrimaryButton(),
443
+ getSecondaryButton()
444
+ ] }) })
445
+ ] })
529
446
  ] });
530
447
  };
531
- const GameDemo = ({ name, src, href, previewImage, previewImageFit, ...boxProps }) => {
448
+ const GameDemo = ({ name, src, refLink, previewImage, previewImageFit, ...boxProps }) => {
532
449
  const [isRunning, setIsRunning] = react$1.useState(false);
533
450
  const [isLoaded, setIsLoaded] = react$1.useState(false);
534
451
  const { isOpen: isFullscreen, onToggle, onClose } = react.useDisclosure({ defaultIsOpen: false });
@@ -571,7 +488,8 @@ const GameDemo = ({ name, src, href, previewImage, previewImageFit, ...boxProps
571
488
  {
572
489
  image: previewImage,
573
490
  alt: name,
574
- href,
491
+ src,
492
+ refLink,
575
493
  imageFit: previewImageFit,
576
494
  onPlayDemo: handlePlayDemo
577
495
  }
@@ -605,26 +523,26 @@ function stringifyArray(array, max) {
605
523
  function getGameInfoItemValue(key, value, locale) {
606
524
  let formattedValue = "";
607
525
  if (typeof value !== "string") {
608
- if (key === index$5.GameCharacteristic.Rtp) {
609
- formattedValue = index$4.formatNumber(value, { percent: "real", precision: 3 });
526
+ if (key === index$6.GameCharacteristic.Rtp) {
527
+ formattedValue = index$1.formatNumber(value, { percent: "real", precision: 3 });
610
528
  }
611
- if (key === index$5.GameCharacteristic.MinBet || key === index$5.GameCharacteristic.MaxBet || key === index$5.GameCharacteristic.MaxWin) {
612
- formattedValue = index$4.formatNumber(value, { locale });
529
+ if (key === index$6.GameCharacteristic.MinBet || key === index$6.GameCharacteristic.MaxBet || key === index$6.GameCharacteristic.MaxWin) {
530
+ formattedValue = index$1.formatNumber(value, { locale });
613
531
  }
614
- if (key === index$5.GameCharacteristic.Compatibility || key === index$5.GameCharacteristic.BonusFeatures) {
532
+ if (key === index$6.GameCharacteristic.Compatibility || key === index$6.GameCharacteristic.BonusFeatures) {
615
533
  formattedValue = stringifyArray(value);
616
534
  }
617
- if (key === index$5.GameCharacteristic.Languages) {
535
+ if (key === index$6.GameCharacteristic.Languages) {
618
536
  formattedValue = stringifyArray(value, MAX_VISIBLE_LANGUAGE);
619
537
  }
620
538
  if (typeof value === "boolean") {
621
539
  formattedValue = stringifyHasFeature(value);
622
540
  }
623
541
  }
624
- if (key === index$5.GameCharacteristic.ReleaseDate) {
625
- formattedValue = index$4.formatDate({ value, locale, options: { year: "numeric", month: "long" } });
542
+ if (key === index$6.GameCharacteristic.ReleaseDate) {
543
+ formattedValue = index$1.formatDate({ value, locale, options: { year: "numeric", month: "long" } });
626
544
  }
627
- if (key === index$5.GameCharacteristic.Volatility) {
545
+ if (key === index$6.GameCharacteristic.Volatility && Object.values(index$6.GameVolatility).includes(value)) {
628
546
  formattedValue = stringifyVolatility(value);
629
547
  }
630
548
  if (!formattedValue) {
@@ -634,7 +552,7 @@ function getGameInfoItemValue(key, value, locale) {
634
552
  }
635
553
  const DEFAULT_CURRENCY = "$, €, £";
636
554
  function getGameInfoCurrency(currency, locale) {
637
- const currencies = Array.isArray(currency) ? currency.map((code) => index$4.getCurrencySymbol(code, locale)) : [index$4.getCurrencySymbol(currency, locale)];
555
+ const currencies = Array.isArray(currency) ? currency.map((code) => index$5.getCurrencySymbol(code, locale)) : [index$5.getCurrencySymbol(currency, locale)];
638
556
  return stringifyArray(currencies);
639
557
  }
640
558
  const GameInfo = ({ info, currencies }) => {
@@ -668,7 +586,7 @@ const GameInfo = ({ info, currencies }) => {
668
586
  );
669
587
  };
670
588
  const HowTo = ({ steps, ...boxProps }) => {
671
- const { bgColor, invertedColor } = index$1.usePrimaryColors();
589
+ const { bgColor, invertedColor } = index$4.usePrimaryColors();
672
590
  return /* @__PURE__ */ jsxRuntime.jsx(react.SimpleGrid, { as: "ol", columns: { base: 1, md: 2, lg: 3 }, gap: 4, p: 0, ...boxProps, children: steps.map(({ title, description, thumbnail }, index$12) => /* @__PURE__ */ jsxRuntime.jsxs(react.Flex, { as: "li", alignItems: "flex-start", gap: 4, children: [
673
591
  /* @__PURE__ */ jsxRuntime.jsx(react.Circle, { size: 12, bgColor, color: invertedColor, fontSize: "lg", fontWeight: "bold", children: String(index$12 + 1) }),
674
592
  /* @__PURE__ */ jsxRuntime.jsxs(react.Stack, { flex: 1, children: [
@@ -678,497 +596,264 @@ const HowTo = ({ steps, ...boxProps }) => {
678
596
  ] })
679
597
  ] }, index$12)) });
680
598
  };
681
- const Container = ({ children }) => {
682
- return /* @__PURE__ */ jsxRuntime.jsx(react.Container, { maxW: "container.xl", children });
683
- };
684
- const Content = ({ children }) => {
685
- return /* @__PURE__ */ jsxRuntime.jsx(react.Box, { as: "section", py: 4, children: /* @__PURE__ */ jsxRuntime.jsx(Container, { children }) });
686
- };
687
- const Logo = () => {
688
- const { metadata } = index.useSiteContext();
689
- const { logo } = metadata;
690
- return /* @__PURE__ */ jsxRuntime.jsx(react.Box, { display: "flex", h: { base: 10, md: 14 }, overflow: "hidden", children: /* @__PURE__ */ jsxRuntime.jsx(index.Image, { src: logo, alt: "Logo", objectFit: "contain" }) });
691
- };
692
- const Brand$1 = ({ brand }) => {
693
- return /* @__PURE__ */ jsxRuntime.jsxs(react.Box, { position: "relative", my: 2, py: 8, children: [
694
- /* @__PURE__ */ jsxRuntime.jsx(react.Divider, {}),
695
- /* @__PURE__ */ jsxRuntime.jsx(react.AbsoluteCenter, { display: "flex", bgColor: react.useColorModeValue("gray.50", "gray.900"), children: /* @__PURE__ */ jsxRuntime.jsx(index.Link, { to: "/", children: brand }) })
696
- ] });
697
- };
698
- const Copyright = () => {
699
- const { metadata } = index.useSiteContext();
700
- const { t } = reactI18next.useTranslation("footer");
701
- const siteName = metadata.name;
702
- const lang = metadata.lang;
703
- return /* @__PURE__ */ jsxRuntime.jsx(react.Text, { as: "small", colorScheme: "gray", display: "flex", align: "center", justifyContent: "center", children: t("copyright", { year: index$4.getCurrentYear(lang), siteName }) });
704
- };
705
- const Disclaimer = () => {
706
- const { metadata } = index.useSiteContext();
707
- const { t } = reactI18next.useTranslation("footer");
708
- const siteName = metadata.name;
709
- return /* @__PURE__ */ jsxRuntime.jsxs(react.Text, { as: "small", colorScheme: "gray", fontSize: "sm", children: [
710
- /* @__PURE__ */ jsxRuntime.jsx(react.Text, { as: "span", fontWeight: "bold", color: "red.600", children: t("disclaimer.title") }),
711
- t("disclaimer.description", { siteName })
712
- ] });
713
- };
714
- const Extra = ({ children }) => {
715
- return /* @__PURE__ */ jsxRuntime.jsx(react.Box, { as: "section", my: 2, children });
716
- };
717
- const Navigation$1 = ({ menu }) => {
718
- return /* @__PURE__ */ jsxRuntime.jsx(
719
- react.SimpleGrid,
720
- {
721
- as: "ul",
722
- columns: { base: 1, sm: 2, md: 4 },
723
- mt: 4,
724
- mb: 6,
725
- p: 0,
726
- spacing: 4,
727
- justifyItems: { base: "flex-start", md: "center" },
728
- justifyContent: "space-between",
729
- children: menu.map(({ slug, label }, index$12) => /* @__PURE__ */ jsxRuntime.jsx(react.Flex, { as: "li", children: /* @__PURE__ */ jsxRuntime.jsx(
730
- react.Text,
731
- {
732
- as: index.Link,
733
- to: slug,
734
- fontSize: "md",
735
- fontWeight: "semibold",
736
- colorScheme: "gray",
737
- _hover: { textDecoration: "none", color: "brand.400" },
738
- children: label
739
- }
740
- ) }, index$12))
741
- }
742
- );
743
- };
744
- const Footer = () => {
745
- const { metadata, navigation, config } = index.useSiteContext();
746
- const { currentLocale } = index.usePageContext();
747
- const menu = navigation.footer[currentLocale.code] ?? [];
748
- const socialNetworks = metadata.socialNetworks ?? [];
749
- const { extra, showDisclaimer = true } = (config == null ? void 0 : config.footer) ?? {};
750
- const hasNavigation = !!menu.length;
751
- const hasSocialNetworks = !!socialNetworks.length;
752
- const hasExtra = !!extra;
753
- return /* @__PURE__ */ jsxRuntime.jsx(
754
- react.Box,
599
+ function getQuotePseudoElement(color) {
600
+ return {
601
+ content: '"❛❛"',
602
+ position: "absolute",
603
+ top: -8,
604
+ left: -2,
605
+ fontSize: "6rem",
606
+ fontStyle: "italic",
607
+ color
608
+ };
609
+ }
610
+ const PrefixMap = {
611
+ advice: "🚀",
612
+ fact: "💡",
613
+ quote: ""
614
+ };
615
+ const BorderColorMap = {
616
+ advice: "red.400",
617
+ fact: "yellow.400",
618
+ quote: "gray"
619
+ };
620
+ const Informer = ({ type, text, author = null, ...boxProps }) => {
621
+ const { t } = reactI18next.useTranslation("informer");
622
+ const quotePseudoElementColor = react.useColorModeValue("blackAlpha.300", "whiteAlpha.300");
623
+ return /* @__PURE__ */ jsxRuntime.jsxs(
624
+ react.Card,
755
625
  {
756
- as: "footer",
757
- bg: react.useColorModeValue("gray.50", "gray.900"),
758
- color: react.useColorModeValue("gray.700", "gray.200"),
759
- py: 4,
760
- children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { children: [
761
- hasNavigation && /* @__PURE__ */ jsxRuntime.jsx(Navigation$1, { menu }),
762
- hasExtra && /* @__PURE__ */ jsxRuntime.jsx(Extra, { children: extra }),
763
- showDisclaimer && /* @__PURE__ */ jsxRuntime.jsx(Disclaimer, {}),
764
- /* @__PURE__ */ jsxRuntime.jsx(Brand$1, { brand: /* @__PURE__ */ jsxRuntime.jsx(Logo, {}) }),
765
- hasSocialNetworks && /* @__PURE__ */ jsxRuntime.jsx(SocialNetworks, { socialNetworks, justify: "center", my: 2 }),
766
- /* @__PURE__ */ jsxRuntime.jsx(Copyright, {})
767
- ] })
626
+ variant: "filled",
627
+ p: 4,
628
+ borderLeft: "4px solid",
629
+ borderLeftColor: BorderColorMap[type],
630
+ gap: 4,
631
+ ...type === "quote" && { _before: getQuotePseudoElement(quotePseudoElementColor) },
632
+ ...boxProps,
633
+ children: [
634
+ /* @__PURE__ */ jsxRuntime.jsxs(react.CardBody, { as: "blockquote", p: 0, fontStyle: "italic", children: [
635
+ type !== "quote" && /* @__PURE__ */ jsxRuntime.jsxs(react.Text, { as: "span", fontStyle: "normal", fontWeight: "semibold", mr: 2, children: [
636
+ PrefixMap[type],
637
+ t(type),
638
+ ":"
639
+ ] }),
640
+ text
641
+ ] }),
642
+ !!author && /* @__PURE__ */ jsxRuntime.jsx(react.CardFooter, { alignItems: "center", justify: "flex-end", p: 0, children: /* @__PURE__ */ jsxRuntime.jsx(Author, { author, variant: "short" }) })
643
+ ]
768
644
  }
769
645
  );
770
646
  };
771
- const Brand = ({ brand }) => {
772
- return /* @__PURE__ */ jsxRuntime.jsx(index.Link, { to: "/", children: brand });
647
+ const List = ({ items, bullet = "—", render, ...boxProps }) => {
648
+ return /* @__PURE__ */ jsxRuntime.jsx(react.List, { pl: 0, ml: 2, ...boxProps, children: items.map((item, index2) => /* @__PURE__ */ jsxRuntime.jsxs(react.ListItem, { display: "flex", gap: 1, children: [
649
+ /* @__PURE__ */ jsxRuntime.jsx(react.Box, { children: bullet }),
650
+ render ? render(item) : item
651
+ ] }, index2)) });
773
652
  };
774
- const FranceIcon = (props) => {
775
- return /* @__PURE__ */ jsxRuntime.jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", width: "1em", height: "1em", ...props, children: [
776
- /* @__PURE__ */ jsxRuntime.jsx("mask", { id: "circleFlagsFr0", children: /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "256", cy: "256", r: "256", fill: "#fff" }) }),
777
- /* @__PURE__ */ jsxRuntime.jsxs("g", { mask: "url(#circleFlagsFr0)", children: [
778
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#eee", d: "M167 0h178l25.9 252.3L345 512H167l-29.8-253.4z" }),
779
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#0052b4", d: "M0 0h167v512H0z" }),
780
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#d80027", d: "M345 0h167v512H345z" })
653
+ const NotFound = () => {
654
+ const { t } = reactI18next.useTranslation("pageNotFound");
655
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
656
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading1, { children: t("title") }),
657
+ /* @__PURE__ */ jsxRuntime.jsxs(index$3.Paragraph, { fontSize: "xl", children: [
658
+ t("description"),
659
+ " ",
660
+ /* @__PURE__ */ jsxRuntime.jsx(react.Button, { as: index.Link, to: "/", variant: "link", colorScheme: "brand", fontSize: "xl", children: t("action") })
781
661
  ] })
782
662
  ] });
783
663
  };
784
- const GermanyIcon = (props) => {
785
- return /* @__PURE__ */ jsxRuntime.jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", width: "1em", height: "1em", ...props, children: [
786
- /* @__PURE__ */ jsxRuntime.jsx("mask", { id: "circleFlagsDe0", children: /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "256", cy: "256", r: "256", fill: "#fff" }) }),
787
- /* @__PURE__ */ jsxRuntime.jsxs("g", { mask: "url(#circleFlagsDe0)", children: [
788
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#ffda44", d: "m0 345l256.7-25.5L512 345v167H0z" }),
789
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#d80027", d: "m0 167l255-23l257 23v178H0z" }),
790
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#333", d: "M0 0h512v167H0z" })
791
- ] })
664
+ const CookiePolicy = () => {
665
+ const { t } = reactI18next.useTranslation("pageCookiePolicy");
666
+ const { metadata } = index.useSiteContext();
667
+ const { name: siteName } = metadata;
668
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
669
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading1, { children: t("title") }),
670
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("text", { siteName }) }),
671
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading2, { children: t("sectionOne.title", { siteName }) }),
672
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("sectionOne.textOne", { siteName }) }),
673
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("sectionOne.textTwo") }),
674
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading2, { children: t("sectionTwo.title") }),
675
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("sectionTwo.textOne", { siteName }) }),
676
+ /* @__PURE__ */ jsxRuntime.jsxs(index$3.Unordered, { children: [
677
+ /* @__PURE__ */ jsxRuntime.jsx("li", { children: t("sectionTwo.list.itemOne") }),
678
+ /* @__PURE__ */ jsxRuntime.jsx("li", { children: t("sectionTwo.list.itemTwo") }),
679
+ /* @__PURE__ */ jsxRuntime.jsx("li", { children: t("sectionTwo.list.itemThree") })
680
+ ] }),
681
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("sectionTwo.textTwo") }),
682
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading2, { children: t("sectionThree.title") }),
683
+ /* @__PURE__ */ jsxRuntime.jsxs(index$3.Ordered, { children: [
684
+ /* @__PURE__ */ jsxRuntime.jsx("li", { children: t("sectionThree.list.itemOne") }),
685
+ /* @__PURE__ */ jsxRuntime.jsx("li", { children: t("sectionThree.list.itemTwo") }),
686
+ /* @__PURE__ */ jsxRuntime.jsx("li", { children: t("sectionThree.list.itemThree") }),
687
+ /* @__PURE__ */ jsxRuntime.jsx("li", { children: t("sectionThree.list.itemFour") })
688
+ ] }),
689
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("sectionThree.text", { siteName }) })
792
690
  ] });
793
691
  };
794
- const GlobeIcon = (props) => {
795
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 496", width: "1em", height: "1em", ...props, children: /* @__PURE__ */ jsxRuntime.jsx(
796
- "path",
797
- {
798
- fill: "currentColor",
799
- 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"
692
+ const ContactForm = ({ ...boxProps }) => {
693
+ const toast = react.useToast();
694
+ const { t } = reactI18next.useTranslation("contactForm");
695
+ function handleSubmit(event) {
696
+ event.preventDefault();
697
+ const form = event.currentTarget;
698
+ const formData = new FormData(form);
699
+ const name = formData.get("name");
700
+ const email = formData.get("email");
701
+ const message = formData.get("message");
702
+ if (name && email && message) {
703
+ form.reset();
704
+ toast({
705
+ title: t("notification.title", { name }),
706
+ description: t("notification.description", { email }),
707
+ colorScheme: "brand",
708
+ status: "success",
709
+ duration: 5e3,
710
+ isClosable: true
711
+ });
712
+ } else {
713
+ console.error("Please fill out both fields");
800
714
  }
801
- ) });
802
- };
803
- const ItalyIcon = (props) => {
804
- return /* @__PURE__ */ jsxRuntime.jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", width: "1em", height: "1em", ...props, children: [
805
- /* @__PURE__ */ jsxRuntime.jsx("mask", { id: "circleFlagsIt0", children: /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "256", cy: "256", r: "256", fill: "#fff" }) }),
806
- /* @__PURE__ */ jsxRuntime.jsxs("g", { mask: "url(#circleFlagsIt0)", children: [
807
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#eee", d: "M167 0h178l25.9 252.3L345 512H167l-29.8-253.4z" }),
808
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#6da544", d: "M0 0h167v512H0z" }),
809
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#d80027", d: "M345 0h167v512H345z" })
810
- ] })
811
- ] });
812
- };
813
- const RussiaIcon = (props) => {
814
- return /* @__PURE__ */ jsxRuntime.jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", width: "1em", height: "1em", ...props, children: [
815
- /* @__PURE__ */ jsxRuntime.jsx("mask", { id: "circleFlagsRu0", children: /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "256", cy: "256", r: "256", fill: "#fff" }) }),
816
- /* @__PURE__ */ jsxRuntime.jsxs("g", { mask: "url(#circleFlagsRu0)", children: [
817
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#0052b4", d: "M512 170v172l-256 32L0 342V170l256-32z" }),
818
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#eee", d: "M512 0v170H0V0Z" }),
819
- /* @__PURE__ */ jsxRuntime.jsx("path", { fill: "#d80027", d: "M512 342v170H0V342Z" })
820
- ] })
821
- ] });
822
- };
823
- function getMappedIcon(code) {
824
- let icon = GlobeIcon;
825
- switch (code) {
826
- case "de":
827
- icon = GermanyIcon;
828
- break;
829
- case "it":
830
- icon = ItalyIcon;
831
- break;
832
- case "ru":
833
- icon = RussiaIcon;
834
- break;
835
- case "fr":
836
- icon = FranceIcon;
837
- break;
838
- case "en":
839
- default:
840
- icon = GlobeIcon;
841
- break;
842
715
  }
843
- return icon;
844
- }
845
- const LocaleSwitcher = ({ currentLocale, locales }) => {
846
- const localeCode = currentLocale.code;
847
- const localeIcon = getMappedIcon(localeCode);
848
- const localeMenuItems = react$1.useMemo(
849
- () => locales.map((locale) => ({ ...locale, icon: getMappedIcon(locale.code) })),
850
- [locales]
851
- );
852
- return /* @__PURE__ */ jsxRuntime.jsxs(react.Menu, { placement: "bottom-end", children: [
853
- /* @__PURE__ */ jsxRuntime.jsx(
854
- react.MenuButton,
855
- {
856
- as: react.Button,
857
- rightIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronDownIcon, {}),
858
- w: { base: 20, md: "28" },
859
- px: { base: 1, md: 4 },
860
- size: { base: "sm", md: "lg" },
861
- children: /* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { children: [
862
- /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { as: localeIcon }),
863
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: localeCode.toUpperCase() })
864
- ] })
865
- }
866
- ),
867
- /* @__PURE__ */ jsxRuntime.jsx(react.MenuList, { minW: "fit-content", children: localeMenuItems.map(({ code, name, icon }) => /* @__PURE__ */ jsxRuntime.jsx(react.MenuItem, { as: index.Link, to: `/${code}`, icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { as: icon, w: 4, h: 4 }), children: name }, code)) })
868
- ] });
869
- };
870
- const NavLink = react$1.forwardRef(({ slug, label }, ref) => {
871
716
  return /* @__PURE__ */ jsxRuntime.jsx(
872
- react.Text,
717
+ react.Box,
873
718
  {
874
- ref,
875
- as: index.Link,
876
- to: slug,
877
- p: 2,
878
- fontWeight: "semibold",
879
- _hover: { textDecoration: "none", color: "brand.400" },
880
- children: label
881
- }
882
- );
883
- });
884
- NavLink.displayName = "NavLink";
885
- const NavList$1 = ({ slug, label, children }) => {
886
- const background = react.useColorModeValue("white", "gray.800");
887
- const backgroundHover = react.useColorModeValue("brand.50", "gray.900");
888
- return /* @__PURE__ */ jsxRuntime.jsxs(react.Popover, { trigger: "hover", placement: "bottom-start", children: [
889
- /* @__PURE__ */ jsxRuntime.jsx(react.PopoverTrigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
890
- react.Text,
891
- {
892
- p: 2,
893
- fontWeight: "semibold",
894
- cursor: "pointer",
895
- tabIndex: 0,
896
- _hover: { textDecoration: "none", color: "brand.400" },
897
- children: label
898
- }
899
- ) }),
900
- /* @__PURE__ */ jsxRuntime.jsx(
901
- react.PopoverContent,
902
- {
903
- p: 2,
904
- border: 0,
905
- minW: "sm",
906
- maxH: 300,
907
- overflowY: "auto",
908
- rounded: "xl",
909
- boxShadow: "xl",
910
- bg: background,
911
- children: /* @__PURE__ */ jsxRuntime.jsx(react.List, { spacing: 2, p: 0, children: children == null ? void 0 : children.map((child, index$12) => {
912
- return /* @__PURE__ */ jsxRuntime.jsx(react.ListItem, { rounded: "md", _hover: { bg: backgroundHover }, children: /* @__PURE__ */ jsxRuntime.jsxs(react.Flex, { as: index.Link, to: index$2.buildPath(child.slug, slug), p: 2, role: "group", children: [
913
- /* @__PURE__ */ jsxRuntime.jsx(react.Text, { fontWeight: 500, transition: "all .3s ease", _groupHover: { color: "brand.400" }, children: child.label }),
914
- /* @__PURE__ */ jsxRuntime.jsx(
915
- react.Flex,
719
+ as: "form",
720
+ borderRadius: "lg",
721
+ p: 8,
722
+ color: react.useColorModeValue("gray.700", "whiteAlpha.900"),
723
+ bg: react.useColorModeValue("white", "gray.700"),
724
+ shadow: "base",
725
+ onSubmit: handleSubmit,
726
+ ...boxProps,
727
+ children: /* @__PURE__ */ jsxRuntime.jsxs(react.VStack, { spacing: 4, children: [
728
+ /* @__PURE__ */ jsxRuntime.jsxs(react.FormControl, { isRequired: true, children: [
729
+ /* @__PURE__ */ jsxRuntime.jsx(react.FormLabel, { children: t("field.name.label") }),
730
+ /* @__PURE__ */ jsxRuntime.jsxs(react.InputGroup, { children: [
731
+ /* @__PURE__ */ jsxRuntime.jsx(react.InputLeftElement, { children: /* @__PURE__ */ jsxRuntime.jsx(
732
+ "svg",
916
733
  {
917
- flex: 1,
918
- justify: "flex-end",
919
- align: "center",
920
- opacity: 0,
921
- transition: "all .3s ease",
922
- transform: "translateX(-10px)",
923
- _groupHover: { opacity: 1, transform: "translateX(0)" },
924
- children: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { as: icons.ChevronRightIcon, color: "brand.400", w: 5, h: 5 })
734
+ xmlns: "http://www.w3.org/2000/svg",
735
+ width: "16",
736
+ height: "16",
737
+ fill: "currentColor",
738
+ className: "bi bi-person-fill",
739
+ viewBox: "0 0 16 16",
740
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6" })
925
741
  }
926
- )
927
- ] }) }, index$12);
928
- }) })
929
- }
930
- )
931
- ] });
932
- };
933
- const DesktopNavigation = ({ menu }) => {
934
- return /* @__PURE__ */ jsxRuntime.jsx(react.Flex, { as: "ul", role: "list", gap: 2, p: 0, display: { base: "none", md: "flex" }, children: menu.map((item, index2) => {
935
- var _a;
936
- return /* @__PURE__ */ jsxRuntime.jsx(react.Flex, { as: "li", role: "listitem", children: ((_a = item.children) == null ? void 0 : _a.length) ? /* @__PURE__ */ jsxRuntime.jsx(NavList$1, { ...item }) : /* @__PURE__ */ jsxRuntime.jsx(NavLink, { ...item }) }, index2);
937
- }) });
938
- };
939
- const CHEVRON_DOWN_ICON_SIZE = "1.5rem";
940
- const NavList = ({ slug, label, children, isExpanded, onExpand }) => {
941
- return /* @__PURE__ */ jsxRuntime.jsxs(react.Stack, { flex: 1, children: [
942
- /* @__PURE__ */ jsxRuntime.jsxs(
943
- react.Flex,
944
- {
945
- as: "button",
946
- p: 2,
947
- pr: "3px",
948
- align: "center",
949
- justifyContent: "space-between",
950
- _hover: { textDecoration: "none", color: "brand.400" },
951
- onClick: onExpand,
952
- children: [
953
- /* @__PURE__ */ jsxRuntime.jsx(react.Text, { isTruncated: true, fontWeight: 600, children: label }),
954
- /* @__PURE__ */ jsxRuntime.jsx(
955
- icons.ChevronDownIcon,
956
- {
957
- w: CHEVRON_DOWN_ICON_SIZE,
958
- h: CHEVRON_DOWN_ICON_SIZE,
959
- transform: isExpanded ? "rotate(180deg)" : "",
960
- transition: "all .25s ease-in-out"
961
- }
962
- )
963
- ]
964
- }
965
- ),
966
- /* @__PURE__ */ jsxRuntime.jsx(react.Collapse, { in: isExpanded, transition: { enter: { ease: "easeIn" }, exit: { duration: 0.2 } }, children: /* @__PURE__ */ jsxRuntime.jsx(
967
- react.List,
968
- {
969
- ml: 2,
970
- pl: 0,
971
- maxH: 300,
972
- overflowY: "auto",
973
- borderLeft: 1,
974
- borderStyle: "solid",
975
- borderColor: react.useColorModeValue("gray.200", "gray.700"),
976
- children: children == null ? void 0 : children.map((child, index$12) => /* @__PURE__ */ jsxRuntime.jsx(react.Flex, { as: "li", role: "listitem", children: /* @__PURE__ */ jsxRuntime.jsx(react.Text, { as: index.Link, to: index$2.buildPath(child.slug, slug), p: 2, fontSize: "sm", children: child.label }) }, index$12))
977
- }
978
- ) })
979
- ] });
980
- };
981
- const CLOSE_ICON_SIZE = "0.75rem";
982
- const HAMBURGER_ICON_SIZE = "1rem";
983
- const MobileNavigation = ({ menu }) => {
984
- const [expanded, setExpanded] = react$1.useState(null);
985
- const { isOpen, onToggle } = react.useDisclosure();
986
- const background = react.useColorModeValue("gray.50", "gray.900");
987
- function handleExpand(index2) {
988
- return () => {
989
- setExpanded((prev) => prev === index2 ? null : index2);
990
- };
991
- }
992
- function handleClick() {
993
- setExpanded(null);
994
- onToggle();
995
- }
996
- return /* @__PURE__ */ jsxRuntime.jsxs(react.Box, { display: { base: "block", md: "none" }, children: [
997
- /* @__PURE__ */ jsxRuntime.jsx(
998
- react.IconButton,
999
- {
1000
- icon: isOpen ? /* @__PURE__ */ jsxRuntime.jsx(icons.CloseIcon, { w: CLOSE_ICON_SIZE, h: CLOSE_ICON_SIZE }) : /* @__PURE__ */ jsxRuntime.jsx(icons.HamburgerIcon, { w: HAMBURGER_ICON_SIZE, h: HAMBURGER_ICON_SIZE }),
1001
- size: "sm",
1002
- variant: "ghost",
1003
- "aria-label": `${isOpen ? "Close" : "Open"} navigation menu`,
1004
- "aria-expanded": isOpen,
1005
- onClick: handleClick
1006
- }
1007
- ),
1008
- /* @__PURE__ */ jsxRuntime.jsx(react.Collapse, { in: isOpen, animateOpacity: true, children: /* @__PURE__ */ jsxRuntime.jsx(react.Box, { position: "absolute", top: 16, left: 0, right: 0, w: "100vw", px: 2, children: /* @__PURE__ */ jsxRuntime.jsx(
1009
- react.List,
1010
- {
1011
- spacing: 2,
1012
- p: 2,
1013
- boxShadow: "md",
1014
- borderWidth: "1px",
1015
- borderColor: react.useColorModeValue("gray.200", "gray.700"),
1016
- borderRadius: "md",
1017
- bg: background,
1018
- children: menu.map((item, index2) => {
1019
- var _a;
1020
- return /* @__PURE__ */ jsxRuntime.jsx(react.Flex, { as: "li", role: "listitem", children: ((_a = item.children) == null ? void 0 : _a.length) ? /* @__PURE__ */ jsxRuntime.jsx(NavList, { ...item, isExpanded: index2 === expanded, onExpand: handleExpand(index2) }) : /* @__PURE__ */ jsxRuntime.jsx(NavLink, { ...item }) }, index2);
1021
- })
1022
- }
1023
- ) }) })
1024
- ] });
1025
- };
1026
- const Navigation = ({ menu }) => {
1027
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1028
- /* @__PURE__ */ jsxRuntime.jsx(DesktopNavigation, { menu }),
1029
- /* @__PURE__ */ jsxRuntime.jsx(MobileNavigation, { menu })
1030
- ] });
1031
- };
1032
- const Header = () => {
1033
- var _a;
1034
- const { navigation, localization, config } = index.useSiteContext();
1035
- const { currentLocale } = index.usePageContext();
1036
- const locales = localization.locales;
1037
- const menu = navigation.header[currentLocale.code] ?? [];
1038
- const toolbar = (_a = config == null ? void 0 : config.header) == null ? void 0 : _a.toolbar;
1039
- const isMultiLanguage = locales.length > 1;
1040
- const hasNavigation = !!menu.length;
1041
- const hasToolbar = !!toolbar || isMultiLanguage;
1042
- return /* @__PURE__ */ jsxRuntime.jsx(
1043
- react.Box,
1044
- {
1045
- as: "header",
1046
- position: "sticky",
1047
- top: 0,
1048
- bg: react.useColorModeValue("white", "gray.900"),
1049
- color: react.useColorModeValue("gray.700", "gray.200"),
1050
- boxShadow: "sm",
1051
- zIndex: 100,
1052
- children: /* @__PURE__ */ jsxRuntime.jsx(Container, { children: /* @__PURE__ */ jsxRuntime.jsxs(react.Flex, { as: "nav", gap: 2, py: 2, children: [
1053
- /* @__PURE__ */ jsxRuntime.jsx(Brand, { brand: /* @__PURE__ */ jsxRuntime.jsx(Logo, {}) }),
1054
- (hasNavigation || hasToolbar) && /* @__PURE__ */ jsxRuntime.jsxs(
1055
- react.Flex,
1056
- {
1057
- as: "section",
1058
- flex: 1,
1059
- flexDir: { base: "row-reverse", md: "row" },
1060
- justifyContent: "end",
1061
- align: "center",
1062
- gap: 2,
1063
- children: [
1064
- hasNavigation && /* @__PURE__ */ jsxRuntime.jsx(react.Flex, { flex: { base: 0, md: 1 }, children: /* @__PURE__ */ jsxRuntime.jsx(Navigation, { menu }) }),
1065
- hasToolbar && /* @__PURE__ */ jsxRuntime.jsxs(react.Flex, { gap: 2, flex: { base: 1, md: 0 }, justifyContent: "flex-end", children: [
1066
- !!toolbar && toolbar,
1067
- isMultiLanguage && /* @__PURE__ */ jsxRuntime.jsx(LocaleSwitcher, { currentLocale, locales })
1068
- ] })
1069
- ]
1070
- }
1071
- )
1072
- ] }) })
1073
- }
1074
- );
1075
- };
1076
- const Hero = ({ title, subtitle, content, link, image }) => {
1077
- return /* @__PURE__ */ jsxRuntime.jsx(react.Box, { as: "section", bg: "gray.900", children: /* @__PURE__ */ jsxRuntime.jsx(Container, { children: /* @__PURE__ */ jsxRuntime.jsxs(react.Flex, { direction: { base: "column", md: "row" }, children: [
1078
- /* @__PURE__ */ jsxRuntime.jsx(react.Flex, { align: "center", justify: { base: "center", md: "flex-start" }, flex: 1, py: 8, pe: 8, children: /* @__PURE__ */ jsxRuntime.jsxs(react.Stack, { spacing: 6, w: "full", maxW: "lg", children: [
1079
- /* @__PURE__ */ jsxRuntime.jsxs(react.Heading, { as: "h1", fontSize: { base: "3xl", md: "4xl", lg: "5xl" }, children: [
1080
- /* @__PURE__ */ jsxRuntime.jsxs(react.Text, { as: "span", display: "block", children: [
1081
- title,
1082
- " —"
742
+ ) }),
743
+ /* @__PURE__ */ jsxRuntime.jsx(react.Input, { type: "text", name: "name", placeholder: t("field.name.placeholder") })
744
+ ] })
1083
745
  ] }),
1084
- /* @__PURE__ */ jsxRuntime.jsx(react.Text, { as: "span", display: "block", color: "brand.400", children: subtitle })
1085
- ] }),
1086
- /* @__PURE__ */ jsxRuntime.jsx(react.Text, { fontSize: { base: "md", lg: "lg" }, color: "gray.500", children: content }),
1087
- !!link && /* @__PURE__ */ jsxRuntime.jsx(react.Flex, { direction: { base: "column", md: "row" }, children: /* @__PURE__ */ jsxRuntime.jsx(LinkButton, { ...link, size: "md", textDecoration: "none" }) })
1088
- ] }) }),
1089
- image && /* @__PURE__ */ jsxRuntime.jsx(react.Flex, { display: { base: "none", md: "flex" }, flex: 1, children: image })
1090
- ] }) }) });
1091
- };
1092
- const Main = ({ children }) => {
1093
- return /* @__PURE__ */ jsxRuntime.jsx(
1094
- react.Flex,
1095
- {
1096
- as: "main",
1097
- direction: "column",
1098
- flexGrow: 1,
1099
- bg: react.useColorModeValue("white", "gray.800"),
1100
- color: react.useColorModeValue("gray.700", "gray.200"),
1101
- children
1102
- }
1103
- );
1104
- };
1105
- const ScrollToTop = () => {
1106
- const [isVisible, setIsVisible] = react$1.useState(false);
1107
- react$1.useEffect(() => {
1108
- const toggleVisibility = () => {
1109
- setIsVisible(window.scrollY > 300);
1110
- };
1111
- window.addEventListener("scroll", toggleVisibility);
1112
- return () => {
1113
- window.removeEventListener("scroll", toggleVisibility);
1114
- };
1115
- }, []);
1116
- function handleClick() {
1117
- window.scrollTo({
1118
- top: 0,
1119
- behavior: "smooth"
1120
- });
1121
- }
1122
- return /* @__PURE__ */ jsxRuntime.jsx(
1123
- react.Box,
1124
- {
1125
- position: "fixed",
1126
- bottom: { base: 4, md: 8, lg: 16 },
1127
- right: { base: 4, md: 8, lg: 16 },
1128
- zIndex: "1000",
1129
- opacity: isVisible ? 1 : 0,
1130
- transform: isVisible ? "translateY(0)" : "translateY(0.5rem)",
1131
- transition: "opacity 0.4s ease, transform 0.4s ease",
1132
- pointerEvents: isVisible ? "auto" : "none",
1133
- children: /* @__PURE__ */ jsxRuntime.jsx(
1134
- react.IconButton,
1135
- {
1136
- "aria-label": "Scroll to top",
1137
- icon: /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronUpIcon, { w: 6, h: 6 }),
1138
- size: "lg",
1139
- shadow: "lg",
1140
- colorScheme: "brand",
1141
- isRound: true,
1142
- onClick: handleClick
1143
- }
1144
- )
746
+ /* @__PURE__ */ jsxRuntime.jsxs(react.FormControl, { isRequired: true, children: [
747
+ /* @__PURE__ */ jsxRuntime.jsx(react.FormLabel, { children: t("field.email.label") }),
748
+ /* @__PURE__ */ jsxRuntime.jsxs(react.InputGroup, { children: [
749
+ /* @__PURE__ */ jsxRuntime.jsx(react.InputLeftElement, { children: /* @__PURE__ */ jsxRuntime.jsx(icons.EmailIcon, {}) }),
750
+ /* @__PURE__ */ jsxRuntime.jsx(react.Input, { type: "email", name: "email", placeholder: t("field.email.placeholder") })
751
+ ] })
752
+ ] }),
753
+ /* @__PURE__ */ jsxRuntime.jsxs(react.FormControl, { isRequired: true, children: [
754
+ /* @__PURE__ */ jsxRuntime.jsx(react.FormLabel, { children: t("field.message.label") }),
755
+ /* @__PURE__ */ jsxRuntime.jsx(react.Textarea, { name: "message", placeholder: t("field.message.placeholder"), rows: 6, resize: "none" })
756
+ ] }),
757
+ /* @__PURE__ */ jsxRuntime.jsx(react.Button, { type: "submit", colorScheme: "brand", width: "full", children: t("action.send") })
758
+ ] })
1145
759
  }
1146
760
  );
1147
761
  };
1148
- const Layout = ({ children }) => {
1149
- const content = typeof children === "function" ? children({ Hero, Content }) : /* @__PURE__ */ jsxRuntime.jsx(Content, { children });
1150
- return /* @__PURE__ */ jsxRuntime.jsxs(react.Stack, { spacing: 0, position: "relative", w: "100%", minH: "100dvh", children: [
1151
- /* @__PURE__ */ jsxRuntime.jsx(Header, {}),
1152
- /* @__PURE__ */ jsxRuntime.jsx(Main, { children: content }),
1153
- /* @__PURE__ */ jsxRuntime.jsx(Footer, {}),
1154
- /* @__PURE__ */ jsxRuntime.jsx(ScrollToTop, {})
762
+ const Contacts = () => {
763
+ const { t } = reactI18next.useTranslation("pageContacts");
764
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
765
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading1, { children: t("title") }),
766
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("text") }),
767
+ /* @__PURE__ */ jsxRuntime.jsx(ContactForm, {})
1155
768
  ] });
1156
769
  };
1157
- const List = ({ items, bullet = "—", render, ...boxProps }) => {
1158
- return /* @__PURE__ */ jsxRuntime.jsx(react.List, { pl: 0, ml: 2, ...boxProps, children: items.map((item, index2) => /* @__PURE__ */ jsxRuntime.jsxs(react.ListItem, { display: "flex", gap: 1, children: [
1159
- /* @__PURE__ */ jsxRuntime.jsx(react.Box, { children: bullet }),
1160
- render ? render(item) : item
1161
- ] }, index2)) });
770
+ const PrivacyPolicy = ({ contactsSlug }) => {
771
+ const { t } = reactI18next.useTranslation("pagePrivacyPolicy");
772
+ const { metadata } = index.useSiteContext();
773
+ const { name: siteName } = metadata;
774
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
775
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading1, { children: t("title") }),
776
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("text") }),
777
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading2, { children: t("sectionOne.title", { siteName }) }),
778
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("sectionOne.text", { siteName }) }),
779
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading2, { children: t("sectionTwo.title") }),
780
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("sectionTwo.textOne") }),
781
+ /* @__PURE__ */ jsxRuntime.jsxs(index$3.Unordered, { children: [
782
+ /* @__PURE__ */ jsxRuntime.jsx("li", { children: t("sectionTwo.list.itemOne") }),
783
+ /* @__PURE__ */ jsxRuntime.jsx("li", { children: t("sectionTwo.list.itemTwo") })
784
+ ] }),
785
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("sectionTwo.textTwo") }),
786
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading2, { children: t("sectionThree.title") }),
787
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("sectionThree.text") }),
788
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading2, { children: t("sectionFour.title") }),
789
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("sectionFour.text") }),
790
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading2, { children: t("sectionFive.title") }),
791
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("sectionFive.text", { siteName }) }),
792
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading2, { children: t("sectionSix.title") }),
793
+ contactsSlug ? /* @__PURE__ */ jsxRuntime.jsxs(index$3.Paragraph, { children: [
794
+ t("sectionSix.textWithLink.contentStart"),
795
+ /* @__PURE__ */ jsxRuntime.jsx(index.Link, { color: "brand.400", to: contactsSlug, children: t("sectionSix.textWithLink.link") }),
796
+ t("sectionSix.textWithLink.contentEnd", { siteName })
797
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("sectionSix.text", { siteName }) })
798
+ ] });
1162
799
  };
1163
- const NotFound = () => {
1164
- const { t } = reactI18next.useTranslation("pageNotFound");
1165
- return /* @__PURE__ */ jsxRuntime.jsxs(react.Stack, { gap: 4, children: [
1166
- /* @__PURE__ */ jsxRuntime.jsx(react.Heading, { as: "h1", children: t("title") }),
1167
- /* @__PURE__ */ jsxRuntime.jsxs(react.Text, { fontSize: "xl", children: [
1168
- t("description"),
1169
- " ",
1170
- /* @__PURE__ */ jsxRuntime.jsx(react.Button, { as: index.Link, to: "/", variant: "link", colorScheme: "brand", fontSize: "xl", children: t("action") })
1171
- ] })
800
+ const TermsAndConditions = ({ privacyPolicySlug }) => {
801
+ const { t } = reactI18next.useTranslation("pageTermsAndConditions");
802
+ const { metadata } = index.useSiteContext();
803
+ const { name: siteName } = metadata;
804
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
805
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading1, { children: t("title") }),
806
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("text", { siteName }) }),
807
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading2, { children: t("sectionOne.title") }),
808
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("sectionOne.text", { siteName }) }),
809
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Unordered, { children: ["One", "Two", "Three", "Four"].map((i, index2) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsxs(index$3.Paragraph, { children: [
810
+ /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
811
+ t(`sectionOne.list.item${i}.title`),
812
+ ":"
813
+ ] }),
814
+ /* @__PURE__ */ jsxRuntime.jsx("br", {}),
815
+ t(`sectionOne.list.item${i}.description`, { siteName })
816
+ ] }) }, index2)) }),
817
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading2, { children: t("sectionTwo.title") }),
818
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Ordered, { children: ["One", "Two", "Three", "Four"].map((i, index2) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsxs(index$3.Paragraph, { children: [
819
+ /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
820
+ t(`sectionTwo.list.item${i}.title`),
821
+ ":"
822
+ ] }),
823
+ /* @__PURE__ */ jsxRuntime.jsx("br", {}),
824
+ t(`sectionTwo.list.item${i}.description`, { siteName })
825
+ ] }) }, index2)) }),
826
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading2, { children: t("sectionThree.title") }),
827
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("sectionThree.text", { siteName }) }),
828
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading2, { children: t("sectionFour.title") }),
829
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("sectionFour.text", { siteName }) }),
830
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Unordered, { children: ["One", "Two"].map((i, index2) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsxs(index$3.Paragraph, { children: [
831
+ /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
832
+ t(`sectionFour.list.item${i}.title`),
833
+ ":"
834
+ ] }),
835
+ /* @__PURE__ */ jsxRuntime.jsx("br", {}),
836
+ t(`sectionFour.list.item${i}.description`, { siteName })
837
+ ] }) }, index2)) }),
838
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading2, { children: t("sectionFive.title") }),
839
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("sectionFive.text", { siteName }) }),
840
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading2, { children: t("sectionSix.title") }),
841
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("sectionSix.textOne") }),
842
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Unordered, { children: ["One", "Two", "Three"].map((i, index2) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: t(`sectionSix.list.item${i}`) }, index2)) }),
843
+ privacyPolicySlug ? /* @__PURE__ */ jsxRuntime.jsxs(index$3.Paragraph, { children: [
844
+ t("sectionSix.textTwoWithLink.contentStart"),
845
+ /* @__PURE__ */ jsxRuntime.jsx(index.Link, { color: "brand.400", to: privacyPolicySlug, children: t("sectionSix.textTwoWithLink.link") }),
846
+ t("sectionSix.textTwoWithLink.contentEnd")
847
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(index$3.Paragraph, { children: t("sectionSix.textTwo") }),
848
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Heading2, { children: t("sectionSeven.title") }),
849
+ /* @__PURE__ */ jsxRuntime.jsx(index$3.Ordered, { children: ["One", "Two"].map((i, index2) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsxs(index$3.Paragraph, { children: [
850
+ /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
851
+ t(`sectionSeven.list.item${i}.title`),
852
+ ":"
853
+ ] }),
854
+ /* @__PURE__ */ jsxRuntime.jsx("br", {}),
855
+ t(`sectionSeven.list.item${i}.description`, { siteName })
856
+ ] }) }, index2)) })
1172
857
  ] });
1173
858
  };
1174
859
  const TitleMap = {
@@ -1252,8 +937,8 @@ const Seo = ({ children, title, description, lang }) => {
1252
937
  const placeholders = react$1.useMemo(
1253
938
  () => ({
1254
939
  siteName,
1255
- currentYear: index$4.getCurrentYear(siteLang),
1256
- currentMonth: index$4.getCurrentMonth(siteLang)
940
+ currentYear: index$1.getCurrentYear(siteLang),
941
+ currentMonth: index$1.getCurrentMonth(siteLang)
1257
942
  }),
1258
943
  [siteName, siteLang]
1259
944
  );
@@ -1311,29 +996,7 @@ const Tabs = ({ items, render, ...boxProps }) => {
1311
996
  ] });
1312
997
  };
1313
998
  const Tip = ({ tip, author = null, ...boxProps }) => {
1314
- return /* @__PURE__ */ jsxRuntime.jsxs(
1315
- react.Card,
1316
- {
1317
- variant: "filled",
1318
- p: 4,
1319
- borderLeft: "4px solid gray",
1320
- gap: 4,
1321
- _before: {
1322
- content: '"❛❛"',
1323
- position: "absolute",
1324
- top: -8,
1325
- left: -2,
1326
- fontSize: "6rem",
1327
- fontStyle: "italic",
1328
- color: react.useColorModeValue("blackAlpha.300", "whiteAlpha.300")
1329
- },
1330
- ...boxProps,
1331
- children: [
1332
- /* @__PURE__ */ jsxRuntime.jsx(react.CardBody, { as: "blockquote", p: 0, fontStyle: "italic", children: tip }),
1333
- !!author && /* @__PURE__ */ jsxRuntime.jsx(react.CardFooter, { alignItems: "center", justify: "flex-end", p: 0, children: /* @__PURE__ */ jsxRuntime.jsx(Author, { author, variant: "short" }) })
1334
- ]
1335
- }
1336
- );
999
+ return /* @__PURE__ */ jsxRuntime.jsx(Informer, { type: "quote", text: tip, author, ...boxProps });
1337
1000
  };
1338
1001
  const ExternalImage = ({ image, component: ImageComponent, alt = "", ...imageProps }) => {
1339
1002
  var _a, _b;
@@ -1354,7 +1017,10 @@ function extractCurrencies(currencyList) {
1354
1017
  return [...new Set(currencyList.items.map(({ code }) => code))];
1355
1018
  }
1356
1019
  const StrapiComponent = ({ type, props, imageComponent }) => {
1020
+ var _a;
1357
1021
  switch (type) {
1022
+ case "STRAPI__COMPONENT_CONTENT_ACTION_BUTTON":
1023
+ return /* @__PURE__ */ jsxRuntime.jsx(ActionButton, { label: props.label, href: props.url, mb: 4 });
1358
1024
  case "STRAPI__COMPONENT_CONTENT_FAQ":
1359
1025
  return /* @__PURE__ */ jsxRuntime.jsx(Faq, { items: props.items, mb: 4 });
1360
1026
  case "STRAPI__COMPONENT_CONTENT_FEATURES":
@@ -1409,8 +1075,8 @@ const StrapiComponent = ({ type, props, imageComponent }) => {
1409
1075
  GameDemo,
1410
1076
  {
1411
1077
  name: props.name,
1412
- src: props.src,
1413
- href: props.href,
1078
+ src: props == null ? void 0 : props.src,
1079
+ refLink: ((_a = props == null ? void 0 : props.partner) == null ? void 0 : _a.refLink) ?? (props == null ? void 0 : props.href),
1414
1080
  previewImage: /* @__PURE__ */ jsxRuntime.jsx(ExternalImage, { image: props.previewImage, alt: props.name, component: imageComponent }),
1415
1081
  mb: 4
1416
1082
  }
@@ -1436,6 +1102,27 @@ const StrapiComponent = ({ type, props, imageComponent }) => {
1436
1102
  mb: 4
1437
1103
  }
1438
1104
  );
1105
+ case "STRAPI__COMPONENT_CONTENT_INFORMER":
1106
+ return /* @__PURE__ */ jsxRuntime.jsx(
1107
+ Informer,
1108
+ {
1109
+ type: props.type,
1110
+ text: props.text,
1111
+ author: props.author ? {
1112
+ ...props.author,
1113
+ avatar: /* @__PURE__ */ jsxRuntime.jsx(
1114
+ ExternalImage,
1115
+ {
1116
+ component: imageComponent,
1117
+ image: props.author.avatar,
1118
+ alt: props.author.name,
1119
+ style: { borderRadius: "50%" }
1120
+ }
1121
+ )
1122
+ } : null,
1123
+ mb: 4
1124
+ }
1125
+ );
1439
1126
  case "STRAPI__COMPONENT_CONTENT_LIST":
1440
1127
  return /* @__PURE__ */ jsxRuntime.jsx(List, { bullet: props.bullet, items: extractItemsFromJson(props.content), mb: 4 });
1441
1128
  case "STRAPI__COMPONENT_CONTENT_MEDIA":
@@ -1484,6 +1171,14 @@ const StrapiComponent = ({ type, props, imageComponent }) => {
1484
1171
  mb: 4
1485
1172
  }
1486
1173
  );
1174
+ case "STRAPI__COMPONENT_CONTENT_CONTACTS_PAGE":
1175
+ return /* @__PURE__ */ jsxRuntime.jsx(Contacts, { ...props });
1176
+ case "STRAPI__COMPONENT_CONTENT_COOKIE_POLICY_PAGE":
1177
+ return /* @__PURE__ */ jsxRuntime.jsx(CookiePolicy, { ...props });
1178
+ case "STRAPI__COMPONENT_CONTENT_PRIVACY_POLICY_PAGE":
1179
+ return /* @__PURE__ */ jsxRuntime.jsx(PrivacyPolicy, { ...props });
1180
+ case "STRAPI__COMPONENT_CONTENT_TERMS_CONDITIONS_PAGE":
1181
+ return /* @__PURE__ */ jsxRuntime.jsx(TermsAndConditions, { ...props });
1487
1182
  default:
1488
1183
  return null;
1489
1184
  }
@@ -1499,12 +1194,18 @@ const StrapiContentRenderer = ({ content, imageComponent }) => {
1499
1194
  }
1500
1195
  return content.map(({ __typename: type, ...props }, index2) => /* @__PURE__ */ jsxRuntime.jsx(StrapiComponent, { type, props, imageComponent }, index2));
1501
1196
  };
1197
+ exports.ActionButton = ActionButton;
1198
+ exports.ArticleCard = ArticleCard;
1199
+ exports.ArticleCardGrid = ArticleCardGrid;
1200
+ exports.ArticleInfoCard = ArticleInfoCard;
1201
+ exports.ArticleMeta = ArticleMeta;
1502
1202
  exports.Author = Author;
1503
1203
  exports.AuthorCard = AuthorCard;
1504
1204
  exports.BonusCard = BonusCard;
1505
1205
  exports.BonusCardGrid = BonusCardGrid;
1506
1206
  exports.Center = Center;
1507
- exports.ContactForm = ContactForm;
1207
+ exports.Contacts = Contacts;
1208
+ exports.CookiePolicy = CookiePolicy;
1508
1209
  exports.Faq = Faq;
1509
1210
  exports.FeatureCard = FeatureCard;
1510
1211
  exports.FeatureCardGrid = FeatureCardGrid;
@@ -1514,15 +1215,14 @@ exports.GameDemo = GameDemo;
1514
1215
  exports.GameInfo = GameInfo;
1515
1216
  exports.Grid = Grid;
1516
1217
  exports.HowTo = HowTo;
1517
- exports.Layout = Layout;
1518
- exports.LinkButton = LinkButton;
1218
+ exports.Informer = Informer;
1519
1219
  exports.List = List;
1520
1220
  exports.NotFound = NotFound;
1221
+ exports.PrivacyPolicy = PrivacyPolicy;
1521
1222
  exports.ProsCons = ProsCons;
1522
1223
  exports.Seo = Seo;
1523
- exports.SocialNetwork = SocialNetwork;
1524
- exports.SocialNetworks = SocialNetworks;
1525
1224
  exports.StrapiContentRenderer = StrapiContentRenderer;
1526
1225
  exports.Table = Table;
1527
1226
  exports.Tabs = Tabs;
1227
+ exports.TermsAndConditions = TermsAndConditions;
1528
1228
  exports.Tip = Tip;