/*! elementor - v3.27.0 - 03-02-2025 */
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ "../assets/dev/js/utils/react.js":
/*!***************************************!*\
!*** ../assets/dev/js/utils/react.js ***!
\***************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var ReactDOM = _interopRequireWildcard(__webpack_require__(/*! react-dom */ "react-dom"));
var _client = __webpack_require__(/*! react-dom/client */ "../node_modules/react-dom/client.js");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
/**
* Support conditional rendering of a React App to the DOM, based on the React version.
* We use `createRoot` when available, but fallback to `ReactDOM.render` for older versions.
*
* @param { React.ReactElement } app The app to render.
* @param { HTMLElement } domElement The DOM element to render the app into.
*
* @return {{ unmount: () => void }} The unmount function.
*/
function render(app, domElement) {
var unmountFunction;
try {
var root = (0, _client.createRoot)(domElement);
root.render(app);
unmountFunction = function unmountFunction() {
root.unmount();
};
} catch (e) {
// eslint-disable-next-line react/no-deprecated
ReactDOM.render(app, domElement);
unmountFunction = function unmountFunction() {
// eslint-disable-next-line react/no-deprecated
ReactDOM.unmountComponentAtNode(domElement);
};
}
return {
unmount: unmountFunction
};
}
var _default = exports["default"] = {
render: render
};
/***/ }),
/***/ "../modules/home/assets/js/components/addons-section.js":
/*!**************************************************************!*\
!*** ../modules/home/assets/js/components/addons-section.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _objectDestructuringEmpty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectDestructuringEmpty */ "../node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js"));
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _List = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/List */ "@elementor/ui/List"));
var _Link = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Link */ "@elementor/ui/Link"));
var _Button = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Button */ "@elementor/ui/Button"));
var _Card = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Card */ "@elementor/ui/Card"));
var _CardActions = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/CardActions */ "@elementor/ui/CardActions"));
var _CardContent = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/CardContent */ "@elementor/ui/CardContent"));
var _CardMedia = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/CardMedia */ "@elementor/ui/CardMedia"));
var Addons = function Addons(_ref) {
var props = (0, _extends2.default)({}, ((0, _objectDestructuringEmpty2.default)(_ref), _ref));
var domain = props.adminUrl.replace('wp-admin/', '');
var addonsArray = props.addonsData.repeater;
var cardsPerRow = 3 === addonsArray.length ? 3 : 2;
return /*#__PURE__*/_react.default.createElement(_ui.Paper, {
elevation: 0,
sx: {
p: 3,
display: 'flex',
flexDirection: 'column',
gap: 2
}
}, /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_ui.Typography, {
variant: "h6"
}, props.addonsData.header.title), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
variant: "body2",
color: "text.secondary"
}, props.addonsData.header.description)), /*#__PURE__*/_react.default.createElement(_List.default, {
sx: {
display: 'grid',
gridTemplateColumns: {
md: "repeat(".concat(cardsPerRow, ", 1fr)"),
xs: 'repeat(1, 1fr)'
},
gap: 2
}
}, addonsArray.map(function (item) {
var linkTarget = item.hasOwnProperty('target') ? item.target : '_blank';
return /*#__PURE__*/_react.default.createElement(_Card.default, {
key: item.title,
elevation: 0,
sx: {
display: 'flex',
border: 1,
borderRadius: 1,
borderColor: 'action.focus'
}
}, /*#__PURE__*/_react.default.createElement(_CardContent.default, {
sx: {
display: 'flex',
flexDirection: 'column',
justifyContent: 'space-between',
gap: 3,
p: 3
}
}, /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_CardMedia.default, {
image: item.image,
sx: {
height: '58px',
width: '58px',
mb: 2
}
}), /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_ui.Typography, {
variant: "subtitle2"
}, item.title), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
variant: "body2",
color: "text.secondary"
}, item.description))), /*#__PURE__*/_react.default.createElement(_CardActions.default, {
sx: {
p: 0
}
}, /*#__PURE__*/_react.default.createElement(_Button.default, {
variant: "outlined",
size: "small",
color: "promotion",
href: item.url,
target: linkTarget
}, item.button_label))));
})), /*#__PURE__*/_react.default.createElement(_Link.default, {
variant: "body2",
color: "info.main",
underline: "none",
href: "".concat(domain).concat(props.addonsData.footer.file_path)
}, props.addonsData.footer.label));
};
var _default = exports["default"] = Addons;
Addons.propTypes = {
addonsData: PropTypes.object.isRequired,
adminUrl: PropTypes.string.isRequired
};
/***/ }),
/***/ "../modules/home/assets/js/components/create-new-page-dialog.js":
/*!**********************************************************************!*\
!*** ../modules/home/assets/js/components/create-new-page-dialog.js ***!
\**********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
var _DialogHeader = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/DialogHeader */ "@elementor/ui/DialogHeader"));
var _DialogHeaderGroup = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/DialogHeaderGroup */ "@elementor/ui/DialogHeaderGroup"));
var _DialogTitle = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/DialogTitle */ "@elementor/ui/DialogTitle"));
var _DialogContent = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/DialogContent */ "@elementor/ui/DialogContent"));
var _DialogContentText = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/DialogContentText */ "@elementor/ui/DialogContentText"));
var _TextField = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/TextField */ "@elementor/ui/TextField"));
var _DialogActions = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/DialogActions */ "@elementor/ui/DialogActions"));
var _Button = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Button */ "@elementor/ui/Button"));
var _Dialog = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Dialog */ "@elementor/ui/Dialog"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
var CreateNewPageDialog = function CreateNewPageDialog(_ref) {
var url = _ref.url,
isOpen = _ref.isOpen,
closedDialogCallback = _ref.closedDialogCallback;
var _React$useState = _react.default.useState(false),
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
open = _React$useState2[0],
setOpen = _React$useState2[1];
var _React$useState3 = _react.default.useState(''),
_React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
pageName = _React$useState4[0],
setPageName = _React$useState4[1];
(0, _react.useEffect)(function () {
setOpen(isOpen);
}, [isOpen]);
var handleDialogClose = function handleDialogClose() {
setOpen(false);
closedDialogCallback();
};
var handleChange = function handleChange(event) {
var urlParams = new URLSearchParams();
urlParams.append('post_data[post_title]', event.target.value);
setPageName(urlParams.toString());
};
return /*#__PURE__*/_react.default.createElement(_Dialog.default, {
open: open,
onClose: handleDialogClose,
maxWidth: "xs",
width: "xs",
fullWidth: true
}, /*#__PURE__*/_react.default.createElement(_DialogHeader.default, null, /*#__PURE__*/_react.default.createElement(_DialogHeaderGroup.default, null, /*#__PURE__*/_react.default.createElement(_DialogTitle.default, null, __('Name your page', 'elementor')))), /*#__PURE__*/_react.default.createElement(_DialogContent.default, {
dividers: true
}, /*#__PURE__*/_react.default.createElement(_DialogContentText.default, {
sx: {
mb: 2
}
}, __('To proceed, please name your first page,', 'elementor'), /*#__PURE__*/_react.default.createElement("br", null), __('or rename it later.', 'elementor')), /*#__PURE__*/_react.default.createElement(_TextField.default, {
onChange: handleChange,
fullWidth: true,
placeholder: __('New Page', 'elementor')
})), /*#__PURE__*/_react.default.createElement(_DialogActions.default, null, /*#__PURE__*/_react.default.createElement(_Button.default, {
onClick: handleDialogClose,
color: "secondary"
}, __('Cancel', 'elementor')), /*#__PURE__*/_react.default.createElement(_Button.default, {
variant: "contained",
href: pageName ? url + '&' + pageName : url,
target: "_blank"
}, __('Save', 'elementor'))));
};
var _default = exports["default"] = CreateNewPageDialog;
CreateNewPageDialog.propTypes = {
url: PropTypes.string.isRequired,
isOpen: PropTypes.bool.isRequired,
closedDialogCallback: PropTypes.func.isRequired
};
/***/ }),
/***/ "../modules/home/assets/js/components/external-links-section.js":
/*!**********************************************************************!*\
!*** ../modules/home/assets/js/components/external-links-section.js ***!
\**********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _objectDestructuringEmpty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectDestructuringEmpty */ "../node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js"));
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _List = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/List */ "@elementor/ui/List"));
var _ListItemButton = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/ListItemButton */ "@elementor/ui/ListItemButton"));
var _ListItemText = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/ListItemText */ "@elementor/ui/ListItemText"));
var _Divider = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Divider */ "@elementor/ui/Divider"));
var ExternalLinksSection = function ExternalLinksSection(_ref) {
var props = (0, _extends2.default)({}, ((0, _objectDestructuringEmpty2.default)(_ref), _ref));
return /*#__PURE__*/_react.default.createElement(_ui.Paper, {
elevation: 0,
sx: {
px: 3
}
}, /*#__PURE__*/_react.default.createElement(_List.default, null, props.externalLinksData.map(function (item, index) {
return /*#__PURE__*/_react.default.createElement(_ui.Box, {
key: item.label
}, /*#__PURE__*/_react.default.createElement(_ListItemButton.default, {
href: item.url,
target: "_blank",
sx: {
'&:hover': {
backgroundColor: 'initial'
},
gap: 2,
px: 0,
py: 2
}
}, /*#__PURE__*/_react.default.createElement(_ui.Box, {
component: "img",
src: item.image,
sx: {
width: '38px'
}
}), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
sx: {
color: 'text.secondary'
},
primary: item.label
})), index < props.externalLinksData.length - 1 && /*#__PURE__*/_react.default.createElement(_Divider.default, null));
})));
};
var _default = exports["default"] = ExternalLinksSection;
ExternalLinksSection.propTypes = {
externalLinksData: PropTypes.array.isRequired
};
/***/ }),
/***/ "../modules/home/assets/js/components/get-started-list-item.js":
/*!*********************************************************************!*\
!*** ../modules/home/assets/js/components/get-started-list-item.js ***!
\*********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
var _ListItem = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/ListItem */ "@elementor/ui/ListItem"));
var _ListItemText = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/ListItemText */ "@elementor/ui/ListItemText"));
var _Link = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Link */ "@elementor/ui/Link"));
var _Box = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Box */ "@elementor/ui/Box"));
var _createNewPageDialog = _interopRequireDefault(__webpack_require__(/*! ./create-new-page-dialog */ "../modules/home/assets/js/components/create-new-page-dialog.js"));
var GetStartedListItem = function GetStartedListItem(_ref) {
var item = _ref.item,
image = _ref.image,
adminUrl = _ref.adminUrl;
var url = item.is_relative_url ? adminUrl + item.url : item.url;
var _React$useState = _react.default.useState(false),
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
isOpen = _React$useState2[0],
openDialog = _React$useState2[1];
var handleLinkClick = function handleLinkClick(event) {
if (!item.new_page) {
return;
}
event.preventDefault();
openDialog(true);
};
return /*#__PURE__*/_react.default.createElement(_ListItem.default, {
alignItems: "flex-start",
sx: {
gap: 1,
p: 0,
maxWidth: '150px'
}
}, /*#__PURE__*/_react.default.createElement(_Box.default, {
component: "img",
src: image
}), /*#__PURE__*/_react.default.createElement(_Box.default, null, /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
primary: item.title,
primaryTypographyProps: {
variant: 'subtitle1'
},
sx: {
my: 0
}
}), /*#__PURE__*/_react.default.createElement(_Link.default, {
variant: "body2",
color: item.title_small_color ? item.title_small_color : 'text.tertiary',
underline: "hover",
href: url,
target: "_blank",
onClick: handleLinkClick
}, item.title_small)), item.new_page && /*#__PURE__*/_react.default.createElement(_createNewPageDialog.default, {
url: url,
isOpen: isOpen,
closedDialogCallback: function closedDialogCallback() {
return openDialog(false);
}
}));
};
var _default = exports["default"] = GetStartedListItem;
GetStartedListItem.propTypes = {
item: PropTypes.shape({
title: PropTypes.string.isRequired,
title_small: PropTypes.string.isRequired,
url: PropTypes.string.isRequired,
new_page: PropTypes.bool,
is_relative_url: PropTypes.bool,
title_small_color: PropTypes.string
}).isRequired,
adminUrl: PropTypes.string.isRequired,
image: PropTypes.string
};
/***/ }),
/***/ "../modules/home/assets/js/components/get-started-section.js":
/*!*******************************************************************!*\
!*** ../modules/home/assets/js/components/get-started-section.js ***!
\*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _objectDestructuringEmpty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectDestructuringEmpty */ "../node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js"));
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _List = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/List */ "@elementor/ui/List"));
var _getStartedListItem = _interopRequireDefault(__webpack_require__(/*! ./get-started-list-item */ "../modules/home/assets/js/components/get-started-list-item.js"));
var GetStarted = function GetStarted(_ref) {
var props = (0, _extends2.default)({}, ((0, _objectDestructuringEmpty2.default)(_ref), _ref));
return /*#__PURE__*/_react.default.createElement(_ui.Paper, {
elevation: 0,
sx: {
p: 3,
display: 'flex',
flexDirection: 'column',
gap: 2
}
}, /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_ui.Typography, {
variant: "h6"
}, props.getStartedData.header.title), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
variant: "body2",
color: "text.secondary"
}, props.getStartedData.header.description)), /*#__PURE__*/_react.default.createElement(_List.default, {
sx: {
display: 'grid',
gridTemplateColumns: {
md: 'repeat(4, 1fr)',
xs: 'repeat(2, 1fr)'
},
columnGap: {
md: 9,
xs: 7
},
rowGap: 3
}
}, props.getStartedData.repeater.map(function (item) {
return /*#__PURE__*/_react.default.createElement(_getStartedListItem.default, {
key: item.title,
item: item,
image: item.image,
adminUrl: props.adminUrl
});
})));
};
var _default = exports["default"] = GetStarted;
GetStarted.propTypes = {
getStartedData: PropTypes.object.isRequired,
adminUrl: PropTypes.string.isRequired
};
/***/ }),
/***/ "../modules/home/assets/js/components/home-screen.js":
/*!***********************************************************!*\
!*** ../modules/home/assets/js/components/home-screen.js ***!
\***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _topSection = _interopRequireDefault(__webpack_require__(/*! ./top-section */ "../modules/home/assets/js/components/top-section.js"));
var _sidebarPromotion = _interopRequireDefault(__webpack_require__(/*! ./sidebar-promotion */ "../modules/home/assets/js/components/sidebar-promotion.js"));
var _addonsSection = _interopRequireDefault(__webpack_require__(/*! ./addons-section */ "../modules/home/assets/js/components/addons-section.js"));
var _externalLinksSection = _interopRequireDefault(__webpack_require__(/*! ./external-links-section */ "../modules/home/assets/js/components/external-links-section.js"));
var _getStartedSection = _interopRequireDefault(__webpack_require__(/*! ./get-started-section */ "../modules/home/assets/js/components/get-started-section.js"));
var HomeScreen = function HomeScreen(props) {
var hasSidebarUpgrade = props.homeScreenData.hasOwnProperty('sidebar_upgrade');
return /*#__PURE__*/ /* Box wrapper around the Container is needed to neutralize wp-content area left-padding */_react.default.createElement(_ui.Box, {
sx: {
pr: 1
}
}, /*#__PURE__*/_react.default.createElement(_ui.Container, {
disableGutters: true,
maxWidth: "lg",
sx: {
display: 'flex',
flexDirection: 'column',
gap: {
xs: 1,
md: 3
},
pt: {
xs: 2,
md: 6
},
pb: 2
}
}, /*#__PURE__*/_react.default.createElement(_topSection.default, {
topData: props.homeScreenData.top_with_licences,
createNewPageUrl: props.homeScreenData.create_new_page_url
}), /*#__PURE__*/_react.default.createElement(_ui.Box, {
sx: {
display: 'flex',
flexDirection: {
xs: 'column',
sm: 'row'
},
justifyContent: 'space-between',
gap: 3
}
}, /*#__PURE__*/_react.default.createElement(_ui.Stack, {
sx: {
flex: 1,
gap: 3
}
}, /*#__PURE__*/_react.default.createElement(_getStartedSection.default, {
getStartedData: props.homeScreenData.get_started,
adminUrl: props.adminUrl
}), /*#__PURE__*/_react.default.createElement(_addonsSection.default, {
addonsData: props.homeScreenData.add_ons,
adminUrl: props.adminUrl
})), /*#__PURE__*/_react.default.createElement(_ui.Container, {
maxWidth: "xs",
disableGutters: true,
sx: {
width: {
sm: '305px'
},
display: 'flex',
flexDirection: 'column',
gap: 3
}
}, hasSidebarUpgrade && /*#__PURE__*/_react.default.createElement(_sidebarPromotion.default, {
sideData: props.homeScreenData.sidebar_upgrade
}), /*#__PURE__*/_react.default.createElement(_externalLinksSection.default, {
externalLinksData: props.homeScreenData.external_links
})))));
};
HomeScreen.propTypes = {
homeScreenData: PropTypes.object,
adminUrl: PropTypes.string
};
var _default = exports["default"] = HomeScreen;
/***/ }),
/***/ "../modules/home/assets/js/components/sidebar-promotion.js":
/*!*****************************************************************!*\
!*** ../modules/home/assets/js/components/sidebar-promotion.js ***!
\*****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _objectDestructuringEmpty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectDestructuringEmpty */ "../node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js"));
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _Button = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Button */ "@elementor/ui/Button"));
var _List = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/List */ "@elementor/ui/List"));
var _ListItem = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/ListItem */ "@elementor/ui/ListItem"));
var _ListItemText = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/ListItemText */ "@elementor/ui/ListItemText"));
var _sideBarCheckIcon = _interopRequireDefault(__webpack_require__(/*! ../icons/side-bar-check-icon */ "../modules/home/assets/js/icons/side-bar-check-icon.js"));
var SideBarPromotion = function SideBarPromotion(_ref) {
var props = (0, _extends2.default)({}, ((0, _objectDestructuringEmpty2.default)(_ref), _ref));
return /*#__PURE__*/_react.default.createElement(_ui.Paper, {
elevation: 0,
sx: {
p: 3
}
}, /*#__PURE__*/_react.default.createElement(_ui.Stack, {
gap: 1.5,
sx: {
alignItems: 'center',
textAlign: 'center',
pb: 4
}
}, /*#__PURE__*/_react.default.createElement(_ui.Box, {
component: "img",
src: props.sideData.header.image
}), /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_ui.Typography, {
variant: "h6"
}, props.sideData.header.title), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
variant: "body2",
color: "text.secondary"
}, props.sideData.header.description)), /*#__PURE__*/_react.default.createElement(_Button.default, {
variant: "contained",
size: "medium",
color: "promotion",
href: props.sideData.cta.url,
startIcon: /*#__PURE__*/_react.default.createElement(_ui.Box, {
component: "img",
src: props.sideData.cta.image,
sx: {
width: '16px'
}
}),
target: "_blank",
sx: {
maxWidth: 'fit-content'
}
}, props.sideData.cta.label)), /*#__PURE__*/_react.default.createElement(_List.default, {
sx: {
p: 0
}
}, props.sideData.repeater.map(function (item, index) {
return /*#__PURE__*/_react.default.createElement(_ListItem.default, {
key: index,
sx: {
p: 0,
gap: 1
}
}, /*#__PURE__*/_react.default.createElement(_sideBarCheckIcon.default, null), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
primaryTypographyProps: {
variant: 'body2'
},
primary: item.title
}));
})));
};
var _default = exports["default"] = SideBarPromotion;
SideBarPromotion.propTypes = {
sideData: PropTypes.object.isRequired
};
/***/ }),
/***/ "../modules/home/assets/js/components/top-section.js":
/*!***********************************************************!*\
!*** ../modules/home/assets/js/components/top-section.js ***!
\***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _objectDestructuringEmpty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectDestructuringEmpty */ "../node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js"));
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _Typography = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Typography */ "@elementor/ui/Typography"));
var _Button = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Button */ "@elementor/ui/Button"));
var _youtubeIcon = _interopRequireDefault(__webpack_require__(/*! ../icons/youtube-icon */ "../modules/home/assets/js/icons/youtube-icon.js"));
var TopSection = function TopSection(_ref) {
var props = (0, _extends2.default)({}, ((0, _objectDestructuringEmpty2.default)(_ref), _ref));
return /*#__PURE__*/_react.default.createElement(_ui.Paper, {
elevation: 0,
sx: {
display: 'flex',
flexDirection: {
xs: 'column',
sm: 'row'
},
justifyContent: 'space-between',
py: {
xs: 3,
md: 3
},
px: {
xs: 3,
md: 4
},
gap: {
xs: 2,
sm: 3,
lg: 22
}
}
}, /*#__PURE__*/_react.default.createElement(_ui.Stack, {
gap: 3,
justifyContent: "center"
}, /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
variant: "h6"
}, props.topData.title), /*#__PURE__*/_react.default.createElement(_Typography.default, {
variant: "body2",
color: "secondary"
}, props.topData.description)), /*#__PURE__*/_react.default.createElement(_ui.Box, {
sx: {
display: 'flex',
gap: 1
}
}, /*#__PURE__*/_react.default.createElement(_Button.default, {
variant: "contained",
size: "small",
href: props.createNewPageUrl,
target: "_blank"
}, props.topData.button_create_page_title), /*#__PURE__*/_react.default.createElement(_Button.default, {
variant: "outlined",
color: "secondary",
size: "small",
startIcon: /*#__PURE__*/_react.default.createElement(_youtubeIcon.default, null),
href: props.topData.button_watch_url,
target: "_blank"
}, props.topData.button_watch_title))), /*#__PURE__*/_react.default.createElement(_ui.Box, {
component: "iframe",
src: "https://www.youtube.com/embed/".concat(props.topData.youtube_embed_id),
title: "YouTube video player",
frameBorder: "0",
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
allowFullScreen: true,
sx: {
aspectRatio: '16/9',
borderRadius: 1,
display: 'flex',
width: '100%',
maxWidth: '365px'
}
}));
};
TopSection.propTypes = {
topData: PropTypes.object.isRequired,
createNewPageUrl: PropTypes.string.isRequired
};
var _default = exports["default"] = TopSection;
/***/ }),
/***/ "../modules/home/assets/js/icons/side-bar-check-icon.js":
/*!**************************************************************!*\
!*** ../modules/home/assets/js/icons/side-bar-check-icon.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
var SideBarCheckIcon = function SideBarCheckIcon(props) {
return /*#__PURE__*/React.createElement(_ui.SvgIcon, (0, _extends2.default)({
viewBox: "0 0 24 24"
}, props), /*#__PURE__*/React.createElement("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M9.09013 3.69078C10.273 3.2008 11.5409 2.94861 12.8213 2.94861C14.1017 2.94861 15.3695 3.2008 16.5525 3.69078C17.7354 4.18077 18.8102 4.89895 19.7156 5.80432C20.621 6.70969 21.3391 7.78452 21.8291 8.96744C22.3191 10.1504 22.5713 11.4182 22.5713 12.6986C22.5713 13.979 22.3191 15.2468 21.8291 16.4298C21.3391 17.6127 20.621 18.6875 19.7156 19.5929C18.8102 20.4983 17.7354 21.2165 16.5525 21.7064C15.3695 22.1964 14.1017 22.4486 12.8213 22.4486C11.5409 22.4486 10.2731 22.1964 9.09013 21.7064C7.9072 21.2165 6.83237 20.4983 5.927 19.5929C5.02163 18.6875 4.30345 17.6127 3.81346 16.4298C3.32348 15.2468 3.07129 13.979 3.07129 12.6986C3.07129 11.4182 3.32348 10.1504 3.81346 8.96744C4.30345 7.78452 5.02163 6.70969 5.927 5.80432C6.83237 4.89895 7.9072 4.18077 9.09013 3.69078ZM12.8213 4.44861C11.7379 4.44861 10.6651 4.662 9.66415 5.0766C8.66321 5.4912 7.75374 6.09889 6.98766 6.86498C6.22157 7.63106 5.61388 8.54053 5.19928 9.54147C4.78468 10.5424 4.57129 11.6152 4.57129 12.6986C4.57129 13.782 4.78468 14.8548 5.19928 15.8557C5.61388 16.8567 6.22157 17.7662 6.98766 18.5322C7.75374 19.2983 8.66322 19.906 9.66415 20.3206C10.6651 20.7352 11.7379 20.9486 12.8213 20.9486C13.9047 20.9486 14.9775 20.7352 15.9784 20.3206C16.9794 19.906 17.8888 19.2983 18.6549 18.5322C19.421 17.7662 20.0287 16.8567 20.4433 15.8557C20.8579 14.8548 21.0713 13.782 21.0713 12.6986C21.0713 11.6152 20.8579 10.5424 20.4433 9.54147C20.0287 8.54053 19.421 7.63106 18.6549 6.86498C17.8888 6.09889 16.9794 5.4912 15.9784 5.0766C14.9775 4.662 13.9047 4.44861 12.8213 4.44861Z",
fill: "#93003F"
}), /*#__PURE__*/React.createElement("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M17.3213 9.69424C17.6142 9.98713 17.6142 10.462 17.3213 10.7549L12.3732 15.703C12.0803 15.9959 11.6054 15.9959 11.3125 15.703L8.83851 13.2289C8.54562 12.936 8.54562 12.4612 8.83851 12.1683C9.1314 11.8754 9.60628 11.8754 9.89917 12.1683L11.8429 14.112L16.2606 9.69424C16.5535 9.40135 17.0284 9.40135 17.3213 9.69424Z",
fill: "#93003F"
}));
};
var _default = exports["default"] = SideBarCheckIcon;
/***/ }),
/***/ "../modules/home/assets/js/icons/youtube-icon.js":
/*!*******************************************************!*\
!*** ../modules/home/assets/js/icons/youtube-icon.js ***!
\*******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
var YoutubeIcon = function YoutubeIcon(props) {
return /*#__PURE__*/React.createElement(_ui.SvgIcon, (0, _extends2.default)({
viewBox: "0 0 24 24"
}, props), /*#__PURE__*/React.createElement("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M7 5.75C5.20507 5.75 3.75 7.20507 3.75 9V15C3.75 16.7949 5.20507 18.25 7 18.25H17C18.7949 18.25 20.25 16.7949 20.25 15V9C20.25 7.20507 18.7949 5.75 17 5.75H7ZM2.25 9C2.25 6.37665 4.37665 4.25 7 4.25H17C19.6234 4.25 21.75 6.37665 21.75 9V15C21.75 17.6234 19.6234 19.75 17 19.75H7C4.37665 19.75 2.25 17.6234 2.25 15V9ZM9.63048 8.34735C9.86561 8.21422 10.1542 8.21786 10.3859 8.35688L15.3859 11.3569C15.6118 11.4924 15.75 11.7366 15.75 12C15.75 12.2634 15.6118 12.5076 15.3859 12.6431L10.3859 15.6431C10.1542 15.7821 9.86561 15.7858 9.63048 15.6526C9.39534 15.5195 9.25 15.2702 9.25 15V9C9.25 8.7298 9.39534 8.48048 9.63048 8.34735ZM10.75 10.3246V13.6754L13.5423 12L10.75 10.3246Z"
}));
};
var _default = exports["default"] = YoutubeIcon;
/***/ }),
/***/ "../node_modules/object-assign/index.js":
/*!**********************************************!*\
!*** ../node_modules/object-assign/index.js ***!
\**********************************************/
/***/ ((module) => {
"use strict";
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
/* eslint-disable no-unused-vars */
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
var hasOwnProperty = Object.prototype.hasOwnProperty;
var propIsEnumerable = Object.prototype.propertyIsEnumerable;
function toObject(val) {
if (val === null || val === undefined) {
throw new TypeError('Object.assign cannot be called with null or undefined');
}
return Object(val);
}
function shouldUseNative() {
try {
if (!Object.assign) {
return false;
}
// Detect buggy property enumeration order in older V8 versions.
// https://bugs.chromium.org/p/v8/issues/detail?id=4118
var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
test1[5] = 'de';
if (Object.getOwnPropertyNames(test1)[0] === '5') {
return false;
}
// https://bugs.chromium.org/p/v8/issues/detail?id=3056
var test2 = {};
for (var i = 0; i < 10; i++) {
test2['_' + String.fromCharCode(i)] = i;
}
var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
return test2[n];
});
if (order2.join('') !== '0123456789') {
return false;
}
// https://bugs.chromium.org/p/v8/issues/detail?id=3056
var test3 = {};
'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
test3[letter] = letter;
});
if (Object.keys(Object.assign({}, test3)).join('') !==
'abcdefghijklmnopqrst') {
return false;
}
return true;
} catch (err) {
// We don't expect any of the above to throw, but better to be safe.
return false;
}
}
module.exports = shouldUseNative() ? Object.assign : function (target, source) {
var from;
var to = toObject(target);
var symbols;
for (var s = 1; s < arguments.length; s++) {
from = Object(arguments[s]);
for (var key in from) {
if (hasOwnProperty.call(from, key)) {
to[key] = from[key];
}
}
if (getOwnPropertySymbols) {
symbols = getOwnPropertySymbols(from);
for (var i = 0; i < symbols.length; i++) {
if (propIsEnumerable.call(from, symbols[i])) {
to[symbols[i]] = from[symbols[i]];
}
}
}
}
return to;
};
/***/ }),
/***/ "../node_modules/prop-types/checkPropTypes.js":
/*!****************************************************!*\
!*** ../node_modules/prop-types/checkPropTypes.js ***!
\****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
/**
* Copyright (c) 2013-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var printWarning = function() {};
if (true) {
var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js");
var loggedTypeFailures = {};
var has = __webpack_require__(/*! ./lib/has */ "../node_modules/prop-types/lib/has.js");
printWarning = function(text) {
var message = 'Warning: ' + text;
if (typeof console !== 'undefined') {
console.error(message);
}
try {
// --- Welcome to debugging React ---
// This error was thrown as a convenience so that you can use this stack
// to find the callsite that caused this warning to fire.
throw new Error(message);
} catch (x) { /**/ }
};
}
/**
* Assert that the values match with the type specs.
* Error messages are memorized and will only be shown once.
*
* @param {object} typeSpecs Map of name to a ReactPropType
* @param {object} values Runtime values that need to be type-checked
* @param {string} location e.g. "prop", "context", "child context"
* @param {string} componentName Name of the component for error messages.
* @param {?Function} getStack Returns the component stack.
* @private
*/
function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
if (true) {
for (var typeSpecName in typeSpecs) {
if (has(typeSpecs, typeSpecName)) {
var error;
// Prop type validation may throw. In case they do, we don't want to
// fail the render phase where it didn't fail before. So we log it.
// After these have been cleaned up, we'll let them throw.
try {
// This is intentionally an invariant that gets caught. It's the same
// behavior as without this statement except with a better message.
if (typeof typeSpecs[typeSpecName] !== 'function') {
var err = Error(
(componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +
'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +
'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'
);
err.name = 'Invariant Violation';
throw err;
}
error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
} catch (ex) {
error = ex;
}
if (error && !(error instanceof Error)) {
printWarning(
(componentName || 'React class') + ': type specification of ' +
location + ' `' + typeSpecName + '` is invalid; the type checker ' +
'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +
'You may have forgotten to pass an argument to the type checker ' +
'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +
'shape all require an argument).'
);
}
if (error instanceof Error && !(error.message in loggedTypeFailures)) {
// Only monitor this failure once because there tends to be a lot of the
// same error.
loggedTypeFailures[error.message] = true;
var stack = getStack ? getStack() : '';
printWarning(
'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')
);
}
}
}
}
}
/**
* Resets warning cache when testing.
*
* @private
*/
checkPropTypes.resetWarningCache = function() {
if (true) {
loggedTypeFailures = {};
}
}
module.exports = checkPropTypes;
/***/ }),
/***/ "../node_modules/prop-types/factoryWithTypeCheckers.js":
/*!*************************************************************!*\
!*** ../node_modules/prop-types/factoryWithTypeCheckers.js ***!
\*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
/**
* Copyright (c) 2013-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/prop-types/node_modules/react-is/index.js");
var assign = __webpack_require__(/*! object-assign */ "../node_modules/object-assign/index.js");
var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js");
var has = __webpack_require__(/*! ./lib/has */ "../node_modules/prop-types/lib/has.js");
var checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ "../node_modules/prop-types/checkPropTypes.js");
var printWarning = function() {};
if (true) {
printWarning = function(text) {
var message = 'Warning: ' + text;
if (typeof console !== 'undefined') {
console.error(message);
}
try {
// --- Welcome to debugging React ---
// This error was thrown as a convenience so that you can use this stack
// to find the callsite that caused this warning to fire.
throw new Error(message);
} catch (x) {}
};
}
function emptyFunctionThatReturnsNull() {
return null;
}
module.exports = function(isValidElement, throwOnDirectAccess) {
/* global Symbol */
var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
/**
* Returns the iterator method function contained on the iterable object.
*
* Be sure to invoke the function with the iterable as context:
*
* var iteratorFn = getIteratorFn(myIterable);
* if (iteratorFn) {
* var iterator = iteratorFn.call(myIterable);
* ...
* }
*
* @param {?object} maybeIterable
* @return {?function}
*/
function getIteratorFn(maybeIterable) {
var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
if (typeof iteratorFn === 'function') {
return iteratorFn;
}
}
/**
* Collection of methods that allow declaration and validation of props that are
* supplied to React components. Example usage:
*
* var Props = require('ReactPropTypes');
* var MyArticle = React.createClass({
* propTypes: {
* // An optional string prop named "description".
* description: Props.string,
*
* // A required enum prop named "category".
* category: Props.oneOf(['News','Photos']).isRequired,
*
* // A prop named "dialog" that requires an instance of Dialog.
* dialog: Props.instanceOf(Dialog).isRequired
* },
* render: function() { ... }
* });
*
* A more formal specification of how these methods are used:
*
* type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
* decl := ReactPropTypes.{type}(.isRequired)?
*
* Each and every declaration produces a function with the same signature. This
* allows the creation of custom validation functions. For example:
*
* var MyLink = React.createClass({
* propTypes: {
* // An optional string or URI prop named "href".
* href: function(props, propName, componentName) {
* var propValue = props[propName];
* if (propValue != null && typeof propValue !== 'string' &&
* !(propValue instanceof URI)) {
* return new Error(
* 'Expected a string or an URI for ' + propName + ' in ' +
* componentName
* );
* }
* }
* },
* render: function() {...}
* });
*
* @internal
*/
var ANONYMOUS = '< Günümüzde dijital pazarlama alanında en hızlı büyüyen sektörlerden biri, iGaming sektörüdür. Online oyunlar, kumarhaneler ve bahis siteleri gibi birçok farklı alanı kapsayan bu sektör, etkili bir SEO stratejisi ile büyük kazançlar elde edebilir. Bu yazıda, ilabilisim.com.tr/igaming-seo/ platformunun sunduğu imkanlar ve SEO konusunda dikkat edilmesi gereken noktaları ele alacağız. iGaming, çevrimiçi oyun ve bahis etkinliklerini kapsayan geniş bir terimdir. Online kumar, spor bahisleri, sanal oyunlar ve e-sporlar gibi birçok alt dalı bulunmaktadır. Bu sektör, son yıllarda özellikle teknolojinin gelişmesiyle birlikte büyük bir ivme kazanmış ve milyarlarca dolarlık bir pazar haline gelmiştir. Arama Motoru Optimizasyonu (SEO), bir web sitesinin arama motorlarında daha görünür hale gelmesi için yapılan çalışmalardır. iGaming sektöründe, kullanıcıların oyun ve bahis platformlarını bulabilmesi için SEO; içerik, anahtar kelime analizi, backlink oluşturma ve site içi optimizasyon gibi birçok farklı unsur içerir. İyi bir SEO stratejisi, potansiyel müşterilerin web sitenizi bulmasını sağlar ve sitenizin dönüşüm oranlarını artırır.
iGaming SEO: Oyun Sektöründe Başarılı Dijital Pazarlama Stratejileri
iGaming Nedir?
SEO Nedir ve Neden Önemlidir?
iGaming SEO Stratejileri

Bir iGaming platformu için etkili SEO stratejileri geliştirmek, sektördeki rekabetten sıyrılmak açısından önemlidir. İşte dikkate almanız gereken bazı temel noktalar:
Anahtar kelime araştırması, SEO’nun temel taşlarından biridir. Hedef kitlenizin hangi kelimeleri aradığını belirlemek, içeriklerinizin bu kelimeleri hedeflemesini sağlar. iGaming sektöründe “online casino”, “spor bahisleri” gibi rekabetçi anahtar kelimeleri belirlemek, sitenizin görünürlüğünü artırabilir.
Kaliteli içerik, kullanıcıların ilgisini çeker ve arama motorları tarafından olumlu değerlendirilir. iGaming web siteleri için, oyun incelemeleri, strateji rehberleri ve kullanıcı deneyimlerini paylaşan blog yazıları gibi içerikler oluşturmak, ziyaretçileri sitenize çekmek için etkilidir.
Site içi optimizasyon, web sitenizin yapısını ve içeriğini arama motorlarına uygun hale getirmek için yapılan çalışmalardır. Başlık etiketleri, meta açıklamalar, alt etiketler ve URL yapıları gibi unsurlara dikkat etmek, SEO’nuzu güçlendirebilir.

Diğer güvenilir web sitelerinden backlink almak, arama motorlarındaki otoritenizi artırır. iGaming sektöründe, diğer oyun siteleriyle işbirlikleri kurmak ve misafir yazarlık fırsatlarından yararlanmak backlink oluşturmak için etkili yöntemlerdir.
Günümüzde pek çok kullanıcı, oyun platformlarına mobil cihazları üzerinden ulaşmaktadır. Bu nedenle, web sitenizin mobil uyumlu olması son derece önemlidir. Mobil uyumlu bir tasarım, kullanıcı deneyimini iyileştirir ve arama motorları tarafından da olumlu karşılanır.
SEO çalışmalarınızın başarısını ölçmek için analiz ve raporlama yapmak gereklidir. Google Analytics ve diğer analiz araçları, ziyaretçi istatistiklerinizi takip etmenizi sağlar. Hangi içeriklerin daha fazla ilgi çektiğini öğrenmek, gelecekteki stratejilerinizi şekillendirmek için önemlidir.
iGaming sektörü, dijital pazarlama açısından son derece dinamik bir alandır. Etkili SEO stratejileri uygulamak, rakiplerinizin önüne geçmenizi sağlar. https://worldwideseoservice.com/ gibi uzman hizmetlerden yararlanarak SEO çalışmalarınızı daha da güçlendirebilirsiniz. Unutmayın ki, sürekli değişen bu sektörde güncel kalmak ve stratejilerinizi yenilemek başarınız için kritik öneme sahiptir.
Umarım bu yazı, iGaming SEO hakkında daha fazla bilgi edinmenize yardımcı olur. Başarılar dileriz!
]]>
iGaming sektörü, son yıllarda hızla büyüyen bir alan haline geldi. Online casinolar, bahis siteleri ve diğer oyun platformları, milyonlarca oyuncu tarafından tercih edilmektedir. Ancak, bu yoğun rekabet ortamında dikkat çekmek ve kullanıcıları bir platforma yönlendirmek için etkili SEO stratejileri büyük önem taşımaktadır. Bu makalede, iGaming SEO’sunun nasıl işlediğini ve bu alanda başarılı olabilmek için neler yapmanız gerektiğini ele alacağız.
iGaming, internet üzerinden gerçekleştirilen oyun faaliyetlerini ifade eder. Online kumarhaneler, spor bahisleri, poker odaları ve sanal oyunlar iGaming kategorisine girmektedir. Bu endüstri, dünya genelinde büyük bir pazar payına sahiptir ve sürekli olarak gelişmektedir. Ancak, iGaming sektöründe başarılı olabilmek için sadece kaliteli bir ürün sunmak yeterli değildir; aynı zamanda etkili bir pazarlama stratejisi de gereklidir.
Arama motoru optimizasyonu (SEO), web sitenizin arama motorlarındaki görünürlüğünü artırmaya yönelik yapılan çalışmalar bütünüdür. iGaming sektörü, kullanıcıların arama motorları üzerinden oyun platformlarını bulmalarıyla büyük ölçüde bağlıdır. Bu nedenle, etkili bir SEO stratejisi oluşturmak, müşteri kazanımı ve sadakati için hayati önem taşımaktadır. Ayrıca, yüksek kaliteli içerik ve doğru anahtar kelimeler kullanarak, potansiyel oyuncuların dikkatini çekmek mümkündür.
İşte iGaming sektöründe başarılı olmanızı sağlayacak birkaç SEO stratejisi:
Araştırmanızı doğru anahtar kelimelerle başlatmalısınız. Kullanıcıların arama motorlarında hangi terimleri kullandığını belirlemek için araçlar ve yazılımlar kullanabilirsiniz. iGaming SEO için sıklıkla kullanılan anahtar kelimeleri belirleyerek içeriklerinizi bu kelimelerle optimize etmelisiniz.

