diy-template-components 2.0.67 → 2.0.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/index.js CHANGED
@@ -242,6 +242,76 @@ const useSectionStyles$a = createUseStyles(theme => ({
242
242
  justifyContent: 'center',
243
243
  width: '10%'
244
244
  },
245
+ offerPrice: {
246
+ fontSize: theme.typography.fontSize.h4,
247
+ fontWeight: '700'
248
+ },
249
+ originalPrice: {
250
+ textDecoration: 'line-through',
251
+ color: 'rgba(51, 51, 51, 0.6)'
252
+ },
253
+ offerDiscount: {
254
+ color: '#08BD80',
255
+ fontWeight: '600'
256
+ },
257
+ rightNav: {
258
+ marginRight: '120px',
259
+ display: 'flex'
260
+ },
261
+ priceBox: {
262
+ marginRight: '16px'
263
+ },
264
+ offerBox: {
265
+ marginRight: '24px',
266
+ display: 'flex',
267
+ flexDirection: 'column',
268
+ backgroundColor: 'rgba(244, 249, 253, 1)',
269
+ justifyContent: 'space-between',
270
+ borderRadius: '8px'
271
+ },
272
+ offerBoxText: {
273
+ color: 'rgba(51, 51, 51, 0.6)',
274
+ fontWeight: '600',
275
+ fontSize: '10px',
276
+ padding: '3px 12px 3px, 12px',
277
+ padding: '4px',
278
+ textAlign: 'center',
279
+ marginTop: '4px'
280
+ },
281
+ offerBoxCountDown: {
282
+ backgroundColor: 'rgba(235, 87, 87, 0.1)',
283
+ border: '0px 1px 1px 1px',
284
+ borderRadius: '8px',
285
+ color: '#EB5757',
286
+ fontSize: '16px',
287
+ fontWeight: '700',
288
+ padding: '6px 16px'
289
+ },
290
+ BottomSheetContainer: {
291
+ display: 'flex',
292
+ flexDirection: 'column',
293
+ borderTop: '1px solid #e5e5e5',
294
+ background: '#021927',
295
+ color: '#FFFFFF'
296
+ },
297
+ BottomSheetPriceContainer: {
298
+ display: 'flex',
299
+ justifyContent: 'space-between',
300
+ padding: '16px 16px 24px'
301
+ },
302
+ BottomSheetOfferContainer: {
303
+ padding: '12px 0 ',
304
+ padding: '16px 16px 24px',
305
+ border: '1px solid rgba(0, 0, 0, 1)'
306
+ },
307
+ offerBottom: {
308
+ display: 'flex',
309
+ justifyContent: 'space-between'
310
+ },
311
+ smallText: {
312
+ fontWeight: '400',
313
+ fontSize: '8px'
314
+ },
245
315
  '@media screen and (max-width: 767px)': {
246
316
  optionsContainer: {
247
317
  flexDirection: 'column',
@@ -277,6 +347,17 @@ const useSectionStyles$a = createUseStyles(theme => ({
277
347
  borderBottom: '1px solid #F3F3F3',
278
348
  width: '100%'
279
349
  }
350
+ },
351
+ offerPrice: {
352
+ color: '#FFFFFF',
353
+ fontSize: '18px'
354
+ },
355
+ offerDiscount: {
356
+ color: 'rgba(8, 189, 128, 1)'
357
+ },
358
+ originalPrice: {
359
+ color: '#FFFFFF',
360
+ textDecoration: 'line-through'
280
361
  }
281
362
  },
282
363
  mobileAppNameClass: {
@@ -1321,8 +1402,17 @@ function DesktopHeader({
1321
1402
  navData,
1322
1403
  isTutorWebsite,
1323
1404
  isLandingPage = false,
1324
- onDownloadAppTriggered
1405
+ onDownloadAppTriggered,
1406
+ extraProps
1325
1407
  }) {
1408
+ let mockHeader = {
1409
+ isOfferActive: true,
1410
+ effectivePrice: 0.51,
1411
+ price: 1,
1412
+ discount: 0.5,
1413
+ endDate: Date.now() + 24 * 60 * 60 * 1000,
1414
+ offerPriceValidFor: 20
1415
+ };
1326
1416
  const {
1327
1417
  isFixed = true
1328
1418
  } = header;
@@ -1358,13 +1448,113 @@ function DesktopHeader({
1358
1448
 
1359
1449
  // console.log(header, 'sakshat header desktop');
1360
1450
 
1451
+ const renderer = ({
1452
+ days,
1453
+ hours,
1454
+ minutes,
1455
+ seconds
1456
+ }) => {
1457
+ if (days === 0 && hours < 24) {
1458
+ return /*#__PURE__*/React__default["default"].createElement("span", null, hours, "h : ", minutes, "m : ", seconds, "s");
1459
+ } else {
1460
+ let given = moment__default["default"](mockHeader.endDate);
1461
+ let current = moment__default["default"]().startOf('day');
1462
+ return /*#__PURE__*/React__default["default"].createElement("span", null, Math.floor(moment__default["default"].duration(given.diff(current)).asDays()), " ", 'Days');
1463
+ }
1464
+ };
1465
+ const checkIfOfferIsValid = (endDate = null) => moment__default["default"]().diff(moment__default["default"](endDate || 0)) < 0;
1466
+ const checkForShowDiscount = (endDate = null, offerPriceValidFor = null, discount = 0) => {
1467
+ let conversions = extraProps?.conversions || 0;
1468
+ if (endDate === null || checkIfOfferIsValid()) {
1469
+ if (discount > 0 && offerPriceValidFor === null) {
1470
+ return true;
1471
+ } else if (discount > 0 && offerPriceValidFor !== null && offerPriceValidFor - conversions <= 0) {
1472
+ return false;
1473
+ }
1474
+ } else if (offerPriceValidFor >= null && discount) {
1475
+ if (offerPriceValidFor <= conversions) {
1476
+ return false;
1477
+ }
1478
+ if (offerPriceValidFor - conversions < 0) {
1479
+ return false;
1480
+ } else {
1481
+ return true;
1482
+ }
1483
+ }
1484
+ if (discount > 0) {
1485
+ return true;
1486
+ }
1487
+ };
1488
+ const getDiscount = (price, discount) => {
1489
+ return (discount / price * 100).toFixed(2);
1490
+ };
1491
+ const OfferDetailsJSX = () => {
1492
+ let conversions = extraProps?.conversions || 0;
1493
+ if (checkForShowDiscount(mockHeader?.endDate, mockHeader?.offerPriceValidFor, mockHeader?.discount) && mockHeader?.endDate ? checkIfOfferIsValid(mockHeader?.endDate) : true) {
1494
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1495
+ className: classes.rightNav
1496
+ }, mockHeader?.isOfferActive && (mockHeader?.offerPriceValidFor ? mockHeader.offerPriceValidFor - conversions > 0 : true) ? /*#__PURE__*/React__default["default"].createElement("div", {
1497
+ className: classes.offerBox
1498
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
1499
+ className: classes.offerBoxText
1500
+ }, "Offer Ends In"), /*#__PURE__*/React__default["default"].createElement("div", {
1501
+ className: classes.offerBoxCountDown
1502
+ }, /*#__PURE__*/React__default["default"].createElement(Countdown__default["default"], {
1503
+ renderer: renderer,
1504
+ date: mockHeader?.endDate
1505
+ }))) : null, /*#__PURE__*/React__default["default"].createElement("div", {
1506
+ className: classes.priceBox
1507
+ }, /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement("span", {
1508
+ className: classes.offerDiscount
1509
+ }, `${getDiscount(mockHeader?.price, mockHeader?.discount)}%`, "\xA0OFF"), "\xA0\xA0", /*#__PURE__*/React__default["default"].createElement("span", {
1510
+ className: classes.originalPrice
1511
+ }, mockHeader?.price), ' '), /*#__PURE__*/React__default["default"].createElement("div", {
1512
+ style: {
1513
+ textAlign: 'end'
1514
+ }
1515
+ }, /*#__PURE__*/React__default["default"].createElement("span", {
1516
+ className: classes.offerPrice
1517
+ }, mockHeader?.effectivePrice), ' ')), /*#__PURE__*/React__default["default"].createElement(Button, {
1518
+ data: {
1519
+ // link: 'headerData?.loginCtaLink',
1520
+ // isLink: 1,
1521
+ value: 'BUY NOW'
1522
+ // isExternal: 1
1523
+ },
1524
+
1525
+ onClick: extraProps?.courseBuyNow,
1526
+ type: 'primary',
1527
+ size: 'small',
1528
+ target: null,
1529
+ name: "button",
1530
+ rel: null
1531
+ // styling={isMobile ? { margin: '0 40px' } : {}}
1532
+ }));
1533
+ } else return /*#__PURE__*/React__default["default"].createElement(Button, {
1534
+ data: {
1535
+ // link: 'headerData?.loginCtaLink',
1536
+ // isLink: 1,
1537
+ value: 'BUY NOW'
1538
+ // isExternal: 1
1539
+ },
1540
+
1541
+ onClick: extraProps?.courseBuyNow,
1542
+ type: 'primary',
1543
+ size: 'medium',
1544
+ target: null,
1545
+ name: "button",
1546
+ rel: null
1547
+ // styling={isMobile ? { margin: '0 40px' } : {}}
1548
+ });
1549
+ };
1550
+
1361
1551
  return /*#__PURE__*/React__default["default"].createElement("nav", {
1362
1552
  className: classes.section
1363
1553
  }, !(header?.websiteLogo === DEFAULT_HEADER_IMAGE_LP && isCustomWebsite) ? /*#__PURE__*/React__default["default"].createElement("div", {
1364
1554
  className: classes.headerSection
1365
1555
  }, /*#__PURE__*/React__default["default"].createElement("div", {
1366
1556
  className: classes.headerContainer
1367
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1557
+ }, /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement("div", {
1368
1558
  className: classes.imageDiv
1369
1559
  }, header?.websiteLogo ? /*#__PURE__*/React__default["default"].createElement("a", {
1370
1560
  href: logoUrl,
@@ -1392,20 +1582,31 @@ function DesktopHeader({
1392
1582
  moreContent: moreContentFn(),
1393
1583
  isTutorWebsite: isTutorWebsite,
1394
1584
  onDownloadAppTriggered: onDownloadAppTriggered
1395
- }))) : /*#__PURE__*/React__default["default"].createElement("div", {
1585
+ })), OfferDetailsJSX())) : /*#__PURE__*/React__default["default"].createElement("div", {
1396
1586
  style: {
1397
1587
  paddingTop: '30px'
1398
1588
  }
1399
1589
  }));
1400
1590
  }
1401
1591
 
1592
+ var timer = "data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M7.99996%2015.1667C4.50663%2015.1667%201.66663%2012.3267%201.66663%208.83333C1.66663%205.34%204.50663%202.5%207.99996%202.5C11.4933%202.5%2014.3333%205.34%2014.3333%208.83333C14.3333%2012.3267%2011.4933%2015.1667%207.99996%2015.1667ZM7.99996%203.5C5.05996%203.5%202.66663%205.89333%202.66663%208.83333C2.66663%2011.7733%205.05996%2014.1667%207.99996%2014.1667C10.94%2014.1667%2013.3333%2011.7733%2013.3333%208.83333C13.3333%205.89333%2010.94%203.5%207.99996%203.5Z%22%20fill%3D%22white%22%2F%3E%3Cpath%20d%3D%22M8%209.16671C7.72667%209.16671%207.5%208.94004%207.5%208.66671V5.33337C7.5%205.06004%207.72667%204.83337%208%204.83337C8.27333%204.83337%208.5%205.06004%208.5%205.33337V8.66671C8.5%208.94004%208.27333%209.16671%208%209.16671Z%22%20fill%3D%22white%22%2F%3E%3Cpath%20d%3D%22M10%201.83337H6C5.72667%201.83337%205.5%201.60671%205.5%201.33337C5.5%201.06004%205.72667%200.833374%206%200.833374H10C10.2733%200.833374%2010.5%201.06004%2010.5%201.33337C10.5%201.60671%2010.2733%201.83337%2010%201.83337Z%22%20fill%3D%22white%22%2F%3E%3C%2Fsvg%3E";
1593
+
1402
1594
  function MobileHeader({
1403
1595
  header,
1404
1596
  navData,
1405
1597
  isTutorWebsite,
1406
1598
  isLandingPage = false,
1407
- onDownloadAppTriggered
1599
+ onDownloadAppTriggered,
1600
+ extraProps
1408
1601
  }) {
1602
+ let mockHeader = {
1603
+ isOfferActive: true,
1604
+ effectivePrice: 0.51,
1605
+ price: 1,
1606
+ discount: 0.5,
1607
+ endDate: Date.now() + 24 * 60 * 60 * 1000,
1608
+ offerPriceValidFor: 20
1609
+ };
1409
1610
  const {
1410
1611
  isCustomWebsite,
1411
1612
  countryCode
@@ -1441,6 +1642,94 @@ function MobileHeader({
1441
1642
 
1442
1643
  // console.log(header, 'sakshat header mobile');
1443
1644
 
1645
+ const getDiscount = (price, discount) => {
1646
+ return (discount / price * 100).toFixed(2);
1647
+ };
1648
+ const renderer = ({
1649
+ days,
1650
+ hours,
1651
+ minutes,
1652
+ seconds
1653
+ }) => {
1654
+ if (days === 0 && hours < 24) {
1655
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1656
+ className: classes.offerBottom
1657
+ }, /*#__PURE__*/React__default["default"].createElement("div", null, "Offer ends in"), /*#__PURE__*/React__default["default"].createElement("div", {
1658
+ style: {
1659
+ display: 'flex',
1660
+ gap: '5px'
1661
+ }
1662
+ }, /*#__PURE__*/React__default["default"].createElement("img", {
1663
+ src: timer,
1664
+ alt: ""
1665
+ }), ' ', /*#__PURE__*/React__default["default"].createElement("div", null, hours, " ", /*#__PURE__*/React__default["default"].createElement("span", {
1666
+ className: classes.smallText
1667
+ }, "hrs"), " : ", minutes, ' ', /*#__PURE__*/React__default["default"].createElement("span", {
1668
+ className: classes.smallText
1669
+ }, "Mins"), " : ", seconds, ' ', /*#__PURE__*/React__default["default"].createElement("span", {
1670
+ className: classes.smallText
1671
+ }, "Secs"))));
1672
+ } else {
1673
+ let given = moment__default["default"](mockHeader.endDate);
1674
+ let current = moment__default["default"]().startOf('day');
1675
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1676
+ className: classes.offerBottom
1677
+ }, /*#__PURE__*/React__default["default"].createElement("div", null, "This offer is only valid for"), /*#__PURE__*/React__default["default"].createElement("div", {
1678
+ style: {
1679
+ display: 'flex',
1680
+ gap: '5px'
1681
+ }
1682
+ }, /*#__PURE__*/React__default["default"].createElement("img", {
1683
+ src: timer,
1684
+ alt: ""
1685
+ }), ' ', /*#__PURE__*/React__default["default"].createElement("div", null, Math.floor(moment__default["default"].duration(given.diff(current)).asDays()), /*#__PURE__*/React__default["default"].createElement("span", {
1686
+ className: classes.smallText
1687
+ }, "\xA0\xA0Days"))));
1688
+ }
1689
+ };
1690
+ const OfferDetailsJSX = () => {
1691
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1692
+ className: classes.BottomSheetOfferContainer
1693
+ }, ' ', /*#__PURE__*/React__default["default"].createElement(Countdown__default["default"], {
1694
+ renderer: renderer,
1695
+ date: mockHeader?.endDate
1696
+ }));
1697
+ };
1698
+ const BottomSheetJSX = () => {
1699
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
1700
+ className: classes.BottomSheetContainer
1701
+ }, OfferDetailsJSX(), /*#__PURE__*/React__default["default"].createElement("div", {
1702
+ className: classes.BottomSheetPriceContainer
1703
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
1704
+ className: classes.BottomSheetPrice
1705
+ }, /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement("div", {
1706
+ style: {
1707
+ textAlign: 'start'
1708
+ }
1709
+ }, /*#__PURE__*/React__default["default"].createElement("span", {
1710
+ className: classes.offerPrice
1711
+ }, mockHeader?.effectivePrice), ' '), /*#__PURE__*/React__default["default"].createElement("span", {
1712
+ className: classes.originalPrice
1713
+ }, mockHeader?.price), ' ', /*#__PURE__*/React__default["default"].createElement("span", {
1714
+ className: classes.offerDiscount
1715
+ }, `${getDiscount(mockHeader?.price, mockHeader?.discount)}%`, "\xA0OFF"), "\xA0\xA0")), /*#__PURE__*/React__default["default"].createElement(Button, {
1716
+ data: {
1717
+ // link: 'headerData?.loginCtaLink',
1718
+ // isLink: 1,
1719
+ value: 'BUY NOW'
1720
+ // isExternal: 1
1721
+ },
1722
+
1723
+ onClick: extraProps?.courseBuyNow,
1724
+ type: 'primary',
1725
+ size: 'medium',
1726
+ target: null,
1727
+ name: "button",
1728
+ rel: null
1729
+ // styling={isMobile ? { margin: '0 40px' } : {}}
1730
+ }))));
1731
+ };
1732
+
1444
1733
  if (isTutorWebsite) {
1445
1734
  if (isAndroidDelisted && apkURL) {
1446
1735
  downloadLink = /*#__PURE__*/React__default["default"].createElement(Button, {
@@ -1513,7 +1802,7 @@ function MobileHeader({
1513
1802
  downloadLink = null;
1514
1803
  }
1515
1804
  }
1516
- return /*#__PURE__*/React__default["default"].createElement("nav", {
1805
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("nav", {
1517
1806
  ref: navEl,
1518
1807
  className: classes.section
1519
1808
  }, !(header?.websiteLogo === DEFAULT_HEADER_IMAGE_LP && isCustomWebsite) ? /*#__PURE__*/React__default["default"].createElement("div", {
@@ -1546,7 +1835,7 @@ function MobileHeader({
1546
1835
  order: 1
1547
1836
  }))) : null, isTutorWebsite && header?.appName ? /*#__PURE__*/React__default["default"].createElement("p", {
1548
1837
  className: classes.mobileAppNameClass
1549
- }, " ", header?.appName) : null), downloadLink), sideMenu ? /*#__PURE__*/React__default["default"].createElement("div", {
1838
+ }, ' ', header?.appName) : null), downloadLink), sideMenu ? /*#__PURE__*/React__default["default"].createElement("div", {
1550
1839
  className: classes.mobileMenu
1551
1840
  }, /*#__PURE__*/React__default["default"].createElement("div", {
1552
1841
  className: classes.backdrop,
@@ -1566,7 +1855,7 @@ function MobileHeader({
1566
1855
  style: {
1567
1856
  paddingTop: '30px'
1568
1857
  }
1569
- }));
1858
+ })), /*#__PURE__*/React__default["default"].createElement(BottomSheetJSX, null));
1570
1859
  }
