@ape.swap/bonds-sdk 5.1.34 → 5.1.37

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.
Files changed (70) hide show
  1. package/dist/components/TokenSelectorPanel/index.js.map +1 -1
  2. package/dist/components/uikit-sdk/Svg/Icons/GiftBox.d.ts +4 -0
  3. package/dist/components/uikit-sdk/Svg/Icons/GiftBox.js +10 -0
  4. package/dist/components/uikit-sdk/Svg/Icons/GiftBox.js.map +1 -0
  5. package/dist/components/uikit-sdk/Svg/index.js +3 -0
  6. package/dist/components/uikit-sdk/Svg/index.js.map +1 -1
  7. package/dist/components/uikit-sdk/Svg/types.d.ts +1 -0
  8. package/dist/components/uikit-sdk/Svg/types.js +1 -0
  9. package/dist/components/uikit-sdk/Svg/types.js.map +1 -1
  10. package/dist/components/uikit-sdk/TooltipBubble/types.d.ts +2 -2
  11. package/dist/components/uikit-sdk/TooltipBubble/types.js.map +1 -1
  12. package/dist/config/constants/queryKeys.d.ts +1 -0
  13. package/dist/config/constants/queryKeys.js.map +1 -1
  14. package/dist/state/tiers/useTierPoints.d.ts +15 -2
  15. package/dist/state/tiers/useTierPoints.js +31 -4
  16. package/dist/state/tiers/useTierPoints.js.map +1 -1
  17. package/dist/state/zap/useSoulZapBondQuote.js +6 -3
  18. package/dist/state/zap/useSoulZapBondQuote.js.map +1 -1
  19. package/dist/utils/formatNumber.d.ts +6 -0
  20. package/dist/utils/formatNumber.js +39 -3
  21. package/dist/utils/formatNumber.js.map +1 -1
  22. package/dist/views/Bonds/components/BondRows/ActiveBondRows.js +1 -2
  23. package/dist/views/Bonds/components/BondRows/ActiveBondRows.js.map +1 -1
  24. package/dist/views/Bonds/components/BonusComponents/BonusTable.js +3 -2
  25. package/dist/views/Bonds/components/BonusComponents/BonusTable.js.map +1 -1
  26. package/dist/views/Bonds/components/ChainBanner/ChainBanner.js +22 -36
  27. package/dist/views/Bonds/components/ChainBanner/ChainBanner.js.map +1 -1
  28. package/dist/views/BuyBond/BuyComponent.js +10 -9
  29. package/dist/views/BuyBond/BuyComponent.js.map +1 -1
  30. package/dist/views/BuyBond/components/BondModalHeader.js +21 -3
  31. package/dist/views/BuyBond/components/BondModalHeader.js.map +1 -1
  32. package/dist/views/BuyBond/components/Estimations.d.ts +1 -1
  33. package/dist/views/BuyBond/components/Estimations.js +15 -9
  34. package/dist/views/BuyBond/components/Estimations.js.map +1 -1
  35. package/dist/views/BuyBond/components/GetUpToComponent/GetUpToComponent.js +27 -7
  36. package/dist/views/BuyBond/components/GetUpToComponent/GetUpToComponent.js.map +1 -1
  37. package/dist/views/BuyBond/components/NewRateModal/NewRateModal.js +4 -3
  38. package/dist/views/BuyBond/components/NewRateModal/NewRateModal.js.map +1 -1
  39. package/dist/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.js +6 -5
  40. package/dist/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.js.map +1 -1
  41. package/dist/views/ProjectView/ProjectView.js +7 -9
  42. package/dist/views/ProjectView/ProjectView.js.map +1 -1
  43. package/dist/views/ProjectView/components/PriceChart/components/CandleStickChart.js +111 -0
  44. package/dist/views/ProjectView/components/PriceChart/components/CandleStickChart.js.map +1 -0
  45. package/dist/views/ProjectView/components/PriceChart/components/LineChart.js +100 -0
  46. package/dist/views/ProjectView/components/PriceChart/components/LineChart.js.map +1 -0
  47. package/dist/views/ProjectView/components/PriceChart/components/utils.js +20 -0
  48. package/dist/views/ProjectView/components/PriceChart/components/utils.js.map +1 -0
  49. package/dist/views/ProjectView/components/PriceChart/index.js +38 -0
  50. package/dist/views/ProjectView/components/PriceChart/index.js.map +1 -0
  51. package/dist/views/ProjectView/components/PriceChart/styles.js +44 -0
  52. package/dist/views/ProjectView/components/PriceChart/styles.js.map +1 -0
  53. package/dist/views/ProjectView/components/RecommendationCards/index.js +7 -2
  54. package/dist/views/ProjectView/components/RecommendationCards/index.js.map +1 -1
  55. package/dist/views/SingleBond/SoldOutBuyBondPlaceholder.js +4 -3
  56. package/dist/views/SingleBond/SoldOutBuyBondPlaceholder.js.map +1 -1
  57. package/dist/views/TransactionModal/TransactionModal.js +5 -4
  58. package/dist/views/TransactionModal/TransactionModal.js.map +1 -1
  59. package/package.json +2 -3
  60. package/dist/components/TabNavigation/index.js +0 -33
  61. package/dist/components/TabNavigation/index.js.map +0 -1
  62. package/dist/views/RakuraiComponent/RakuraiComponent.d.ts +0 -3
  63. package/dist/views/RakuraiComponent/RakuraiComponent.js +0 -229
  64. package/dist/views/RakuraiComponent/RakuraiComponent.js.map +0 -1
  65. package/dist/views/RakuraiComponent/useRakuraiStats.d.ts +0 -7
  66. package/dist/views/RakuraiComponent/useRakuraiStats.js +0 -42
  67. package/dist/views/RakuraiComponent/useRakuraiStats.js.map +0 -1
  68. package/dist/views/RakuraiComponent/useSolanaStakeBalances.d.ts +0 -8
  69. package/dist/views/RakuraiComponent/useSolanaStakeBalances.js +0 -47
  70. package/dist/views/RakuraiComponent/useSolanaStakeBalances.js.map +0 -1
