@anywayseo/tools 5.6.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 (92) 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/index.d.ts +3 -0
  10. package/dist/components/base/rating/index.d.ts +10 -0
  11. package/dist/components/bonus-card-grid/index.d.ts +2 -4
  12. package/dist/components/casino-table/index.d.ts +8 -0
  13. package/dist/components/casino-table/row/casino-actions/index.d.ts +8 -0
  14. package/dist/components/casino-table/row/casino-bonus/index.d.ts +8 -0
  15. package/dist/components/casino-table/row/casino-info/index.d.ts +7 -0
  16. package/dist/components/casino-table/row/casino-info/item/index.d.ts +7 -0
  17. package/dist/components/casino-table/row/casino-info/utils.d.ts +2 -0
  18. package/dist/components/casino-table/row/casino-license/index.d.ts +5 -0
  19. package/dist/components/casino-table/row/casino-logo/index.d.ts +9 -0
  20. package/dist/components/casino-table/row/casino-name/index.d.ts +8 -0
  21. package/dist/components/casino-table/row/cell/index.d.ts +7 -0
  22. package/dist/components/casino-table/row/index.d.ts +7 -0
  23. package/dist/components/feature-card-grid/index.d.ts +2 -4
  24. package/dist/components/game-card-grid/index.d.ts +2 -4
  25. package/dist/components/game-demo/content/index.d.ts +1 -1
  26. package/dist/components/game-demo/index.d.ts +2 -2
  27. package/dist/components/game-demo/preview/alert/index.d.ts +3 -0
  28. package/dist/components/game-demo/preview/index.d.ts +2 -1
  29. package/dist/components/index.cjs +12 -3
  30. package/dist/components/index.d.ts +6 -0
  31. package/dist/components/index.mjs +32 -23
  32. package/dist/components/informer/index.d.ts +9 -0
  33. package/dist/components/informer/utils.d.ts +5 -0
  34. package/dist/components/tip/index.d.ts +3 -0
  35. package/dist/hooks/index.cjs +2 -2
  36. package/dist/hooks/index.mjs +2 -2
  37. package/dist/i18n/index.cjs +1 -1
  38. package/dist/i18n/index.mjs +1 -1
  39. package/dist/i18n/resources/bg/index.d.ts +51 -0
  40. package/dist/i18n/resources/da/index.d.ts +51 -0
  41. package/dist/i18n/resources/de/index.d.ts +51 -0
  42. package/dist/i18n/resources/en/index.d.ts +51 -0
  43. package/dist/i18n/resources/fi/index.d.ts +51 -0
  44. package/dist/i18n/resources/fr/index.d.ts +51 -0
  45. package/dist/i18n/resources/it/index.d.ts +51 -0
  46. package/dist/i18n/resources/ka/index.d.ts +51 -0
  47. package/dist/i18n/resources/pt/index.d.ts +51 -0
  48. package/dist/i18n/resources/ru/index.d.ts +51 -0
  49. package/dist/{index-DMR4Ptkt.js → index-B-k9oWE7.js} +606 -10
  50. package/dist/{index-CyuHme_p.js → index-B71VkIfX.js} +403 -234
  51. package/dist/index-BTpEZIok.js +401 -0
  52. package/dist/index-BeJTy4iY.mjs +26 -0
  53. package/dist/index-BfITsKAr.js +25 -0
  54. package/dist/{index-Drz_7u2p.mjs → index-C7z5qqm_.mjs} +21 -23
  55. package/dist/{index-DYS7zQW4.mjs → index-CB0JfZMx.mjs} +1 -1
  56. package/dist/{index-JUwyHkmj.mjs → index-CEqTLcAR.mjs} +238 -69
  57. package/dist/{index-CWMHJGbL.mjs → index-CVN8I7r9.mjs} +616 -20
  58. package/dist/{index-5J1CqqcW.js → index-D15SAjJc.js} +1 -1
  59. package/dist/{index-BzbpMLDD.mjs → index-DHURrUMW.mjs} +1 -1
  60. package/dist/{index-C2T70CMa.mjs → index-FfZIjQy3.mjs} +5 -4
  61. package/dist/index-Lln67Kfn.mjs +402 -0
  62. package/dist/{index-CR5rM7at.js → index-QPgJfbrC.js} +36 -35
  63. package/dist/{index-D4zJ5RBA.js → index-TxqSZvgf.js} +5 -4
  64. package/dist/{index-HLGPI9-S.mjs → index-ksqN4RPm.mjs} +29 -28
  65. package/dist/{index-WFgDSB1A.js → index-ma-iV7GU.js} +1 -1
  66. package/dist/{index-CkRY_NXp.js → index-qR3kVjjs.js} +20 -22
  67. package/dist/index.cjs +24 -12
  68. package/dist/index.mjs +53 -41
  69. package/dist/layout/index.cjs +13 -12
  70. package/dist/layout/index.mjs +13 -12
  71. package/dist/providers/index.cjs +2 -2
  72. package/dist/providers/index.mjs +2 -2
  73. package/dist/types/components/article-card/index.d.ts +9 -0
  74. package/dist/types/components/button/index.d.ts +1 -1
  75. package/dist/types/components/casino/index.d.ts +32 -0
  76. package/dist/types/components/casino-info/index.d.ts +12 -0
  77. package/dist/types/components/common/index.d.ts +1 -1
  78. package/dist/types/components/game-info/index.d.ts +4 -8
  79. package/dist/types/components/grid/index.d.ts +4 -0
  80. package/dist/types/components/index.d.ts +4 -0
  81. package/dist/types/components/informer/index.d.ts +5 -0
  82. package/dist/types/components/strapi-component/index.d.ts +1 -1
  83. package/dist/types/content/article/index.d.ts +12 -0
  84. package/dist/types/content/index.d.ts +1 -0
  85. package/dist/types/i18n/index.d.ts +1 -1
  86. package/dist/utils/index.cjs +5 -5
  87. package/dist/utils/index.mjs +7 -7
  88. package/package.json +1 -1
  89. package/dist/index-B1PwYYQt.mjs +0 -24
  90. package/dist/index-B6wz_B9_.js +0 -145
  91. package/dist/index-C-ri0Fgy.js +0 -23
  92. package/dist/index-COv56GyV.mjs +0 -146