İçerikleriniz kullanıcıların ihtiyaçlarına ve sorularına cevap vermelidir. Eğitim verici, eğlenceli ve bilgilendirici içerikler oluşturmak, sitenizin otoritesini artıracaktır. Kullanıcıların sitenizi ziyaret etme sürelerini uzatmak, SEO açısından önemli bir faktördür.
Web sitenizin teknik alt yapısının sağlıklı olması, SEO çalışmalarınızın başarılı olmasında kritik rol oynamaktadır. Hızlı yüklenme süresi, mobil uyumluluk ve kullanıcı dostu tasarım gibi unsurlar, arama motorları tarafından olumlu değerlendirilir.
Diğer kaliteli web sitelerinden bağlantılar almak, sitenizin arama motorlarındaki otoritesini artırır. Ayrıca, sektördeki diğer oyuncularla işbirliği yaparak karşılıklı olarak fayda sağlayacak bağlantılar oluşturabilirsiniz. Dış bağlantı stratejileri ile kullanıcıların sitenizi daha fazla ziyaret etmesini sağlayabilirsiniz.
Sosyal medya, kullanıcılarla etkileşim kurmanın mükemmel bir yoludur. İyi bir sosyal medya stratejisi, iGaming markanızın bilinirliğini artırmanıza yardımcı olabilir. Ayrıca, sosyal medyadan gelen trafiğinizi web sitenize yönlendirmek, SEO’nuzu olumlu yönde etkileyebilir.
Başarılı bir iGaming SEO stratejisi geliştirmek için aşağıdaki ipuçlarına dikkat edebilirsiniz:
iGaming sektörü, ölçeklenebilir ve kârlı bir alan olsa da, rekabetin yoğunluğu etkili bir pazarlama stratejisi gerektirir. SEO çalışmaları, sitenizin görünürlüğünü artıracak ve kullanıcı trafiğini yönlendirecektir. Yukarıda bahsedilen stratejileri uygulayarak, iGaming alanında başarılı olma şansınızı artırabilirsiniz. Unutmayın, SEO sürekli bir süreçtir ve başarının anahtarı, bu süreci sürekli olarak iyileştirmekte yatmaktadır.
]]>
iGaming sektörü, son yıllarda önemli bir büyüme göstermiştir. Online bahis siteleri, casino oyunları ve diğer eğlence platformları, kullanıcıların ilgisini çekmekte ve büyük bir pazara dönüşmektedir. Ancak, bu rekabetçi alanda öne çıkmak için, etkili bir iGaming SEO stratejisi oluşturmak şarttır. Bu makalede, iGaming SEO ile ilgili önemli ipuçları ve stratejileri ele alacağız.
Herhangi bir SEO çalışmasının temel taşlarından biri anahtar kelime araştırmasıdır. iGaming sektörü için doğru anahtar kelimeleri belirlemek, hedef kitlenize ulaşmak için kritik öneme sahiptir. Kullanıcıların hangi terimleri aradığını anlamak için çeşitli araçlar kullanabilirsiniz. Google Anahtar Kelime Planlayıcı, SEMrush ve Ahrefs gibi araçlar, size pazarınızdaki anahtar kelime fırsatlarını gösterebilir.
iGaming sitenizin içerik yapısı, kullanıcı deneyimi ve arama motoru dostu olması büyük önem taşır. Başlık etiketleri, meta açıklamalar, ve URL yapılandırması gibi unsurlar, SEO performansınızı etkileyen faktörlerdir. İçeriklerde anahtar kelimeleri doğal bir şekilde kullanmak ve doğru başlık etiketleri oluşturmak, arama motorları tarafından sitenizin daha iyi anlaşılmasını sağlar.
Günümüzde mobil cihazlardan interneti kullanma oranı oldukça yüksektir. Bu nedenle, iGaming platformunuzun mobil uyumlu olması kritik bir faktördür. Responsive tasarım ile tüm cihazlarda sorunsuz bir kullanıcı deneyimi sunmak, SEO’nuzu da olumlu yönde etkiler.
Kaliteli ve bilgilendirici içerik, SEO’nun en önemli unsurlarından biridir. Kullanıcıların ilgisini çekecek, eğlenceli ve bilgilendirici içerikler oluşturmalısınız. Oyun incelemeleri, rehberler ve sektörel haberler, ziyaretçilerinizin dikkatini çekebilir.