@@ -0,0 +1,100 @@
1
+ import { jsx } from 'theme-ui/jsx-runtime';
2
+ import { useState, useRef, useEffect } from 'react';
3
+ import { createChart, CrosshairMode, ColorType, LineStyle } from 'lightweight-charts';
4
+ import { getFirstNonZeroDigits } from '../../../../../utils/roundNumber.js';
5
+ import { determineValues } from './utils.js';
6
+
7
+ const LineChart = ({ historicalPrices, hasDiscount, bondPrice, tokenPrice, }) => {
8
+ // reference for DOM element to create with chart
9
+ const data = historicalPrices;
10
+ const chartContainerId = 'lineChartContainer';
11
+ const formattedData = data?.map((entry) => {
12
+ return {
13
+ time: parseInt(entry.timestamp),
14
+ value: parseFloat(getFirstNonZeroDigits(entry.close, 4)),
15
+ };
16
+ });
17
+ // pointer to the chart object
18
+ const [chartCreated, setChartCreated] = useState();
19
+ const chartInitiatedRef = useRef(false);
20
+ const discount = 1 - parseFloat(bondPrice ?? '0') / parseFloat(tokenPrice ?? '0');
21
+ const discountToUse = discount > 0 ? discount : 0;
22
+ const bottomScaleMargin = discountToUse + 0.15;
23
+ useEffect(() => {
24
+ const chartContainer = document.getElementById(chartContainerId);
25
+ if (chartContainer && !chartCreated && !chartInitiatedRef.current) {
26
+ console.log('creating chart');
27
+ const chart = createChart(chartContainer, {
28
+ width: 0,
29
+ height: 0,
30
+ layout: {
31
+ background: {
32
+ type: ColorType.Solid,
33
+ color: 'transparent',
34
+ },
35
+ textColor: '#73728E',
36
+ },
37
+ grid: {
38
+ vertLines: {
39
+ color: '#73728E',
40
+ },
41
+ horzLines: {
42
+ color: '#73728E',
43
+ },
44
+ },
45
+ crosshair: {
46
+ mode: CrosshairMode.Magnet,
47
+ },
48
+ rightPriceScale: {
49
+ borderColor: '#73728E',
50
+ visible: true,
51
+ scaleMargins: {
52
+ top: 0.12,
53
+ bottom: bottomScaleMargin,
54
+ },
55
+ },
56
+ timeScale: {
57
+ borderColor: '#73728E',
58
+ },
59
+ localization: {
60
+ priceFormatter: (val) => {
61
+ return `$${getFirstNonZeroDigits(parseFloat(val), 3)}`;
62
+ },
63
+ },
64
+ });
65
+ const [precision, minMove] = determineValues(parseFloat(bondPrice));
66
+ const areaSeries = chart.addAreaSeries({
67
+ lineColor: '#5E59B5',
68
+ topColor: '#5E59B5',
69
+ bottomColor: '#514CA133',
70
+ priceLineWidth: 2,
71
+ priceLineStyle: LineStyle.Dashed,
72
+ priceLineVisible: true,
73
+ priceFormat: {
74
+ precision,
75
+ minMove,
76
+ formatter: (val) => getFirstNonZeroDigits(parseFloat(val), 3),
77
+ },
78
+ });
79
+ formattedData?.push({ time: Math.floor(new Date().getTime() / 1000), value: parseFloat(tokenPrice) });
80
+ //@ts-ignore
81
+ areaSeries.setData(formattedData);
82
+ areaSeries.createPriceLine({
83
+ price: parseFloat(bondPrice),
84
+ color: hasDiscount ? '#38A611' : '#DF4141',
85
+ lineWidth: 2,
86
+ lineStyle: LineStyle.Dashed,
87
+ axisLabelVisible: true,
88
+ title: `Bond Price`,
89
+ });
90
+ chart.timeScale().fitContent();
91
+ //@ts-ignore
92
+ setChartCreated(chart);
93
+ chartInitiatedRef.current = true;
94
+ }
95
+ }, [bondPrice, bottomScaleMargin, chartCreated, formattedData, hasDiscount, tokenPrice]);
96
+ return jsx("div", { id: chartContainerId, style: { width: '100%', height: '100%' } });
97
+ };
98
+
99
+ export { LineChart as default };
100
+ //# sourceMappingURL=LineChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LineChart.js","sources":["../../../../../../src/views/ProjectView/components/PriceChart/components/LineChart.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react'\nimport { ColorType, createChart, CrosshairMode, LineStyle } from 'lightweight-charts'\nimport { HistoricalPrices } from '../../../ProjectView'\nimport { getFirstNonZeroDigits } from '../../../../../utils/roundNumber'\nimport { determineValues } from './utils'\n\nconst LineChart = ({\n historicalPrices,\n hasDiscount,\n bondPrice,\n tokenPrice,\n}: {\n historicalPrices?: HistoricalPrices[] | null\n hasDiscount: boolean\n bondPrice: string\n tokenPrice: string\n}) => {\n // reference for DOM element to create with chart\n const data = historicalPrices\n const chartContainerId = 'lineChartContainer'\n\n const formattedData = data?.map((entry) => {\n return {\n time: parseInt(entry.timestamp),\n value: parseFloat(getFirstNonZeroDigits(entry.close, 4)),\n }\n })\n\n // pointer to the chart object\n const [chartCreated, setChartCreated] = useState()\n const chartInitiatedRef = useRef(false)\n\n const discount = 1 - parseFloat(bondPrice ?? '0') / parseFloat(tokenPrice ?? '0')\n const discountToUse = discount > 0 ? discount : 0\n const bottomScaleMargin = discountToUse + 0.15\n\n useEffect(() => {\n const chartContainer = document.getElementById(chartContainerId)\n if (chartContainer && !chartCreated && !chartInitiatedRef.current) {\n console.log('creating chart')\n const chart = createChart(chartContainer, {\n width: 0,\n height: 0,\n layout: {\n background: {\n type: ColorType.Solid,\n color: 'transparent',\n },\n textColor: '#73728E',\n },\n grid: {\n vertLines: {\n color: '#73728E',\n },\n horzLines: {\n color: '#73728E',\n },\n },\n crosshair: {\n mode: CrosshairMode.Magnet,\n },\n rightPriceScale: {\n borderColor: '#73728E',\n visible: true,\n scaleMargins: {\n top: 0.12,\n bottom: bottomScaleMargin,\n },\n },\n timeScale: {\n borderColor: '#73728E',\n },\n\n localization: {\n priceFormatter: (val: string) => {\n return `$${getFirstNonZeroDigits(parseFloat(val), 3)}`\n },\n },\n })\n const [precision, minMove] = determineValues(parseFloat(bondPrice))\n\n const areaSeries = chart.addAreaSeries({\n lineColor: '#5E59B5',\n topColor: '#5E59B5',\n bottomColor: '#514CA133',\n priceLineWidth: 2,\n priceLineStyle: LineStyle.Dashed,\n priceLineVisible: true,\n priceFormat: {\n precision,\n minMove,\n formatter: (val: string) => getFirstNonZeroDigits(parseFloat(val), 3),\n },\n })\n\n formattedData?.push({ time: Math.floor(new Date().getTime() / 1000), value: parseFloat(tokenPrice) })\n //@ts-ignore\n areaSeries.setData(formattedData)\n\n areaSeries.createPriceLine({\n price: parseFloat(bondPrice),\n color: hasDiscount ? '#38A611' : '#DF4141',\n lineWidth: 2,\n lineStyle: LineStyle.Dashed,\n axisLabelVisible: true,\n title: `Bond Price`,\n })\n\n chart.timeScale().fitContent()\n //@ts-ignore\n setChartCreated(chart)\n chartInitiatedRef.current = true\n }\n }, [bondPrice, bottomScaleMargin, chartCreated, formattedData, hasDiscount, tokenPrice])\n\n return <div id={chartContainerId} style={{ width: '100%', height: '100%' }}></div>\n}\n\nexport default LineChart\n"],"names":["_jsx"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ const determineValues = (input) => {
2
+ // if input is larger than 1 return [2, 0.01]
3
+ if (input > 1) {
4
+ return [2, 0.01];
5
+ }
6
+ // loop that starts handling the cases smaller than or equal to 1
7
+ let index = 2; // Index to get next value to consider. Start from 1 since we handled the "greater than 1" case.
8
+ let check = 1; // Start with 0.1 as the value to compare with. If input is smaller, increase index and decrease check by a factor of 10.
9
+ while (input <= check) {
10
+ index += 1;
11
+ check *= 0.1;
12
+ }
13
+ const decimalString = '0.' + Array(index).join('0') + '1';
14
+ // Convert string back to number
15
+ const decimalNumber = Number(decimalString);
16
+ return [index, decimalNumber];
17
+ };
18
+
19
+ export { determineValues };
20
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../src/views/ProjectView/components/PriceChart/components/utils.ts"],"sourcesContent":["export const determineValues = (input: number): [number, number] => {\n // if input is larger than 1 return [2, 0.01]\n if (input > 1) {\n return [2, 0.01]\n }\n // loop that starts handling the cases smaller than or equal to 1\n let index = 2 // Index to get next value to consider. Start from 1 since we handled the \"greater than 1\" case.\n let check = 1 // Start with 0.1 as the value to compare with. If input is smaller, increase index and decrease check by a factor of 10.\n while (input <= check) {\n index += 1\n check *= 0.1\n }\n const decimalString = '0.' + Array(index).join('0') + '1'\n // Convert string back to number\n const decimalNumber = Number(decimalString)\n return [index, decimalNumber]\n}\n"],"names":[],"mappings":"AAAO,MAAM,eAAe,GAAG,CAAC,KAAa,KAAsB;;AAEjE,IAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,QAAA,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC;IAClB;;AAEA,IAAA,IAAI,KAAK,GAAG,CAAC,CAAA;AACb,IAAA,IAAI,KAAK,GAAG,CAAC,CAAA;AACb,IAAA,OAAO,KAAK,IAAI,KAAK,EAAE;QACrB,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,GAAG;IACd;AACA,IAAA,MAAM,aAAa,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;;AAEzD,IAAA,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC3C,IAAA,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC;AAC/B;;;;"}
@@ -0,0 +1,38 @@
1
+ import { jsxs, jsx } from 'theme-ui/jsx-runtime';
2
+ import { useState, useEffect } from 'react';
3
+ import CandleStickChart from './components/CandleStickChart.js';
4
+ import LineChart from './components/LineChart.js';
5
+ import { styles } from './styles.js';
6
+ import { getFirstNonZeroDigits } from '../../../../utils/roundNumber.js';
7
+ import Flex from '../../../../components/uikit-sdk/Flex/index.js';
8
+ import Svg from '../../../../components/uikit-sdk/Svg/index.js';
9
+ import { TIERS_WEIGHT } from '../../../../state/tiers/useTierPoints.js';
10
+ import { LaunchBondTiers } from '@ape.swap/apeswap-lists';
11
+ import { discountEarnTokenPrice } from '../../../../utils/displayHelpers.js';
12
+ import { findHighestTrueBondPrice } from '../../../../utils/bondPriceHelpers.js';
13
+
14
+ const PriceChart = ({ selectedBond, historicalPrices, }) => {
15
+ const earnTokenPrice = parseFloat(selectedBond?.payoutTokenPrice ?? '0');
16
+ const trueBondPrice = findHighestTrueBondPrice(TIERS_WEIGHT[LaunchBondTiers.Legend], selectedBond?.trueBondPrices);
17
+ const bondPrice = discountEarnTokenPrice(selectedBond, true);
18
+ const hasDiscount = (trueBondPrice?.bonus ?? 0) > 0;
19
+ const contractAddress = selectedBond.contractAddress[selectedBond.chainId];
20
+ const [show, setShow] = useState(false);
21
+ const [chartOption, setChartOption] = useState('line');
22
+ useEffect(() => {
23
+ // This effect is to ensure that the charts are only rendered on the client
24
+ setShow(true);
25
+ }, []);
26
+ useEffect(() => {
27
+ // This effect is to ensure the charts are re-rendered everytime the selectedBond changes
28
+ setShow(false);
29
+ const timer = setTimeout(() => {
30
+ setShow(true);
31
+ }, 50);
32
+ return () => clearTimeout(timer);
33
+ }, [contractAddress]);
34
+ return (jsxs(Flex, { sx: styles.priceContainer, children: [jsxs(Flex, { sx: { width: '100%', justifyContent: 'space-between', mb: '15px', pr: '20px' }, children: [jsx(Flex, { children: "Prices" }), jsxs(Flex, { children: [jsxs(Flex, { sx: { color: hasDiscount ? 'success' : 'error', fontSize: '12px', fontWeight: 500, mr: '15px' }, children: ["Bond Price: $", bondPrice] }), jsxs(Flex, { sx: { color: 'textDisabledButton', fontSize: '12px', fontWeight: 500 }, children: ["Market Price: $", getFirstNonZeroDigits(earnTokenPrice ?? 0)] })] })] }), show && (jsxs(Flex, { sx: styles.container, children: [jsxs(Flex, { sx: styles.buttonsContainer, children: [jsx(Flex, { sx: { ...styles.button, mr: '15px' }, onClick: () => setChartOption('line'), children: jsx(Svg, { icon: "lineChart", width: 20 }) }), jsx(Flex, { sx: styles.button, onClick: () => setChartOption('candleStick'), children: "D" })] }), historicalPrices && historicalPrices.length > 0 ? (chartOption === 'line' ? (jsx(LineChart, { historicalPrices: historicalPrices, hasDiscount: hasDiscount, bondPrice: bondPrice ?? '0', tokenPrice: selectedBond.payoutTokenPrice ?? '0' })) : (jsx(CandleStickChart, { historicalPrices: historicalPrices, hasDiscount: hasDiscount, bondPrice: bondPrice ?? '0', tokenPrice: selectedBond.payoutTokenPrice ?? '0' }))) : (jsxs(Flex, { sx: { flexDirection: 'column', justifyContent: 'center', alignItems: 'center', width: '100%' }, children: [jsx(Svg, { icon: "placeholderMonkey" }), jsx(Flex, { sx: { mt: '15px' }, children: "No Historical Price for this Token" })] }))] }))] }));
35
+ };
36
+
37
+ export { PriceChart as default };
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/views/ProjectView/components/PriceChart/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport CandleStickChart from './components/CandleStickChart'\nimport LineChart from './components/LineChart'\nimport { styles } from './styles'\nimport { BondsData } from '../../../../types/bonds'\nimport { HistoricalPrices } from '../../ProjectView'\nimport { getFirstNonZeroDigits } from '../../../../utils/roundNumber'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport Svg from '../../../../components/uikit-sdk/Svg'\nimport { TIERS_WEIGHT } from '../../../../state/tiers/useTierPoints'\nimport { LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport { discountEarnTokenPrice } from '../../../../utils/displayHelpers'\nimport { findHighestTrueBondPrice } from '../../../../utils/bondPriceHelpers'\n\nconst PriceChart = ({\n selectedBond,\n historicalPrices,\n}: {\n selectedBond: BondsData\n historicalPrices?: HistoricalPrices[] | null\n}) => {\n const earnTokenPrice = parseFloat(selectedBond?.payoutTokenPrice ?? '0')\n const trueBondPrice = findHighestTrueBondPrice(TIERS_WEIGHT[LaunchBondTiers.Legend], selectedBond?.trueBondPrices)\n const bondPrice = discountEarnTokenPrice(selectedBond, true)\n const hasDiscount = (trueBondPrice?.bonus ?? 0) > 0\n const contractAddress = selectedBond.contractAddress[selectedBond.chainId]\n\n const [show, setShow] = useState<boolean>(false)\n const [chartOption, setChartOption] = useState<'line' | 'candleStick'>('line')\n\n useEffect(() => {\n // This effect is to ensure that the charts are only rendered on the client\n setShow(true)\n }, [])\n\n useEffect(() => {\n // This effect is to ensure the charts are re-rendered everytime the selectedBond changes\n setShow(false)\n const timer = setTimeout(() => {\n setShow(true)\n }, 50)\n return () => clearTimeout(timer)\n }, [contractAddress])\n\n return (\n <Flex sx={styles.priceContainer}>\n <Flex sx={{ width: '100%', justifyContent: 'space-between', mb: '15px', pr: '20px' }}>\n <Flex>Prices</Flex>\n <Flex>\n <Flex sx={{ color: hasDiscount ? 'success' : 'error', fontSize: '12px', fontWeight: 500, mr: '15px' }}>\n Bond Price: ${bondPrice}\n </Flex>\n <Flex sx={{ color: 'textDisabledButton', fontSize: '12px', fontWeight: 500 }}>\n Market Price: ${getFirstNonZeroDigits(earnTokenPrice ?? 0)}\n </Flex>\n </Flex>\n </Flex>\n {show && (\n <Flex sx={styles.container}>\n <Flex sx={styles.buttonsContainer}>\n <Flex sx={{ ...styles.button, mr: '15px' }} onClick={() => setChartOption('line')}>\n <Svg icon=\"lineChart\" width={20} />\n </Flex>\n <Flex sx={styles.button} onClick={() => setChartOption('candleStick')}>\n D\n </Flex>\n </Flex>\n {historicalPrices && historicalPrices.length > 0 ? (\n chartOption === 'line' ? (\n <LineChart\n historicalPrices={historicalPrices}\n hasDiscount={hasDiscount}\n bondPrice={bondPrice ?? '0'}\n tokenPrice={selectedBond.payoutTokenPrice ?? '0'}\n />\n ) : (\n <CandleStickChart\n historicalPrices={historicalPrices}\n hasDiscount={hasDiscount}\n bondPrice={bondPrice ?? '0'}\n tokenPrice={selectedBond.payoutTokenPrice ?? '0'}\n />\n )\n ) : (\n <Flex sx={{ flexDirection: 'column', justifyContent: 'center', alignItems: 'center', width: '100%' }}>\n <Svg icon=\"placeholderMonkey\" />\n <Flex sx={{ mt: '15px' }}>No Historical Price for this Token</Flex>\n </Flex>\n )}\n </Flex>\n )}\n </Flex>\n )\n}\n\nexport default PriceChart\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ const styles = {
2
+ priceContainer: {
3
+ width: ['100%', '100%', '100%', '50%'],
4
+ fontSize: ['12px', '12px', '12px', '16px'],
5
+ flexDirection: 'column',
6
+ background: 'white2',
7
+ borderRadius: 'normal',
8
+ p: '20px',
9
+ pr: '0px',
10
+ alignItems: 'center',
11
+ mt: ['15px', '15px', '15px', '5px'],
12
+ minHeight: ['330px', '330px', '330px', '430px'],
13
+ ml: ['0px', '0px', '0px', '5px'],
14
+ },
15
+ container: {
16
+ position: 'relative',
17
+ width: '100%',
18
+ height: '100%',
19
+ },
20
+ buttonsContainer: {
21
+ position: 'absolute',
22
+ top: 0,
23
+ left: 0,
24
+ zIndex: 20,
25
+ },
26
+ button: {
27
+ width: '35px',
28
+ height: '35px',
29
+ fontSize: '12px',
30
+ borderRadius: 'small',
31
+ background: 'white3',
32
+ border: '1px solid grey',
33
+ display: 'flex',
34
+ justifyContent: 'center',
35
+ alignItems: 'center',
36
+ cursor: 'pointer',
37
+ '&:hover': {
38
+ background: 'white4',
39
+ },
40
+ },
41
+ };
42
+
43
+ export { styles };
44
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sources":["../../../../../src/views/ProjectView/components/PriceChart/styles.ts"],"sourcesContent":["import { ThemeUIStyleObject } from 'theme-ui'\n\nexport const styles: Record<'priceContainer' | 'container' | 'buttonsContainer' | 'button', ThemeUIStyleObject> = {\n priceContainer: {\n width: ['100%', '100%', '100%', '50%'],\n fontSize: ['12px', '12px', '12px', '16px'],\n flexDirection: 'column',\n background: 'white2',\n borderRadius: 'normal',\n p: '20px',\n pr: '0px',\n alignItems: 'center',\n mt: ['15px', '15px', '15px', '5px'],\n minHeight: ['330px', '330px', '330px', '430px'],\n ml: ['0px', '0px', '0px', '5px'],\n },\n container: {\n position: 'relative',\n width: '100%',\n height: '100%',\n },\n buttonsContainer: {\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex: 20,\n },\n button: {\n width: '35px',\n height: '35px',\n fontSize: '12px',\n borderRadius: 'small',\n background: 'white3',\n border: '1px solid grey',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n cursor: 'pointer',\n '&:hover': {\n background: 'white4',\n },\n },\n}\n"],"names":[],"mappings":"AAEO,MAAM,MAAM,GAA+F;AAChH,IAAA,cAAc,EAAE;QACd,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;QACtC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AAC1C,QAAA,aAAa,EAAE,QAAQ;AACvB,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,YAAY,EAAE,QAAQ;AACtB,QAAA,CAAC,EAAE,MAAM;AACT,QAAA,EAAE,EAAE,KAAK;AACT,QAAA,UAAU,EAAE,QAAQ;QACpB,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;QACnC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QAC/C,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AACjC,KAAA;AACD,IAAA,SAAS,EAAE;AACT,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,MAAM,EAAE,MAAM;AACf,KAAA;AACD,IAAA,gBAAgB,EAAE;AAChB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,MAAM,EAAE,EAAE;AACX,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,YAAY,EAAE,OAAO;AACrB,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,MAAM,EAAE,gBAAgB;AACxB,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,cAAc,EAAE,QAAQ;AACxB,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,SAAS,EAAE;AACT,YAAA,UAAU,EAAE,QAAQ;AACrB,SAAA;AACF,KAAA;;;;;"}
@@ -4,6 +4,7 @@ import { useTopTags } from '../../../../hooks/useTopTags.js';
4
4
  import useBondsData from '../../../../state/bonds/useBondsData.js';
5
5
  import Flex from '../../../../components/uikit-sdk/Flex/index.js';
6
6
  import RecommendationSelector from '../../../../components/MenuSelect/RecommendationSelector.js';
7
+ import SmallRecommendationCard from '../../../Bonds/components/RecommendationCards/SmallRecommendationCard.js';
7
8
  import { TIERS_WEIGHT } from '../../../../state/tiers/useTierPoints.js';
8
9
  import { LaunchBondTiers } from '@ape.swap/apeswap-lists';
9
10
  import useGetBondRecommendations from '../../../../state/recommendations/useGetBondRecommendations.js';
@@ -37,7 +38,7 @@ const RecommendationCards = () => {
37
38
  ? a.discount
38
39
  : (findHighestTrueBondPrice(TIERS_WEIGHT[LaunchBondTiers.Legend], a?.trueBondPrices)?.bonus ?? 0)))
39
40
  ?.slice(0, 3);
40
- slicedBonds?.map((bond) => {
41
+ const parsedBondsToRender = slicedBonds?.map((bond) => {
41
42
  let contractAddress = '';
42
43
  if ('contractAddress' in bond) {
43
44
  contractAddress = bond.contractAddress;
@@ -77,7 +78,11 @@ const RecommendationCards = () => {
77
78
  }, onClick: () => window.open('/apebond-ai', '_blank') }) })] }), jsx(Flex, { sx: {
78
79
  my: '10px',
79
80
  minHeight: '47.45px',
80
- } })] }));
81
+ }, children: parsedBondsToRender &&
82
+ parsedBondsToRender.length > 0 &&
83
+ parsedBondsToRender.map((bond, index) => {
84
+ return jsx(SmallRecommendationCard, { recommendation: bond }, `${bond.payoutTokenName}-${index}`);
85
+ }) })] }));
81
86
  };
