@ape.swap/bonds-sdk 6.2.10 → 6.2.11

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/README.md CHANGED
@@ -21,13 +21,13 @@ To install the package via npm or yarn, run the following command:
21
21
  npm:
22
22
 
23
23
  ```bash
24
- npm install "@ape.swap/bonds-sdk@solana" @bigmi/react@^0.6.5 @lifi/widget@^3.40.6 @mysten/dapp-kit@^0.19.11 @solana/kit@2.3.0 @solana/spl-token@^0.4.14 @solana/wallet-adapter-react@^0.15.39 @solana/wallet-adapter-react-ui@^0.9.39 @solana/web3.js@^1.98.4 @tanstack/react-query@^5.90.2 wagmi@^2.14.16 swiper
24
+ npm install "@ape.swap/bonds-sdk@solana" @bigmi/react@^0.6.5 @lifi/widget@^3.40.6 @mysten/dapp-kit@^0.19.11 @solana/kit@2.3.0 @solana/spl-token@^0.4.14 @solana/wallet-adapter-react@^0.15.39 @solana/wallet-adapter-react-ui@^0.9.39 @solana/web3.js@^1.98.4 @tanstack/react-query@^5.90.2 wagmi@^2.14.16
25
25
  ```
26
26
 
27
27
  yarn:
28
28
 
29
29
  ```bash
30
- yarn add "@ape.swap/bonds-sdk@solana" @bigmi/react@^0.6.5 @lifi/widget@^3.40.6 @mysten/dapp-kit@^0.19.11 @solana/kit@2.3.0 @solana/spl-token@^0.4.14 @solana/wallet-adapter-react@^0.15.39 @solana/wallet-adapter-react-ui@^0.9.39 @solana/web3.js@^1.98.4 @tanstack/react-query@^5.90.2 wagmi@^2.14.16 swiper
30
+ yarn add "@ape.swap/bonds-sdk@solana" @bigmi/react@^0.6.5 @lifi/widget@^3.40.6 @mysten/dapp-kit@^0.19.11 @solana/kit@2.3.0 @solana/spl-token@^0.4.14 @solana/wallet-adapter-react@^0.15.39 @solana/wallet-adapter-react-ui@^0.9.39 @solana/web3.js@^1.98.4 @tanstack/react-query@^5.90.2 wagmi@^2.14.16
31
31
  ```
32
32
 
33
33
  ---
@@ -64,7 +64,6 @@ import React from 'react'
64
64
  import FullBondsView from '@ape.swap/bonds-sdk/views/FullBondsView'
65
65
  import { ChainId } from '@ape.swap/apeswap-lists'
66
66
  import '@ape.swap/bonds-sdk/styles.css'
67
- import 'swiper/css' // only if useHotBonds: true
68
67
 