Diğer sitelerden alacağınız backlinkler, SEO performansınızı artırmak için önemlidir. Güvenilir ve ilgili web sitelerinden backlink almak, arama motorlarının sitenizi daha güvenilir görmesini sağlar. Bu süreçte, SEO hizmetleri sunan bir Seo Agency ile işbirliği yapmanız faydalı olabilir.
Sosyal medya, kullanıcıların dikkatini çekmek ve markanızı tanıtmak için harika bir platformdur. İçeriklerinizi sosyal medya üzerinden paylaşarak daha fazla kişiye ulaşabilir ve backlink elde edebilirsiniz. Ayrıca, sosyal medya ile etkileşimi artırarak marka bilinirliğinizi güçlendirebilirsiniz.
Kullanıcı deneyimi, SEO üzerinde doğrudan etkisi olan bir faktördür. Sitenizin hızlı yüklenmesi, kolay navigasyonu ve kullanıcı dostu bir arayüze sahip olması, ziyaretçilerinizin sitenizde daha fazla vakit geçirmesini sağlar. Bu da arama motorları tarafından olumlu bir sinyal olarak değerlendirilir.
SEO çalışmaları sürekli bir süreçtir. Başarı ölçümleri yapmak, stratejilerinizi gözden geçirmek ve gerektiğinde iyileştirmek için analitik araçlar kullanmalısınız. Google Analytics ve Google Search Console gibi araçlar, sitenizin performansını takip etmenize yardımcı olur ve hangi alanlarda iyileştirmeler yapmanız gerektiğini gösterir.
iGaming sektöründe başarılı olmak için etkin bir SEO stratejisi gereklidir. Anahtar kelime araştırması, site içi optimizasyon, mobil uyumlu tasarım, kaliteli içerik ve kullanıcı deneyimi gibi faktörler, başarınızı belirleyecektir. Ayrıca, backlink oluşturma ve sosyal medya entegrasyonu ile sitenizin görünürlüğünü artırabilirsiniz. Unutmayın, sürekli analiz ve iyileştirme yapmak, uzun vadeli başarıyı beraberinde getirecektir.
]]>
dijital dünya giderek daha rekabetçi hale geliyor. Özellikle iGaming sektörü, online oyun ve bahis platformlarının yoğun rekabetine tanık olmaktadır. Bu noktada, iGaming SEO çalışmalarının önemi devreye girmektedir. Bu makalede, iGaming alanında SEO stratejilerinizi nasıl geliştirebileceğinizi öğreneceksiniz.
iGaming, çevrimiçi oyun ve bahis alanını ifade eden bir terimdir. Online kumar, e-spor, sanal oyunlar ve diğer dijital oyun platformlarını içerir. Bu sektör son yıllarda büyük bir hızla büyümekte ve dolayısıyla rakip sayısı da artmaktadır. iGaming işletmeleri için etkili bir SEO stratejisi geliştirmek, görünürlük ve kullanıcı kazanımı açısından kritik öneme sahiptir.
iGaming sektörü, her gün milyonlarca kullanıcının çevrimiçi platformlarda oyun oynamasıyla genişlemektedir. Ancak, bu geniş pazar içerisinde dikkat çekmek oldukça zordur. İşte bu noktada SEO devreye girer. İyi bir SEO stratejisi sayesinde, siteniz arama motorlarında daha üst sıralarda yer alabilir ve hedef kitlenize ulaşabilirsiniz. Ayrıca, organik trafik elde etmek, reklam maliyetlerini düşürmenize yardımcı olabilir.
SEO çalışmalarının temel taşlarından biri, doğru anahtar kelimeleri belirlemektir. iGaming alanında hangi terimlerin öne çıktığını araştırmak, hedef kitlenize daha iyi ulaşmanızı sağlayacaktır. Kullanıcıların hangi kelimeleri aradığını anlamak için, anahtar kelime araştırma araçlarından yararlanabilirsiniz. Bu bağlamda, rekabet seviyesi yüksek anahtar kelimeleri hedeflerken, daha az rekabetçi ancak yüksek arama hacmine sahip kelimelere de yönelmek faydalı olabilir.
SEO uyumlu içerik oluşturmak, sadece anahtar kelimeleri yerleştirmekten ibaret değildir. Kullanıcıların ilgisini çekecek, bilgilendirici ve özgün içerikler yazmalısınız. Eşsiz içerikler, kullanıcıların sitede daha fazla zaman geçirmesini sağlar ve bu da arama motorları tarafından olumlu değerlendirilir. İçeriklerinizin okunabilir olmasına ve kullanıcı dostu bir dil kullanmaya özen gösterin.
İyi bir backlink profili, SEO’nuzun başarısında önemli bir rol oynamaktadır. Kaliteli ve otoriter sitelerden backlink alarak sitenizin güvenilirliğini artırabilirsiniz. Bunun yanı sıra, diğer iGaming siteleri ile işbirliği yaparak ortak içerikler üretebilir ve karşılıklı olarak link paylaşımı gerçekleştirebilirsiniz. Unutmayın ki, backlink almak kadar vermek de önemlidir. Diğer sitelere kaliteli içerikler ve bilgiler sunarak onların dikkatini çekebilirsiniz.
iGaming işletmeleri için yerel SEO da oldukça önemlidir. Özellikle belirli bir coğrafi bölgede hizmet veriyorsanız, yerel anahtar kelimeleri ve konumunuzu içeriklerinize dahil etmelisiniz. Google My Business gibi platformlarda işletmenizi kaydederek yerel aramalarda görünürlüğünüzü artırabilirsiniz. Yerel SEO çalışmalarınızla, özellikle mobil kullanıcıların dikkatini çekerek, daha fazla müşteri kazanma şansınızı artırmış olursunuz.
Günümüzde kullanıcıların büyük bir kısmı mobil cihazlardan internete erişmektedir. Bu nedenle, web sitenizin mobil uyumlu olması son derece önemlidir. Sitenizin tasarımı, mobil cihazlarda da kullanıcı dostu olmalı ve hızlı yüklenmelidir. Google, mobil uyumlu sitelere öncelik vermekte, bu nedenle bu konuda gerekli adımları atmalısınız.
Yapılan SEO çalışmalarının etkisini görmek için düzenli olarak analiz ve ölçümleme yapmak gerekmektedir. Google Analytics gibi araçlar kullanarak sitenizin trafik verilerini analiz edebilir, hangi anahtar kelimelerin daha iyi performans gösterdiğini görebilirsiniz. Ayrıca, kullanıcı davranışlarını inceleyerek ne tür içeriklerin daha fazla ilgi gördüğünü tespit edebilirsiniz.
iGaming sektöründe SEO, başarıya giden yolda önemli bir adımdır. Doğru stratejiler ve uygulamalar ile hedef kitlenize ulaşabilir, görünürlüğünüzü artırabilirsiniz. Unutmayın ki SEO sürekli değişen bir alandır ve gelişmeleri takip etmek önemlidir. Daha fazla bilgi ve destek almak için https://worldwideseoservice.com/ adresini ziyaret edebilir veya uzmanlardan yardım alabilirsiniz. SEO’nun sağladığı avantajlardan yararlanarak, iGaming işinizi bir üst seviyeye taşıyabilirsiniz.
]]>
Online kumar endüstrisi, son birkaç yılda muazzam bir büyüme gösterdi. Özellikle, iGaming affiliate pazarlaması, birçok girişimci için kârlı bir fırsat sunuyor. Ancak bu ortamda başarılı olmak için etkili bir SEO stratejisi geliştirmek şart. iGaming Affiliate SEO konusunu derinlemesine inceleyeceğiz ve bu alandaki en iyi uygulamaları ele alacağız.
iGaming, internet üzerinden kumar oynama faaliyetlerini ifade eder. Bu, çevrimiçi casinolar, poker odaları ve spor bahisleri sitelerini içerir. iGaming, dağıtım modeli sayesinde, dünya çapında pek çok kullanıcı tarafından erişilebilir. Bu da, affiliate pazarlamanın neden bu kadar popüler olduğunu açıklıyor.
Başarılı bir SEO stratejisi için ilk adım, anahtar kelime araştırması yapmaktır. iGaming dünyasında, kullanıcıların hangi terimleri aradığını anlamak, hedef kitlenizi çekmenin anahtarıdır. Araçlar kullanarak, yüksek arama hacmine sahip ve düşük rekabetli kelimeleri bulabilirsiniz. Bu kelimeler üzerinde yoğunlaşarak, içeriklerinizi oluşturabilirsiniz.
Uzun kuyruk anahtar kelimeler, genellikle daha spesifik ve daha az rekabetlidir. Örneğin, “en iyi çevrimiçi poker sitesi” gibi bir ifade, daha geniş bir terim olan “poker”den daha az rekabete sahiptir. Bu tür kelimeleri hedeflemek, daha yüksek dönüşüm oranları elde etmenize yardımcı olabilir.
SEO başarısının bir diğer önemli unsuru, kaliteli içerik oluşturmaktır. Kullanıcılar, bilgi aramakta ve doğru yanıtlar bulmak istemektedir. Yüksek kaliteli, bilgilendirici ve eğlenceli içerikler, okuyucularınızın ilgisini çeker ve sitenize trafik çekmenize yardımcı olur.
Blog yazıları ve rehberler, potansiyel kullanıcılarla etkileşim kurmanın harika yollarıdır. Oyun incelemeleri, kurallar, stratejiler ve ipuçları gibi içerikler sunarak, okuyucularınıza değer katabilir ve onları sitenize çekebilirsiniz. Ayrıca, içeriklerinizi düzenli olarak güncellemek, SEO açısından faydalıdır. Güncel bilgiler, arama motorlarının gözünde sitenizin güvenilirliğini artırır.
Backlinkler, arama motorları tarafından sitenizin otoritesi ve güvenilirliği için kritik bir faktör olarak görülmektedir. Başka sitelerden alacağınız geri bağlantılar, sitenizin arama motorlarındaki sıralamasını artırabilir. Bunun için, bağlantı kurma çalışmaları yapmalı ve ilgili sitelerle iş birliği içinde olmalısınız.
Diğer iGaming siteleriyle ilişkiler kurmak, backlink oluşturmanın yanı sıra, kendi markanızı tanıtmanız için de önemlidir. Ortaklık programları, cross-promotion fırsatları veya misafir blog yazıları, bu ilişkileri artırmanın yollarıdır.
Sosyal medya, SEO stratejinizin önemli bir parçası olabilir. İçeriğinizi sosyal medya platformlarında paylaşarak daha geniş bir kitleye ulaşabilirsiniz. Paylaşımlarınızın etkileşim alması, sitenize olan trafik akışını artırır ve marka bilinirliğinizi güçlendirir.

