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