1571
1860
 
1572
1861
  function Header({
@@ -1586,13 +1875,15 @@ function Header({
1586
1875
  header: data,
1587
1876
  isTutorWebsite: isTutorWebsite,
1588
1877
  isLandingPage: isLandingPage,
1589
- onDownloadAppTriggered: extraProps?.DownloadAppButtonTriggered
1878
+ onDownloadAppTriggered: extraProps?.DownloadAppButtonTriggered,
1879
+ extraProps: extraProps
1590
1880
  }) : /*#__PURE__*/React__default["default"].createElement(DesktopHeader, {
1591
1881
  navData: filterHiddenNavs(),
1592
1882
  header: data,
1593
1883
  isTutorWebsite: isTutorWebsite,
1594
1884
  isLandingPage: isLandingPage,
1595
- onDownloadAppTriggered: extraProps?.DownloadAppButtonTriggered
1885
+ onDownloadAppTriggered: extraProps?.DownloadAppButtonTriggered,
1886
+ extraProps: extraProps
1596
1887
  });
1597
1888
  }
1598
1889
 
@@ -10222,21 +10513,28 @@ const TimerAndCall = ({
10222
10513
  text: "Secs"
10223
10514
  }));
10224
10515
  };
10516
+ const CountDownJSX = offerPriceValidFor => {
10517
+ let conversions = extraProps?.conversions || 0;
10518
+ if (offerPriceValidFor && offerPriceValidFor - conversions <= 0) {
10519
+ return null;
10520
+ }
10521
+ return /*#__PURE__*/React__default["default"].createElement("div", {
10522
+ className: classes.offerWrapper
10523
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
10524
+ className: classes.offerEndsTitle
10525
+ }, "Offer ends in"), /*#__PURE__*/React__default["default"].createElement(Countdown__default["default"], {
10526
+ renderer: renderer,
10527
+ date: nodeData.offerCounter?.metadata?.endDate,
10528
+ daysInHours: true
10529
+ }));
10530
+ };
10225
10531
  return /*#__PURE__*/React__default["default"].createElement("section", {
10226
10532
  className: classes.timerAndCallSection
10227
10533
  }, /*#__PURE__*/React__default["default"].createElement("div", {
10228
10534
  className: classes.timerAndCallContainer
10229
10535
  }, /*#__PURE__*/React__default["default"].createElement("div", {
10230
10536
  className: classes.timerAndCallBox
10231
- }, nodeData?.showOffer?.metadata?.value && nodeData.offerCounter?.metadata?.isOfferActive ? /*#__PURE__*/React__default["default"].createElement("div", {
10232
- className: classes.offerWrapper
10233
- }, /*#__PURE__*/React__default["default"].createElement("div", {
10234
- className: classes.offerEndsTitle
10235
- }, "Offer ends in"), /*#__PURE__*/React__default["default"].createElement(Countdown__default["default"], {
10236
- renderer: renderer,
10237
- date: nodeData.offerCounter?.metadata?.endDate,
10238
- daysInHours: true
10239
- })) : null, nodeData?.title?.metadata?.value ? /*#__PURE__*/React__default["default"].createElement("div", {
10537
+ }, nodeData?.showOffer?.metadata?.value && nodeData.offerCounter?.metadata?.isOfferActive ? CountDownJSX(nodeData.offerCounter?.metadata?.offerPriceValidFor) : null, nodeData?.title?.metadata?.value ? /*#__PURE__*/React__default["default"].createElement("div", {
10240
10538
  className: classes.title
10241
10539
  }, /*#__PURE__*/React__default["default"].createElement("span", {
10242
10540
  ref: nodeData?.heading?.refSetter,