69
68
  const MyBondsComponent = () => {
70
69
  return (
@@ -184,7 +183,6 @@ The package comes with prebuilt styles that you must import in your project. Mak
184
183
 
185
184
  ```javascript
186
185
  import '@ape.swap/bonds-sdk/dist/styles.css'
187
- import 'swiper/css' // only if useHotBonds is true
188
186
  ```
189
187
 
190
188
  These styles ensure that the components render correctly and include all necessary design details. You can customize or override styles using your own branding.
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ interface CarouselProps {
3
+ slides: React.ReactNode[];
4
+ showDots?: boolean;
5
+ autoPlay?: number;
6
+ }
7
+ declare const Carousel: ({ slides, showDots, autoPlay }: CarouselProps) => React.JSX.Element;
8
+ export default Carousel;
@@ -0,0 +1,151 @@
1
+ import { jsx, Fragment, jsxs } from 'theme-ui/jsx-runtime';
2
+ import { useRef, useState, useEffect } from 'react';
3
+ import { Flex as Flex$1 } from 'theme-ui';
4
+ import { styles } from './styles.js';
5
+ import Flex from '../uikit-sdk/Flex/index.js';
6
+ import SwiperDots from '../uikit-sdk/SwiperDots/index.js';
7
+
8
+ // Minimum movement (px) before a mouse-down is treated as a drag rather than a click
9
+ const DRAG_TOLERANCE = 5;
10
+ // Minimum net drag distance (px) before a mouse release advances to the next/previous slide
11
+ const DRAG_THRESHOLD = 40;
12
+ // How much of an out-of-bounds drag actually shows up on screen, and the cap for it (px) —
13
+ // gives the "rubber band" resistance that hints the carousel is draggable at its edges.
14
+ const OVERSCROLL_RESISTANCE = 0.35;
15
+ const MAX_OVERSCROLL = 70;
16
+ const Carousel = ({ slides, showDots = true, autoPlay }) => {
17
+ const viewportRef = useRef(null);
18
+ const [activeSlide, setActiveSlide] = useState(0);
19
+ const [isDragging, setIsDragging] = useState(false);
20
+ const [isHovered, setIsHovered] = useState(false);
21
+ const [overscroll, setOverscroll] = useState(0);
22
+ const isMouseDragging = useRef(false);
23
+ const activePointerId = useRef(null);
24
+ const dragStartX = useRef(0);
25
+ const dragStartScrollLeft = useRef(0);
26
+ const slideTo = (index) => {
27
+ const viewport = viewportRef.current;
28
+ if (!viewport)
29
+ return;
30
+ const clamped = Math.min(Math.max(index, 0), slides.length - 1);
31
+ viewport.scrollTo({ left: clamped * viewport.clientWidth, behavior: 'smooth' });
32
+ };
33
+ // Native scrolling (touch swipe, trackpad, or the mouse-drag below) is the only source of
34
+ // truth for position; this just keeps the dots in sync with wherever the viewport lands.
35
+ const handleScroll = () => {
36
+ const viewport = viewportRef.current;
37
+ if (!viewport || viewport.clientWidth === 0)
38
+ return;
39
+ const index = Math.round(viewport.scrollLeft / viewport.clientWidth);
40
+ setActiveSlide((current) => (current === index ? current : index));
41
+ };
42
+ // Pauses while the user is dragging or hovering, and restarts its countdown from whatever
43
+ // slide is currently active — so a manual dot click or drag gets a full autoPlay window too.
44
+ useEffect(() => {
45
+ if (!autoPlay || autoPlay <= 0 || slides.length <= 1 || isDragging || isHovered)
46
+ return;
47
+ const timeoutId = setTimeout(() => {
48
+ slideTo((activeSlide + 1) % slides.length);
49
+ }, autoPlay * 1000);
50
+ return () => clearTimeout(timeoutId);
51
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52
+ }, [autoPlay, isDragging, isHovered, activeSlide, slides.length]);
53
+ // Desktop click-and-drag only. Touch is deliberately left to the browser's native scroll-snap
54
+ // (see the `viewport` styles) rather than driven from JS: iOS Safari/Chrome (both WebKit) have
55
+ // long-standing bugs where a touch drag captured via setPointerCapture can lose its terminating
56
+ // pointerup/pointercancel mid-gesture, leaving the carousel stuck partway through a transition.
57
+ // Native scrolling never has that failure mode, and mouse pointers aren't affected by the bug.
58
+ //
59
+ // Pointer capture is only claimed once real dragging is detected (see handlePointerMove), so a
60
+ // plain click on a link/button inside a slide never gets hijacked into a drag.
61
+ const handlePointerDown = (event) => {
62
+ if (slides.length <= 1 || event.pointerType !== 'mouse' || event.button !== 0)
63
+ return;
64
+ activePointerId.current = event.pointerId;
65
+ dragStartX.current = event.clientX;
66
+ };
67
+ const handlePointerMove = (event) => {
68
+ if (activePointerId.current !== event.pointerId)
69
+ return;
70
+ const viewport = viewportRef.current;
71
+ if (!viewport)
72
+ return;
73
+ const delta = event.clientX - dragStartX.current;
74
+ if (!isMouseDragging.current) {
75
+ if (Math.abs(delta) < DRAG_TOLERANCE)
76
+ return;
77
+ isMouseDragging.current = true;
78
+ dragStartScrollLeft.current = viewport.scrollLeft;
79
+ viewport.setPointerCapture(event.pointerId);
80
+ setIsDragging(true);
81
+ }
82
+ // scrollLeft can't natively go out of bounds, so the excess past either edge is tracked
83
+ // separately and rendered as a damped transform — the "rubber band" that shows the first/last
84
+ // slide can still be dragged, then springs back once released (see endMouseDrag).
85
+ const maxScrollLeft = viewport.scrollWidth - viewport.clientWidth;
86
+ const rawTarget = dragStartScrollLeft.current - delta;
87
+ let clampedScrollLeft = rawTarget;
88
+ let rawOverscroll = 0;
89
+ if (rawTarget < 0) {
90
+ rawOverscroll = rawTarget;
91
+ clampedScrollLeft = 0;
92
+ }
93
+ else if (rawTarget > maxScrollLeft) {
94
+ rawOverscroll = rawTarget - maxScrollLeft;
95
+ clampedScrollLeft = maxScrollLeft;
96
+ }
97
+ viewport.scrollLeft = clampedScrollLeft;
98
+ // Negated: scrollLeft and visual position move opposite each other (lower scrollLeft
99
+ // shifts content right), so the transform has to flip sign to keep following the drag.
100
+ const visualOverscroll = -rawOverscroll * OVERSCROLL_RESISTANCE;
101
+ setOverscroll(Math.max(-MAX_OVERSCROLL, Math.min(MAX_OVERSCROLL, visualOverscroll)));
102
+ };
103
+ const endMouseDrag = (event) => {
104
+ if (activePointerId.current !== event.pointerId)
105
+ return;
106
+ activePointerId.current = null;
107
+ const viewport = viewportRef.current;
108
+ if (viewport?.hasPointerCapture(event.pointerId)) {
109
+ viewport.releasePointerCapture(event.pointerId);
110
+ }
111
+ if (!isMouseDragging.current)
112
+ return;
113
+ isMouseDragging.current = false;
114
+ setIsDragging(false);
115
+ setOverscroll(0);
116
+ if (!viewport)
117
+ return;
118
+ // A fixed pixel threshold (rather than "past the halfway point") so a normal quick
119
+ // swipe advances the slide, matching the feel of the previous transform-based drag.
120
+ const netDelta = viewport.scrollLeft - dragStartScrollLeft.current;
121
+ const startIndex = Math.round(dragStartScrollLeft.current / viewport.clientWidth);
122
+ if (netDelta > DRAG_THRESHOLD) {
123
+ slideTo(startIndex + 1);
124
+ }
125
+ else if (netDelta < -DRAG_THRESHOLD) {
126
+ slideTo(startIndex - 1);
127
+ }
128
+ else {
129
+ slideTo(startIndex);
130
+ }
131
+ };
132
+ if (slides.length <= 1) {
133
+ return jsx(Fragment, { children: slides[0] });
134
+ }
135
+ return (jsxs(Flex, { sx: styles.container, onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: [jsx(Flex$1, { ref: viewportRef, sx: {
136
+ ...styles.viewport,
137
+ cursor: isDragging ? 'grabbing' : 'grab',
138
+ // Mandatory scroll-snap otherwise fights a programmatic scrollLeft mutation
139
+ // (see handlePointerMove) and yanks it straight back to the last snap point.
140
+ scrollSnapType: isDragging ? 'none' : 'x mandatory',
141
+ transform: overscroll ? `translateX(${overscroll}px)` : undefined,
142
+ transition: isDragging ? 'none' : 'transform 0.3s ease',
143
+ }, onScroll: handleScroll, onPointerDown: handlePointerDown, onPointerMove: handlePointerMove, onPointerUp: endMouseDrag, onPointerCancel: endMouseDrag, onPointerLeave: endMouseDrag, onDragStart: (event) => event.preventDefault(), children: slides.map((slide, index) => {
144
+ return (jsx(Flex, { sx: styles.slide, children: slide }, index));
145
+ }) }), showDots && (jsx(Flex, { sx: styles.dotsContainer, children: slides.map((_, i) => {
146
+ return jsx(SwiperDots, { isActive: i === activeSlide, onClick: () => slideTo(i) }, i);
147
+ }) }))] }));
148
+ };
149
+
150
+ export { Carousel as default };
151
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Carousel/index.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react'\nimport { Flex as ThemeUIFlex } from 'theme-ui'\nimport { styles } from './styles'\nimport Flex from '../uikit-sdk/Flex'\nimport SwiperDots from '../uikit-sdk/SwiperDots'\n\n// Minimum movement (px) before a mouse-down is treated as a drag rather than a click\nconst DRAG_TOLERANCE = 5\n// Minimum net drag distance (px) before a mouse release advances to the next/previous slide\nconst DRAG_THRESHOLD = 40\n// How much of an out-of-bounds drag actually shows up on screen, and the cap for it (px) —\n// gives the \"rubber band\" resistance that hints the carousel is draggable at its edges.\nconst OVERSCROLL_RESISTANCE = 0.35\nconst MAX_OVERSCROLL = 70\n\ninterface CarouselProps {\n slides: React.ReactNode[]\n showDots?: boolean\n // Seconds between automatic slide advances. Omit/0 to disable.\n autoPlay?: number\n}\n\nconst Carousel = ({ slides, showDots = true, autoPlay }: CarouselProps) => {\n const viewportRef = useRef<HTMLDivElement>(null)\n const [activeSlide, setActiveSlide] = useState(0)\n const [isDragging, setIsDragging] = useState(false)\n const [isHovered, setIsHovered] = useState(false)\n const [overscroll, setOverscroll] = useState(0)\n\n const isMouseDragging = useRef(false)\n const activePointerId = useRef<number | null>(null)\n const dragStartX = useRef(0)\n const dragStartScrollLeft = useRef(0)\n\n const slideTo = (index: number) => {\n const viewport = viewportRef.current\n if (!viewport) return\n const clamped = Math.min(Math.max(index, 0), slides.length - 1)\n viewport.scrollTo({ left: clamped * viewport.clientWidth, behavior: 'smooth' })\n }\n\n // Native scrolling (touch swipe, trackpad, or the mouse-drag below) is the only source of\n // truth for position; this just keeps the dots in sync with wherever the viewport lands.\n const handleScroll = () => {\n const viewport = viewportRef.current\n if (!viewport || viewport.clientWidth === 0) return\n const index = Math.round(viewport.scrollLeft / viewport.clientWidth)\n setActiveSlide((current) => (current === index ? current : index))\n }\n\n // Pauses while the user is dragging or hovering, and restarts its countdown from whatever\n // slide is currently active — so a manual dot click or drag gets a full autoPlay window too.\n useEffect(() => {\n if (!autoPlay || autoPlay <= 0 || slides.length <= 1 || isDragging || isHovered) return\n const timeoutId = setTimeout(() => {\n slideTo((activeSlide + 1) % slides.length)\n }, autoPlay * 1000)\n return () => clearTimeout(timeoutId)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [autoPlay, isDragging, isHovered, activeSlide, slides.length])\n\n // Desktop click-and-drag only. Touch is deliberately left to the browser's native scroll-snap\n // (see the `viewport` styles) rather than driven from JS: iOS Safari/Chrome (both WebKit) have\n // long-standing bugs where a touch drag captured via setPointerCapture can lose its terminating\n // pointerup/pointercancel mid-gesture, leaving the carousel stuck partway through a transition.\n // Native scrolling never has that failure mode, and mouse pointers aren't affected by the bug.\n //\n // Pointer capture is only claimed once real dragging is detected (see handlePointerMove), so a\n // plain click on a link/button inside a slide never gets hijacked into a drag.\n const handlePointerDown = (event: React.PointerEvent<HTMLDivElement>) => {\n if (slides.length <= 1 || event.pointerType !== 'mouse' || event.button !== 0) return\n activePointerId.current = event.pointerId\n dragStartX.current = event.clientX\n }\n\n const handlePointerMove = (event: React.PointerEvent<HTMLDivElement>) => {\n if (activePointerId.current !== event.pointerId) return\n const viewport = viewportRef.current\n if (!viewport) return\n const delta = event.clientX - dragStartX.current\n if (!isMouseDragging.current) {\n if (Math.abs(delta) < DRAG_TOLERANCE) return\n isMouseDragging.current = true\n dragStartScrollLeft.current = viewport.scrollLeft\n viewport.setPointerCapture(event.pointerId)\n setIsDragging(true)\n }\n // scrollLeft can't natively go out of bounds, so the excess past either edge is tracked\n // separately and rendered as a damped transform — the \"rubber band\" that shows the first/last\n // slide can still be dragged, then springs back once released (see endMouseDrag).\n const maxScrollLeft = viewport.scrollWidth - viewport.clientWidth\n const rawTarget = dragStartScrollLeft.current - delta\n let clampedScrollLeft = rawTarget\n let rawOverscroll = 0\n if (rawTarget < 0) {\n rawOverscroll = rawTarget\n clampedScrollLeft = 0\n } else if (rawTarget > maxScrollLeft) {\n rawOverscroll = rawTarget - maxScrollLeft\n clampedScrollLeft = maxScrollLeft\n }\n viewport.scrollLeft = clampedScrollLeft\n // Negated: scrollLeft and visual position move opposite each other (lower scrollLeft\n // shifts content right), so the transform has to flip sign to keep following the drag.\n const visualOverscroll = -rawOverscroll * OVERSCROLL_RESISTANCE\n setOverscroll(Math.max(-MAX_OVERSCROLL, Math.min(MAX_OVERSCROLL, visualOverscroll)))\n }\n\n const endMouseDrag = (event: React.PointerEvent<HTMLDivElement>) => {\n if (activePointerId.current !== event.pointerId) return\n activePointerId.current = null\n const viewport = viewportRef.current\n if (viewport?.hasPointerCapture(event.pointerId)) {\n viewport.releasePointerCapture(event.pointerId)\n }\n if (!isMouseDragging.current) return\n isMouseDragging.current = false\n setIsDragging(false)\n setOverscroll(0)\n if (!viewport) return\n // A fixed pixel threshold (rather than \"past the halfway point\") so a normal quick\n // swipe advances the slide, matching the feel of the previous transform-based drag.\n const netDelta = viewport.scrollLeft - dragStartScrollLeft.current\n const startIndex = Math.round(dragStartScrollLeft.current / viewport.clientWidth)\n if (netDelta > DRAG_THRESHOLD) {\n slideTo(startIndex + 1)\n } else if (netDelta < -DRAG_THRESHOLD) {\n slideTo(startIndex - 1)\n } else {\n slideTo(startIndex)\n }\n }\n\n if (slides.length <= 1) {\n return <>{slides[0]}</>\n }\n\n return (\n <Flex sx={styles.container} onMouseEnter={() => setIsHovered(true)} onMouseLeave={() => setIsHovered(false)}>\n <ThemeUIFlex\n ref={viewportRef}\n sx={\n {\n ...styles.viewport,\n cursor: isDragging ? 'grabbing' : 'grab',\n // Mandatory scroll-snap otherwise fights a programmatic scrollLeft mutation\n // (see handlePointerMove) and yanks it straight back to the last snap point.\n scrollSnapType: isDragging ? 'none' : 'x mandatory',\n transform: overscroll ? `translateX(${overscroll}px)` : undefined,\n transition: isDragging ? 'none' : 'transform 0.3s ease',\n } as any\n }\n onScroll={handleScroll}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={endMouseDrag}\n onPointerCancel={endMouseDrag}\n onPointerLeave={endMouseDrag}\n onDragStart={(event: React.DragEvent<HTMLDivElement>) => event.preventDefault()}\n >\n {slides.map((slide, index) => {\n return (\n <Flex sx={styles.slide} key={index}>\n {slide}\n </Flex>\n )\n })}\n </ThemeUIFlex>\n {showDots && (\n <Flex sx={styles.dotsContainer}>\n {slides.map((_, i) => {\n return <SwiperDots isActive={i === activeSlide} onClick={() => slideTo(i)} key={i} />\n })}\n </Flex>\n )}\n </Flex>\n )\n}\n\nexport default Carousel\n"],"names":["_jsx","_jsxs","ThemeUIFlex"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ export declare const styles: {
2
+ container: {
3
+ flexDirection: string;
4
+ alignItems: string;
5
+ width: string;
6
+ };
7
+ viewport: {
8
+ width: string;
9
+ overflowX: string;
10
+ overflowY: string;
11
+ scrollSnapType: string;
12
+ WebkitOverflowScrolling: string;
13
+ scrollbarWidth: string;
14
+ msOverflowStyle: string;
15
+ userSelect: string;
16
+ WebkitUserSelect: string;
17
+ WebkitTouchCallout: string;
18
+ '&::-webkit-scrollbar': {
19
+ display: string;
20
+ };
21
+ };
22
+ slide: {
23
+ flex: string;
24
+ width: string;
25
+ scrollSnapAlign: string;
26
+ padding: string;
27
+ height: string;
28
+ justifyContent: string;
29
+ };
30
+ dotsContainer: {
31
+ marginTop: string;
32
+ justifyContent: string;
33
+ alignItems: string;
34
+ };
35
+ };
@@ -0,0 +1,40 @@
1
+ const styles = {
2
+ container: {
3
+ flexDirection: 'column',
4
+ alignItems: 'center',
5
+ width: '100%',
6
+ },
7
+ viewport: {
8
+ width: '100%',
9
+ overflowX: 'auto',
10
+ overflowY: 'hidden',
11
+ scrollSnapType: 'x mandatory',
12
+ WebkitOverflowScrolling: 'touch',
13
+ scrollbarWidth: 'none',
14
+ msOverflowStyle: 'none',
15
+ userSelect: 'none',
16
+ WebkitUserSelect: 'none',
17
+ // Suppress iOS Safari's long-press "Save Image/Share" callout on the slide images/links,
18
+ // which can otherwise pop up mid-swipe and make the carousel look broken on iPhone.
19
+ WebkitTouchCallout: 'none',
20
+ '&::-webkit-scrollbar': {
21
+ display: 'none',
22
+ },
23
+ },
24
+ slide: {
25
+ flex: '0 0 100%',
26
+ width: '100%',
27
+ scrollSnapAlign: 'center',
28
+ padding: '1px',
29
+ height: 'fit-content',
30
+ justifyContent: 'center',
31
+ },
32
+ dotsContainer: {
33
+ marginTop: '20px',
34
+ justifyContent: 'center',
35
+ alignItems: 'center',
36
+ },
37
+ };
38
+
39
+ export { styles };
40
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sources":["../../../src/components/Carousel/styles.ts"],"sourcesContent":["export const styles = {\n container: {\n flexDirection: 'column',\n alignItems: 'center',\n width: '100%',\n },\n viewport: {\n width: '100%',\n overflowX: 'auto',\n overflowY: 'hidden',\n scrollSnapType: 'x mandatory',\n WebkitOverflowScrolling: 'touch',\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n userSelect: 'none',\n WebkitUserSelect: 'none',\n // Suppress iOS Safari's long-press \"Save Image/Share\" callout on the slide images/links,\n // which can otherwise pop up mid-swipe and make the carousel look broken on iPhone.\n WebkitTouchCallout: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n },\n slide: {\n flex: '0 0 100%',\n width: '100%',\n scrollSnapAlign: 'center',\n padding: '1px',\n height: 'fit-content',\n justifyContent: 'center',\n },\n dotsContainer: {\n marginTop: '20px',\n justifyContent: 'center',\n alignItems: 'center',\n },\n}\n"],"names":[],"mappings":"AAAO,MAAM,MAAM,GAAG;AACpB,IAAA,SAAS,EAAE;AACT,QAAA,aAAa,EAAE,QAAQ;AACvB,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,SAAS,EAAE,QAAQ;AACnB,QAAA,cAAc,EAAE,aAAa;AAC7B,QAAA,uBAAuB,EAAE,OAAO;AAChC,QAAA,cAAc,EAAE,MAAM;AACtB,QAAA,eAAe,EAAE,MAAM;AACvB,QAAA,UAAU,EAAE,MAAM;AAClB,QAAA,gBAAgB,EAAE,MAAM;;;AAGxB,QAAA,kBAAkB,EAAE,MAAM;AAC1B,QAAA,sBAAsB,EAAE;AACtB,YAAA,OAAO,EAAE,MAAM;AAChB,SAAA;AACF,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,eAAe,EAAE,QAAQ;AACzB,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,MAAM,EAAE,aAAa;AACrB,QAAA,cAAc,EAAE,QAAQ;AACzB,KAAA;AACD,IAAA,aAAa,EAAE;AACb,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,cAAc,EAAE,QAAQ;AACxB,QAAA,UAAU,EAAE,QAAQ;AACrB,KAAA;;;;;"}
@@ -5,7 +5,6 @@ import ChainTitle from './ChainTitle.js';
5
5
  import BondRow from './BondRow.js';
6
6
  import { Flex } from 'theme-ui';
7
7
  import { ChainId } from '@ape.swap/apeswap-lists';
8
- import SwiperProvider from '../../../../contexts/SwiperProvider.js';
9
8
  import HotBondCards from '../HotBondCards/index.js';
10
9
  import ChainBanner from '../ChainBanner/ChainBanner.js';
11
10
  import { getRemainingTokensString, remainingPercentage, getVestingTermsTooltipString, getVestingTermsString } from '../../../../utils/displayHelpers.js';
@@ -72,7 +71,7 @@ const ActiveBondRows = ({ chain, bonds, hideTitles, showHotBonds }) => {
72
71
  ? `${bond?.trueBondPrices?.[0]?.discountWithFee?.toFixed(2)}%`
73
72
  : undefined, shortDescription: bond.shortDescription, cgId: bond.cgId, dexscreener: bond?.dexscreener }, `${bondAddress}-${bond.chainId}-${index}`));
74
73
  }