@@ -0,0 +1,401 @@
1
+ "use strict";
2
+ const jsxRuntime = require("react/jsx-runtime");
3
+ const react = require("@chakra-ui/react");
4
+ const index = require("./index-QPgJfbrC.js");
5
+ require("@mdx-js/react");
6
+ const reactI18next = require("react-i18next");
7
+ const index$2 = require("./index-C6MG_f24.js");
8
+ const index$3 = require("./index-B-k9oWE7.js");
9
+ require("react");
10
+ const icons = require("@chakra-ui/icons");
11
+ require("react-medium-image-zoom");
12
+ const index$1 = require("./index-D15SAjJc.js");
13
+ const index$4 = require("./index-qR3kVjjs.js");
14
+ const FacebookIcon = (props) => {
15
+ 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: [
16
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "1", y: "1", width: "22", height: "22", rx: "5", fill: "none", stroke: "currentColor", strokeWidth: "2" }),
17
+ /* @__PURE__ */ jsxRuntime.jsx(
18
+ "path",
19
+ {
20
+ 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",
21
+ fill: "currentColor"
22
+ }
23
+ )
24
+ ] });
25
+ };
26
+ const InstagramIcon = (props) => {
27
+ return /* @__PURE__ */ jsxRuntime.jsxs(
28
+ "svg",
29
+ {
30
+ xmlns: "http://www.w3.org/2000/svg",
31
+ width: "24",
32
+ height: "24",
33
+ viewBox: "0 0 24 24",
34
+ "aria-label": "Instagram",
35
+ ...props,
36
+ children: [
37
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "1", y: "1", width: "22", height: "22", rx: "5", fill: "none", stroke: "currentColor", strokeWidth: "2" }),
38
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "4", fill: "none", stroke: "currentColor", strokeWidth: "2" }),
39
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "17", cy: "7", r: "1.25", fill: "currentColor" })
40
+ ]
41
+ }
42
+ );
43
+ };
44
+ const PinterestIcon = (props) => {
45
+ return /* @__PURE__ */ jsxRuntime.jsx(
46
+ "svg",
47
+ {
48
+ xmlns: "http://www.w3.org/2000/svg",
49
+ width: "24",
50
+ height: "24",
51
+ viewBox: "0 0 24 24",
52
+ "aria-label": "Pinterest",
53
+ ...props,
54
+ children: /* @__PURE__ */ jsxRuntime.jsx(
55
+ "path",
56
+ {
57
+ fill: "currentColor",
58
+ 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"
59
+ }
60
+ )
61
+ }
62
+ );
63
+ };
64
+ const XcomIcon = (props) => {
65
+ 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(
66
+ "path",
67
+ {
68
+ fill: "currentColor",
69
+ 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"
70
+ }
71
+ ) });
72
+ };
73
+ const YoutubeIcon = (props) => {
74
+ 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(
75
+ "path",
76
+ {
77
+ fill: "currentColor",
78
+ 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"
79
+ }
80
+ ) });
81
+ };
82
+ const SocialNetworkMap = {
83
+ facebook: FacebookIcon,
84
+ instagram: InstagramIcon,
85
+ pinterest: PinterestIcon,
86
+ x: XcomIcon,
87
+ youtube: YoutubeIcon
88
+ };
89
+ const SocialNetwork = ({ kind, url }) => {
90
+ const Icon = SocialNetworkMap[kind];
91
+ return /* @__PURE__ */ jsxRuntime.jsx(index.Link, { to: url, children: /* @__PURE__ */ jsxRuntime.jsx(Icon, {}) });
92
+ };
93
+ const SocialNetworks = ({ socialNetworks, ...flexProps }) => {
94
+ const uniqueSocialNetworks = [...new Map(socialNetworks.map((item) => [item.kind, item])).values()];
95
+ return /* @__PURE__ */ jsxRuntime.jsx(react.Flex, { gap: 2, ...flexProps, children: uniqueSocialNetworks.map((socialNetwork) => /* @__PURE__ */ jsxRuntime.jsx(SocialNetwork, { ...socialNetwork }, socialNetwork.kind)) });
96
+ };
97
+ const Container = ({ children }) => {
98
+ return /* @__PURE__ */ jsxRuntime.jsx(react.Container, { maxW: "container.xl", children });
99
+ };
100
+ const CopyText = ({ value }) => {
101
+ const backgroundColor = react.useColorModeValue("gray.200", "gray.700");
102
+ const toast = react.useToast();
103
+ const { t } = reactI18next.useTranslation("copyText");
104
+ const { hasCopied, onCopy } = react.useClipboard(value);
105
+ function handleCopy() {
106
+ onCopy();
107
+ toast({ title: t("title"), status: "success", duration: 2e3, isClosable: true });
108
+ }
109
+ return /* @__PURE__ */ jsxRuntime.jsxs(react.Flex, { align: "center", gap: 2, backgroundColor, ps: 4, rounded: "lg", children: [
110
+ /* @__PURE__ */ jsxRuntime.jsx(react.Text, { fontFamily: "mono", children: value }),
111
+ /* @__PURE__ */ jsxRuntime.jsx(
112
+ react.IconButton,
113
+ {
114
+ icon: hasCopied ? /* @__PURE__ */ jsxRuntime.jsx(icons.CheckIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(icons.CopyIcon, {}),
115
+ "aria-label": "Copy to clipboard",
116
+ size: "sm",
117
+ variant: "ghost",
118
+ colorScheme: hasCopied ? "green" : "gray",
119
+ onClick: handleCopy
120
+ }
121
+ )
122
+ ] });
123
+ };
124
+ const LinkButton = ({
125
+ label,
126
+ href,
127
+ linkType = "redirect",
128
+ size = "auto",
129
+ width = "auto",
130
+ textTransform,
131
+ textDecoration,
132
+ animation,
133
+ onClick,
134
+ ...boxProps
135
+ }) => {
136
+ var _a;
137
+ const { config } = index.useSiteContext();
138
+ const { color, invertedColor } = index$1.usePrimaryColors();
139
+ const isInvertedColor = (_a = config == null ? void 0 : config.theme) == null ? void 0 : _a.isInvertedColor;
140
+ return /* @__PURE__ */ jsxRuntime.jsx(
141
+ react.Button,
142
+ {
143
+ w: width,
144
+ size: size === "auto" ? { base: "sm", md: "lg" } : size,
145
+ bg: "brand.500",
146
+ color: isInvertedColor ? invertedColor : color,
147
+ animation: animation ? index$2.Animation[animation.type](animation.params) : void 0,
148
+ textTransform,
149
+ _hover: { textDecoration, bg: "brand.200" },
150
+ _active: { transform: "scale(0.95)" },
151
+ onClick,
152
+ ...boxProps,
153
+ ...href && {
154
+ as: index.Link,
155
+ to: href,
156
+ isRedirectLink: linkType === "redirect"
157
+ },
158
+ children: label
159
+ }
160
+ );
161
+ };
162
+ const Logo = () => {
163
+ const { metadata } = index.useSiteContext();
164
+ const { logo } = metadata;
165
+ 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" }) });
166
+ };
167
+ const StarSizeMap = {
168
+ sm: 12,
169
+ md: 16,
170
+ lg: 20
171
+ };
172
+ const FontSizeMap = {
173
+ sm: "xs",
174
+ md: "sm",
175
+ lg: "md"
176
+ };
177
+ const Rating = ({ value = 0, max = 5, size = "md", hasLabel }) => {
178
+ const current = Math.round(Math.min(value, max));
179
+ const stars = /* @__PURE__ */ jsxRuntime.jsx(react.Flex, { gap: 1, children: Array.from({ length: max }, (_, i) => {
180
+ const index2 = i + 1;
181
+ const isActive = index2 <= current;
182
+ return /* @__PURE__ */ jsxRuntime.jsx(
183
+ icons.StarIcon,
184
+ {
185
+ boxSize: StarSizeMap[size],
186
+ color: isActive ? "var(--chakra-colors-yellow-400)" : "gray"
187
+ },
188
+ index2
189
+ );
190
+ }) });
191
+ return hasLabel ? /* @__PURE__ */ jsxRuntime.jsxs(react.Stack, { spacing: 1, align: "center", children: [
192
+ stars,
193
+ /* @__PURE__ */ jsxRuntime.jsxs(react.Text, { fontSize: FontSizeMap[size], children: [
194
+ current,
195
+ " / ",
196
+ max
197
+ ] })
198
+ ] }) : stars;
199
+ };
200
+ const CasinoActions = ({ referralUrl, reviewUrl }) => {
201
+ const { t } = reactI18next.useTranslation("casinoTable");
202
+ const referralLinkLabel = t("row.actions.getBonus");
203
+ const reviewLinkLabel = t("row.actions.readReview");
204
+ return /* @__PURE__ */ jsxRuntime.jsxs(react.Stack, { children: [
205
+ !!referralUrl && /* @__PURE__ */ jsxRuntime.jsx(
206
+ LinkButton,
207
+ {
208
+ href: referralUrl,
209
+ label: referralLinkLabel,
210
+ textDecoration: "none",
211
+ size: { base: "sm", md: "md", lg: "lg" }
212
+ }
213
+ ),
214
+ !!reviewUrl && /* @__PURE__ */ jsxRuntime.jsx(index.Link, { to: reviewUrl, fontSize: "sm", children: reviewLinkLabel })
215
+ ] });
216
+ };
217
+ const CasinoBonus = ({ bonus, promoCode }) => {
218
+ return /* @__PURE__ */ jsxRuntime.jsxs(react.Stack, { gap: 3, align: "center", children: [
219
+ /* @__PURE__ */ jsxRuntime.jsx(react.Text, { fontSize: "xl", children: bonus }),
220
+ !!promoCode && /* @__PURE__ */ jsxRuntime.jsx(CopyText, { value: promoCode })
221
+ ] });
222
+ };
223
+ const CasinoInfoItem = ({ label, value }) => {
224
+ const color = react.useColorModeValue("gray.500", "gray.300");
225
+ return /* @__PURE__ */ jsxRuntime.jsxs(react.Text, { display: "inline-flex", justifyContent: "space-between", gap: 2, w: "full", textAlign: "end", children: [
226
+ /* @__PURE__ */ jsxRuntime.jsxs(react.Text, { as: "span", color, fontSize: "xs", fontWeight: "semibold", textAlign: "start", me: 1, children: [
227
+ label,
228
+ ":"
229
+ ] }),
230
+ value
231
+ ] });
232
+ };
233
+ function getCasinoInfoItemValue(key, value, locale) {
234
+ let formattedValue = "";
235
+ if (typeof value !== "string") {
236
+ if (key === index$3.CasinoCharacteristic.Rtp) {
237
+ formattedValue = index$4.formatNumber(value, { percent: "real", precision: 3 });
238
+ }
239
+ if (key === index$3.CasinoCharacteristic.MidDeposit) {
240
+ formattedValue = index$4.formatNumber(value, { locale });
241
+ }
242
+ }
243
+ if (!formattedValue) {
244
+ formattedValue = value.toLocaleString();
245
+ }
246
+ return formattedValue;
247
+ }
248
+ const CasinoInfo = ({ info }) => {
249
+ const { currentLocale } = index.usePageContext();
250
+ const { t } = reactI18next.useTranslation("casinoInfo");
251
+ return /* @__PURE__ */ jsxRuntime.jsx(react.Card, { py: 1, px: 2, w: "100%", children: /* @__PURE__ */ jsxRuntime.jsx(react.Stack, { gap: 1, align: "start", children: Object.entries(info).map(([itemKey, itemValue]) => {
252
+ if (!itemValue) {
253
+ return null;
254
+ }
255
+ const label = itemKey;
256
+ const value = getCasinoInfoItemValue(label, itemValue, currentLocale.code);
257
+ return /* @__PURE__ */ jsxRuntime.jsx(CasinoInfoItem, { label: t(`feature.${label}`), value }, label);
258
+ }) }) });
259
+ };
260
+ const CasinoLicense = ({ name, image }) => {
261
+ return /* @__PURE__ */ jsxRuntime.jsx(react.Flex, { align: "top", justify: "center", w: "full", h: "full", children: /* @__PURE__ */ jsxRuntime.jsx(index.Image, { src: image, alt: name, title: name, w: { base: "16", md: "12" }, rounded: "lg" }) });
262
+ };
263
+ const CasinoLogo = ({ name, image, isBestChoice }) => {
264
+ const { t } = reactI18next.useTranslation("casinoTable");
265
+ const background = react.useColorModeValue("gray.100", "gray.700");
266
+ return /* @__PURE__ */ jsxRuntime.jsxs(react.Box, { position: "relative", display: "inline-block", w: "100%", children: [
267
+ /* @__PURE__ */ jsxRuntime.jsx(index.Image, { src: image, alt: name, title: name, borderRadius: "md", w: "100%", objectFit: "cover" }),
268
+ isBestChoice && /* @__PURE__ */ jsxRuntime.jsx(
269
+ react.Badge,
270
+ {
271
+ position: "absolute",
272
+ top: 1,
273
+ left: 1,
274
+ fontSize: "2xs",
275
+ px: 1,
276
+ borderRadius: "md",
277
+ shadow: "md",
278
+ colorScheme: "brand",
279
+ background,
280
+ children: t("row.logo.bestChoiceBadge")
281
+ }
282
+ )
283
+ ] });
284
+ };
285
+ const CasinoName = ({ name, rating }) => {
286
+ return /* @__PURE__ */ jsxRuntime.jsxs(react.Stack, { gap: 3, w: "full", children: [
287
+ /* @__PURE__ */ jsxRuntime.jsx(react.Text, { children: name }),
288
+ /* @__PURE__ */ jsxRuntime.jsx(Rating, { value: rating, size: "sm", hasLabel: true })
289
+ ] });
290
+ };
291
+ const Cell = ({ children, borderColor, ...props }) => {
292
+ return /* @__PURE__ */ jsxRuntime.jsx(
293
+ react.Td,
294
+ {
295
+ textAlign: "center",
296
+ p: 2,
297
+ borderBottom: { base: "none", md: "1px solid" },
298
+ borderBottomColor: { base: "none", md: borderColor },
299
+ ...props,
300
+ children
301
+ }
302
+ );
303
+ };
304
+ const CasinoTableRow = ({ casino }) => {
305
+ const { id, image, name, rating, bonus, promoCode, license, info, referralUrl, reviewUrl } = casino;
306
+ const borderColor = react.useColorModeValue("gray.200", "whiteAlpha.300");
307
+ return /* @__PURE__ */ jsxRuntime.jsxs(
308
+ react.Tr,
309
+ {
310
+ display: { base: "inline-block", md: "table-row" },
311
+ w: { base: "100%", md: "auto" },
312
+ p: { base: 4, md: 0 },
313
+ mb: { base: 4, md: 0 },
314
+ border: { base: "1px solid", md: "none" },
315
+ borderColor,
316
+ borderRadius: "xl",
317
+ overflow: "hidden",
318
+ children: [
319
+ /* @__PURE__ */ jsxRuntime.jsx(Cell, { display: { base: "none", md: "table-cell" }, borderColor, children: id }),
320
+ /* @__PURE__ */ jsxRuntime.jsx(
321
+ Cell,
322
+ {
323
+ display: { base: "block", md: "table-cell" },
324
+ w: { base: "full", md: 200 },
325
+ minW: 100,
326
+ borderColor,
327
+ children: /* @__PURE__ */ jsxRuntime.jsx(CasinoLogo, { name, image, isBestChoice: id === "1" })
328
+ }
329
+ ),
330
+ /* @__PURE__ */ jsxRuntime.jsx(
331
+ Cell,
332
+ {
333
+ display: { base: "inline-flex", md: "table-cell" },
334
+ w: { base: license ? "50%" : "full", md: "auto" },
335
+ borderColor,
336
+ children: /* @__PURE__ */ jsxRuntime.jsx(CasinoName, { name, rating })
337
+ }
338
+ ),
339
+ /* @__PURE__ */ jsxRuntime.jsx(
340
+ Cell,
341
+ {
342
+ display: { base: license ? "inline-flex" : "none", md: "table-cell" },
343
+ w: { base: "50%", md: "16" },
344
+ borderColor,
345
+ children: license ? /* @__PURE__ */ jsxRuntime.jsx(CasinoLicense, { ...license }) : "—"
346
+ }
347
+ ),
348
+ /* @__PURE__ */ jsxRuntime.jsx(
349
+ Cell,
350
+ {
351
+ display: { base: "block", sm: info ? "inline-flex" : "block", md: "table-cell" },
352
+ w: { base: "full", sm: info ? "60%" : "full", md: "auto" },
353
+ borderColor,
354
+ children: /* @__PURE__ */ jsxRuntime.jsx(CasinoBonus, { bonus, promoCode })
355
+ }
356
+ ),
357
+ /* @__PURE__ */ jsxRuntime.jsx(
358
+ Cell,
359
+ {
360
+ display: { base: info ? "block" : "none", sm: info ? "inline-flex" : "none", md: "table-cell" },
361
+ w: { base: "full", sm: "40%", md: "40" },
362
+ borderColor,
363
+ children: info ? /* @__PURE__ */ jsxRuntime.jsx(CasinoInfo, { info }) : "—"
364
+ }
365
+ ),
366
+ /* @__PURE__ */ jsxRuntime.jsx(Cell, { display: { base: "block", md: "table-cell" }, borderColor, children: /* @__PURE__ */ jsxRuntime.jsx(CasinoActions, { referralUrl, reviewUrl }) })
367
+ ]
368
+ }
369
+ );
370
+ };
371
+ const columns = [
372
+ index$3.CasinoTableColumn.ID,
373
+ index$3.CasinoTableColumn.Logo,
374
+ index$3.CasinoTableColumn.Name,
375
+ index$3.CasinoTableColumn.License,
376
+ index$3.CasinoTableColumn.Bonus,
377
+ index$3.CasinoTableColumn.Info,
378
+ index$3.CasinoTableColumn.Actions
379
+ ];
380
+ const CasinoTable = ({ casinos, showHeader = false }) => {
381
+ const { t } = reactI18next.useTranslation("casinoTable");
382
+ return /* @__PURE__ */ jsxRuntime.jsxs(react.Table, { variant: "simple", size: "md", children: [
383
+ /* @__PURE__ */ jsxRuntime.jsx(
384
+ react.Thead,
385
+ {
386
+ position: { base: "absolute", md: showHeader ? "static" : "absolute" },
387
+ opacity: { base: 0, md: showHeader ? "initial" : 0 },
388
+ children: /* @__PURE__ */ jsxRuntime.jsx(react.Tr, { children: columns.map((column) => /* @__PURE__ */ jsxRuntime.jsx(react.Th, { textAlign: "center", p: 2, children: t(`column.${column}`) }, column)) })
389
+ }
390
+ ),
391
+ /* @__PURE__ */ jsxRuntime.jsx(react.Tbody, { children: casinos.map(({ id, ...casino }, index2) => /* @__PURE__ */ jsxRuntime.jsx(CasinoTableRow, { casino: { id: String(index2 + 1), ...casino } }, id)) })
392
+ ] });
393
+ };
394
+ exports.CasinoTable = CasinoTable;
395
+ exports.Container = Container;
396
+ exports.CopyText = CopyText;
397
+ exports.LinkButton = LinkButton;
398
+ exports.Logo = Logo;
399
+ exports.Rating = Rating;
400
+ exports.SocialNetwork = SocialNetwork;
401
+ exports.SocialNetworks = SocialNetworks;
@@ -0,0 +1,26 @@
1
+ import { DEFAULT_LANGUAGE } from "./i18n/index.mjs";
2
+ function getCurrencySymbol(currencyCode, locale = DEFAULT_LANGUAGE) {
3
+ const symbol = 0 .toLocaleString(locale, {
4
+ style: "currency",
5
+ currency: currencyCode,
6
+ minimumFractionDigits: 0,
7
+ maximumFractionDigits: 0
8
+ }).replace(/\d/g, "").trim();
9
+ return symbol;
10
+ }
11
+ function randomComparator() {
12
+ return Math.random() - 0.5;
13
+ }
14
+ function seededRandom(seed) {
15
+ return Math.abs(Math.sin(seed));
16
+ }
17
+ function getSeededRandomComparator(seed) {
18
+ const safeSeed = Math.abs(seed) % Number.MAX_SAFE_INTEGER;
19
+ let index = 0;
20
+ return () => seededRandom(safeSeed + index++) - 0.5;
21
+ }
22
+ export {
23
+ getSeededRandomComparator as a,
24
+ getCurrencySymbol as g,
25
+ randomComparator as r
26
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ const i18n = require("./i18n/index.cjs");
3
+ function getCurrencySymbol(currencyCode, locale = i18n.DEFAULT_LANGUAGE) {
4
+ const symbol = 0 .toLocaleString(locale, {
5
+ style: "currency",
6
+ currency: currencyCode,
7
+ minimumFractionDigits: 0,
8
+ maximumFractionDigits: 0
9
+ }).replace(/\d/g, "").trim();
10
+ return symbol;
11
+ }
12
+ function randomComparator() {
13
+ return Math.random() - 0.5;
14
+ }
15
+ function seededRandom(seed) {
16
+ return Math.abs(Math.sin(seed));
17
+ }
18
+ function getSeededRandomComparator(seed) {
19
+ const safeSeed = Math.abs(seed) % Number.MAX_SAFE_INTEGER;
20
+ let index = 0;
21
+ return () => seededRandom(safeSeed + index++) - 0.5;
22
+ }
23
+ exports.getCurrencySymbol = getCurrencySymbol;
24
+ exports.getSeededRandomComparator = getSeededRandomComparator;
25
+ exports.randomComparator = randomComparator;
@@ -1,12 +1,21 @@
1
1
  import { DEFAULT_LANGUAGE } from "./i18n/index.mjs";
2
- function getCurrencySymbol(currencyCode, locale = DEFAULT_LANGUAGE) {
3
- const symbol = 0 .toLocaleString(locale, {
4
- style: "currency",
5
- currency: currencyCode,
6
- minimumFractionDigits: 0,
7
- maximumFractionDigits: 0
8
- }).replace(/\d/g, "").trim();
9
- return symbol;
2
+ function getCurrentYear(locale = DEFAULT_LANGUAGE) {
3
+ const currentDate = /* @__PURE__ */ new Date();
4
+ const currentYear = new Intl.DateTimeFormat(locale, { year: "numeric" }).format(currentDate);
5
+ return currentYear;
6
+ }
7
+ function getCurrentMonth(locale = DEFAULT_LANGUAGE) {
8
+ const currentDate = /* @__PURE__ */ new Date();
9
+ const currentMonth = new Intl.DateTimeFormat(locale, { month: "long" }).format(currentDate);
10
+ return currentMonth;
11
+ }
12
+ function formatDate({ value, locale = DEFAULT_LANGUAGE, options }) {
13
+ const date = typeof value === "string" || typeof value === "number" ? new Date(value) : value;
14
+ if (isNaN(date.getTime())) {
15
+ throw new Error("Invalid date provided");
16
+ }
17
+ const formatter = new Intl.DateTimeFormat(locale, options);
18
+ return formatter.format(date);
10
19
  }
11
20
  const DEFAULT_PRECISION = 2;
12
21
  function round(number, precision) {
@@ -45,22 +54,11 @@ function formatNumber(number, options) {
45
54
  const formatter = new Intl.NumberFormat(locale, formatOptions);
46
55
  return `${formatter.format(round(number, precision))}${postfix}`;
47
56
  }
48
- function randomComparator() {
49
- return Math.random() - 0.5;
50
- }
51
- function seededRandom(seed) {
52
- return Math.abs(Math.sin(seed));
53
- }
54
- function getSeededRandomComparator(seed) {
55
- const safeSeed = Math.abs(seed) % Number.MAX_SAFE_INTEGER;
56
- let index = 0;
57
- return () => seededRandom(safeSeed + index++) - 0.5;
58
- }
59
57
  export {
60
- randomComparator as a,
61
- getSeededRandomComparator as b,
62
- formatNumber as f,
63
- getCurrencySymbol as g,
58
+ getCurrentMonth as a,
59
+ formatNumber as b,
60
+ formatDate as f,
61
+ getCurrentYear as g,
64
62
  round as r,
65
63
  toFixedTwo as t
66
64
  };
@@ -1,6 +1,6 @@
1
1
  import { useColorModeValue } from "@chakra-ui/react";
2
2
  import "./index-BJRvnR8Q.mjs";
3
- import "./index-CWMHJGbL.mjs";
3
+ import "./index-CVN8I7r9.mjs";
4
4
  import { L as LIGHT_THEME_COLOR, D as DARK_THEME_COLOR } from "./index-BRVKhbs6.mjs";
5
5
  function usePrimaryColors() {
6
6
  const color = useColorModeValue(LIGHT_THEME_COLOR, DARK_THEME_COLOR);