82
87
 
83
88
  export { RecommendationCards as default };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/views/ProjectView/components/RecommendationCards/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport { useTopTags } from '../../../../hooks/useTopTags'\nimport useBondsData from '../../../../state/bonds/useBondsData'\nimport { SmallCardBond } from '../../../Bonds/components/RecommendationCards'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport RecommendationSelector from '../../../../components/MenuSelect/RecommendationSelector'\nimport SmallRecommendationCard from '../../../Bonds/components/RecommendationCards/SmallRecommendationCard'\nimport { TIERS_WEIGHT } from '../../../../state/tiers/useTierPoints'\nimport { LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport useGetBondRecommendations from '../../../../state/recommendations/useGetBondRecommendations'\nimport { useHotBondContracts } from '../../../../state/hotBonds/useHotBonds'\nimport { findHighestTrueBondPrice } from '../../../../utils/bondPriceHelpers'\nimport useEVMAccount from '../../../../hooks/accounts/useEVMAccount'\n\nconst RecommendationCards = () => {\n const topTags = useTopTags()\n const { address: account } = useEVMAccount()\n const options = account ? ['For You', 'Hot', ...topTags] : ['Hot', ...topTags]\n const [activeOption, setActiveOption] = useState(options[0])\n const { data: hotBonds } = useHotBondContracts()\n\n const { data: forYouRecommendations } = useGetBondRecommendations(account, undefined, '3')\n const { data: bonds } = useBondsData()\n const sortedBonds =\n bonds && bonds?.length > 0\n ? [...bonds].sort(\n (a, b) =>\n (findHighestTrueBondPrice(TIERS_WEIGHT[LaunchBondTiers.Legend], b?.trueBondPrices)?.bonus ?? 0) -\n (findHighestTrueBondPrice(TIERS_WEIGHT[LaunchBondTiers.Legend], a?.trueBondPrices)?.bonus ?? 0),\n )\n : undefined\n\n const filteredBonds = sortedBonds?.filter(\n (bond) =>\n bond?.tags?.includes(activeOption) &&\n !bond?.soldOut &&\n (findHighestTrueBondPrice(TIERS_WEIGHT[LaunchBondTiers.Legend], bond?.trueBondPrices)?.bonus ?? 0) < 50,\n )\n\n // This should come from the API\n const hotRecommendations = sortedBonds?.filter((bond) =>\n hotBonds?.includes(bond?.contractAddress?.[bond.chainId]?.toLowerCase() ?? ''),\n )\n\n const selectedBonds =\n activeOption === 'For You' ? forYouRecommendations : activeOption === 'Hot' ? hotRecommendations : filteredBonds\n\n const slicedBonds = selectedBonds\n ?.sort(\n (a, b) =>\n ('discount' in b\n ? b.discount\n : (findHighestTrueBondPrice(TIERS_WEIGHT[LaunchBondTiers.Legend], b?.trueBondPrices)?.bonus ?? 0))! -\n ('discount' in a\n ? a.discount\n : (findHighestTrueBondPrice(TIERS_WEIGHT[LaunchBondTiers.Legend], a?.trueBondPrices)?.bonus ?? 0))!,\n )\n ?.slice(0, 3)\n\n const parsedBondsToRender: SmallCardBond[] | undefined = slicedBonds?.map((bond) => {\n let contractAddress = ''\n if ('contractAddress' in bond) {\n contractAddress = bond.contractAddress as string\n }\n if ('billAddress' in bond) {\n contractAddress = bond.billAddress as string\n }\n\n return {\n payoutTokenName: bond?.showcaseTokenName ?? '',\n contractAddress,\n vestingTerm: bond.vestingTerm ?? 0,\n bonus:\n 'bonus' in bond\n ? bond.bonus\n : (findHighestTrueBondPrice(TIERS_WEIGHT[LaunchBondTiers.Legend], bond?.trueBondPrices)?.bonusWithFee ?? 0),\n chainId: bond.chainId,\n }\n })\n\n useEffect(() => {\n if (account) {\n setActiveOption('For You')\n } else {\n setActiveOption('Hot')\n }\n }, [account])\n\n return (\n <Flex sx={{ mt: '15px', flexDirection: 'column', width: '100%', display: ['none', 'none', 'none', 'flex'] }}>\n <Flex sx={{ width: '100%', justifyContent: 'space-between' }}>\n <Flex>\n <Flex\n sx={{\n width: ['60px', '60px', '60px', 'unset'],\n mr: ['0px', '0px', '0px', '15px'],\n alignItems: 'center',\n color: 'grey',\n fontSize: ['11px'],\n fontWeight: 500,\n }}\n >\n BONDS MARKETS:\n </Flex>\n <RecommendationSelector options={options} activeOption={activeOption} setActiveOption={setActiveOption} />\n </Flex>\n <Flex sx={{ display: ['none', 'none', 'none', 'flex'] }}>\n <img\n width={190}\n height={20}\n alt=\"poweredBy\"\n src=\"/images/bills/powered.png\"\n sx={{\n width: '190px',\n height: '20px',\n cursor: 'pointer',\n }}\n onClick={() => window.open('/apebond-ai', '_blank')}\n />\n </Flex>\n </Flex>\n <Flex\n sx={{\n my: '10px',\n minHeight: '47.45px',\n }}\n >\n {/*{parsedBondsToRender &&*/}\n {/* parsedBondsToRender.length > 0 &&*/}\n {/* parsedBondsToRender.map((bond, index) => {*/}\n {/* return <SmallRecommendationCard recommendation={bond} key={`${bond.payoutTokenName}-${index}`} />*/}\n {/* })}*/}\n </Flex>\n </Flex>\n )\n}\n\nexport default RecommendationCards\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/views/ProjectView/components/RecommendationCards/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport { useTopTags } from '../../../../hooks/useTopTags'\nimport useBondsData from '../../../../state/bonds/useBondsData'\nimport { SmallCardBond } from '../../../Bonds/components/RecommendationCards'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport RecommendationSelector from '../../../../components/MenuSelect/RecommendationSelector'\nimport SmallRecommendationCard from '../../../Bonds/components/RecommendationCards/SmallRecommendationCard'\nimport { TIERS_WEIGHT } from '../../../../state/tiers/useTierPoints'\nimport { LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport useGetBondRecommendations from '../../../../state/recommendations/useGetBondRecommendations'\nimport { useHotBondContracts } from '../../../../state/hotBonds/useHotBonds'\nimport { findHighestTrueBondPrice } from '../../../../utils/bondPriceHelpers'\nimport useEVMAccount from '../../../../hooks/accounts/useEVMAccount'\n\nconst RecommendationCards = () => {\n const topTags = useTopTags()\n const { address: account } = useEVMAccount()\n const options = account ? ['For You', 'Hot', ...topTags] : ['Hot', ...topTags]\n const [activeOption, setActiveOption] = useState(options[0])\n const { data: hotBonds } = useHotBondContracts()\n\n const { data: forYouRecommendations } = useGetBondRecommendations(account, undefined, '3')\n const { data: bonds } = useBondsData()\n const sortedBonds =\n bonds && bonds?.length > 0\n ? [...bonds].sort(\n (a, b) =>\n (findHighestTrueBondPrice(TIERS_WEIGHT[LaunchBondTiers.Legend], b?.trueBondPrices)?.bonus ?? 0) -\n (findHighestTrueBondPrice(TIERS_WEIGHT[LaunchBondTiers.Legend], a?.trueBondPrices)?.bonus ?? 0),\n )\n : undefined\n\n const filteredBonds = sortedBonds?.filter(\n (bond) =>\n bond?.tags?.includes(activeOption) &&\n !bond?.soldOut &&\n (findHighestTrueBondPrice(TIERS_WEIGHT[LaunchBondTiers.Legend], bond?.trueBondPrices)?.bonus ?? 0) < 50,\n )\n\n // This should come from the API\n const hotRecommendations = sortedBonds?.filter((bond) =>\n hotBonds?.includes(bond?.contractAddress?.[bond.chainId]?.toLowerCase() ?? ''),\n )\n\n const selectedBonds =\n activeOption === 'For You' ? forYouRecommendations : activeOption === 'Hot' ? hotRecommendations : filteredBonds\n\n const slicedBonds = selectedBonds\n ?.sort(\n (a, b) =>\n ('discount' in b\n ? b.discount\n : (findHighestTrueBondPrice(TIERS_WEIGHT[LaunchBondTiers.Legend], b?.trueBondPrices)?.bonus ?? 0))! -\n ('discount' in a\n ? a.discount\n : (findHighestTrueBondPrice(TIERS_WEIGHT[LaunchBondTiers.Legend], a?.trueBondPrices)?.bonus ?? 0))!,\n )\n ?.slice(0, 3)\n\n const parsedBondsToRender: SmallCardBond[] | undefined = slicedBonds?.map((bond) => {\n let contractAddress = ''\n if ('contractAddress' in bond) {\n contractAddress = bond.contractAddress as string\n }\n if ('billAddress' in bond) {\n contractAddress = bond.billAddress as string\n }\n\n return {\n payoutTokenName: bond?.showcaseTokenName ?? '',\n contractAddress,\n vestingTerm: bond.vestingTerm ?? 0,\n bonus:\n 'bonus' in bond\n ? bond.bonus\n : (findHighestTrueBondPrice(TIERS_WEIGHT[LaunchBondTiers.Legend], bond?.trueBondPrices)?.bonusWithFee ?? 0),\n chainId: bond.chainId,\n }\n })\n\n useEffect(() => {\n if (account) {\n setActiveOption('For You')\n } else {\n setActiveOption('Hot')\n }\n }, [account])\n\n return (\n <Flex sx={{ mt: '15px', flexDirection: 'column', width: '100%', display: ['none', 'none', 'none', 'flex'] }}>\n <Flex sx={{ width: '100%', justifyContent: 'space-between' }}>\n <Flex>\n <Flex\n sx={{\n width: ['60px', '60px', '60px', 'unset'],\n mr: ['0px', '0px', '0px', '15px'],\n alignItems: 'center',\n color: 'grey',\n fontSize: ['11px'],\n fontWeight: 500,\n }}\n >\n BONDS MARKETS:\n </Flex>\n <RecommendationSelector options={options} activeOption={activeOption} setActiveOption={setActiveOption} />\n </Flex>\n <Flex sx={{ display: ['none', 'none', 'none', 'flex'] }}>\n <img\n width={190}\n height={20}\n alt=\"poweredBy\"\n src=\"/images/bills/powered.png\"\n sx={{\n width: '190px',\n height: '20px',\n cursor: 'pointer',\n }}\n onClick={() => window.open('/apebond-ai', '_blank')}\n />\n </Flex>\n </Flex>\n <Flex\n sx={{\n my: '10px',\n minHeight: '47.45px',\n }}\n >\n {parsedBondsToRender &&\n parsedBondsToRender.length > 0 &&\n parsedBondsToRender.map((bond, index) => {\n return <SmallRecommendationCard recommendation={bond} key={`${bond.payoutTokenName}-${index}`} />\n })}\n </Flex>\n </Flex>\n )\n}\n\nexport default RecommendationCards\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -19,8 +19,9 @@ const SoldOutBuyBondPlaceholder = ({ bond }) => {
19
19
  const SDKConfig = useSDKConfig();
20
20
  // Hooks
21
21
  const { address: account } = useEVMAccount();
22
- const { data: userEscrowWeight } = useTierPoints();
23
- const userTier = getUserTier(userEscrowWeight ?? '0');
22
+ const { data: tierState } = useTierPoints();
23
+ const { promotionalPoints } = tierState || {};
24
+ const userTier = getUserTier(promotionalPoints ?? '0');
24
25
  // State
25
26
  const bondData = bond;
26
27
  const minTier = bondData?.minTier !== undefined ? bondData.minTier : null;
@@ -62,7 +63,7 @@ const SoldOutBuyBondPlaceholder = ({ bond }) => {
62
63
  justifyContent: 'center',
63
64
  }, children: "SOLD OUT" })] }), jsx(BondModalHeader, { bondData: bondData,
64
65
  // onDismiss={onDismiss}
65
- showProjectInfoButton: SDKConfig?.referenceId === 'apebond' }), jsx(ProjectDescription, { description: bondData.shortDescription }), jsx(BondCards, { bondData: { ...bondData, bonusWithFee: -1 } }), jsx(Estimations, { depositAmount: '0',
66
+ showProjectInfoButton: SDKConfig?.referenceId === 'apebond' }), jsx(ProjectDescription, { description: bondData.shortDescription }), jsx(BondCards, { bondData: { ...bondData, bonusWithFee: -1 } }), jsx(Estimations, { depositAmount: '0', inputValue: '0', inputTokenPrice: 0,
66
67
  /*@ts-ignore*/
67
68
  bondData: bondData, youSpendString: '0', isZap: isZap, fetchingZapQuote: false, zapError: false }), jsx(TokenSelectorPanel, { typedValue: inputValue, setTypedValue: setInputValue, selectedToken: inputToken, handleValueBtn: () => null, handleCurrencySelect: () => null, bondChainId: bondData?.chainId, enableZap: zapSupported.includes(bondData?.chainId), bondPrincipalToken: bondData?.lpToken, tokenBalance: inputCurrencyBalance ?? undefined, selectedTokenPrice: 0, inputDisabled: true }), jsxs(Flex, { className: "modaltable-container button-container", children: [account && (minTier === null || (userTier !== null && userTier >= minTier)) && (jsx(Flex, { className: "button-container get", children: jsxs(Button, { className: "action-button", variant: "secondary", fullWidth: true, disabled: true, children: ["Get ", getSymbol(bondData?.lpToken)] }) })), jsx(Flex, { className: "button-container buy", children: jsx(Button, { className: "action-button", fullWidth: true, disabled: true, children: "Buy" }) })] })] }) })) : (jsx(Fragment, {}));
