@anywayseo/tools 2.6.0 → 3.0.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 (36) hide show
  1. package/dist/components/author-card/index.d.ts +7 -0
  2. package/dist/components/{author → base/author}/index.d.ts +3 -3
  3. package/dist/components/base/index.d.ts +1 -1
  4. package/dist/components/index.cjs +4 -3
  5. package/dist/components/index.d.ts +3 -2
  6. package/dist/components/index.mjs +10 -9
  7. package/dist/components/not-found/index.d.ts +3 -0
  8. package/dist/components/seo/index.d.ts +7 -12
  9. package/dist/components/seo/types.d.ts +6 -0
  10. package/dist/components/seo/utils.d.ts +2 -0
  11. package/dist/components/{expert-tip → tip}/index.d.ts +4 -4
  12. package/dist/i18n/index.cjs +1 -1
  13. package/dist/i18n/index.mjs +1 -1
  14. package/dist/{index-BqUBNm7v.mjs → index-25M8hPOF.mjs} +1 -6
  15. package/dist/{index-BEqFPNAt.js → index-Biz1dDqA.js} +12 -12
  16. package/dist/{index-D2APUOog.js → index-Cte2-g6s.js} +1 -6
  17. package/dist/{index-Ct1pg92K.mjs → index-DIxzgBCq.mjs} +113 -98
  18. package/dist/{index-F6_fGeRI.mjs → index-DoBCANwf.mjs} +12 -12
  19. package/dist/index-HmqLMmGf.js +1036 -0
  20. package/dist/index.cjs +6 -6
  21. package/dist/index.mjs +11 -11
  22. package/dist/providers/site-provider/index.d.ts +1 -2
  23. package/dist/types/components/how-to/index.d.ts +2 -2
  24. package/dist/types/components/image/index.d.ts +4 -0
  25. package/dist/types/content/author/index.d.ts +5 -4
  26. package/dist/types/content/index.d.ts +1 -0
  27. package/dist/types/content/seo/index.d.ts +4 -0
  28. package/dist/types/site/index.d.ts +8 -14
  29. package/dist/utils/index.cjs +1 -2
  30. package/dist/utils/index.d.ts +0 -1
  31. package/dist/utils/index.mjs +1 -2
  32. package/package.json +1 -1
  33. package/dist/components/base/expert/index.d.ts +0 -8
  34. package/dist/index-qgcoV14g.js +0 -1021
  35. package/dist/utils/url/index.d.ts +0 -1
  36. /package/dist/components/base/{expert → author}/bio/index.d.ts +0 -0
@@ -1,20 +1,17 @@
1
- import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
- import { Center as Center$1, Box, Collapse, Text, Button, Flex, Stack, Image, SimpleGrid, Link, Card, CardHeader, Heading, CardBody, Popover, PopoverTrigger, Portal, PopoverContent, PopoverBody, CardFooter, useToast, useColorModeValue, VStack, FormControl, FormLabel, InputGroup, InputLeftElement, Input, Textarea, Accordion, AccordionItem, AccordionButton, AccordionIcon, AccordionPanel, LinkBox, LinkOverlay, IconButton, AbsoluteCenter, Spinner, useDisclosure, Divider, Circle, Container as Container$1, List as List$1, ListItem, Icon, ListIcon, TableContainer, Table as Table$1, Thead, Tr, Th, Tbody, Td, TableCaption, Tabs as Tabs$1, TabList, Tab, TabPanels, TabPanel } from "@chakra-ui/react";
1
+ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
+ import { Box, Collapse, Text, Button, Flex, Stack, Image, Center as Center$1, SimpleGrid, Link, Card, CardHeader, Heading, CardBody, Popover, PopoverTrigger, Portal, PopoverContent, PopoverBody, CardFooter, useToast, useColorModeValue, VStack, FormControl, FormLabel, InputGroup, InputLeftElement, Input, Textarea, Accordion, AccordionItem, AccordionButton, AccordionIcon, AccordionPanel, LinkBox, LinkOverlay, IconButton, AbsoluteCenter, Spinner, useDisclosure, Divider, Circle, Container as Container$1, List as List$1, ListItem, Icon, ListIcon, TableContainer, Table as Table$1, Thead, Tr, Th, Tbody, Td, TableCaption, Tabs as Tabs$1, TabList, Tab, TabPanels, TabPanel } from "@chakra-ui/react";
3
3
  import { useTranslation } from "react-i18next";
