@liberfi.io/ui-redpacket 1.0.1
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 +6 -0
- package/dist/index.d.mts +70 -0
- package/dist/index.d.ts +70 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +3 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +65 -0
package/README.md
ADDED
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { RedpacketIntentStatus, RedpacketRecord, RedpacketSnapshot, createRedpacketRuntime } from '@liberfi.io/react-redpacket';
|
|
2
|
+
export { RedpacketRecord, redpacketRecordStatus as redpacketStatus } from '@liberfi.io/react-redpacket';
|
|
3
|
+
import * as react from 'react';
|
|
4
|
+
import { PropsWithChildren } from 'react';
|
|
5
|
+
import { Chain } from '@liberfi.io/types';
|
|
6
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
declare function RedpacketStatusView(status: RedpacketIntentStatus): {
|
|
9
|
+
status: RedpacketIntentStatus;
|
|
10
|
+
canSubmit: boolean;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
type RedpacketStatus = RedpacketRecord["status"];
|
|
14
|
+
type RedpacketUiPorts = {
|
|
15
|
+
chain: Chain;
|
|
16
|
+
walletAddress?: string;
|
|
17
|
+
requireAuth: (action: () => Promise<void>) => Promise<void>;
|
|
18
|
+
navigate: (to: string | number) => void;
|
|
19
|
+
fetchPacket: (shareId: string) => Promise<RedpacketRecord>;
|
|
20
|
+
listReceived: (address: string) => Promise<RedpacketRecord[]>;
|
|
21
|
+
listSent: (address: string) => Promise<RedpacketRecord[]>;
|
|
22
|
+
createRuntime: (onChange?: (snapshot: RedpacketSnapshot) => void) => ReturnType<typeof createRedpacketRuntime>;
|
|
23
|
+
shareUrl: (shareId: string) => string;
|
|
24
|
+
copyText?: (text: string) => Promise<void> | void;
|
|
25
|
+
};
|
|
26
|
+
declare function RedpacketUiProvider({ ports, children, }: PropsWithChildren<{
|
|
27
|
+
ports: RedpacketUiPorts;
|
|
28
|
+
}>): react.FunctionComponentElement<react.ProviderProps<RedpacketUiPorts | null>>;
|
|
29
|
+
declare function useRedpacketUiPorts(): RedpacketUiPorts;
|
|
30
|
+
declare function createInMemoryRedpacketUiPorts(options?: {
|
|
31
|
+
packets?: RedpacketRecord[];
|
|
32
|
+
signError?: Error;
|
|
33
|
+
alreadyClaimed?: boolean;
|
|
34
|
+
}): RedpacketUiPorts;
|
|
35
|
+
|
|
36
|
+
type RedpacketSession = {
|
|
37
|
+
claimPacket: RedpacketRecord | null;
|
|
38
|
+
sharePacket: RedpacketRecord | null;
|
|
39
|
+
viewPacket: RedpacketRecord | null;
|
|
40
|
+
openClaim: (packet: RedpacketRecord) => void;
|
|
41
|
+
openShare: (packet: RedpacketRecord) => void;
|
|
42
|
+
openView: (packet: RedpacketRecord) => void;
|
|
43
|
+
closeClaim: () => void;
|
|
44
|
+
closeShare: () => void;
|
|
45
|
+
closeView: () => void;
|
|
46
|
+
};
|
|
47
|
+
declare function RedPacketProvider({ shareId, children, }: PropsWithChildren<{
|
|
48
|
+
shareId?: string;
|
|
49
|
+
}>): react.FunctionComponentElement<react.ProviderProps<RedpacketSession | null>>;
|
|
50
|
+
declare function useRedpacketSession(): RedpacketSession;
|
|
51
|
+
|
|
52
|
+
declare function RedPacketHomePage(): react_jsx_runtime.JSX.Element;
|
|
53
|
+
|
|
54
|
+
declare function RedPacketCreatePage(): react_jsx_runtime.JSX.Element;
|
|
55
|
+
|
|
56
|
+
declare function RedPacketHistoriesPage(): react_jsx_runtime.JSX.Element;
|
|
57
|
+
|
|
58
|
+
declare function RedPacketCreateForm({ kind }: {
|
|
59
|
+
kind: "fixed" | "random";
|
|
60
|
+
}): react_jsx_runtime.JSX.Element;
|
|
61
|
+
|
|
62
|
+
declare function ClaimRedPacketModal(): react_jsx_runtime.JSX.Element;
|
|
63
|
+
declare function ShareRedPacketModal(): react_jsx_runtime.JSX.Element;
|
|
64
|
+
declare function RedPacketModal(): react_jsx_runtime.JSX.Element;
|
|
65
|
+
declare function RedPacketClaimsModal(): react_jsx_runtime.JSX.Element;
|
|
66
|
+
|
|
67
|
+
declare const PACKAGE_NAME: "@liberfi.io/ui-redpacket";
|
|
68
|
+
declare function RedpacketReadyWidget(): "@liberfi.io/ui-redpacket";
|
|
69
|
+
|
|
70
|
+
export { ClaimRedPacketModal, PACKAGE_NAME, RedPacketClaimsModal, RedPacketCreateForm, RedPacketCreatePage, RedPacketHistoriesPage, RedPacketHomePage, RedPacketModal, RedPacketProvider, RedpacketReadyWidget, type RedpacketStatus, RedpacketStatusView, type RedpacketUiPorts, RedpacketUiProvider, ShareRedPacketModal, createInMemoryRedpacketUiPorts, useRedpacketSession, useRedpacketUiPorts };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { RedpacketIntentStatus, RedpacketRecord, RedpacketSnapshot, createRedpacketRuntime } from '@liberfi.io/react-redpacket';
|
|
2
|
+
export { RedpacketRecord, redpacketRecordStatus as redpacketStatus } from '@liberfi.io/react-redpacket';
|
|
3
|
+
import * as react from 'react';
|
|
4
|
+
import { PropsWithChildren } from 'react';
|
|
5
|
+
import { Chain } from '@liberfi.io/types';
|
|
6
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
declare function RedpacketStatusView(status: RedpacketIntentStatus): {
|
|
9
|
+
status: RedpacketIntentStatus;
|
|
10
|
+
canSubmit: boolean;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
type RedpacketStatus = RedpacketRecord["status"];
|
|
14
|
+
type RedpacketUiPorts = {
|
|
15
|
+
chain: Chain;
|
|
16
|
+
walletAddress?: string;
|
|
17
|
+
requireAuth: (action: () => Promise<void>) => Promise<void>;
|
|
18
|
+
navigate: (to: string | number) => void;
|
|
19
|
+
fetchPacket: (shareId: string) => Promise<RedpacketRecord>;
|
|
20
|
+
listReceived: (address: string) => Promise<RedpacketRecord[]>;
|
|
21
|
+
listSent: (address: string) => Promise<RedpacketRecord[]>;
|
|
22
|
+
createRuntime: (onChange?: (snapshot: RedpacketSnapshot) => void) => ReturnType<typeof createRedpacketRuntime>;
|
|
23
|
+
shareUrl: (shareId: string) => string;
|
|
24
|
+
copyText?: (text: string) => Promise<void> | void;
|
|
25
|
+
};
|
|
26
|
+
declare function RedpacketUiProvider({ ports, children, }: PropsWithChildren<{
|
|
27
|
+
ports: RedpacketUiPorts;
|
|
28
|
+
}>): react.FunctionComponentElement<react.ProviderProps<RedpacketUiPorts | null>>;
|
|
29
|
+
declare function useRedpacketUiPorts(): RedpacketUiPorts;
|
|
30
|
+
declare function createInMemoryRedpacketUiPorts(options?: {
|
|
31
|
+
packets?: RedpacketRecord[];
|
|
32
|
+
signError?: Error;
|
|
33
|
+
alreadyClaimed?: boolean;
|
|
34
|
+
}): RedpacketUiPorts;
|
|
35
|
+
|
|
36
|
+
type RedpacketSession = {
|
|
37
|
+
claimPacket: RedpacketRecord | null;
|
|
38
|
+
sharePacket: RedpacketRecord | null;
|
|
39
|
+
viewPacket: RedpacketRecord | null;
|
|
40
|
+
openClaim: (packet: RedpacketRecord) => void;
|
|
41
|
+
openShare: (packet: RedpacketRecord) => void;
|
|
42
|
+
openView: (packet: RedpacketRecord) => void;
|
|
43
|
+
closeClaim: () => void;
|
|
44
|
+
closeShare: () => void;
|
|
45
|
+
closeView: () => void;
|
|
46
|
+
};
|
|
47
|
+
declare function RedPacketProvider({ shareId, children, }: PropsWithChildren<{
|
|
48
|
+
shareId?: string;
|
|
49
|
+
}>): react.FunctionComponentElement<react.ProviderProps<RedpacketSession | null>>;
|
|
50
|
+
declare function useRedpacketSession(): RedpacketSession;
|
|
51
|
+
|
|
52
|
+
declare function RedPacketHomePage(): react_jsx_runtime.JSX.Element;
|
|
53
|
+
|
|
54
|
+
declare function RedPacketCreatePage(): react_jsx_runtime.JSX.Element;
|
|
55
|
+
|
|
56
|
+
declare function RedPacketHistoriesPage(): react_jsx_runtime.JSX.Element;
|
|
57
|
+
|
|
58
|
+
declare function RedPacketCreateForm({ kind }: {
|
|
59
|
+
kind: "fixed" | "random";
|
|
60
|
+
}): react_jsx_runtime.JSX.Element;
|
|
61
|
+
|
|
62
|
+
declare function ClaimRedPacketModal(): react_jsx_runtime.JSX.Element;
|
|
63
|
+
declare function ShareRedPacketModal(): react_jsx_runtime.JSX.Element;
|
|
64
|
+
declare function RedPacketModal(): react_jsx_runtime.JSX.Element;
|
|
65
|
+
declare function RedPacketClaimsModal(): react_jsx_runtime.JSX.Element;
|
|
66
|
+
|
|
67
|
+
declare const PACKAGE_NAME: "@liberfi.io/ui-redpacket";
|
|
68
|
+
declare function RedpacketReadyWidget(): "@liberfi.io/ui-redpacket";
|
|
69
|
+
|
|
70
|
+
export { ClaimRedPacketModal, PACKAGE_NAME, RedPacketClaimsModal, RedPacketCreateForm, RedPacketCreatePage, RedPacketHistoriesPage, RedPacketHomePage, RedPacketModal, RedPacketProvider, RedpacketReadyWidget, type RedpacketStatus, RedpacketStatusView, type RedpacketUiPorts, RedpacketUiProvider, ShareRedPacketModal, createInMemoryRedpacketUiPorts, useRedpacketSession, useRedpacketUiPorts };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
'use strict';var react=require('react'),types=require('@liberfi.io/types'),reactRedpacket=require('@liberfi.io/react-redpacket'),ui=require('@liberfi.io/ui'),i18n=require('@liberfi.io/i18n'),jsxRuntime=require('react/jsx-runtime');function P(e){return {status:e,canSubmit:e!=="signing"&&e!=="submitting"&&e!=="succeeded"&&e!=="already-claimed"}}var F=react.createContext(null);function pe({ports:e,children:t}){return react.createElement(F.Provider,{value:e},t)}function d(){let e=react.useContext(F);if(!e)throw new Error("useRedpacketUiPorts must be used within RedpacketUiProvider");return e}function ue(e={}){let t=e.packets??[{id:"packet-1",shareId:"share-1",status:"ongoing",totalAmount:"10",claimedAmount:"2",claimedCount:1,maxClaims:5,memo:"hello",mint:"mint",creator:"creator"}],o=reactRedpacket.createInMemoryRedpacketPorts({signError:e.signError,alreadyClaimed:e.alreadyClaimed});return {chain:types.Chain.SOLANA,walletAddress:"wallet",requireAuth:async a=>{await a();},navigate:()=>{},fetchPacket:async a=>{let r=t.find(i=>i.shareId===a||i.id===a);if(!r)throw new Error("missing packet");return r},listReceived:async()=>t,listSent:async()=>t,createRuntime:a=>reactRedpacket.createRedpacketRuntime({...o,onChange:a}),shareUrl:a=>`https://app.example.com/redpacket?share=${a}`,copyText:async()=>{}}}var W=react.createContext(null);function ve({shareId:e,children:t}){let{t:o}=i18n.useTranslation(),a=d(),[r,i]=react.useState(null),[c,n]=react.useState(null),[R,w]=react.useState(null);react.useEffect(()=>{if(!e)return;let g=false;return a.fetchPacket(e).then(N=>{if(!g){if(N.status!=="ongoing"){ui.toast.error(o("extend.redpacket.claim.error_red_packet_not_ongoing"));return}i(N);}}).catch(()=>{g||ui.toast.error(o("extend.redpacket.claim.error_fetch_red_packet"));}),()=>{g=true;}},[a,e,o]);let u=react.useMemo(()=>({claimPacket:r,sharePacket:c,viewPacket:R,openClaim:i,openShare:n,openView:w,closeClaim:()=>i(null),closeShare:()=>n(null),closeView:()=>w(null)}),[r,c,R]);return react.createElement(W.Provider,{value:u},t)}function x(){let e=react.useContext(W);if(!e)throw new Error("useRedpacketSession must be used within RedPacketProvider");return e}function y(){return react.useContext(W)}function G(){let e=y();return react.useCallback(t=>{e?.openClaim(t);},[e])}function be(){let{t:e}=i18n.useTranslation(),t=d(),o=G(),[a,r]=react.useState(""),[i,c]=react.useState(false);return jsxRuntime.jsxs("div",{className:"max-w-md max-lg:max-w-full max-lg:px-4 mx-auto flex flex-col",children:[jsxRuntime.jsxs("div",{className:"h-8 max-lg:h-[var(--header-height)] max-lg:pb-2 flex justify-between items-center",children:[jsxRuntime.jsxs("div",{className:"flex items-center",children:[jsxRuntime.jsx(ui.Button,{isIconOnly:true,className:"w-8 min-w-0 h-8 min-h-0 rounded bg-transparent lg:hidden","aria-label":"back",onPress:()=>t.navigate(-1),children:jsxRuntime.jsx(ui.ChevronLeftIcon,{})}),jsxRuntime.jsx("h1",{className:"text-lg font-medium",children:e("extend.redpacket.home.title")})]}),jsxRuntime.jsx(ui.Button,{isIconOnly:true,className:"w-8 min-w-0 h-8 min-h-0 rounded bg-content2","aria-label":e("extend.redpacket.histories.title"),onPress:()=>{t.requireAuth(async()=>{t.navigate("/redpacket/histories");});},children:jsxRuntime.jsx(ui.GiftIcon,{width:16,height:16})})]}),jsxRuntime.jsxs("div",{className:"lg:mt-4 flex flex-col gap-4",children:[jsxRuntime.jsxs("div",{className:"p-4 rounded-lg bg-content2",children:[jsxRuntime.jsx("h2",{className:"text-sm text-neutral",children:e("extend.redpacket.home.create_title")}),jsxRuntime.jsx("div",{className:"flex items-center justify-center py-6",children:jsxRuntime.jsx(ui.GiftIcon,{width:72,height:72})})]}),jsxRuntime.jsx(ui.Button,{fullWidth:true,color:"primary",className:"rounded-lg",onPress:()=>t.navigate("/redpacket/create"),children:e("extend.redpacket.home.create")})]}),jsxRuntime.jsxs("div",{className:"mt-10 flex flex-col gap-4",children:[jsxRuntime.jsx("h2",{className:"text-xs text-neutral",children:e("extend.redpacket.home.claim_title")}),jsxRuntime.jsx(ui.Input,{value:a,placeholder:e("extend.redpacket.home.claim_placeholder"),onValueChange:r}),jsxRuntime.jsx(ui.Button,{fullWidth:true,color:"secondary",className:"rounded-lg",isDisabled:!a,isLoading:i,onPress:()=>{t.requireAuth(async()=>{c(true);try{let n=await t.fetchPacket(a);if(n.status!=="ongoing"){ui.toast.error(e("extend.redpacket.claim.error_red_packet_not_ongoing"));return}o(n);}catch{ui.toast.error(e("extend.redpacket.claim.error_fetch_red_packet"));}finally{c(false);}});},children:e("extend.redpacket.home.claim")}),jsxRuntime.jsx("p",{className:"text-xs text-neutral",children:e("extend.redpacket.home.refund_warning")})]})]})}function K({kind:e}){let{t}=i18n.useTranslation(),o=d(),a=y(),[r,i]=react.useState(""),[c,n]=react.useState(""),[R,w]=react.useState("2"),[u,g]=react.useState(""),[N,ae]=react.useState({status:"idle"}),z=P(N.status),T=Number(c),k=Number(R),D=!r.trim()||!Number.isFinite(T)||T<=0||!Number.isInteger(k)||k<1,oe=react.useMemo(()=>t(e==="fixed"?"extend.redpacket.create.fixed.amount_label":"extend.redpacket.create.random.amount_label"),[e,t]);return jsxRuntime.jsxs("form",{className:"flex flex-col gap-4",onSubmit:re=>{re.preventDefault();let V=o.walletAddress;D||!V||o.requireAuth(async()=>{let v=await o.createRuntime(ae).submit(e==="fixed"?{kind:"create-fixed",intent:{chain:o.chain,creator:V,mint:r.trim(),maxClaims:k,fixedAmount:c,memo:u||void 0}}:{kind:"create-random",intent:{chain:o.chain,creator:V,mint:r.trim(),maxClaims:k,totalAmount:c,memo:u||void 0}});if(v.status==="succeeded"&&v.packetId){ui.toast.success(t("extend.redpacket.create.transaction_submitted")),a?.openShare({id:v.packetId,shareId:v.packetId,status:"ongoing",totalAmount:e==="fixed"?String(T*k):c,maxClaims:k,memo:u,mint:r.trim(),creator:o.walletAddress});return}ui.toast.error(v.error?.message??t("extend.redpacket.create.transaction_error"));});},children:[jsxRuntime.jsx(ui.Input,{label:t("extend.redpacket.create.select_mint_token"),value:r,onValueChange:i}),jsxRuntime.jsx(ui.Input,{label:oe,value:c,onValueChange:n}),jsxRuntime.jsx(ui.Input,{label:t("extend.redpacket.create.max_claims_placeholder"),value:R,onValueChange:w}),jsxRuntime.jsx(ui.Input,{label:t("extend.redpacket.create.memo_placeholder"),value:u,onValueChange:g}),jsxRuntime.jsx(ui.Button,{type:"submit",color:"primary",isDisabled:D||!z.canSubmit,isLoading:!z.canSubmit,children:t("extend.redpacket.create.submit")})]})}function Oe(){let{t:e}=i18n.useTranslation(),t=d(),[o,a]=react.useState("random");return jsxRuntime.jsxs("div",{className:"max-w-md max-lg:max-w-full max-lg:px-4 mx-auto flex flex-col",children:[jsxRuntime.jsx("div",{className:"flex-none h-8 max-lg:h-[var(--header-height)] max-lg:pb-2 flex justify-between items-center",children:jsxRuntime.jsxs("div",{className:"flex items-center",children:[jsxRuntime.jsx(ui.Button,{isIconOnly:true,className:"w-8 min-w-0 h-8 min-h-0 rounded bg-transparent lg:hidden","aria-label":"back",onPress:()=>t.navigate(-1),children:jsxRuntime.jsx(ui.ChevronLeftIcon,{})}),jsxRuntime.jsx("h1",{className:"text-lg font-medium",children:e("extend.redpacket.create.title")})]})}),jsxRuntime.jsxs("div",{className:"flex-none lg:mt-4 flex flex-col gap-2",children:[jsxRuntime.jsxs(ui.Tabs,{fullWidth:true,selectedKey:o,onSelectionChange:r=>a(String(r)),children:[jsxRuntime.jsx(ui.Tab,{title:e("extend.redpacket.create.random.title")},"random"),jsxRuntime.jsx(ui.Tab,{title:e("extend.redpacket.create.fixed.title")},"fixed")]}),jsxRuntime.jsx("p",{className:"text-xs text-neutral",children:e(`extend.redpacket.create.${o}.explained`)})]}),jsxRuntime.jsx("div",{className:"mt-6",children:jsxRuntime.jsx(K,{kind:o})})]})}function Le(){let{t:e}=i18n.useTranslation(),t=d(),o=y(),[a,r]=react.useState("received"),[i,c]=react.useState([]);return react.useEffect(()=>{if(!t.walletAddress){c([]);return}(a==="received"?t.listReceived:t.listSent)(t.walletAddress).then(c);},[t,a]),jsxRuntime.jsxs("div",{className:"max-w-md max-lg:max-w-full max-lg:px-4 mx-auto flex flex-col",children:[jsxRuntime.jsx("div",{className:"flex-none h-8 max-lg:h-[var(--header-height)] max-lg:pb-2 flex justify-between items-center",children:jsxRuntime.jsxs("div",{className:"flex items-center",children:[jsxRuntime.jsx(ui.Button,{isIconOnly:true,className:"w-8 min-w-0 h-8 min-h-0 rounded bg-transparent lg:hidden","aria-label":"back",onPress:()=>t.navigate(-1),children:jsxRuntime.jsx(ui.ChevronLeftIcon,{})}),jsxRuntime.jsx("h1",{className:"text-lg font-medium",children:e("extend.redpacket.histories.title")})]})}),jsxRuntime.jsx("div",{className:"flex-none lg:mt-4 flex flex-col gap-2",children:jsxRuntime.jsxs(ui.Tabs,{fullWidth:true,selectedKey:a,onSelectionChange:n=>r(String(n)),children:[jsxRuntime.jsx(ui.Tab,{title:e("extend.redpacket.histories.received.title")},"received"),jsxRuntime.jsx(ui.Tab,{title:e("extend.redpacket.histories.sent.title")},"sent")]})}),jsxRuntime.jsx("div",{className:"flex-1 mt-2 flex flex-col gap-2",children:i.length===0?jsxRuntime.jsx("p",{className:"text-sm text-neutral py-8 text-center",children:e("extend.redpacket.histories.title")}):i.map(n=>jsxRuntime.jsxs("button",{type:"button",className:"w-full text-left p-3 rounded-lg bg-content2",onClick:()=>a==="sent"?o?.openShare(n):o?.openView(n),children:[jsxRuntime.jsxs("div",{className:"flex justify-between text-sm",children:[jsxRuntime.jsx("span",{children:n.memo||n.shareId}),jsxRuntime.jsx("span",{children:e(`extend.redpacket.histories.sent.status.${n.status}`)})]}),jsxRuntime.jsxs("p",{className:"text-xs text-neutral mt-1",children:[n.claimedCount??0,"/",n.maxClaims," \xB7 ",n.totalAmount]})]},n.id))})]})}function O({packet:e}){return jsxRuntime.jsxs("div",{className:"space-y-2 text-sm",children:[jsxRuntime.jsx("p",{children:e.memo||e.shareId}),jsxRuntime.jsxs("p",{className:"text-neutral",children:[e.claimedCount??0,"/",e.maxClaims," \xB7 ",e.totalAmount]})]})}function qe(){let{t:e}=i18n.useTranslation(),t=d(),o=x(),a=o.claimPacket,r=P("idle");return jsxRuntime.jsx(ui.StyledModal,{isOpen:!!a,onOpenChange:i=>!i&&o.closeClaim(),size:"md",children:jsxRuntime.jsx(ui.ModalContent,{children:a?jsxRuntime.jsxs(ui.ModalBody,{className:"flex flex-col gap-4 p-5",children:[jsxRuntime.jsx("h2",{className:"text-lg font-medium",children:e("extend.redpacket.claim.action")}),jsxRuntime.jsx(O,{packet:a}),jsxRuntime.jsx(ui.Button,{color:"primary",isDisabled:!r.canSubmit||!t.walletAddress,onPress:()=>{t.requireAuth(async()=>{let c=await t.createRuntime().submit({kind:"claim",intent:{chain:t.chain,shareId:a.shareId,claimer:t.walletAddress??""}});if(c.status==="succeeded"){ui.toast.success(e("extend.redpacket.claim.transaction_submitted")),o.closeClaim();return}ui.toast.error(c.error?.message??e("extend.redpacket.claim.transaction_error"));});},children:e("extend.redpacket.claim.action")})]}):null})})}function ze(){let{t:e}=i18n.useTranslation(),t=d(),o=x(),a=o.sharePacket,r=a?t.shareUrl(a.shareId):"";return jsxRuntime.jsx(ui.StyledModal,{isOpen:!!a,onOpenChange:i=>!i&&o.closeShare(),size:"md",children:jsxRuntime.jsx(ui.ModalContent,{children:a?jsxRuntime.jsxs(ui.ModalBody,{className:"flex flex-col gap-4 p-5",children:[jsxRuntime.jsx("h2",{className:"text-lg font-medium",children:e("extend.redpacket.share.title")}),jsxRuntime.jsx(O,{packet:a}),jsxRuntime.jsx("p",{className:"text-xs break-all",children:r}),jsxRuntime.jsx(ui.Button,{color:"primary",onPress:()=>{t.copyText?.(r),ui.toast.success(r);},children:e("extend.redpacket.share.copy_claim_url")})]}):null})})}function De(){let e=x(),t=e.viewPacket;return jsxRuntime.jsx(ui.StyledModal,{isOpen:!!t,onOpenChange:o=>!o&&e.closeView(),size:"md",children:jsxRuntime.jsx(ui.ModalContent,{children:t?jsxRuntime.jsx(ui.ModalBody,{className:"p-5",children:jsxRuntime.jsx(O,{packet:t})}):null})})}function Fe(){let{t:e}=i18n.useTranslation(),o=x().viewPacket;return jsxRuntime.jsx(ui.StyledModal,{isOpen:false,onOpenChange:()=>{},size:"md",children:jsxRuntime.jsx(ui.ModalContent,{children:jsxRuntime.jsxs(ui.ModalBody,{className:"p-5",children:[jsxRuntime.jsx("h2",{className:"text-lg font-medium",children:e("extend.redpacket.claims.title")}),o?jsxRuntime.jsx(O,{packet:o}):null]})})})}var He="@liberfi.io/ui-redpacket";function Kt(){return He}
|
|
2
|
+
Object.defineProperty(exports,"redpacketStatus",{enumerable:true,get:function(){return reactRedpacket.redpacketRecordStatus}});exports.ClaimRedPacketModal=qe;exports.PACKAGE_NAME=He;exports.RedPacketClaimsModal=Fe;exports.RedPacketCreateForm=K;exports.RedPacketCreatePage=Oe;exports.RedPacketHistoriesPage=Le;exports.RedPacketHomePage=be;exports.RedPacketModal=De;exports.RedPacketProvider=ve;exports.RedpacketReadyWidget=Kt;exports.RedpacketStatusView=P;exports.RedpacketUiProvider=pe;exports.ShareRedPacketModal=ze;exports.createInMemoryRedpacketUiPorts=ue;exports.useRedpacketSession=x;exports.useRedpacketUiPorts=d;//# sourceMappingURL=index.js.map
|
|
3
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/status.view.ts","../src/ports.tsx","../src/session.tsx","../src/RedPacketHomePage.tsx","../src/RedPacketCreateForm.tsx","../src/RedPacketCreatePage.tsx","../src/RedPacketHistoriesPage.tsx","../src/modals.tsx","../src/index.ts"],"names":["RedpacketStatusView","status","RedpacketUiPortsContext","createContext","RedpacketUiProvider","ports","children","createElement","useRedpacketUiPorts","useContext","createInMemoryRedpacketUiPorts","options","packets","memory","createInMemoryRedpacketPorts","Chain","action","shareId","found","packet","onChange","createRedpacketRuntime","RedpacketSessionContext","RedPacketProvider","t","useTranslation","claimPacket","setClaimPacket","useState","sharePacket","setSharePacket","viewPacket","setViewPacket","useEffect","cancelled","toast","value","useMemo","useRedpacketSession","session","useOptionalRedpacketSession","useOpenClaim","useCallback","RedPacketHomePage","openClaim","shareCode","setShareCode","claiming","setClaiming","jsxs","jsx","Button","ChevronLeftIcon","GiftIcon","Input","RedPacketCreateForm","kind","mint","setMint","amount","setAmount","maxClaims","setMaxClaims","memo","setMemo","snapshot","setSnapshot","view","amountNumber","claimsNumber","invalid","amountLabel","event","creator","result","RedPacketCreatePage","type","setType","Tabs","key","Tab","RedPacketHistoriesPage","records","setRecords","record","PacketSummary","ClaimRedPacketModal","StyledModal","open","ModalContent","ModalBody","ShareRedPacketModal","url","RedPacketModal","RedPacketClaimsModal","PACKAGE_NAME","RedpacketReadyWidget"],"mappings":"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","file":"index.js","sourcesContent":["import type { RedpacketIntentStatus } from \"@liberfi.io/react-redpacket\";\n\nexport function RedpacketStatusView(status: RedpacketIntentStatus): {\n status: RedpacketIntentStatus;\n canSubmit: boolean;\n} {\n return {\n status,\n canSubmit:\n status !== \"signing\" &&\n status !== \"submitting\" &&\n status !== \"succeeded\" &&\n status !== \"already-claimed\",\n };\n}\n","import {\n createContext,\n createElement,\n useContext,\n type PropsWithChildren,\n} from \"react\";\nimport { Chain } from \"@liberfi.io/types\";\nimport {\n createInMemoryRedpacketPorts,\n createRedpacketRuntime,\n redpacketRecordStatus,\n type RedpacketRecord,\n type RedpacketSnapshot,\n} from \"@liberfi.io/react-redpacket\";\n\nexport type { RedpacketRecord };\nexport type RedpacketStatus = RedpacketRecord[\"status\"];\n\nexport type RedpacketUiPorts = {\n chain: Chain;\n walletAddress?: string;\n requireAuth: (action: () => Promise<void>) => Promise<void>;\n navigate: (to: string | number) => void;\n fetchPacket: (shareId: string) => Promise<RedpacketRecord>;\n listReceived: (address: string) => Promise<RedpacketRecord[]>;\n listSent: (address: string) => Promise<RedpacketRecord[]>;\n createRuntime: (onChange?: (snapshot: RedpacketSnapshot) => void) => ReturnType<\n typeof createRedpacketRuntime\n >;\n shareUrl: (shareId: string) => string;\n copyText?: (text: string) => Promise<void> | void;\n};\n\nconst RedpacketUiPortsContext = createContext<RedpacketUiPorts | null>(null);\n\nexport function RedpacketUiProvider({\n ports,\n children,\n}: PropsWithChildren<{ ports: RedpacketUiPorts }>) {\n return createElement(RedpacketUiPortsContext.Provider, { value: ports }, children);\n}\n\nexport function useRedpacketUiPorts(): RedpacketUiPorts {\n const ports = useContext(RedpacketUiPortsContext);\n if (!ports) {\n throw new Error(\"useRedpacketUiPorts must be used within RedpacketUiProvider\");\n }\n return ports;\n}\n\nexport function createInMemoryRedpacketUiPorts(\n options: {\n packets?: RedpacketRecord[];\n signError?: Error;\n alreadyClaimed?: boolean;\n } = {},\n): RedpacketUiPorts {\n const packets = options.packets ?? [\n {\n id: \"packet-1\",\n shareId: \"share-1\",\n status: \"ongoing\",\n totalAmount: \"10\",\n claimedAmount: \"2\",\n claimedCount: 1,\n maxClaims: 5,\n memo: \"hello\",\n mint: \"mint\",\n creator: \"creator\",\n },\n ];\n const memory = createInMemoryRedpacketPorts({\n signError: options.signError,\n alreadyClaimed: options.alreadyClaimed,\n });\n return {\n chain: Chain.SOLANA,\n walletAddress: \"wallet\",\n requireAuth: async (action) => {\n await action();\n },\n navigate: () => undefined,\n fetchPacket: async (shareId) => {\n const found = packets.find((packet) => packet.shareId === shareId || packet.id === shareId);\n if (!found) throw new Error(\"missing packet\");\n return found;\n },\n listReceived: async () => packets,\n listSent: async () => packets,\n createRuntime: (onChange) =>\n createRedpacketRuntime({\n ...memory,\n onChange,\n }),\n shareUrl: (shareId) => `https://app.example.com/redpacket?share=${shareId}`,\n copyText: async () => undefined,\n };\n}\n\nexport { redpacketRecordStatus as redpacketStatus };\n","import {\n createContext,\n createElement,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n type PropsWithChildren,\n} from \"react\";\nimport { toast } from \"@liberfi.io/ui\";\nimport { useTranslation } from \"@liberfi.io/i18n\";\nimport { useRedpacketUiPorts, type RedpacketRecord } from \"./ports\";\n\ntype RedpacketSession = {\n claimPacket: RedpacketRecord | null;\n sharePacket: RedpacketRecord | null;\n viewPacket: RedpacketRecord | null;\n openClaim: (packet: RedpacketRecord) => void;\n openShare: (packet: RedpacketRecord) => void;\n openView: (packet: RedpacketRecord) => void;\n closeClaim: () => void;\n closeShare: () => void;\n closeView: () => void;\n};\n\nconst RedpacketSessionContext = createContext<RedpacketSession | null>(null);\n\nexport function RedPacketProvider({\n shareId,\n children,\n}: PropsWithChildren<{ shareId?: string }>) {\n const { t } = useTranslation();\n const ports = useRedpacketUiPorts();\n const [claimPacket, setClaimPacket] = useState<RedpacketRecord | null>(null);\n const [sharePacket, setSharePacket] = useState<RedpacketRecord | null>(null);\n const [viewPacket, setViewPacket] = useState<RedpacketRecord | null>(null);\n\n useEffect(() => {\n if (!shareId) return;\n let cancelled = false;\n void ports\n .fetchPacket(shareId)\n .then((packet) => {\n if (cancelled) return;\n if (packet.status !== \"ongoing\") {\n toast.error(t(\"extend.redpacket.claim.error_red_packet_not_ongoing\"));\n return;\n }\n setClaimPacket(packet);\n })\n .catch(() => {\n if (!cancelled) toast.error(t(\"extend.redpacket.claim.error_fetch_red_packet\"));\n });\n return () => {\n cancelled = true;\n };\n }, [ports, shareId, t]);\n\n const value = useMemo<RedpacketSession>(\n () => ({\n claimPacket,\n sharePacket,\n viewPacket,\n openClaim: setClaimPacket,\n openShare: setSharePacket,\n openView: setViewPacket,\n closeClaim: () => setClaimPacket(null),\n closeShare: () => setSharePacket(null),\n closeView: () => setViewPacket(null),\n }),\n [claimPacket, sharePacket, viewPacket],\n );\n\n return createElement(RedpacketSessionContext.Provider, { value }, children);\n}\n\nexport function useRedpacketSession(): RedpacketSession {\n const session = useContext(RedpacketSessionContext);\n if (!session) {\n throw new Error(\"useRedpacketSession must be used within RedPacketProvider\");\n }\n return session;\n}\n\nexport function useOptionalRedpacketSession(): RedpacketSession | null {\n return useContext(RedpacketSessionContext);\n}\n\nexport function useOpenClaim() {\n const session = useOptionalRedpacketSession();\n return useCallback(\n (packet: RedpacketRecord) => {\n session?.openClaim(packet);\n },\n [session],\n );\n}\n","import { useState } from \"react\";\nimport { useTranslation } from \"@liberfi.io/i18n\";\nimport { Button, ChevronLeftIcon, GiftIcon, Input, toast } from \"@liberfi.io/ui\";\nimport { useRedpacketUiPorts } from \"./ports\";\nimport { useOpenClaim } from \"./session\";\n\nexport function RedPacketHomePage() {\n const { t } = useTranslation();\n const ports = useRedpacketUiPorts();\n const openClaim = useOpenClaim();\n const [shareCode, setShareCode] = useState(\"\");\n const [claiming, setClaiming] = useState(false);\n\n return (\n <div className=\"max-w-md max-lg:max-w-full max-lg:px-4 mx-auto flex flex-col\">\n <div className=\"h-8 max-lg:h-[var(--header-height)] max-lg:pb-2 flex justify-between items-center\">\n <div className=\"flex items-center\">\n <Button\n isIconOnly\n className=\"w-8 min-w-0 h-8 min-h-0 rounded bg-transparent lg:hidden\"\n aria-label=\"back\"\n onPress={() => ports.navigate(-1)}\n >\n <ChevronLeftIcon />\n </Button>\n <h1 className=\"text-lg font-medium\">{t(\"extend.redpacket.home.title\")}</h1>\n </div>\n <Button\n isIconOnly\n className=\"w-8 min-w-0 h-8 min-h-0 rounded bg-content2\"\n aria-label={t(\"extend.redpacket.histories.title\")}\n onPress={() =>\n void ports.requireAuth(async () => {\n ports.navigate(\"/redpacket/histories\");\n })\n }\n >\n <GiftIcon width={16} height={16} />\n </Button>\n </div>\n\n <div className=\"lg:mt-4 flex flex-col gap-4\">\n <div className=\"p-4 rounded-lg bg-content2\">\n <h2 className=\"text-sm text-neutral\">{t(\"extend.redpacket.home.create_title\")}</h2>\n <div className=\"flex items-center justify-center py-6\">\n <GiftIcon width={72} height={72} />\n </div>\n </div>\n <Button\n fullWidth\n color=\"primary\"\n className=\"rounded-lg\"\n onPress={() => ports.navigate(\"/redpacket/create\")}\n >\n {t(\"extend.redpacket.home.create\")}\n </Button>\n </div>\n\n <div className=\"mt-10 flex flex-col gap-4\">\n <h2 className=\"text-xs text-neutral\">{t(\"extend.redpacket.home.claim_title\")}</h2>\n <Input\n value={shareCode}\n placeholder={t(\"extend.redpacket.home.claim_placeholder\")}\n onValueChange={setShareCode}\n />\n <Button\n fullWidth\n color=\"secondary\"\n className=\"rounded-lg\"\n isDisabled={!shareCode}\n isLoading={claiming}\n onPress={() =>\n void ports.requireAuth(async () => {\n setClaiming(true);\n try {\n const packet = await ports.fetchPacket(shareCode);\n if (packet.status !== \"ongoing\") {\n toast.error(t(\"extend.redpacket.claim.error_red_packet_not_ongoing\"));\n return;\n }\n openClaim(packet);\n } catch {\n toast.error(t(\"extend.redpacket.claim.error_fetch_red_packet\"));\n } finally {\n setClaiming(false);\n }\n })\n }\n >\n {t(\"extend.redpacket.home.claim\")}\n </Button>\n <p className=\"text-xs text-neutral\">{t(\"extend.redpacket.home.refund_warning\")}</p>\n </div>\n </div>\n );\n}\n","import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"@liberfi.io/i18n\";\nimport type { RedpacketSnapshot } from \"@liberfi.io/react-redpacket\";\nimport { Button, Input, toast } from \"@liberfi.io/ui\";\nimport { RedpacketStatusView } from \"./status.view\";\nimport { useRedpacketUiPorts } from \"./ports\";\nimport { useOptionalRedpacketSession } from \"./session\";\n\nexport function RedPacketCreateForm({ kind }: { kind: \"fixed\" | \"random\" }) {\n const { t } = useTranslation();\n const ports = useRedpacketUiPorts();\n const session = useOptionalRedpacketSession();\n const [mint, setMint] = useState(\"\");\n const [amount, setAmount] = useState(\"\");\n const [maxClaims, setMaxClaims] = useState(\"2\");\n const [memo, setMemo] = useState(\"\");\n const [snapshot, setSnapshot] = useState<RedpacketSnapshot>({ status: \"idle\" });\n const view = RedpacketStatusView(snapshot.status);\n const amountNumber = Number(amount);\n const claimsNumber = Number(maxClaims);\n const invalid =\n !mint.trim() ||\n !Number.isFinite(amountNumber) ||\n amountNumber <= 0 ||\n !Number.isInteger(claimsNumber) ||\n claimsNumber < 1;\n\n const amountLabel = useMemo(\n () =>\n kind === \"fixed\"\n ? t(\"extend.redpacket.create.fixed.amount_label\")\n : t(\"extend.redpacket.create.random.amount_label\"),\n [kind, t],\n );\n\n return (\n <form\n className=\"flex flex-col gap-4\"\n onSubmit={(event) => {\n event.preventDefault();\n const creator = ports.walletAddress;\n if (invalid || !creator) return;\n void ports.requireAuth(async () => {\n const runtime = ports.createRuntime(setSnapshot);\n const result = await runtime.submit(\n kind === \"fixed\"\n ? {\n kind: \"create-fixed\",\n intent: {\n chain: ports.chain,\n creator,\n mint: mint.trim(),\n maxClaims: claimsNumber,\n fixedAmount: amount,\n memo: memo || undefined,\n },\n }\n : {\n kind: \"create-random\",\n intent: {\n chain: ports.chain,\n creator,\n mint: mint.trim(),\n maxClaims: claimsNumber,\n totalAmount: amount,\n memo: memo || undefined,\n },\n },\n );\n if (result.status === \"succeeded\" && result.packetId) {\n toast.success(t(\"extend.redpacket.create.transaction_submitted\"));\n session?.openShare({\n id: result.packetId,\n shareId: result.packetId,\n status: \"ongoing\",\n totalAmount: kind === \"fixed\" ? String(amountNumber * claimsNumber) : amount,\n maxClaims: claimsNumber,\n memo,\n mint: mint.trim(),\n creator: ports.walletAddress,\n });\n return;\n }\n toast.error(result.error?.message ?? t(\"extend.redpacket.create.transaction_error\"));\n });\n }}\n >\n <Input\n label={t(\"extend.redpacket.create.select_mint_token\")}\n value={mint}\n onValueChange={setMint}\n />\n <Input label={amountLabel} value={amount} onValueChange={setAmount} />\n <Input\n label={t(\"extend.redpacket.create.max_claims_placeholder\")}\n value={maxClaims}\n onValueChange={setMaxClaims}\n />\n <Input\n label={t(\"extend.redpacket.create.memo_placeholder\")}\n value={memo}\n onValueChange={setMemo}\n />\n <Button\n type=\"submit\"\n color=\"primary\"\n isDisabled={invalid || !view.canSubmit}\n isLoading={!view.canSubmit}\n >\n {t(\"extend.redpacket.create.submit\")}\n </Button>\n </form>\n );\n}\n","import { useState, type Key } from \"react\";\nimport { useTranslation } from \"@liberfi.io/i18n\";\nimport { Button, ChevronLeftIcon, Tab, Tabs } from \"@liberfi.io/ui\";\nimport { RedPacketCreateForm } from \"./RedPacketCreateForm\";\nimport { useRedpacketUiPorts } from \"./ports\";\n\nexport function RedPacketCreatePage() {\n const { t } = useTranslation();\n const ports = useRedpacketUiPorts();\n const [type, setType] = useState<\"random\" | \"fixed\">(\"random\");\n\n return (\n <div className=\"max-w-md max-lg:max-w-full max-lg:px-4 mx-auto flex flex-col\">\n <div className=\"flex-none h-8 max-lg:h-[var(--header-height)] max-lg:pb-2 flex justify-between items-center\">\n <div className=\"flex items-center\">\n <Button\n isIconOnly\n className=\"w-8 min-w-0 h-8 min-h-0 rounded bg-transparent lg:hidden\"\n aria-label=\"back\"\n onPress={() => ports.navigate(-1)}\n >\n <ChevronLeftIcon />\n </Button>\n <h1 className=\"text-lg font-medium\">{t(\"extend.redpacket.create.title\")}</h1>\n </div>\n </div>\n <div className=\"flex-none lg:mt-4 flex flex-col gap-2\">\n <Tabs\n fullWidth\n selectedKey={type}\n onSelectionChange={(key: Key) => setType(String(key) as \"random\" | \"fixed\")}\n >\n <Tab key=\"random\" title={t(\"extend.redpacket.create.random.title\")} />\n <Tab key=\"fixed\" title={t(\"extend.redpacket.create.fixed.title\")} />\n </Tabs>\n <p className=\"text-xs text-neutral\">{t(`extend.redpacket.create.${type}.explained`)}</p>\n </div>\n <div className=\"mt-6\">\n <RedPacketCreateForm kind={type} />\n </div>\n </div>\n );\n}\n","import { useEffect, useState, type Key } from \"react\";\nimport { useTranslation } from \"@liberfi.io/i18n\";\nimport { Button, ChevronLeftIcon, Tab, Tabs } from \"@liberfi.io/ui\";\nimport { useRedpacketUiPorts, type RedpacketRecord } from \"./ports\";\nimport { useOptionalRedpacketSession } from \"./session\";\n\nexport function RedPacketHistoriesPage() {\n const { t } = useTranslation();\n const ports = useRedpacketUiPorts();\n const session = useOptionalRedpacketSession();\n const [type, setType] = useState<\"received\" | \"sent\">(\"received\");\n const [records, setRecords] = useState<RedpacketRecord[]>([]);\n\n useEffect(() => {\n if (!ports.walletAddress) {\n setRecords([]);\n return;\n }\n const loader = type === \"received\" ? ports.listReceived : ports.listSent;\n void loader(ports.walletAddress).then(setRecords);\n }, [ports, type]);\n\n return (\n <div className=\"max-w-md max-lg:max-w-full max-lg:px-4 mx-auto flex flex-col\">\n <div className=\"flex-none h-8 max-lg:h-[var(--header-height)] max-lg:pb-2 flex justify-between items-center\">\n <div className=\"flex items-center\">\n <Button\n isIconOnly\n className=\"w-8 min-w-0 h-8 min-h-0 rounded bg-transparent lg:hidden\"\n aria-label=\"back\"\n onPress={() => ports.navigate(-1)}\n >\n <ChevronLeftIcon />\n </Button>\n <h1 className=\"text-lg font-medium\">{t(\"extend.redpacket.histories.title\")}</h1>\n </div>\n </div>\n <div className=\"flex-none lg:mt-4 flex flex-col gap-2\">\n <Tabs\n fullWidth\n selectedKey={type}\n onSelectionChange={(key: Key) => setType(String(key) as \"received\" | \"sent\")}\n >\n <Tab key=\"received\" title={t(\"extend.redpacket.histories.received.title\")} />\n <Tab key=\"sent\" title={t(\"extend.redpacket.histories.sent.title\")} />\n </Tabs>\n </div>\n <div className=\"flex-1 mt-2 flex flex-col gap-2\">\n {records.length === 0 ? (\n <p className=\"text-sm text-neutral py-8 text-center\">{t(\"extend.redpacket.histories.title\")}</p>\n ) : (\n records.map((record) => (\n <button\n key={record.id}\n type=\"button\"\n className=\"w-full text-left p-3 rounded-lg bg-content2\"\n onClick={() => (type === \"sent\" ? session?.openShare(record) : session?.openView(record))}\n >\n <div className=\"flex justify-between text-sm\">\n <span>{record.memo || record.shareId}</span>\n <span>{t(`extend.redpacket.histories.sent.status.${record.status}`)}</span>\n </div>\n <p className=\"text-xs text-neutral mt-1\">\n {record.claimedCount ?? 0}/{record.maxClaims} · {record.totalAmount}\n </p>\n </button>\n ))\n )}\n </div>\n </div>\n );\n}\n","import { useTranslation } from \"@liberfi.io/i18n\";\nimport {\n Button,\n ModalBody,\n ModalContent,\n StyledModal,\n toast,\n} from \"@liberfi.io/ui\";\nimport { RedpacketStatusView } from \"./status.view\";\nimport { useRedpacketUiPorts, type RedpacketRecord } from \"./ports\";\nimport { useRedpacketSession } from \"./session\";\n\nfunction PacketSummary({ packet }: { packet: RedpacketRecord }) {\n return (\n <div className=\"space-y-2 text-sm\">\n <p>{packet.memo || packet.shareId}</p>\n <p className=\"text-neutral\">\n {packet.claimedCount ?? 0}/{packet.maxClaims} · {packet.totalAmount}\n </p>\n </div>\n );\n}\n\nexport function ClaimRedPacketModal() {\n const { t } = useTranslation();\n const ports = useRedpacketUiPorts();\n const session = useRedpacketSession();\n const packet = session.claimPacket;\n const view = RedpacketStatusView(\"idle\");\n\n return (\n <StyledModal isOpen={!!packet} onOpenChange={(open) => !open && session.closeClaim()} size=\"md\">\n <ModalContent>\n {packet ? (\n <ModalBody className=\"flex flex-col gap-4 p-5\">\n <h2 className=\"text-lg font-medium\">{t(\"extend.redpacket.claim.action\")}</h2>\n <PacketSummary packet={packet} />\n <Button\n color=\"primary\"\n isDisabled={!view.canSubmit || !ports.walletAddress}\n onPress={() =>\n void ports.requireAuth(async () => {\n const runtime = ports.createRuntime();\n const result = await runtime.submit({\n kind: \"claim\",\n intent: {\n chain: ports.chain,\n shareId: packet.shareId,\n claimer: ports.walletAddress ?? \"\",\n },\n });\n if (result.status === \"succeeded\") {\n toast.success(t(\"extend.redpacket.claim.transaction_submitted\"));\n session.closeClaim();\n return;\n }\n toast.error(result.error?.message ?? t(\"extend.redpacket.claim.transaction_error\"));\n })\n }\n >\n {t(\"extend.redpacket.claim.action\")}\n </Button>\n </ModalBody>\n ) : null}\n </ModalContent>\n </StyledModal>\n );\n}\n\nexport function ShareRedPacketModal() {\n const { t } = useTranslation();\n const ports = useRedpacketUiPorts();\n const session = useRedpacketSession();\n const packet = session.sharePacket;\n const url = packet ? ports.shareUrl(packet.shareId) : \"\";\n\n return (\n <StyledModal isOpen={!!packet} onOpenChange={(open) => !open && session.closeShare()} size=\"md\">\n <ModalContent>\n {packet ? (\n <ModalBody className=\"flex flex-col gap-4 p-5\">\n <h2 className=\"text-lg font-medium\">{t(\"extend.redpacket.share.title\")}</h2>\n <PacketSummary packet={packet} />\n <p className=\"text-xs break-all\">{url}</p>\n <Button\n color=\"primary\"\n onPress={() => {\n void ports.copyText?.(url);\n toast.success(url);\n }}\n >\n {t(\"extend.redpacket.share.copy_claim_url\")}\n </Button>\n </ModalBody>\n ) : null}\n </ModalContent>\n </StyledModal>\n );\n}\n\nexport function RedPacketModal() {\n const session = useRedpacketSession();\n const packet = session.viewPacket;\n return (\n <StyledModal isOpen={!!packet} onOpenChange={(open) => !open && session.closeView()} size=\"md\">\n <ModalContent>\n {packet ? (\n <ModalBody className=\"p-5\">\n <PacketSummary packet={packet} />\n </ModalBody>\n ) : null}\n </ModalContent>\n </StyledModal>\n );\n}\n\nexport function RedPacketClaimsModal() {\n const { t } = useTranslation();\n const session = useRedpacketSession();\n const packet = session.viewPacket;\n return (\n <StyledModal isOpen={false} onOpenChange={() => undefined} size=\"md\">\n <ModalContent>\n <ModalBody className=\"p-5\">\n <h2 className=\"text-lg font-medium\">{t(\"extend.redpacket.claims.title\")}</h2>\n {packet ? <PacketSummary packet={packet} /> : null}\n </ModalBody>\n </ModalContent>\n </StyledModal>\n );\n}\n","export const PACKAGE_NAME = \"@liberfi.io/ui-redpacket\" as const;\n\nexport function RedpacketReadyWidget() {\n return PACKAGE_NAME;\n}\n\nexport { RedpacketStatusView } from \"./status.view\";\nexport {\n RedpacketUiProvider,\n useRedpacketUiPorts,\n createInMemoryRedpacketUiPorts,\n redpacketStatus,\n type RedpacketUiPorts,\n type RedpacketRecord,\n type RedpacketStatus,\n} from \"./ports\";\nexport { RedPacketProvider, useRedpacketSession } from \"./session\";\nexport { RedPacketHomePage } from \"./RedPacketHomePage\";\nexport { RedPacketCreatePage } from \"./RedPacketCreatePage\";\nexport { RedPacketHistoriesPage } from \"./RedPacketHistoriesPage\";\nexport { RedPacketCreateForm } from \"./RedPacketCreateForm\";\nexport {\n ClaimRedPacketModal,\n ShareRedPacketModal,\n RedPacketModal,\n RedPacketClaimsModal,\n} from \"./modals\";\n"]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import {createContext,createElement,useContext,useState,useEffect,useMemo,useCallback}from'react';import {Chain}from'@liberfi.io/types';import {createInMemoryRedpacketPorts,createRedpacketRuntime}from'@liberfi.io/react-redpacket';export{redpacketRecordStatus as redpacketStatus}from'@liberfi.io/react-redpacket';import {toast,Button,ChevronLeftIcon,GiftIcon,Input,Tabs,Tab,StyledModal,ModalContent,ModalBody}from'@liberfi.io/ui';import {useTranslation}from'@liberfi.io/i18n';import {jsxs,jsx}from'react/jsx-runtime';function P(e){return {status:e,canSubmit:e!=="signing"&&e!=="submitting"&&e!=="succeeded"&&e!=="already-claimed"}}var F=createContext(null);function pe({ports:e,children:t}){return createElement(F.Provider,{value:e},t)}function d(){let e=useContext(F);if(!e)throw new Error("useRedpacketUiPorts must be used within RedpacketUiProvider");return e}function ue(e={}){let t=e.packets??[{id:"packet-1",shareId:"share-1",status:"ongoing",totalAmount:"10",claimedAmount:"2",claimedCount:1,maxClaims:5,memo:"hello",mint:"mint",creator:"creator"}],o=createInMemoryRedpacketPorts({signError:e.signError,alreadyClaimed:e.alreadyClaimed});return {chain:Chain.SOLANA,walletAddress:"wallet",requireAuth:async a=>{await a();},navigate:()=>{},fetchPacket:async a=>{let r=t.find(i=>i.shareId===a||i.id===a);if(!r)throw new Error("missing packet");return r},listReceived:async()=>t,listSent:async()=>t,createRuntime:a=>createRedpacketRuntime({...o,onChange:a}),shareUrl:a=>`https://app.example.com/redpacket?share=${a}`,copyText:async()=>{}}}var W=createContext(null);function ve({shareId:e,children:t}){let{t:o}=useTranslation(),a=d(),[r,i]=useState(null),[c,n]=useState(null),[R,w]=useState(null);useEffect(()=>{if(!e)return;let g=false;return a.fetchPacket(e).then(N=>{if(!g){if(N.status!=="ongoing"){toast.error(o("extend.redpacket.claim.error_red_packet_not_ongoing"));return}i(N);}}).catch(()=>{g||toast.error(o("extend.redpacket.claim.error_fetch_red_packet"));}),()=>{g=true;}},[a,e,o]);let u=useMemo(()=>({claimPacket:r,sharePacket:c,viewPacket:R,openClaim:i,openShare:n,openView:w,closeClaim:()=>i(null),closeShare:()=>n(null),closeView:()=>w(null)}),[r,c,R]);return createElement(W.Provider,{value:u},t)}function x(){let e=useContext(W);if(!e)throw new Error("useRedpacketSession must be used within RedPacketProvider");return e}function y(){return useContext(W)}function G(){let e=y();return useCallback(t=>{e?.openClaim(t);},[e])}function be(){let{t:e}=useTranslation(),t=d(),o=G(),[a,r]=useState(""),[i,c]=useState(false);return jsxs("div",{className:"max-w-md max-lg:max-w-full max-lg:px-4 mx-auto flex flex-col",children:[jsxs("div",{className:"h-8 max-lg:h-[var(--header-height)] max-lg:pb-2 flex justify-between items-center",children:[jsxs("div",{className:"flex items-center",children:[jsx(Button,{isIconOnly:true,className:"w-8 min-w-0 h-8 min-h-0 rounded bg-transparent lg:hidden","aria-label":"back",onPress:()=>t.navigate(-1),children:jsx(ChevronLeftIcon,{})}),jsx("h1",{className:"text-lg font-medium",children:e("extend.redpacket.home.title")})]}),jsx(Button,{isIconOnly:true,className:"w-8 min-w-0 h-8 min-h-0 rounded bg-content2","aria-label":e("extend.redpacket.histories.title"),onPress:()=>{t.requireAuth(async()=>{t.navigate("/redpacket/histories");});},children:jsx(GiftIcon,{width:16,height:16})})]}),jsxs("div",{className:"lg:mt-4 flex flex-col gap-4",children:[jsxs("div",{className:"p-4 rounded-lg bg-content2",children:[jsx("h2",{className:"text-sm text-neutral",children:e("extend.redpacket.home.create_title")}),jsx("div",{className:"flex items-center justify-center py-6",children:jsx(GiftIcon,{width:72,height:72})})]}),jsx(Button,{fullWidth:true,color:"primary",className:"rounded-lg",onPress:()=>t.navigate("/redpacket/create"),children:e("extend.redpacket.home.create")})]}),jsxs("div",{className:"mt-10 flex flex-col gap-4",children:[jsx("h2",{className:"text-xs text-neutral",children:e("extend.redpacket.home.claim_title")}),jsx(Input,{value:a,placeholder:e("extend.redpacket.home.claim_placeholder"),onValueChange:r}),jsx(Button,{fullWidth:true,color:"secondary",className:"rounded-lg",isDisabled:!a,isLoading:i,onPress:()=>{t.requireAuth(async()=>{c(true);try{let n=await t.fetchPacket(a);if(n.status!=="ongoing"){toast.error(e("extend.redpacket.claim.error_red_packet_not_ongoing"));return}o(n);}catch{toast.error(e("extend.redpacket.claim.error_fetch_red_packet"));}finally{c(false);}});},children:e("extend.redpacket.home.claim")}),jsx("p",{className:"text-xs text-neutral",children:e("extend.redpacket.home.refund_warning")})]})]})}function K({kind:e}){let{t}=useTranslation(),o=d(),a=y(),[r,i]=useState(""),[c,n]=useState(""),[R,w]=useState("2"),[u,g]=useState(""),[N,ae]=useState({status:"idle"}),z=P(N.status),T=Number(c),k=Number(R),D=!r.trim()||!Number.isFinite(T)||T<=0||!Number.isInteger(k)||k<1,oe=useMemo(()=>t(e==="fixed"?"extend.redpacket.create.fixed.amount_label":"extend.redpacket.create.random.amount_label"),[e,t]);return jsxs("form",{className:"flex flex-col gap-4",onSubmit:re=>{re.preventDefault();let V=o.walletAddress;D||!V||o.requireAuth(async()=>{let v=await o.createRuntime(ae).submit(e==="fixed"?{kind:"create-fixed",intent:{chain:o.chain,creator:V,mint:r.trim(),maxClaims:k,fixedAmount:c,memo:u||void 0}}:{kind:"create-random",intent:{chain:o.chain,creator:V,mint:r.trim(),maxClaims:k,totalAmount:c,memo:u||void 0}});if(v.status==="succeeded"&&v.packetId){toast.success(t("extend.redpacket.create.transaction_submitted")),a?.openShare({id:v.packetId,shareId:v.packetId,status:"ongoing",totalAmount:e==="fixed"?String(T*k):c,maxClaims:k,memo:u,mint:r.trim(),creator:o.walletAddress});return}toast.error(v.error?.message??t("extend.redpacket.create.transaction_error"));});},children:[jsx(Input,{label:t("extend.redpacket.create.select_mint_token"),value:r,onValueChange:i}),jsx(Input,{label:oe,value:c,onValueChange:n}),jsx(Input,{label:t("extend.redpacket.create.max_claims_placeholder"),value:R,onValueChange:w}),jsx(Input,{label:t("extend.redpacket.create.memo_placeholder"),value:u,onValueChange:g}),jsx(Button,{type:"submit",color:"primary",isDisabled:D||!z.canSubmit,isLoading:!z.canSubmit,children:t("extend.redpacket.create.submit")})]})}function Oe(){let{t:e}=useTranslation(),t=d(),[o,a]=useState("random");return jsxs("div",{className:"max-w-md max-lg:max-w-full max-lg:px-4 mx-auto flex flex-col",children:[jsx("div",{className:"flex-none h-8 max-lg:h-[var(--header-height)] max-lg:pb-2 flex justify-between items-center",children:jsxs("div",{className:"flex items-center",children:[jsx(Button,{isIconOnly:true,className:"w-8 min-w-0 h-8 min-h-0 rounded bg-transparent lg:hidden","aria-label":"back",onPress:()=>t.navigate(-1),children:jsx(ChevronLeftIcon,{})}),jsx("h1",{className:"text-lg font-medium",children:e("extend.redpacket.create.title")})]})}),jsxs("div",{className:"flex-none lg:mt-4 flex flex-col gap-2",children:[jsxs(Tabs,{fullWidth:true,selectedKey:o,onSelectionChange:r=>a(String(r)),children:[jsx(Tab,{title:e("extend.redpacket.create.random.title")},"random"),jsx(Tab,{title:e("extend.redpacket.create.fixed.title")},"fixed")]}),jsx("p",{className:"text-xs text-neutral",children:e(`extend.redpacket.create.${o}.explained`)})]}),jsx("div",{className:"mt-6",children:jsx(K,{kind:o})})]})}function Le(){let{t:e}=useTranslation(),t=d(),o=y(),[a,r]=useState("received"),[i,c]=useState([]);return useEffect(()=>{if(!t.walletAddress){c([]);return}(a==="received"?t.listReceived:t.listSent)(t.walletAddress).then(c);},[t,a]),jsxs("div",{className:"max-w-md max-lg:max-w-full max-lg:px-4 mx-auto flex flex-col",children:[jsx("div",{className:"flex-none h-8 max-lg:h-[var(--header-height)] max-lg:pb-2 flex justify-between items-center",children:jsxs("div",{className:"flex items-center",children:[jsx(Button,{isIconOnly:true,className:"w-8 min-w-0 h-8 min-h-0 rounded bg-transparent lg:hidden","aria-label":"back",onPress:()=>t.navigate(-1),children:jsx(ChevronLeftIcon,{})}),jsx("h1",{className:"text-lg font-medium",children:e("extend.redpacket.histories.title")})]})}),jsx("div",{className:"flex-none lg:mt-4 flex flex-col gap-2",children:jsxs(Tabs,{fullWidth:true,selectedKey:a,onSelectionChange:n=>r(String(n)),children:[jsx(Tab,{title:e("extend.redpacket.histories.received.title")},"received"),jsx(Tab,{title:e("extend.redpacket.histories.sent.title")},"sent")]})}),jsx("div",{className:"flex-1 mt-2 flex flex-col gap-2",children:i.length===0?jsx("p",{className:"text-sm text-neutral py-8 text-center",children:e("extend.redpacket.histories.title")}):i.map(n=>jsxs("button",{type:"button",className:"w-full text-left p-3 rounded-lg bg-content2",onClick:()=>a==="sent"?o?.openShare(n):o?.openView(n),children:[jsxs("div",{className:"flex justify-between text-sm",children:[jsx("span",{children:n.memo||n.shareId}),jsx("span",{children:e(`extend.redpacket.histories.sent.status.${n.status}`)})]}),jsxs("p",{className:"text-xs text-neutral mt-1",children:[n.claimedCount??0,"/",n.maxClaims," \xB7 ",n.totalAmount]})]},n.id))})]})}function O({packet:e}){return jsxs("div",{className:"space-y-2 text-sm",children:[jsx("p",{children:e.memo||e.shareId}),jsxs("p",{className:"text-neutral",children:[e.claimedCount??0,"/",e.maxClaims," \xB7 ",e.totalAmount]})]})}function qe(){let{t:e}=useTranslation(),t=d(),o=x(),a=o.claimPacket,r=P("idle");return jsx(StyledModal,{isOpen:!!a,onOpenChange:i=>!i&&o.closeClaim(),size:"md",children:jsx(ModalContent,{children:a?jsxs(ModalBody,{className:"flex flex-col gap-4 p-5",children:[jsx("h2",{className:"text-lg font-medium",children:e("extend.redpacket.claim.action")}),jsx(O,{packet:a}),jsx(Button,{color:"primary",isDisabled:!r.canSubmit||!t.walletAddress,onPress:()=>{t.requireAuth(async()=>{let c=await t.createRuntime().submit({kind:"claim",intent:{chain:t.chain,shareId:a.shareId,claimer:t.walletAddress??""}});if(c.status==="succeeded"){toast.success(e("extend.redpacket.claim.transaction_submitted")),o.closeClaim();return}toast.error(c.error?.message??e("extend.redpacket.claim.transaction_error"));});},children:e("extend.redpacket.claim.action")})]}):null})})}function ze(){let{t:e}=useTranslation(),t=d(),o=x(),a=o.sharePacket,r=a?t.shareUrl(a.shareId):"";return jsx(StyledModal,{isOpen:!!a,onOpenChange:i=>!i&&o.closeShare(),size:"md",children:jsx(ModalContent,{children:a?jsxs(ModalBody,{className:"flex flex-col gap-4 p-5",children:[jsx("h2",{className:"text-lg font-medium",children:e("extend.redpacket.share.title")}),jsx(O,{packet:a}),jsx("p",{className:"text-xs break-all",children:r}),jsx(Button,{color:"primary",onPress:()=>{t.copyText?.(r),toast.success(r);},children:e("extend.redpacket.share.copy_claim_url")})]}):null})})}function De(){let e=x(),t=e.viewPacket;return jsx(StyledModal,{isOpen:!!t,onOpenChange:o=>!o&&e.closeView(),size:"md",children:jsx(ModalContent,{children:t?jsx(ModalBody,{className:"p-5",children:jsx(O,{packet:t})}):null})})}function Fe(){let{t:e}=useTranslation(),o=x().viewPacket;return jsx(StyledModal,{isOpen:false,onOpenChange:()=>{},size:"md",children:jsx(ModalContent,{children:jsxs(ModalBody,{className:"p-5",children:[jsx("h2",{className:"text-lg font-medium",children:e("extend.redpacket.claims.title")}),o?jsx(O,{packet:o}):null]})})})}var He="@liberfi.io/ui-redpacket";function Kt(){return He}
|
|
2
|
+
export{qe as ClaimRedPacketModal,He as PACKAGE_NAME,Fe as RedPacketClaimsModal,K as RedPacketCreateForm,Oe as RedPacketCreatePage,Le as RedPacketHistoriesPage,be as RedPacketHomePage,De as RedPacketModal,ve as RedPacketProvider,Kt as RedpacketReadyWidget,P as RedpacketStatusView,pe as RedpacketUiProvider,ze as ShareRedPacketModal,ue as createInMemoryRedpacketUiPorts,x as useRedpacketSession,d as useRedpacketUiPorts};//# sourceMappingURL=index.mjs.map
|
|
3
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/status.view.ts","../src/ports.tsx","../src/session.tsx","../src/RedPacketHomePage.tsx","../src/RedPacketCreateForm.tsx","../src/RedPacketCreatePage.tsx","../src/RedPacketHistoriesPage.tsx","../src/modals.tsx","../src/index.ts"],"names":["RedpacketStatusView","status","RedpacketUiPortsContext","createContext","RedpacketUiProvider","ports","children","createElement","useRedpacketUiPorts","useContext","createInMemoryRedpacketUiPorts","options","packets","memory","createInMemoryRedpacketPorts","Chain","action","shareId","found","packet","onChange","createRedpacketRuntime","RedpacketSessionContext","RedPacketProvider","t","useTranslation","claimPacket","setClaimPacket","useState","sharePacket","setSharePacket","viewPacket","setViewPacket","useEffect","cancelled","toast","value","useMemo","useRedpacketSession","session","useOptionalRedpacketSession","useOpenClaim","useCallback","RedPacketHomePage","openClaim","shareCode","setShareCode","claiming","setClaiming","jsxs","jsx","Button","ChevronLeftIcon","GiftIcon","Input","RedPacketCreateForm","kind","mint","setMint","amount","setAmount","maxClaims","setMaxClaims","memo","setMemo","snapshot","setSnapshot","view","amountNumber","claimsNumber","invalid","amountLabel","event","creator","result","RedPacketCreatePage","type","setType","Tabs","key","Tab","RedPacketHistoriesPage","records","setRecords","record","PacketSummary","ClaimRedPacketModal","StyledModal","open","ModalContent","ModalBody","ShareRedPacketModal","url","RedPacketModal","RedPacketClaimsModal","PACKAGE_NAME","RedpacketReadyWidget"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { RedpacketIntentStatus } from \"@liberfi.io/react-redpacket\";\n\nexport function RedpacketStatusView(status: RedpacketIntentStatus): {\n status: RedpacketIntentStatus;\n canSubmit: boolean;\n} {\n return {\n status,\n canSubmit:\n status !== \"signing\" &&\n status !== \"submitting\" &&\n status !== \"succeeded\" &&\n status !== \"already-claimed\",\n };\n}\n","import {\n createContext,\n createElement,\n useContext,\n type PropsWithChildren,\n} from \"react\";\nimport { Chain } from \"@liberfi.io/types\";\nimport {\n createInMemoryRedpacketPorts,\n createRedpacketRuntime,\n redpacketRecordStatus,\n type RedpacketRecord,\n type RedpacketSnapshot,\n} from \"@liberfi.io/react-redpacket\";\n\nexport type { RedpacketRecord };\nexport type RedpacketStatus = RedpacketRecord[\"status\"];\n\nexport type RedpacketUiPorts = {\n chain: Chain;\n walletAddress?: string;\n requireAuth: (action: () => Promise<void>) => Promise<void>;\n navigate: (to: string | number) => void;\n fetchPacket: (shareId: string) => Promise<RedpacketRecord>;\n listReceived: (address: string) => Promise<RedpacketRecord[]>;\n listSent: (address: string) => Promise<RedpacketRecord[]>;\n createRuntime: (onChange?: (snapshot: RedpacketSnapshot) => void) => ReturnType<\n typeof createRedpacketRuntime\n >;\n shareUrl: (shareId: string) => string;\n copyText?: (text: string) => Promise<void> | void;\n};\n\nconst RedpacketUiPortsContext = createContext<RedpacketUiPorts | null>(null);\n\nexport function RedpacketUiProvider({\n ports,\n children,\n}: PropsWithChildren<{ ports: RedpacketUiPorts }>) {\n return createElement(RedpacketUiPortsContext.Provider, { value: ports }, children);\n}\n\nexport function useRedpacketUiPorts(): RedpacketUiPorts {\n const ports = useContext(RedpacketUiPortsContext);\n if (!ports) {\n throw new Error(\"useRedpacketUiPorts must be used within RedpacketUiProvider\");\n }\n return ports;\n}\n\nexport function createInMemoryRedpacketUiPorts(\n options: {\n packets?: RedpacketRecord[];\n signError?: Error;\n alreadyClaimed?: boolean;\n } = {},\n): RedpacketUiPorts {\n const packets = options.packets ?? [\n {\n id: \"packet-1\",\n shareId: \"share-1\",\n status: \"ongoing\",\n totalAmount: \"10\",\n claimedAmount: \"2\",\n claimedCount: 1,\n maxClaims: 5,\n memo: \"hello\",\n mint: \"mint\",\n creator: \"creator\",\n },\n ];\n const memory = createInMemoryRedpacketPorts({\n signError: options.signError,\n alreadyClaimed: options.alreadyClaimed,\n });\n return {\n chain: Chain.SOLANA,\n walletAddress: \"wallet\",\n requireAuth: async (action) => {\n await action();\n },\n navigate: () => undefined,\n fetchPacket: async (shareId) => {\n const found = packets.find((packet) => packet.shareId === shareId || packet.id === shareId);\n if (!found) throw new Error(\"missing packet\");\n return found;\n },\n listReceived: async () => packets,\n listSent: async () => packets,\n createRuntime: (onChange) =>\n createRedpacketRuntime({\n ...memory,\n onChange,\n }),\n shareUrl: (shareId) => `https://app.example.com/redpacket?share=${shareId}`,\n copyText: async () => undefined,\n };\n}\n\nexport { redpacketRecordStatus as redpacketStatus };\n","import {\n createContext,\n createElement,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n type PropsWithChildren,\n} from \"react\";\nimport { toast } from \"@liberfi.io/ui\";\nimport { useTranslation } from \"@liberfi.io/i18n\";\nimport { useRedpacketUiPorts, type RedpacketRecord } from \"./ports\";\n\ntype RedpacketSession = {\n claimPacket: RedpacketRecord | null;\n sharePacket: RedpacketRecord | null;\n viewPacket: RedpacketRecord | null;\n openClaim: (packet: RedpacketRecord) => void;\n openShare: (packet: RedpacketRecord) => void;\n openView: (packet: RedpacketRecord) => void;\n closeClaim: () => void;\n closeShare: () => void;\n closeView: () => void;\n};\n\nconst RedpacketSessionContext = createContext<RedpacketSession | null>(null);\n\nexport function RedPacketProvider({\n shareId,\n children,\n}: PropsWithChildren<{ shareId?: string }>) {\n const { t } = useTranslation();\n const ports = useRedpacketUiPorts();\n const [claimPacket, setClaimPacket] = useState<RedpacketRecord | null>(null);\n const [sharePacket, setSharePacket] = useState<RedpacketRecord | null>(null);\n const [viewPacket, setViewPacket] = useState<RedpacketRecord | null>(null);\n\n useEffect(() => {\n if (!shareId) return;\n let cancelled = false;\n void ports\n .fetchPacket(shareId)\n .then((packet) => {\n if (cancelled) return;\n if (packet.status !== \"ongoing\") {\n toast.error(t(\"extend.redpacket.claim.error_red_packet_not_ongoing\"));\n return;\n }\n setClaimPacket(packet);\n })\n .catch(() => {\n if (!cancelled) toast.error(t(\"extend.redpacket.claim.error_fetch_red_packet\"));\n });\n return () => {\n cancelled = true;\n };\n }, [ports, shareId, t]);\n\n const value = useMemo<RedpacketSession>(\n () => ({\n claimPacket,\n sharePacket,\n viewPacket,\n openClaim: setClaimPacket,\n openShare: setSharePacket,\n openView: setViewPacket,\n closeClaim: () => setClaimPacket(null),\n closeShare: () => setSharePacket(null),\n closeView: () => setViewPacket(null),\n }),\n [claimPacket, sharePacket, viewPacket],\n );\n\n return createElement(RedpacketSessionContext.Provider, { value }, children);\n}\n\nexport function useRedpacketSession(): RedpacketSession {\n const session = useContext(RedpacketSessionContext);\n if (!session) {\n throw new Error(\"useRedpacketSession must be used within RedPacketProvider\");\n }\n return session;\n}\n\nexport function useOptionalRedpacketSession(): RedpacketSession | null {\n return useContext(RedpacketSessionContext);\n}\n\nexport function useOpenClaim() {\n const session = useOptionalRedpacketSession();\n return useCallback(\n (packet: RedpacketRecord) => {\n session?.openClaim(packet);\n },\n [session],\n );\n}\n","import { useState } from \"react\";\nimport { useTranslation } from \"@liberfi.io/i18n\";\nimport { Button, ChevronLeftIcon, GiftIcon, Input, toast } from \"@liberfi.io/ui\";\nimport { useRedpacketUiPorts } from \"./ports\";\nimport { useOpenClaim } from \"./session\";\n\nexport function RedPacketHomePage() {\n const { t } = useTranslation();\n const ports = useRedpacketUiPorts();\n const openClaim = useOpenClaim();\n const [shareCode, setShareCode] = useState(\"\");\n const [claiming, setClaiming] = useState(false);\n\n return (\n <div className=\"max-w-md max-lg:max-w-full max-lg:px-4 mx-auto flex flex-col\">\n <div className=\"h-8 max-lg:h-[var(--header-height)] max-lg:pb-2 flex justify-between items-center\">\n <div className=\"flex items-center\">\n <Button\n isIconOnly\n className=\"w-8 min-w-0 h-8 min-h-0 rounded bg-transparent lg:hidden\"\n aria-label=\"back\"\n onPress={() => ports.navigate(-1)}\n >\n <ChevronLeftIcon />\n </Button>\n <h1 className=\"text-lg font-medium\">{t(\"extend.redpacket.home.title\")}</h1>\n </div>\n <Button\n isIconOnly\n className=\"w-8 min-w-0 h-8 min-h-0 rounded bg-content2\"\n aria-label={t(\"extend.redpacket.histories.title\")}\n onPress={() =>\n void ports.requireAuth(async () => {\n ports.navigate(\"/redpacket/histories\");\n })\n }\n >\n <GiftIcon width={16} height={16} />\n </Button>\n </div>\n\n <div className=\"lg:mt-4 flex flex-col gap-4\">\n <div className=\"p-4 rounded-lg bg-content2\">\n <h2 className=\"text-sm text-neutral\">{t(\"extend.redpacket.home.create_title\")}</h2>\n <div className=\"flex items-center justify-center py-6\">\n <GiftIcon width={72} height={72} />\n </div>\n </div>\n <Button\n fullWidth\n color=\"primary\"\n className=\"rounded-lg\"\n onPress={() => ports.navigate(\"/redpacket/create\")}\n >\n {t(\"extend.redpacket.home.create\")}\n </Button>\n </div>\n\n <div className=\"mt-10 flex flex-col gap-4\">\n <h2 className=\"text-xs text-neutral\">{t(\"extend.redpacket.home.claim_title\")}</h2>\n <Input\n value={shareCode}\n placeholder={t(\"extend.redpacket.home.claim_placeholder\")}\n onValueChange={setShareCode}\n />\n <Button\n fullWidth\n color=\"secondary\"\n className=\"rounded-lg\"\n isDisabled={!shareCode}\n isLoading={claiming}\n onPress={() =>\n void ports.requireAuth(async () => {\n setClaiming(true);\n try {\n const packet = await ports.fetchPacket(shareCode);\n if (packet.status !== \"ongoing\") {\n toast.error(t(\"extend.redpacket.claim.error_red_packet_not_ongoing\"));\n return;\n }\n openClaim(packet);\n } catch {\n toast.error(t(\"extend.redpacket.claim.error_fetch_red_packet\"));\n } finally {\n setClaiming(false);\n }\n })\n }\n >\n {t(\"extend.redpacket.home.claim\")}\n </Button>\n <p className=\"text-xs text-neutral\">{t(\"extend.redpacket.home.refund_warning\")}</p>\n </div>\n </div>\n );\n}\n","import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"@liberfi.io/i18n\";\nimport type { RedpacketSnapshot } from \"@liberfi.io/react-redpacket\";\nimport { Button, Input, toast } from \"@liberfi.io/ui\";\nimport { RedpacketStatusView } from \"./status.view\";\nimport { useRedpacketUiPorts } from \"./ports\";\nimport { useOptionalRedpacketSession } from \"./session\";\n\nexport function RedPacketCreateForm({ kind }: { kind: \"fixed\" | \"random\" }) {\n const { t } = useTranslation();\n const ports = useRedpacketUiPorts();\n const session = useOptionalRedpacketSession();\n const [mint, setMint] = useState(\"\");\n const [amount, setAmount] = useState(\"\");\n const [maxClaims, setMaxClaims] = useState(\"2\");\n const [memo, setMemo] = useState(\"\");\n const [snapshot, setSnapshot] = useState<RedpacketSnapshot>({ status: \"idle\" });\n const view = RedpacketStatusView(snapshot.status);\n const amountNumber = Number(amount);\n const claimsNumber = Number(maxClaims);\n const invalid =\n !mint.trim() ||\n !Number.isFinite(amountNumber) ||\n amountNumber <= 0 ||\n !Number.isInteger(claimsNumber) ||\n claimsNumber < 1;\n\n const amountLabel = useMemo(\n () =>\n kind === \"fixed\"\n ? t(\"extend.redpacket.create.fixed.amount_label\")\n : t(\"extend.redpacket.create.random.amount_label\"),\n [kind, t],\n );\n\n return (\n <form\n className=\"flex flex-col gap-4\"\n onSubmit={(event) => {\n event.preventDefault();\n const creator = ports.walletAddress;\n if (invalid || !creator) return;\n void ports.requireAuth(async () => {\n const runtime = ports.createRuntime(setSnapshot);\n const result = await runtime.submit(\n kind === \"fixed\"\n ? {\n kind: \"create-fixed\",\n intent: {\n chain: ports.chain,\n creator,\n mint: mint.trim(),\n maxClaims: claimsNumber,\n fixedAmount: amount,\n memo: memo || undefined,\n },\n }\n : {\n kind: \"create-random\",\n intent: {\n chain: ports.chain,\n creator,\n mint: mint.trim(),\n maxClaims: claimsNumber,\n totalAmount: amount,\n memo: memo || undefined,\n },\n },\n );\n if (result.status === \"succeeded\" && result.packetId) {\n toast.success(t(\"extend.redpacket.create.transaction_submitted\"));\n session?.openShare({\n id: result.packetId,\n shareId: result.packetId,\n status: \"ongoing\",\n totalAmount: kind === \"fixed\" ? String(amountNumber * claimsNumber) : amount,\n maxClaims: claimsNumber,\n memo,\n mint: mint.trim(),\n creator: ports.walletAddress,\n });\n return;\n }\n toast.error(result.error?.message ?? t(\"extend.redpacket.create.transaction_error\"));\n });\n }}\n >\n <Input\n label={t(\"extend.redpacket.create.select_mint_token\")}\n value={mint}\n onValueChange={setMint}\n />\n <Input label={amountLabel} value={amount} onValueChange={setAmount} />\n <Input\n label={t(\"extend.redpacket.create.max_claims_placeholder\")}\n value={maxClaims}\n onValueChange={setMaxClaims}\n />\n <Input\n label={t(\"extend.redpacket.create.memo_placeholder\")}\n value={memo}\n onValueChange={setMemo}\n />\n <Button\n type=\"submit\"\n color=\"primary\"\n isDisabled={invalid || !view.canSubmit}\n isLoading={!view.canSubmit}\n >\n {t(\"extend.redpacket.create.submit\")}\n </Button>\n </form>\n );\n}\n","import { useState, type Key } from \"react\";\nimport { useTranslation } from \"@liberfi.io/i18n\";\nimport { Button, ChevronLeftIcon, Tab, Tabs } from \"@liberfi.io/ui\";\nimport { RedPacketCreateForm } from \"./RedPacketCreateForm\";\nimport { useRedpacketUiPorts } from \"./ports\";\n\nexport function RedPacketCreatePage() {\n const { t } = useTranslation();\n const ports = useRedpacketUiPorts();\n const [type, setType] = useState<\"random\" | \"fixed\">(\"random\");\n\n return (\n <div className=\"max-w-md max-lg:max-w-full max-lg:px-4 mx-auto flex flex-col\">\n <div className=\"flex-none h-8 max-lg:h-[var(--header-height)] max-lg:pb-2 flex justify-between items-center\">\n <div className=\"flex items-center\">\n <Button\n isIconOnly\n className=\"w-8 min-w-0 h-8 min-h-0 rounded bg-transparent lg:hidden\"\n aria-label=\"back\"\n onPress={() => ports.navigate(-1)}\n >\n <ChevronLeftIcon />\n </Button>\n <h1 className=\"text-lg font-medium\">{t(\"extend.redpacket.create.title\")}</h1>\n </div>\n </div>\n <div className=\"flex-none lg:mt-4 flex flex-col gap-2\">\n <Tabs\n fullWidth\n selectedKey={type}\n onSelectionChange={(key: Key) => setType(String(key) as \"random\" | \"fixed\")}\n >\n <Tab key=\"random\" title={t(\"extend.redpacket.create.random.title\")} />\n <Tab key=\"fixed\" title={t(\"extend.redpacket.create.fixed.title\")} />\n </Tabs>\n <p className=\"text-xs text-neutral\">{t(`extend.redpacket.create.${type}.explained`)}</p>\n </div>\n <div className=\"mt-6\">\n <RedPacketCreateForm kind={type} />\n </div>\n </div>\n );\n}\n","import { useEffect, useState, type Key } from \"react\";\nimport { useTranslation } from \"@liberfi.io/i18n\";\nimport { Button, ChevronLeftIcon, Tab, Tabs } from \"@liberfi.io/ui\";\nimport { useRedpacketUiPorts, type RedpacketRecord } from \"./ports\";\nimport { useOptionalRedpacketSession } from \"./session\";\n\nexport function RedPacketHistoriesPage() {\n const { t } = useTranslation();\n const ports = useRedpacketUiPorts();\n const session = useOptionalRedpacketSession();\n const [type, setType] = useState<\"received\" | \"sent\">(\"received\");\n const [records, setRecords] = useState<RedpacketRecord[]>([]);\n\n useEffect(() => {\n if (!ports.walletAddress) {\n setRecords([]);\n return;\n }\n const loader = type === \"received\" ? ports.listReceived : ports.listSent;\n void loader(ports.walletAddress).then(setRecords);\n }, [ports, type]);\n\n return (\n <div className=\"max-w-md max-lg:max-w-full max-lg:px-4 mx-auto flex flex-col\">\n <div className=\"flex-none h-8 max-lg:h-[var(--header-height)] max-lg:pb-2 flex justify-between items-center\">\n <div className=\"flex items-center\">\n <Button\n isIconOnly\n className=\"w-8 min-w-0 h-8 min-h-0 rounded bg-transparent lg:hidden\"\n aria-label=\"back\"\n onPress={() => ports.navigate(-1)}\n >\n <ChevronLeftIcon />\n </Button>\n <h1 className=\"text-lg font-medium\">{t(\"extend.redpacket.histories.title\")}</h1>\n </div>\n </div>\n <div className=\"flex-none lg:mt-4 flex flex-col gap-2\">\n <Tabs\n fullWidth\n selectedKey={type}\n onSelectionChange={(key: Key) => setType(String(key) as \"received\" | \"sent\")}\n >\n <Tab key=\"received\" title={t(\"extend.redpacket.histories.received.title\")} />\n <Tab key=\"sent\" title={t(\"extend.redpacket.histories.sent.title\")} />\n </Tabs>\n </div>\n <div className=\"flex-1 mt-2 flex flex-col gap-2\">\n {records.length === 0 ? (\n <p className=\"text-sm text-neutral py-8 text-center\">{t(\"extend.redpacket.histories.title\")}</p>\n ) : (\n records.map((record) => (\n <button\n key={record.id}\n type=\"button\"\n className=\"w-full text-left p-3 rounded-lg bg-content2\"\n onClick={() => (type === \"sent\" ? session?.openShare(record) : session?.openView(record))}\n >\n <div className=\"flex justify-between text-sm\">\n <span>{record.memo || record.shareId}</span>\n <span>{t(`extend.redpacket.histories.sent.status.${record.status}`)}</span>\n </div>\n <p className=\"text-xs text-neutral mt-1\">\n {record.claimedCount ?? 0}/{record.maxClaims} · {record.totalAmount}\n </p>\n </button>\n ))\n )}\n </div>\n </div>\n );\n}\n","import { useTranslation } from \"@liberfi.io/i18n\";\nimport {\n Button,\n ModalBody,\n ModalContent,\n StyledModal,\n toast,\n} from \"@liberfi.io/ui\";\nimport { RedpacketStatusView } from \"./status.view\";\nimport { useRedpacketUiPorts, type RedpacketRecord } from \"./ports\";\nimport { useRedpacketSession } from \"./session\";\n\nfunction PacketSummary({ packet }: { packet: RedpacketRecord }) {\n return (\n <div className=\"space-y-2 text-sm\">\n <p>{packet.memo || packet.shareId}</p>\n <p className=\"text-neutral\">\n {packet.claimedCount ?? 0}/{packet.maxClaims} · {packet.totalAmount}\n </p>\n </div>\n );\n}\n\nexport function ClaimRedPacketModal() {\n const { t } = useTranslation();\n const ports = useRedpacketUiPorts();\n const session = useRedpacketSession();\n const packet = session.claimPacket;\n const view = RedpacketStatusView(\"idle\");\n\n return (\n <StyledModal isOpen={!!packet} onOpenChange={(open) => !open && session.closeClaim()} size=\"md\">\n <ModalContent>\n {packet ? (\n <ModalBody className=\"flex flex-col gap-4 p-5\">\n <h2 className=\"text-lg font-medium\">{t(\"extend.redpacket.claim.action\")}</h2>\n <PacketSummary packet={packet} />\n <Button\n color=\"primary\"\n isDisabled={!view.canSubmit || !ports.walletAddress}\n onPress={() =>\n void ports.requireAuth(async () => {\n const runtime = ports.createRuntime();\n const result = await runtime.submit({\n kind: \"claim\",\n intent: {\n chain: ports.chain,\n shareId: packet.shareId,\n claimer: ports.walletAddress ?? \"\",\n },\n });\n if (result.status === \"succeeded\") {\n toast.success(t(\"extend.redpacket.claim.transaction_submitted\"));\n session.closeClaim();\n return;\n }\n toast.error(result.error?.message ?? t(\"extend.redpacket.claim.transaction_error\"));\n })\n }\n >\n {t(\"extend.redpacket.claim.action\")}\n </Button>\n </ModalBody>\n ) : null}\n </ModalContent>\n </StyledModal>\n );\n}\n\nexport function ShareRedPacketModal() {\n const { t } = useTranslation();\n const ports = useRedpacketUiPorts();\n const session = useRedpacketSession();\n const packet = session.sharePacket;\n const url = packet ? ports.shareUrl(packet.shareId) : \"\";\n\n return (\n <StyledModal isOpen={!!packet} onOpenChange={(open) => !open && session.closeShare()} size=\"md\">\n <ModalContent>\n {packet ? (\n <ModalBody className=\"flex flex-col gap-4 p-5\">\n <h2 className=\"text-lg font-medium\">{t(\"extend.redpacket.share.title\")}</h2>\n <PacketSummary packet={packet} />\n <p className=\"text-xs break-all\">{url}</p>\n <Button\n color=\"primary\"\n onPress={() => {\n void ports.copyText?.(url);\n toast.success(url);\n }}\n >\n {t(\"extend.redpacket.share.copy_claim_url\")}\n </Button>\n </ModalBody>\n ) : null}\n </ModalContent>\n </StyledModal>\n );\n}\n\nexport function RedPacketModal() {\n const session = useRedpacketSession();\n const packet = session.viewPacket;\n return (\n <StyledModal isOpen={!!packet} onOpenChange={(open) => !open && session.closeView()} size=\"md\">\n <ModalContent>\n {packet ? (\n <ModalBody className=\"p-5\">\n <PacketSummary packet={packet} />\n </ModalBody>\n ) : null}\n </ModalContent>\n </StyledModal>\n );\n}\n\nexport function RedPacketClaimsModal() {\n const { t } = useTranslation();\n const session = useRedpacketSession();\n const packet = session.viewPacket;\n return (\n <StyledModal isOpen={false} onOpenChange={() => undefined} size=\"md\">\n <ModalContent>\n <ModalBody className=\"p-5\">\n <h2 className=\"text-lg font-medium\">{t(\"extend.redpacket.claims.title\")}</h2>\n {packet ? <PacketSummary packet={packet} /> : null}\n </ModalBody>\n </ModalContent>\n </StyledModal>\n );\n}\n","export const PACKAGE_NAME = \"@liberfi.io/ui-redpacket\" as const;\n\nexport function RedpacketReadyWidget() {\n return PACKAGE_NAME;\n}\n\nexport { RedpacketStatusView } from \"./status.view\";\nexport {\n RedpacketUiProvider,\n useRedpacketUiPorts,\n createInMemoryRedpacketUiPorts,\n redpacketStatus,\n type RedpacketUiPorts,\n type RedpacketRecord,\n type RedpacketStatus,\n} from \"./ports\";\nexport { RedPacketProvider, useRedpacketSession } from \"./session\";\nexport { RedPacketHomePage } from \"./RedPacketHomePage\";\nexport { RedPacketCreatePage } from \"./RedPacketCreatePage\";\nexport { RedPacketHistoriesPage } from \"./RedPacketHistoriesPage\";\nexport { RedPacketCreateForm } from \"./RedPacketCreateForm\";\nexport {\n ClaimRedPacketModal,\n ShareRedPacketModal,\n RedPacketModal,\n RedPacketClaimsModal,\n} from \"./modals\";\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@liberfi.io/ui-redpacket",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Redpacket widgets for Liberfi React SDK",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.mjs",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": {
|
|
11
|
+
"types": "./dist/index.d.mts",
|
|
12
|
+
"default": "./dist/index.mjs"
|
|
13
|
+
},
|
|
14
|
+
"require": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"default": "./dist/index.js"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"./package.json": "./package.json"
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist"
|
|
23
|
+
],
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@liberfi.io/hooks": "0.1.266",
|
|
29
|
+
"@liberfi.io/types": "0.4.74",
|
|
30
|
+
"@liberfi.io/utils": "0.2.73"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@tanstack/react-query": "^5.90.2",
|
|
34
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
35
|
+
"@testing-library/react": "^16.3.0",
|
|
36
|
+
"@types/jest": "^30.0.0",
|
|
37
|
+
"@types/react": "^19.1.13",
|
|
38
|
+
"@types/react-dom": "^19.1.9",
|
|
39
|
+
"jest": "^30.2.0",
|
|
40
|
+
"jest-environment-jsdom": "^30.2.0",
|
|
41
|
+
"react": "^19.1.1",
|
|
42
|
+
"react-dom": "^19.1.1",
|
|
43
|
+
"ts-jest": "^29.4.5",
|
|
44
|
+
"tsup": "^8.5.0",
|
|
45
|
+
"typescript": "^5.9.2",
|
|
46
|
+
"@liberfi.io/i18n": "0.1.271",
|
|
47
|
+
"@liberfi.io/react-redpacket": "0.1.1",
|
|
48
|
+
"@liberfi.io/ui": "0.3.74",
|
|
49
|
+
"tsconfig": "0.1.257"
|
|
50
|
+
},
|
|
51
|
+
"peerDependencies": {
|
|
52
|
+
"react": ">=18",
|
|
53
|
+
"react-dom": ">=18",
|
|
54
|
+
"@liberfi.io/i18n": "0.1.271",
|
|
55
|
+
"@liberfi.io/react-redpacket": "0.1.1",
|
|
56
|
+
"@liberfi.io/ui": "0.3.74"
|
|
57
|
+
},
|
|
58
|
+
"scripts": {
|
|
59
|
+
"dev": "tsup --watch",
|
|
60
|
+
"build": "tsup",
|
|
61
|
+
"test": "jest --config jest.config.cjs --runInBand --detectOpenHandles",
|
|
62
|
+
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
63
|
+
"lint": "eslint src"
|
|
64
|
+
}
|
|
65
|
+
}
|