/*! 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 = '<
No siempre aquellos bonus que parecen más atractivos son los mejores bonos de casino, ya que esto depende de muchas variables. Este tipo de casino online bono es muy popular, ya que no tiene condiciones complicadas ni rollover, a no ser que formen parte de un paquete de bienvenida. Pero si los obtienes en la misma máquina puedes usarlos al instante y sin requisitos. No es sencillo detenerse y reflexionar sobre la elección de tu bono de casino sin depósito.
Disfruta de bonos semanales, como recargas del 10% al 20% los lunes, 60 giros gratis los martes y hasta $10.000 MXN los fines de semana. Si juegas con un bono de bienvenida y sobrepasas la ganancia máxima, no podrás cobrar esos fondos extra. Por ejemplo, si la ganancia máxima es de $10,000 y ganas $12,000, entonces $2,000 se anularán. En ocasiones solo puede usarse en ciertas categorías, o en una lista de juegos específica.
Las cuentas en criptodivisas quedan excluidas de la oferta de bienvenida a 1xSlots. 1xBet Casino cuenta con un paquete de bienvenida hasta 40,000 MXN para los cuatro primeros depósitos, además de 150 freespins. Sin embargo, la información relativa a dicha promoción en el sitio web aparece expresada en dólares o euros. Una vez más insistimos en la importancia de consultar los términos y condiciones de cada bono antes de aceptar la bonificación. Cada bono tiene un funcionamiento diferente, y en un mismo operador podemos encontrar bonos de casino diferentes. Recordemos que cada juego tiene una contribución diferente al rollover que se puede consultar en las bases de la promoción.
Mediante la misma, el nuevo jugador de un casino en línea recibe un determinado número de pesos para iniciarse en la plataforma y poder probar sus distintas opciones. Una de las ventajas que ofrece Betsafe es que tiene una gran cantidad de oportunidades para ganar dinero sin inversión. Existen promociones disponibles que se activarán en el casino, por ejemplo para el Stream Póker o cualquier otro juego. Un grupo de promociones que podrás ir teniendo disponibles a partir del registro y de hacer distintos depósitos en la plataforma.
Esta investigación tiene el potencial de aumentar significativamente las posibilidades de ganar y mejorar la experiencia de juego. Este es el tipo de bono sin depósito más extendido y popular conocido como bonos de bienvenida gratis que ve en la mayoría de los casinos en línea. Es común y popular porque se trata de efectivo gratis que puede usar para apostar con dinero real y eventualmente ganar. Los bonos en efectivo otorgados en el registro vienen con algunos requisitos de apuesta en la mayoría de los casinos online. Los bonos de casino actúan como una herramienta para captar más jugadores o crear fidelización de usuarios frecuentes. Para esto, cada casino proporciona con sus bonificaciones dinero para jugar gratis en los juegos de póker, ruleta o tragamonedas dentro de su plataforma.
Sin embargo, amerita que cumplas con ciertas normas para poder activarlo y reclamar sus ganancias. Los bonos por devolución, como su nombre indica, regresan un porcentaje de dinero perdido a tu cuenta de juego como créditos de apuesta o tiradas gratis. Dichas promociones permiten que cada jugador realice un depósito válido si todavía no lo ha hecho para realizar sus primeras apuestas. Las tiradas gratuitas son bonificaciones que te permitirán jugar muchísimas veces sin introducir tu dinero directamente en las máquinas tragamonedas. Tras efectuar algún depósito requerido, estos bonos se transferirán enseguida a tu cuenta de juego. Deberás leer los términos de la promoción para conocer cuántas chances tendrás para jugar gratis y durante cuánto tiempo estará vigente.
Por eso es común ver cientos de ofertas con max bonus en los sitios más competitivos. El casino de Luckia ofrece a sus jugadores mexicanos un doble bono con hasta $4,000 MXN por los dos primeros depósitos. Las dos primeras cargas que hagamos vendrán acompañadas cada una con un bono del 100% hasta $2,000 MXN. La promoción estará disponible 30 días a partir del registro del jugador, y el depósito mínimo es de $50. Una vez completado el depósito, el usuario podrá elegir si quiere el bono de casino o el de sports.
Especifica sobre apuestas Código de promoción leonbet antes sobre obtener eximir ganancias. Estas promociones, muchas veces activadas con códigos promocionales exclusivos, te permiten aumentar tu capital, obtener giros gratis y conocer la oferta de los sitios sin arriesgar tu propio dinero. Con el fin de nosotros, una gran utilidad podri�a ser es posible probar varias plataformas con las bonos sobre admision cual se fabrican con los casinos! La mayoria de las jugadores en Estados unidos aprovechan las ofertas en donde resulte cual lleguen a desplazandolo hacia el pelo con fundamento. Desde bonos de bienvenida hasta giros gratis, reembolsos y programas de fidelidad, hay muchas oportunidades para extender tu tiempo de juego y mejorar tu experiencia.
Para optar por ellos tendrás que decidir cuánto dinero querrás depositar en tu cuenta. Existen límites mínimos y máximos que deberás respetar para poder participar en la promoción. Trata de depositar un monto adecuado, con alguno de los sistemas de pago permitidos.
El rollover se calcula mediante la suma del depósito más el valor del bono, monto que deberás jugar 30 veces. El valor máximo de la apuesta permitido son 200 pesos, contribuyendo al requisito de apuesta el 100% de lo jugado en tragamonedas, 10% en blackjack y 5% a casino Hold’em. No tienen ninguna contribución baccarat, ruleta no slots progresivos (jackpots).
Los fondos del bono y el depósito deben apostarse 35 veces en los 30 días siguientes a su recepción antes de realizar cualquier retiro. En caso de cobrar antes de liberar el bono, se perderán el bono y las ganancias obtenidas. Los nuevos usuarios de Bodog Casino pueden acceder al triple bono del 100% hasta 500$ con los que podemos obtener hasta 1,500 dólares. Este bono está sujeto a un rollover x30 (monto depositado + bono) a cumplir en un plazo de 30 días.
Hablamos desde nuestra experiencia como jugadores online y basándonos en las malas experiencias colectivas que hemos escuchado en la industria. La ponderación de juegos se refiere al porcentaje de apuestas que cuentan para cumplir con los requisitos de apuesta. Por lo general, las tragamonedas suelen tener una contribución más significativa, lo que implica que cada moneda apostada en un determinado juego de contribuirá a cumplir con esos requisitos. Velando por una seguridad financiera, los casinos suelen imponen un límite en las ganancias que puedes retirar. Por ejemplo, es posible que ganes $150 con un bono de efectivo fijo de $30, pero solo podrás retirar $100.
Los 20 giros gratis que acompañan a dicho bono, así como los otros 80 que se pueden obtener, tienen una validez de 24 horas. Las ganancias que se obtengan con ellas son consideradas saldo de bono, de modo que el usuario deberá cumplir el requisito de apuesta antes de realizar cualquier extracción. Se dispone de un plazo de 90 días para jugar 30 veces el monto del bono recibido y cumplir así con el requisito de apuesta. Por otro lado, las 120 tiradas gratis para Elvis Frog in Vegas se añaden como un paquete de 30 por dias durante 4 días, hasta alcanzar las 120. Los primeros 30 giros se añaden de inmediato una vez completada la correcta activación del bono, cada 24 horas se agregarán 30 nuevas tiradas gratis, y así durante 3 días.
Así, una vez esto dentro de los primeros 10 días podrá recibir hasta el 100% del total para hacer más apuestas. Es importante saber que esto adicional solo se debe apostar 8 veces dentro del casino con cuotas mínimas de 1.80. Recuerda que lo necesario es conocer los términos y condiciones de este bono para poder aplicar. Gana dinero jugando a tus tragamonedas favoritas de manera fácil y divertida. Solo podemos probar una tragamonedas con estos 40 giros, pero sí que podemos reinvertir las ganancias para conocer otras máquinas o juegos de Spin247. Luckia Casino nos ofrece un bono similar al de apuestas, con dos ingresos bonificados al 100% aunque con un rollover superior.
Los requisitos de reinversión son una normativa de seguridad estándar de los casinos en línea. Se aplican para evitar posibles lavados de dinero y permitir que cada jugador realice los retiros de fondos provenientes de su bonificación. Tenemos como objetivo brindarte acceso a los mejores bonos de casino en línea, sin importar en qué lugar de México estés. Debéis cumplir con los requisitos de apuesta para poder retirar las ganancias. Las lugares de recomendacion en lugar de nosotros ofrecen entre recompensas mediante una rutina de observancia o bien soporte VIP. Estos bonos de casinos dan recursos conveniente a los jugadores cuando estos han acumulado una cierta na?
Estos premios pueden incluir dinero en efectivo, giros gratis, gadgets, entradas a eventos deportivos o incluso viajes. Los bonos de bienvenida son una de las promociones favoritas de los nuevos jugadores, ya que ofrecen la posibilidad de comenzar a jugar con saldo extra o beneficios exclusivos. La segunda de ellas, claro, es tener en cuenta cómo retirar bonos de casino a través de distintas plataformas. Según el casino en línea elegido, podremos hacerlos a través de métodos como PayPal, Neteller, MasterCard, Visa y un largo etcétera o a través de las tradicionales transferencias bancarias. Casino.org es la autoridad de juegos online independiente más importante del mundo. Ofrece noticias, guías, reseñas e información fiable sobre casinos en línea desde 1995.
Bonos de recarga para casino online: el premio esperadoAprovecha estos y elige un casino con bono de bienvenida gratis del listado que tenemos para ti. En Topcasinos.mx, nuestra misión es encontrar los mejores bonos de casino online que incluyas estas ofertas y promociones. Estamos constantemente en la búsqueda de los mejores bonos, incluyendo los bonos sin depósito.
Paralelamente, existe una bonificación VIP de $20,000 MXN + 14 días de pase al Club VIP Caliente para ingresos de 20,000 pesos o mayores. El monto mínimo a ingresar es de 200 pesos, y todos los bonos deben jugarse 20 veces en 7 días. Para el requisito de apuesta, maquinitas y tarjetas rasca y gana aportan un 100%, euleta, Pai Gow o Casino Hold’Em un 25%, Baccarat, Blackjack, dados o Video Cards, un 20%.
Este bono está disponible para los usuarios que ingresen el código “nordis250” en el momento de su primer depósito utilizando cualquiera de las opciones de pago habilitadas -incluidas criptodivisas-. El depósito mínimo es de 10€, y el bono únicamente podrá jugarse en la sección de casino. Cashalot ofrece 14 días para cumplir el rollover, para el que los juegos de tragamonedas y rasca y gana tienen una contribución del 100% y las ruletas y juegos de mesa un 10%. En cualquier caso, es aconsejable revisar las excepciones, pues numerosos juegos no computan. Por ejemplo, blackjack, baccarat y casino en vivo quedan excluidos del rollover, así como algunas slots.
Las bonos sin deposito sobre casino son la garbo conocido entre los jugadores cual quieren experimentar algun casino sin aventurar la zapatilla y el pie personal dinero. Pero normalmente existir un coste inferior y no ha transpirado condiciones sobra estrictas, tratan una magnifico manera de conocer la tarima y las juegos suin efectuar algun deposito conveniente. Las bonificaciones VIP son bonificaciones especificas cual las casinos en linea poseen a las jugadores joviales desmesurados ingresos. Nuestro bono sobre tiradas gratuitas brinda a los recientes jugadores un determinado na?
Pueden usar este bono en efectivo sin tener que depositar primero su propio dinero. Obtener una oferta de este tipo es ventajoso, ya que le permite realizar apuestas y aprender más sobre el juego sin usar su propio dinero real. Independientemente del resultado de la apuesta, no habrá sufrido ninguna pérdida. Para aprovechar al máximo este bono sin depósito, emplee algunas estrategias que funcionarán a su favor. Dado que la mayoría de estas promociones vienen con requisitos de apuesta, debe saber cómo usarlas correctamente.
Los giros gratis son una de las promociones más populares en los casinos online y pueden conseguirse de varias maneras, como bonos de bienvenida, recargas, dinámicas, torneos de casino, entre otras. Para saber cómo retirar tus ganancias es necesario que consultes los términos y condiciones del bono de casino. Hay que cumplir con los requisitos del bono, principalmente el rollover y verificar tu cuenta. El objetivo de un bono de bienvenida es que lo uses para ganar dinero real.
En ellos se indican las condiciones a que está sujeto, desde el depósito mínimo al plazo para liberarlo, aportación de los juegos, monto, etc. Antes de aceptar cualquier bono de casino hay que comprobar y comprender los T&C del bono. Los bonos de casino son incentivos diseñados principalmente para atraer nuevos jugadores y fidelizarlos. Para acceder a una promoción de casino online, es necesario realizar acciones específicas como registrarse y depositar dinero real.
Para conseguir dinero real de esta bonificación deberás apostar este importe un número de veces propuesto por el casino. Solo así podrás redimir tus ganancias de las partidas y poder participar en un próximo bono bono cumpleaños casino por depósito. Podrás reconocer el término “rollover” entre las condiciones del bono, como requisito de reinversión, también conocido como “wagering”.
Nos gusta poder elegir entre bono de casino en vivo, giros gratis o bonos en vivo y casino, si bien el más atractivo es el bono 100% para casino en vivo. Para ello, los juegos de 22Games aportan el doble de lo apostado -excepto los juegos de “Escalar hasta la Victoria”-. Como es habitual, no se podrá tramitar ningún retiro hasta completar la rotación del bono. Además, hay que validad la identidad del usuario completando el proceso KYC para poder retirar las ganancias obtenidas. Novibet nos propone un bono de casino similar al de otros operadores con apuestas deportivas, con el añadido de los 50 giros gratis.
En esta sección de la página web aparecen los requisitos de apuestas y otras informaciones importantes que debes leer antes del registro. El primer paso es encontrar el mejor casino online bono, aquel que se ajuste a tus gustos y necesidades. Te ofrecemos una amplia gama de opciones, todas ellas con excelentes valoraciones, pero cada uno con características y ventajas particulares que te permitirán divertirte en los mejores games.
Los clubes VIP o programas de fidelidad están diseñados para premiar a los jugadores más leales de un casino, brindándoles niveles exclusivos con mayores beneficios. A nadie le cae mal un reembolso, sobre todo si está teniendo una mala racha jugando en su casino favorito. Para esos usuarios con mala suerte existen los famosos “cashback”, con los cuales recibirán de vuelta un porcentaje del dinero que hayan perdido jugando. También puedes aprovechar su triple bono de fidelidad del 10%, 20% y 30%, más recargas del 15% y 20% los lunes y martes. WinPot Casino, lanzado en línea en 2006, tiene casi 20 años de trayectoria y más de 3.300 juegos de proveedores como Evolution y Quickspin. BetWinner es un casino fundado en 1996 con una enorme biblioteca de más de 5.500 juegos de proveedores como Pragmatic Play, NetEnt y Play’n Go.
La legalidad y la seguridad de los casinos en línea no es un asunto menor cuando se trata de jugar en México. Ha de ser algo siempre tenido en cuenta para no depositar nuestros pesos en lugares no deseables. Los casinos en línea en México pueden ofrecer diferentes tipos de promociones para los nuevos usuarios en el momento en el que se dan de alta. En BonosDeBienvenida analizamos de forma constante una gran cantidad de bonos de casino para que puedas escoger con criterio entre los disponibles. Nuestros criterios detallados te ayudarán a comprender cómo puntuamos las promociones, asegurando que elijas la opción perfecta para tus necesidades de juego.
Estableciendo condiciones legales muy claras sobre qué está permitido y qué no, en las promociones de los casinos en línea. Ofertas hechas pensando en los principiantes con sed de jugar y muchas ganas de ganar. Algunos pueden tener un porcentaje menor en el cumplimiento de los requisitos de apuesta. Por ejemplo, las tragaperras suelen contribuir al 100%, mientras que los juegos de mesa pueden tener un porcentaje menor. Sí, Amunra ofrece promociones periódicas y bonos personalizados para sus clientes, incluso después del bono de bienvenida. En caso de que deseas beneficiarte para bonos casino carente deposito, si tendras que seguir ciertas condiciones.
Determinados casinos establecen limites maximos durante cantidad que se podri? One Casino llega pisando fuerte con una de las ofertas más competitivas del mercado. Si buscas empezar con ventaja, su pack de bienvenida combina dinero real gratis solo por registrarte y un empujón extra en tu primer ingreso. Le sugerimos que preste demasiada amabilidad en estas dos caracteristicas de saber precisamente de que forma transformar el bono sobre recibimiento en un casino online referente a dinero favorable. Algunas plataformas aplican instalaciones de envite a veces muy altos (inclusive x60), cosa que practicamente nunca le da alguna posibilidad sobre sacar recursos favorable.
Tenemos un buen monto para el bono, y la opción de free spins tampoco está mal. Solo 10 días para cumplir el requisito de apuesta pueden ser problemáticos. El criptocasino nos ofrece un bono para apuestas y casino, algo realmente poco frecuente. Una bonificación del 300% por el primer depósito siempre es remarcable, aunque el plazo para cumplir el requisito de apuesta es de a penas una semana.
Explora la lista de los casinos y sus bonos sin depósito en VegasSlotsOnline y elige el que más te interese. Nosotros también somos jugadores de casino y entendemos la decepción de recibir un bono que no cumple con lo prometido. Esta experiencia nos impulsó a convertirnos en el principal proveedor de bonos sin depósito en casinos online. Ya sea que busques un bono sin depósito en México o en cualquier otro lugar, nosotros tenemos lo que necesitas. WinPot ofrece un bono gratis de $500 a sus usuarios únicamente por verificar la cuenta mediante su teléfono.
En el competitivo mundo de los casinos online, Amunra Casino se destaca por ofrecer atractivas promociones destinadas a captar la atención de jugadores nuevos. Si estás buscando una plataforma confiable con bonos exclusivos, no puedes dejar de conocer las ventajas que brinda este sitio. En este artículo analizaremos las ofertas para clientes nuevos, destacando los beneficios que pueden marcar la diferencia en tu experiencia de juego.
Por tanto, la capacidad de reclamar fácilmente todo tipo de bono y obsequios es una de las mejores cosas de los casinos online. Dondequiera que mires, hay algún tipo de bonificación esperando a ser reclamada. Para tener una experiencia segura y agradable con un bono sin depósito, evita estos tres errores que se suelen cometerse con frecuencia.
Cada bono está sujeto a un rollover x40 a cumplir en siete días, y no se asignará un bono en caso de haber solicitado un retiro en las 24 horas anteriores. Tampoco se tiene en cuenta el monto ingresado para calcular el requisito de apuesta. El importe máximo de apuesta para liberar el bono es de 5€, y los juegos de Fast Games tendrán una contribución x2 al requisito de apuesta. Los giros gratis se otorgarán únicamente si el usuario ha verificado la cuenta en el momento de completar el ingreso correspondiete.
Slots y scratchcards contribuyen en un 100%, juegos de mesa y juegos en vivo lo hacen un 10% si bien es aconsejable revisar los T&C para consultar las excepciones. Una cuestión prioritaria antes de darse de alta en un casino online es el bono de bienvenida para los nuevos jugadores que ingresan en el mismo. Los casinos en línea lo saben, y nos ofrecen bonificaciones o freespins para empezar a jugar. Hablamos de los bonos de casino, un atractivo que cada operador ofrece en las condiciones que considera. A continuación presentamos los bonos de bienvenida para online casino de México.
Bet365 tiene una oferta para los nuevos jugadores de casino consistente en 50 giros gratis por un primer ingreso de $200MXN. En el momento de completar el depósito, no olvide marcar la casilla “solicitar” para reclamar los 50 freespins. A continuación, debe apostar esos 200 pesos en los juegos elegibles de Bet365 Casino para activar los giros gratis. Hay un plazo de siete días para solicitar los giros gratis, que deben utilizarse también en siete días en los juegos indicados en los T&C. En lugar de ofrecer una bonificación como hacen otros operadores, PlayUZU únicamente nos regala 50 freespins para Mega Fire Blaze Big Circus con nuestro primer ingreso. Basta con que sea de 100 pesos -el mínimo aceptado por el casino- para acceder a estos giros gratuitos.
Aunque nos enfocamos en proporcionar información precisa y veraz sobre formas sanas de apostar en línea, podrás comprobar que muchos de los enlaces en suertecasinos.com son enlaces de afiliados. Esto significa que puede que podamos recibir una comisión si usted clica en alguno de los enlaces y realiza un depósito. Por favor, juege con responsabilidad o contacte a la línea de ayuda al juego si piensa que apostar está afectándole negativamente a su vida. En caso de que decida jugar por dinero real, asegúrese de no apostar más de lo que puede asumir perder, y que sólo use métodos de pago seguros en los casinos.
El casino de PokerStars ofrece a sus jugadores mexicanos un bonus del 100% hasta 100 USD de bienvenida. Automáticamente, se asignará un bono que tendrá una validez de 28 días donde hay que ganar 5 puntos de canje por cada 1 USD de bono recibido. Betcris Casino cuenta con un bono por primer depósito del 100% hasta 250 pesos con el primer ingreso para jugar a tragamonedas y keno. El bono es aplicable solamente en el primer depósito realizado en la cuenta, siempre que alcance el monto mínimo de 100 pesos.
]]>Estas plataformas deben cumplir con requisitos de seguridad y protección de datos para operar de manera confiable. Winner Casino ofrece a los nuevos usuarios un bono sin depósito de $700 MXN al registrarse y verificar su cuenta. Para retirar las ganancias, es necesario realizar un depósito mínimo de $200 MXN, con un retiro máximo permitido de $1,500 MXN. Existen distintos tipos de bonos sin depósito, como giros gratis sin depósito, bonos en efectivo y tiempo de juego gratuito.
Revisar los términos y condiciones es la clave para evitar sorpresas y aprovechar al máximo los bonos sin depósito en México. Si cumples con todos los requisitos, podrás retirar tus ganancias sin problemas. Sin embargo, es recomendable leer detenidamente las condiciones del bono antes de aceptarlo para evitar sorpresas al momento del retiro. Sportium Casino brinda a los nuevos jugadores un bono sin depósito de $500 MXN al registrarse y verificar su correo electrónico y número de teléfono.
Validez del bono en cualquiera de los depósitos es de siete días después de reclamarlo. Promovemos el juego responsable y trabajamos sólo con operadores de casinos confiables y responsables. Ahí puedes retomar el juego para no perderte las partes emocionantes y luego dejar que tu celular siga con los autogiros mientras haces algo más. Ojo, esta es una estrategia de juego riesgosa que solo te recomendamos mientras apuestas con un bono grande como el de bienvenida y con apuestas muy pequeñas. Pero si apuestas montos muy grandes, 9 tiradas fallidas consecutivas son suficientes para dejarte fuera y acabarse tu bono.
Un buen ejemplo es el programa VIP de Caliente, donde los puntos se pueden canjear por recompensas adicionales o beneficios exclusivos según el nivel alcanzado. En esta guía te explicaremos cómo funcionan estos bonos y qué condiciones considerar al elegir tu bono ideal. Entre métodos tradicionales, Winpot ofrece retiros SPEI en 2-12 horas, mientras que Coolbet procesa pagos en menos de 24 horas para la mayoría de métodos. Monederos como Neteller y Skrill permiten depositar y retirar dinero sin compartir datos bancarios, y suelen tener tiempos rápidos de procesamiento. Los casinos cripto como Stake y BC Game ofrecen pagos ultra rápidos y anónimos usando BTC, ETH, LTC, USDT, entre otras. El sistema SPEI permite enviar fondos directamente desde tu banca en línea a la cuenta del casino.
Yo se, es lo más tedioso, pero aquí en Gambling.com México te vamos a dar no solo una lista exclusiva de los casinos en línea que pagan más rápido, si no unas claves para entender fácil y rápido el rollover. Las tragamonedas suelen contribuir al 100 %, igual que los raspaditos online. Estos bonos están disponibles incluso si accedes desde tu navegador móvil o si instalas la app del casino.
Bonos casino con depósito: ¿merecen la pena?Para obtener ayuda con problemas de juego, visita nuestra Página de Juego Responsable. También te pueden desconcertar con términos y condiciones confusos y complejos. Recuerda verificar tu cuenta antes de hacer tu retiro para que el proceso sea más rápido. Solo tienes que entregar los documentos que te solicita el casino y esperar a que el casino te verifique. Rellena el formulario de inscripción, de ser necesario deberás buscar el campo “Código de bonificación” en el formulario de registro. Además de esto, lo recomiendo más que todo a jugadores principiantes porque podrás recuperar las pérdidas en la primera apuesta que hagas.
El casino Winner te da $700 MXN gratis solo por registrarte siguiendo nuestro link seguro y verificando tu cuenta. El bono viene con un rollover de x50, lo que significa que deberás apostar $35.000 MXN antes de poder retirar tus ganancias. Si te estás preguntando cómo reclamar los bonos sin deposito gratis en México lo primero que tenemos que hacer es leer los términos y condiciones de las promociones. También puedes aprovechar las diferentes ofertas con depósito, que puede ofrecer mejores beneficios a largo plazo dependiendo de tu presupuesto y estilo de juego, conócelas todas en la reseña del casino Betcris. Descubre en la reseña del casino Winpot México todos los detalles de sus promociones, jackpots y métodos de pago disponibles para jugadores mexicanos.
Licencia y regulación – Tu primera línea de protecciónAdemás, aprovecha bonificaciones en tus próximos 3 depósitos con hasta $4,000 USD en bonos totales + 400 giros gratis. Sí, el casino Caliente tiene bono sin depósito, pero en Gambling.com México solo recomendamos casinos que cumplan con nuestros criterios de análisis editorial, por eso no forma parte de esta guía. Revisa nuestra entrada para que encuentres mejores opciones de casinos con bono sin depósito que no son Caliente MX. Al registrarte y validar tu cuenta con el equipo de atención al cliente, recibes automáticamente $200 MXN en Free Play sin necesidad de hacer un depósito previo.
Si no ves ningún indicador sobre tu bono, puedes contactar al soporte al cliente y preguntar por tu progreso en tu bono. En algunos casinos el bono de bienvenida se activa en automático, no tienes que tomar ninguna acción más que hacer el depósito mínimo. Pero en otros casinos tienes que incluir un código de bono que el mismo casino te proporciona o escribir al soporte y especificar que quieres tu bono de bienvenida.
Bonos con condiciones justas – No todo es el montoEs importante recalcar que estos bonos solo se ofrecen a los clientes solo una vez y tienen que ser una cuenta nueva recién registrada en un casino en línea. Debido a esto es importante crear varios usuarios en distintas páginas para poder aprovechar de este extraordinario bono de bienvenida varias veces lo que aumenta las posibilidades de ganar. Las promociones de casino pueden variar según su forma y el método de obtención.
El bono solo aplica para casino y casino en vivo, y algunos juegos están excluidos del rollover. Cualquier retiro antes de cumplir los requisitos cancela el bono y ganancias. En el 2026 el mejor casino bono sin depósito sin lugar a dudas es Winpot con su bono de $500 casino sin depósito, esta oferta audaz coronó esta plataforma como la más destacada de México.
Los bonos sin depósito son una excelente oportunidad para probar un casino en línea sin necesidad de realizar un pago inicial. Sin embargo, no todos los casinos los ofrecen y cada plataforma tiene requisitos específicos. Se podría decir que este es una de los bonos más fáciles de encontrar, y a su vez una maravilla para los amantes de las tragamonedas.
Los giros gratis también son una excelente manera de probar y comprender las mecánicas, las tasas de retorno y las características especiales de las tragaperras nuevas. Los jugadores, con estos bonos, pueden jugar una amplia gama de juegos, desde tragaperras tradicionales hasta modernas con temas complejos y múltiples opciones de pago. El rollover o cuota mínima de retirada hace referencia a la cantidad de veces que se han de jugar los pesos depositados de manera inicial para poder retirarlos como dinero real de nuestra cuenta. Habrá que cumplir con este requisito de manera inapelable para poder conseguir nuestro objetivo, que es el de obtener el dinero total. Sí, siempre que los reclames en casinos con licencia vigente emitida por la SEGOB o autoridades internacionales reconocidas. Todos los bonos listados en esta página son de casinos en línea legales y verificados por nuestros expertos, con métodos de pago seguros.
Bonos de casino y jugar online: algunas clavesAprende más sobre este tema para tomar decisiones informadas y disfrutar de tu entretenimiento de manera segura. Durante estas temporadas, los jugadores pueden recibir giros gratis, premios sorpresa y beneficios adicionales que solo aparecen por tiempo limitado. Un ejemplo claro son los bonos navideños para casinos en México, que cada diciembre ofrecen oportunidades únicas para disfrutar del juego con un valor extra.
En BonosDeBienvenida.com trabajamos para comparar y ofrecerte los mejores bonos de apuestas y bonos casino online de México a través de los operadores legales en el país. Analizamos en detalle y de forma objetiva cada casa de apuestas y casino en línea para descubrir sus ofertas, mercados, freebets, tiradas gratis y más. Sí, pero antes de hacerlo, debes cumplir con los requisitos de apuesta establecidos por el casino. Esto significa que tendrás que jugar una cantidad específica de veces el valor del bono antes de poder retirar el dinero. Además, algunos casinos imponen límites a las ganancias máximas que puedes retirar, por lo que siempre es recomendable revisar las condiciones antes de aceptar la promoción.
Ideal para jugadores frecuentes que buscan beneficios adicionales a largo plazo. La industria del juego en línea en México está regulada por la Ley Federal de Juegos y Sorteos, y supervisada por la Dirección General de Juegos y Sorteos (DGJS), que depende de la Secretaría de Gobernación (SEGOB). Coolbet trae la innovación nórdica al mercado mexicano con una plataforma moderna, segura y fácil de usar.
Opciones como casinos con pago rápido aseguran transacciones ágiles y sin complicaciones, mientras que métodos como casinos online que aceptan OXXO facilitan depósitos accesibles para jugadores mexicanos. La firma europea apuestas-deportivas.es informa que, por el momento, no encontraron casinos online que ofrezcan un bono sin depósito en la Argentina. Según la firma española, uno de los mejores bonos de casino sin depósito disponibles es el que ofrece este operador. Al completar el registro, el usuario recibe un bono de bienvenida de $500 MXN gratis para utilizar en el casino. De acuerdo al grupo, este beneficio se puede aprovechar en los juegos Spaceman y Gates of Sportium, una vez validados el correo electrónico y el número de teléfono. Según el análisis de apuestas-deportivas.es, los bonos de casino sin depósito figuran entre los más codiciados por los apostadores, aunque encontrarlos suele resultar una tarea compleja.
A continuación, te mostramos una selección de los mejores casinos online en Latinoamérica en enero 2026, todos compatibles con dispositivos móviles, con atención en español y opciones de pago locales o internacionales. Los casinos con licencia SEGOB, como Caliente.mx o Betcris, están completamente autorizados para operar legalmente en el país. En casino bono de bienvenida esta guía actualizada te mostramos el ranking completo, ventajas de cada sitio, tipos de bonos, juegos disponibles y todo lo que necesitas saber para apostar de forma segura desde México. Destacan por ofrecer pagos rápidos, bonos de casinos atractivos en pesos mexicanos, seguridad con licencia oficial y métodos de pago como SPEI, OXXO y Astropay.
Antes de aceptar cualquier bono de casino en México, es crucial entender los términos y condiciones asociados. Estos detalles determinan cómo y cuándo puedes retirar las ganancias obtenidas con tu bono. A continuación, te explicamos los aspectos más importantes que debes considerar. Los bonos VIP y los programas de fidelidad están diseñados para recompensar a los jugadores más leales y frecuentes.
Una recomendación estándar es apostar solo el 3% de tu monto total en cada tirada. Mientras tienes el bono activo, en tu perfil vas a poder encontrar un indicador del estado de tu bono. Este te dice cuándo comenzó, cuando expira y qué porcentaje llevas de tu requisito de apuesta.
]]>