4
- import { A as Animation, b as formatNumber, c as getCurrencySymbol, f as formatDate, d as getDomain, g as getCurrentYear, a as getCurrentMonth } from "./index-BqUBNm7v.mjs";
5
- import { a as GameCharacteristic } from "./index-F6_fGeRI.mjs";
4
+ import { A as Animation, b as formatNumber, c as getCurrencySymbol, f as formatDate, g as getCurrentYear, a as getCurrentMonth } from "./index-25M8hPOF.mjs";
5
+ import { a as GameCharacteristic } from "./index-DoBCANwf.mjs";
6
6
  import "@ctrl/tinycolor";
7
- import { useMDXComponents } from "@mdx-js/react";
8
- import { u as useSiteContext } from "./index-BNb-P8a6.mjs";
9
7
  import { useRef, useState, useLayoutEffect, Fragment as Fragment$1, forwardRef, useEffect, useMemo } from "react";
10
8
  import { EmailIcon, StarIcon, CloseIcon, ExternalLinkIcon, ChevronRightIcon, ChevronDownIcon, HamburgerIcon, ChevronUpIcon, WarningIcon, CheckCircleIcon } from "@chakra-ui/icons";
11
9
  import { u as usePrimaryColors } from "./index-xuSxvz5z.mjs";
10
+ import { useMDXComponents } from "@mdx-js/react";
11
+ import { u as useSiteContext } from "./index-BNb-P8a6.mjs";
12
12
  import { t } from "i18next";
13
13
  import { Link as Link$1 } from "gatsby";
14
14
  import Markdown from "react-markdown";
15
- const Center = ({ children, ...boxProps }) => {
16
- return /* @__PURE__ */ jsx(Center$1, { ...boxProps, children });
17
- };
18
15
  const ONE_LINE_HEIGHT = 24;
19
16
  const Bio = ({ content, maxLines = 1 }) => {
20
17
  const ref = useRef(null);
@@ -39,19 +36,15 @@ const Bio = ({ content, maxLines = 1 }) => {
39
36
  showToggle && /* @__PURE__ */ jsx(Button, { size: "sm", variant: "link", colorScheme: "blue", onClick: handleClick, children: isExpanded ? t2("action.collapse") : t2("action.expand") })
40
37
  ] });
41
38
  };
42
- const Expert = ({ expert, variant }) => {
43
- var _a;
44
- const { firstName, lastName, jobTitle, bio } = expert;
45
- const { assets } = useSiteContext();
46
- const fullName = `${firstName} ${lastName}`;
47
- const image = (_a = assets == null ? void 0 : assets.images) == null ? void 0 : _a.expert;
48
- const imageComponent = typeof image === "string" ? /* @__PURE__ */ jsx(Image, { src: image, alt: fullName, rounded: "full" }) : image;
39
+ const Author = ({ author, variant }) => {
40
+ const { name, role, bio, avatar } = author;
41
+ const imageComponent = typeof avatar === "string" ? /* @__PURE__ */ jsx(Image, { src: avatar, alt: name, rounded: "full" }) : avatar;
49
42
  if (variant === "short") {
50
43
  return /* @__PURE__ */ jsxs(Flex, { as: "article", align: "center", gap: 4, children: [
51
44
  !!imageComponent && /* @__PURE__ */ jsx(Box, { w: 12, h: 12, children: imageComponent }),
52
45
  /* @__PURE__ */ jsxs(Box, { fontWeight: "semibold", children: [
53
- /* @__PURE__ */ jsx(Text, { children: fullName }),
54
- /* @__PURE__ */ jsx(Text, { color: "gray.500", children: expert.jobTitle })
46
+ /* @__PURE__ */ jsx(Text, { children: name }),
47
+ /* @__PURE__ */ jsx(Text, { color: "gray.500", children: role })
55
48
  ] })
56
49
  ] });
57
50
  }
@@ -59,13 +52,17 @@ const Expert = ({ expert, variant }) => {
59
52
  !!imageComponent && /* @__PURE__ */ jsx(Flex, { grow: 1, maxW: { base: 48, sm: 32 }, children: imageComponent }),
60
53
  /* @__PURE__ */ jsx(Flex, { w: "100%", children: /* @__PURE__ */ jsxs(Stack, { children: [
61
54
  /* @__PURE__ */ jsxs(Text, { fontSize: "lg", fontWeight: 600, children: [
62
- `${fullName}, `,
63
- /* @__PURE__ */ jsx(Text, { as: "span", color: "gray.500", children: jobTitle })
55
+ name,
56
+ ", ",
57
+ /* @__PURE__ */ jsx(Text, { as: "span", color: "gray.500", children: role })
64
58
  ] }),
65
59
  /* @__PURE__ */ jsx(Bio, { content: bio })
66
60
  ] }) })
67
61
  ] });