Günümüzde, kullanıcıların büyük bir kısmı web sitelerine mobil cihazları üzerinden erişmektedir. Bu nedenle, sitenizin mobil uyumlu olması kritik bir hale gelmiştir. Ayrıca, site hızınızın artırılması, kullanıcı deneyimini iyileştirir ve arama motorlarında üst sıralarda yer almanıza yardımcı olur.
Site hızınızı artırmak için görsellerinizi optimize edebilir, gereksiz eklentileri kaldırabilir ve önbellekleme yöntemlerini kullanabilirsiniz. Hızlı yüklenen bir site, kullanıcıların daha uzun süre kalmasını sağlar ve dönüşüm oranlarını artırır.
SEO stratejinizi geliştirmenin en iyi yollarından biri, verileri analiz etmektir. Google Analytics ve diğer analiz araçları kullanarak, hangi stratejilerin işe yaradığını ve hangilerinin düzeltilmesi gerektiğini belirleyebilirsiniz. Bu verilerle sürekli olarak optimizasyon yapmalı ve stratejinizi geliştirmelisiniz.
Ayrıca, sitenizin performansını takip etmek için bir gösterge tablosu oluşturabilirsiniz. Bu, hangi anahtar kelimelerin trafiği artırdığını, hangi sayfaların daha fazla etkileşim aldığını ve kullanıcıların nerelerde geri döndüğünü gösterecektir.
iGaming affiliate SEO, karmaşık görünebilir, ancak doğru stratejilerle başarılı olmanız mümkündür. Anahtar kelime araştırması, kaliteli içerik oluşturma, backlink edinme, sosyal medya yönetimi, mobil uyumluluk ve sürekli analiz ile sitenizi büyütebilirsiniz. Unutmayın, güncel trendlere ve kullanıcı beklentilerine ayak uydurmak, iGaming dünyasında rekabetçi kalmanın anahtarlarından biridir. Daha fazla bilgi için https://friv.gg/igaming adresini ziyaret edebilirsiniz.
]]>