75
- }), showHotBonds && (jsx(SwiperProvider, { children: jsx(HotBondCards, {}) }))] }, key))] }) }, key));
74
+ }), showHotBonds && jsx(HotBondCards, {})] }, key))] }) }, key));
76
75
  };
77
76
 
78
77
  export { ActiveBondRows as default };
@@ -1 +1 @@
1
- {"version":3,"file":"ActiveBondRows.js","sources":["../../../../../src/views/Bonds/components/BondRows/ActiveBondRows.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport ChainTitle from './ChainTitle'\nimport BondRow from './BondRow'\nimport { Flex } from 'theme-ui'\nimport { BondsData } from '../../../../types/bonds'\nimport { BaseBondConfig, ChainId, MarketingCampaign } from '@ape.swap/apeswap-lists'\nimport SwiperProvider from '../../../../contexts/SwiperProvider'\nimport HotBondCards from '../HotBondCards'\nimport ChainBanner from '../ChainBanner/ChainBanner'\nimport {\n getRemainingTokensString,\n getVestingTermsString,\n getVestingTermsTooltipString,\n remainingPercentage,\n} from '../../../../utils/displayHelpers'\nimport { getBalanceNumber } from '../../../../utils/getBalanceNumber'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport { getTimePeriods } from '../../../../utils/getTimePeriods'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\n\n// Record<string, (BondsData | BaseBondConfig)[]>\n\ninterface ActiveBondRowsProps {\n chain: number\n bonds: (BondsData | BaseBondConfig)[]\n hideTitles: boolean\n showHotBonds: boolean\n}\n\nconst ActiveBondRows: React.FC<ActiveBondRowsProps> = ({ chain, bonds, hideTitles, showHotBonds }) => {\n const { namingPreference } = useSDKConfig()\n const [isOpen, setIsOpen] = useState<boolean>(true)\n const key = chain\n\n return (\n <Flex className=\"bondrowswithtitle\" key={key}>\n <AnimatePresence initial={false}>\n <Flex onClick={() => setIsOpen(!isOpen)} sx={{ cursor: 'pointer' }}>\n <ChainTitle\n chain={chain}\n pt={'5px'}\n hideTitles={(bonds.length <= 0 && chain !== ChainId.SOL && chain !== ChainId.MONAD) || hideTitles}\n isOpen={isOpen}\n />\n </Flex>\n {isOpen && (bonds.length > 0 || chain === ChainId.MONAD) && (\n <motion.div\n initial={{ height: 0, overflow: 'hidden' }}\n animate={{ height: 'fit-content', overflow: 'hidden', transitionEnd: { overflow: 'visible' } }}\n exit={{ height: 0, overflow: 'hidden' }}\n sx={{\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n marginTop: '0px',\n }}\n key={key}\n className=\"bonds-card-container\"\n >\n {[\n // ChainId.SOL,\n ChainId.MONAD,\n // ChainId.APTOS,\n // ChainId.SUI\n ].includes(chain) &&\n !hideTitles && <ChainBanner chainId={chain} />}\n {bonds?.map((bondFromMap, index) => {\n // PRE TGE ROWS\n\n if (bondFromMap.billType === 'fcfs') {\n const bond = bondFromMap as BondsData\n const totalPrincipalBilled =\n Math.round(\n getBalanceNumber(\n bond?.totalPrincipalBilled ?? '0',\n bond?.lpToken?.decimals?.[bond?.chainId] as number,\n ),\n ) / (bond.initPrice ?? 0)\n const raiseGoal =\n Math.round(\n getBalanceNumber(bond?.totalRaise ?? '0', bond?.lpToken?.decimals?.[bond?.chainId] as number),\n ) / (bond.initPrice ?? 0)\n\n const tokensRemaining = raiseGoal - totalPrincipalBilled\n const tokensRemainingUSD = tokensRemaining * (bond?.initPrice ?? 0)\n const percentageAvailable = 100 - Math.floor((totalPrincipalBilled * 100) / raiseGoal)\n const earnToken = bond?.earnToken?.symbol\n\n const baseBonus = bond?.trueBondPrices?.[0]?.bonus ?? 0\n const airdropBonus = bond?.airdropBonus ?? 0\n const bonus = baseBonus + airdropBonus\n const initialRelease = (bond?.initialRelease ?? 0) * 100\n\n const now = new Date().getTime()\n const saleFinishTime = (bond?.finishTime ?? 0) * 1000\n const saleHasFinished = now > saleFinishTime || bond.finalized\n\n return (\n <BondRow\n key={`${bond.contractAddress}-${bond.chainId}-${index}`}\n bondAddress={bond.contractAddress?.[bond.chainId] as string}\n bondChain={bond.chainId}\n marketingCampaign={bond.marketingCampaign as MarketingCampaign}\n payoutToken={bond.underlyingEarnToken || bond.earnToken}\n billType={bond.billType}\n tag={bond.tags?.[0]}\n bonus={\n bond.yieldBond\n ? `${bond.yieldData?.apr.toFixed()}% APR`\n : saleHasFinished\n ? undefined\n : `${bonus}%`\n }\n airdropTooltip={bond.airdropTooltip}\n percentageAvailable={percentageAvailable}\n remainingTokensString={\n saleHasFinished\n ? `0 ${earnToken} ($0) `\n : `${formatNumberSI(tokensRemaining, 0)} ${earnToken} ($${formatNumberSI(tokensRemainingUSD, 2)})`\n }\n vestingTermString={\n saleHasFinished\n ? '-'\n : bond.yieldBond\n ? `${\n getTimePeriods(\n (bond?.yieldData?.rewardDistributionEnd ?? 0) -\n parseInt(bond.startVestingTimestamp ?? '0'),\n true,\n ).days\n } D`\n : initialRelease === 100\n ? `0 D`\n : `${getTimePeriods(bond.vestingTerm).months} Mo`\n }\n vestingCliffString={\n bond.yieldBond\n ? `This is the duration over which the bonus yield will be distributed while your initial tokens remain staked.`\n : undefined\n }\n projectURL={bond.projectLink}\n twitterURL={bond.twitter}\n bondSoldOut={saleHasFinished}\n shortDescription={bond.shortDescription}\n />\n )\n } else {\n // POST TGE BONDS AKA NORMAL BONDS\n\n const bond = bondFromMap as BondsData\n const bondAddress = bond?.contractAddress?.[bond?.chainId] as string\n const remainingTokensString = getRemainingTokensString(bond)\n return (\n <BondRow\n key={`${bondAddress}-${bond.chainId}-${index}`}\n bondAddress={bondAddress}\n bondChain={bond.chainId}\n marketingCampaign={bond.marketingCampaign as MarketingCampaign}\n payoutToken={bond.earnToken}\n billType={bond.billType}\n tag={bond.highlightTag || bond.tags?.[0]}\n trueBondPrices={namingPreference === 'Bonus' ? bond.trueBondPrices : undefined}\n minTier={bond?.minTier}\n vestingTermString={getVestingTermsString(bond)}\n vestingCliffString={getVestingTermsTooltipString(bond)}\n percentageAvailable={remainingPercentage(bond)}\n remainingTokensString={remainingTokensString}\n projectURL={bond.projectLink}\n twitterURL={bond.twitter}\n bonus={\n namingPreference === 'Discount'\n ? `${bond?.trueBondPrices?.[0]?.discountWithFee?.toFixed(2)}%`\n : undefined\n }\n shortDescription={bond.shortDescription}\n cgId={bond.cgId}\n dexscreener={bond?.dexscreener}\n />\n )\n }\n })}\n {showHotBonds && (\n <SwiperProvider>\n <HotBondCards />\n </SwiperProvider>\n )}\n </motion.div>\n )}\n </AnimatePresence>\n </Flex>\n )\n}\n\nexport default ActiveBondRows\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"ActiveBondRows.js","sources":["../../../../../src/views/Bonds/components/BondRows/ActiveBondRows.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport ChainTitle from './ChainTitle'\nimport BondRow from './BondRow'\nimport { Flex } from 'theme-ui'\nimport { BondsData } from '../../../../types/bonds'\nimport { BaseBondConfig, ChainId, MarketingCampaign } from '@ape.swap/apeswap-lists'\nimport HotBondCards from '../HotBondCards'\nimport ChainBanner from '../ChainBanner/ChainBanner'\nimport {\n getRemainingTokensString,\n getVestingTermsString,\n getVestingTermsTooltipString,\n remainingPercentage,\n} from '../../../../utils/displayHelpers'\nimport { getBalanceNumber } from '../../../../utils/getBalanceNumber'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport { getTimePeriods } from '../../../../utils/getTimePeriods'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\n\n// Record<string, (BondsData | BaseBondConfig)[]>\n\ninterface ActiveBondRowsProps {\n chain: number\n bonds: (BondsData | BaseBondConfig)[]\n hideTitles: boolean\n showHotBonds: boolean\n}\n\nconst ActiveBondRows: React.FC<ActiveBondRowsProps> = ({ chain, bonds, hideTitles, showHotBonds }) => {\n const { namingPreference } = useSDKConfig()\n const [isOpen, setIsOpen] = useState<boolean>(true)\n const key = chain\n\n return (\n <Flex className=\"bondrowswithtitle\" key={key}>\n <AnimatePresence initial={false}>\n <Flex onClick={() => setIsOpen(!isOpen)} sx={{ cursor: 'pointer' }}>\n <ChainTitle\n chain={chain}\n pt={'5px'}\n hideTitles={(bonds.length <= 0 && chain !== ChainId.SOL && chain !== ChainId.MONAD) || hideTitles}\n isOpen={isOpen}\n />\n </Flex>\n {isOpen && (bonds.length > 0 || chain === ChainId.MONAD) && (\n <motion.div\n initial={{ height: 0, overflow: 'hidden' }}\n animate={{ height: 'fit-content', overflow: 'hidden', transitionEnd: { overflow: 'visible' } }}\n exit={{ height: 0, overflow: 'hidden' }}\n sx={{\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n marginTop: '0px',\n }}\n key={key}\n className=\"bonds-card-container\"\n >\n {[\n // ChainId.SOL,\n ChainId.MONAD,\n // ChainId.APTOS,\n // ChainId.SUI\n ].includes(chain) &&\n !hideTitles && <ChainBanner chainId={chain} />}\n {bonds?.map((bondFromMap, index) => {\n // PRE TGE ROWS\n\n if (bondFromMap.billType === 'fcfs') {\n const bond = bondFromMap as BondsData\n const totalPrincipalBilled =\n Math.round(\n getBalanceNumber(\n bond?.totalPrincipalBilled ?? '0',\n bond?.lpToken?.decimals?.[bond?.chainId] as number,\n ),\n ) / (bond.initPrice ?? 0)\n const raiseGoal =\n Math.round(\n getBalanceNumber(bond?.totalRaise ?? '0', bond?.lpToken?.decimals?.[bond?.chainId] as number),\n ) / (bond.initPrice ?? 0)\n\n const tokensRemaining = raiseGoal - totalPrincipalBilled\n const tokensRemainingUSD = tokensRemaining * (bond?.initPrice ?? 0)\n const percentageAvailable = 100 - Math.floor((totalPrincipalBilled * 100) / raiseGoal)\n const earnToken = bond?.earnToken?.symbol\n\n const baseBonus = bond?.trueBondPrices?.[0]?.bonus ?? 0\n const airdropBonus = bond?.airdropBonus ?? 0\n const bonus = baseBonus + airdropBonus\n const initialRelease = (bond?.initialRelease ?? 0) * 100\n\n const now = new Date().getTime()\n const saleFinishTime = (bond?.finishTime ?? 0) * 1000\n const saleHasFinished = now > saleFinishTime || bond.finalized\n\n return (\n <BondRow\n key={`${bond.contractAddress}-${bond.chainId}-${index}`}\n bondAddress={bond.contractAddress?.[bond.chainId] as string}\n bondChain={bond.chainId}\n marketingCampaign={bond.marketingCampaign as MarketingCampaign}\n payoutToken={bond.underlyingEarnToken || bond.earnToken}\n billType={bond.billType}\n tag={bond.tags?.[0]}\n bonus={\n bond.yieldBond\n ? `${bond.yieldData?.apr.toFixed()}% APR`\n : saleHasFinished\n ? undefined\n : `${bonus}%`\n }\n airdropTooltip={bond.airdropTooltip}\n percentageAvailable={percentageAvailable}\n remainingTokensString={\n saleHasFinished\n ? `0 ${earnToken} ($0) `\n : `${formatNumberSI(tokensRemaining, 0)} ${earnToken} ($${formatNumberSI(tokensRemainingUSD, 2)})`\n }\n vestingTermString={\n saleHasFinished\n ? '-'\n : bond.yieldBond\n ? `${\n getTimePeriods(\n (bond?.yieldData?.rewardDistributionEnd ?? 0) -\n parseInt(bond.startVestingTimestamp ?? '0'),\n true,\n ).days\n } D`\n : initialRelease === 100\n ? `0 D`\n : `${getTimePeriods(bond.vestingTerm).months} Mo`\n }\n vestingCliffString={\n bond.yieldBond\n ? `This is the duration over which the bonus yield will be distributed while your initial tokens remain staked.`\n : undefined\n }\n projectURL={bond.projectLink}\n twitterURL={bond.twitter}\n bondSoldOut={saleHasFinished}\n shortDescription={bond.shortDescription}\n />\n )\n } else {\n // POST TGE BONDS AKA NORMAL BONDS\n\n const bond = bondFromMap as BondsData\n const bondAddress = bond?.contractAddress?.[bond?.chainId] as string\n const remainingTokensString = getRemainingTokensString(bond)\n return (\n <BondRow\n key={`${bondAddress}-${bond.chainId}-${index}`}\n bondAddress={bondAddress}\n bondChain={bond.chainId}\n marketingCampaign={bond.marketingCampaign as MarketingCampaign}\n payoutToken={bond.earnToken}\n billType={bond.billType}\n tag={bond.highlightTag || bond.tags?.[0]}\n trueBondPrices={namingPreference === 'Bonus' ? bond.trueBondPrices : undefined}\n minTier={bond?.minTier}\n vestingTermString={getVestingTermsString(bond)}\n vestingCliffString={getVestingTermsTooltipString(bond)}\n percentageAvailable={remainingPercentage(bond)}\n remainingTokensString={remainingTokensString}\n projectURL={bond.projectLink}\n twitterURL={bond.twitter}\n bonus={\n namingPreference === 'Discount'\n ? `${bond?.trueBondPrices?.[0]?.discountWithFee?.toFixed(2)}%`\n : undefined\n }\n shortDescription={bond.shortDescription}\n cgId={bond.cgId}\n dexscreener={bond?.dexscreener}\n />\n )\n }\n })}\n {showHotBonds && <HotBondCards />}\n </motion.div>\n )}\n </AnimatePresence>\n </Flex>\n )\n}\n\nexport default ActiveBondRows\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -1,29 +1,15 @@
1
1
  import { jsxs, jsx } from 'theme-ui/jsx-runtime';
2
- import { useState } from 'react';
3
2
  import { styles } from './styles.js';
4
3
  import HotBondCard from './HotBondCard.js';
5
- import { Swiper, SwiperSlide } from 'swiper/react';
6
- import useSwiper from '../../../../hooks/useSwiper.js';
7
- import { getDotPos } from '../../../../utils/getDotPos.js';
8
4
  import useHotBonds from '../../../../state/hotBonds/useHotBonds.js';
9
5
  import Flex from '../../../../components/uikit-sdk/Flex/index.js';
10
- import SwiperDots from '../../../../components/uikit-sdk/SwiperDots/index.js';
6
+ import Carousel from '../../../../components/Carousel/index.js';
11
7
 
12
8
  const HotBondCards = () => {
13
9
  const { data: hotBonds } = useHotBonds();
14
- const [activeSlide, setActiveSlide] = useState(0);
15
- const { swiper, setSwiper } = useSwiper();
16
- const handleSlide = (event) => {
17
- const slideNumber = getDotPos(event.activeIndex, hotBonds?.length);
18
- setActiveSlide(slideNumber);
19
- };
20
- const slideTo = (index) => {
21
- setActiveSlide(index);
22
- swiper?.slideTo(index);
23
- };
24
10
  return (jsxs(Flex, { sx: styles.mainComponent, children: [jsx(Flex, { sx: styles.hotBondTitle, children: "HOT BONDS" }), jsx(Flex, { sx: styles.desktopCards, children: hotBonds?.map((bond, index) => {
25
11
  return jsx(HotBondCard, { bond: bond }, `${bond?.contractAddress?.[bond?.chainId]}-${index}`);
26
- }) }), jsxs(Flex, { sx: {
12
+ }) }), jsx(Flex, { sx: {
27
13
  flexDirection: 'column',
28
14
  width: '100%',
29
15
  alignItems: 'center',
@@ -33,16 +19,7 @@ const HotBondCards = () => {
33
19
  '@media screen and (min-width: 1000px)': {
34
20
  display: 'none',
35
21
  },
36
- }, children: [jsx(Swiper, { id: "hotbondsSweper", onSwiper: setSwiper, slidesPerView: "auto", centeredSlides: true, onSlideChange: handleSlide, style: { width: '100%', paddingBottom: '15px', overflow: 'visible' }, children: hotBonds?.map((bond, index) => {
37
- return (jsx(SwiperSlide, { style: {
38
- width: '100%',
39
- padding: '1px',
40
- display: 'flex',
41
- justifyContent: 'center',
42
- }, children: jsx(HotBondCard, { bond: bond }, `${bond?.contractAddress?.[bond?.chainId]}-${index}`) }, index));
43
- }) }), jsx(Flex, { children: [...Array(hotBonds?.length)].map((_, i) => {
44
- return jsx(SwiperDots, { isActive: i === activeSlide, onClick: () => slideTo(i) }, i);
45
- }) })] })] }));
22
+ }, children: jsx(Carousel, { slides: hotBonds?.map((bond, index) => (jsx(HotBondCard, { bond: bond }, `${bond?.contractAddress?.[bond?.chainId]}-${index}`))) ?? [] }) })] }));
46
23
  };