68
62
  };
63
+ const Center = ({ children, ...boxProps }) => {
64
+ return /* @__PURE__ */ jsx(Center$1, { ...boxProps, children });
65
+ };
69
66
  const defaultColumns = { base: 1, sm: 2, md: 3, lg: 4, xl: 5 };
70
67
  const Grid = ({ items, columns = defaultColumns, gap, render, getKey, ...boxProps }) => {
71
68
  return /* @__PURE__ */ jsx(SimpleGrid, { as: "ul", columns, spacing: gap, p: 0, m: 0, listStyleType: "none", ...boxProps, children: items.map((item, index) => /* @__PURE__ */ jsx(Box, { as: "li", children: render(item) }, getKey ? getKey(item) : index)) });
@@ -104,9 +101,9 @@ const PulseButton = ({ label, colorScheme = "light", to, onClick }) => {
104
101
  }
105
102
  );
106
103
  };
107
- const Author = ({ author, ...cardProps }) => {
104
+ const AuthorCard = ({ author, ...boxProps }) => {
108
105
  const { t: t2 } = useTranslation("author");
109
- return /* @__PURE__ */ jsxs(Card, { as: "article", variant: "filled", ...cardProps, children: [
106
+ return /* @__PURE__ */ jsxs(Card, { as: "article", variant: "filled", ...boxProps, children: [
110
107
  /* @__PURE__ */ jsx(CardHeader, { pb: 0, children: /* @__PURE__ */ jsx(Heading, { size: "md", children: t2("title") }) }),
111
108
  /* @__PURE__ */ jsx(
112
109
  CardBody,
@@ -115,7 +112,7 @@ const Author = ({ author, ...cardProps }) => {
115
112
  flexDirection: { base: "column", sm: "row" },
116
113
  alignItems: { base: "center", sm: "flex-start" },
117
114
  gap: 4,
118
- children: /* @__PURE__ */ jsx(Expert, { expert: author, variant: "full" })
115
+ children: /* @__PURE__ */ jsx(Author, { author, variant: "full" })
119
116
  }
120
117
  )
121
118
  ] });
@@ -247,31 +244,6 @@ const ContactForm = ({ ...boxProps }) => {
247
244
  }
248
245
  );
249
246
  };
250
- const ExpertTip = ({ tip, expert, ...boxProps }) => {
251
- return /* @__PURE__ */ jsxs(
252
- Card,
253
- {
254
- variant: "filled",
255
- p: 4,
256
- borderLeft: "4px solid gray",
257
- gap: 4,
258
- _before: {
259
- content: '"❛❛"',
260
- position: "absolute",
261
- top: -8,
262
- left: -2,
263
- fontSize: "6rem",
264
- fontStyle: "italic",
265
- color: useColorModeValue("blackAlpha.300", "whiteAlpha.300")
266
- },
267
- ...boxProps,
268
- children: [
269
- /* @__PURE__ */ jsx(CardBody, { as: "blockquote", p: 0, fontStyle: "italic", children: tip }),
270
- !!expert && /* @__PURE__ */ jsx(CardFooter, { alignItems: "center", justify: "flex-end", p: 0, children: /* @__PURE__ */ jsx(Expert, { expert, variant: "short" }) })
271
- ]
272
- }
273
- );
274
- };
275
247
  const Faq = ({ items, ...boxProps }) => {
276
248
  const { bgColor, color } = usePrimaryColors();
277
249
  return /* @__PURE__ */ jsx(Accordion, { allowToggle: true, ...boxProps, children: items.map(({ question, answer }) => {
@@ -437,23 +409,28 @@ function stringifyLanguageArray(languages) {
437
409
  }
438
410
  function getGameInfoItemValue(key, value, currency) {
439
411
  let formattedValue = "";
440
- if (key === GameCharacteristic.Rtp) {
441
- formattedValue = formatNumber(value, { percent: "real", precision: 3 });
442
- }
443
- if ((key === GameCharacteristic.MinBet || key === GameCharacteristic.MaxBet || key === GameCharacteristic.MaxWin) && typeof value === "number") {
444
- if (Array.isArray(currency)) {
445
- const [primary, ...secondaries] = currency || ["USD"];
446
- const primaryValue = formatNumber(value, { currency: primary });
447
- formattedValue = secondaries.length ? `${primaryValue} (${secondaries.map((currency2) => getCurrencySymbol(currency2)).join(", ")})` : primaryValue;
448
- } else {
449
- formattedValue = formatNumber(value, { currency });
412
+ if (typeof value !== "string") {
413
+ if (key === GameCharacteristic.Rtp) {
414
+ formattedValue = formatNumber(value, { percent: "real", precision: 3 });
415
+ }
416
+ if (key === GameCharacteristic.MinBet || key === GameCharacteristic.MaxBet || key === GameCharacteristic.MaxWin) {
417
+ if (Array.isArray(currency)) {
418
+ const [primary, ...secondaries] = currency || ["USD"];
419
+ const primaryValue = formatNumber(value, { currency: primary });
420
+ formattedValue = secondaries.length ? `${primaryValue} (${secondaries.map((currency2) => getCurrencySymbol(currency2)).join(", ")})` : primaryValue;
421
+ } else {
422
+ formattedValue = formatNumber(value, { currency });
423
+ }
424
+ }
425
+ if (key === GameCharacteristic.Compatibility || key === GameCharacteristic.BonusFeatures) {
426
+ formattedValue = stringifyArray(value);
427
+ }
428
+ if (key === GameCharacteristic.Languages) {
429
+ formattedValue = stringifyLanguageArray(value);
430
+ }
431
+ if (typeof value === "boolean") {
432
+ formattedValue = stringifyHasFeature(value);
450
433
  }
451
- }
452
- if (key === GameCharacteristic.Compatibility || key === GameCharacteristic.BonusFeatures && typeof value !== "string") {
453
- formattedValue = stringifyArray(value);
454
- }
455
- if (key === GameCharacteristic.Languages) {
456
- formattedValue = stringifyLanguageArray(value);
457
434
  }
458
435
  if (key === GameCharacteristic.ReleaseDate) {
459
436
  formattedValue = formatDate({ value, options: { year: "numeric", month: "long" } });
@@ -461,9 +438,6 @@ function getGameInfoItemValue(key, value, currency) {
461
438
  if (key === GameCharacteristic.Volatility) {
462
439
  formattedValue = stringifyVolatility(value);
463
440
  }
464
- if (typeof value === "boolean") {
465
- formattedValue = stringifyHasFeature(value);
466
- }
467
441
  if (!formattedValue) {
468
442
  formattedValue = value.toLocaleString();
469
443
  }
@@ -498,11 +472,11 @@ const GameInfo = ({ info }) => {
498
472
  };
499
473
  const HowTo = ({ steps, ...boxProps }) => {
500
474
  const { color, bgColor } = usePrimaryColors();
501
- return /* @__PURE__ */ jsx(SimpleGrid, { as: "ol", columns: { base: 1, md: 2, lg: 3 }, gap: 4, p: 0, ...boxProps, children: steps.map(({ title, description, image }, index) => /* @__PURE__ */ jsxs(Flex, { as: "li", alignItems: "flex-start", gap: 4, children: [
475
+ return /* @__PURE__ */ jsx(SimpleGrid, { as: "ol", columns: { base: 1, md: 2, lg: 3 }, gap: 4, p: 0, ...boxProps, children: steps.map(({ title, description, thumbnail }, index) => /* @__PURE__ */ jsxs(Flex, { as: "li", alignItems: "flex-start", gap: 4, children: [
502
476
  /* @__PURE__ */ jsx(Circle, { size: 12, bgColor, color, fontSize: "lg", fontWeight: "bold", children: String(index + 1) }),
503
477
  /* @__PURE__ */ jsxs(Stack, { flex: 1, children: [
504
478
  /* @__PURE__ */ jsx(Text, { fontSize: "lg", fontWeight: "bold", children: title }),
505
- typeof image === "string" ? /* @__PURE__ */ jsx(Image, { src: image, alt: title, aspectRatio: "16/9", objectFit: "cover" }) : image,
479
+ typeof thumbnail === "string" ? /* @__PURE__ */ jsx(Image, { src: thumbnail, alt: title, aspectRatio: "16/9", objectFit: "cover" }) : thumbnail,
506
480
  /* @__PURE__ */ jsx(Text, { children: description })
507
481
  ] })
508
482
  ] }, index)) });
@@ -514,13 +488,9 @@ const Content = ({ children }) => {
514
488
  return /* @__PURE__ */ jsx(Box, { as: "section", py: 4, children: /* @__PURE__ */ jsx(Container, { children }) });
515
489
  };
516
490
  const Logo = () => {
517
- var _a;
518
- const { assets } = useSiteContext();
519
- const image = (_a = assets == null ? void 0 : assets.images) == null ? void 0 : _a.logo;
520
- if (!image) {
521
- return null;
522
- }
523
- return /* @__PURE__ */ jsx(Box, { display: "flex", h: { base: 10, md: 14 }, overflow: "hidden", children: typeof image === "string" ? /* @__PURE__ */ jsx(Image, { src: image, alt: "Logo", objectFit: "contain" }) : image });
491
+ const { metadata } = useSiteContext();
492
+ const { logo } = metadata;
493
+ return /* @__PURE__ */ jsx(Box, { display: "flex", h: { base: 10, md: 14 }, overflow: "hidden", children: typeof logo === "string" ? /* @__PURE__ */ jsx(Image, { src: logo, alt: "Logo", objectFit: "contain" }) : logo });
524
494
  };
525
495
  const Brand$1 = ({ brand }) => {
526
496
  return /* @__PURE__ */ jsxs(Box, { position: "relative", my: 2, py: 8, children: [
@@ -530,17 +500,17 @@ const Brand$1 = ({ brand }) => {
530
500
  };
531
501
  const Copyright = () => {
532
502
  const { metadata } = useSiteContext();
533
- const { siteUrl } = metadata;
503
+ const { name: siteName } = metadata;
534
504
  const { t: t2 } = useTranslation("footer");
535
- return /* @__PURE__ */ jsx(Text, { as: "small", colorScheme: "gray", display: "flex", align: "center", justifyContent: "center", children: t2("copyright", { year: getCurrentYear(), domain: getDomain(siteUrl) }) });
505
+ return /* @__PURE__ */ jsx(Text, { as: "small", colorScheme: "gray", display: "flex", align: "center", justifyContent: "center", children: t2("copyright", { year: getCurrentYear(), siteName }) });
536
506
  };
537
507
  const Disclaimer = () => {
538
508
  const { metadata } = useSiteContext();
539
- const { siteUrl } = metadata;
509
+ const { name: siteName } = metadata;
540
510
  const { t: t2 } = useTranslation("footer");
541
511
  return /* @__PURE__ */ jsxs(Text, { as: "small", colorScheme: "gray", fontSize: "sm", children: [
542
512
  /* @__PURE__ */ jsx(Text, { as: "span", fontWeight: "bold", color: "red.600", children: t2("disclaimer.title") }),
543
- t2("disclaimer.description", { domain: getDomain(siteUrl) })
513
+ t2("disclaimer.description", { siteName })
544
514
  ] });
545
515
  };
546
516
  const Extra = ({ children }) => {
@@ -862,6 +832,17 @@ const List = ({ items, bullet = "—", render, ...boxProps }) => {
862
832
  render ? render(item) : item
863
833
  ] }, index)) });
864
834
  };
835
+ const NotFound = () => {
836
+ const { t: t2 } = useTranslation("pageNotFound");
837
+ return /* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
838
+ /* @__PURE__ */ jsx(Heading, { as: "h1", children: t2("title") }),
839
+ /* @__PURE__ */ jsxs(Text, { fontSize: "xl", children: [
840
+ t2("description"),
841
+ " ",
842
+ /* @__PURE__ */ jsx(Button, { as: Link$1, to: "/", variant: "link", colorScheme: "brand", fontSize: "xl", children: t2("action") })
843
+ ] })
844
+ ] });
845
+ };
865
846
  const TitleMap = {
866
847
  pros: "advantages",
867
848
  cons: "disadvantages"
@@ -932,24 +913,32 @@ const RichTextRenderer = ({ content }) => {
932
913
  const components = useMDXComponents();
933
914
  return /* @__PURE__ */ jsx(Markdown, { components, children: content });
934
915
  };
916
+ function replacePlaceholders(text, placeholders) {
917
+ Object.entries(placeholders).forEach(([placeholder, replacement]) => {
918
+ const regex = new RegExp(`{{${placeholder}}}`, "g");
919
+ text = text.replace(regex, replacement);
920
+ });
921
+ return text;
922
+ }
935
923
  const Seo = ({ children, siteMetadata, title, description, lang }) => {
936
- const { title: defaultTitle, description: defaultDescription, lang: defaultLang, siteUrl } = siteMetadata;
937
- return /* @__PURE__ */ jsxs(Fragment, { children: [
938
- /* @__PURE__ */ jsx("html", { lang: lang ?? defaultLang }),
939
- /* @__PURE__ */ jsx("title", { children: title ? typeof title === "string" ? title : title({
940
- domain: getDomain(siteUrl),
924
+ const { name: siteName, lang: defaultLang, seo } = siteMetadata;
925
+ const { title: defaultTitle, description: defaultDescription } = seo;
926
+ const placeholders = useMemo(
927
+ () => ({
928
+ siteName,
941
929
  currentYear: getCurrentYear(),
942
930
  currentMonth: getCurrentMonth()
943
- }) : defaultTitle }),
931
+ }),
932
+ [siteName]
933
+ );
934
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
935
+ /* @__PURE__ */ jsx("html", { lang: lang ?? defaultLang }),
936
+ /* @__PURE__ */ jsx("title", { children: title ? typeof title === "string" ? replacePlaceholders(title, placeholders) : title(placeholders) : defaultTitle }),
944
937
  /* @__PURE__ */ jsx(
945
938
  "meta",
946
939
  {
947
940
  name: "description",
948
- content: description ? typeof description === "string" ? description : description({
949
- domain: getDomain(siteUrl),
950
- currentYear: getCurrentYear(),
951
- currentMonth: getCurrentMonth()
952
- }) : defaultDescription
941
+ content: description ? typeof description === "string" ? replacePlaceholders(description, placeholders) : description(placeholders) : defaultDescription
953
942
  }
954
943
  ),
955
944
  children
@@ -995,15 +984,40 @@ const Tabs = ({ items, render, ...boxProps }) => {
995
984
  /* @__PURE__ */ jsx(TabPanels, { children: panels.map((panel, index) => /* @__PURE__ */ jsx(TabPanel, { children: render ? render(panel) : panel }, index)) })
996
985
  ] });
997
986
  };
987
+ const Tip = ({ tip, author = null, ...boxProps }) => {
988
+ return /* @__PURE__ */ jsxs(
989
+ Card,
990
+ {
991
+ variant: "filled",
992
+ p: 4,
993
+ borderLeft: "4px solid gray",
994
+ gap: 4,
995
+ _before: {
996
+ content: '"❛❛"',
997
+ position: "absolute",
998
+ top: -8,
999
+ left: -2,
1000
+ fontSize: "6rem",
1001
+ fontStyle: "italic",
1002
+ color: useColorModeValue("blackAlpha.300", "whiteAlpha.300")
1003
+ },
1004
+ ...boxProps,
1005
+ children: [
1006
+ /* @__PURE__ */ jsx(CardBody, { as: "blockquote", p: 0, fontStyle: "italic", children: tip }),
1007
+ !!author && /* @__PURE__ */ jsx(CardFooter, { alignItems: "center", justify: "flex-end", p: 0, children: /* @__PURE__ */ jsx(Author, { author, variant: "short" }) })
1008
+ ]
1009
+ }
1010
+ );
1011
+ };
998
1012
  export {
999
- Author as A,
1013
+ AuthorCard as A,
1000
1014
  BonusCard as B,
1001
1015
  ContactForm as C,
1002
- ExpertTip as E,
1003
1016
  Faq as F,
1004
1017
  GameCard as G,
1005
1018
  HowTo as H,
1006
1019
  Layout as L,
1020
+ NotFound as N,
1007
1021
  ProsCons as P,
1008
1022
  RichTextRenderer as R,
1009
1023
  Seo as S,
@@ -1014,9 +1028,10 @@ export {
1014
1028
  GameInfo as d,
1015
1029
  List as e,
1016
1030
  Tabs as f,
1017
- Center as g,
1018
- Expert as h,
1019
- Grid as i,
1020
- LinkButton as j,
1021
- PulseButton as k
1031
+ Tip as g,
1032
+ Author as h,
1033
+ Center as i,
1034
+ Grid as j,
1035
+ LinkButton as k,
1036
+ PulseButton as l
1022
1037
  };
@@ -35,17 +35,17 @@ var GameCharacteristic = /* @__PURE__ */ ((GameCharacteristic2) => {
35
35
  })(GameCharacteristic || {});
36
36
  const pageNotFound$3 = {
37
37
  seo: {
38
- title: "Seite nicht gefunden | {{domain}}"
38
+ title: "Seite nicht gefunden | {{siteName}}"
39
39
  },
40
40
  title: "404 — Seite nicht gefunden",
41
41
  description: "Entschuldigung 😔, wir konnten nicht finden, wonach Sie gesucht haben.",
42
42
  action: "Zur Startseite"
43
43
  };
44
44
  const footer$3 = {
45
- copyright: "© {{year}} {{domain}}. Alle Rechte vorbehalten.",
45
+ copyright: "© {{year}} {{siteName}}. Alle Rechte vorbehalten.",
46
46
  disclaimer: {
47
47
  title: "Spielen Sie verantwortungsbewusst: ",
48
- description: "{{domain}} ist eine unabhängige Ressource und nicht mit den von uns beworbenen Seiten verbunden. Stellen Sie sicher, dass Sie über alle erforderlichen Zertifikate verfügen und die gesetzlichen Anforderungen erfüllt sind, bevor Sie mit dem Spielen beginnen. Der Hauptzweck von {{domain}} besteht darin, informative und unterhaltsame Inhalte bereitzustellen. Wenn Sie nach Links zu verwandten Ressourcen suchen, werden Sie zu den entsprechenden Plattformen weitergeleitet."
48
+ description: "{{siteName}} ist eine unabhängige Ressource und nicht mit den von uns beworbenen Seiten verbunden. Stellen Sie sicher, dass Sie über alle erforderlichen Zertifikate verfügen und die gesetzlichen Anforderungen erfüllt sind, bevor Sie mit dem Spielen beginnen. Der Hauptzweck von {{siteName}} besteht darin, informative und unterhaltsame Inhalte bereitzustellen. Wenn Sie nach Links zu verwandten Ressourcen suchen, werden Sie zu den entsprechenden Plattformen weitergeleitet."
49
49
  }
50
50
  };
51
51
  const gameDemo$3 = {
@@ -152,17 +152,17 @@ const dictionary$3 = {
152
152
  };
153
153
  const pageNotFound$2 = {
154
154
  seo: {
155
- title: "Page not found | {{domain}}"
155
+ title: "Page not found | {{siteName}}"
156
156
  },
157
157
  title: "404 — Page not found",
158
158
  description: "Sorry 😔, we couldn’t find what you were looking for.",
159
159
  action: "Go Home"
160
160
  };
161
161
  const footer$2 = {
162
- copyright: "© {{year}} {{domain}}. All rights reserved.",
162
+ copyright: "© {{year}} {{siteName}}. All rights reserved.",
163
163
  disclaimer: {
164
164
  title: "Play responsibly: ",
165
- description: "{{domain}} is an independent resource not affiliated with the sites we promote. Make sure you have all the necessary certifications and legal requirements are met before you start playing. The main purpose of {{domain}} is to provide informative and entertaining content. If you are looking for links to related resources, you will be redirected to the relevant platforms."
165
+ description: "{{siteName}} is an independent resource not affiliated with the sites we promote. Make sure you have all the necessary certifications and legal requirements are met before you start playing. The main purpose of {{siteName}} is to provide informative and entertaining content. If you are looking for links to related resources, you will be redirected to the relevant platforms."
166
166
  }
167
167
  };
168
168
  const gameDemo$2 = {
@@ -269,17 +269,17 @@ const dictionary$2 = {
269
269
  };
270
270
  const pageNotFound$1 = {
271
271
  seo: {
272
- title: "Pagina non trovata | {{domain}}"
272
+ title: "Pagina non trovata | {{siteName}}"
273
273
  },
274
274
  title: "404 — Pagina non trovata",
275
275
  description: "Spiacenti 😔, non siamo riusciti a trovare quello che cercavi.",
276
276
  action: "Ritorna alla pagina principale"
277
277
  };
278
278
  const footer$1 = {
279
- copyright: "© {{year}} {{domain}}. Tutte le cose sono fatte.",
279
+ copyright: "© {{year}} {{siteName}}. Tutte le cose sono fatte.",
280
280
  disclaimer: {
281
281
  title: "Gioca responsabilmente: ",
282
- description: "{{domain}} è una risorsa indipendente e non affiliata ai siti che promuoviamo. Prima di iniziare a giocare, assicurati di possedere tutte le certificazioni necessarie e di rispettare i requisiti legali in vigore. L'obiettivo principale di {{domain}} è offrire contenuti informativi e di intrattenimento. Se cerchi collegamenti a risorse correlate, verrai reindirizzato alle piattaforme pertinenti."
282
+ description: "{{siteName}} è una risorsa indipendente e non affiliata ai siti che promuoviamo. Prima di iniziare a giocare, assicurati di possedere tutte le certificazioni necessarie e di rispettare i requisiti legali in vigore. L'obiettivo principale di {{siteName}} è offrire contenuti informativi e di intrattenimento. Se cerchi collegamenti a risorse correlate, verrai reindirizzato alle piattaforme pertinenti."
283
283
  }
284
284
  };
285
285
  const gameDemo$1 = {
@@ -386,17 +386,17 @@ const dictionary$1 = {
386
386
  };
387
387
  const pageNotFound = {
388
388
  seo: {
389
- title: "Страница не найдена | {{domain}}"
389
+ title: "Страница не найдена | {{siteName}}"
390
390
  },
391
391
  title: "404 — Страница не найдена",
392
392
  description: "Извините 😔, мы не смогли найти то, что вы искали.",
393
393
  action: "На главную"
394
394
  };
395
395
  const footer = {
396
- copyright: "© {{year}} {{domain}}. Все права защищены.",
396
+ copyright: "© {{year}} {{siteName}}. Все права защищены.",
397
397
  disclaimer: {
398
398
  title: "Играйте ответственно: ",
399
- description: "{{domain}} — независимый ресурс, не связанный с продвигаемыми сайтами. Убедитесь, что у вас есть все необходимые сертификаты и соблюдены юридические требования перед началом игры. Основная цель {{domain}} — предоставление информационного и развлекательного контента. Если вы ищете ссылки на связанные ресурсы, вас перенаправят на соответствующие платформы."
399
+ description: "{{siteName}} — независимый ресурс, не связанный с продвигаемыми сайтами. Убедитесь, что у вас есть все необходимые сертификаты и соблюдены юридические требования перед началом игры. Основная цель {{siteName}} — предоставление информационного и развлекательного контента. Если вы ищете ссылки на связанные ресурсы, вас перенаправят на соответствующие платформы."
400
400
  }
401
401
  };
402
402
  const gameDemo = {