68
69
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SoldOutBuyBondPlaceholder.js","sources":["../../../src/views/SingleBond/SoldOutBuyBondPlaceholder.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport Button from '../../components/uikit-sdk/Button/Button'\nimport Flex from '../../components/uikit-sdk/Flex'\nimport { BillsConfig } from '@ape.swap/apeswap-lists'\nimport TokenSelectorPanel from '../../components/TokenSelectorPanel'\nimport useCurrencyBalance from '../../state/balance/useCurrencyBalance'\nimport useTokenFromZapList from '../../hooks/useTokenFromZapList'\nimport { useSDKConfig } from '../../state/useSDKConfig'\nimport { zapSupported, ZapSupportedChainId } from '../../config/constants/variables'\nimport { getSymbol } from '../../utils/getNativeTicker'\nimport useGetUserEscrowWeight, { getUserTier } from '../../state/tiers/useTierPoints'\nimport BondModalHeader from '../BuyBond/components/BondModalHeader'\nimport { BondsData } from '../../types/bonds'\nimport ProjectDescription from '../BuyBond/components/ProjectDescription'\nimport BondCards from '../BuyBond/components/BondCards/BondCards'\nimport Estimations from '../BuyBond/components/Estimations'\nimport useEVMAccount from '../../hooks/accounts/useEVMAccount'\n\nexport interface SoldOutProps {\n onDismiss?: () => void\n bond: BillsConfig\n}\n\nconst SoldOutBuyBondPlaceholder: React.FC<SoldOutProps> = ({ bond }) => {\n const SDKConfig = useSDKConfig()\n // Hooks\n const { address: account } = useEVMAccount()\n const { data: userEscrowWeight } = useGetUserEscrowWeight()\n const userTier = getUserTier(userEscrowWeight ?? '0')\n\n // State\n const bondData = bond\n const minTier = bondData?.minTier !== undefined ? bondData.minTier : null\n const [inputValue, setInputValue] = useState('')\n const [inputTokenString] = useState(bondData?.lpToken?.address?.[bondData.chainId])\n\n // Data\n const inputToken = useTokenFromZapList(inputTokenString, bondData?.chainId, bondData?.lpToken)\n const isZap = inputTokenString?.toLowerCase() !== bondData?.lpToken?.address?.[bondData?.chainId]?.toLowerCase()\n\n const { data: inputCurrencyBalance } = useCurrencyBalance(\n inputToken ?? null,\n account ?? null,\n bondData?.chainId ?? null,\n )\n\n return bondData ? (\n <Flex className=\"modal-content\">\n <Flex className=\"modaltable-container\">\n <Flex\n sx={{\n position: 'absolute',\n width: 'calc(100% + 40px)',\n height: 'calc(100% + 20px)',\n top: '0',\n left: '-20px',\n overflow: 'hidden',\n borderRadius: 'normal',\n }}\n >\n <Flex\n sx={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n zIndex: 999,\n backgroundColor: 'rgba(255,255,255,0.1)',\n backdropFilter: 'blur(1px)',\n WebkitBackdropFilter: 'blur(1px)', // Ensure compatibility with Safari\n }}\n ></Flex>\n <Flex\n sx={{\n position: 'absolute',\n top: '50px',\n left: '-50px',\n backgroundColor: 'error',\n color: 'white',\n padding: '5px 20px',\n fontSize: '14px',\n fontWeight: 'bold',\n transform: 'rotate(-45deg)',\n zIndex: 1000, // Ensure it appears above other elements\n boxShadow: '0 2px 4px rgba(0,0,0,0.2)',\n width: '220px',\n justifyContent: 'center',\n }}\n >\n SOLD OUT\n </Flex>\n </Flex>\n <BondModalHeader\n bondData={bondData as unknown as BondsData}\n // onDismiss={onDismiss}\n showProjectInfoButton={SDKConfig?.referenceId === 'apebond'}\n />\n <ProjectDescription description={bondData.shortDescription} />\n {/*@ts-ignore*/}\n <BondCards bondData={{ ...bondData, bonusWithFee: -1 }} />\n <Estimations\n depositAmount={'0'}\n /*@ts-ignore*/\n bondData={bondData}\n youSpendString={'0'}\n isZap={isZap}\n fetchingZapQuote={false}\n zapError={false}\n />\n <TokenSelectorPanel\n typedValue={inputValue}\n setTypedValue={setInputValue}\n selectedToken={inputToken}\n handleValueBtn={() => null}\n handleCurrencySelect={() => null}\n bondChainId={bondData?.chainId}\n enableZap={zapSupported.includes(bondData?.chainId as ZapSupportedChainId)}\n bondPrincipalToken={bondData?.lpToken}\n tokenBalance={inputCurrencyBalance ?? undefined}\n selectedTokenPrice={0}\n inputDisabled={true}\n />\n <Flex className=\"modaltable-container button-container\">\n {account && (minTier === null || (userTier !== null && userTier >= minTier)) && (\n <Flex className=\"button-container get\">\n <Button className=\"action-button\" variant=\"secondary\" fullWidth disabled>\n Get {getSymbol(bondData?.lpToken)}\n </Button>\n </Flex>\n )}\n <Flex className=\"button-container buy\">\n <Button className=\"action-button\" fullWidth disabled>\n Buy\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n ) : (\n <></>\n )\n}\nexport default SoldOutBuyBondPlaceholder\n"],"names":["useGetUserEscrowWeight","_jsx","_jsxs","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"SoldOutBuyBondPlaceholder.js","sources":["../../../src/views/SingleBond/SoldOutBuyBondPlaceholder.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport Button from '../../components/uikit-sdk/Button/Button'\nimport Flex from '../../components/uikit-sdk/Flex'\nimport { BillsConfig } from '@ape.swap/apeswap-lists'\nimport TokenSelectorPanel from '../../components/TokenSelectorPanel'\nimport useCurrencyBalance from '../../state/balance/useCurrencyBalance'\nimport useTokenFromZapList from '../../hooks/useTokenFromZapList'\nimport { useSDKConfig } from '../../state/useSDKConfig'\nimport { zapSupported, ZapSupportedChainId } from '../../config/constants/variables'\nimport { getSymbol } from '../../utils/getNativeTicker'\nimport useTierPoints, { getUserTier } from '../../state/tiers/useTierPoints'\nimport BondModalHeader from '../BuyBond/components/BondModalHeader'\nimport { BondsData } from '../../types/bonds'\nimport ProjectDescription from '../BuyBond/components/ProjectDescription'\nimport BondCards from '../BuyBond/components/BondCards/BondCards'\nimport Estimations from '../BuyBond/components/Estimations'\nimport useEVMAccount from '../../hooks/accounts/useEVMAccount'\n\nexport interface SoldOutProps {\n onDismiss?: () => void\n bond: BillsConfig\n}\n\nconst SoldOutBuyBondPlaceholder: React.FC<SoldOutProps> = ({ bond }) => {\n const SDKConfig = useSDKConfig()\n // Hooks\n const { address: account } = useEVMAccount()\n const { data: tierState } = useTierPoints()\n const { promotionalPoints } = tierState || {}\n const userTier = getUserTier(promotionalPoints ?? '0')\n\n // State\n const bondData = bond\n const minTier = bondData?.minTier !== undefined ? bondData.minTier : null\n const [inputValue, setInputValue] = useState('')\n const [inputTokenString] = useState(bondData?.lpToken?.address?.[bondData.chainId])\n\n // Data\n const inputToken = useTokenFromZapList(inputTokenString, bondData?.chainId, bondData?.lpToken)\n const isZap = inputTokenString?.toLowerCase() !== bondData?.lpToken?.address?.[bondData?.chainId]?.toLowerCase()\n\n const { data: inputCurrencyBalance } = useCurrencyBalance(\n inputToken ?? null,\n account ?? null,\n bondData?.chainId ?? null,\n )\n\n return bondData ? (\n <Flex className=\"modal-content\">\n <Flex className=\"modaltable-container\">\n <Flex\n sx={{\n position: 'absolute',\n width: 'calc(100% + 40px)',\n height: 'calc(100% + 20px)',\n top: '0',\n left: '-20px',\n overflow: 'hidden',\n borderRadius: 'normal',\n }}\n >\n <Flex\n sx={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n zIndex: 999,\n backgroundColor: 'rgba(255,255,255,0.1)',\n backdropFilter: 'blur(1px)',\n WebkitBackdropFilter: 'blur(1px)', // Ensure compatibility with Safari\n }}\n ></Flex>\n <Flex\n sx={{\n position: 'absolute',\n top: '50px',\n left: '-50px',\n backgroundColor: 'error',\n color: 'white',\n padding: '5px 20px',\n fontSize: '14px',\n fontWeight: 'bold',\n transform: 'rotate(-45deg)',\n zIndex: 1000, // Ensure it appears above other elements\n boxShadow: '0 2px 4px rgba(0,0,0,0.2)',\n width: '220px',\n justifyContent: 'center',\n }}\n >\n SOLD OUT\n </Flex>\n </Flex>\n <BondModalHeader\n bondData={bondData as unknown as BondsData}\n // onDismiss={onDismiss}\n showProjectInfoButton={SDKConfig?.referenceId === 'apebond'}\n />\n <ProjectDescription description={bondData.shortDescription} />\n {/*@ts-ignore*/}\n <BondCards bondData={{ ...bondData, bonusWithFee: -1 }} />\n <Estimations\n depositAmount={'0'}\n inputValue={'0'}\n inputTokenPrice={0}\n /*@ts-ignore*/\n bondData={bondData}\n youSpendString={'0'}\n isZap={isZap}\n fetchingZapQuote={false}\n zapError={false}\n />\n <TokenSelectorPanel\n typedValue={inputValue}\n setTypedValue={setInputValue}\n selectedToken={inputToken}\n handleValueBtn={() => null}\n handleCurrencySelect={() => null}\n bondChainId={bondData?.chainId}\n enableZap={zapSupported.includes(bondData?.chainId as ZapSupportedChainId)}\n bondPrincipalToken={bondData?.lpToken}\n tokenBalance={inputCurrencyBalance ?? undefined}\n selectedTokenPrice={0}\n inputDisabled={true}\n />\n <Flex className=\"modaltable-container button-container\">\n {account && (minTier === null || (userTier !== null && userTier >= minTier)) && (\n <Flex className=\"button-container get\">\n <Button className=\"action-button\" variant=\"secondary\" fullWidth disabled>\n Get {getSymbol(bondData?.lpToken)}\n </Button>\n </Flex>\n )}\n <Flex className=\"button-container buy\">\n <Button className=\"action-button\" fullWidth disabled>\n Buy\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n ) : (\n <></>\n )\n}\nexport default SoldOutBuyBondPlaceholder\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
@@ -27,7 +27,8 @@ const stepDelay = 1000;
27
27
  const TransactionModal = ({ onDismiss, txChain, approvalState, approveCallback, loadingTx, txCallback, bondData, inputToken, inputValue, depositAmount, buyTxHash, rateChanged, }) => {
28
28
  // Hooks
29
29
  const { chain } = useEVMAccount();
30
- const { data: userPoints } = useTierPoints();
30
+ const { data: tierPointsState } = useTierPoints();
31
+ const { promotionalPoints } = tierPointsState || {};
31
32
  const inputTokenPrice = useCurrencyPrice(inputToken ?? null, txChain);
32
33
  const { switchChainAsync } = useSwitchChain();
33
34
  const SDKConfig = useSDKConfig();
@@ -43,7 +44,7 @@ const TransactionModal = ({ onDismiss, txChain, approvalState, approveCallback,
43
44
  const [loadingSwitchChain, setLoadingSwitchChain] = useState(false);
44
45
  const [approveLoading, setApproveLoading] = useState(false);
45
46
  // Values for regular bonds
46
- const estimatedOutputAmount = getPayoutAmount(bondData, depositAmount, userPoints ?? '0');
47
+ const estimatedOutputAmount = getPayoutAmount(bondData, depositAmount, promotionalPoints ?? '0');
47
48
  const estimatedOutputUSD = estimatedOutputAmount * parseFloat(bondData?.payoutTokenPrice ?? '0');
48
49
  const preTGEEstimatedOutput = parseFloat(inputValue) / (bondData?.initPrice ?? 0);
49
50
  const preTGEEstimatedOutputUSD = preTGEEstimatedOutput * (bondData?.tgePrice ?? 0);
@@ -127,7 +128,7 @@ const TransactionModal = ({ onDismiss, txChain, approvalState, approveCallback,
127
128
  const splited = typeof inputToken !== 'string' ? inputToken?.symbol?.split('-') : undefined;
128
129
  const trueBondPrice = findHighestTrueBondPrice(
129
130
  // @ts-ignore
130
- TIERS_WEIGHT[getUserTier(userPoints)] ?? '0', bondData?.trueBondPrices);
131
+ TIERS_WEIGHT[getUserTier(promotionalPoints)] ?? '0', bondData?.trueBondPrices);
131
132
  return (jsxs(Modal, { children: [jsx(ModalHeader, { onDismiss: onDismiss, hideDivider: true }), jsxs(Flex, { sx: { flexDirection: 'column', width: '100%' }, children: [jsxs(Flex, { sx: { width: '100%', alignItems: 'center', p: '10px' }, children: [showSwitchChainFlow && (jsx(StepBubble, { number: 1, title: 'Switch Chain', currentStep: currentStep, loading: loadingSwitchChain })), jsx(StepBubble, { number: showSwitchChainFlow ? 2 : 1, title: 'Approve', currentStep: currentStep, loading: approveLoading || approvalState === ApprovalState.PENDING }), jsx(StepBubble, { number: showSwitchChainFlow ? 3 : 2, title: 'Buy', currentStep: currentStep, loading: loadingTx || verifyingTx, hideBar: true })] }), jsx(Flex, { sx: { width: '100%', mt: '40px', justifyContent: 'center' }, children: jsx(LoadingSpinner, { isLoading: loadingSwitchChain ||
132
133
  approveLoading ||
133
134
  loadingTx ||
@@ -165,7 +166,7 @@ const TransactionModal = ({ onDismiss, txChain, approvalState, approveCallback,
165
166
  borderRadius: 'normal',
166
167
  color: 'textDisabledButton',
167
168
  justifyContent: 'center',
168
- }, children: [bondData.earnToken.symbol, " (", getVestingTermsString(bondData), ")"] }), jsxs(Flex, { sx: { width: '100%', background: 'white3', p: '10px', borderRadius: 'normal', mt: '10px' }, children: [jsx(TokenImage, { symbol: bondData.earnToken.symbol, size: 40, chain: txChain }), jsxs(Flex, { sx: { width: '100%', justifyContent: 'space-between', alignItems: 'center' }, children: [jsxs(Flex, { sx: { flexDirection: 'column', fontSize: '12px', ml: '10px' }, children: [jsxs(Flex, { sx: { color: 'textDisabledButton', fontWeight: 400, textDecoration: 'line-through' }, children: ["$", earnTokenPrice(bondData)] }), jsxs(Flex, { sx: { color: 'green', fontWeight: 600 }, children: ["$", discountEarnTokenPriceForUser(bondData, SDKConfig.useTiers, getUserTier(userPoints) ?? undefined)] })] }), jsxs(Flex, { sx: {
169
+ }, children: [bondData.earnToken.symbol, " (", getVestingTermsString(bondData), ")"] }), jsxs(Flex, { sx: { width: '100%', background: 'white3', p: '10px', borderRadius: 'normal', mt: '10px' }, children: [jsx(TokenImage, { symbol: bondData.earnToken.symbol, size: 40, chain: txChain }), jsxs(Flex, { sx: { width: '100%', justifyContent: 'space-between', alignItems: 'center' }, children: [jsxs(Flex, { sx: { flexDirection: 'column', fontSize: '12px', ml: '10px' }, children: [jsxs(Flex, { sx: { color: 'textDisabledButton', fontWeight: 400, textDecoration: 'line-through' }, children: ["$", earnTokenPrice(bondData)] }), jsxs(Flex, { sx: { color: 'green', fontWeight: 600 }, children: ["$", discountEarnTokenPriceForUser(bondData, SDKConfig.useTiers, getUserTier(promotionalPoints) ?? undefined)] })] }), jsxs(Flex, { sx: {
169
170
  p: '5px',
170
171
  borderRadius: 'normal',
171
172
  border: '1px solid var(--theme-ui-colors-success)',