47
24
 
48
25
  export { HotBondCards as default };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/views/Bonds/components/HotBondCards/index.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { styles } from './styles'\nimport HotBondCard from './HotBondCard'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport SwiperCore from 'swiper'\nimport useSwiper from '../../../../hooks/useSwiper'\nimport { getDotPos } from '../../../../utils/getDotPos'\nimport useHotBonds from '../../../../state/hotBonds/useHotBonds'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport SwiperDots from '../../../../components/uikit-sdk/SwiperDots'\n\nconst HotBondCards = () => {\n const { data: hotBonds } = useHotBonds()\n\n const [activeSlide, setActiveSlide] = useState(0)\n const { swiper, setSwiper } = useSwiper()\n\n const handleSlide = (event: SwiperCore) => {\n const slideNumber = getDotPos(event.activeIndex, hotBonds?.length)\n setActiveSlide(slideNumber)\n }\n\n const slideTo = (index: number) => {\n setActiveSlide(index)\n swiper?.slideTo(index)\n }\n\n return (\n <Flex sx={styles.mainComponent}>\n <Flex sx={styles.hotBondTitle}>HOT BONDS</Flex>\n {/* DESKTOP CARDS */}\n <Flex sx={styles.desktopCards}>\n {hotBonds?.map((bond, index) => {\n return <HotBondCard bond={bond} key={`${bond?.contractAddress?.[bond?.chainId]}-${index}`} />\n })}\n </Flex>\n {/* MOBILE CARDS WITH SWIPER */}\n <Flex\n sx={{\n flexDirection: 'column',\n width: '100%',\n alignItems: 'center',\n mb: '15px',\n overflow: 'hidden',\n display: 'flex',\n '@media screen and (min-width: 1000px)': {\n display: 'none',\n },\n }}\n >\n <Swiper\n id=\"hotbondsSweper\"\n onSwiper={setSwiper}\n slidesPerView=\"auto\"\n centeredSlides\n onSlideChange={handleSlide}\n style={{ width: '100%', paddingBottom: '15px', overflow: 'visible' }}\n >\n {hotBonds?.map((bond, index) => {\n return (\n <SwiperSlide\n style={{\n width: '100%',\n padding: '1px',\n display: 'flex',\n justifyContent: 'center',\n }}\n key={index}\n >\n <HotBondCard bond={bond} key={`${bond?.contractAddress?.[bond?.chainId]}-${index}`} />\n </SwiperSlide>\n )\n })}\n </Swiper>\n <Flex>\n {[...Array(hotBonds?.length)].map((_, i) => {\n return <SwiperDots isActive={i === activeSlide} onClick={() => slideTo(i)} key={i} />\n })}\n </Flex>\n </Flex>\n </Flex>\n )\n}\n\nexport default HotBondCards\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/views/Bonds/components/HotBondCards/index.tsx"],"sourcesContent":["import React from 'react'\nimport { styles } from './styles'\nimport HotBondCard from './HotBondCard'\nimport useHotBonds from '../../../../state/hotBonds/useHotBonds'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport Carousel from '../../../../components/Carousel'\n\nconst HotBondCards = () => {\n const { data: hotBonds } = useHotBonds()\n\n return (\n <Flex sx={styles.mainComponent}>\n <Flex sx={styles.hotBondTitle}>HOT BONDS</Flex>\n {/* DESKTOP CARDS */}\n <Flex sx={styles.desktopCards}>\n {hotBonds?.map((bond, index) => {\n return <HotBondCard bond={bond} key={`${bond?.contractAddress?.[bond?.chainId]}-${index}`} />\n })}\n </Flex>\n {/* MOBILE CARDS WITH CAROUSEL */}\n <Flex\n sx={{\n flexDirection: 'column',\n width: '100%',\n alignItems: 'center',\n mb: '15px',\n overflow: 'hidden',\n display: 'flex',\n '@media screen and (min-width: 1000px)': {\n display: 'none',\n },\n }}\n >\n <Carousel\n slides={\n hotBonds?.map((bond, index) => (\n <HotBondCard bond={bond} key={`${bond?.contractAddress?.[bond?.chainId]}-${index}`} />\n )) ?? []\n }\n />\n </Flex>\n </Flex>\n )\n}\n\nexport default HotBondCards\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAOA,MAAM,YAAY,GAAG,MAAK;IACxB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE;AAExC,IAAA,QACEA,IAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,MAAM,CAAC,aAAa,EAAA,QAAA,EAAA,CAC5BC,IAAC,IAAI,EAAA,EAAC,EAAE,EAAE,MAAM,CAAC,YAAY,EAAA,QAAA,EAAA,WAAA,EAAA,CAAkB,EAE/CA,GAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,MAAM,CAAC,YAAY,EAAA,QAAA,EAC1B,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;oBAC7B,OAAOA,GAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,IAAI,EAAA,EAAO,GAAG,IAAI,EAAE,eAAe,GAAG,IAAI,EAAE,OAAO,CAAC,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAI;AAC/F,gBAAA,CAAC,CAAC,EAAA,CACG,EAEPA,IAAC,IAAI,EAAA,EACH,EAAE,EAAE;AACF,oBAAA,aAAa,EAAE,QAAQ;AACvB,oBAAA,KAAK,EAAE,MAAM;AACb,oBAAA,UAAU,EAAE,QAAQ;AACpB,oBAAA,EAAE,EAAE,MAAM;AACV,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,uCAAuC,EAAE;AACvC,wBAAA,OAAO,EAAE,MAAM;AAChB,qBAAA;iBACF,EAAA,QAAA,EAEDA,GAAA,CAAC,QAAQ,EAAA,EACP,MAAM,EACJ,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MACxBA,GAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,IAAI,IAAO,CAAA,EAAG,IAAI,EAAE,eAAe,GAAG,IAAI,EAAE,OAAO,CAAC,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAI,CACvF,CAAC,IAAI,EAAE,EAAA,CAEV,EAAA,CACG,CAAA,EAAA,CACF;AAEX;;;;"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Ape Bond SDK",
4
4
  "author": "Ape Bond",
5
5
  "license": "MIT",
6
- "version": "6.2.10",
6
+ "version": "6.2.11",
7
7
  "module": "dist/main.js",
8
8
  "type": "module",
9
9
  "types": "dist/main.d.ts",
@@ -124,7 +124,6 @@
124
124
  "framer-motion": "11.18.2",
125
125
  "lightweight-charts": "4.2.3",
126
126
  "lodash-es": "4.17.23",
127
- "swiper": "12.1.2",
128
127
  "theme-ui": "0.17.2"
129
128
  },
130
129
  "devDependencies": {
@@ -1,12 +0,0 @@
1
- import React, { Dispatch } from 'react';
2
- import SwiperCore from 'swiper';
3
- export interface Context {
4
- swiper: SwiperCore | undefined;
5
- setSwiper: Dispatch<React.SetStateAction<SwiperCore | undefined>>;
6
- destroySwiper: () => void;
7
- }
8
- export declare const SwiperContext: React.Context<Context>;
9
- declare const SwiperProvider: React.FC<{
10
- children: React.ReactNode;
11
- }>;
12
- export default SwiperProvider;
@@ -1,21 +0,0 @@
1
- import { jsx } from 'theme-ui/jsx-runtime';
2
- import { createContext, useState } from 'react';
3
-
4
- const SwiperContext = createContext({
5
- swiper: undefined,
6
- setSwiper: () => null,
7
- destroySwiper: () => null,
8
- });
9
- const SwiperProvider = ({ children }) => {
10
- const [swiper, setSwiper] = useState(undefined);
11
- const destroySwiper = () => {
12
- if (swiper) {
13
- swiper.destroy();
14
- setSwiper(undefined);
15
- }
16
- };
17
- return jsx(SwiperContext.Provider, { value: { swiper, setSwiper, destroySwiper }, children: children });
18
- };
19
-
20
- export { SwiperContext, SwiperProvider as default };
21
- //# sourceMappingURL=SwiperProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SwiperProvider.js","sources":["../../src/contexts/SwiperProvider.tsx"],"sourcesContent":["import React, { createContext, Dispatch, useState } from 'react'\nimport SwiperCore from 'swiper'\n\nexport interface Context {\n swiper: SwiperCore | undefined\n setSwiper: Dispatch<React.SetStateAction<SwiperCore | undefined>>\n destroySwiper: () => void\n}\n\nexport const SwiperContext = createContext<Context>({\n swiper: undefined,\n setSwiper: () => null,\n destroySwiper: () => null,\n})\n\nconst SwiperProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const [swiper, setSwiper] = useState<SwiperCore | undefined>(undefined)\n\n const destroySwiper = () => {\n if (swiper) {\n swiper.destroy()\n setSwiper(undefined)\n }\n }\n\n return <SwiperContext.Provider value={{ swiper, setSwiper, destroySwiper }}>{children}</SwiperContext.Provider>\n}\n\nexport default SwiperProvider\n"],"names":["_jsx"],"mappings":";;;AASO,MAAM,aAAa,GAAG,aAAa,CAAU;AAClD,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,SAAS,EAAE,MAAM,IAAI;AACrB,IAAA,aAAa,EAAE,MAAM,IAAI;AAC1B,CAAA;AAED,MAAM,cAAc,GAA4C,CAAC,EAAE,QAAQ,EAAE,KAAI;IAC/E,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAyB,SAAS,CAAC;IAEvE,MAAM,aAAa,GAAG,MAAK;QACzB,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,OAAO,EAAE;YAChB,SAAS,CAAC,SAAS,CAAC;QACtB;AACF,IAAA,CAAC;AAED,IAAA,OAAOA,IAAC,aAAa,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,EAAA,QAAA,EAAG,QAAQ,GAA0B;AACjH;;;;"}
@@ -1,2 +0,0 @@
1
- declare const useSwiper: () => import("../contexts/SwiperProvider").Context;
2
- export default useSwiper;
@@ -1,13 +0,0 @@
1
- import { useContext } from 'react';
2
- import { SwiperContext } from '../contexts/SwiperProvider.js';
3
-
4
- const useSwiper = () => {
5
- const swiperContext = useContext(SwiperContext);
6
- if (swiperContext === undefined) {
7
- throw new Error('Swiper not found');
8
- }
9
- return swiperContext;
10
- };
11
-
12
- export { useSwiper as default };
13
- //# sourceMappingURL=useSwiper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSwiper.js","sources":["../../src/hooks/useSwiper.ts"],"sourcesContent":["import { useContext } from 'react'\nimport { SwiperContext } from '../contexts/SwiperProvider'\n\nconst useSwiper = () => {\n const swiperContext = useContext(SwiperContext)\n\n if (swiperContext === undefined) {\n throw new Error('Swiper not found')\n }\n\n return swiperContext\n}\n\nexport default useSwiper\n"],"names":[],"mappings":";;;AAGA,MAAM,SAAS,GAAG,MAAK;AACrB,IAAA,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;AAE/C,IAAA,IAAI,aAAa,KAAK,SAAS,EAAE;AAC/B,QAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC;IACrC;AAEA,IAAA,OAAO,aAAa;AACtB;;;;"}
@@ -1 +0,0 @@
1
- export declare const getDotPos: (index: number, carouselLength?: number) => number;
@@ -1,12 +0,0 @@
1
- const getDotPos = (index, carouselLength) => {
2
- if (!carouselLength)
3
- return 0;
4
- return index >= carouselLength * 2
5
- ? index - carouselLength * 2
6
- : index - carouselLength < 0
7
- ? index
8
- : index - carouselLength;
9
- };
10
-
11
- export { getDotPos };
12
- //# sourceMappingURL=getDotPos.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getDotPos.js","sources":["../../src/utils/getDotPos.ts"],"sourcesContent":["export const getDotPos = (index: number, carouselLength?: number) => {\n if (!carouselLength) return 0\n return index >= carouselLength * 2\n ? index - carouselLength * 2\n : index - carouselLength < 0\n ? index\n : index - carouselLength\n}\n"],"names":[],"mappings":"MAAa,SAAS,GAAG,CAAC,KAAa,EAAE,cAAuB,KAAI;AAClE,IAAA,IAAI,CAAC,cAAc;AAAE,QAAA,OAAO,CAAC;AAC7B,IAAA,OAAO,KAAK,IAAI,cAAc,GAAG;AAC/B,UAAE,KAAK,GAAG,cAAc,GAAG;AAC3B,UAAE,KAAK,GAAG,cAAc,GAAG;AACzB,cAAE;AACF,cAAE,KAAK,GAAG,cAAc;AAC9B;;;;"}