@anywayseo/tools 5.2.0 → 5.4.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.
- package/dist/components/base/image/index.d.ts +10 -0
- package/dist/components/base/index.d.ts +3 -0
- package/dist/components/base/social-network/icons/facebook/index.d.ts +2 -0
- package/dist/components/base/social-network/icons/index.d.ts +5 -0
- package/dist/components/base/social-network/icons/instagram/index.d.ts +2 -0
- package/dist/components/base/social-network/icons/pinterest/index.d.ts +2 -0
- package/dist/components/base/social-network/icons/x/index.d.ts +2 -0
- package/dist/components/base/social-network/icons/youtube/index.d.ts +2 -0
- package/dist/components/base/social-network/index.d.ts +5 -0
- package/dist/components/base/social-networks/index.d.ts +8 -0
- package/dist/components/game-demo/preview/index.d.ts +2 -2
- package/dist/components/index.cjs +5 -2
- package/dist/components/index.mjs +5 -2
- package/dist/{index-bNvgXBvA.js → index-4Zb1neOM.js} +306 -231
- package/dist/{index-CtmxlomQ.mjs → index-BM-_Lr_j.mjs} +115 -40
- package/dist/{index-BFhrFJqB.js → index-BbxOP7UY.js} +8 -4
- package/dist/{index-Cn8RI_2O.js → index-BltrZp3R.js} +32 -9
- package/dist/{index-DA6TBpuE.mjs → index-Bwlxdh5F.mjs} +24 -1
- package/dist/{index-BJQgELmZ.mjs → index-C4sJXfkN.mjs} +6 -2
- package/dist/index.cjs +6 -3
- package/dist/index.mjs +6 -3
- package/dist/providers/index.cjs +2 -2
- package/dist/providers/index.mjs +2 -2
- package/dist/types/components/how-to/index.d.ts +2 -2
- package/dist/types/components/image/index.d.ts +4 -2
- package/dist/types/components/index.d.ts +1 -0
- package/dist/types/components/social-network/index.d.ts +6 -0
- package/dist/types/content/author/index.d.ts +3 -8
- package/dist/types/site/index.d.ts +4 -3
- package/package.json +3 -2
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const jsxRuntime = require("react/jsx-runtime");
|
|
3
|
-
const react
|
|
3
|
+
const react = require("@chakra-ui/react");
|
|
4
4
|
const reactI18next = require("react-i18next");
|
|
5
|
-
|
|
6
|
-
const
|
|
5
|
+
require("react-medium-image-zoom");
|
|
6
|
+
const index = require("./index-BltrZp3R.js");
|
|
7
|
+
const react$1 = require("react");
|
|
7
8
|
const index$3 = require("./index-C6MG_f24.js");
|
|
8
9
|
const index$5 = require("./index-CJVr79Z2.js");
|
|
9
10
|
const react$2 = require("@mdx-js/react");
|
|
@@ -13,13 +14,96 @@ const index$2 = require("./index-At00w6EN.js");
|
|
|
13
14
|
const index$1 = require("./index-CAfBnNV6.js");
|
|
14
15
|
const i18next = require("i18next");
|
|
15
16
|
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" }),
|
|
20
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
21
|
+
"path",
|
|
22
|
+
{
|
|
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"
|
|
25
|
+
}
|
|
26
|
+
)
|
|
27
|
+
] });
|
|
28
|
+
};
|
|
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", "stroke-width": "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(index.Link, { to: url, 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
|
+
};
|
|
16
100
|
const ONE_LINE_HEIGHT = 24;
|
|
17
101
|
const Bio = ({ content, maxLines = 1 }) => {
|
|
18
|
-
const ref = react.useRef(null);
|
|
19
|
-
const [showToggle, setShowToggle] = react.useState(false);
|
|
20
|
-
const [isExpanded, setIsExpanded] = react.useState(false);
|
|
102
|
+
const ref = react$1.useRef(null);
|
|
103
|
+
const [showToggle, setShowToggle] = react$1.useState(false);
|
|
104
|
+
const [isExpanded, setIsExpanded] = react$1.useState(false);
|
|
21
105
|
const { t } = reactI18next.useTranslation("author");
|
|
22
|
-
react.useLayoutEffect(() => {
|
|
106
|
+
react$1.useLayoutEffect(() => {
|
|
23
107
|
if (ref.current) {
|
|
24
108
|
const { scrollWidth, clientWidth, scrollHeight, clientHeight } = ref.current;
|
|
25
109
|
const isClamped = scrollWidth > clientWidth || scrollHeight > clientHeight;
|
|
@@ -32,41 +116,40 @@ const Bio = ({ content, maxLines = 1 }) => {
|
|
|
32
116
|
function handleClick() {
|
|
33
117
|
setIsExpanded((prev) => !prev);
|
|
34
118
|
}
|
|
35
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
36
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
37
|
-
showToggle && /* @__PURE__ */ jsxRuntime.jsx(react
|
|
119
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.Box, { children: [
|
|
120
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Collapse, { in: isExpanded, startingHeight: ONE_LINE_HEIGHT * maxLines, children: /* @__PURE__ */ jsxRuntime.jsx(react.Text, { ref, fontSize: "md", noOfLines: isExpanded ? void 0 : maxLines, children: content }) }),
|
|
121
|
+
showToggle && /* @__PURE__ */ jsxRuntime.jsx(react.Button, { size: "sm", variant: "link", colorScheme: "blue", onClick: handleClick, children: isExpanded ? t("action.collapse") : t("action.expand") })
|
|
38
122
|
] });
|
|
39
123
|
};
|
|
40
124
|
const Author = ({ author, variant }) => {
|
|
41
|
-
const { name, role, bio, avatar } = author;
|
|
42
|
-
const imageComponent = typeof avatar === "string" ? /* @__PURE__ */ jsxRuntime.jsx(react$1.Image, { src: avatar, alt: name, rounded: "full" }) : avatar;
|
|
125
|
+
const { name, role, bio, avatar, socialNetworks } = author;
|
|
43
126
|
if (variant === "short") {
|
|
44
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
45
|
-
|
|
46
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react
|
|
47
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
48
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
127
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.Flex, { align: "center", gap: 4, children: [
|
|
128
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Box, { w: 12, h: 12, children: /* @__PURE__ */ jsxRuntime.jsx(index.Image, { src: avatar, alt: name, rounded: "full" }) }),
|
|
129
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.Box, { fontWeight: "semibold", children: [
|
|
130
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Text, { children: name }),
|
|
131
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Text, { color: "gray.500", children: role })
|
|
49
132
|
] })
|
|
50
133
|
] });
|
|
51
134
|
}
|
|
52
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
53
|
-
|
|
54
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
55
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react
|
|
56
|
-
name,
|
|
57
|
-
", ",
|
|
58
|
-
/* @__PURE__ */ jsxRuntime.jsx(react$1.Text, { as: "span", color: "gray.500", children: role })
|
|
135
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.Flex, { direction: { base: "column", sm: "row" }, align: { base: "center", sm: "flex-start" }, gap: 4, children: [
|
|
136
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Flex, { flex: 1, maxW: { base: 48, sm: 32 }, children: /* @__PURE__ */ jsxRuntime.jsx(index.Image, { src: avatar, alt: name, rounded: "full" }) }),
|
|
137
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Flex, { flex: 1, children: /* @__PURE__ */ jsxRuntime.jsxs(react.Stack, { children: [
|
|
138
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.Text, { fontSize: "lg", fontWeight: 600, children: [
|
|
139
|
+
`${name}, `,
|
|
140
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Text, { as: "span", display: "inline-block", color: "gray.500", children: role })
|
|
59
141
|
] }),
|
|
142
|
+
(socialNetworks == null ? void 0 : socialNetworks.length) && /* @__PURE__ */ jsxRuntime.jsx(SocialNetworks, { socialNetworks }),
|
|
60
143
|
/* @__PURE__ */ jsxRuntime.jsx(Bio, { content: bio })
|
|
61
144
|
] }) })
|
|
62
145
|
] });
|
|
63
146
|
};
|
|
64
147
|
const Center = ({ children, ...boxProps }) => {
|
|
65
|
-
return /* @__PURE__ */ jsxRuntime.jsx(react
|
|
148
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react.Center, { ...boxProps, children });
|
|
66
149
|
};
|
|
67
150
|
const defaultColumns = { base: 1, sm: 2, md: 3, lg: 4, xl: 5 };
|
|
68
151
|
const Grid = ({ items, columns = defaultColumns, gap, render, getKey, ...boxProps }) => {
|
|
69
|
-
return /* @__PURE__ */ jsxRuntime.jsx(react
|
|
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)) });
|
|
70
153
|
};
|
|
71
154
|
const LinkButton = ({
|
|
72
155
|
label,
|
|
@@ -86,11 +169,11 @@ const LinkButton = ({
|
|
|
86
169
|
const isInvertedColor = (_a = config == null ? void 0 : config.theme) == null ? void 0 : _a.isInvertedColor;
|
|
87
170
|
const isRedirectLink = linkType === "redirect";
|
|
88
171
|
const isInternalLink = index$2.isRelativePath(href);
|
|
89
|
-
const LinkComponent = isInternalLink ? index.Link : react
|
|
172
|
+
const LinkComponent = isInternalLink ? index.Link : react.Link;
|
|
90
173
|
const hrefKey = isInternalLink ? "to" : "href";
|
|
91
174
|
const hrefValue = isRedirectLink ? `/follow?to=${href}` : href;
|
|
92
175
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
93
|
-
react
|
|
176
|
+
react.Button,
|
|
94
177
|
{
|
|
95
178
|
w: width,
|
|
96
179
|
size: size === "auto" ? { base: "sm", md: "lg" } : size,
|
|
@@ -114,30 +197,21 @@ const LinkButton = ({
|
|
|
114
197
|
};
|
|
115
198
|
const AuthorCard = ({ author, ...boxProps }) => {
|
|
116
199
|
const { t } = reactI18next.useTranslation("author");
|
|
117
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
118
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
119
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
120
|
-
react$1.CardBody,
|
|
121
|
-
{
|
|
122
|
-
display: "flex",
|
|
123
|
-
flexDirection: { base: "column", sm: "row" },
|
|
124
|
-
alignItems: { base: "center", sm: "flex-start" },
|
|
125
|
-
gap: 4,
|
|
126
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Author, { author, variant: "full" })
|
|
127
|
-
}
|
|
128
|
-
)
|
|
200
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.Card, { as: "article", variant: "filled", ...boxProps, children: [
|
|
201
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.CardHeader, { pb: 0, children: /* @__PURE__ */ jsxRuntime.jsx(react.Heading, { size: "md", children: t("title") }) }),
|
|
202
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.CardBody, { children: /* @__PURE__ */ jsxRuntime.jsx(Author, { author, variant: "full" }) })
|
|
129
203
|
] });
|
|
130
204
|
};
|
|
131
205
|
const BonusCardContent = ({ content, buttonColor }) => {
|
|
132
206
|
const { t } = reactI18next.useTranslation("author");
|
|
133
|
-
return /* @__PURE__ */ jsxRuntime.jsx(react
|
|
134
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
135
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
207
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react.Popover, { autoFocus: false, isLazy: true, lazyBehavior: "keepMounted", children: ({ isOpen }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
208
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.PopoverTrigger, { children: /* @__PURE__ */ jsxRuntime.jsx(react.Button, { size: "sm", variant: "link", color: buttonColor, children: isOpen ? t("action.collapse") : t("action.expand") }) }),
|
|
209
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(react.PopoverContent, { children: /* @__PURE__ */ jsxRuntime.jsx(react.PopoverBody, { children: Array.isArray(content) ? /* @__PURE__ */ jsxRuntime.jsx(react.Stack, { children: content.map((paragraph, index2) => /* @__PURE__ */ jsxRuntime.jsx(react.Text, { as: "span", children: paragraph }, index2)) }) : /* @__PURE__ */ jsxRuntime.jsx(react.Text, { children: content }) }) }) })
|
|
136
210
|
] }) });
|
|
137
211
|
};
|
|
138
212
|
const BonusCardTitle = ({ content, color, textColor }) => {
|
|
139
213
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
140
|
-
react
|
|
214
|
+
react.Text,
|
|
141
215
|
{
|
|
142
216
|
as: "h3",
|
|
143
217
|
display: "inline-block",
|
|
@@ -165,7 +239,7 @@ const BonusCard = ({
|
|
|
165
239
|
className
|
|
166
240
|
}) => {
|
|
167
241
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
168
|
-
react
|
|
242
|
+
react.Card,
|
|
169
243
|
{
|
|
170
244
|
as: "article",
|
|
171
245
|
h: "full",
|
|
@@ -186,12 +260,12 @@ const BonusCard = ({
|
|
|
186
260
|
} : void 0,
|
|
187
261
|
className,
|
|
188
262
|
children: [
|
|
189
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react
|
|
263
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.CardBody, { as: "section", pb: 0, flex: 1, children: [
|
|
190
264
|
/* @__PURE__ */ jsxRuntime.jsx(BonusCardTitle, { content: title, color: titleColor, textColor: titleTextColor }),
|
|
191
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
265
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Text, { fontSize: "2xl", fontWeight: "bold", my: 2, children: subtitle }),
|
|
192
266
|
/* @__PURE__ */ jsxRuntime.jsx(BonusCardContent, { content, buttonColor: textColor })
|
|
193
267
|
] }),
|
|
194
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
268
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.CardFooter, { as: "footer", p: 4, children: /* @__PURE__ */ jsxRuntime.jsx(LinkButton, { ...link, width: "full", size: "md", textDecoration: "none" }) })
|
|
195
269
|
]
|
|
196
270
|
}
|
|
197
271
|
);
|
|
@@ -215,7 +289,7 @@ const BonusCardGrid = ({
|
|
|
215
289
|
);
|
|
216
290
|
};
|
|
217
291
|
const ContactForm = ({ ...boxProps }) => {
|
|
218
|
-
const toast = react
|
|
292
|
+
const toast = react.useToast();
|
|
219
293
|
const { t } = reactI18next.useTranslation("contactForm");
|
|
220
294
|
function handleSubmit(event) {
|
|
221
295
|
event.preventDefault();
|
|
@@ -239,21 +313,21 @@ const ContactForm = ({ ...boxProps }) => {
|
|
|
239
313
|
}
|
|
240
314
|
}
|
|
241
315
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
242
|
-
react
|
|
316
|
+
react.Box,
|
|
243
317
|
{
|
|
244
318
|
as: "form",
|
|
245
319
|
borderRadius: "lg",
|
|
246
320
|
p: 8,
|
|
247
|
-
color: react
|
|
248
|
-
bg: react
|
|
321
|
+
color: react.useColorModeValue("gray.700", "whiteAlpha.900"),
|
|
322
|
+
bg: react.useColorModeValue("white", "gray.700"),
|
|
249
323
|
shadow: "base",
|
|
250
324
|
onSubmit: handleSubmit,
|
|
251
325
|
...boxProps,
|
|
252
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
253
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react
|
|
254
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
255
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react
|
|
256
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
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(
|
|
257
331
|
"svg",
|
|
258
332
|
{
|
|
259
333
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -265,45 +339,45 @@ const ContactForm = ({ ...boxProps }) => {
|
|
|
265
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" })
|
|
266
340
|
}
|
|
267
341
|
) }),
|
|
268
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
342
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Input, { type: "text", name: "name", placeholder: t("field.name.placeholder") })
|
|
269
343
|
] })
|
|
270
344
|
] }),
|
|
271
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react
|
|
272
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
273
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react
|
|
274
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
275
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
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") })
|
|
276
350
|
] })
|
|
277
351
|
] }),
|
|
278
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react
|
|
279
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
280
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
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" })
|
|
281
355
|
] }),
|
|
282
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
356
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Button, { type: "submit", colorScheme: "brand", width: "full", children: t("action.send") })
|
|
283
357
|
] })
|
|
284
358
|
}
|
|
285
359
|
);
|
|
286
360
|
};
|
|
287
361
|
const Faq = ({ items, ...boxProps }) => {
|
|
288
362
|
const { bgColor, invertedColor } = index$1.usePrimaryColors();
|
|
289
|
-
return /* @__PURE__ */ jsxRuntime.jsx(react
|
|
290
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
291
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
292
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
293
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
363
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react.Accordion, { allowToggle: true, ...boxProps, children: items.map(({ question, answer }) => {
|
|
364
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.AccordionItem, { border: 0, children: [
|
|
365
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Box, { as: "h3", children: /* @__PURE__ */ jsxRuntime.jsxs(react.AccordionButton, { _hover: { color: invertedColor, bgColor }, children: [
|
|
366
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Box, { as: "span", flex: "1", textAlign: "left", fontWeight: "bold", children: question }),
|
|
367
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.AccordionIcon, {})
|
|
294
368
|
] }) }),
|
|
295
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
369
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.AccordionPanel, { children: answer })
|
|
296
370
|
] }, question);
|
|
297
371
|
}) });
|
|
298
372
|
};
|
|
299
373
|
const FeatureCard = ({ title, description }) => {
|
|
300
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
301
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react
|
|
374
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.Card, { as: "article", variant: "outline", textAlign: "center", h: "100%", children: [
|
|
375
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.CardHeader, { as: "header", display: "flex", alignItems: "center", justifyContent: "center", gap: 2, pb: 2, children: [
|
|
302
376
|
/* @__PURE__ */ jsxRuntime.jsx(icons.StarIcon, { w: 8, h: 8, color: "yellow.400" }),
|
|
303
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
377
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Text, { fontWeight: 600, children: title }),
|
|
304
378
|
/* @__PURE__ */ jsxRuntime.jsx(icons.StarIcon, { w: 8, h: 8, color: "yellow.400" })
|
|
305
379
|
] }),
|
|
306
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
380
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.CardBody, { as: "section", pt: 0, children: /* @__PURE__ */ jsxRuntime.jsx(react.Text, { color: "gray.500", children: description }) })
|
|
307
381
|
] });
|
|
308
382
|
};
|
|
309
383
|
const FeatureCardGrid = ({
|
|
@@ -326,7 +400,7 @@ const FeatureCardGrid = ({
|
|
|
326
400
|
};
|
|
327
401
|
const GameCard = ({ name, description, image, href, height = "auto" }) => {
|
|
328
402
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
329
|
-
react
|
|
403
|
+
react.LinkBox,
|
|
330
404
|
{
|
|
331
405
|
as: "article",
|
|
332
406
|
rounded: "md",
|
|
@@ -338,10 +412,10 @@ const GameCard = ({ name, description, image, href, height = "auto" }) => {
|
|
|
338
412
|
height,
|
|
339
413
|
_hover: { transform: "scale(1.05)" },
|
|
340
414
|
children: [
|
|
341
|
-
|
|
342
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react
|
|
343
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
344
|
-
!!description && /* @__PURE__ */ jsxRuntime.jsx(react
|
|
415
|
+
/* @__PURE__ */ jsxRuntime.jsx(index.Image, { src: image, alt: name, mode: "thumbnail" }),
|
|
416
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.Box, { as: "section", rounded: "md", p: 4, children: [
|
|
417
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Text, { as: "span", children: href ? /* @__PURE__ */ jsxRuntime.jsx(react.LinkOverlay, { href, children: name }) : name }),
|
|
418
|
+
!!description && /* @__PURE__ */ jsxRuntime.jsx(react.Text, { fontSize: "sm", color: "gray.600", children: description })
|
|
345
419
|
] })
|
|
346
420
|
]
|
|
347
421
|
}
|
|
@@ -382,7 +456,7 @@ const GameDemoContent = ({
|
|
|
382
456
|
const { t } = reactI18next.useTranslation("gameDemo");
|
|
383
457
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
384
458
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
385
|
-
react
|
|
459
|
+
react.Box,
|
|
386
460
|
{
|
|
387
461
|
as: "iframe",
|
|
388
462
|
src,
|
|
@@ -395,9 +469,9 @@ const GameDemoContent = ({
|
|
|
395
469
|
children: /* @__PURE__ */ jsxRuntime.jsx("p", { children: t("warning") })
|
|
396
470
|
}
|
|
397
471
|
),
|
|
398
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react
|
|
472
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.Flex, { position: "absolute", top: 2, left: 2, gap: 2, children: [
|
|
399
473
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
400
|
-
react
|
|
474
|
+
react.IconButton,
|
|
401
475
|
{
|
|
402
476
|
icon: /* @__PURE__ */ jsxRuntime.jsx(icons.CloseIcon, { w: 3, h: 3 }),
|
|
403
477
|
title: t("action.exit"),
|
|
@@ -411,7 +485,7 @@ const GameDemoContent = ({
|
|
|
411
485
|
}
|
|
412
486
|
),
|
|
413
487
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
414
|
-
react
|
|
488
|
+
react.IconButton,
|
|
415
489
|
{
|
|
416
490
|
icon: isFullscreen ? /* @__PURE__ */ jsxRuntime.jsx(icons.ViewOffIcon, { w: 3, h: 3 }) : /* @__PURE__ */ jsxRuntime.jsx(icons.ViewIcon, { w: 4, h: 4 }),
|
|
417
491
|
title: t(isFullscreen ? "action.deactivateFullscreen" : "action.activateFullscreen"),
|
|
@@ -425,15 +499,14 @@ const GameDemoContent = ({
|
|
|
425
499
|
}
|
|
426
500
|
)
|
|
427
501
|
] }),
|
|
428
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
502
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.AbsoluteCenter, { children: /* @__PURE__ */ jsxRuntime.jsx(react.Spinner, { size: "xl", thickness: "0.6rem", display: isLoaded ? "none" : "block", color: "brand.100" }) })
|
|
429
503
|
] });
|
|
430
504
|
};
|
|
431
505
|
const GameDemoPreview = ({ image, alt, href, imageFit = "contain", onPlayDemo }) => {
|
|
432
506
|
const { t } = reactI18next.useTranslation("gameDemo");
|
|
433
|
-
const imageComponent = typeof image === "string" ? /* @__PURE__ */ jsxRuntime.jsx(react$1.Image, { src: image, alt, objectFit: imageFit, w: "100%", h: "100%" }) : image;
|
|
434
507
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
435
|
-
|
|
436
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
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: [
|
|
437
510
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
438
511
|
LinkButton,
|
|
439
512
|
{
|
|
@@ -442,7 +515,7 @@ const GameDemoPreview = ({ image, alt, href, imageFit = "contain", onPlayDemo })
|
|
|
442
515
|
}
|
|
443
516
|
),
|
|
444
517
|
!!href && /* @__PURE__ */ jsxRuntime.jsx(
|
|
445
|
-
react
|
|
518
|
+
react.Button,
|
|
446
519
|
{
|
|
447
520
|
variant: "solid",
|
|
448
521
|
colorScheme: "brand",
|
|
@@ -456,9 +529,9 @@ const GameDemoPreview = ({ image, alt, href, imageFit = "contain", onPlayDemo })
|
|
|
456
529
|
] });
|
|
457
530
|
};
|
|
458
531
|
const GameDemo = ({ name, src, href, previewImage, previewImageFit, ...boxProps }) => {
|
|
459
|
-
const [isRunning, setIsRunning] = react.useState(false);
|
|
460
|
-
const [isLoaded, setIsLoaded] = react.useState(false);
|
|
461
|
-
const { isOpen: isFullscreen, onToggle, onClose } = react
|
|
532
|
+
const [isRunning, setIsRunning] = react$1.useState(false);
|
|
533
|
+
const [isLoaded, setIsLoaded] = react$1.useState(false);
|
|
534
|
+
const { isOpen: isFullscreen, onToggle, onClose } = react.useDisclosure({ defaultIsOpen: false });
|
|
462
535
|
function handleLoad() {
|
|
463
536
|
setIsLoaded(true);
|
|
464
537
|
}
|
|
@@ -475,7 +548,7 @@ const GameDemo = ({ name, src, href, previewImage, previewImageFit, ...boxProps
|
|
|
475
548
|
setIsRunning(true);
|
|
476
549
|
}
|
|
477
550
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
478
|
-
react
|
|
551
|
+
react.Box,
|
|
479
552
|
{
|
|
480
553
|
as: "article",
|
|
481
554
|
display: "grid",
|
|
@@ -507,12 +580,12 @@ const GameDemo = ({ name, src, href, previewImage, previewImageFit, ...boxProps
|
|
|
507
580
|
);
|
|
508
581
|
};
|
|
509
582
|
const GameInfoItem = ({ title, value }) => {
|
|
510
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
511
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react
|
|
583
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.Flex, { gap: 2, children: [
|
|
584
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.Text, { w: "50%", color: "gray.500", textTransform: "capitalize", children: [
|
|
512
585
|
title,
|
|
513
586
|
":"
|
|
514
587
|
] }),
|
|
515
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
588
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Text, { w: "50%", textTransform: "capitalize", children: value })
|
|
516
589
|
] });
|
|
517
590
|
};
|
|
518
591
|
const MAX_VISIBLE_LANGUAGE = 5;
|
|
@@ -569,18 +642,18 @@ const GameInfo = ({ info, currencies }) => {
|
|
|
569
642
|
const { currentLocale } = index.usePageContext();
|
|
570
643
|
const currency = (currencies == null ? void 0 : currencies.length) ? getGameInfoCurrency(currencies, currentLocale.code) : DEFAULT_CURRENCY;
|
|
571
644
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
572
|
-
react
|
|
645
|
+
react.Box,
|
|
573
646
|
{
|
|
574
647
|
as: "aside",
|
|
575
648
|
float: { base: "none", lg: "right" },
|
|
576
649
|
w: { base: "100%", lg: "xs" },
|
|
577
650
|
ml: { base: 0, lg: 4 },
|
|
578
651
|
mb: { base: 0, lg: 4 },
|
|
579
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
580
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
581
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
582
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
583
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
652
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(react.Card, { as: "article", variant: "outline", h: "100%", p: 2, children: [
|
|
653
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.CardHeader, { as: "header", p: 0, children: /* @__PURE__ */ jsxRuntime.jsx(react.Heading, { as: "h2", fontSize: "xl", children: t("title") }) }),
|
|
654
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.CardBody, { as: "section", p: 0, children: Object.entries(info).map(([group, items]) => /* @__PURE__ */ jsxRuntime.jsxs(react$1.Fragment, { children: [
|
|
655
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Divider, { my: 2 }),
|
|
656
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Text, { fontWeight: "semibold", mb: 2, children: t(`group.${group}`) }),
|
|
584
657
|
Object.entries(items).map(([itemKey, itemValue]) => {
|
|
585
658
|
if (!itemValue) {
|
|
586
659
|
return null;
|
|
@@ -596,30 +669,30 @@ const GameInfo = ({ info, currencies }) => {
|
|
|
596
669
|
};
|
|
597
670
|
const HowTo = ({ steps, ...boxProps }) => {
|
|
598
671
|
const { bgColor, invertedColor } = index$1.usePrimaryColors();
|
|
599
|
-
return /* @__PURE__ */ jsxRuntime.jsx(react
|
|
600
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
601
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react
|
|
602
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
603
|
-
|
|
604
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
672
|
+
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
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Circle, { size: 12, bgColor, color: invertedColor, fontSize: "lg", fontWeight: "bold", children: String(index$12 + 1) }),
|
|
674
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.Stack, { flex: 1, children: [
|
|
675
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Text, { fontSize: "lg", fontWeight: "bold", children: title }),
|
|
676
|
+
/* @__PURE__ */ jsxRuntime.jsx(index.Image, { src: thumbnail, alt: title, mode: "thumbnail", hasZoom: true }),
|
|
677
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Text, { children: description })
|
|
605
678
|
] })
|
|
606
|
-
] },
|
|
679
|
+
] }, index$12)) });
|
|
607
680
|
};
|
|
608
681
|
const Container = ({ children }) => {
|
|
609
|
-
return /* @__PURE__ */ jsxRuntime.jsx(react
|
|
682
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react.Container, { maxW: "container.xl", children });
|
|
610
683
|
};
|
|
611
684
|
const Content = ({ children }) => {
|
|
612
|
-
return /* @__PURE__ */ jsxRuntime.jsx(react
|
|
685
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react.Box, { as: "section", py: 4, children: /* @__PURE__ */ jsxRuntime.jsx(Container, { children }) });
|
|
613
686
|
};
|
|
614
687
|
const Logo = () => {
|
|
615
688
|
const { metadata } = index.useSiteContext();
|
|
616
689
|
const { logo } = metadata;
|
|
617
|
-
return /* @__PURE__ */ jsxRuntime.jsx(react
|
|
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" }) });
|
|
618
691
|
};
|
|
619
692
|
const Brand$1 = ({ brand }) => {
|
|
620
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
621
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
622
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
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 }) })
|
|
623
696
|
] });
|
|
624
697
|
};
|
|
625
698
|
const Copyright = () => {
|
|
@@ -627,23 +700,23 @@ const Copyright = () => {
|
|
|
627
700
|
const { t } = reactI18next.useTranslation("footer");
|
|
628
701
|
const siteName = metadata.name;
|
|
629
702
|
const lang = metadata.lang;
|
|
630
|
-
return /* @__PURE__ */ jsxRuntime.jsx(react
|
|
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 }) });
|
|
631
704
|
};
|
|
632
705
|
const Disclaimer = () => {
|
|
633
706
|
const { metadata } = index.useSiteContext();
|
|
634
707
|
const { t } = reactI18next.useTranslation("footer");
|
|
635
708
|
const siteName = metadata.name;
|
|
636
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
637
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
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") }),
|
|
638
711
|
t("disclaimer.description", { siteName })
|
|
639
712
|
] });
|
|
640
713
|
};
|
|
641
714
|
const Extra = ({ children }) => {
|
|
642
|
-
return /* @__PURE__ */ jsxRuntime.jsx(react
|
|
715
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react.Box, { as: "section", my: 2, children });
|
|
643
716
|
};
|
|
644
717
|
const Navigation$1 = ({ menu }) => {
|
|
645
718
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
646
|
-
react
|
|
719
|
+
react.SimpleGrid,
|
|
647
720
|
{
|
|
648
721
|
as: "ul",
|
|
649
722
|
columns: { base: 1, sm: 2, md: 4 },
|
|
@@ -653,8 +726,8 @@ const Navigation$1 = ({ menu }) => {
|
|
|
653
726
|
spacing: 4,
|
|
654
727
|
justifyItems: { base: "flex-start", md: "center" },
|
|
655
728
|
justifyContent: "space-between",
|
|
656
|
-
children: menu.map(({ slug, label }, index$12) => /* @__PURE__ */ jsxRuntime.jsx(react
|
|
657
|
-
react
|
|
729
|
+
children: menu.map(({ slug, label }, index$12) => /* @__PURE__ */ jsxRuntime.jsx(react.Flex, { as: "li", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
730
|
+
react.Text,
|
|
658
731
|
{
|
|
659
732
|
as: index.Link,
|
|
660
733
|
to: slug,
|
|
@@ -669,26 +742,27 @@ const Navigation$1 = ({ menu }) => {
|
|
|
669
742
|
);
|
|
670
743
|
};
|
|
671
744
|
const Footer = () => {
|
|
672
|
-
|
|
673
|
-
const { navigation, config } = index.useSiteContext();
|
|
745
|
+
const { metadata, navigation, config } = index.useSiteContext();
|
|
674
746
|
const { currentLocale } = index.usePageContext();
|
|
675
747
|
const menu = navigation.footer[currentLocale.code] ?? [];
|
|
676
|
-
const
|
|
677
|
-
const showDisclaimer =
|
|
748
|
+
const socialNetworks = metadata.socialNetworks ?? [];
|
|
749
|
+
const { extra, showDisclaimer = true } = (config == null ? void 0 : config.footer) ?? {};
|
|
678
750
|
const hasNavigation = !!menu.length;
|
|
751
|
+
const hasSocialNetworks = !!socialNetworks.length;
|
|
679
752
|
const hasExtra = !!extra;
|
|
680
753
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
681
|
-
react
|
|
754
|
+
react.Box,
|
|
682
755
|
{
|
|
683
756
|
as: "footer",
|
|
684
|
-
bg: react
|
|
685
|
-
color: react
|
|
757
|
+
bg: react.useColorModeValue("gray.50", "gray.900"),
|
|
758
|
+
color: react.useColorModeValue("gray.700", "gray.200"),
|
|
686
759
|
py: 4,
|
|
687
760
|
children: /* @__PURE__ */ jsxRuntime.jsxs(Container, { children: [
|
|
688
761
|
hasNavigation && /* @__PURE__ */ jsxRuntime.jsx(Navigation$1, { menu }),
|
|
689
762
|
hasExtra && /* @__PURE__ */ jsxRuntime.jsx(Extra, { children: extra }),
|
|
690
763
|
showDisclaimer && /* @__PURE__ */ jsxRuntime.jsx(Disclaimer, {}),
|
|
691
764
|
/* @__PURE__ */ jsxRuntime.jsx(Brand$1, { brand: /* @__PURE__ */ jsxRuntime.jsx(Logo, {}) }),
|
|
765
|
+
hasSocialNetworks && /* @__PURE__ */ jsxRuntime.jsx(SocialNetworks, { socialNetworks, justify: "center", my: 2 }),
|
|
692
766
|
/* @__PURE__ */ jsxRuntime.jsx(Copyright, {})
|
|
693
767
|
] })
|
|
694
768
|
}
|
|
@@ -771,31 +845,31 @@ function getMappedIcon(code) {
|
|
|
771
845
|
const LocaleSwitcher = ({ currentLocale, locales }) => {
|
|
772
846
|
const localeCode = currentLocale.code;
|
|
773
847
|
const localeIcon = getMappedIcon(localeCode);
|
|
774
|
-
const localeMenuItems = react.useMemo(
|
|
848
|
+
const localeMenuItems = react$1.useMemo(
|
|
775
849
|
() => locales.map((locale) => ({ ...locale, icon: getMappedIcon(locale.code) })),
|
|
776
850
|
[locales]
|
|
777
851
|
);
|
|
778
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
852
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.Menu, { placement: "bottom-end", children: [
|
|
779
853
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
780
|
-
react
|
|
854
|
+
react.MenuButton,
|
|
781
855
|
{
|
|
782
|
-
as: react
|
|
856
|
+
as: react.Button,
|
|
783
857
|
rightIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronDownIcon, {}),
|
|
784
858
|
w: { base: 20, md: "28" },
|
|
785
859
|
px: { base: 1, md: 4 },
|
|
786
860
|
size: { base: "sm", md: "lg" },
|
|
787
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
788
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
861
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { children: [
|
|
862
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Icon, { as: localeIcon }),
|
|
789
863
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: localeCode.toUpperCase() })
|
|
790
864
|
] })
|
|
791
865
|
}
|
|
792
866
|
),
|
|
793
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
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)) })
|
|
794
868
|
] });
|
|
795
869
|
};
|
|
796
|
-
const NavLink = react.forwardRef(({ slug, label }, ref) => {
|
|
870
|
+
const NavLink = react$1.forwardRef(({ slug, label }, ref) => {
|
|
797
871
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
798
|
-
react
|
|
872
|
+
react.Text,
|
|
799
873
|
{
|
|
800
874
|
ref,
|
|
801
875
|
as: index.Link,
|
|
@@ -809,11 +883,11 @@ const NavLink = react.forwardRef(({ slug, label }, ref) => {
|
|
|
809
883
|
});
|
|
810
884
|
NavLink.displayName = "NavLink";
|
|
811
885
|
const NavList$1 = ({ slug, label, children }) => {
|
|
812
|
-
const background = react
|
|
813
|
-
const backgroundHover = react
|
|
814
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
815
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
816
|
-
react
|
|
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,
|
|
817
891
|
{
|
|
818
892
|
p: 2,
|
|
819
893
|
fontWeight: "semibold",
|
|
@@ -824,7 +898,7 @@ const NavList$1 = ({ slug, label, children }) => {
|
|
|
824
898
|
}
|
|
825
899
|
) }),
|
|
826
900
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
827
|
-
react
|
|
901
|
+
react.PopoverContent,
|
|
828
902
|
{
|
|
829
903
|
p: 2,
|
|
830
904
|
border: 0,
|
|
@@ -834,11 +908,11 @@ const NavList$1 = ({ slug, label, children }) => {
|
|
|
834
908
|
rounded: "xl",
|
|
835
909
|
boxShadow: "xl",
|
|
836
910
|
bg: background,
|
|
837
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(react
|
|
838
|
-
return /* @__PURE__ */ jsxRuntime.jsx(react
|
|
839
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
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 }),
|
|
840
914
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
841
|
-
react
|
|
915
|
+
react.Flex,
|
|
842
916
|
{
|
|
843
917
|
flex: 1,
|
|
844
918
|
justify: "flex-end",
|
|
@@ -847,7 +921,7 @@ const NavList$1 = ({ slug, label, children }) => {
|
|
|
847
921
|
transition: "all .3s ease",
|
|
848
922
|
transform: "translateX(-10px)",
|
|
849
923
|
_groupHover: { opacity: 1, transform: "translateX(0)" },
|
|
850
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(react
|
|
924
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { as: icons.ChevronRightIcon, color: "brand.400", w: 5, h: 5 })
|
|
851
925
|
}
|
|
852
926
|
)
|
|
853
927
|
] }) }, index$12);
|
|
@@ -857,16 +931,16 @@ const NavList$1 = ({ slug, label, children }) => {
|
|
|
857
931
|
] });
|
|
858
932
|
};
|
|
859
933
|
const DesktopNavigation = ({ menu }) => {
|
|
860
|
-
return /* @__PURE__ */ jsxRuntime.jsx(react
|
|
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) => {
|
|
861
935
|
var _a;
|
|
862
|
-
return /* @__PURE__ */ jsxRuntime.jsx(react
|
|
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);
|
|
863
937
|
}) });
|
|
864
938
|
};
|
|
865
939
|
const CHEVRON_DOWN_ICON_SIZE = "1.5rem";
|
|
866
940
|
const NavList = ({ slug, label, children, isExpanded, onExpand }) => {
|
|
867
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
941
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.Stack, { flex: 1, children: [
|
|
868
942
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
869
|
-
react
|
|
943
|
+
react.Flex,
|
|
870
944
|
{
|
|
871
945
|
as: "button",
|
|
872
946
|
p: 2,
|
|
@@ -876,7 +950,7 @@ const NavList = ({ slug, label, children, isExpanded, onExpand }) => {
|
|
|
876
950
|
_hover: { textDecoration: "none", color: "brand.400" },
|
|
877
951
|
onClick: onExpand,
|
|
878
952
|
children: [
|
|
879
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
953
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Text, { isTruncated: true, fontWeight: 600, children: label }),
|
|
880
954
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
881
955
|
icons.ChevronDownIcon,
|
|
882
956
|
{
|
|
@@ -889,8 +963,8 @@ const NavList = ({ slug, label, children, isExpanded, onExpand }) => {
|
|
|
889
963
|
]
|
|
890
964
|
}
|
|
891
965
|
),
|
|
892
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
893
|
-
react
|
|
966
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Collapse, { in: isExpanded, transition: { enter: { ease: "easeIn" }, exit: { duration: 0.2 } }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
967
|
+
react.List,
|
|
894
968
|
{
|
|
895
969
|
ml: 2,
|
|
896
970
|
pl: 0,
|
|
@@ -898,8 +972,8 @@ const NavList = ({ slug, label, children, isExpanded, onExpand }) => {
|
|
|
898
972
|
overflowY: "auto",
|
|
899
973
|
borderLeft: 1,
|
|
900
974
|
borderStyle: "solid",
|
|
901
|
-
borderColor: react
|
|
902
|
-
children: children == null ? void 0 : children.map((child, index$12) => /* @__PURE__ */ jsxRuntime.jsx(react
|
|
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))
|
|
903
977
|
}
|
|
904
978
|
) })
|
|
905
979
|
] });
|
|
@@ -907,9 +981,9 @@ const NavList = ({ slug, label, children, isExpanded, onExpand }) => {
|
|
|
907
981
|
const CLOSE_ICON_SIZE = "0.75rem";
|
|
908
982
|
const HAMBURGER_ICON_SIZE = "1rem";
|
|
909
983
|
const MobileNavigation = ({ menu }) => {
|
|
910
|
-
const [expanded, setExpanded] = react.useState(null);
|
|
911
|
-
const { isOpen, onToggle } = react
|
|
912
|
-
const background = react
|
|
984
|
+
const [expanded, setExpanded] = react$1.useState(null);
|
|
985
|
+
const { isOpen, onToggle } = react.useDisclosure();
|
|
986
|
+
const background = react.useColorModeValue("gray.50", "gray.900");
|
|
913
987
|
function handleExpand(index2) {
|
|
914
988
|
return () => {
|
|
915
989
|
setExpanded((prev) => prev === index2 ? null : index2);
|
|
@@ -919,9 +993,9 @@ const MobileNavigation = ({ menu }) => {
|
|
|
919
993
|
setExpanded(null);
|
|
920
994
|
onToggle();
|
|
921
995
|
}
|
|
922
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
996
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.Box, { display: { base: "block", md: "none" }, children: [
|
|
923
997
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
924
|
-
react
|
|
998
|
+
react.IconButton,
|
|
925
999
|
{
|
|
926
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 }),
|
|
927
1001
|
size: "sm",
|
|
@@ -931,19 +1005,19 @@ const MobileNavigation = ({ menu }) => {
|
|
|
931
1005
|
onClick: handleClick
|
|
932
1006
|
}
|
|
933
1007
|
),
|
|
934
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
935
|
-
react
|
|
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,
|
|
936
1010
|
{
|
|
937
1011
|
spacing: 2,
|
|
938
1012
|
p: 2,
|
|
939
1013
|
boxShadow: "md",
|
|
940
1014
|
borderWidth: "1px",
|
|
941
|
-
borderColor: react
|
|
1015
|
+
borderColor: react.useColorModeValue("gray.200", "gray.700"),
|
|
942
1016
|
borderRadius: "md",
|
|
943
1017
|
bg: background,
|
|
944
1018
|
children: menu.map((item, index2) => {
|
|
945
1019
|
var _a;
|
|
946
|
-
return /* @__PURE__ */ jsxRuntime.jsx(react
|
|
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);
|
|
947
1021
|
})
|
|
948
1022
|
}
|
|
949
1023
|
) }) })
|
|
@@ -966,19 +1040,19 @@ const Header = () => {
|
|
|
966
1040
|
const hasNavigation = !!menu.length;
|
|
967
1041
|
const hasToolbar = !!toolbar || isMultiLanguage;
|
|
968
1042
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
969
|
-
react
|
|
1043
|
+
react.Box,
|
|
970
1044
|
{
|
|
971
1045
|
as: "header",
|
|
972
1046
|
position: "sticky",
|
|
973
1047
|
top: 0,
|
|
974
|
-
bg: react
|
|
975
|
-
color: react
|
|
1048
|
+
bg: react.useColorModeValue("white", "gray.900"),
|
|
1049
|
+
color: react.useColorModeValue("gray.700", "gray.200"),
|
|
976
1050
|
boxShadow: "sm",
|
|
977
1051
|
zIndex: 100,
|
|
978
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Container, { children: /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
1052
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Container, { children: /* @__PURE__ */ jsxRuntime.jsxs(react.Flex, { as: "nav", gap: 2, py: 2, children: [
|
|
979
1053
|
/* @__PURE__ */ jsxRuntime.jsx(Brand, { brand: /* @__PURE__ */ jsxRuntime.jsx(Logo, {}) }),
|
|
980
1054
|
(hasNavigation || hasToolbar) && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
981
|
-
react
|
|
1055
|
+
react.Flex,
|
|
982
1056
|
{
|
|
983
1057
|
as: "section",
|
|
984
1058
|
flex: 1,
|
|
@@ -987,8 +1061,8 @@ const Header = () => {
|
|
|
987
1061
|
align: "center",
|
|
988
1062
|
gap: 2,
|
|
989
1063
|
children: [
|
|
990
|
-
hasNavigation && /* @__PURE__ */ jsxRuntime.jsx(react
|
|
991
|
-
hasToolbar && /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
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: [
|
|
992
1066
|
!!toolbar && toolbar,
|
|
993
1067
|
isMultiLanguage && /* @__PURE__ */ jsxRuntime.jsx(LocaleSwitcher, { currentLocale, locales })
|
|
994
1068
|
] })
|
|
@@ -1000,37 +1074,37 @@ const Header = () => {
|
|
|
1000
1074
|
);
|
|
1001
1075
|
};
|
|
1002
1076
|
const Hero = ({ title, subtitle, content, link, image }) => {
|
|
1003
|
-
return /* @__PURE__ */ jsxRuntime.jsx(react
|
|
1004
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
1005
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react
|
|
1006
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react
|
|
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: [
|
|
1007
1081
|
title,
|
|
1008
1082
|
" —"
|
|
1009
1083
|
] }),
|
|
1010
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
1084
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Text, { as: "span", display: "block", color: "brand.400", children: subtitle })
|
|
1011
1085
|
] }),
|
|
1012
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
1013
|
-
!!link && /* @__PURE__ */ jsxRuntime.jsx(react
|
|
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" }) })
|
|
1014
1088
|
] }) }),
|
|
1015
|
-
image && /* @__PURE__ */ jsxRuntime.jsx(react
|
|
1089
|
+
image && /* @__PURE__ */ jsxRuntime.jsx(react.Flex, { display: { base: "none", md: "flex" }, flex: 1, children: image })
|
|
1016
1090
|
] }) }) });
|
|
1017
1091
|
};
|
|
1018
1092
|
const Main = ({ children }) => {
|
|
1019
1093
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1020
|
-
react
|
|
1094
|
+
react.Flex,
|
|
1021
1095
|
{
|
|
1022
1096
|
as: "main",
|
|
1023
1097
|
direction: "column",
|
|
1024
1098
|
flexGrow: 1,
|
|
1025
|
-
bg: react
|
|
1026
|
-
color: react
|
|
1099
|
+
bg: react.useColorModeValue("white", "gray.800"),
|
|
1100
|
+
color: react.useColorModeValue("gray.700", "gray.200"),
|
|
1027
1101
|
children
|
|
1028
1102
|
}
|
|
1029
1103
|
);
|
|
1030
1104
|
};
|
|
1031
1105
|
const ScrollToTop = () => {
|
|
1032
|
-
const [isVisible, setIsVisible] = react.useState(false);
|
|
1033
|
-
react.useEffect(() => {
|
|
1106
|
+
const [isVisible, setIsVisible] = react$1.useState(false);
|
|
1107
|
+
react$1.useEffect(() => {
|
|
1034
1108
|
const toggleVisibility = () => {
|
|
1035
1109
|
setIsVisible(window.scrollY > 300);
|
|
1036
1110
|
};
|
|
@@ -1046,7 +1120,7 @@ const ScrollToTop = () => {
|
|
|
1046
1120
|
});
|
|
1047
1121
|
}
|
|
1048
1122
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1049
|
-
react
|
|
1123
|
+
react.Box,
|
|
1050
1124
|
{
|
|
1051
1125
|
position: "fixed",
|
|
1052
1126
|
bottom: { base: 4, md: 8, lg: 16 },
|
|
@@ -1057,7 +1131,7 @@ const ScrollToTop = () => {
|
|
|
1057
1131
|
transition: "opacity 0.4s ease, transform 0.4s ease",
|
|
1058
1132
|
pointerEvents: isVisible ? "auto" : "none",
|
|
1059
1133
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1060
|
-
react
|
|
1134
|
+
react.IconButton,
|
|
1061
1135
|
{
|
|
1062
1136
|
"aria-label": "Scroll to top",
|
|
1063
1137
|
icon: /* @__PURE__ */ jsxRuntime.jsx(icons.ChevronUpIcon, { w: 6, h: 6 }),
|
|
@@ -1073,7 +1147,7 @@ const ScrollToTop = () => {
|
|
|
1073
1147
|
};
|
|
1074
1148
|
const Layout = ({ children }) => {
|
|
1075
1149
|
const content = typeof children === "function" ? children({ Hero, Content }) : /* @__PURE__ */ jsxRuntime.jsx(Content, { children });
|
|
1076
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
1150
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.Stack, { spacing: 0, position: "relative", w: "100%", minH: "100dvh", children: [
|
|
1077
1151
|
/* @__PURE__ */ jsxRuntime.jsx(Header, {}),
|
|
1078
1152
|
/* @__PURE__ */ jsxRuntime.jsx(Main, { children: content }),
|
|
1079
1153
|
/* @__PURE__ */ jsxRuntime.jsx(Footer, {}),
|
|
@@ -1081,19 +1155,19 @@ const Layout = ({ children }) => {
|
|
|
1081
1155
|
] });
|
|
1082
1156
|
};
|
|
1083
1157
|
const List = ({ items, bullet = "—", render, ...boxProps }) => {
|
|
1084
|
-
return /* @__PURE__ */ jsxRuntime.jsx(react
|
|
1085
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
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 }),
|
|
1086
1160
|
render ? render(item) : item
|
|
1087
1161
|
] }, index2)) });
|
|
1088
1162
|
};
|
|
1089
1163
|
const NotFound = () => {
|
|
1090
1164
|
const { t } = reactI18next.useTranslation("pageNotFound");
|
|
1091
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
1092
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
1093
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react
|
|
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: [
|
|
1094
1168
|
t("description"),
|
|
1095
1169
|
" ",
|
|
1096
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
1170
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Button, { as: index.Link, to: "/", variant: "link", colorScheme: "brand", fontSize: "xl", children: t("action") })
|
|
1097
1171
|
] })
|
|
1098
1172
|
] });
|
|
1099
1173
|
};
|
|
@@ -1116,35 +1190,35 @@ const BgColorMap = {
|
|
|
1116
1190
|
const ProsConsCard = ({ itemType, items }) => {
|
|
1117
1191
|
const { t } = reactI18next.useTranslation("prosCons");
|
|
1118
1192
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1119
|
-
react
|
|
1193
|
+
react.Card,
|
|
1120
1194
|
{
|
|
1121
1195
|
as: "article",
|
|
1122
1196
|
flex: 1,
|
|
1123
1197
|
p: 2,
|
|
1124
|
-
bgColor: react
|
|
1198
|
+
bgColor: react.useColorModeValue(`${BgColorMap[itemType]}.100`, `${BgColorMap[itemType]}.800`),
|
|
1125
1199
|
children: [
|
|
1126
1200
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1127
|
-
react
|
|
1201
|
+
react.CardHeader,
|
|
1128
1202
|
{
|
|
1129
1203
|
as: "header",
|
|
1130
1204
|
p: 2,
|
|
1131
1205
|
borderTopRadius: "md",
|
|
1132
|
-
bgColor: react
|
|
1133
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(react
|
|
1206
|
+
bgColor: react.useColorModeValue("whiteAlpha.800", "blackAlpha.800"),
|
|
1207
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(react.Heading, { as: "h3", textTransform: "uppercase", fontSize: "xl", children: t(TitleMap[itemType]) })
|
|
1134
1208
|
}
|
|
1135
1209
|
),
|
|
1136
1210
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1137
|
-
react
|
|
1211
|
+
react.CardBody,
|
|
1138
1212
|
{
|
|
1139
1213
|
as: "section",
|
|
1140
1214
|
p: 2,
|
|
1141
1215
|
borderBottomRadius: "md",
|
|
1142
|
-
bgColor: react
|
|
1143
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(react
|
|
1144
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
1145
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react
|
|
1216
|
+
bgColor: react.useColorModeValue("whiteAlpha.800", "blackAlpha.800"),
|
|
1217
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(react.List, { spacing: 4, p: 0, children: items.map(({ title, description }) => /* @__PURE__ */ jsxRuntime.jsxs(react.ListItem, { display: "flex", children: [
|
|
1218
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.ListIcon, { as: IconMap[itemType], w: 6, h: 6, color: IconColorMap[itemType] }),
|
|
1219
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.Text, { fontWeight: "semibold", fontSize: "md", children: [
|
|
1146
1220
|
title,
|
|
1147
|
-
!!description && /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
1221
|
+
!!description && /* @__PURE__ */ jsxRuntime.jsxs(react.Text, { as: "span", fontWeight: "normal", children: [
|
|
1148
1222
|
": ",
|
|
1149
1223
|
description
|
|
1150
1224
|
] })
|
|
@@ -1158,7 +1232,7 @@ const ProsConsCard = ({ itemType, items }) => {
|
|
|
1158
1232
|
};
|
|
1159
1233
|
const ProsCons = ({ items, ...boxProps }) => {
|
|
1160
1234
|
const { pros, cons } = items;
|
|
1161
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
1235
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.Flex, { as: "section", direction: { base: "column", md: "row" }, gap: 4, ...boxProps, children: [
|
|
1162
1236
|
/* @__PURE__ */ jsxRuntime.jsx(ProsConsCard, { itemType: "pros", items: pros }),
|
|
1163
1237
|
/* @__PURE__ */ jsxRuntime.jsx(ProsConsCard, { itemType: "cons", items: cons })
|
|
1164
1238
|
] });
|
|
@@ -1175,7 +1249,7 @@ const Seo = ({ children, title, description, lang }) => {
|
|
|
1175
1249
|
const { name: siteName, lang: defaultLang, seo } = metadata;
|
|
1176
1250
|
const { title: defaultTitle, description: defaultDescription } = seo;
|
|
1177
1251
|
const siteLang = lang || defaultLang;
|
|
1178
|
-
const placeholders = react.useMemo(
|
|
1252
|
+
const placeholders = react$1.useMemo(
|
|
1179
1253
|
() => ({
|
|
1180
1254
|
siteName,
|
|
1181
1255
|
currentYear: index$4.getCurrentYear(siteLang),
|
|
@@ -1208,22 +1282,22 @@ const Table = ({
|
|
|
1208
1282
|
const headerItems = items.slice(0, columnNumber);
|
|
1209
1283
|
const bodyItems = items.slice(columnNumber);
|
|
1210
1284
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1211
|
-
react
|
|
1285
|
+
react.TableContainer,
|
|
1212
1286
|
{
|
|
1213
1287
|
border: bordered ? void 0 : "none",
|
|
1214
1288
|
...scrollable ? { maxH: "50vh", overflowY: "auto" } : {},
|
|
1215
1289
|
...boxProps,
|
|
1216
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
1217
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
1218
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
1219
|
-
!!caption && /* @__PURE__ */ jsxRuntime.jsx(react
|
|
1290
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(react.Table, { variant: striped ? "striped" : "simple", children: [
|
|
1291
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Thead, { ...scrollable ? { position: "sticky", top: 0, zIndex: 1, bg: "gray.800" } : {}, children: /* @__PURE__ */ jsxRuntime.jsx(react.Tr, { children: headerItems.map((item, index2) => /* @__PURE__ */ jsxRuntime.jsx(react.Th, { children: item }, index2)) }) }),
|
|
1292
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Tbody, { children: Array.from({ length: Math.ceil(bodyItems.length / columnNumber) }, (_, rowIndex) => /* @__PURE__ */ jsxRuntime.jsx(react.Tr, { children: Array.from({ length: columnNumber }, (_2, colIndex) => /* @__PURE__ */ jsxRuntime.jsx(react.Td, { children: bodyItems[rowIndex * columnNumber + colIndex] || "" }, colIndex)) }, rowIndex)) }),
|
|
1293
|
+
!!caption && /* @__PURE__ */ jsxRuntime.jsx(react.TableCaption, { children: caption })
|
|
1220
1294
|
] })
|
|
1221
1295
|
}
|
|
1222
1296
|
);
|
|
1223
1297
|
};
|
|
1224
1298
|
const Tip = ({ tip, author = null, ...boxProps }) => {
|
|
1225
1299
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1226
|
-
react
|
|
1300
|
+
react.Card,
|
|
1227
1301
|
{
|
|
1228
1302
|
variant: "filled",
|
|
1229
1303
|
p: 4,
|
|
@@ -1236,12 +1310,12 @@ const Tip = ({ tip, author = null, ...boxProps }) => {
|
|
|
1236
1310
|
left: -2,
|
|
1237
1311
|
fontSize: "6rem",
|
|
1238
1312
|
fontStyle: "italic",
|
|
1239
|
-
color: react
|
|
1313
|
+
color: react.useColorModeValue("blackAlpha.300", "whiteAlpha.300")
|
|
1240
1314
|
},
|
|
1241
1315
|
...boxProps,
|
|
1242
1316
|
children: [
|
|
1243
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
1244
|
-
!!author && /* @__PURE__ */ jsxRuntime.jsx(react
|
|
1317
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.CardBody, { as: "blockquote", p: 0, fontStyle: "italic", children: tip }),
|
|
1318
|
+
!!author && /* @__PURE__ */ jsxRuntime.jsx(react.CardFooter, { alignItems: "center", justify: "flex-end", p: 0, children: /* @__PURE__ */ jsxRuntime.jsx(Author, { author, variant: "short" }) })
|
|
1245
1319
|
]
|
|
1246
1320
|
}
|
|
1247
1321
|
);
|
|
@@ -1249,7 +1323,7 @@ const Tip = ({ tip, author = null, ...boxProps }) => {
|
|
|
1249
1323
|
const ExternalImage = ({ image, component: ImageComponent, alt = "", ...imageProps }) => {
|
|
1250
1324
|
var _a, _b;
|
|
1251
1325
|
const imageData = (_b = (_a = image == null ? void 0 : image.localFile) == null ? void 0 : _a.childImageSharp) == null ? void 0 : _b.gatsbyImageData;
|
|
1252
|
-
return imageData ? /* @__PURE__ */ jsxRuntime.jsx(ImageComponent, { image: imageData, alt, ...imageProps }) :
|
|
1326
|
+
return imageData ? /* @__PURE__ */ jsxRuntime.jsx(ImageComponent, { image: imageData, alt, ...imageProps }) : null;
|
|
1253
1327
|
};
|
|
1254
1328
|
const RichText = ({ content }) => {
|
|
1255
1329
|
const components = react$2.useMDXComponents();
|
|
@@ -1303,15 +1377,14 @@ const StrapiComponent = ({ type, props, imageComponent }) => {
|
|
|
1303
1377
|
}
|
|
1304
1378
|
);
|
|
1305
1379
|
case "STRAPI__COMPONENT_CONTENT_LIST":
|
|
1306
|
-
return /* @__PURE__ */ jsxRuntime.jsx(List, { bullet: props.bullet, items: extractItemsFromJson(props.content) });
|
|
1380
|
+
return /* @__PURE__ */ jsxRuntime.jsx(List, { bullet: props.bullet, items: extractItemsFromJson(props.content), mb: 4 });
|
|
1307
1381
|
case "STRAPI__COMPONENT_CONTENT_MEDIA":
|
|
1308
1382
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1309
|
-
|
|
1383
|
+
index.Image,
|
|
1310
1384
|
{
|
|
1311
|
-
component: imageComponent,
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
style: { display: "inline-block", marginBottom: 16 }
|
|
1385
|
+
src: /* @__PURE__ */ jsxRuntime.jsx(ExternalImage, { component: imageComponent, image: props.file, alt: props.alternativeText }),
|
|
1386
|
+
mb: 4,
|
|
1387
|
+
hasZoom: true
|
|
1315
1388
|
}
|
|
1316
1389
|
);
|
|
1317
1390
|
case "STRAPI__COMPONENT_CONTENT_PROS_CONS":
|
|
@@ -1367,7 +1440,7 @@ const StrapiContentRenderer = ({ content, imageComponent }) => {
|
|
|
1367
1440
|
return content.map(({ __typename: type, ...props }, index2) => /* @__PURE__ */ jsxRuntime.jsx(StrapiComponent, { type, props, imageComponent }, index2));
|
|
1368
1441
|
};
|
|
1369
1442
|
const Tabs = ({ items, render, ...boxProps }) => {
|
|
1370
|
-
const { tabs, panels } = react.useMemo(() => {
|
|
1443
|
+
const { tabs, panels } = react$1.useMemo(() => {
|
|
1371
1444
|
const tabs2 = [];
|
|
1372
1445
|
const panels2 = [];
|
|
1373
1446
|
items.forEach(({ content, ...tab }) => {
|
|
@@ -1376,9 +1449,9 @@ const Tabs = ({ items, render, ...boxProps }) => {
|
|
|
1376
1449
|
});
|
|
1377
1450
|
return { tabs: tabs2, panels: panels2 };
|
|
1378
1451
|
}, []);
|
|
1379
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(react
|
|
1380
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
1381
|
-
/* @__PURE__ */ jsxRuntime.jsx(react
|
|
1452
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.Tabs, { overflow: "hidden", colorScheme: "brand", ...boxProps, children: [
|
|
1453
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.TabList, { overflow: "auto hidden", children: tabs.map(({ label, icon }, index2) => /* @__PURE__ */ jsxRuntime.jsx(react.Tab, { children: /* @__PURE__ */ jsxRuntime.jsx(react.Text, { as: "h3", isTruncated: true, children: icon ? `${icon} ${label}` : label }) }, index2)) }),
|
|
1454
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.TabPanels, { children: panels.map((panel, index2) => /* @__PURE__ */ jsxRuntime.jsx(react.TabPanel, { children: render ? render(panel) : panel }, index2)) })
|
|
1382
1455
|
] });
|
|
1383
1456
|
};
|
|
1384
1457
|
exports.Author = Author;
|
|
@@ -1402,6 +1475,8 @@ exports.List = List;
|
|
|
1402
1475
|
exports.NotFound = NotFound;
|
|
1403
1476
|
exports.ProsCons = ProsCons;
|
|
1404
1477
|
exports.Seo = Seo;
|
|
1478
|
+
exports.SocialNetwork = SocialNetwork;
|
|
1479
|
+
exports.SocialNetworks = SocialNetworks;
|
|
1405
1480
|
exports.StrapiContentRenderer = StrapiContentRenderer;
|
|
1406
1481
|
exports.Table = Table;
|
|
1407
1482
|
exports.Tabs = Tabs;
|