@orderly.network/affiliate 2.10.1 → 2.10.2

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/pages/dashboard/index.tsx","../src/provider/context.ts","../src/hooks/useReferralApi.ts","../src/hooks/useMultiLevelReferralData.ts","../src/provider/provider.tsx","../src/pages/multiLevel/landing/components/faq.tsx","../src/hooks/useReferralCode.ts","../src/pages/multiLevel/affiliate/referralCodeForm/referralCodeForm.script.ts","../src/icons/giftIcon.tsx","../src/pages/multiLevel/affiliate/referralCodeForm/referralCodeForm.ui.tsx","../src/pages/multiLevel/affiliate/referralCodeForm/referralCodeForm.widget.tsx","../src/pages/multiLevel/affiliate/referralCodeForm/modal.ts","../src/pages/multiLevel/components/tradingVolumeProgress.tsx","../src/pages/multiLevel/landing/components/hero.tsx","../src/pages/multiLevel/landing/components/stepCard.tsx","../src/pages/multiLevel/landing/components/howItWorks.tsx","../src/pages/multiLevel/landing/page.tsx","../src/pages/multiLevel/affiliate/commissionChart/commissionChart.ui.tsx","../src/utils/chartUtils.ts","../src/pages/multiLevel/affiliate/commissionChart/commissionChart.script.tsx","../src/pages/multiLevel/affiliate/commissionChart/commissionChart.widget.tsx","../src/pages/multiLevel/affiliate/multiLevelReferral/multiLevelReferral.ui.tsx","../src/pages/multiLevel/affiliate/multiLevelReferral/multiLevelReferral.script.tsx","../src/pages/multiLevel/affiliate/multiLevelReferral/multiLevelReferral.widget.tsx","../src/pages/multiLevel/affiliate/referralInfo/referralInfo.ui.tsx","../src/utils/utils.ts","../src/pages/multiLevel/affiliate/referralInfo/referralInfo.script.tsx","../src/pages/multiLevel/affiliate/referralInfo/referralInfo.widget.tsx","../src/pages/multiLevel/affiliate/referrerTable/referrerTable.script.tsx","../src/hooks/useReferralHistory.ts","../src/pages/multiLevel/affiliate/referrerTable/commissionTable/commissionTable.script.tsx","../src/pages/multiLevel/affiliate/referrerTable/base/cells.tsx","../src/pages/multiLevel/affiliate/referrerTable/commissionTable/commissionTable.ui.tsx","../src/pages/multiLevel/affiliate/referrerTable/commissionTable/commissionTable.widget.tsx","../src/hooks/useMultiLevelReferees.ts","../src/pages/multiLevel/affiliate/referrerTable/refereesTable/refereesTable.script.tsx","../src/pages/multiLevel/affiliate/referrerTable/refereesTable/refereesTable.ui.tsx","../src/pages/multiLevel/affiliate/referrerTable/refereesTable/refereesTable.widget.tsx","../src/hooks/useMultiLevelReferralCodes.ts","../src/pages/multiLevel/affiliate/referrerTable/referralCodesTable/referralCodesTable.script.ts","../src/pages/multiLevel/affiliate/referrerTable/referralCodesTable/referralCodesTable.ui.tsx","../src/pages/multiLevel/affiliate/referrerTable/referralCodesTable/referralCodesTable.widget.tsx","../src/pages/multiLevel/affiliate/referrerTable/referrerTable.ui.tsx","../src/pages/multiLevel/affiliate/referrerTable/referrerTable.widget.tsx","../src/pages/multiLevel/affiliate/summary/summary.ui.tsx","../src/pages/multiLevel/affiliate/summary/summary.script.tsx","../src/pages/multiLevel/affiliate/summary/summary.widget.tsx","../src/pages/multiLevel/affiliate/page.tsx","../src/icons/affiliateIcon.tsx","../src/icons/traderIcon.tsx","../src/icons/usdcIcon.tsx","../src/pages/affiliate/summary/summary.ui.tsx","../src/pages/affiliate/summary/summary.script.tsx","../src/pages/affiliate/summary/summary.widget.tsx","../src/components/autoHideText.tsx","../src/pages/affiliate/referralLink/referralLink.ui.tsx","../src/pages/affiliate/referralLink/referralLink.script.tsx","../src/pages/affiliate/referralLink/referralLink.widget.tsx","../src/pages/affiliate/titleStatistic/titleStatistic.ui.tsx","../src/pages/affiliate/titleStatistic/titleStatistic.script.tsx","../src/pages/affiliate/titleStatistic/titleStatistic.widget.tsx","../src/icons/editIcon.tsx","../src/components/editCodeBtn.tsx","../src/components/pinButton.tsx","../src/pages/affiliate/referralCodes/referralCodes.ui.tsx","../src/pages/affiliate/referralCodes/editCodeModal.tsx","../src/pages/affiliate/referralCodes/editReferralRate.tsx","../src/pages/affiliate/referralCodes/referralCodes.script.tsx","../src/pages/affiliate/referralCodes/referralCodes.widget.tsx","../src/pages/affiliate/commissionAndReferees/commissionAndReferees.ui.tsx","../src/pages/affiliate/commissionAndReferees/commissionAndReferees.script.tsx","../src/pages/affiliate/commissionAndReferees/commissionAndReferees.widget.tsx","../src/pages/affiliate/page.tsx","../src/pages/home/becomeAffiliate/becomeAffiliate.ui.tsx","../src/pages/home/becomeAffiliate/becomeAffiliate.script.tsx","../src/pages/home/becomeAffiliate/becomeAffiliate.widget.tsx","../src/pages/home/title/title.ui.tsx","../src/pages/home/title/title.widget.tsx","../src/pages/home/subtitle/subtitle.ui.tsx","../src/pages/home/subtitle/subtitle.script.tsx","../src/pages/home/subtitle/subtitle.widget.tsx","../src/pages/home/top/top.ui.tsx","../src/pages/home/top/top.script.tsx","../src/pages/home/top/top.widget.tsx","../src/icons/arrowRightIcon.tsx","../src/pages/home/asATrader/asTrader.ui.tsx","../src/pages/home/asATrader/asTrader.script.tsx","../src/pages/home/asATrader/asTrader.widget.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.ui.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.script.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.widget.tsx","../src/pages/home/card/card.ui.tsx","../src/pages/home/card/card.script.tsx","../src/pages/home/card/card.widget.tsx","../src/pages/home/page.tsx","../src/pages/trader/summary/summary.ui.tsx","../src/pages/trader/summary/summary.script.tsx","../src/pages/trader/summary/summary.widget.tsx","../src/pages/trader/titleStatistic/titleStatistic.ui.tsx","../src/pages/trader/titleStatistic/titleStatistic.script.tsx","../src/pages/trader/titleStatistic/titleStatistic.widget.tsx","../src/pages/trader/rebates/rebates.ui.tsx","../src/pages/trader/rebates/rebates.script.tsx","../src/pages/trader/rebates/rebates.widget.tsx","../src/pages/trader/page.tsx","../src/pages/dashboard/tab/tab.ui.tsx","../src/pages/dashboard/tab/tab.script.tsx","../src/pages/dashboard/tab/tab.widget.tsx","../src/pages/dashboard/page.tsx","../src/layout/layout.ui.tsx","../src/layout/layout.script.tsx","../src/layout/layout.widget.tsx"],"names":["TabTypes","usePrivateQuery","data","useMemo","useState","jsx","Fragment","useTranslation","Decimal","Text","jsxs","Flex","Box","useRef","Button","useAccount","useAppContext","AccountStatusEnum","format","subDays","modal","Trans","cn","toast","sort","useScreen","useCallback","formatAddress","Grid","commifyOptional","Divider","usePagination","ListView","AuthGuardDataTable","Select","Summary","useSummaryScript","SummaryWidget","text","useEffect","Title","Tooltip","code","VolBarChart","useReferralRebateSummary","MobileCell","CopyIcon","useMutation","TextField","inputFormatter","useModal","Input","useLocalStorage","Tabs","TabPanel","MobileCellItem","Statistic","useMediaQuery","DatePicker","useRefereeInfo","Subtitle","Dialog","DialogContent","DialogTitle","AuthGuard","Icon","Bottom","CommissionData","Row","TitleStatistic","useTitleStatisticScript","TitleStatisticWidget","useRefereeRebateSummary","useDaily","item","toDate","tab"],"mappings":"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","file":"index.mjs","sourcesContent":["export { DashboardPage } from \"./page\";\nexport { HomePage} from \"../home\";\nexport { AffiliatePage } from \"../affiliate\";\nexport { TraderPage } from \"../trader\";","import { ReactNode, createContext, useContext } from \"react\";\nimport { RefferalAPI as API } from \"@orderly.network/hooks\";\nimport { MultiLevelReferralData } from \"../hooks/useMultiLevelReferralData\";\n\nexport enum TabTypes {\n affiliate = \"affiliate\",\n trader = \"trader\",\n}\n\nexport type UserVolumeType = {\n \"1d_volume\"?: number;\n \"7d_volume\"?: number;\n \"30d_volume\"?: number;\n all_volume?: number;\n};\n\n// export type OverwiteCard = {\n// ref?: BuildNode,\n// refClassName?: string,\n// refIcon?: ReactNode,\n\n// trader?: BuildNode,\n// traderClassName?: string,\n// traderIcon?: ReactNode,\n// }\n\nexport type BuildNode = (state: ReferralContextReturns) => ReactNode;\n\nexport type Overwrite = {\n shortBrokerName?: string;\n brokerName?: string;\n ref?: {\n top?: BuildNode;\n card?: BuildNode;\n step?: BuildNode;\n };\n};\n\nexport type ChartConfig = {\n // affiliate: {\n // bar?: BarStyle,\n // yAxis?: YAxis,\n // xAxis?: XAxis,\n // },\n // trader: {\n // bar?: BarStyle,\n // yAxis?: YAxis,\n // xAxis?: XAxis,\n // }\n affiliate: {\n bar?: any;\n yAxis?: any;\n xAxis?: any;\n };\n trader: {\n bar?: any;\n yAxis?: any;\n xAxis?: any;\n };\n};\n\nexport type ReferralContextProps = {\n //** click become an affiliate, If this method is implemented, the `becomeAnAffiliateUrl` will not work */\n onBecomeAnAffiliate?: () => void;\n //** set become an affiliate url, default is `https://orderly.network/` */\n becomeAnAffiliateUrl?: string;\n //** bind refferal code callback */\n bindReferralCodeState?: (\n success: boolean,\n error: any,\n hide: any,\n queryParams: any,\n ) => void;\n //** click learn affilate, if this method is implemented, the `learnAffilateUrl` will not work */\n onLearnAffiliate?: () => void;\n //** set learn affiliate url, default is `https://orderly.network/` */\n learnAffiliateUrl?: string;\n //** default is `https://orderly.network/` */\n referralLinkUrl: string;\n //** referral index page */\n showReferralPage?: () => void;\n // onEnterTraderPage?: (params?: any) => void,\n // onEnterAffiliatePage?: (params?: any) => void,\n //** tab + tab content */\n showDashboard?: () => void;\n //** col chart config */\n chartConfig?: ChartConfig;\n //** overwrite refferal */\n overwrite?: Overwrite;\n //** build a splash page, if not impletement, will be dispaly referral page */\n splashPage?: () => ReactNode;\n};\n\nexport type ReferralContextReturns = {\n referralInfo?: API.ReferralInfo;\n isAffiliate: boolean;\n isTrader: boolean;\n mutate: any;\n userVolume?: UserVolumeType;\n dailyVolume?: API.DayliVolume[];\n isLoading: boolean;\n showHome: boolean;\n setShowHome: (value: boolean) => void;\n tab: TabTypes;\n setTab: React.Dispatch<React.SetStateAction<TabTypes>>;\n wrongNetwork: boolean;\n disabledConnect: boolean;\n generateCode: API.AutoGenerateCode | undefined;\n} & ReferralContextProps &\n MultiLevelReferralData;\n\nexport const ReferralContext = createContext<ReferralContextReturns>(\n {} as ReferralContextReturns,\n);\n\nexport const useReferralContext = () => {\n return useContext(ReferralContext);\n};\n","import { usePrivateQuery } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { StatisticsTimeRange } from \"../types\";\n\n/** Get Volume Prerequisite */\nexport const useVolumePrerequisite = () => {\n return usePrivateQuery<API.Referral.VolumePrerequisite>(\n \"/v1/referral/multi_level/volume_prerequisite\",\n {\n revalidateOnFocus: false,\n shouldRetryOnError: false,\n },\n );\n};\n\n/** Get Max Rebate Rate */\nexport const useMaxRebateRate = () => {\n return usePrivateQuery<API.Referral.MaxRebateRate>(\n \"/v1/referral/multi_level/max_rebate_rate\",\n {\n revalidateOnFocus: false,\n shouldRetryOnError: false,\n },\n );\n};\n\n/** Generate Referral Code */\nexport const useMultiLevelRebateInfo = () => {\n return usePrivateQuery<API.Referral.MultiLevelRebateInfo>(\n \"/v1/referral/multi_level/rebate_info\",\n {\n revalidateOnFocus: false,\n shouldRetryOnError: false,\n },\n );\n};\n\n/** Get Multi-Level Statistics */\nexport const useMultiLevelStatistics = (time_range: StatisticsTimeRange) => {\n return usePrivateQuery<API.Referral.MultiLevelStatistics>(\n `/v1/referral/multi_level/statistics?time_range=${time_range}`,\n {\n revalidateOnFocus: false,\n shouldRetryOnError: false,\n },\n );\n};\n","import { useMemo } from \"react\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport {\n useMaxRebateRate,\n useMultiLevelRebateInfo,\n useVolumePrerequisite,\n} from \"./useReferralApi\";\n\nexport const useMultiLevelReferralData = () => {\n const { data: volumePrerequisite, isLoading: volumePrerequisiteLoading } =\n useVolumePrerequisite();\n\n const { data: maxRebateRateRes, isLoading: maxRebateRateLoading } =\n useMaxRebateRate();\n\n const {\n data: multiLevelRebateInfoRes,\n mutate: multiLevelRebateInfoMutate,\n isLoading: multiLevelRebateInfoLoading,\n } = useMultiLevelRebateInfo();\n\n const isMultiLevelReferralUnlocked =\n volumePrerequisite &&\n volumePrerequisite.current_volume >= volumePrerequisite.required_volume;\n\n // if maxRebateRateRes is undefined, it means the multi-level referral is not enabled\n const isMultiLevelEnabled = !!maxRebateRateRes;\n const maxRebateRate = maxRebateRateRes?.max_rebate_rate;\n\n const multiLevelRebateInfo = useMemo(() => {\n if (!multiLevelRebateInfoRes) return;\n\n const {\n default_referee_rebate_rate: referee_rebate_rate,\n max_rebate_rate,\n } = multiLevelRebateInfoRes;\n\n const referrer_rebate_rate = new Decimal(max_rebate_rate || 0)\n .sub(referee_rebate_rate || 0)\n .toNumber();\n\n return {\n ...multiLevelRebateInfoRes,\n referee_rebate_rate,\n referrer_rebate_rate,\n };\n }, [multiLevelRebateInfoRes, maxRebateRate]);\n\n const isLoading =\n volumePrerequisiteLoading ||\n maxRebateRateLoading ||\n multiLevelRebateInfoLoading;\n\n return {\n volumePrerequisite,\n maxRebateRate,\n multiLevelRebateInfo,\n isMultiLevelEnabled,\n isMultiLevelReferralUnlocked,\n multiLevelRebateInfoMutate,\n isLoading,\n };\n};\n\nexport type MultiLevelReferralData = ReturnType<\n typeof useMultiLevelReferralData\n>;\n","import {\n FC,\n PropsWithChildren,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { format, subDays } from \"date-fns\";\nimport {\n RefferalAPI as API,\n usePrivateQuery,\n useDaily,\n useAccount,\n useMemoizedFn,\n noCacheConfig,\n} from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useMultiLevelReferralData } from \"../hooks/useMultiLevelReferralData\";\nimport {\n ReferralContext,\n ReferralContextProps,\n ReferralContextReturns,\n TabTypes,\n UserVolumeType,\n} from \"./context\";\n\nexport const ReferralProvider: FC<PropsWithChildren<ReferralContextProps>> = (\n props,\n) => {\n const {\n becomeAnAffiliateUrl = \"https://orderly.network/\",\n learnAffiliateUrl = \"https://orderly.network/\",\n referralLinkUrl,\n chartConfig,\n overwrite,\n children,\n splashPage,\n onBecomeAnAffiliate,\n bindReferralCodeState,\n onLearnAffiliate,\n showReferralPage,\n } = props;\n\n const { state } = useAccount();\n\n const {\n data,\n mutate: referralInfoMutate,\n isLoading,\n } = usePrivateQuery<API.ReferralInfo>(\"/v1/referral/info\", {\n revalidateOnFocus: false,\n errorRetryCount: 3,\n ...noCacheConfig,\n });\n\n const { data: generateCode, mutate: generateCodeMutate } =\n usePrivateQuery<API.AutoGenerateCode>(\n \"/v1/referral/auto_referral/progress\",\n {\n revalidateOnFocus: false,\n errorRetryCount: 0,\n formatter: (data) => {\n return {\n code: data.auto_referral_code,\n requireVolume: data.required_volume,\n completedVolume: data.completed_volume,\n };\n },\n },\n );\n\n const {\n volumePrerequisite,\n multiLevelRebateInfo,\n isMultiLevelEnabled,\n isMultiLevelReferralUnlocked,\n multiLevelRebateInfoMutate,\n maxRebateRate,\n isLoading: isMultiLevelLoading,\n } = useMultiLevelReferralData();\n\n const [showHome, setShowHome] = useState(isLoading);\n\n useEffect(() => {\n setShowHome(true);\n }, [isLoading]);\n\n const { data: dailyVolume, mutate: dailyVolumeMutate } = useDaily({\n startDate: subDays(new Date(), 1),\n endDate: subDays(new Date(), 90),\n });\n\n const { data: volumeStatistics, mutate: volumeStatisticsMutate } =\n usePrivateQuery<API.UserVolStats>(\"/v1/volume/user/stats\", {\n revalidateOnFocus: false,\n });\n\n const isAffiliate = useMemo(() => {\n return (data?.referrer_info?.referral_codes?.length || 0) > 0;\n }, [data?.referrer_info]);\n\n const isTrader = useMemo(() => {\n return (data?.referee_info?.referer_code?.length || 0) > 0;\n }, [data?.referee_info]);\n\n const userVolume = useMemo<UserVolumeType>(() => {\n const volume: UserVolumeType = {};\n if (dailyVolume && dailyVolume.length > 0) {\n const now = format(new Date(), \"yyyy-MM-dd\");\n const index = dailyVolume.findIndex((item) => item.date === now);\n let oneDayVolume = 0;\n if (index !== -1) {\n oneDayVolume = dailyVolume[index].perp_volume;\n }\n volume[\"1d_volume\"] = oneDayVolume;\n }\n\n if (volumeStatistics) {\n volume[\"7d_volume\"] = volumeStatistics.perp_volume_last_7_days;\n volume[\"30d_volume\"] = volumeStatistics.perp_volume_last_30_days;\n volume[\"all_volume\"] = volumeStatistics.perp_volume_ltd;\n }\n return volume;\n }, [dailyVolume, volumeStatistics]);\n\n useEffect(() => {\n if (isAffiliate || isTrader) {\n setShowHome(false);\n }\n }, [isAffiliate, isTrader]);\n\n const memoMutate = useMemoizedFn(() => {\n volumeStatisticsMutate();\n dailyVolumeMutate();\n referralInfoMutate();\n generateCodeMutate();\n });\n\n useEffect(() => {\n const searchParams = new URLSearchParams(window.location.search);\n const refCode = searchParams.get(\"ref\");\n if (refCode) {\n localStorage.setItem(\"referral_code\", refCode);\n }\n }, []);\n\n const [tab, setTab] = useState<TabTypes>(() => {\n const savedTab = localStorage.getItem(\"orderly_affiliate_dashboard_tab\");\n return (savedTab as TabTypes) || TabTypes.affiliate;\n });\n\n useEffect(() => {\n localStorage.setItem(\"orderly_affiliate_dashboard_tab\", tab);\n }, [tab]);\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const lastStete = useRef<AccountStatusEnum>(AccountStatusEnum.NotConnected);\n\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (lastStete.current !== state.status) {\n lastStete.current = state.status;\n timerRef.current = setTimeout(() => {\n memoMutate();\n }, 1000);\n }\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n };\n }, [memoMutate, state.status]);\n\n const memoizedValue = useMemo<ReferralContextReturns>(() => {\n return {\n generateCode,\n showHome,\n referralInfo: data,\n isAffiliate: isAffiliate,\n isTrader: isTrader,\n tab,\n becomeAnAffiliateUrl,\n learnAffiliateUrl,\n referralLinkUrl,\n userVolume,\n dailyVolume,\n chartConfig,\n overwrite,\n isLoading: isLoading || isMultiLevelLoading,\n wrongNetwork,\n disabledConnect,\n setShowHome,\n setTab,\n mutate: memoMutate,\n onBecomeAnAffiliate,\n bindReferralCodeState,\n onLearnAffiliate,\n showReferralPage,\n splashPage,\n volumePrerequisite,\n multiLevelRebateInfo,\n isMultiLevelEnabled,\n isMultiLevelReferralUnlocked,\n multiLevelRebateInfoMutate,\n maxRebateRate,\n };\n }, [\n becomeAnAffiliateUrl,\n chartConfig,\n dailyVolume,\n data,\n disabledConnect,\n generateCode,\n isAffiliate,\n isLoading,\n isTrader,\n learnAffiliateUrl,\n overwrite,\n referralLinkUrl,\n showHome,\n tab,\n userVolume,\n wrongNetwork,\n onBecomeAnAffiliate,\n bindReferralCodeState,\n onLearnAffiliate,\n showReferralPage,\n splashPage,\n memoMutate,\n volumePrerequisite,\n multiLevelRebateInfo,\n isMultiLevelEnabled,\n isMultiLevelReferralUnlocked,\n multiLevelRebateInfoMutate,\n maxRebateRate,\n isMultiLevelLoading,\n ]);\n\n return (\n <ReferralContext.Provider value={memoizedValue}>\n {children}\n </ReferralContext.Provider>\n );\n};\n","import React, { FC, Fragment, useCallback, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Flex,\n Text,\n Collapsible,\n CollapsibleContent,\n Box,\n} from \"@orderly.network/ui\";\n\ntype FaqItem = {\n id: string;\n number: number;\n question: string;\n answer: string;\n expanded?: boolean;\n};\n\nexport const Faq = () => {\n const { t } = useTranslation();\n\n const faqItemsData = useMemo(() => {\n return [\n {\n id: \"faq-1\",\n question: t(\"affiliate.faq.question1\"),\n answer: t(\"affiliate.faq.answer1\"),\n },\n {\n id: \"faq-2\",\n question: t(\"affiliate.faq.question2\"),\n answer: t(\"affiliate.faq.answer2\"),\n },\n {\n id: \"faq-3\",\n question: t(\"affiliate.faq.question3\"),\n answer: t(\"affiliate.faq.answer3\"),\n },\n {\n id: \"faq-4\",\n question: t(\"affiliate.faq.question4\"),\n answer: t(\"affiliate.faq.answer4\"),\n },\n {\n id: \"faq-5\",\n question: t(\"affiliate.faq.question5\"),\n answer: t(\"affiliate.faq.answer5\"),\n },\n ] as FaqItem[];\n }, [t]);\n\n // State to track which items are expanded\n const [expandedItems, setExpandedItems] = useState<Set<string>>(new Set());\n\n // Toggle expanded state\n const toggleItem = useCallback((id: string) => {\n setExpandedItems((prev) => {\n const newSet = new Set(prev);\n if (newSet.has(id)) {\n newSet.delete(id);\n } else {\n newSet.add(id);\n }\n return newSet;\n });\n }, []);\n\n const faqItems = useMemo(() => {\n return faqItemsData.map((item) => ({\n ...item,\n expanded: expandedItems.has(item.id),\n }));\n }, [faqItemsData, expandedItems]);\n\n return (\n <Box>\n {/* Title */}\n <Text className=\"oui-text-[32px]\">{t(\"affiliate.faq.title\")}</Text>\n\n {/* FAQ Items */}\n <Flex direction=\"column\" itemAlign=\"stretch\" gap={0}>\n {faqItems.map((item, index) => (\n <Fragment key={item.id}>\n <Collapsible\n open={item.expanded}\n onOpenChange={() => toggleItem(item.id)}\n >\n <Flex\n direction=\"column\"\n className=\"oui-cursor-pointer oui-py-4\"\n itemAlign=\"stretch\"\n onClick={() => toggleItem(item.id)}\n >\n {/* Question row */}\n <Flex justify=\"between\" itemAlign=\"center\" gap={4}>\n <Flex gap={2} itemAlign=\"center\" className=\"oui-flex-1\">\n <Text size=\"2xl\" weight=\"semibold\">\n {`${index + 1}. ${item.question}`}\n </Text>\n </Flex>\n <ChevronIcon expanded={item.expanded} />\n </Flex>\n\n {/* Answer (collapsible) */}\n <CollapsibleContent>\n <Box\n className=\"oui-pt-3 oui-text-base-contrast-54\"\n dangerouslySetInnerHTML={{ __html: item.answer }}\n />\n </CollapsibleContent>\n </Flex>\n </Collapsible>\n\n {/* Divider (except for last item) */}\n {index < faqItems.length - 1 && (\n <div className=\"oui-my-4 oui-h-px oui-bg-line-6\" />\n )}\n </Fragment>\n ))}\n </Flex>\n </Box>\n );\n};\n\n// Chevron icon component\nconst ChevronIcon: FC<{ expanded: boolean }> = ({ expanded }) => (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={`oui-transition-transform oui-duration-200 ${\n expanded ? \"oui-rotate-180\" : \"\"\n }`}\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"oui-text-base-contrast-54\"\n />\n </svg>\n);\n","import { useMutation } from \"@orderly.network/hooks\";\n\nexport const useReferralCode = () => {\n const [doCreateReferralCode, { isMutating: isCreateMutating }] = useMutation(\n \"/v1/referral/multi_level/claim_code\",\n );\n\n const [doEditReferralCode, { isMutating: isEditMutating }] = useMutation(\n \"/v1/referral/edit_referral_code\",\n );\n\n const [doUpdateRebateRate, { isMutating: isUpdateRebateRateMutating }] =\n useMutation(\"/v1/referral/multi_level/rebate_rate/update\");\n\n const [doResetRebateRate, { isMutating: isResetRebateRateMutating }] =\n useMutation(\"/v1/referral/multi_level/rebate_rate/set_default\");\n\n const createReferralCode = async (params: {\n referee_rebate_rate: number;\n }) => {\n return doCreateReferralCode(params);\n };\n\n const editReferralCode = async (params: {\n current_referral_code: string;\n new_referral_code: string;\n }) => {\n return doEditReferralCode(params);\n };\n\n const updateRebateRate = async (params: {\n referee_rebate_rate: number;\n account_ids?: string[];\n }) => {\n return doUpdateRebateRate(params);\n };\n\n const resetRebateRate = async (params: { account_ids: string[] }) => {\n return doResetRebateRate(params);\n };\n\n const isMutating =\n isCreateMutating ||\n isEditMutating ||\n isUpdateRebateRateMutating ||\n isResetRebateRateMutating;\n\n return {\n createReferralCode,\n editReferralCode,\n updateRebateRate,\n resetRebateRate,\n isMutating,\n } as const;\n};\n","import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useReferralCode } from \"../../../../hooks/useReferralCode\";\nimport { ReferralCodeFormType } from \"../../../../types\";\nimport { ReferralCodeFormWidgetProps } from \"./referralCodeForm.widget\";\n\nexport const useReferralCodeFormScript = (\n options: ReferralCodeFormWidgetProps,\n) => {\n const { type, referralCode, maxRebateRate, referrerRebateRate, accountId } =\n options;\n const { t } = useTranslation();\n\n const [newCode, setNewCode] = useState<string>(referralCode || \"\");\n const [isReview, setIsReview] = useState(false);\n\n const maxRebatePercentage = useMemo(() => {\n return new Decimal(maxRebateRate).mul(100).toNumber();\n }, [maxRebateRate]);\n\n const [referrerRebatePercentage, setReferrerRebatePercentage] = useState(\n () => {\n if (type === ReferralCodeFormType.Create) {\n return Math.ceil(maxRebatePercentage / 2);\n }\n if (referrerRebateRate) {\n return new Decimal(referrerRebateRate).mul(100).toNumber();\n }\n return 0;\n },\n );\n\n const {\n createReferralCode,\n editReferralCode,\n updateRebateRate,\n resetRebateRate,\n isMutating,\n } = useReferralCode();\n\n const refereeRebatePercentage = useMemo(() => {\n return Math.max(\n 0,\n new Decimal(maxRebatePercentage).sub(referrerRebatePercentage).toNumber(),\n );\n }, [referrerRebatePercentage]);\n\n const codeChanged = useMemo(() => {\n return newCode !== referralCode;\n }, [newCode, referralCode]);\n\n const rateChanged = useMemo(() => {\n return (\n new Decimal(referrerRebatePercentage).toNumber() !==\n new Decimal(referrerRebateRate || 0).mul(100).toNumber()\n );\n }, [referrerRebatePercentage, referrerRebateRate, newCode]);\n\n const handleError = (err: any) => {\n console.error(\"handleError\", err);\n toast.error(err?.message || t(\"common.somethingWentWrong\"));\n };\n\n const handleResult = (res: any) => {\n if (res.success) {\n options.onSuccess?.();\n toast.success(t(\"affiliate.confirmChanges.success\"));\n options.close?.();\n } else {\n toast.error(res.message);\n }\n };\n\n const onEdit = async () => {\n const editReferralCodeParams = {\n current_referral_code: referralCode!,\n new_referral_code: newCode!,\n };\n\n const updateRebateRateParams = {\n referee_rebate_rate: new Decimal(refereeRebatePercentage)\n .div(100)\n .toNumber(),\n account_ids: accountId ? [accountId] : undefined,\n };\n\n try {\n if (codeChanged && rateChanged) {\n const codeRes = await editReferralCode(editReferralCodeParams);\n if (!codeRes.success) {\n toast.error(codeRes.message);\n return;\n }\n const rateRes = await updateRebateRate(updateRebateRateParams);\n handleResult(rateRes);\n } else if (codeChanged) {\n const res = await editReferralCode(editReferralCodeParams);\n handleResult(res);\n } else if (rateChanged) {\n const res = await updateRebateRate(updateRebateRateParams);\n handleResult(res);\n }\n } catch (err) {\n handleError(err);\n }\n };\n\n const onCreate = async () => {\n try {\n const referee_rebate_rate = new Decimal(refereeRebatePercentage)\n .div(100)\n .toNumber();\n\n const res = await createReferralCode({ referee_rebate_rate });\n if (res.success) {\n toast.success(t(\"affiliate.referralCode.create.success\"));\n options.onSuccess?.();\n options.close?.();\n } else {\n toast.error(res.message);\n }\n } catch (err) {\n handleError(err);\n }\n };\n\n const onReset = async () => {\n try {\n const res = await resetRebateRate({ account_ids: [accountId!] });\n handleResult(res);\n } catch (err) {\n handleError(err);\n }\n };\n\n const onClick = () => {\n switch (type) {\n case ReferralCodeFormType.Create:\n onCreate();\n break;\n case ReferralCodeFormType.Edit:\n if (isReview) {\n onEdit();\n } else {\n setIsReview(true);\n }\n break;\n case ReferralCodeFormType.Reset:\n onReset();\n break;\n }\n };\n\n const buttonDisabled =\n type === ReferralCodeFormType.Edit && !codeChanged && !rateChanged;\n\n return {\n onClick,\n maxRebatePercentage,\n referrerRebatePercentage,\n setReferrerRebatePercentage,\n refereeRebatePercentage,\n isMutating,\n newCode,\n setNewCode,\n isReview,\n buttonDisabled,\n onReset,\n };\n};\n\nexport type ReferralCodeFormReturns = ReturnType<\n typeof useReferralCodeFormScript\n>;\n","import { FC } from \"react\";\nimport { IconProps } from \"../utils/types\";\n\nexport const GiftIcon: FC<IconProps> = (props) => {\n const { size = 16, className, ...rest } = props;\n\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n {...rest}\n >\n <path\n d=\"M5.99902 1.99377C4.52636 1.99377 3.33236 3.18777 3.33236 4.66044H2.66569C2.29769 4.66044 1.99902 4.9591 1.99902 5.3271C1.99902 5.66044 1.99902 7.66043 1.99902 7.99377C1.99902 8.36177 2.29769 8.66043 2.66569 8.66043V11.3271C2.66569 12.7998 3.85969 13.9938 5.33236 13.9938H10.6657C12.1384 13.9938 13.3324 12.7998 13.3324 11.3271V8.66043C13.7004 8.66043 13.999 8.36177 13.999 7.99377V5.3271C13.999 4.9591 13.7004 4.66044 13.3324 4.66044H12.6657C12.6657 3.18777 11.4717 1.99377 9.99902 1.99377C9.19169 1.99377 8.48836 2.36444 7.99902 2.93111C7.50969 2.36444 6.80636 1.99377 5.99902 1.99377ZM5.99902 3.32711C6.73569 3.32711 7.33236 3.92377 7.33236 4.66044H4.66569C4.66569 3.92377 5.26236 3.32711 5.99902 3.32711ZM9.99902 3.32711C10.7357 3.32711 11.3324 3.92377 11.3324 4.66044H8.66569C8.66569 3.92377 9.26236 3.32711 9.99902 3.32711ZM3.33236 5.99377H12.6657V7.3271H3.33236C3.33236 6.84777 3.33236 6.4731 3.33236 5.99377ZM3.99902 8.66043H7.33236V12.6604H5.33236C4.59569 12.6604 3.99902 12.0638 3.99902 11.3271V8.66043ZM8.66569 8.66043H11.999V11.3271C11.999 12.0638 11.4024 12.6604 10.6657 12.6604H8.66569V8.66043Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n","import { ReactNode, useMemo, useRef, useState } from \"react\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\nimport {\n Box,\n Button,\n Flex,\n inputFormatter,\n Slider,\n Text,\n TextField,\n WarningIcon,\n Divider,\n formatAddress,\n} from \"@orderly.network/ui\";\nimport { GiftIcon } from \"../../../../icons/giftIcon\";\nimport { ReferralCodeFormField, ReferralCodeFormType } from \"../../../../types\";\nimport { ReferralCodeFormReturns } from \"./referralCodeForm.script\";\nimport { ReferralCodeFormWidgetProps } from \"./referralCodeForm.widget\";\n\nexport type ReferralCodeFormProps = ReferralCodeFormReturns &\n ReferralCodeFormWidgetProps;\n\nexport const ReferralCodeForm = (props: ReferralCodeFormProps) => {\n const { type, isReview } = props;\n const { t } = useTranslation();\n\n const isReset = type === ReferralCodeFormType.Reset;\n const hasBoundReferee = !!props.directInvites && props.directInvites > 0;\n\n const isEditingRefereeRebateRate = !!props.accountId;\n\n const noCommissionAvailable = props.maxRebateRate === 0;\n\n const { title, description, buttonText } = useMemo(() => {\n switch (type) {\n case ReferralCodeFormType.Create:\n return {\n title: t(\"affiliate.referralCode.create.modal.title\"),\n description: t(\"affiliate.referralCode.create.warning\"),\n buttonText: t(\"affiliate.confirmAndGenerate\"),\n };\n case ReferralCodeFormType.Edit:\n return {\n title: isEditingRefereeRebateRate\n ? t(\"affiliate.refereeRebateRate.modal.title\", {\n accountId: formatAddress(props.accountId!),\n })\n : t(\"affiliate.referralCode.edit.modal.title\"),\n description: isEditingRefereeRebateRate\n ? isReview\n ? t(\"affiliate.refereeRebateRate.review.warning\")\n : t(\"affiliate.refereeRebateRate.edit.warning\")\n : isReview\n ? t(\"affiliate.rebateRate.review.warning\")\n : t(\"affiliate.rebateRate.edit.warning\"),\n buttonText: isReview\n ? t(\"affiliate.confirmChanges\")\n : t(\"affiliate.review\"),\n };\n case ReferralCodeFormType.Reset:\n return {\n title: t(\"affiliate.resetRebateRate.modal.title\"),\n description: (\n <Text size=\"2xs\" intensity={54}>\n {t(\"affiliate.resetRebateRate.modal.description\", {\n accountId: formatAddress(props.accountId!),\n })}\n </Text>\n ),\n buttonText: t(\"common.reset\"),\n };\n default:\n return {\n title: \"\",\n description: \"\",\n buttonText: \"\",\n };\n }\n }, [t, type, isEditingRefereeRebateRate, isReview, props.accountId]);\n\n const titleView = (\n <Flex width={\"100%\"} direction=\"column\" itemAlign=\"start\" gap={3}>\n <Text size=\"base\" intensity={98}>\n {title}\n </Text>\n <Divider intensity={8} className=\"oui-w-full\" />\n </Flex>\n );\n\n const descriptionView = <WarningBox>{description}</WarningBox>;\n\n const referralCodeInput = (\n <ReferralCodeInput\n value={props.newCode}\n onChange={props.setNewCode}\n autoFocus={props.focusField === ReferralCodeFormField.ReferralCode}\n disabled={isReview || hasBoundReferee}\n />\n );\n\n const commissionConfiguration = (\n <>\n <Text size=\"2xs\" intensity={54}>\n {t(\"affiliate.commissionConfiguration\")}\n </Text>\n\n {!isReview && (\n <Text size=\"2xs\" intensity={54}>\n {t(\"affiliate.totalCommissionAvailable\")}:{\" \"}\n <Text className=\"oui-text-warning\">{props.maxRebatePercentage}%</Text>\n </Text>\n )}\n </>\n );\n\n const rebateRateSlider = (\n <RebateRateSlider\n value={props.referrerRebatePercentage}\n restValue={props.refereeRebatePercentage}\n onChange={props.setReferrerRebatePercentage}\n max={props.maxRebatePercentage}\n disabled={noCommissionAvailable || isReview || isReset}\n disabledIncrease={hasBoundReferee}\n directBonusRebateRate={props.directBonusRebateRate}\n noCommissionAvailable={noCommissionAvailable}\n />\n );\n\n const refereeInfo = (\n <Flex width={\"100%\"} justify=\"between\" gap={2}>\n <Text size=\"2xs\" intensity={54}>\n {t(\"affiliate.referees\")}\n </Text>\n\n <Text.formatted rule=\"address\" size=\"2xs\" intensity={98}>\n {props.accountId}\n </Text.formatted>\n </Flex>\n );\n\n const noCommissionAvailableWarning = noCommissionAvailable && (\n <Text size=\"2xs\" className=\"oui-text-warning\">\n {isEditingRefereeRebateRate\n ? t(\"affiliate.rebateRate.noCommissionRate\")\n : t(\"affiliate.rebateRate.noCommissionAvailable\")}\n </Text>\n );\n\n const resetRebateRateLabel = (\n <Text size=\"2xs\" intensity={98} className=\"oui-text-start\">\n {t(\"affiliate.resetRebateRate.rateAfterReset\")}:\n </Text>\n );\n\n const buttons = (\n <Flex direction={\"row\"} gap={2} width={\"100%\"} mt={0} pt={5}>\n <Button\n variant=\"contained\"\n color=\"gray\"\n fullWidth\n onClick={props.close}\n size=\"md\"\n >\n {t(\"common.cancel\")}\n </Button>\n <Button\n fullWidth\n onClick={props.onClick}\n disabled={props.buttonDisabled || props.isMutating}\n loading={props.isMutating}\n size=\"md\"\n >\n {buttonText}\n </Button>\n </Flex>\n );\n\n const renderContent = () => {\n switch (type) {\n case ReferralCodeFormType.Create:\n return (\n <Flex width={\"100%\"} direction=\"column\" itemAlign=\"start\" gap={2}>\n {commissionConfiguration}\n {rebateRateSlider}\n {noCommissionAvailableWarning}\n {buttons}\n </Flex>\n );\n case ReferralCodeFormType.Edit:\n return (\n <>\n {isEditingRefereeRebateRate ? refereeInfo : referralCodeInput}\n\n <Flex width={\"100%\"} direction=\"column\" itemAlign=\"start\" gap={2}>\n {commissionConfiguration}\n {rebateRateSlider}\n {noCommissionAvailableWarning}\n {buttons}\n </Flex>\n </>\n );\n case ReferralCodeFormType.Reset:\n return (\n <Flex width={\"100%\"} direction=\"column\" itemAlign=\"start\" gap={2}>\n {resetRebateRateLabel}\n {rebateRateSlider}\n {buttons}\n </Flex>\n );\n default:\n return null;\n }\n };\n\n return (\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n gap={6}\n className=\"oui-font-semibold\"\n >\n {titleView}\n {descriptionView}\n {renderContent()}\n </Flex>\n );\n};\n\nconst NoCommissionCard = (props: { directBonusRebateRate?: number }) => {\n const { t } = useTranslation();\n const amount = props.directBonusRebateRate;\n\n return (\n <Flex\n direction=\"column\"\n gap={2}\n mt={2}\n width={\"100%\"}\n p={4}\n r=\"lg\"\n className=\"oui-border oui-border-base-contrast/[0.08] oui-tracking-[0.03em]\"\n >\n <Flex justify=\"between\" width={\"100%\"} itemAlign=\"center\">\n <Flex direction=\"column\" itemAlign=\"start\" gap={1}>\n <Text size=\"2xs\" intensity={54}>\n {t(\"affiliate.noCommissionCard.title\")}\n </Text>\n <Text size=\"lg\" className=\"oui-text-primary-light oui-font-semibold\">\n + {amount}%\n </Text>\n </Flex>\n <GiftIcon size={24} className=\"oui-shrink-0 oui-text-primary-light\" />\n </Flex>\n <Text size=\"2xs\" intensity={98} className=\"oui-leading-[15px]\">\n {t(\"affiliate.noCommissionCard.content\", { amount })}\n </Text>\n </Flex>\n );\n};\n\ntype RebateRateSliderProps = {\n value: number;\n onChange: (value: number) => void;\n max: number;\n disabled: boolean;\n restValue: number;\n disabledIncrease?: boolean;\n directBonusRebateRate?: number;\n noCommissionAvailable?: boolean;\n};\n\nconst RebateRateSlider = (props: RebateRateSliderProps) => {\n const { t } = useTranslation();\n const [maxValue] = useState(props.value);\n\n return (\n <>\n {!props.disabled && (\n <Box width={\"100%\"} my={2}>\n <Slider\n min={0}\n max={props.max}\n step={1}\n value={[props.value]}\n onValueChange={(value) => {\n const newValue = value[0] as number;\n props.onChange(\n props.disabledIncrease\n ? Math.min(newValue, maxValue)\n : newValue,\n );\n }}\n classNames={{\n range: \"oui-bg-success-darken oui-h-2 oui-top-[0px]\",\n trackInner: \"oui-bg-success-darken/30 oui-h-2 oui-top-[0px]\",\n thumb: \"oui-border-[#d9d9d9] oui-bg-[#d9d9d9] oui-size-4\",\n }}\n />\n </Box>\n )}\n\n <div className=\"oui-w-full\">\n <Flex justify={\"between\"} width={\"100%\"}>\n <Text size=\"sm\" intensity={54}>\n {t(\"affiliate.youKeep\")}\n </Text>\n <Text size=\"sm\" intensity={54}>\n {t(\"affiliate.refereesGet\")}\n </Text>\n </Flex>\n\n <Flex justify={\"between\"} width={\"100%\"}>\n <Text.formatted size=\"lg\" className=\"oui-text-success-darken\">\n {props.value}%\n </Text.formatted>\n <Text.formatted size=\"lg\" className=\"oui-text-success-darken/50\">\n {props.restValue}%\n </Text.formatted>\n </Flex>\n\n {props.noCommissionAvailable ? (\n <NoCommissionCard\n directBonusRebateRate={props.directBonusRebateRate}\n />\n ) : (\n props.directBonusRebateRate != null &&\n props.directBonusRebateRate > 0 && (\n <Flex gap={2} mt={2} width={\"100%\"}>\n <GiftIcon\n size={16}\n className=\"oui-text-base-contrast oui-mt-[1px]\"\n />\n <Text\n size=\"base\"\n intensity={54}\n as=\"span\"\n className=\"oui-inline-flex oui-items-center oui-gap-1 oui-tracking-[0.03em]\"\n >\n <Trans\n i18nKey=\"affiliate.extraBonusOnDirectReferrals\"\n values={{ amount: props.directBonusRebateRate }}\n components={[<Text as=\"span\" color=\"primaryLight\" key=\"0\" />]}\n />\n </Text>\n </Flex>\n )\n )}\n </div>\n </>\n );\n};\n\ntype ReferralCodeInputProps = {\n value: string;\n onChange: (value: string) => void;\n autoFocus: boolean;\n disabled: boolean;\n};\n\nconst ReferralCodeInput = (props: ReferralCodeInputProps) => {\n const { t } = useTranslation();\n\n const hasSetCursorToEnd = useRef(false);\n\n return (\n <TextField\n type=\"text\"\n fullWidth\n label={t(\"affiliate.referralCode.editCodeModal.label\")}\n value={props.value}\n onChange={(e) => {\n props.onChange(e.target.value);\n }}\n onFocus={(e) => {\n if (props.autoFocus && !hasSetCursorToEnd.current) {\n hasSetCursorToEnd.current = true;\n const input = e.target as HTMLInputElement;\n const len = input.value.length;\n requestAnimationFrame(() => {\n input.setSelectionRange(len, len);\n });\n }\n }}\n formatters={[\n inputFormatter.createRegexInputFormatter((value: string | number) => {\n return String(value).replace(/[a-z]/g, (char: string) =>\n char.toUpperCase(),\n );\n }),\n inputFormatter.createRegexInputFormatter(/[^A-Z0-9]/g),\n ]}\n className=\"oui-w-full\"\n classNames={{\n label: \"oui-text-base-contrast-54 oui-text-xs\",\n input: \"placeholder:oui-text-base-contrast-20 placeholder:oui-text-sm\",\n }}\n maxLength={10}\n minLength={4}\n autoComplete=\"off\"\n disabled={props.disabled}\n autoFocus={props.autoFocus}\n />\n );\n};\n\nconst WarningBox = (props: { children: ReactNode }) => {\n const { children } = props;\n\n if (typeof children === \"string\") {\n return (\n <Flex\n className=\"oui-bg-warning/10\"\n justify=\"start\"\n itemAlign=\"start\"\n gap={1}\n r=\"lg\"\n p={3}\n >\n <WarningIcon className=\"oui-shrink-0 oui-text-warning\" />\n <Text size=\"2xs\" intensity={54} className=\"oui-text-warning\">\n {children}\n </Text>\n </Flex>\n );\n }\n\n return children;\n};\n","import { ReferralCodeFormField, ReferralCodeFormType } from \"../../../../types\";\nimport { useReferralCodeFormScript } from \"./referralCodeForm.script\";\nimport { ReferralCodeForm } from \"./referralCodeForm.ui\";\n\nexport type ReferralCodeFormWidgetProps = {\n type: ReferralCodeFormType;\n close?: () => void;\n onSuccess?: () => void;\n referralCode?: string;\n maxRebateRate: number;\n referrerRebateRate?: number;\n focusField?: ReferralCodeFormField;\n accountId?: string;\n directInvites?: number;\n directBonusRebateRate?: number;\n};\n\nexport const ReferralCodeFormWidget = (props: ReferralCodeFormWidgetProps) => {\n const state = useReferralCodeFormScript(props);\n return <ReferralCodeForm {...state} {...props} />;\n};\n","import { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\nimport { ReferralCodeFormWidget } from \"./referralCodeForm.widget\";\n\nexport const ReferralCodeFormDialogId = \"ReferralCodeFormDialogId\";\nexport const ReferralCodeFormSheetId = \"ReferralCodeFormSheetId\";\n\nregisterSimpleDialog(ReferralCodeFormDialogId, ReferralCodeFormWidget, {\n size: \"sm\",\n classNames: {\n content: \"oui-border oui-border-line-6\",\n body: \"!oui-pt-3\",\n },\n});\n\nregisterSimpleSheet(ReferralCodeFormSheetId, ReferralCodeFormWidget);\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Button,\n ButtonProps,\n cn,\n Flex,\n parseNumber,\n Text,\n} from \"@orderly.network/ui\";\nimport { useScaffoldContext } from \"@orderly.network/ui-scaffold\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useReferralContext } from \"../../../provider\";\n\nexport type TradingVolumeProgressProps = {\n classNames?: {\n root?: string;\n description?: string;\n button?: string;\n };\n buttonProps?: ButtonProps;\n};\n\nexport const TradingVolumeProgress: FC<TradingVolumeProgressProps> = (\n props,\n) => {\n const { t } = useTranslation();\n const { classNames } = props;\n const { volumePrerequisite } = useReferralContext();\n const { routerAdapter } = useScaffoldContext();\n\n const { current_volume = 0, required_volume = 0 } = volumePrerequisite || {};\n\n const progressPercentage = useMemo(() => {\n if (required_volume === 0) return 0;\n const percentage = new Decimal(current_volume)\n .div(required_volume)\n .mul(100)\n .toNumber();\n return Math.min(percentage, 100);\n }, [current_volume, required_volume]);\n\n const formatRequiredVolume = useMemo(() => {\n return parseNumber(required_volume, {\n rule: \"price\",\n dp: 0,\n });\n }, [required_volume]);\n\n const gotoTrade = () => {\n routerAdapter?.onRouteChange?.({\n href: \"/perp\",\n name: \"Perp\",\n });\n };\n\n return (\n <Flex width=\"100%\" direction=\"column\" gap={4} className={classNames?.root}>\n <Text\n size=\"sm\"\n intensity={54}\n className={cn(\"oui-text-center\", classNames?.description)}\n >\n {t(\"affiliate.newReferralProgram.tradeUnlock.description\", {\n volume: formatRequiredVolume,\n })}\n </Text>\n <Flex width=\"100%\" direction={\"column\"} gap={2}>\n <Flex\n width=\"100%\"\n justify=\"between\"\n className=\"oui-text-2xs oui-text-base-contrast\"\n >\n <Text>{t(\"common.current\")}</Text>\n <Flex gap={1}>\n <Text.numeral rule=\"price\" dp={0}>\n {current_volume}\n </Text.numeral>\n <Text.numeral\n intensity={54}\n rule=\"price\"\n dp={0}\n prefix={\"/ \"}\n suffix=\" USDC\"\n >\n {required_volume}\n </Text.numeral>\n </Flex>\n </Flex>\n\n <div className=\"oui-h-[8px] oui-w-full oui-rounded-full oui-bg-base-contrast-4\">\n <div\n style={{\n width: `${progressPercentage}%`,\n }}\n className={cn(\n \"oui-h-full oui-rounded-l-full oui-bg-primary-light\",\n progressPercentage === 100 && \"oui-rounded-r-full\",\n )}\n />\n </div>\n </Flex>\n\n <Button size=\"md\" onClick={gotoTrade} {...props.buttonProps}>\n {t(\"affiliate.newReferralProgram.tradeUnlock\")}\n </Button>\n </Flex>\n );\n};\n","import { useMemo } from \"react\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { Button, Flex, modal, Text } from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { useReferralContext } from \"../../../../provider\";\nimport { ReferralCodeFormType } from \"../../../../types\";\nimport { ReferralCodeFormDialogId } from \"../../affiliate/referralCodeForm/modal\";\nimport { TradingVolumeProgress } from \"../../components/tradingVolumeProgress\";\n\nexport const Hero = () => {\n const { t } = useTranslation();\n const { state } = useAccount();\n const { wrongNetwork } = useAppContext();\n const status = state.status;\n\n const {\n isMultiLevelReferralUnlocked,\n isMultiLevelEnabled,\n multiLevelRebateInfo,\n multiLevelRebateInfoMutate,\n maxRebateRate,\n } = useReferralContext();\n\n const onCreateReferralCode = () => {\n modal.show(ReferralCodeFormDialogId, {\n type: ReferralCodeFormType.Create,\n maxRebateRate,\n directBonusRebateRate: 10, // Hardcoded value before API is ready\n onSuccess: () => {\n multiLevelRebateInfoMutate();\n },\n });\n };\n\n const description = useMemo(() => {\n if (wrongNetwork) {\n return t(\"affiliate.wrongNetwork.description\");\n }\n\n if (status === AccountStatusEnum.NotConnected) {\n return t(\"affiliate.newReferralProgram.description\");\n }\n\n if (\n status > AccountStatusEnum.Connected &&\n status < AccountStatusEnum.EnableTrading\n ) {\n return t(\"affiliate.setUpAccount.description\");\n }\n\n if (!isMultiLevelReferralUnlocked) {\n return \"\";\n }\n\n return t(\"affiliate.newReferralProgram.description\");\n }, [t, wrongNetwork, status]);\n\n const renderContent = () => {\n if (!isMultiLevelReferralUnlocked) {\n return (\n <TradingVolumeProgress\n classNames={{\n root: \"oui-items-start\",\n description: \"!oui-text-start\",\n }}\n buttonProps={{\n size: \"xl\",\n }}\n />\n );\n }\n\n if (isMultiLevelEnabled && !multiLevelRebateInfo?.referral_code) {\n return (\n <Button size=\"lg\" className=\"oui-px-4\" onClick={onCreateReferralCode}>\n {t(\"affiliate.referralCode.create\")}\n </Button>\n );\n }\n\n return \"\";\n\n // return (\n // <Button size=\"lg\" className=\"oui-px-4\" disabled>\n // {t(\"affiliate.accountNotEligible\")}\n // </Button>\n // );\n };\n\n return (\n <Flex\n gap={8}\n className=\"oui-flex-col-reverse md:oui-flex-row\"\n id=\"oui-affiliate-landing-hero\"\n itemAlign={\"center\"}\n >\n <Flex direction=\"column\" itemAlign=\"start\" gap={6} className=\"oui-flex-1\">\n <Flex\n direction=\"column\"\n gap={3}\n itemAlign=\"start\"\n id=\"oui-affiliate-landing-hero-title\"\n >\n <Text\n weight=\"semibold\"\n className=\"oui-text-[32px] oui-leading-tight md:oui-text-[48px]\"\n >\n {t(\"affiliate.landing.title\")}\n </Text>\n </Flex>\n\n {description && (\n <Text size=\"sm\" intensity={54}>\n {description}\n </Text>\n )}\n\n <AuthGuard\n labels={{\n connectWallet: t(\"affiliate.connectWallet\"),\n signin: t(\"affiliate.setUpAccount\"),\n enableTrading: t(\"affiliate.setUpAccount\"),\n }}\n >\n {renderContent()}\n </AuthGuard>\n </Flex>\n\n <img\n src=\"https://oss.orderly.network/static/sdk/referral/network-diagram.png\"\n alt=\"Network diagram\"\n className=\"oui-size-[335px] oui-object-cover md:oui-size-[480px]\"\n id=\"oui-affiliate-landing-network-diagram\"\n />\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Flex, Text } from \"@orderly.network/ui\";\n\n/**\n * Icon type for step card\n */\nexport type IconType = \"wallet\" | \"settings\" | \"rocket\";\n\n/**\n * StepCard component props\n */\nexport type StepCardProps = {\n step: number;\n icon: IconType;\n title: string;\n description: string;\n className?: string;\n};\n\n/**\n * StepCard component - displays a step card with icon, title and description\n */\nexport const StepCard: FC<StepCardProps> = (props) => {\n const { step, icon, title, description } = props;\n\n return (\n <Flex\n direction=\"column\"\n gap={3}\n r=\"2xl\"\n p={5}\n itemAlign={\"start\"}\n className=\"oui-bg-base-9\"\n >\n {/* Icon */}\n <Flex\n justify=\"center\"\n className=\"oui-rounded-full oui-bg-base-7 lg:oui-justify-start\"\n p={3}\n width={48}\n height={48}\n itemAlign=\"center\"\n >\n {renderIcon(icon)}\n </Flex>\n\n {/* Title */}\n <Text size=\"xl\" weight=\"semibold\">\n {`${step}. ${title}`}\n </Text>\n\n {/* Description */}\n <Text intensity={54} size={\"sm\"}>\n {description}\n </Text>\n </Flex>\n );\n};\n\n/**\n * Icon rendering function - renders the appropriate icon based on type\n */\nconst renderIcon = (iconType: IconType) => {\n switch (iconType) {\n case \"wallet\":\n return <WalletIcon />;\n case \"settings\":\n return <SettingsIcon />;\n case \"rocket\":\n return <RocketIcon />;\n default:\n return null;\n }\n};\n\n// SVG Icons\nconst WalletIcon = () => (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7.006 2.93a4 4 0 0 0-4 4v10a4 4 0 0 0 4 4h10c1.552 0 3-1.448 3-3l-.004-1.163a3.025 3.025 0 0 0 2.004-2.837v-4c0-1.268-.822-2.428-1.994-2.815l-.006-1.185c0-1.553-1.448-3-3-3zm0 2h10c.448 0 1 .552 1 1v1h-3a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h3v1c0 .447-.552 1-1 1h-10a2 2 0 0 1-2-2v-10a2 2 0 0 1 2-2m8 4h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1m2 2a1 1 0 1 0 0 2 1 1 0 0 0 0-2\"\n fill=\"#fff\"\n fillOpacity=\".54\"\n />\n </svg>\n);\n\nconst SettingsIcon = () => (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M14.99 2.93c-1.267 0-2.45.832-2.818 2.002L3.99 4.93a1 1 0 0 0 0 2l8.18-.001c.449 1.225 1.552 2 2.82 2s2.382-.777 2.838-2.008l2.162.009a1 1 0 0 0 0-2h-2.17c-.482-1.22-1.562-2-2.83-2m0 2a1 1 0 1 1 0 2 1 1 0 0 1 0-2m-6 4c-1.317 0-2.42.82-2.823 2.002-.14.009-2.176-.002-2.176-.002a1 1 0 0 0 0 2s2.052-.021 2.18-.008a2.95 2.95 0 0 0 2.82 2.008c1.268 0 2.354-.777 2.83-1.997l8.17-.003a1 1 0 0 0 0-2l-8.176-.01A3.01 3.01 0 0 0 8.99 8.93m0 2a1 1 0 1 1 0 2 1 1 0 0 1 0-2m6 4c-1.267 0-2.427.835-2.819 1.99l-8.18.01a1 1 0 0 0 0 2h8.165a3.02 3.02 0 0 0 2.835 2c1.268 0 2.36-.793 2.842-2h2.158a1 1 0 0 0 0-2l-2.167-.006a3.03 3.03 0 0 0-2.833-1.994m0 2a1 1 0 1 1 0 2 1 1 0 0 1 0-2\"\n fill=\"#fff\"\n fillOpacity=\".54\"\n />\n </svg>\n);\n\nconst RocketIcon = () => (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M18.527 13.88c-.423.424-.884.808-1.345 1.154a.63.63 0 0 0-.269.423 9.2 9.2 0 0 1-2.459 4.346 10 10 0 0 1-1.883 1.462c-.576.346-1.268-.231-1.037-.885.384-1 .538-2.076.538-3.192-.077 0-.192.039-.27.039a39 39 0 0 1-2.612-2.423 51 51 0 0 1-2.42-2.615c0-.077.038-.193.038-.27-1.115 0-2.19.193-3.19.539-.614.23-1.23-.462-.883-1.039a10 10 0 0 1 1.46-1.884 9.2 9.2 0 0 1 4.342-2.461c.153-.039.307-.154.422-.27.346-.5.73-.923 1.153-1.346 2.997-3 7.185-4.038 11.066-3.153a.76.76 0 0 1 .538.538c.845 3.846-.192 8.038-3.189 11.038m-1.69-6.73a2.41 2.41 0 0 0-3.382 0 2.416 2.416 0 0 0 0 3.385 2.41 2.41 0 0 0 3.381 0c.96-.962.96-2.462 0-3.385M8.266 18.92c-.73.73-5.225 3.807-6.109 2.923-.884-.885 2.19-5.385 2.92-6.115s2.037-.616 2.92.269c.884.885 1 2.192.27 2.923\"\n fill=\"#fff\"\n fillOpacity=\".54\"\n />\n </svg>\n);\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Text, Grid, Box } from \"@orderly.network/ui\";\nimport { IconType, StepCard } from \"./stepCard\";\n\ntype StepData = {\n step: number;\n icon: IconType;\n title: string;\n description: string;\n};\n\nexport const HowItWorks = () => {\n const { t } = useTranslation();\n const steps = useMemo<StepData[]>(() => {\n return [\n {\n step: 1,\n icon: \"wallet\" as IconType,\n title: t(\"affiliate.howItWorks.step1.title\"),\n description: t(\"affiliate.howItWorks.step1.description\"),\n },\n {\n step: 2,\n icon: \"settings\" as IconType,\n title: t(\"affiliate.howItWorks.step2.title\"),\n description: t(\"affiliate.howItWorks.step2.description\"),\n },\n {\n step: 3,\n icon: \"rocket\" as IconType,\n title: t(\"affiliate.howItWorks.step3.title\"),\n description: t(\"affiliate.howItWorks.step3.description\"),\n },\n ];\n }, [t]);\n\n return (\n <Box id=\"oui-affiliate-landing-how-it-works\">\n {/* Title and subtitle */}\n <Flex direction=\"column\" itemAlign=\"start\">\n <Text weight=\"semibold\" className=\"oui-text-[32px]\">\n {t(\"affiliate.howItWorks.title\")}\n </Text>\n <Box py={4}>\n <Text intensity={54}>{t(\"affiliate.howItWorks.description\")}</Text>\n </Box>\n </Flex>\n\n {/* Step cards */}\n <Grid className=\"oui-grid-cols-1 md:oui-grid-cols-3\" gap={6}>\n {steps.map((step) => (\n <StepCard\n key={step.step}\n step={step.step}\n icon={step.icon}\n title={step.title}\n description={step.description}\n />\n ))}\n </Grid>\n </Box>\n );\n};\n","import { Flex } from \"@orderly.network/ui\";\nimport { Faq } from \"./components/faq\";\nimport { Hero } from \"./components/hero\";\nimport { HowItWorks } from \"./components/howItWorks\";\n\nexport const LandingPage = () => {\n return (\n <Flex\n id=\"oui-affiliate-landing-page\"\n direction=\"column\"\n gap={10}\n itemAlign={\"stretch\"}\n className=\"oui-mx-auto oui-w-full oui-p-5 md:oui-w-[1040px] md:oui-py-12\"\n >\n <Hero />\n <HowItWorks />\n <Faq />\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { VolBarChart } from \"@orderly.network/chart\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Select, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { TitleStatisticReturns } from \"./commissionChart.script\";\n\nexport const CommissionChart: FC<TitleStatisticReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n id=\"oui-affiliate-affiliate-titleStatistic\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-border oui-border-line-6 oui-bg-base-9\"\n >\n <Flex justify={\"between\"} width={\"100%\"}>\n <Text size=\"lg\">{`${t(\"affiliate.commission\")} (USDC)`}</Text>\n <div>\n <Select.options\n size={\"xs\"}\n value={props.period}\n onValueChange={props.onPeriodChange}\n options={props.periodTypes}\n />\n </div>\n </Flex>\n\n <Flex className=\"oui-flex oui-h-[170px] oui-w-full oui-flex-row oui-items-stretch 2xl:oui-h-[196px]\">\n <VolBarChart\n data={props.dataSource!}\n colors={{ fill: \"rgba(0, 180, 158, 1)\" }}\n className=\"oui-w-full oui-flex-1\"\n tooltip={{\n rm: Decimal.ROUND_DOWN,\n dp: 2,\n }}\n />\n </Flex>\n </Flex>\n );\n};\n","import { format, subDays } from \"date-fns\";\nimport type { VolChartDataItem } from \"@orderly.network/chart\";\n\nexport function fillData(\n days: number,\n origin?: VolChartDataItem[],\n): VolChartDataItem[] {\n const now = Date();\n const result = new Array(days)\n .fill(0)\n .map<VolChartDataItem>((_, index) => {\n return {\n date: format(subDays(now, index + 1), \"yyyy-MM-dd\"),\n volume: 0,\n opacity: 0,\n };\n })\n .reverse();\n\n const dataObject = origin?.reduce<{ [key: string]: VolChartDataItem }>(\n (acc, curr) => {\n acc[curr.date] = curr;\n return acc;\n },\n {},\n );\n\n for (let index = 0; index < result.length; index++) {\n const element = result[index];\n const originData = dataObject?.[element.date];\n if (originData) {\n result[index] = { ...originData, opacity: originData.volume > 0 ? 1 : 0 };\n }\n }\n\n return result;\n}\n","import { useMemo, useState } from \"react\";\nimport { format, subDays } from \"date-fns\";\nimport { RefferalAPI, useReferralRebateSummary } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { fillData } from \"../../../../utils/chartUtils\";\n\nexport type TitleStatisticReturns = {\n period: string;\n periodTypes: { label: string; value: string }[];\n onPeriodChange: (item: string) => void;\n dataSource?: {\n date: string;\n volume: number;\n }[];\n};\n\nexport const useCommissionChartScript = (): TitleStatisticReturns => {\n const { t } = useTranslation();\n\n const [period, setPeriod] = useState(\"90\");\n\n const periodTypes = useMemo(() => {\n return [\n { label: t(\"common.select.7d\"), value: \"7\" },\n { label: t(\"common.select.30d\"), value: \"30\" },\n { label: t(\"common.select.90d\"), value: \"90\" },\n ];\n }, [t]);\n\n const onPeriodChange = (item: string) => {\n setPeriod(item);\n };\n\n const dateRange = useMemo((): {\n startDate: Date;\n endDate: Date;\n } => {\n const days = Number(period) || 7;\n const now = new Date();\n return {\n startDate: subDays(now, days),\n endDate: subDays(now, 1),\n };\n }, [period]);\n\n const [rebateSummary] = useReferralRebateSummary({\n startDate: format(dateRange.startDate, \"yyyy-MM-dd\"),\n endDate: format(dateRange.endDate, \"yyyy-MM-dd\"),\n size: Number(period),\n });\n\n const dataSource = useMemo(() => {\n const data =\n ((rebateSummary as RefferalAPI.ReferralRebateSummary[]) || [])?.map(\n (item) => ({\n date: item.date,\n volume:\n item.direct_rebate +\n item.indirect_rebate +\n item.direct_bonus_rebate,\n }),\n ) || [];\n data.reverse();\n\n return fillData(Number(period), data);\n }, [rebateSummary, period]);\n\n return {\n period,\n periodTypes,\n onPeriodChange,\n dataSource,\n };\n};\n","import { useCommissionChartScript } from \"./commissionChart.script\";\nimport { CommissionChart } from \"./commissionChart.ui\";\n\nexport const CommissionChartWidget = () => {\n const state = useCommissionChartScript();\n return <CommissionChart {...state} />;\n};\n","import { FC } from \"react\";\nimport { SVGProps } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Text, Button } from \"@orderly.network/ui\";\nimport { TradingVolumeProgress } from \"../../components/tradingVolumeProgress\";\nimport { MultiLevelReferralReturns } from \"./multiLevelReferral.script\";\n\nexport const MultiLevelReferral: FC<MultiLevelReferralReturns> = (props) => {\n const { isMultiLevelReferralUnlocked } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n r={\"2xl\"}\n width={\"100%\"}\n height={\"100%\"}\n gap={4}\n p={5}\n direction={\"column\"}\n intensity={900}\n className=\"oui-border oui-border-line-6\"\n >\n <Text size=\"lg\" className=\"oui-w-full oui-text-start\">\n {t(\"affiliate.referral\")}\n </Text>\n <Flex\n width=\"100%\"\n height=\"100%\"\n direction=\"column\"\n itemAlign=\"center\"\n justify=\"center\"\n gap={4}\n >\n <MultiLevelReferralIcon className=\"oui-text-primary-light\" />\n\n <Text size=\"base\" intensity={98}>\n {t(\"affiliate.newReferralProgram.title\")}\n </Text>\n\n {isMultiLevelReferralUnlocked ? (\n <>\n <Text size=\"sm\" intensity={54} className=\"oui-text-center\">\n {t(\"affiliate.newReferralProgram.description\")}\n </Text>\n <Button\n size=\"md\"\n className=\"oui-px-16\"\n onClick={props.createReferralCode}\n >\n {t(\"affiliate.referralCode.create\")}\n </Button>\n </>\n ) : (\n <TradingVolumeProgress\n buttonProps={{\n className: \"oui-px-16\",\n }}\n />\n )}\n </Flex>\n </Flex>\n );\n};\n\nconst MultiLevelReferralIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n width={64}\n height={64}\n viewBox=\"0 0 64 64\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect width={64} height={64} rx={32} fill=\"rgb(var(--oui-color-base-8))\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M28.822 23.24a.86.86 0 0 1 .607-.24h5.142c.228 0 .446.086.607.24a.8.8 0 0 1 .25.579v3.28a.8.8 0 0 1-.25.578.88.88 0 0 1-.607.24h-1.719v3.259h7.714c.228 0 .446.086.606.24a.8.8 0 0 1 .251.578v4.094h1.72c.227 0 .445.086.606.24a.8.8 0 0 1 .251.578v3.275a.8.8 0 0 1-.251.58.88.88 0 0 1-.606.239H38a.88.88 0 0 1-.606-.24.8.8 0 0 1-.251-.579v-3.274a.8.8 0 0 1 .25-.58.88.88 0 0 1 .607-.24h1.71v-3.274h-6.858v3.275h1.72c.227 0 .445.086.605.24a.8.8 0 0 1 .252.578v3.275a.8.8 0 0 1-.252.58.88.88 0 0 1-.606.239H29.43a.88.88 0 0 1-.606-.24.8.8 0 0 1-.252-.579v-3.274a.8.8 0 0 1 .252-.58.88.88 0 0 1 .606-.24h1.709v-3.274H24.28v3.275H26c.227 0 .445.086.606.24a.8.8 0 0 1 .251.578v3.275a.8.8 0 0 1-.25.58A.88.88 0 0 1 26 41h-5.143a.88.88 0 0 1-.606-.24.8.8 0 0 1-.251-.579v-3.274a.8.8 0 0 1 .251-.58.88.88 0 0 1 .606-.24h1.71v-4.093a.8.8 0 0 1 .25-.579.88.88 0 0 1 .606-.24h7.715v-3.258h-1.71a.88.88 0 0 1-.605-.24.8.8 0 0 1-.252-.579V23.82q0-.163.065-.313a.8.8 0 0 1 .186-.268\"\n />\n </svg>\n);\n","import { modal } from \"@orderly.network/ui\";\nimport { useReferralContext } from \"../../../../provider\";\nimport { ReferralCodeFormType } from \"../../../../types\";\nimport { ReferralCodeFormDialogId } from \"../referralCodeForm/modal\";\n\nexport const useMultiLevelReferralScript = () => {\n const {\n isMultiLevelReferralUnlocked,\n maxRebateRate,\n multiLevelRebateInfoMutate,\n } = useReferralContext();\n\n const createReferralCode = () => {\n modal.show(ReferralCodeFormDialogId, {\n type: ReferralCodeFormType.Create,\n maxRebateRate,\n directBonusRebateRate: 10, // Hardcoded value before API is ready\n onSuccess: () => {\n multiLevelRebateInfoMutate();\n },\n });\n };\n\n return {\n isMultiLevelReferralUnlocked,\n createReferralCode,\n };\n};\n\nexport type MultiLevelReferralReturns = ReturnType<\n typeof useMultiLevelReferralScript\n>;\n","import { useMultiLevelReferralScript } from \"./multiLevelReferral.script\";\nimport { MultiLevelReferral } from \"./multiLevelReferral.ui\";\n\nexport const MultiLevelReferralWidget = () => {\n const state = useMultiLevelReferralScript();\n return <MultiLevelReferral {...state} />;\n};\n","import { FC } from \"react\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Text, Button, Box, cn, toast } from \"@orderly.network/ui\";\nimport { GiftIcon } from \"../../../../icons/giftIcon\";\nimport { ReferralCodeFormField } from \"../../../../types\";\nimport { ReferralInfoReturns } from \"./referralInfo.script\";\n\nexport const ReferralInfo: FC<ReferralInfoReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n id=\"oui-affiliate-affiliate-referralLink\"\n r={\"2xl\"}\n width={\"100%\"}\n height={\"100%\"}\n gap={4}\n p={5}\n direction={\"column\"}\n intensity={900}\n className=\"oui-border oui-border-line-6\"\n >\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text size=\"lg\">{t(\"affiliate.referral\")}</Text>\n <Button\n size=\"xs\"\n color=\"secondary\"\n onClick={() => props.onEdit(ReferralCodeFormField.ReferralCode)}\n >\n {t(\"affiliate.configure\")}\n </Button>\n </Flex>\n\n <Container className=\"oui-flex-col oui-items-start oui-gap-4 oui-p-5\">\n <Flex\n r=\"full\"\n px={2}\n height={20}\n justify={\"center\"}\n itemAlign={\"center\"}\n className=\"oui-border oui-border-primary-light\"\n >\n <Text intensity={98} className=\"oui-text-[10px] oui-leading-[10px]\">\n {t(\"affiliate.multiLevel\")}\n </Text>\n </Flex>\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text size=\"lg\" color=\"primaryLight\">\n {props.referralCode}\n </Text>\n <CopyButton value={props.referralCode} />\n </Flex>\n </Container>\n\n <Container className=\"oui-p-5\">\n <Text size=\"lg\" color=\"primaryLight\">\n {props.referralLink}\n </Text>\n <CopyButton value={props.referralLink} />\n </Container>\n\n <Box\n width={\"100%\"}\n r=\"2xl\"\n className=\"oui-bg-base-contrast-4 oui-p-5 md:oui-py-7\"\n >\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text size=\"sm\">{t(\"affiliate.revenueSplitStrategy\")}</Text>\n <Button size=\"xs\" color=\"secondary\" onClick={() => props.onEdit()}>\n {t(\"common.edit\")}\n </Button>\n </Flex>\n\n <Flex justify={\"between\"} width={\"100%\"} mt={4}>\n <Text size=\"sm\" intensity={54}>\n {t(\"affiliate.youKeep\")}\n </Text>\n <Text size=\"sm\" intensity={54}>\n {t(\"affiliate.refereesGet\")}\n </Text>\n </Flex>\n\n <Flex justify={\"between\"} width={\"100%\"} mt={2}>\n <Text.formatted size=\"3xl\" intensity={80}>\n {props.referrerRebateRate}%\n </Text.formatted>\n <Text.formatted size=\"3xl\" intensity={36}>\n {props.refereeRebateRate}%\n </Text.formatted>\n </Flex>\n\n {props.directBonusRebateRate > 0 && (\n <Flex gap={2} mt={4} width={\"100%\"} className=\"oui-items-center\">\n <GiftIcon\n size={16}\n className=\"oui-shrink-0 oui-text-base-contrast oui-mt-[1px]\"\n />\n <Text\n intensity={54}\n as=\"span\"\n className=\"oui-flex-1 oui-min-w-0 oui-tracking-[0.03em]\"\n >\n <Trans\n i18nKey=\"affiliate.extraBonusOnDirectReferrals\"\n values={{ amount: props.directBonusRebateRate }}\n components={[<Text as=\"span\" color=\"primaryLight\" key=\"0\" />]}\n />\n </Text>\n </Flex>\n )}\n </Box>\n </Flex>\n );\n};\n\nconst Container: FC<{\n children: React.ReactNode;\n className?: string;\n}> = (props) => {\n return (\n <Flex\n width={\"100%\"}\n justify={\"between\"}\n px={5}\n r=\"2xl\"\n className={cn(\"oui-bg-base-contrast-4\", props.className)}\n >\n {props.children}\n </Flex>\n );\n};\n\nconst CopyButton: FC<{\n value?: string;\n}> = (props) => {\n const { t } = useTranslation();\n\n const onCopy = () => {\n if (!props.value) return;\n navigator.clipboard.writeText(props.value);\n toast.success(t(\"common.copy.copied\"));\n };\n\n return (\n <Button size=\"xs\" color=\"secondary\" onClick={onCopy}>\n {t(\"common.copy\")}\n </Button>\n );\n};\n","import { format, toDate } from \"date-fns\";\nimport { i18n } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\n\n// import { toZonedTime } from \"date-fns-tz\";\n// const { toZonedTime } = require(\"date-fns-tz\");\n\nexport function generateReferralLink(referralLinkUrl: string, code: string) {\n return `${referralLinkUrl || window?.location?.origin}?ref=${code}`;\n}\n\nexport async function copyText(content: string) {\n try {\n await navigator.clipboard.writeText(content);\n toast.success(i18n.t(\"common.copy.copied\"));\n } catch (error) {\n toast.success(i18n.t(\"common.copy.failed\"));\n }\n}\n\nexport function parseTime(time?: number | string): Date | null {\n if (!time) {\n return null;\n }\n const timestamp = typeof time === \"number\" ? time : Date.parse(time);\n\n if (!isNaN(timestamp)) {\n return new Date(timestamp);\n }\n\n return null;\n}\n\n//** will be return YYYY-MM-ddThh:mm:ssZ */\nexport function formatDateTimeToUTC(input?: number | string): string {\n if (input === undefined) {\n return \"\";\n }\n const date = toDate(input);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"yyyy-MM-dd HH:mm:ss 'UTC'\");\n}\n\n//** will return yyyy-MM-dd */\nexport function formatYMDTime(time?: number | string): string | undefined {\n if (time === undefined) {\n return undefined;\n }\n const date = toDate(time);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"yyyy-MM-dd\");\n}\n\n//** will return hh:mm */\nexport function formatHMTime(time?: number | string): string | undefined {\n if (time === undefined) {\n return undefined;\n }\n const date = toDate(time);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"hh:mm\");\n}\n\n//** will return MM-dd */\nexport function formatMdTime(time?: number | string): string | undefined {\n if (time === undefined) {\n return undefined;\n }\n const date = toDate(time);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"MM-dd\");\n}\n\n//** compare two date, yyyy-mm-dd */\nexport function compareDate(d1?: Date, d2?: Date) {\n const isEqual =\n d1 &&\n d2 &&\n d1.toISOString().substring(0, 10) === d2.toISOString().substring(0, 10);\n\n return isEqual;\n}\n\nexport function generateData(\n itemCount: number,\n data: any[] | null | undefined,\n timeKey: string,\n valueKey: string,\n): [string, number][] {\n const result: [string, number][] = [];\n\n for (let i = 0; i < itemCount; i++) {\n const currentDate = new Date();\n currentDate.setDate(currentDate.getDate() - i - 1);\n const currentDateStr = currentDate.toISOString().substring(0, 10);\n\n const matchedData = data?.find((item) => {\n const itemDate = parseTime(item[timeKey]);\n if (!itemDate) {\n return false;\n }\n return itemDate.toISOString().substring(0, 10) === currentDateStr;\n });\n\n if (matchedData) {\n result.push([currentDateStr, matchedData[valueKey]]);\n } else {\n result.push([currentDateStr, 0]);\n }\n }\n\n return result.reverse();\n}\n\nfunction toUTCDate(date: Date): Date {\n return new Date(date.toUTCString());\n}\n","import { useMemo } from \"react\";\nimport { modal } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useReferralContext } from \"../../../../provider\";\nimport { ReferralCodeFormField, ReferralCodeFormType } from \"../../../../types\";\nimport { generateReferralLink } from \"../../../../utils/utils\";\nimport { ReferralCodeFormDialogId } from \"../referralCodeForm/modal\";\n\nexport type ReferralInfoReturns = ReturnType<typeof useReferralInfoScript>;\n\nexport const useReferralInfoScript = () => {\n const {\n referralLinkUrl,\n multiLevelRebateInfo,\n multiLevelRebateInfoMutate,\n maxRebateRate,\n } = useReferralContext();\n\n const referralCode = multiLevelRebateInfo?.referral_code;\n\n const referralLink = useMemo(() => {\n if (!referralCode) return \"\";\n\n return generateReferralLink(referralLinkUrl, referralCode);\n }, [referralCode]);\n\n const referrerRebateRate = useMemo(() => {\n return new Decimal(multiLevelRebateInfo?.referrer_rebate_rate || 0)\n .mul(100)\n .toNumber();\n }, [multiLevelRebateInfo]);\n\n const refereeRebateRate = useMemo(() => {\n return new Decimal(multiLevelRebateInfo?.referee_rebate_rate || 0)\n .mul(100)\n .toNumber();\n }, [multiLevelRebateInfo]);\n\n const directBonusRebateRate = useMemo(() => {\n return new Decimal(multiLevelRebateInfo?.direct_bonus_rebate_rate ?? 0)\n .mul(100)\n .toNumber();\n }, [multiLevelRebateInfo]);\n\n const onEdit = (focusField?: ReferralCodeFormField) => {\n modal.show(ReferralCodeFormDialogId, {\n type: ReferralCodeFormType.Edit,\n focusField,\n referralCode: multiLevelRebateInfo?.referral_code,\n maxRebateRate,\n referrerRebateRate: multiLevelRebateInfo?.referrer_rebate_rate,\n directInvites: multiLevelRebateInfo?.direct_invites,\n directBonusRebateRate,\n onSuccess: () => {\n multiLevelRebateInfoMutate();\n },\n });\n };\n\n return {\n onEdit,\n referralCode,\n referralLink,\n multiLevelRebateInfo,\n referrerRebateRate,\n refereeRebateRate,\n directBonusRebateRate,\n };\n};\n","import { useReferralInfoScript } from \"./referralInfo.script\";\nimport { ReferralInfo } from \"./referralInfo.ui\";\n\nexport const ReferralInfoWidget = () => {\n const state = useReferralInfoScript();\n return <ReferralInfo {...state} />;\n};\n","import { useState } from \"react\";\n\nexport type ReferrerTableTab = \"commission\" | \"referees\" | \"codes\";\n\nexport const useReferrerTableScript = () => {\n const [activeTab, _setActiveTab] = useState<ReferrerTableTab>(\"commission\");\n const setActiveTab = (tab: ReferrerTableTab) => _setActiveTab(tab);\n return {\n activeTab,\n setActiveTab,\n };\n};\n\nexport type ReferrerTableScriptReturns = ReturnType<\n typeof useReferrerTableScript\n>;\n","import { useMemo } from \"react\";\nimport { usePrivateQuery } from \"@orderly.network/hooks\";\n\ntype Params = {\n /** default is 10 */\n size?: number;\n /** YYYY-MM-dd */\n startDate?: string;\n /** YYYY-MM-dd */\n endDate?: string;\n initialSize?: number;\n page?: number;\n fetchAll?: boolean;\n /** disable network request when false */\n enabled?: boolean;\n};\n\ntype ReferralHistoryItem = {\n account_id: string;\n user_address: string;\n referral_code: string;\n volume: number;\n referral_rebate: number;\n direct_bonus_rebate: number;\n date: string;\n};\n\ntype ReferralHistoryPageResponse = {\n rows: ReferralHistoryItem[];\n meta?: {\n total: number;\n records_per_page: number;\n current_page: number;\n };\n};\n\nexport const useReferralHistory = (params: Params) => {\n const { size, startDate, endDate, page, fetchAll, enabled = true } = params;\n\n const query = useMemo(() => {\n if (!enabled) return null;\n const search = new URLSearchParams({\n ...(startDate ? { start_date: startDate } : {}),\n ...(endDate ? { end_date: endDate } : {}),\n ...(!fetchAll && page !== undefined ? { page: String(page) } : {}),\n ...(!fetchAll && size !== undefined ? { size: String(size) } : {}),\n });\n\n const qs = search.toString();\n return qs\n ? `/v1/referral/referral_history?${qs}`\n : \"/v1/referral/referral_history\";\n }, [enabled, endDate, fetchAll, page, size, startDate]);\n\n const response = usePrivateQuery<\n ReferralHistoryPageResponse | { data?: ReferralHistoryPageResponse }\n >(query, {\n formatter: (data) => data,\n revalidateOnFocus: false,\n });\n\n const loadMore = () => {};\n\n const meta = useMemo(():\n | {\n total: number;\n records_per_page: number;\n current_page: number;\n }\n | undefined => {\n const payload =\n (response.data as { data?: ReferralHistoryPageResponse })?.data ??\n (response.data as ReferralHistoryPageResponse | undefined);\n if (payload?.meta) return payload.meta;\n if (!payload?.rows) return undefined;\n return {\n total: payload.rows.length,\n records_per_page: payload.rows.length,\n current_page: 1,\n };\n }, [response.data]);\n\n const total = useMemo(() => {\n if (typeof meta?.total === \"number\") return meta.total;\n return 0;\n }, [meta]);\n\n const flattenRows = useMemo((): ReferralHistoryItem[] | null => {\n if (!response.data) return null;\n const payload =\n (response.data as { data?: ReferralHistoryPageResponse })?.data ??\n (response.data as ReferralHistoryPageResponse | undefined);\n return payload?.rows ?? null;\n }, [response.data]);\n\n return [\n flattenRows,\n {\n total,\n isLoading: response.isLoading,\n refresh: response.mutate,\n loadMore,\n meta,\n },\n ] as const;\n};\n","import { useMemo, useState } from \"react\";\nimport { format, subDays } from \"date-fns\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { TableSort, usePagination, useScreen } from \"@orderly.network/ui\";\nimport { useReferralHistory } from \"../../../../../hooks/useReferralHistory\";\nimport { DateRange } from \"../../../../../utils/types\";\n\nexport type CommissionDataType = {\n date: string;\n code: string;\n volume: number;\n commission: number;\n directBonusRebate: number;\n address: string;\n};\n\nexport type UseCommissionTableScriptProps = {\n enabled?: boolean;\n};\n\nexport const useCommissionTableScript = (\n props: UseCommissionTableScriptProps = {},\n) => {\n const { enabled = true } = props;\n const { isMobile } = useScreen();\n const { state } = useAccount();\n\n const [dateRange, setDateRange] = useState<DateRange>({\n from: subDays(new Date(), 30),\n to: new Date(),\n });\n\n const { page, pageSize, parsePagination } = usePagination();\n\n const [sort, setSort] = useState<{\n key: keyof CommissionDataType;\n order: \"asc\" | \"desc\";\n } | null>(null);\n\n const [data, { meta, isLoading: isDataLoading }] = useReferralHistory({\n enabled: enabled && state.status >= AccountStatusEnum.EnableTrading,\n startDate: dateRange.from\n ? format(dateRange.from, \"yyyy-MM-dd\")\n : undefined,\n endDate: dateRange.to ? format(dateRange.to, \"yyyy-MM-dd\") : undefined,\n page: isMobile ? undefined : page,\n size: isMobile ? undefined : pageSize,\n fetchAll: isMobile,\n });\n\n const pagination = useMemo(() => {\n return parsePagination(meta);\n }, [meta, parsePagination]);\n\n const commissionData = useMemo(() => {\n if (!data) return [];\n\n const rows: CommissionDataType[] = data.map((row) => ({\n date: row.date,\n code: row.referral_code,\n volume: row.volume,\n commission: row.referral_rebate,\n directBonusRebate: row.direct_bonus_rebate,\n address: row.user_address,\n }));\n\n if (!sort) return rows;\n\n rows.sort((a, b) => {\n const valA = a[sort.key];\n const valB = b[sort.key];\n if (valA < valB) return sort.order === \"asc\" ? -1 : 1;\n if (valA > valB) return sort.order === \"asc\" ? 1 : -1;\n return 0;\n });\n\n return rows;\n }, [data, sort]);\n\n const onSort = (sort?: TableSort) => {\n if (!sort) {\n setSort(null);\n return;\n }\n const sortKey = sort.sortKey as keyof CommissionDataType;\n if (sortKey && (sortKey === \"volume\" || sortKey === \"commission\")) {\n setSort({\n key: sortKey,\n order: sort.sort === \"asc\" ? \"asc\" : \"desc\",\n });\n }\n };\n\n return {\n commissionData,\n dateRange,\n setDateRange,\n pagination,\n onSort,\n isLoading:\n state.status < AccountStatusEnum.EnableTrading ||\n !enabled ||\n isDataLoading,\n };\n};\n\nexport type CommissionTableScriptReturns = ReturnType<\n typeof useCommissionTableScript\n>;\n","import { FC, ReactNode, useCallback, MouseEvent } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Tooltip,\n formatAddress,\n Text,\n Flex,\n Grid,\n cn,\n useScreen,\n modal,\n} from \"@orderly.network/ui\";\nimport { commifyOptional } from \"@orderly.network/utils\";\n\nconst dashedUnderline =\n \"oui-cursor-pointer oui-underline oui-decoration-dashed oui-underline-offset-4 oui-decoration-base-contrast-36 oui-tracking-[0.03em]\";\n\nconst useMobileTooltipModal = (content: ReactNode, title?: ReactNode) => {\n const { isMobile } = useScreen();\n\n return useCallback(\n (e: MouseEvent) => {\n if (!isMobile) return;\n e.preventDefault();\n e.stopPropagation();\n\n modal.dialog({\n title,\n closable: true,\n size: \"sm\",\n content: (\n <div className=\"oui-text-sm oui-leading-5 oui-text-base-contrast\">\n {content}\n </div>\n ),\n });\n },\n [isMobile, content, title],\n );\n};\n\nexport const AddressCell: FC<{\n address: string;\n title?: ReactNode;\n}> = ({ address, title }) => {\n const onClick = useMobileTooltipModal(address, title);\n const { isMobile } = useScreen();\n return (\n <Tooltip content={address} open={isMobile ? false : undefined}>\n <Text className={dashedUnderline} onClick={onClick}>\n {formatAddress(address)}\n </Text>\n </Tooltip>\n );\n};\n\nexport const TooltipCell: FC<{\n text: string;\n tooltip: string | ReactNode;\n title?: ReactNode;\n}> = ({ text, tooltip, title }) => {\n const onClick = useMobileTooltipModal(tooltip, title);\n const { isMobile } = useScreen();\n return (\n <Tooltip content={tooltip} open={isMobile ? false : undefined}>\n <Text className={dashedUnderline} onClick={onClick}>\n {text}\n </Text>\n </Tooltip>\n );\n};\n\nexport const BreakdownCell: FC<{\n total: number;\n direct: number;\n indirect: number;\n directBonus?: number;\n prefix?: string;\n fix?: number;\n title?: ReactNode;\n}> = ({ total, direct, indirect, directBonus, prefix, fix = 0, title }) => {\n const { t } = useTranslation();\n const format = (val: number) =>\n commifyOptional(val, {\n fix,\n fallback: \"0\",\n padEnd: true,\n prefix,\n });\n\n const directLine = directBonus ? (\n <>\n • {t(\"affiliate.direct\")}: {format(direct + directBonus)}{\" \"}\n <span className=\"oui-text-base-contrast-54\">\n ({t(\"affiliate.directInclBonus\", { amount: format(directBonus) })})\n </span>\n </>\n ) : (\n <>\n • {t(\"affiliate.direct\")}: {format(direct)}\n </>\n );\n\n const tooltipContent = (\n <div className=\"oui-flex oui-flex-col oui-gap-1\">\n <div>{directLine}</div>\n <div>\n • {t(\"affiliate.indirect\")}: {format(indirect)}\n </div>\n </div>\n );\n const onClick = useMobileTooltipModal(tooltipContent, title);\n const { isMobile } = useScreen();\n\n return (\n <Tooltip content={tooltipContent} open={isMobile ? false : undefined}>\n <Text className={dashedUnderline} onClick={onClick}>\n {format(total)}\n </Text>\n </Tooltip>\n );\n};\n\nexport const MobileCell: FC<{\n label: string;\n children: ReactNode;\n align?: \"start\" | \"end\";\n className?: string;\n}> = ({ label, children, align = \"start\", className }) => {\n return (\n <Flex\n direction=\"column\"\n itemAlign={align}\n className={cn(\n \"oui-gap-1.5 oui-font-medium oui-tracking-[0.01em]\",\n className,\n )}\n >\n <Text intensity={36} size=\"2xs\" className=\"oui-leading-[15px]\">\n {label}\n </Text>\n <div className=\"oui-text-sm oui-leading-[20px]\">{children}</div>\n </Flex>\n );\n};\n\nexport const MobileCard: FC<{\n children: ReactNode;\n className?: string;\n}> = ({ children, className }) => {\n return (\n <Grid\n cols={3}\n py={3}\n r=\"xl\"\n width=\"100%\"\n className={cn(\"oui-bg-base-9 oui-gap-x-[6px] oui-gap-y-3\", className)}\n >\n {children}\n </Grid>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Flex,\n Column,\n Text,\n DatePicker,\n ListView,\n Divider,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { formatYMDTime } from \"../../../../../utils/utils\";\nimport {\n AddressCell,\n MobileCell,\n MobileCard,\n TooltipCell,\n} from \"../base/cells\";\nimport {\n CommissionDataType,\n CommissionTableScriptReturns,\n} from \"./commissionTable.script\";\n\ntype CommissionTableUIProps = CommissionTableScriptReturns;\n\nconst formatCommissionAmt = (v: number) =>\n commifyOptional(v, {\n fix: 6,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n });\n\nconst CommissionCell: FC<{\n item: CommissionDataType;\n}> = ({ item }) => {\n const { t } = useTranslation();\n const totalCommission = item.commission + item.directBonusRebate;\n const tooltip = (\n <>\n <div>\n • {t(\"affiliate.base\")}: {formatCommissionAmt(item.commission)}\n </div>\n <div>\n • {t(\"affiliate.directBonus\")}:{\" \"}\n {formatCommissionAmt(item.directBonusRebate)}\n </div>\n </>\n );\n return (\n <TooltipCell\n text={formatCommissionAmt(totalCommission)}\n tooltip={tooltip}\n title={t(\"affiliate.commission\")}\n />\n );\n};\n\nconst MobileCommissionItem: FC<{\n item: CommissionDataType;\n}> = ({ item }) => {\n const { t } = useTranslation();\n return (\n <MobileCard>\n <MobileCell label={t(\"common.date\")}>\n <Text>{formatYMDTime(item.date)}</Text>\n </MobileCell>\n <MobileCell label={t(\"common.code\")}>\n <Text>{item.code}</Text>\n </MobileCell>\n <MobileCell label={t(\"common.volume\")} align=\"end\">\n <Text>\n {commifyOptional(item.volume, {\n fix: 2,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n })}\n </Text>\n </MobileCell>\n <MobileCell label={t(\"affiliate.commission\")}>\n <CommissionCell item={item} />\n </MobileCell>\n <MobileCell\n label={t(\"common.address\")}\n align=\"end\"\n className=\"oui-col-start-3\"\n >\n <AddressCell address={item.address} title={t(\"common.address\")} />\n </MobileCell>\n </MobileCard>\n );\n};\n\nexport const CommissionTableUI: FC<CommissionTableUIProps> = (props) => {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const showPagination = (props.pagination?.count ?? 0) >= 10;\n\n const columns = useMemo<Column<CommissionDataType>[]>(() => {\n return [\n {\n title: t(\"common.date\"),\n dataIndex: \"date\",\n render: (value: string) => formatYMDTime(value),\n },\n {\n title: t(\"common.code\"),\n dataIndex: \"code\",\n },\n {\n title: t(\"common.volume\"),\n dataIndex: \"volume\",\n render: (value: number) => (\n <Text>\n {commifyOptional(value, {\n fix: 2,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n })}\n </Text>\n ),\n onSort: true,\n },\n {\n title: t(\"affiliate.commission\"),\n dataIndex: \"commission\",\n render: (_value: number, record: CommissionDataType) => (\n <CommissionCell item={record} />\n ),\n onSort: true,\n },\n {\n title: t(\"common.address\"),\n dataIndex: \"address\",\n render: (value: string) => (\n <AddressCell address={value} title={t(\"common.address\")} />\n ),\n },\n ];\n }, [t]);\n\n return (\n <div className=\"oui-flex oui-w-full oui-flex-col\">\n <Flex width=\"100%\" height={49} className=\"oui-border-b oui-border-line-6\">\n <div className=\"oui-px-3\">\n <DatePicker.range\n size=\"xs\"\n value={props.dateRange}\n onChange={props.setDateRange}\n max={90}\n disabled={{ after: new Date() }}\n />\n </div>\n </Flex>\n\n {isMobile ? (\n <div className=\"oui-flex oui-flex-col oui-px-4\">\n <ListView\n dataSource={props.commissionData}\n contentClassName=\"!oui-space-y-0 oui-pb-3\"\n renderItem={(item, index) => (\n <div key={index}>\n <MobileCommissionItem item={item} />\n <Divider intensity={8} />\n </div>\n )}\n />\n </div>\n ) : (\n <div className={`oui-px-3 ${showPagination ? \"\" : \"oui-pb-3\"}`}>\n <AuthGuardDataTable\n bordered\n columns={columns}\n dataSource={props.commissionData}\n loading={props.isLoading}\n pagination={showPagination ? props.pagination : undefined}\n onSort={props.onSort}\n onRow={() => ({ className: \"oui-h-12\" })}\n className=\"[&_.oui-h-10.oui-w-full]:!oui-mx-0 [&_.oui-table-pagination]:!oui-justify-end [&_th]:!oui-tracking-[0.03em] [&_th]:!oui-px-3 [&_td]:!oui-px-3\"\n />\n </div>\n )}\n </div>\n );\n};\n","import { FC } from \"react\";\nimport {\n useCommissionTableScript,\n UseCommissionTableScriptProps,\n} from \"./commissionTable.script\";\nimport { CommissionTableUI } from \"./commissionTable.ui\";\n\nexport const CommissionTableWidget: FC<UseCommissionTableScriptProps> = (\n props,\n) => {\n const state = useCommissionTableScript(props);\n return <CommissionTableUI {...state} />;\n};\n","import { useMemo } from \"react\";\nimport { useAccount, usePrivateQuery } from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\n\nexport type RefereeDataType = {\n account_id: string;\n address: string;\n bind_code: string;\n bind_type: string;\n code_binding_time: number;\n is_default_rate: boolean;\n referral_rebate_rate: number;\n referee_rebate_rate: number;\n direct_rebate: number;\n direct_bonus_rebate: number;\n indirect_rebate: number;\n network_size: number;\n volume: number;\n commission: number;\n direct_invites: number;\n indirect_invites: number;\n direct_volume: number;\n indirect_volume: number;\n};\n\nexport type RefereePaginationMeta = {\n total: number;\n current_page: number;\n records_per_page: number;\n};\n\ntype RefereesResponse = {\n rows?: RefereeDataType[];\n data?: { rows?: RefereeDataType[]; meta?: RefereePaginationMeta };\n success?: boolean;\n timestamp?: number;\n meta?: RefereePaginationMeta;\n};\n\nexport type UseMultiLevelRefereesParams = {\n /** disable network request when false */\n enabled?: boolean;\n /** fetch without pagination params (used by mobile) */\n fetchAll?: boolean;\n page?: number;\n pageSize?: number;\n};\n\nexport const useMultiLevelReferees = (\n params: UseMultiLevelRefereesParams = {},\n) => {\n const { enabled = true, fetchAll = false, page, pageSize } = params;\n const { state } = useAccount();\n\n const canQuery = enabled && state.status >= AccountStatusEnum.EnableTrading;\n\n const queryKey = useMemo(() => {\n if (!canQuery) return null;\n if (fetchAll) return \"/v1/referral/multi_level/referee_list\";\n if (page !== undefined && pageSize !== undefined) {\n return `/v1/referral/multi_level/referee_list?page=${page}&size=${pageSize}`;\n }\n return \"/v1/referral/multi_level/referee_list\";\n }, [canQuery, fetchAll, page, pageSize]);\n\n const response = usePrivateQuery<RefereesResponse>(queryKey, {\n formatter: (payload) => {\n const rows = payload.rows ?? payload.data?.rows ?? [];\n const meta = payload.meta ?? payload.data?.meta;\n return {\n ...payload,\n meta,\n rows: rows.map((row: RefereeDataType) => ({\n ...row,\n network_size: row.direct_invites + row.indirect_invites,\n volume: row.direct_volume + row.indirect_volume,\n commission:\n row.direct_rebate + row.indirect_rebate + row.direct_bonus_rebate,\n })),\n };\n },\n revalidateOnFocus: false,\n });\n\n return {\n ...response,\n isLoading:\n state.status < AccountStatusEnum.EnableTrading ||\n !enabled ||\n response.isLoading,\n rows: response.data?.rows ?? [],\n meta: response.data?.meta,\n };\n};\n\nexport type UseMultiLevelRefereesReturns = ReturnType<\n typeof useMultiLevelReferees\n>;\n","import { useCallback, useMemo, useState } from \"react\";\nimport {\n TableSort,\n modal,\n usePagination,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport {\n RefereeDataType,\n useMultiLevelReferees,\n} from \"../../../../../hooks/useMultiLevelReferees\";\nimport { useReferralContext } from \"../../../../../provider\";\nimport { ReferralCodeFormType } from \"../../../../../types\";\nimport { ReferralCodeFormDialogId } from \"../../referralCodeForm/modal\";\n\ntype RefereesSortableKey =\n | \"referee_rebate_rate\"\n | \"network_size\"\n | \"volume\"\n | \"commission\";\n\nexport type UseRefereesTableScriptProps = {\n enabled?: boolean;\n};\n\nexport const useRefereesTableScript = (\n props: UseRefereesTableScriptProps = {},\n) => {\n const { enabled = true } = props;\n const { isMobile } = useScreen();\n const refereesPaginationUtils = usePagination();\n\n const [refereesSort, setRefereesSort] = useState<{\n key: RefereesSortableKey;\n order: \"asc\" | \"desc\";\n } | null>(null);\n\n const {\n isLoading: isRefereesLoading,\n mutate: refereesMutate,\n rows: refereesRows,\n meta: refereesMeta,\n } = useMultiLevelReferees({\n enabled,\n fetchAll: isMobile,\n page: refereesPaginationUtils.page,\n pageSize: refereesPaginationUtils.pageSize,\n });\n\n const refereesPagination = useMemo(() => {\n return refereesPaginationUtils.parsePagination(refereesMeta);\n }, [refereesMeta, refereesPaginationUtils]);\n\n const { multiLevelRebateInfo, maxRebateRate, multiLevelRebateInfoMutate } =\n useReferralContext();\n\n const onEditReferee = useCallback(\n (type: ReferralCodeFormType, item: RefereeDataType) => {\n const referrerRebateRate =\n type === ReferralCodeFormType.Reset\n ? multiLevelRebateInfo?.referrer_rebate_rate\n : item.referral_rebate_rate;\n\n modal.show(ReferralCodeFormDialogId, {\n type,\n referralCode: multiLevelRebateInfo?.referral_code,\n maxRebateRate,\n referrerRebateRate,\n onSuccess: () => {\n multiLevelRebateInfoMutate();\n refereesMutate();\n },\n accountId: item.account_id,\n multiLevelRebateInfo,\n directInvites: multiLevelRebateInfo?.direct_invites,\n directBonusRebateRate: new Decimal(\n multiLevelRebateInfo?.direct_bonus_rebate_rate ?? 0,\n )\n .mul(100)\n .toNumber(),\n });\n },\n [\n maxRebateRate,\n multiLevelRebateInfo?.referral_code,\n multiLevelRebateInfo?.referrer_rebate_rate,\n multiLevelRebateInfoMutate,\n refereesMutate,\n ],\n );\n\n const refereesData = useMemo(() => {\n const rows = refereesRows ?? [];\n if (!refereesSort) return rows;\n\n const sortableRows = rows.map((row, index) => ({\n row,\n index,\n }));\n\n sortableRows.sort((a, b) => {\n const valA = Number(a.row[refereesSort.key] ?? 0);\n const valB = Number(b.row[refereesSort.key] ?? 0);\n if (valA < valB) return refereesSort.order === \"asc\" ? -1 : 1;\n if (valA > valB) return refereesSort.order === \"asc\" ? 1 : -1;\n return a.index - b.index;\n });\n\n return sortableRows.map((item) => item.row);\n }, [refereesRows, refereesSort]);\n\n const onRefereesSort = (sort?: TableSort) => {\n if (!sort) {\n setRefereesSort(null);\n return;\n }\n const sortKey = sort.sortKey as RefereesSortableKey;\n if (\n sortKey &&\n (sortKey === \"referee_rebate_rate\" ||\n sortKey === \"network_size\" ||\n sortKey === \"volume\" ||\n sortKey === \"commission\")\n ) {\n setRefereesSort({\n key: sortKey,\n order: sort.sort === \"asc\" ? \"asc\" : \"desc\",\n });\n }\n };\n\n return {\n refereesData,\n refereesPagination,\n isRefereesLoading,\n onEditReferee,\n onRefereesSort,\n };\n};\n\nexport type RefereesTableScriptReturns = ReturnType<\n typeof useRefereesTableScript\n>;\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Column,\n Text,\n Flex,\n ListView,\n Divider,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\nimport { RefereeDataType } from \"../../../../../hooks/useMultiLevelReferees\";\nimport { ReferralCodeFormType } from \"../../../../../types\";\nimport { formatYMDTime } from \"../../../../../utils/utils\";\nimport {\n AddressCell,\n BreakdownCell,\n TooltipCell,\n MobileCell,\n MobileCard,\n} from \"../base/cells\";\nimport { RefereesTableScriptReturns } from \"./refereesTable.script\";\n\ntype RefereesTableUIProps = RefereesTableScriptReturns;\n\nconst getRebateRateText = (rate: number) => {\n return (rate * 100).toFixed(0) + \"%\";\n};\n\nconst getRefereeType = (bindType: string) => {\n const { t } = useTranslation();\n if (bindType === \"legacy\") {\n return {\n text: t(\"affiliate.singleLevelLegacy\"),\n tooltip: t(\"affiliate.singleLevelLegacy.tooltip\"),\n };\n }\n\n return {\n text: t(\"affiliate.multiLevel\"),\n tooltip: t(\"affiliate.multiLevel.tooltip\"),\n };\n};\n\nconst MobileRefereeItem: FC<{\n item: RefereeDataType;\n onEditReferee: RefereesTableScriptReturns[\"onEditReferee\"];\n}> = ({ item, onEditReferee }) => {\n const { t } = useTranslation();\n const typeInfo = getRefereeType(item.bind_type);\n return (\n <MobileCard>\n <MobileCell label={t(\"common.address\")}>\n <AddressCell address={item.address} title={t(\"common.address\")} />\n </MobileCell>\n <MobileCell label={t(\"common.type\")}>\n <TooltipCell\n text={typeInfo.text}\n tooltip={typeInfo.tooltip}\n title={t(\"common.type\")}\n />\n </MobileCell>\n <MobileCell label={t(\"affiliate.boundAt\")} align=\"end\">\n <Text size=\"sm\">{formatYMDTime(item.code_binding_time)}</Text>\n </MobileCell>\n <MobileCell label={t(\"affiliate.referralCodes\")}>\n <Text size=\"sm\">{item.bind_code}</Text>\n </MobileCell>\n\n <MobileCell label={t(\"affiliate.referralCodes.column.you&Referee\")}>\n <Text size=\"sm\">\n {getRebateRateText(item.referral_rebate_rate) + \"/\"}\n <span className=\"oui-text-base-contrast-54\">\n {getRebateRateText(item.referee_rebate_rate)}{\" \"}\n </span>\n {!item.is_default_rate && (\n <span className=\"oui-text-primary-light\">\n {`(${t(\"affiliate.customized\")})`}\n </span>\n )}\n </Text>\n </MobileCell>\n <MobileCell label={t(\"affiliate.networkSize\")} align=\"end\">\n <BreakdownCell\n total={item.network_size}\n direct={item.direct_invites}\n indirect={item.indirect_invites}\n title={t(\"affiliate.networkSize\")}\n />\n </MobileCell>\n <MobileCell label={t(\"common.volume\")}>\n <BreakdownCell\n total={item.volume}\n direct={item.direct_volume}\n indirect={item.indirect_volume}\n prefix=\"$\"\n fix={2}\n title={t(\"common.volume\")}\n />\n </MobileCell>\n\n <MobileCell label={t(\"affiliate.commission\")}>\n <BreakdownCell\n total={item.commission}\n direct={item.direct_rebate}\n indirect={item.indirect_rebate}\n directBonus={item.direct_bonus_rebate}\n prefix=\"$\"\n fix={6}\n title={t(\"affiliate.commission\")}\n />\n </MobileCell>\n <MobileCell\n label={t(\"common.action\")}\n align=\"end\"\n className=\"oui-col-start-3\"\n >\n {item.bind_type !== \"legacy\" && (\n <Flex gap={2}>\n <Text\n className=\"oui-cursor-pointer oui-text-primary-light\"\n onClick={() => onEditReferee(ReferralCodeFormType.Edit, item)}\n >\n {t(\"common.edit\")}\n </Text>\n {!item.is_default_rate && (\n <Text\n className=\"oui-cursor-pointer oui-text-primary-light\"\n onClick={() => onEditReferee(ReferralCodeFormType.Reset, item)}\n >\n {t(\"common.reset\")}\n </Text>\n )}\n </Flex>\n )}\n </MobileCell>\n </MobileCard>\n );\n};\n\nexport const RefereesTableUI: FC<RefereesTableUIProps> = (props) => {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const showPagination = (props.refereesPagination?.count ?? 0) >= 10;\n\n const refereeColumns = useMemo<Column<RefereeDataType>[]>(() => {\n return [\n {\n title: t(\"common.address\"),\n dataIndex: \"address\",\n render: (value: string) => (\n <AddressCell address={value} title={t(\"common.address\")} />\n ),\n },\n {\n title: t(\"common.type\"),\n dataIndex: \"bind_type\",\n render: (_: unknown, record: RefereeDataType) => {\n const typeInfo = getRefereeType(record.bind_type);\n return (\n <TooltipCell\n text={typeInfo.text}\n tooltip={typeInfo.tooltip}\n title={t(\"common.type\")}\n />\n );\n },\n },\n {\n title: t(\"affiliate.boundAt\"),\n dataIndex: \"code_binding_time\",\n render: (value: number) => <Text>{formatYMDTime(value)}</Text>,\n },\n {\n title: t(\"affiliate.referralCodes\"),\n dataIndex: \"bind_code\",\n render: (value: string) => <Text>{value}</Text>,\n },\n {\n title: t(\"affiliate.referralCodes.column.you&Referee\"),\n dataIndex: \"referee_rebate_rate\",\n render: (_: unknown, record: RefereeDataType) => (\n <Text>\n {getRebateRateText(record.referral_rebate_rate) + \"/\"}\n <span className=\"oui-text-base-contrast-54\">\n {getRebateRateText(record.referee_rebate_rate)}{\" \"}\n </span>\n {!record.is_default_rate && (\n <span className=\"oui-text-primary-light\">\n {`(${t(\"affiliate.customized\")})`}\n </span>\n )}\n </Text>\n ),\n onSort: true,\n },\n {\n title: t(\"affiliate.networkSize\"),\n dataIndex: \"network_size\",\n render: (_: number, record: RefereeDataType) => (\n <BreakdownCell\n total={record.network_size}\n direct={record.direct_invites}\n indirect={record.indirect_invites}\n title={t(\"affiliate.networkSize\")}\n />\n ),\n onSort: true,\n },\n {\n title: t(\"common.volume\"),\n dataIndex: \"volume\",\n render: (_: number, record: RefereeDataType) => (\n <BreakdownCell\n total={record.volume}\n direct={record.direct_volume}\n indirect={record.indirect_volume}\n prefix=\"$\"\n fix={2}\n title={t(\"common.volume\")}\n />\n ),\n onSort: true,\n },\n {\n title: t(\"affiliate.commission\"),\n dataIndex: \"commission\",\n render: (_: number, record: RefereeDataType) => (\n <BreakdownCell\n total={record.commission}\n direct={record.direct_rebate}\n indirect={record.indirect_rebate}\n directBonus={record.direct_bonus_rebate}\n prefix=\"$\"\n fix={6}\n title={t(\"affiliate.commission\")}\n />\n ),\n onSort: true,\n },\n {\n title: t(\"common.action\"),\n dataIndex: \"action\",\n render: (_: unknown, record: RefereeDataType) =>\n record.bind_type !== \"legacy\" ? (\n <>\n <Text\n className=\"oui-cursor-pointer oui-text-primary-light\"\n onClick={() =>\n props.onEditReferee(ReferralCodeFormType.Edit, record)\n }\n >\n {t(\"common.edit\")}\n </Text>\n {!record.is_default_rate && (\n <Text\n className=\"oui-ml-2 oui-cursor-pointer oui-text-primary-light\"\n onClick={() =>\n props.onEditReferee(ReferralCodeFormType.Reset, record)\n }\n >\n {t(\"common.reset\")}\n </Text>\n )}\n </>\n ) : null,\n },\n ];\n }, [t, props.onEditReferee]);\n\n return (\n <>\n {isMobile ? (\n <div className=\"oui-flex oui-flex-col oui-px-4\">\n <ListView\n dataSource={props.refereesData}\n contentClassName=\"!oui-space-y-0 oui-pb-3\"\n renderItem={(item, index) => (\n <div key={index}>\n <MobileRefereeItem\n item={item}\n onEditReferee={props.onEditReferee}\n />\n <Divider intensity={8} />\n </div>\n )}\n />\n </div>\n ) : (\n <div className={`oui-px-3 ${showPagination ? \"\" : \"oui-pb-3\"}`}>\n <AuthGuardDataTable\n bordered\n columns={refereeColumns}\n dataSource={props.refereesData}\n loading={props.isRefereesLoading}\n pagination={showPagination ? props.refereesPagination : undefined}\n onSort={props.onRefereesSort}\n onRow={() => ({ className: \"oui-h-12\" })}\n className=\"[&_.oui-h-10.oui-w-full]:!oui-mx-0 [&_.oui-table-pagination]:!oui-justify-end [&_th]:!oui-tracking-[0.03em] [&_th]:!oui-px-3 [&_td]:!oui-px-3\"\n />\n </div>\n )}\n </>\n );\n};\n","import { FC } from \"react\";\nimport {\n useRefereesTableScript,\n UseRefereesTableScriptProps,\n} from \"./refereesTable.script\";\nimport { RefereesTableUI } from \"./refereesTable.ui\";\n\nexport const RefereesTableWidget: FC<UseRefereesTableScriptProps> = (props) => {\n const state = useRefereesTableScript(props);\n return <RefereesTableUI {...state} />;\n};\n","import { useMemo } from \"react\";\nimport { useRefereeInfo } from \"@orderly.network/hooks\";\nimport { useReferralContext } from \"../provider\";\nimport { copyText } from \"../utils/utils\";\nimport { useMultiLevelRebateInfo } from \"./useReferralApi\";\n\nexport type ReferralCodesRow = {\n code: string;\n direct_invites: number;\n indirect_invites: number;\n direct_volume: number;\n indirect_volume: number;\n direct_rebate: number;\n indirect_rebate: number;\n direct_bonus_rebate?: number;\n max_rebate_rate: number;\n referee_rebate_rate: number;\n referrer_rebate_rate: number;\n total_invites: number;\n total_volume: number;\n total_rebate: number;\n referral_type: \"multi\" | \"single\";\n};\n\nexport type UseMultiLevelReferralCodesReturns = {\n codes?: ReferralCodesRow[];\n copyCode: (code: string) => void;\n};\n\nexport const useMultiLevelReferralCodes =\n (): UseMultiLevelReferralCodesReturns => {\n const { referralInfo } = useReferralContext();\n const { data: multiLevelRebateInfo } = useMultiLevelRebateInfo();\n console.log(\"multiLevelRebateInfo\", multiLevelRebateInfo);\n const [refereesData] = useRefereeInfo({});\n\n const copyCode = (code: string) => {\n copyText(code);\n };\n\n const singleLevelTotals = useMemo(() => {\n const totalsMap = new Map<\n string,\n { volume: number; commission: number }\n >();\n\n if (refereesData) {\n refereesData.forEach((referee: any) => {\n const code = referee?.referral_code;\n if (!code) return;\n const existing = totalsMap.get(code) || { volume: 0, commission: 0 };\n totalsMap.set(code, {\n volume: existing.volume + (referee?.volume || 0),\n commission: existing.commission + (referee?.referral_rebate || 0),\n });\n });\n }\n\n return totalsMap;\n }, [refereesData]);\n\n const codes = useMemo((): ReferralCodesRow[] | undefined => {\n const allCodes: ReferralCodesRow[] = [];\n const multiLevelReferralCode = multiLevelRebateInfo?.referral_code;\n\n // Add multi-level code if present\n if (multiLevelRebateInfo?.referral_code) {\n const maxRebateRate = multiLevelRebateInfo.max_rebate_rate ?? 0;\n const defaultRefereeRebateRate =\n multiLevelRebateInfo.default_referee_rebate_rate ?? 0;\n const referrerRebateRate = Math.max(\n 0,\n maxRebateRate - defaultRefereeRebateRate,\n );\n\n const directInvites = multiLevelRebateInfo?.direct_invites ?? 0;\n const indirectInvites = multiLevelRebateInfo?.indirect_invites ?? 0;\n const directVolume = multiLevelRebateInfo?.direct_volume ?? 0;\n const indirectVolume = multiLevelRebateInfo?.indirect_volume ?? 0;\n const directRebate = multiLevelRebateInfo?.direct_rebate ?? 0;\n const indirectRebate = multiLevelRebateInfo?.indirect_rebate ?? 0;\n const directBonusRebate =\n multiLevelRebateInfo?.direct_bonus_rebate ?? 0;\n\n const multiLevelCode: ReferralCodesRow = {\n code: multiLevelRebateInfo.referral_code ?? \"\",\n direct_invites: directInvites,\n indirect_invites: indirectInvites,\n direct_volume: directVolume,\n indirect_volume: indirectVolume,\n direct_rebate: directRebate,\n indirect_rebate: indirectRebate,\n direct_bonus_rebate: directBonusRebate,\n max_rebate_rate: maxRebateRate,\n referee_rebate_rate: defaultRefereeRebateRate,\n referrer_rebate_rate: referrerRebateRate,\n total_invites: directInvites + indirectInvites,\n total_volume: directVolume + indirectVolume,\n total_rebate: directRebate + indirectRebate + directBonusRebate,\n referral_type: \"multi\",\n };\n\n allCodes.push(multiLevelCode);\n }\n\n // Add legacy single-level codes\n if (referralInfo?.referrer_info?.referral_codes) {\n allCodes.push(\n ...referralInfo.referrer_info.referral_codes\n .filter((item) =>\n multiLevelReferralCode\n ? item.code !== multiLevelReferralCode\n : true,\n )\n .map((item) => {\n const totals = singleLevelTotals.get(item.code);\n const totalVolume = totals?.volume ?? item.total_volume ?? 0;\n const totalRebate = totals?.commission ?? item.total_rebate ?? 0;\n const totalInvites = item.total_invites ?? 0;\n\n const row: ReferralCodesRow = {\n code: item.code,\n referral_type: \"single\",\n direct_invites: totalInvites,\n indirect_invites: 0,\n direct_volume: totalVolume,\n indirect_volume: 0,\n direct_rebate: totalRebate,\n indirect_rebate: 0,\n max_rebate_rate: item.max_rebate_rate ?? 0,\n referee_rebate_rate: item.referee_rebate_rate ?? 0,\n referrer_rebate_rate: item.referrer_rebate_rate ?? 0,\n total_invites: totalInvites,\n total_volume: totalVolume,\n total_rebate: totalRebate,\n };\n return row;\n }),\n );\n }\n\n if (allCodes.length === 0) return undefined;\n return allCodes;\n }, [\n referralInfo?.referrer_info?.referral_codes,\n multiLevelRebateInfo,\n singleLevelTotals,\n ]);\n\n return {\n codes,\n copyCode,\n };\n };\n","import { useMemo, useState } from \"react\";\nimport { TableSort } from \"@orderly.network/ui\";\nimport {\n ReferralCodesRow,\n useMultiLevelReferralCodes,\n} from \"../../../../../hooks/useMultiLevelReferralCodes\";\n\ntype ReferralCodesSortableKey =\n | \"total_invites\"\n | \"total_volume\"\n | \"total_rebate\";\ntype ReferralCodesSortableRow = ReferralCodesRow &\n Record<ReferralCodesSortableKey, number | undefined>;\n\nexport type UseReferralCodesTableScriptProps = {\n enabled?: boolean;\n};\n\nexport const useReferralCodesTableScript = (\n props: UseReferralCodesTableScriptProps = {},\n) => {\n const { enabled = true } = props;\n const { codes, copyCode } = useMultiLevelReferralCodes();\n const [sort, setSort] = useState<{\n key: ReferralCodesSortableKey;\n order: \"asc\" | \"desc\";\n } | null>(null);\n\n const sortedCodes = useMemo(() => {\n if (!enabled) return undefined;\n if (!codes || !sort) return codes;\n\n const sortableCodes = codes.map((code, index) => ({\n code,\n index,\n }));\n\n sortableCodes.sort((a, b) => {\n const valA = Number((a.code as ReferralCodesSortableRow)[sort.key] ?? 0);\n const valB = Number((b.code as ReferralCodesSortableRow)[sort.key] ?? 0);\n if (valA < valB) return sort.order === \"asc\" ? -1 : 1;\n if (valA > valB) return sort.order === \"asc\" ? 1 : -1;\n return a.index - b.index;\n });\n\n return sortableCodes.map((item) => item.code) as ReferralCodesRow[];\n }, [codes, enabled, sort]);\n\n const onSort = (sort?: TableSort) => {\n if (!sort) {\n setSort(null);\n return;\n }\n const sortKey = sort.sortKey as ReferralCodesSortableKey;\n if (\n sortKey &&\n (sortKey === \"total_invites\" ||\n sortKey === \"total_volume\" ||\n sortKey === \"total_rebate\")\n ) {\n setSort({\n key: sortKey,\n order: sort.sort === \"asc\" ? \"asc\" : \"desc\",\n });\n }\n };\n\n return {\n codes,\n sortedCodes,\n copyCode,\n onSort,\n isLoading: enabled && !codes,\n };\n};\n\nexport type ReferralCodesTableScriptReturns = ReturnType<\n typeof useReferralCodesTableScript\n>;\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Column,\n Text,\n ListView,\n Divider,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { ReferralCodesRow } from \"../../../../../hooks/useMultiLevelReferralCodes\";\nimport {\n MobileCell,\n MobileCard,\n TooltipCell,\n BreakdownCell,\n} from \"../base/cells\";\nimport { ReferralCodesTableScriptReturns } from \"./referralCodesTable.script\";\n\ntype ReferralCodesTableUIProps = ReferralCodesTableScriptReturns;\n\nconst getReferralCodeType = (referralType?: \"single\" | \"multi\") => {\n const { t } = useTranslation();\n if (referralType === \"multi\") {\n return {\n text: t(\"affiliate.multiLevel\"),\n tooltip: t(\"affiliate.multiLevel.tooltip\"),\n };\n }\n\n return {\n text: t(\"affiliate.singleLevelLegacy\"),\n tooltip: t(\"affiliate.singleLevelLegacy.tooltip\"),\n };\n};\n\nconst MobileReferralCodeItem: FC<{\n item: ReferralCodesRow;\n copyCode: (code: string) => void;\n}> = ({ item, copyCode }) => {\n const { t } = useTranslation();\n const referrerRate = new Decimal(item.referrer_rebate_rate ?? 0)\n .mul(100)\n .toFixed(0);\n const refereeRate = new Decimal(item.referee_rebate_rate ?? 0)\n .mul(100)\n .toFixed(0);\n const typeInfo = getReferralCodeType(item.referral_type);\n\n return (\n <MobileCard>\n <MobileCell label={t(\"affiliate.referralCode\")}>\n <Text>{item.code || \"\"}</Text>\n </MobileCell>\n <MobileCell label={t(\"common.type\")}>\n <TooltipCell\n text={typeInfo.text}\n tooltip={typeInfo.tooltip}\n title={t(\"common.type\")}\n />\n </MobileCell>\n <MobileCell\n label={t(\"affiliate.referralCodes.column.you&Referee\")}\n align=\"end\"\n >\n <Text>\n {referrerRate}%/\n <span className=\"oui-text-base-contrast-54\">{refereeRate}%</span>\n </Text>\n </MobileCell>\n <MobileCell label={t(\"affiliate.networkSize\")}>\n <BreakdownCell\n total={item.total_invites ?? 0}\n direct={item.direct_invites ?? 0}\n indirect={item.indirect_invites ?? 0}\n title={t(\"affiliate.networkSize\")}\n />\n </MobileCell>\n <MobileCell label={t(\"common.volume\")}>\n <BreakdownCell\n total={item.total_volume ?? 0}\n direct={item.direct_volume ?? 0}\n indirect={item.indirect_volume ?? 0}\n prefix=\"$\"\n fix={2}\n title={t(\"common.volume\")}\n />\n </MobileCell>\n <MobileCell label={t(\"affiliate.commission\")} align=\"end\">\n <BreakdownCell\n total={item.total_rebate ?? 0}\n direct={item.direct_rebate ?? 0}\n indirect={item.indirect_rebate ?? 0}\n directBonus={item.direct_bonus_rebate}\n prefix=\"$\"\n fix={6}\n title={t(\"affiliate.commission\")}\n />\n </MobileCell>\n\n <MobileCell label={t(\"common.action\")}>\n <Text\n className=\"oui-cursor-pointer oui-text-primary-light\"\n onClick={(e) => {\n e.stopPropagation();\n copyCode(item.code);\n }}\n >\n {t(\"common.copy\")}\n </Text>\n </MobileCell>\n </MobileCard>\n );\n};\n\nexport const ReferralCodesTableUI: FC<ReferralCodesTableUIProps> = (props) => {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n const columns = useMemo<Column<ReferralCodesRow>[]>(() => {\n return [\n {\n title: t(\"affiliate.referralCode\"),\n dataIndex: \"code\",\n render: (value: string) => <Text>{value || \"\"}</Text>,\n },\n {\n title: t(\"common.type\"),\n dataIndex: \"referral_type\",\n render: (_: unknown, record: ReferralCodesRow) => {\n const typeInfo = getReferralCodeType(record.referral_type);\n return (\n <TooltipCell\n text={typeInfo.text}\n tooltip={typeInfo.tooltip}\n title={t(\"common.type\")}\n />\n );\n },\n },\n {\n title: (\n <Text>\n {t(\"affiliate.referralCodes.column.defaultSplit\")}\n <br />({t(\"affiliate.referralCodes.column.you&Referee\")})\n </Text>\n ),\n dataIndex: \"rate\",\n render: (_: unknown, record: ReferralCodesRow) => {\n const referrerRate = new Decimal(record.referrer_rebate_rate ?? 0)\n .mul(100)\n .toFixed(0);\n const refereeRate = new Decimal(record.referee_rebate_rate ?? 0)\n .mul(100)\n .toFixed(0);\n return (\n <Text>\n {referrerRate}%\n <span className=\"oui-text-base-contrast-54\">/{refereeRate}%</span>\n </Text>\n );\n },\n },\n {\n title: t(\"affiliate.networkSize\"),\n dataIndex: \"total_invites\",\n render: (_: unknown, record: ReferralCodesRow) => {\n return (\n <BreakdownCell\n total={record.total_invites ?? 0}\n direct={record.direct_invites ?? 0}\n indirect={record.indirect_invites ?? 0}\n title={t(\"affiliate.networkSize\")}\n />\n );\n },\n onSort: true,\n },\n {\n title: t(\"common.volume\"),\n dataIndex: \"total_volume\",\n render: (_: unknown, record: ReferralCodesRow) => {\n return (\n <BreakdownCell\n total={record.total_volume ?? 0}\n direct={record.direct_volume ?? 0}\n indirect={record.indirect_volume ?? 0}\n prefix=\"$\"\n fix={2}\n title={t(\"common.volume\")}\n />\n );\n },\n onSort: true,\n },\n {\n title: t(\"affiliate.commission\"),\n dataIndex: \"total_rebate\",\n render: (_: unknown, record: ReferralCodesRow) => {\n return (\n <BreakdownCell\n total={record.total_rebate ?? 0}\n direct={record.direct_rebate ?? 0}\n indirect={record.indirect_rebate ?? 0}\n directBonus={record.direct_bonus_rebate}\n prefix=\"$\"\n fix={6}\n title={t(\"affiliate.commission\")}\n />\n );\n },\n onSort: true,\n },\n {\n title: t(\"common.action\"),\n dataIndex: \"action\",\n render: (_: unknown, record: ReferralCodesRow) => (\n <Text\n className=\"oui-cursor-pointer oui-text-primary-light\"\n onClick={(e) => {\n e.stopPropagation();\n props.copyCode(record.code);\n }}\n >\n {t(\"common.copy\")}\n </Text>\n ),\n },\n ];\n }, [t, props.copyCode]);\n\n return (\n <>\n {isMobile ? (\n <div className=\"oui-flex oui-flex-col oui-px-4\">\n <ListView\n dataSource={props.sortedCodes}\n contentClassName=\"!oui-space-y-0 oui-pb-3\"\n renderItem={(item, index) => (\n <div key={index}>\n <MobileReferralCodeItem item={item} copyCode={props.copyCode} />\n <Divider intensity={8} />\n </div>\n )}\n />\n </div>\n ) : (\n <div className=\"oui-px-3\">\n <AuthGuardDataTable\n bordered\n columns={columns}\n dataSource={props.sortedCodes}\n loading={props.isLoading}\n onSort={props.onSort}\n onRow={() => ({ className: \"oui-h-12\" })}\n className=\"oui-pb-3 [&_.oui-h-10.oui-w-full]:!oui-mx-0 [&_.oui-table-pagination]:!oui-justify-end [&_th]:!oui-tracking-[0.03em] [&_th]:!oui-px-3 [&_td]:!oui-px-3\"\n />\n </div>\n )}\n </>\n );\n};\n","import { FC } from \"react\";\nimport {\n useReferralCodesTableScript,\n UseReferralCodesTableScriptProps,\n} from \"./referralCodesTable.script\";\nimport { ReferralCodesTableUI } from \"./referralCodesTable.ui\";\n\nexport const ReferralCodesTableWidget: FC<UseReferralCodesTableScriptProps> = (\n props,\n) => {\n const state = useReferralCodesTableScript(props);\n return <ReferralCodesTableUI {...state} />;\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Tabs, TabPanel, Flex } from \"@orderly.network/ui\";\nimport { CommissionTable } from \"./commissionTable\";\nimport { RefereesTable } from \"./refereesTable\";\nimport { ReferralCodesTable } from \"./referralCodesTable\";\nimport {\n ReferrerTableScriptReturns,\n ReferrerTableTab,\n} from \"./referrerTable.script\";\n\nexport const ReferrerTableUI: FC<ReferrerTableScriptReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n direction=\"column\"\n className=\"oui-rounded-2xl oui-bg-base-9 [&_td]:oui-font-medium [&_td]:oui-tracking-[0.03em] [&_th]:oui-font-semibold\"\n px={3}\n pt={4}\n gap={4}\n width=\"100%\"\n >\n <Tabs\n value={props.activeTab}\n onValueChange={(value) => props.setActiveTab(value as ReferrerTableTab)}\n className=\"oui-w-full oui-text-base\"\n variant=\"text\"\n classNames={{\n tabsListContainer: \"oui-px-3\",\n trigger: \"oui-pb-[9px] oui-tracking-[0.01em]\",\n scrollIndicator:\n \"[&_.oui-scroll-indicator-leading]:oui-hidden [&_.oui-scroll-indicator-tailing]:oui-hidden\",\n }}\n showScrollIndicator\n >\n <TabPanel value=\"commission\" title={t(\"affiliate.commission\")}>\n <CommissionTable enabled={props.activeTab === \"commission\"} />\n </TabPanel>\n <TabPanel value=\"referees\" title={t(\"affiliate.referees\")}>\n <RefereesTable enabled={props.activeTab === \"referees\"} />\n </TabPanel>\n <TabPanel value=\"codes\" title={t(\"affiliate.referralCodes\")}>\n <ReferralCodesTable enabled={props.activeTab === \"codes\"} />\n </TabPanel>\n </Tabs>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { useReferrerTableScript } from \"./referrerTable.script\";\nimport { ReferrerTableUI } from \"./referrerTable.ui\";\n\nexport const ReferrerTableWidget: FC = () => {\n const state = useReferrerTableScript();\n return <ReferrerTableUI {...state} />;\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Flex, Select, Text } from \"@orderly.network/ui\";\nimport { SummaryReturns } from \"./summary.script\";\n\nexport const Summary: FC<SummaryReturns> = (props) => {\n const { statistics } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n id=\"oui-affiliate-affiliate-summary\"\n r={\"2xl\"}\n p={5}\n width={\"100%\"}\n height={\"100%\"}\n gap={6}\n direction={\"column\"}\n intensity={900}\n className=\"oui-border oui-border-line-6\"\n >\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">{t(\"affiliate.summary\")}</Text>\n <div className={\"oui-min-w-14\"}>\n <Select.options\n size={\"xs\"}\n value={props.period}\n onValueChange={props.onPeriodChange}\n options={props.periodTypes}\n />\n </div>\n </Flex>\n\n <SummaryItem\n prefix=\"$\"\n rule=\"human\"\n label={`${t(\"affiliate.commission\")} (USDC)`}\n value={statistics.total_rebate}\n direct={statistics.direct_rebate + statistics.direct_bonus_rebate}\n indirect={statistics.indirect_rebate}\n classNames={{\n root: \"!oui-py-12\",\n value: \"oui-text-trade-profit\",\n direct: \"oui-text-trade-profit\",\n indirect: \"oui-text-trade-profit\",\n }}\n />\n\n <Flex width={\"100%\"} gap={6} className=\"oui-flex-col md:oui-flex-row\">\n <SummaryItem\n prefix=\"$\"\n rule=\"human\"\n label={`${t(\"affiliate.referralVol\")} (USDC)`}\n value={statistics.total_volume}\n direct={statistics.direct_volume}\n indirect={statistics.indirect_volume}\n classNames={{\n root: \"oui-w-full md:oui-w-1/2\",\n }}\n />\n <SummaryItem\n dp={0}\n label={t(\"affiliate.referrals\")}\n value={statistics.total_invites}\n direct={statistics.direct_invites}\n indirect={statistics.indirect_invites}\n classNames={{\n root: \"oui-w-full md:oui-w-1/2\",\n }}\n />\n </Flex>\n </Flex>\n );\n};\n\ntype SummaryItemProps = {\n label: string;\n value: number | string;\n direct: number | string;\n indirect: number | string;\n classNames?: {\n root?: string;\n value?: string;\n direct?: string;\n indirect?: string;\n };\n prefix?: string;\n rule?: \"human\";\n dp?: number;\n};\n\nconst SummaryItem: FC<SummaryItemProps> = (props) => {\n const { t } = useTranslation();\n const { rule, dp = 2 } = props;\n\n return (\n <Flex\n r=\"2xl\"\n width={\"100%\"}\n direction={\"column\"}\n itemAlign=\"start\"\n gap={2}\n className={cn(\n \"oui-bg-base-contrast-4 oui-p-5 md:oui-py-[38px]\",\n \"oui-text-sm oui-text-base-contrast-54\",\n props.classNames?.root,\n )}\n >\n <Text>{props.label}</Text>\n <Text.numeral\n rule={rule}\n dp={props.dp}\n size=\"3xl\"\n prefix={props.prefix}\n placeholder=\"--\"\n intensity={98}\n className={props.classNames?.value}\n >\n {props.value}\n </Text.numeral>\n\n <Flex className=\"oui-flex-wrap oui-text-base-contrast-54\">\n <Flex gap={1}>\n <Text>{t(\"affiliate.direct\")}:</Text>\n <Text.numeral\n rule={rule}\n dp={props.dp}\n prefix={props.prefix}\n intensity={54}\n className={props.classNames?.direct}\n >\n {props.direct}\n </Text.numeral>\n </Flex>\n {\"/\"}\n <Flex gap={1}>\n <Text>{t(\"affiliate.indirect\")}:</Text>\n <Text.numeral\n rule={rule}\n dp={props.dp}\n prefix={props.prefix}\n intensity={54}\n className={props.classNames?.indirect}\n >\n {props.indirect}\n </Text.numeral>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useMultiLevelStatistics } from \"../../../../hooks/useReferralApi\";\nimport { StatisticsTimeRange } from \"../../../../types\";\n\nexport type SummaryReturns = ReturnType<typeof useSummaryScript>;\n\nexport const useSummaryScript = () => {\n const { t } = useTranslation();\n const [period, setPeriod] = useState(StatisticsTimeRange.All);\n\n const { data } = useMultiLevelStatistics(period);\n\n const periodTypes: { label: string; value: StatisticsTimeRange }[] = [\n { label: t(\"common.all\"), value: StatisticsTimeRange.All },\n { label: t(\"common.select.1d\"), value: StatisticsTimeRange[\"1d\"] },\n { label: t(\"common.select.7d\"), value: StatisticsTimeRange[\"7d\"] },\n { label: t(\"common.select.30d\"), value: StatisticsTimeRange[\"30d\"] },\n ];\n\n const onPeriodChange = (item: string) => {\n setPeriod(item as StatisticsTimeRange);\n };\n\n const statistics = useMemo(() => {\n const {\n direct_invites = 0,\n indirect_invites = 0,\n direct_traded = 0,\n indirect_traded = 0,\n direct_volume = 0,\n indirect_volume = 0,\n direct_rebate = 0,\n indirect_rebate = 0,\n direct_bonus_rebate = 0,\n } = data || {};\n return {\n direct_invites,\n indirect_invites,\n total_invites: direct_invites + indirect_invites,\n direct_traded,\n indirect_traded,\n total_traded: direct_traded + indirect_traded,\n direct_volume,\n indirect_volume,\n total_volume: direct_volume + indirect_volume,\n direct_rebate,\n indirect_rebate,\n direct_bonus_rebate,\n total_rebate: direct_rebate + indirect_rebate + direct_bonus_rebate,\n };\n }, [data]);\n\n return {\n period,\n periodTypes,\n onPeriodChange,\n statistics,\n };\n};\n","import { useSummaryScript } from \"./summary.script\";\nimport { Summary } from \"./summary.ui\";\n\nexport const SummaryWidget = () => {\n const state = useSummaryScript();\n return <Summary {...state} />;\n};\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Grid, cn, Text } from \"@orderly.network/ui\";\nimport { useReferralContext } from \"../../../provider\";\nimport { CommissionChartWidget } from \"./commissionChart\";\nimport { MultiLevelReferralWidget } from \"./multiLevelReferral\";\nimport { ReferralInfoWidget } from \"./referralInfo\";\nimport { ReferrerTableWidget } from \"./referrerTable/referrerTable.widget\";\nimport { SummaryWidget } from \"./summary\";\n\nexport const MultiLevelAffiliatePage = () => {\n const { t } = useTranslation();\n\n const { multiLevelRebateInfo } = useReferralContext();\n\n return (\n <Flex\n id=\"oui-affiliate-affiliate-page\"\n className={cn(\"oui-h-lvw\", \"oui-font-semibold\", \"oui-pb-24 oui-pt-16\")}\n direction={\"column\"}\n gap={4}\n >\n <div className=\"oui-w-full oui-px-5 md:oui-mx-auto md:oui-max-w-[1040px]\">\n <Flex\n width={\"100%\"}\n direction={\"column\"}\n className=\"oui-gap-8 md:oui-gap-10\"\n >\n <Flex width={\"100%\"} direction={\"column\"} itemAlign={\"start\"} gap={4}>\n <Text className=\"oui-text-[32px] oui-leading-[40px] md:oui-text-6xl md:oui-leading-[72px]\">\n {t(\"affiliate.earnReferralCommissions\")}\n </Text>\n <Text size=\"sm\" intensity={54}>\n {t(\"affiliate.earnReferralCommissions.description\")}\n </Text>\n </Flex>\n\n <Grid\n width={\"100%\"}\n height={\"100%\"}\n gap={6}\n cols={1}\n rows={1}\n className=\"md:oui-grid-cols-2\"\n >\n <div className=\"oui-order-2 md:oui-order-1\">\n <SummaryWidget />\n </div>\n <div className=\"oui-order-1 md:oui-order-2\">\n {multiLevelRebateInfo?.referral_code ? (\n <ReferralInfoWidget />\n ) : (\n <MultiLevelReferralWidget />\n )}\n </div>\n </Grid>\n\n <CommissionChartWidget />\n\n <ReferrerTableWidget />\n </Flex>\n </div>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { IconProps } from \"../utils/types\";\n\nexport const AffiliateIcon: FC<IconProps> = (props) => {\n const { size = 16, className, ...rest } = props;\n\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 16 16\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}\n {...rest}\n >\n <path d=\"M8 1.302c-3.683 0-6.655 2.985-6.667 6.667-.013 3.676 2.987 6.68 6.666 6.687s6.674-3.037 6.667-6.687c-.007-3.682-2.985-6.667-6.667-6.667m0 1.333a5.333 5.333 0 0 1 5.333 5.334c0 1.5-.625 2.852-1.622 3.821-.49-1.062-1.545-1.821-2.753-1.821H7.04c-1.207 0-2.259.75-2.75 1.812A5.3 5.3 0 0 1 2.666 7.97a5.333 5.333 0 0 1 5.333-5.334M8 3.97a2.667 2.667 0 1 0 0 5.333A2.667 2.667 0 0 0 8 3.97\" />\n <path\n d=\"M16 12.667a3.333 3.333 0 1 1-6.667 0 3.333 3.333 0 0 1 6.667 0\"\n fill=\"#1828C3\"\n />\n <path d=\"M11.917 11.433a.917.917 0 0 0-.917.917c0 .53.302 1.031.802 1.49a4.6 4.6 0 0 0 .713.53l.068.043c.05.027.117.027.167 0l.068-.042q.08-.05.177-.115c.182-.123.366-.26.536-.416.5-.459.802-.96.802-1.49a.917.917 0 0 0-.917-.917.97.97 0 0 0-.744.386.95.95 0 0 0-.756-.386\" />\n </svg>\n );\n};\n","import { FC } from \"react\";\nimport { IconProps } from \"../utils/types\";\n\nexport const TraderIcon: FC<IconProps> = (props) => {\n const { size = 16, className, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 16 16\"\n fill=\"white\"\n fillOpacity=\"0.36\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}\n {...rest}\n >\n <path d=\"M7.99929 1.30212C4.31735 1.30212 1.34509 4.28679 1.33262 7.96878C1.32015 11.6454 4.32042 14.6488 7.99929 14.6561C11.6782 14.6634 14.6726 11.6194 14.666 7.96878C14.6593 4.28679 11.6812 1.30212 7.99929 1.30212ZM7.99929 2.63546C10.9448 2.63546 13.3326 5.02345 13.3326 7.96878C13.3326 9.46878 12.7078 10.8208 11.7112 11.7901C11.2202 10.7281 10.1656 9.96878 8.95762 9.96878C8.71802 9.96878 7.28042 9.96878 7.04095 9.96878C5.83369 9.96878 4.78215 10.7188 4.29095 11.7814C3.29429 10.8121 2.66595 9.46878 2.66595 7.96878C2.66595 5.02345 5.05375 2.63546 7.99929 2.63546ZM7.99929 3.96879C6.52649 3.96879 5.33255 5.16279 5.33262 6.63545C5.33262 8.10812 6.52649 9.30212 7.99929 9.30212C9.47202 9.30212 10.666 8.10812 10.666 6.63545C10.666 5.16279 9.47202 3.96879 7.99929 3.96879Z\" />\n <path\n d=\"M16 12.6667C16 14.5076 14.5076 16 12.6666 16C10.8257 16 9.33331 14.5076 9.33331 12.6667C9.33331 10.8257 10.8257 9.33333 12.6666 9.33333C14.5076 9.33333 16 10.8257 16 12.6667Z\"\n fill=\"#005A4F\"\n />\n <path\n d=\"M14.3325 13.3345C14.3325 13.2918 14.3182 13.2473 14.2857 13.2147L13.6658 12.6002L13.4315 12.8345L13.7595 13.1678H11.3325C11.2405 13.1678 11.1658 13.2425 11.1658 13.3345C11.1658 13.4265 11.2405 13.5012 11.3325 13.5012H13.7595L13.4315 13.8345L13.6658 14.0688L14.2857 13.4543C14.3182 13.4217 14.3325 13.3772 14.3325 13.3345ZM14.1658 12.0012C14.1658 11.9092 14.0912 11.8345 13.9992 11.8345H11.572L11.9002 11.5012L11.6658 11.2668L11.046 11.8813C10.981 11.9465 10.981 12.0558 11.046 12.121L11.6658 12.7355L11.9002 12.5012L11.572 12.1678H13.9992C14.0912 12.1678 14.1658 12.0932 14.1658 12.0012Z\"\n fill=\"white\"\n fillOpacity=\"0.98\"\n />\n </svg>\n );\n};\n","import { FC } from \"react\";\n\nexport const USDCIcon: FC<{\n className?: string;\n}> = (props) => {\n return (\n <svg\n width=\"21\"\n height=\"20\"\n viewBox=\"0 0 21 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}\n >\n <g clipPath=\"url(#a)\">\n <path\n d=\"M10.5 20c5.542 0 10-4.458 10-10s-4.458-10-10-10S.5 4.458.5 10s4.458 10 10 10\"\n fill=\"#2775CA\"\n />\n <path\n d=\"M13.5 11.473c0-1.452-.94-1.95-2.82-2.158-1.344-.166-1.613-.498-1.613-1.078s.448-.955 1.343-.955c.806 0 1.254.25 1.478.872.045.124.18.207.313.207h.717c.179 0 .313-.125.313-.29v-.042c-.179-.913-.985-1.618-2.015-1.701v-.996c0-.166-.134-.29-.358-.332h-.671c-.18 0-.314.124-.359.332v.954c-1.343.166-2.194.996-2.194 2.034 0 1.369.896 1.908 2.776 2.116 1.254.207 1.657.456 1.657 1.12s-.627 1.12-1.477 1.12c-1.165 0-1.568-.456-1.702-1.078a.32.32 0 0 0-.313-.25h-.762c-.179 0-.313.125-.313.291v.042c.179 1.037.895 1.784 2.373 1.991v.996c0 .166.134.29.358.332h.672c.18 0 .313-.124.358-.332v-.996c1.344-.207 2.239-1.079 2.239-2.199\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n <path\n d=\"M8.24 16.57c-3.458-1.215-5.23-4.986-3.945-8.324.665-1.821 2.127-3.208 3.944-3.859.178-.086.266-.216.266-.433v-.607c0-.174-.088-.304-.266-.347-.044 0-.133 0-.177.043-4.21 1.3-6.516 5.68-5.186 9.798.798 2.428 2.704 4.292 5.186 5.072.177.087.355 0 .4-.173.043-.043.043-.087.043-.173v-.608c0-.13-.133-.303-.266-.39m4.698-13.527c-.178-.086-.355 0-.4.174-.043.043-.043.086-.043.173v.607c0 .174.133.347.266.434 3.457 1.213 5.23 4.985 3.944 8.323-.664 1.821-2.127 3.209-3.944 3.859-.178.086-.266.216-.266.433v.607c0 .174.088.304.266.347.044 0 .133 0 .177-.043 4.21-1.3 6.515-5.68 5.186-9.798-.798-2.471-2.748-4.335-5.186-5.116\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <path fill=\"#fff\" d=\"M.5 0h20v20H.5z\" />\n </clipPath>\n </defs>\n </svg>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Select, Text } from \"@orderly.network/ui\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { USDCIcon } from \"../../../icons/usdcIcon\";\nimport { SummaryReturns } from \"./summary.script\";\n\nexport const Summary: FC<SummaryReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n id=\"oui-affiliate-affiliate-summary\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n height={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9\"\n >\n <Title {...props} />\n <CommissionData {...props} />\n <Flex direction={\"column\"} width={\"100%\"} gap={2}>\n <Row\n title={`${t(\"affiliate.referralVol\")} (USDC)`}\n value={props.referralVol}\n dp={2}\n {...props}\n />\n <Row\n title={t(\"affiliate.referees\")}\n value={props.referees}\n dp={0}\n {...props}\n />\n <Row\n title={t(\"affiliate.summary.refereesTraded\")}\n value={props.refereesTades}\n dp={0}\n {...props}\n />\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<SummaryReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">{t(\"affiliate.summary\")}</Text>\n <div className={\"oui-min-w-14\"}>\n <Select.options\n size={\"xs\"}\n value={props.period}\n onValueChange={props.onPeriodChange}\n options={props.periodTypes}\n />\n </div>\n </Flex>\n );\n};\n\nconst CommissionData: FC<SummaryReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n gradient=\"primary\"\n angle={180}\n r=\"xl\"\n py={4}\n px={6}\n width={\"100%\"}\n direction={\"column\"}\n gap={3}\n height={\"100%\"}\n className=\"oui-max-h-[104px]\"\n >\n <Text intensity={54} className=\"oui-text-base 2xl:oui-text-lg\">\n {`${t(\"affiliate.commission\")} (USDC)`}\n </Text>\n <Flex\n direction={\"row\"}\n gap={3}\n className=\"oui-text-xl md:oui-text-2xl xl:oui-text-3xl\"\n >\n <USDCIcon className=\"md:oui-w-[24px] md:oui-h-[24px] lg:oui-w-[28px] lg:oui-h-[28px] \" />\n <Text>\n {commifyOptional(props.commission, { fix: 2, fallback: \"0\" })}\n </Text>\n </Flex>\n </Flex>\n );\n};\n\nconst Row: FC<\n SummaryReturns & {\n title: string;\n value: number;\n dp: number;\n }\n> = (props) => {\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text\n intensity={54}\n className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\"\n >\n {props.title}\n </Text>\n <Text className=\"oui-text-xs md:oui-text-sm xl:oui-text-base\">\n {commifyOptional(props.value, { fix: props.dp, fallback: \"0\" })}\n </Text>\n </Flex>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useReferralContext } from \"../../../provider\";\nimport { SummaryFilter } from \"../../../utils/types\";\n\nexport type SummaryReturns = {\n period: string;\n periodTypes: { label: string; value: string }[];\n onPeriodChange: (item: string) => void;\n commission: number;\n referralVol: number;\n referees: number;\n refereesTades: number;\n};\n\nexport const useSummaryScript = (): SummaryReturns => {\n const { t } = useTranslation();\n const [period, setPeriod] = useState<SummaryFilter>(\"All\");\n\n const periodTypes: { label: string; value: SummaryFilter }[] = [\n { label: t(\"common.all\"), value: \"All\" },\n { label: t(\"common.select.1d\"), value: \"1D\" },\n { label: t(\"common.select.7d\"), value: \"7D\" },\n { label: t(\"common.select.30d\"), value: \"30D\" },\n ];\n\n const { referralInfo } = useReferralContext();\n\n const commission = useMemo(() => {\n if (!referralInfo || !referralInfo.referrer_info) {\n return 0;\n }\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_referrer_rebate;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_referrer_rebate\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_referrer_rebate\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_referrer_rebate\"];\n }\n }, [referralInfo, period]);\n\n const referralVol = useMemo(() => {\n if (!referralInfo || !referralInfo.referrer_info) {\n return 0;\n }\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_referee_volume;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_referee_volume\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_referee_volume\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_referee_volume\"];\n }\n }, [referralInfo, period]);\n\n const referees = useMemo(() => {\n if (!referralInfo || !referralInfo.referrer_info) {\n return 0;\n }\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_invites;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_invites\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_invites\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_invites\"];\n }\n }, [referralInfo, period]);\n\n const refereesTades = useMemo(() => {\n if (!referralInfo || !referralInfo.referrer_info) {\n return 0;\n }\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_traded;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_traded\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_traded\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_traded\"];\n }\n }, [referralInfo, period]);\n\n const onPeriodChange = (item: string) => {\n setPeriod(item as SummaryFilter);\n };\n\n return {\n period,\n periodTypes,\n onPeriodChange,\n commission,\n referralVol,\n referees,\n refereesTades,\n };\n};\n","import { useSummaryScript } from \"./summary.script\";\nimport { Summary } from \"./summary.ui\";\n\nexport const SummaryWidget = () => {\n const state = useSummaryScript();\n return <Summary {...state} />;\n};\n","\nimport { cn } from \"@orderly.network/ui\";\nimport { FC, useEffect, useMemo, useRef, useState } from \"react\";\n\nexport const AutoHideText: FC<{\n text: string;\n className?: string;\n visibleCount?: number;\n}> = (props) => {\n const { text, visibleCount } = props;\n const containerRef = useRef<HTMLDivElement | null>(null);\n const textRef = useRef<HTMLDivElement>(null);\n const lastContainerWidth = useRef<number | undefined>(undefined);\n\n function getTextWidth(ref: HTMLDivElement, text: string): number | undefined {\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n const element = ref; \n if (context && element) {\n let fontStyle = getComputedStyle(element).font;\n if (fontStyle.length === 0) {\n fontStyle = [\n getComputedStyle(element).fontWeight,\n getComputedStyle(element).fontSize,\n getComputedStyle(element).fontFamily,\n ].join(\" \");\n }\n context.font = fontStyle;\n context.letterSpacing = getComputedStyle(element).letterSpacing;\n\n const width = context.measureText(text).width;\n return width;\n }\n return undefined;\n }\n\n const [visibleChars, setVisibleChars] = useState(0);\n\n useEffect(() => {\n const calculateVisibleChars = () => {\n if (props.visibleCount !== undefined) return;\n if (containerRef.current && textRef.current) {\n const containerWidth = containerRef.current.clientWidth;\n\n if (containerWidth == lastContainerWidth.current) return;\n lastContainerWidth.current = containerWidth;\n\n const textElement = textRef.current;\n\n const textContent = text;\n\n const pWidth = Math.ceil(getTextWidth(textElement, \"...\") || 0);\n \n const maxDisplayW = containerWidth - pWidth;\n let count = 0;\n while(count < text.length) {\n let contentW = getTextWidth(textElement, subText(text, count++)) || maxDisplayW;\n \n if (contentW <= maxDisplayW) {\n break;\n }\n }\n setVisibleChars(textContent.length - count);\n }\n };\n\n lastContainerWidth.current = undefined;\n calculateVisibleChars();\n\n window.addEventListener(\"resize\", calculateVisibleChars);\n return () => {\n lastContainerWidth.current = undefined;\n window.removeEventListener(\"resize\", calculateVisibleChars);\n };\n }, [text, textRef]);\n\n const truncatedText = useMemo(() => {\n if (visibleChars + 1 >= text.length) {\n return text;\n }\n\n const maxCharacters = visibleCount || visibleChars;\n\n const startText = text.slice(0, Math.ceil(maxCharacters / 2));\n const endText = text.slice(\n text.length - Math.floor(maxCharacters / 2),\n text.length\n );\n\n return `${startText}...${endText}`;\n }, [text, visibleCount, visibleChars]);\n\n return (\n <div ref={containerRef} className={cn(\"oui-relative oui-w-full oui-text-end\", props.className)}>\n <div\n className={cn(\n \"oui-hidden oui-whitespace-nowrap oui-absolute oui-top-0 oui-bottom-0 oui-right-0 oui-left-0\",\n )}\n >\n <span ref={textRef}>{text}</span>\n </div>\n <span>{truncatedText}</span>\n </div>\n );\n};\n\n\nconst subText = (text: string, count: number) => {\n const start = Math.floor(text.length / 2 - (count > 0 ? count / 2 : 1));\n const first = text.slice(0, start);\n const end = text.slice(start + count);\n return first + end;\n}","import { FC } from \"react\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\nimport {\n CopyIcon,\n Divider,\n Flex,\n modal,\n Text,\n Tooltip,\n} from \"@orderly.network/ui\";\nimport { AutoHideText } from \"../../../components/autoHideText\";\nimport { ReferralLinkReturns } from \"./referralLink.script\";\n\nexport const ReferralLink: FC<ReferralLinkReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n id=\"oui-affiliate-affiliate-referralLink\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9\"\n >\n <Title {...props} />\n <Flex\n width={\"100%\"}\n className=\"oui-flex oui-flex-col 3xl:oui-flex-row\"\n gap={4}\n >\n <div className=\"oui-w-full 3xl:oui-w-1/3\">\n <Subtitle {...props} />\n </div>\n <Flex\n direction={\"column\"}\n width={\"100%\"}\n className=\"3xl:oui-w-2/3 3xl:oui-gap-2\"\n >\n <Input\n title={t(\"affiliate.referralCode\")}\n value={props.refCode}\n {...props}\n />\n <Input\n title={t(\"affiliate.referralLink\")}\n value={props.refLink}\n {...props}\n />\n </Flex>\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<ReferralLinkReturns> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">{t(\"affiliate.referralLink\")}</Text>\n </Flex>\n );\n};\n\nconst Subtitle: FC<ReferralLinkReturns> = (props) => {\n const { t } = useTranslation();\n\n const item = (\n title: string,\n value: string,\n gradient: boolean,\n className?: string,\n tooltip?: any,\n ) => {\n const valueClsName =\n \"oui-text-lg md:oui-text-xl lg:oui-text-2xl xl:oui-text-3xl\";\n return (\n <Flex direction={\"column\"} itemAlign={\"start\"} className={className}>\n <Flex direction={\"row\"} gap={2}>\n {/* <Text>{title}</Text> */}\n <Alert title={title} tooltip={tooltip} />\n </Flex>\n {gradient ? (\n <Text.gradient color=\"brand\" className={valueClsName}>\n {value}\n </Text.gradient>\n ) : (\n <Text className={valueClsName}>{value}</Text>\n )}\n </Flex>\n );\n };\n\n return (\n <Flex direction={\"row\"} width={\"100%\"}>\n {item(\n t(\"affiliate.referralLink.earn\"),\n props.earn || \"-\",\n true,\n \"oui-flex-1\",\n <span>\n <Text.gradient color=\"brand\">{props.earn || \"-\"}</Text.gradient>{\" \"}\n {t(\"affiliate.referralLink.earn.tooltip\", {\n brokerName: props.brokerName,\n })}\n </span>,\n // @ts-ignore\n // <Trans\n // i18nKey=\"affiliate.referralLink.earn.tooltip\"\n // values={{\n // value: props.earn || \"-\",\n // brokerName: props.brokerName,\n // }}\n // components={[<Text.gradient color=\"brand\" />]}\n // />\n )}\n {item(\n t(\"affiliate.referralLink.share\"),\n props.share || \"-\",\n false,\n \"oui-flex-1\",\n // @ts-ignore\n <Trans\n i18nKey=\"affiliate.referralLink.share.tooltip\"\n values={{\n value: props.share || \"-\",\n brokerName: props.brokerName,\n }}\n components={[<Text.gradient color=\"brand\" key=\"0\" />]}\n />,\n )}\n </Flex>\n );\n};\n\nconst Input: FC<\n ReferralLinkReturns & {\n title: string;\n value?: string;\n }\n> = (props) => {\n const { title, value = \"-\" } = props;\n return (\n <Flex\n r=\"xl\"\n p={3}\n gap={4}\n direction={\"row\"}\n width={\"100%\"}\n className=\"oui-bg-base-8\"\n >\n <Text className=\"oui-text-base-contrast-54 oui-flex-shrink oui-text-2xs md:oui-text-xs xl:oui-text-sm\">\n {title}\n </Text>\n <Flex\n direction={\"row\"}\n justify={\"end\"}\n gap={2}\n className=\"oui-flex-1 oui-text-xs md:oui-text-sm xl:oui-text-base\"\n >\n <AutoHideText text={value} />\n <button\n className=\"oui-cursor-pointer oui-text-sm oui-flex-shrink\"\n onClick={() => {\n navigator.clipboard.writeText(value);\n props.onCopy?.(value);\n }}\n >\n <CopyIcon\n size={12}\n color=\"white\"\n className=\"oui-w-[13px] oui-h-[13px] md:oui-w-[14px] md:oui-h-[14px] xl:oui-w-4 xl:oui-h-4\"\n />\n </button>\n </Flex>\n </Flex>\n );\n};\n\nconst Alert: FC<{\n title: string;\n tooltip: any;\n}> = (props) => {\n return (\n <Tooltip content={props.tooltip} className=\"oui-max-w-[200px]\">\n <div\n onClick={() => {\n modal.alert({\n title: props.title,\n message: (\n <div className=\"oui-text-base-contrast/30 oui-space-y-3 oui-text-xs desktop:oui-text-xs\">\n {props.tooltip}\n </div>\n ),\n });\n }}\n >\n <Flex direction={\"column\"}>\n <Text\n intensity={54}\n className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\"\n >\n {props.title}\n </Text>\n <Divider className=\"oui-w-full\" lineStyle=\"dotted\" intensity={16} />\n </Flex>\n </div>\n </Tooltip>\n );\n};\n","import { useMemo } from \"react\";\nimport { RefferalAPI, useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useReferralContext } from \"../../../provider\";\nimport { generateReferralLink } from \"../../../utils/utils\";\n\nexport type ReferralLinkReturns = {\n onCopy?: (value: string) => void;\n refLink?: string;\n refCode?: string;\n earn?: string;\n share?: string;\n brokerName?: string;\n};\n\nexport const useReferralLinkScript = (): ReferralLinkReturns => {\n const { t } = useTranslation();\n\n const onCopy = (value: string) => {\n toast.success(t(\"common.copy.copied\"));\n };\n\n const { referralInfo, referralLinkUrl, overwrite } = useReferralContext();\n const [pinCodes, setPinCodes] = useLocalStorage<string[]>(\n \"orderly_referral_codes\",\n [] as string[],\n );\n\n const codes = useMemo((): RefferalAPI.ReferralCode[] => {\n if (!referralInfo?.referrer_info?.referral_codes)\n return [] as RefferalAPI.ReferralCode[];\n const referralCodes = [...referralInfo?.referrer_info?.referral_codes];\n\n const pinedItems: RefferalAPI.ReferralCode[] = [];\n\n for (let i = 0; i < pinCodes.length; i++) {\n const code = pinCodes[i];\n\n const index = referralCodes.findIndex((item) => item.code === code);\n if (index !== -1) {\n pinedItems.push({ ...referralCodes[index] });\n referralCodes.splice(index, 1);\n }\n }\n\n return [...pinedItems, ...referralCodes];\n }, [referralInfo?.referrer_info?.referral_codes, pinCodes]);\n\n const firstCode = useMemo(() => {\n if (codes.length === 0) {\n return undefined;\n }\n\n return codes[0];\n }, [codes]);\n\n const code = useMemo(() => {\n return firstCode?.code;\n }, [firstCode]);\n\n const referralLink = useMemo(() => {\n if (!firstCode) return \"\";\n\n return generateReferralLink(referralLinkUrl, firstCode.code);\n }, [firstCode]);\n\n const earn = useMemo(() => {\n const value = new Decimal(firstCode?.referrer_rebate_rate || \"0\")\n .mul(100)\n .toDecimalPlaces(0, Decimal.ROUND_DOWN)\n .toString();\n return `${value}%`;\n }, [firstCode?.referrer_rebate_rate]);\n\n const share = useMemo(() => {\n const value = new Decimal(firstCode?.referee_rebate_rate || \"0\")\n .mul(100)\n .toDecimalPlaces(0, Decimal.ROUND_DOWN)\n .toString();\n return `${value}%`;\n }, [firstCode?.referee_rebate_rate]);\n\n return {\n onCopy,\n refLink: referralLink,\n refCode: code,\n share,\n earn,\n brokerName: overwrite?.brokerName ?? overwrite?.shortBrokerName,\n };\n};\n","import { useReferralLinkScript } from \"./referralLink.script\";\nimport { ReferralLink } from \"./referralLink.ui\";\n\nexport const ReferralLinkWidget = () => {\n const state = useReferralLinkScript();\n return <ReferralLink {...state} />;\n};\n","import { FC } from \"react\";\nimport { VolBarChart } from \"@orderly.network/chart\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { EMPTY_LIST } from \"@orderly.network/types\";\nimport { Flex, Select, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { TitleStatisticReturns } from \"./titleStatistic.script\";\n\nexport const TitleStatistic: FC<TitleStatisticReturns> = (props) => {\n return (\n <Flex\n id=\"oui-affiliate-affiliate-titleStatistic\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9\"\n >\n <Title {...props} />\n <Flex className=\"oui-h-[170px] 2xl:oui-h-[196px] oui-w-full oui-flex oui-flex-row oui-items-stretch\">\n <VolBarChart\n data={props.dataSource || EMPTY_LIST}\n colors={{ fill: \"rgba(0, 180, 158, 1)\" }}\n className=\"oui-w-full oui-flex-1\"\n tooltip={{\n rm: Decimal.ROUND_DOWN,\n dp: props.volType === \"Commission\" ? 6 : 2,\n }}\n />\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<TitleStatisticReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">{t(\"affiliate.statistics\")}</Text>\n <Flex direction={\"row\"} gap={2} className={\"oui-min-w-14\"}>\n <Select.options\n size={\"xs\"}\n value={props.period}\n onValueChange={props.onPeriodChange}\n options={props.periodTypes}\n />\n <Select.options\n size={\"xs\"}\n value={props.volType}\n onValueChange={props.onVolTypeChange}\n options={props.volTypes}\n />\n </Flex>\n </Flex>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { fillData } from \"../../../utils/chartUtils\";\nimport { RefferalAPI, useReferralRebateSummary } from \"@orderly.network/hooks\";\nimport { format, subDays } from \"date-fns\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport type TitleStatisticReturns = {\n period: string;\n periodTypes: { label: string; value: string }[];\n onPeriodChange: (item: string) => void;\n volType: string;\n volTypes: { label: string; value: string }[];\n onVolTypeChange: (item: string) => void;\n dataSource?: {\n date: string;\n volume: number;\n }[];\n};\n\nexport const useTitleStatisticScript = (): TitleStatisticReturns => {\n const { t } = useTranslation();\n\n const [period, setPeriod] = useState(\"7\");\n\n const periodTypes = [\n { label: t(\"common.select.7d\"), value: \"7\" },\n { label: t(\"common.select.30d\"), value: \"30\" },\n { label: t(\"common.select.90d\"), value: \"90\" },\n ];\n\n const onPeriodChange = (item: string) => {\n setPeriod(item);\n };\n\n const [volType, setVolType] = useState(\"Commission\");\n const volTypes = [\n { label: t(\"affiliate.commission\"), value: \"Commission\" },\n { label: t(\"affiliate.referralVol\"), value: \"ref\" },\n ];\n\n const onVolTypeChange = (item: string) => {\n setVolType(item);\n };\n\n const dateRange = useMemo((): {\n startDate: Date;\n endDate: Date;\n } => {\n if (period === \"7\") {\n return {\n startDate: subDays(new Date(), 7),\n endDate: subDays(new Date(), 1),\n };\n } else if (period === \"30\") {\n return {\n startDate: subDays(new Date(), 30),\n endDate: subDays(new Date(), 1),\n };\n } else if (period === \"90\") {\n return {\n startDate: subDays(new Date(), 90),\n endDate: subDays(new Date(), 1),\n };\n } else {\n return {\n startDate: subDays(new Date(), 7),\n endDate: subDays(new Date(), 1),\n };\n }\n }, [period]);\n\n const [rebateSummary] = useReferralRebateSummary({\n startDate: format(dateRange.startDate, \"yyyy-MM-dd\"),\n endDate: format(dateRange.endDate, \"yyyy-MM-dd\"),\n size: Number(period),\n });\n\n const dataSource = useMemo(() => {\n return (\n (rebateSummary as RefferalAPI.ReferralRebateSummary[] | null)?.map(\n (e) => ({\n date: e.date,\n volume: volType === \"Commission\" ? e.referral_rebate : e.volume,\n })\n ) || []\n ).reverse();\n }, [rebateSummary, volType]);\n\n return {\n period,\n periodTypes,\n onPeriodChange,\n volType,\n volTypes,\n onVolTypeChange,\n dataSource: fillData(Number(period), dataSource),\n };\n};\n","import { useTitleStatisticScript } from \"./titleStatistic.script\";\nimport { TitleStatistic } from \"./titleStatistic.ui\";\n\nexport const TitleStatisticWidget = () => {\n const state = useTitleStatisticScript();\n return <TitleStatistic {...state} />;\n};\n","import { FC, SVGProps } from \"react\";\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {}\n\nexport const EditIcon: FC<IconProps> = (props) => {\n const { className, ...rest } = props;\n return (\n <svg\n width=\"12\"\n height=\"13\"\n viewBox=\"0 0 12 13\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"white\"\n fillOpacity=\"0.36\"\n className={className}\n {...rest}\n >\n <path d=\"M8.49773 1.47656C8.36523 1.47656 8.23223 1.52357 8.13823 1.61707C7.86023 1.89507 6.85973 2.89558 6.63773 3.11808L2.13523 7.62059L1.63473 8.12059C1.56523 8.19059 1.52923 8.28958 1.50973 8.38658L1.00973 10.8881C0.939727 11.2381 1.23773 11.5361 1.58773 11.4666C1.90073 11.4036 3.77673 11.0286 4.08923 10.9661C4.18623 10.9466 4.28523 10.9106 4.35523 10.8411L4.85523 10.3406L9.35773 5.83808C9.58023 5.61608 10.5807 4.61506 10.8587 4.33756C10.9522 4.24356 10.9992 4.11056 10.9992 3.97806C10.9992 3.15956 10.7907 2.57456 10.3582 2.13306C9.92173 1.68756 9.33873 1.47656 8.49773 1.47656ZM8.69473 2.48606C9.14623 2.51256 9.43873 2.61608 9.63923 2.82108C9.84423 3.03008 9.97373 3.32008 10.0017 3.76258C9.72773 4.03608 9.32673 4.43106 8.99823 4.75956C8.60173 4.36306 8.11273 3.87407 7.71623 3.47757C8.04523 3.14907 8.42123 2.75956 8.69473 2.48606ZM6.99723 4.19657L8.27923 5.47858L4.49573 9.26207L3.21373 7.98009L6.99723 4.19657ZM2.49473 8.69908L3.77673 9.98107L3.72973 10.0281C3.39973 10.0941 2.73323 10.2336 2.11923 10.3566L2.44773 8.74608L2.49473 8.69908Z\" />\n </svg>\n );\n};\n","import { FC, useState } from \"react\";\nimport { EditIcon } from \"../icons/editIcon\";\n\nexport const EditCode: FC<{\n size?: number;\n onClick?: () => void;\n}> = (props) => {\n return (\n <button>\n <EditIcon\n className=\" oui-mt-px oui-cursor-pointer oui-fill-base-contrast-36 hover:oui-fill-base-contrast-80\"\n fillOpacity={1}\n fill=\"currentColor\"\n onClick={props.onClick}\n />\n </button>\n );\n};\n","import { FC } from \"react\";\nimport { IconProps } from \"../utils/types\";\n\nexport const PinBtn: FC<{\n pinned: boolean;\n size?: number;\n onClick?: (pinned: boolean) => void;\n}> = (props) => {\n return (\n <button\n onClick={(e) => {\n props?.onClick?.(!props.pinned);\n }}\n >\n {props.pinned === false ? (\n <UnPinIcon\n size={props.size}\n fillOpacity={1}\n className=\"orderly-fill-primary-darken hover:orderly-fill-primary-darken/80\"\n />\n ) : (\n <PinnedIcon\n size={props.size}\n fillOpacity={1}\n className=\"orderly-fill-base-contrast-36 hover:orderly-fill-base-contrast\"\n />\n )}\n </button>\n );\n};\n\nconst PinnedIcon: FC<IconProps> = (props) => {\n const { size = 12 } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 16 16\"\n // fill=\"none\"\n fill=\"#608CFF\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M10.008 1.302a.74.74 0 0 0-.486.215c-1.033.988-1.349 1.815-.972 2.947-.88.675-1.437.841-2.536.841-1.503 0-2.484.181-3.152.848v.021a1.583 1.583 0 0 0 0 2.249l1.867 1.881-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.193 1.87 1.86a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.522.854-3.144 0-1.03.212-1.758.853-2.523 1.232.361 1.95.015 2.96-.995a.68.68 0 0 0 .188-.479c0-.234-.06-.594-.209-1.041a5.34 5.34 0 0 0-1.312-2.103A5.35 5.35 0 0 0 11.05 1.51c-.448-.149-.808-.208-1.042-.208\" />\n </svg>\n );\n};\n\nconst UnPinIcon: FC<IconProps> = (props) => {\n const { size = 12 } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 16 16\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M10.008 1.302a.74.74 0 0 0-.486.215c-1.033.988-1.349 1.815-.972 2.947-.88.675-1.437.841-2.536.841-1.503 0-2.484.181-3.152.848v.021a1.583 1.583 0 0 0 0 2.249l1.867 1.881-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.193 1.87 1.86a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.522.854-3.144 0-1.03.212-1.758.853-2.523 1.232.361 1.95.015 2.96-.995a.68.68 0 0 0 .188-.479c0-.234-.06-.594-.209-1.041a5.34 5.34 0 0 0-1.312-2.103A5.35 5.35 0 0 0 11.05 1.51c-.448-.149-.808-.208-1.042-.208m.258 1.37c.708.131 1.421.6 1.93 1.108.507.507.94 1.13 1.119 1.944-.636.61-1.026.659-1.662.324a.67.67 0 0 0-.779.116c-1.214 1.213-1.533 2.314-1.533 3.8 0 1.293-.076 1.774-.48 2.207-.113.123-.27.104-.374 0L3.799 7.486a.24.24 0 0 1-.017-.34c.239-.29.769-.514 2.226-.514 1.742.001 2.668-.447 3.812-1.52a.67.67 0 0 0 .125-.77c-.343-.685-.29-1.046.321-1.67\" />\n </svg>\n );\n};\n","import { FC, ReactNode, useMemo } from \"react\";\nimport { useMediaQuery } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Button,\n DataTable,\n Divider,\n Flex,\n ListView,\n Statistic,\n Text,\n cn,\n Column,\n CopyIcon,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { EditCode } from \"../../../components/editCodeBtn\";\nimport { PinBtn } from \"../../../components/pinButton\";\nimport { EditIcon } from \"../../../icons/editIcon\";\nimport { ReferralCodesReturns, ReferralCodeType } from \"./referralCodes.script\";\n\nexport const ReferralCodes: FC<ReferralCodesReturns> = (props) => {\n const isTablet = useMediaQuery(\"(max-width: 767px)\");\n return (\n <Flex\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-h-full oui-bg-base-9 oui-p-6 oui-tabular-nums\"\n >\n <Title {...props} />\n\n <div className=\"oui-flex oui-w-full oui-flex-col 2xl:oui-h-full\">\n <Divider />\n {isTablet ? <MobileLayout {...props} /> : <DesktopLayout {...props} />}\n </div>\n </Flex>\n );\n};\n\nconst Title: FC<ReferralCodesReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">{t(\"affiliate.referralCodes\")}</Text>\n <div className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\">\n <Text className=\"oui-text-base-contrast-54\">\n {`${t(\"affiliate.referralCodes.remaining\")}: `}\n </Text>\n <Text className=\"oui-text-primary-light\">\n {props.codes?.length || \"--\"}\n </Text>\n </div>\n </Flex>\n );\n};\n\nconst MobileLayout: FC<ReferralCodesReturns> = (props) => {\n return (\n <ListView\n dataSource={props.codes}\n className=\"oui-max-h-[240px] oui-w-full\"\n renderItem={(e, index) => {\n return (\n <Flex direction={\"column\"}>\n <MobileCell\n key={index}\n data={e}\n editRate={props.editRate}\n copyLink={props.copyLink}\n copyCode={props.copyCode}\n setPinCode={props.setPinCode}\n editCode={props.editCode}\n />\n <Divider className=\"oui-mt-3 oui-w-full\" />\n </Flex>\n );\n }}\n />\n );\n};\n\nconst MobileCellItem: FC<{\n // key: string;\n title: string;\n value: string | ReactNode;\n copyable?: boolean;\n align?: \"start\" | \"end\" | undefined;\n className?: string;\n editRate?: () => void;\n onCopy?: () => void;\n}> = (props) => {\n const { title, copyable, value, align, className, editRate, onCopy } = props;\n return (\n <Statistic\n id=\"oui-affiliate-affiliate-referralCodes\"\n className={cn(\"oui-flex-1\", className)}\n label={\n <Text className=\"oui-text-2xs oui-text-base-contrast-36\">{title}</Text>\n }\n align={align}\n children={\n <Flex direction={\"row\"} gap={1}>\n <Text.formatted\n copyable={copyable}\n onCopy={() => {\n onCopy?.();\n }}\n className=\"oui-mt-[6px] oui-text-sm oui-text-base-contrast-80\"\n >\n {value as string}\n </Text.formatted>\n {editRate && (\n <EditIcon\n className=\"oui-mt-px oui-cursor-pointer oui-fill-white/[.36] hover:oui-fill-white/80\"\n fillOpacity={1}\n fill=\"currentColor\"\n onClick={() => editRate()}\n />\n )}\n </Flex>\n }\n />\n );\n};\nconst MobileCell: FC<{\n data: ReferralCodeType;\n setPinCode: (code: string, del?: boolean) => void;\n copyLink: (code: string) => void;\n copyCode: (code: string) => void;\n editRate: (code: ReferralCodeType) => void;\n editCode: (code: ReferralCodeType) => void;\n}> = (props) => {\n const { data, setPinCode, copyLink, editRate, editCode } = props;\n const { t } = useTranslation();\n\n return (\n <Flex key={data.code} gap={3} direction={\"column\"} className=\"oui-w-full\">\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n itemAlign={\"stretch\"}\n width={\"100%\"}\n >\n <MobileCellItem\n title={t(\"affiliate.referralCode\")}\n value={data.code}\n copyable\n onCopy={() => {\n props.copyCode?.(data.code);\n }}\n editRate={() => {\n editCode(data);\n }}\n />\n <MobileCellItem\n title={t(\"affiliate.referralCodes.column.you&Referee\")}\n value={getRate(data)}\n align=\"end\"\n editRate={() => {\n editRate(data);\n }}\n />\n <MobileCellItem\n title={t(\"affiliate.referralCodes.column.referees&Traders\")}\n value={getCount(data)}\n align=\"end\"\n className={\"oui-hidden md:oui-flex\"}\n />\n </Flex>\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n itemAlign={\"stretch\"}\n width={\"100%\"}\n className=\"md:oui-hidden\"\n >\n <MobileCellItem\n title={t(\"affiliate.referees\")}\n value={getCount(data).split(\"/\")?.[0]}\n align=\"start\"\n />\n <MobileCellItem\n title={t(\"affiliate.referralCodes.column.traders\")}\n value={getCount(data).split(\"/\")?.[1]}\n align=\"end\"\n />\n </Flex>\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n itemAlign={\"stretch\"}\n width={\"100%\"}\n >\n <PinBtn\n pinned={data.isPined || false}\n onClick={(e) => {\n setPinCode(data.code, !e);\n }}\n />\n <Button\n variant=\"outlined\"\n size=\"xs\"\n className=\"oui-px-[20px]\"\n onClick={(e) => {\n copyLink(data.code);\n }}\n >\n {t(\"affiliate.referralCodes.copyLink\")}\n </Button>\n </Flex>\n </Flex>\n );\n};\n\nconst DesktopLayout: FC<ReferralCodesReturns> = (props) => {\n const { t } = useTranslation();\n\n const moreColumn = useMediaQuery(\"(min-width: 1024px)\");\n\n const columns = useMemo(() => {\n const cols: Column[] = [\n {\n title: t(\"affiliate.referralCode\"),\n dataIndex: \"code\",\n width: moreColumn ? 115 : 120,\n className: \"!oui-px-0\",\n render: (value, data) => {\n return (\n <Flex direction={\"row\"} itemAlign={\"center\"} gap={1}>\n <PinBtn\n size={12}\n pinned={data.isPined || false}\n onClick={(e) => {\n props.setPinCode(data.code, !e);\n }}\n />\n <Text.formatted\n // rule={\"\"}\n suffix={\n <>\n {data.isAutoGenerated && data.total_invites < 1 && (\n <EditCode onClick={() => props.editCode?.(data)} />\n )}\n <CopyIcon\n className=\"oui-cursor-pointer\"\n size={12}\n color=\"white\"\n onClick={() => props.copyCode?.(data.code)}\n />\n </>\n }\n copyable\n onCopy={() => {\n props.copyCode?.(data.code);\n }}\n >\n {value}\n </Text.formatted>\n </Flex>\n );\n },\n },\n {\n title: t(\"affiliate.referralCodes.column.you&Referee\"),\n dataIndex: \"dffd\",\n width: moreColumn ? 120 : 120,\n className: \"oui-pr-0\",\n render: (value, data) => {\n return (\n <Flex direction={\"row\"} itemAlign={\"center\"} gap={1}>\n {getRate(data)}\n <EditIcon\n className=\"oui-mt-[6px] oui-cursor-pointer oui-fill-white/[.36] hover:oui-fill-white/80\"\n fillOpacity={1}\n fill=\"currentColor\"\n onClick={(e) => props.editRate?.(data)}\n />\n </Flex>\n );\n },\n },\n ];\n\n if (moreColumn) {\n cols.push({\n title: t(\"affiliate.referees\"),\n dataIndex: \"referee_rebate_rate\",\n width: 65,\n className: \"oui-pr-0\",\n render: (value, data) => getCount(data).split(\"/\")[0],\n });\n cols.push({\n title: t(\"affiliate.referralCodes.column.traders\"),\n dataIndex: \"referrer_rebate_rate\",\n width: 65,\n className: \"oui-pr-0\",\n render: (value, data) => getCount(data).split(\"/\")[1],\n });\n } else {\n cols.push({\n title: t(\"affiliate.referralCodes.column.referees&Traders\"),\n dataIndex: \"total_invites/total_traded\",\n width: 120,\n fixed: \"left\",\n render: (value, data) => getCount(data),\n });\n }\n\n cols.push({\n dataIndex: \"link\",\n align: \"right\",\n width: 74,\n className: \"!oui-px-0\",\n render: (value, data) => (\n <Button\n variant=\"outlined\"\n size=\"sm\"\n className=\"oui-px-5\"\n onClick={(e) => {\n props?.copyLink?.(data.code);\n }}\n >\n {t(\"affiliate.referralCodes.copyLink\")}\n </Button>\n ),\n });\n\n return cols;\n }, [moreColumn, t]);\n\n return (\n <DataTable\n bordered\n columns={columns}\n dataSource={props.codes}\n classNames={{\n header: \"oui-px-0\",\n root: \"2xl:oui-flex-1 2xl:oui-max-h-[230px] 3xl:oui-max-h-[300px]\",\n }}\n onRow={(record) => {\n return {\n className: \"oui-h-[45px]\",\n };\n }}\n />\n );\n};\n\nconst getRate = (item: ReferralCodeType) => {\n const refereeRate = new Decimal(item.referee_rebate_rate)\n .mul(100)\n .toFixed(1, Decimal.ROUND_DOWN)\n .toString();\n const referralRate = new Decimal(item.referrer_rebate_rate)\n .mul(100)\n .toFixed(1, Decimal.ROUND_DOWN)\n .toString();\n return `${referralRate}% / ${refereeRate}%`;\n};\n\nconst getCount = (item: ReferralCodeType) => {\n return `${item.total_invites} / ${item.total_traded}`;\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useMutation } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n inputFormatter,\n modal,\n SimpleDialog,\n TextField,\n Text,\n useModal,\n Flex,\n cn,\n toast,\n} from \"@orderly.network/ui\";\nimport { ReferralCodeType } from \"./referralCodes.script\";\n\nexport const EditCodeModal = modal.create<{\n code: ReferralCodeType;\n successCallback: () => void;\n}>((props) => {\n const { t } = useTranslation();\n const { visible, onOpenChange } = useModal();\n const [newCode, setNewCode] = useState<string>(\"\");\n const [filedError, setFiledError] = useState<{\n length: boolean;\n format: boolean;\n }>({\n length: false,\n format: false,\n });\n const [editCode, { error, isMutating }] = useMutation(\n \"/v1/referral/edit_referral_code\",\n \"POST\",\n );\n useEffect(() => {\n setNewCode(props.code.code);\n }, [props.code]);\n\n useEffect(() => {\n const _code = newCode.toUpperCase();\n const _fieldError = {\n length: false,\n format: false,\n };\n if (_code.length < 4 || _code.length > 10) {\n _fieldError.length = true;\n }\n if (!/^[A-Z0-9]+$/.test(_code)) {\n _fieldError.format = true;\n }\n setFiledError(_fieldError);\n }, [newCode]);\n\n return (\n <SimpleDialog\n classNames={{\n content: \"oui-max-w-[360px]\",\n }}\n title={<div>{t(\"affiliate.referralCode.editCodeModal.title\")}</div>}\n open={visible}\n onOpenChange={onOpenChange}\n actions={{\n primary: {\n loading: isMutating,\n disabled: filedError.length || filedError.format,\n label: t(\"common.confirm\"),\n onClick: async () => {\n try {\n const res = await editCode({\n current_referral_code: props.code.code,\n new_referral_code: newCode.toUpperCase(),\n });\n if (res.success) {\n toast.success(\n t(\"affiliate.referralCode.editCodeModal.success\"),\n );\n props.successCallback();\n onOpenChange(false);\n return;\n }\n toast.error(res.message);\n } catch (e) {\n console.log(\"edit referral code error\", e);\n }\n },\n },\n }}\n >\n <div className=\"oui-mb-6 oui-text-xs oui-text-base-contrast-54\">\n {t(\"affiliate.referralCode.editCodeModal.description\")}\n </div>\n <TextField\n placeholder=\"\"\n fullWidth\n label={t(\"affiliate.referralCode.editCodeModal.label\")}\n onClean={() => {\n setNewCode(\"\");\n }}\n value={newCode}\n onChange={(e) => {\n const _value = e.target.value.toUpperCase().replace(/[^A-Z0-9]/g, \"\");\n setNewCode(_value);\n }}\n formatters={[\n inputFormatter.createRegexInputFormatter((value: string | number) => {\n return String(value).replace(/[a-z]/g, (char: string) =>\n char.toUpperCase(),\n );\n }),\n inputFormatter.createRegexInputFormatter(/[^A-Z0-9]/g),\n ]}\n classNames={{\n label: \"oui-text-base-contrast-54 oui-text-xs\",\n input:\n \"placeholder:oui-text-base-contrast-20 placeholder:oui-text-sm\",\n }}\n maxLength={10}\n minLength={4}\n autoComplete=\"off\"\n helpText=\"\"\n />\n <Flex\n direction={\"column\"}\n justify={\"center\"}\n itemAlign={\"start\"}\n gap={1}\n className=\"oui-mt-3\"\n >\n <Text\n className={cn(\n \"oui-ml-4 oui-list-item oui-list-outside oui-list-disc oui-text-xs oui-text-base-contrast-36 marker:oui-text-3xs\",\n filedError.length ? \"oui-text-danger\" : \"oui-text-success\",\n )}\n >\n {t(\"affiliate.referralCode.editCodeModal.helpText.length\")}\n </Text>\n <Text\n className={cn(\n \"oui-ml-4 oui-list-item oui-list-outside oui-list-disc oui-text-xs oui-text-base-contrast-36 marker:oui-text-3xs\",\n \"oui-text-success\",\n )}\n >\n {t(\"affiliate.referralCode.editCodeModal.helpText.format\")}\n </Text>\n </Flex>\n </SimpleDialog>\n );\n});\n","import { useEffect, useRef, useState } from \"react\";\nimport { cleanStringStyle, useMutation } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Button,\n cn,\n Dialog,\n DialogContent,\n DialogTitle,\n Divider,\n Flex,\n Input,\n modal,\n toast,\n useModal,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { ReferralCodeType } from \"./referralCodes.script\";\n\nexport const EditReferralRate = modal.create<{\n code: ReferralCodeType;\n mutate: any;\n}>((props) => {\n const { code, mutate } = props;\n const { visible, hide, resolve, reject, onOpenChange } = useModal();\n const maxRate = new Decimal(code.max_rebate_rate).mul(100);\n const [refereeRebateRate, setRefereeRebateRate] = useState(\n `${new Decimal(code.referee_rebate_rate).mul(100)}`,\n );\n const [referrerRebateRate, setReferrerRebateRate] = useState(\n `${new Decimal(code.referrer_rebate_rate).mul(100)}`,\n );\n const [showError, setShowError] = useState(false);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const { t } = useTranslation();\n\n useEffect(() => {\n if (inputRef?.current) {\n inputRef.current.focus();\n inputRef.current.setSelectionRange(\n inputRef.current.value.length,\n inputRef.current.value.length,\n );\n }\n }, [inputRef]);\n\n useEffect(() => {\n setRefereeRebateRate(`${new Decimal(code.referee_rebate_rate).mul(100)}`);\n setReferrerRebateRate(`${new Decimal(code.referrer_rebate_rate).mul(100)}`);\n }, [code]);\n\n const [editRate, { error, isMutating }] = useMutation(\n \"/v1/referral/edit_split\",\n \"POST\",\n );\n\n const onClickConfirm = async () => {\n try {\n const r1 = Number.parseFloat(refereeRebateRate);\n const r2 = Number.parseFloat(referrerRebateRate);\n\n await editRate({\n referral_code: code.code,\n referee_rebate_rate: r1 / 100,\n referrer_rebate_rate: r2 / 100,\n });\n toast.success(t(\"affiliate.referralRate.editRateModal.success\"));\n mutate();\n hide();\n } catch (e) {\n // @ts-ignore\n toast.error(e?.message || e || \"\");\n }\n };\n\n return (\n <Dialog open={visible} onOpenChange={onOpenChange}>\n <DialogContent\n className=\"oui-px-6 oui-max-w-[320px] oui-bg-base-8 oui-shadow-[0px_12px_20px_0px_rgba(0,0,0,0.25)]\"\n closable\n >\n <DialogTitle>\n <div className=\"oui-my-3\">\n {t(\"affiliate.referralRate.editRateModal.title\")}\n </div>\n <Divider />\n </DialogTitle>\n\n <div className=\"oui-mt-3 oui-h-full oui-flex oui-flex-col oui-justify-end\">\n <div className=\"oui-text-xs oui-text-base-contrast-54\">\n {t(\"affiliate.referralRate.editRateModal.description\")}\n </div>\n <div className=\"oui-text-xs oui-text-base-contrast-80 oui-mt-2 oui-flex\">\n {t(\"affiliate.referralRate.editRateModal.label\")}\n <div className=\"oui-text-warning-darken oui-pl-1\">{`${new Decimal(\n code.max_rebate_rate,\n )\n .mul(100)\n .toFixed(0, Decimal.ROUND_DOWN)}%`}</div>\n </div>\n\n <div className=\"oui-text-2xs oui-mt-6 oui-text-base-contrast-80\">\n {t(\"affiliate.referralRate.editRateModal.label.you\")}\n </div>\n <Input\n ref={inputRef}\n containerClassName=\"oui-h-[40px] oui-mt-3 oui-bg-base-700 oui-outline oui-outline-1 oui-outline-base-contrast-12 focus-within:oui-outline-primary-darken\"\n placeholder=\"Enter code\"\n type=\"text\"\n inputMode=\"decimal\"\n autoComplete=\"off\"\n value={referrerRebateRate}\n onChange={(e) => {\n const text = cleanStringStyle(e.target.value);\n const rate = Number.parseFloat(text);\n setReferrerRebateRate(text);\n if (!Number.isNaN(rate)) {\n setRefereeRebateRate(\n `${maxDecimal(new Decimal(0), maxRate.sub(rate))}`,\n );\n setShowError(maxRate.sub(rate) < new Decimal(0));\n } else {\n setRefereeRebateRate(\"\");\n setReferrerRebateRate(\"\");\n }\n }}\n suffix={\n <div className=\"oui-px-3 oui-text-base-contrast-54 oui-text-base\">\n %\n </div>\n }\n color={showError ? \"danger\" : undefined}\n />\n\n <div className=\"oui-text-2xs oui-mt-6 oui-text-base-contrast-80\">\n {t(\"affiliate.referralRate.editRateModal.label.referee\")}\n </div>\n <Input\n containerClassName=\"oui-h-[40px] oui-mt-3 oui-bg-base-700 oui-outline oui-outline-1 oui-outline-base-contrast-12 focus-within:oui-outline-primary-darken\"\n placeholder=\"Enter code\"\n type=\"text\"\n inputMode=\"decimal\"\n autoComplete=\"off\"\n autoFocus={false}\n value={refereeRebateRate}\n onChange={(e) => {\n const text = cleanStringStyle(e.target.value);\n const rate = Number.parseFloat(text);\n setRefereeRebateRate(text);\n if (!Number.isNaN(rate)) {\n setReferrerRebateRate(\n `${maxDecimal(new Decimal(0), maxRate.sub(rate))}`,\n );\n setShowError(maxRate.sub(rate) < new Decimal(0));\n } else {\n setRefereeRebateRate(\"\");\n setReferrerRebateRate(\"\");\n }\n }}\n suffix={\n <div className=\"oui-px-3 oui-text-base-contrast-54 oui-text-base\">\n %\n </div>\n }\n color={showError ? \"danger\" : undefined}\n />\n\n {showError && (\n <div className=\"oui-text-danger oui-text-xs oui-mt-8 oui-text-center oui-px-4\">\n {t(\"affiliate.referralRate.editRateModal.helpText.max\")}\n </div>\n )}\n\n <Flex width={\"100%\"} justify={\"center\"}>\n <Button\n id=\"referral_bind_referral_code_btn\"\n disabled={\n refereeRebateRate.length === 0 ||\n referrerRebateRate.length === 0 ||\n showError\n }\n loading={isMutating}\n className={cn(\n \"oui-mt-8 oui-mb-4 oui-w-[154px]\",\n showError && \"oui-mt-3\",\n )}\n onClick={(e) => {\n e.stopPropagation();\n onClickConfirm();\n }}\n >\n {t(\"common.confirm\")}\n </Button>\n </Flex>\n </div>\n </DialogContent>\n </Dialog>\n );\n});\n\nfunction maxDecimal(a: Decimal, b: Decimal) {\n return a > b ? a : b;\n}\n","import { useMemo } from \"react\";\nimport { RefferalAPI, useLocalStorage } from \"@orderly.network/hooks\";\nimport { modal } from \"@orderly.network/ui\";\nimport { useReferralContext } from \"../../../provider\";\nimport { copyText, generateReferralLink } from \"../../../utils/utils\";\nimport { EditCodeModal } from \"./editCodeModal\";\nimport { EditReferralRate } from \"./editReferralRate\";\n\ntype LegacyReferralCode = NonNullable<\n NonNullable<RefferalAPI.ReferralInfo[\"referrer_info\"]>[\"referral_codes\"]\n>[number];\n\nexport type ReferralCodeType = LegacyReferralCode & {\n isPined?: boolean;\n isAutoGenerated?: boolean;\n};\n\nexport type ReferralCodesReturns = {\n copyCode: (code: string) => void;\n copyLink: (code: string) => void;\n editRate: (code: ReferralCodeType) => void;\n editCode: (code: ReferralCodeType) => void;\n setPinCode: (code: string, del?: boolean) => void;\n codes?: ReferralCodeType[];\n};\n\nexport const useReferralCodesScript = (): ReferralCodesReturns => {\n const { referralInfo, referralLinkUrl, mutate, generateCode } =\n useReferralContext();\n\n const copyLink = (code: string) => {\n copyText(generateReferralLink(referralLinkUrl, code));\n };\n const copyCode = (code: string) => {\n copyText(code);\n };\n const editRate = (code: ReferralCodeType) => {\n modal.show(EditReferralRate, { code: { ...code }, mutate });\n };\n\n const editCode = (code: ReferralCodeType) => {\n modal.show(EditCodeModal, {\n code: { ...code },\n successCallback: () => {\n mutate();\n },\n });\n };\n\n const [pinCodes, setPinCodes] = useLocalStorage<string[]>(\n \"orderly_referral_codes\",\n [] as string[],\n );\n const setPinCode = (code: string, del?: boolean) => {\n if (del) {\n const index = pinCodes.findIndex((item: string) => item === code);\n if (index !== -1) {\n pinCodes.splice(index, 1);\n }\n } else {\n pinCodes.splice(0, 0, code);\n }\n\n if (pinCodes.length > 6) {\n pinCodes.splice(pinCodes.length - 1, 1);\n }\n\n setPinCodes([...pinCodes]);\n };\n\n const codes = useMemo((): ReferralCodeType[] | undefined => {\n if (referralInfo?.referrer_info?.referral_codes) {\n const referralCodes: ReferralCodeType[] =\n referralInfo.referrer_info.referral_codes.map((item) => {\n const code: ReferralCodeType = {\n ...item,\n };\n // todo check auto generated\n if (generateCode && generateCode.code === item.code) {\n code.isAutoGenerated = true;\n }\n return code;\n });\n\n const pinedItems: ReferralCodeType[] = [];\n const unpinedItems: ReferralCodeType[] = [...referralCodes];\n\n for (let i = 0; i < pinCodes.length; i++) {\n const code = pinCodes[i];\n const index = unpinedItems.findIndex((item) => item.code === code);\n if (index !== -1) {\n pinedItems.push({ ...unpinedItems[index], isPined: true });\n unpinedItems.splice(index, 1);\n }\n }\n\n // Add pinned items first, then unpinned items\n const allCodes: ReferralCodeType[] = [...pinedItems, ...unpinedItems];\n\n // Return undefined if no codes at all (maintains existing behavior)\n if (allCodes.length === 0) {\n return undefined;\n }\n\n return allCodes;\n }\n\n // Return undefined if no codes at all (maintains existing behavior)\n return undefined;\n }, [referralInfo?.referrer_info?.referral_codes, pinCodes, generateCode]);\n\n return {\n copyCode,\n copyLink,\n editRate,\n editCode,\n setPinCode,\n codes,\n };\n};\n","import { useReferralCodesScript } from \"./referralCodes.script\";\nimport { ReferralCodes } from \"./referralCodes.ui\";\n\nexport const ReferralCodesWidget = () => {\n const state = useReferralCodesScript();\n return <ReferralCodes {...state} />;\n};\n","import { FC, ReactNode, useMemo } from \"react\";\nimport { RefferalAPI, useMediaQuery } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n DatePicker,\n Divider,\n Flex,\n ListView,\n Statistic,\n TabPanel,\n Column,\n Tabs,\n Text,\n cn,\n} from \"@orderly.network/ui\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { DateRange } from \"../../../utils/types\";\nimport { formatYMDTime } from \"../../../utils/utils\";\nimport { CommissionAndRefereesReturns } from \"./commissionAndReferees.script\";\n\nexport const CommissionAndReferees: FC<CommissionAndRefereesReturns> = (\n props,\n) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n id=\"oui-affiliate-affiliate-commissionAndReferees\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9 oui-tabular-nums\"\n >\n <Tabs defaultValue=\"account\" className=\"oui-w-full\" variant=\"contained\">\n <TabPanel value=\"account\" title={t(\"affiliate.commission\")}>\n <CommissionList {...props} />\n </TabPanel>\n <TabPanel value=\"password\" title={t(\"affiliate.myReferees\")}>\n <RefereesList {...props} />\n </TabPanel>\n </Tabs>\n </Flex>\n );\n};\n\nconst MobileCellItem: FC<{\n title: string;\n value: string | ReactNode;\n align?: \"start\" | \"end\" | undefined;\n className?: string;\n rule?: \"address\" | \"date\";\n formatString?: string;\n prefix?: string;\n}> = (props) => {\n const { title, value, align, className, rule, formatString, prefix } = props;\n return (\n <Statistic\n className={cn(\"oui-flex-1\", className)}\n label={\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">{title}</Text>\n }\n align={align}\n children={\n <Text.formatted\n rule={rule || \"\"}\n // @ts-ignore\n formatString={formatString}\n prefix={prefix}\n className=\"oui-text-base-contrast-80 oui-text-sm oui-mt-[6px]\"\n >\n {value}\n </Text.formatted>\n }\n />\n );\n};\n\nconst CommissionList: FC<CommissionAndRefereesReturns> = (props) => {\n const { t } = useTranslation();\n const isLG = useMediaQuery(\"(max-width: 767px)\");\n\n const columns = useMemo(() => {\n const cols: Column[] = [\n {\n title: `${t(\"affiliate.commission\")} (USDC)`,\n dataIndex: \"referral_rebate\",\n render: (value) => (\n <Text>\n {commifyOptional(value, {\n fix: 6,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n })}\n </Text>\n ),\n width: 216,\n },\n {\n title: `${t(\"affiliate.referralVol\")} (USDC)`,\n dataIndex: \"volume\",\n render: (value) => (\n <Text>\n {commifyOptional(value, {\n fix: 2,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n })}\n </Text>\n ),\n width: 216,\n },\n {\n title: t(\"affiliate.commission.column.activeUsers\"),\n dataIndex: \"daily_traded_referral\",\n render: (value) => <Text>{value}</Text>,\n width: 216,\n },\n {\n title: t(\"common.date\"),\n dataIndex: \"date\",\n render: (value) => formatYMDTime(value),\n width: 216,\n },\n ];\n\n return cols;\n }, [t]);\n\n const body = useMemo(() => {\n if (isLG) {\n return (\n <ListView<\n RefferalAPI.ReferralRebateSummary,\n RefferalAPI.ReferralRebateSummary[]\n >\n className=\"oui-max-h-[200px] oui-w-full\"\n dataSource={props.commission.data}\n loadMore={props.commission.loadMore}\n isLoading={props.commission.isLoading}\n renderItem={(e) => {\n return (\n <div>\n <Flex direction={\"row\"} width={\"100%\"}>\n <MobileCellItem\n title={t(\"affiliate.commission\")}\n value={commifyOptional(e.referral_rebate, {\n fix: 6,\n fallback: \"0\",\n padEnd: true,\n })}\n prefix=\"$\"\n />\n <MobileCellItem\n title={t(\"affiliate.referralVol\")}\n value={commifyOptional(e.volume, {\n fix: 2,\n fallback: \"0\",\n padEnd: true,\n })}\n prefix=\"$\"\n />\n <MobileCellItem\n title={t(\"affiliate.commission.column.activeUsers\")}\n value={e.daily_traded_referral}\n />\n <MobileCellItem\n title={t(\"common.date\")}\n value={e.date}\n rule=\"date\"\n formatString=\"yyyy-MM-dd\"\n align=\"end\"\n />\n </Flex>\n <Divider className=\"oui-mt-3 oui-w-full\" />\n </div>\n );\n }}\n />\n );\n }\n\n return (\n <AuthGuardDataTable\n bordered\n columns={columns}\n loading={props.commission.isLoading}\n ignoreLoadingCheck={true}\n dataSource={props.commission.data}\n pagination={props.commission.pagination}\n onRow={(record) => {\n return {\n className: \"oui-h-[41px]\",\n };\n }}\n />\n );\n }, [isLG, props.commission]);\n\n return (\n <Flex\n direction={\"column\"}\n width={\"100%\"}\n justify={\"start\"}\n itemAlign={\"start\"}\n >\n <DateFiler\n value={props.commission.dateRange}\n setValue={props.commission.setDateRange}\n />\n {body}\n </Flex>\n );\n};\n\nconst RefereesList: FC<CommissionAndRefereesReturns> = (props) => {\n const { t } = useTranslation();\n\n const isLG = useMediaQuery(\"(max-width: 767px)\");\n\n const columns = useMemo(() => {\n const cols: Column[] = [\n {\n title: t(\"affiliate.referees.column.refereeAddress\"),\n dataIndex: \"user_address\",\n render: (value) => (\n <Text.formatted rule={\"address\"}>{value}</Text.formatted>\n ),\n className: \"oui-w-1/5\",\n },\n {\n title: t(\"affiliate.referralCode\"),\n dataIndex: \"referral_code\",\n // render: (value) => value,\n className: \"oui-w-1/5\",\n },\n {\n title: `${t(\"affiliate.referees.column.totalCommission\")} (USDC)`,\n dataIndex: \"referral_rebate\",\n render: (value) => (\n <Text>\n {commifyOptional(value, { fix: 6, prefix: \"$\", padEnd: true })}\n </Text>\n ),\n className: \"oui-w-1/5\",\n },\n {\n title: `${t(\"affiliate.referees.column.totalVol\")} (USDC)`,\n dataIndex: \"volume\",\n render: (value) => (\n <Text>\n {commifyOptional(value, { fix: 2, prefix: \"$\", padEnd: true })}\n </Text>\n ),\n className: \"oui-w-1/5\",\n },\n {\n title: t(\"affiliate.referees.column.invitationTime\"),\n dataIndex: \"code_binding_time\",\n render: (value) => (\n <Text.formatted\n rule={\"date\"}\n formatString=\"yyyy-MM-dd\"\n children={value}\n />\n ),\n className: \"oui-w-1/5\",\n },\n ];\n\n return cols;\n }, [t]);\n\n const body = useMemo(() => {\n if (isLG) {\n return (\n <ListView<RefferalAPI.RefereeInfoItem, RefferalAPI.RefereeInfoItem[]>\n className=\"oui-w-full oui-max-h-[200px]\"\n dataSource={props.referees.data}\n loadMore={props.referees.loadMore}\n isLoading={props.referees.isLoading}\n renderItem={(e, index) => {\n return (\n <Flex\n key={index}\n direction={\"column\"}\n gap={3}\n className=\"oui-border-b-2 oui-border-line-6 oui-pb-3\"\n >\n <Flex direction={\"row\"} width={\"100%\"}>\n <MobileCellItem\n title={t(\"affiliate.referralCode\")}\n value={e.referral_code}\n />\n <MobileCellItem\n title={`${t(\n \"affiliate.referees.column.totalCommission\",\n )} (USDC)`}\n value={commifyOptional(e.referral_rebate, {\n fix: 6,\n prefix: \"$\",\n padEnd: true,\n })}\n className=\"oui-min-w-[102px]\"\n />\n <MobileCellItem\n title={t(\"affiliate.referees.column.totalVol\")}\n value={commifyOptional(e.volume, {\n fix: 2,\n prefix: \"$\",\n padEnd: true,\n })}\n align=\"end\"\n />\n </Flex>\n <Flex direction={\"row\"} pt={3} gap={3} width={\"100%\"}>\n <MobileCellItem\n title={t(\"affiliate.referees.column.refereeAddress\")}\n value={e.user_address}\n rule=\"address\"\n />\n <MobileCellItem\n title={t(\"affiliate.referees.column.invitationTime\")}\n value={e.code_binding_time}\n align=\"end\"\n rule=\"date\"\n formatString=\"yyyy-MM-dd\"\n />\n </Flex>\n {/* <Divider /> */}\n </Flex>\n );\n }}\n />\n );\n }\n\n return (\n <AuthGuardDataTable\n bordered\n loading={props.referees.isLoading}\n ignoreLoadingCheck={true}\n columns={columns}\n dataSource={props.referees.data}\n pagination={props.referees.pagination}\n onRow={(record) => {\n return {\n className: \"oui-h-[41px]\",\n };\n }}\n />\n );\n }, [isLG, props.referees]);\n\n return (\n <Flex\n direction={\"column\"}\n width={\"100%\"}\n justify={\"start\"}\n itemAlign={\"start\"}\n >\n {/* <DateFiler\n value={props.referees.dateRange}\n setValue={props.referees.setDateRange}\n /> */}\n {body}\n </Flex>\n );\n};\n\nconst DateFiler: FC<{\n value?: DateRange;\n setValue: any;\n}> = (props) => {\n return (\n <Flex width={\"100%\"} height={49} className=\"oui-border-b oui-border-line-6\">\n <div>\n <DatePicker.range\n size=\"xs\"\n value={props.value}\n onChange={(range) => {\n props.setValue(range);\n }}\n max={90}\n disabled={{\n after: new Date(),\n }}\n />\n </div>\n </Flex>\n );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { DateRange } from \"../../../utils/types\";\nimport { format, subDays } from \"date-fns\";\nimport {\n RefferalAPI,\n useMediaQuery,\n useRefereeInfo,\n useReferralRebateSummary,\n} from \"@orderly.network/hooks\";\nimport { PaginationMeta, usePagination } from \"@orderly.network/ui\";\n\nexport type ListReturns<T> = {\n data: T;\n dateRange?: DateRange;\n setDateRange: React.Dispatch<React.SetStateAction<DateRange | undefined>>;\n isLoading?: boolean;\n loadMore?: () => void;\n pagination: PaginationMeta;\n};\n\nexport type CommissionAndRefereesReturns = {\n commission: ListReturns<RefferalAPI.ReferralRebateSummary[] | undefined>;\n referees: ListReturns<RefferalAPI.RefereeInfoItem[] | undefined>;\n};\n\nexport const useCommissionAndRefereesScript =\n (): CommissionAndRefereesReturns => {\n const commission = useCommissionDataScript();\n const referees = useRefereesDataScript();\n\n return {\n commission,\n referees,\n };\n };\n\nconst useCommissionDataScript = (): ListReturns<\n RefferalAPI.ReferralRebateSummary[] | undefined\n> => {\n const [commissionRange, setCommissionRange] = useState<DateRange | undefined>(\n {\n from: subDays(new Date(), 90),\n to: subDays(new Date(), 1),\n }\n );\n\n const isLG = useMediaQuery(\"(max-width: 767px)\");\n\n const { page, pageSize, setPage, parsePagination } = usePagination();\n\n const [commissionData, { refresh, isLoading, loadMore, meta }] =\n useReferralRebateSummary({\n startDate:\n commissionRange?.from !== undefined\n ? format(commissionRange.from, \"yyyy-MM-dd\")\n : undefined,\n endDate:\n commissionRange?.to !== undefined\n ? format(commissionRange.to, \"yyyy-MM-dd\")\n : undefined,\n size: pageSize,\n page: !isLG ? page : undefined,\n });\n\n useEffect(() => {\n refresh();\n }, [commissionRange]);\n\n // const loadMore = () => {\n // setPage(page + 1);\n // };\n\n const pagination = useMemo(\n () => parsePagination(meta),\n [parsePagination, meta]\n );\n\n useEffect(() => {\n setPage(1);\n }, [commissionRange]);\n\n return {\n data: commissionData || undefined,\n pagination,\n dateRange: commissionRange,\n setDateRange: setCommissionRange,\n isLoading,\n loadMore,\n };\n};\n\nconst useRefereesDataScript = (): ListReturns<\n RefferalAPI.RefereeInfoItem[] | undefined\n> => {\n const [commissionRange, setCommissionRange] = useState<DateRange | undefined>(\n {\n from: subDays(new Date(), 90),\n to: subDays(new Date(), 1),\n }\n );\n\n const isLG = useMediaQuery(\"(max-width: 767px)\");\n\n const { page, pageSize, setPage, parsePagination } = usePagination();\n\n const [commissionData, { refresh, isLoading, loadMore, meta }] =\n useRefereeInfo({\n startDate:\n commissionRange?.from !== undefined\n ? format(commissionRange.from, \"yyyy-MM-dd\")\n : undefined,\n endDate:\n commissionRange?.to !== undefined\n ? format(commissionRange.to, \"yyyy-MM-dd\")\n : undefined,\n size: pageSize,\n page: !isLG ? page : undefined,\n sort: \"descending_code_binding_time\",\n });\n\n useEffect(() => {\n refresh();\n }, [commissionRange]);\n\n // const loadMore = () => {\n // setPage(page + 1);\n // };\n\n const pagination = useMemo(\n () => parsePagination(meta),\n [parsePagination, meta]\n );\n\n useEffect(() => {\n setPage(1);\n }, [commissionRange]);\n\n return {\n data: commissionData || undefined,\n pagination,\n dateRange: commissionRange,\n setDateRange: setCommissionRange,\n isLoading,\n loadMore,\n };\n};\n","import { useCommissionAndRefereesScript } from \"./commissionAndReferees.script\";\nimport { CommissionAndReferees } from \"./commissionAndReferees.ui\";\n\nexport const CommissionAndRefereesWidget = () => {\n const state = useCommissionAndRefereesScript();\n return <CommissionAndReferees {...state} />;\n};\n","import { Flex, cn } from \"@orderly.network/ui\";\nimport { SummaryWidget } from \"./summary\";\nimport { ReferralLinkWidget } from \"./referralLink\";\nimport { TitleStatisticWidget } from \"./titleStatistic\";\nimport { ReferralCodesWidget } from \"./referralCodes\";\nimport { CommissionAndRefereesWidget } from \"./commissionAndReferees\";\nimport { useMediaQuery } from \"@orderly.network/hooks\";\n\nexport const AffiliatePage = () => {\n return (\n <Flex\n id=\"oui-affiliate-affiliate-page\"\n className={cn(\n \"oui-h-lvw\",\n // padding\n // \"oui-p-4 lg:oui-p-6 xl:oui-p-3\",\n \"oui-font-semibold\"\n )}\n direction={\"column\"}\n gap={4}\n >\n <Layout />\n <CommissionAndRefereesWidget />\n </Flex>\n );\n};\n\nconst Layout = () => {\n const is2XL = useMediaQuery(\"(max-width: 1279px)\");\n\n if (is2XL) {\n return <Layout1024 />;\n }\n\n return <Layout1280 />;\n};\n\nconst Layout1024 = () => {\n return (\n <>\n <div className=\"oui-flex oui-flex-col xl:oui-flex-row oui-gap-4 oui-w-full\">\n <SummaryWidget />\n <ReferralLinkWidget />\n </div>\n <TitleStatisticWidget />\n <ReferralCodesWidget />\n </>\n );\n};\n\nconst Layout1280 = () => {\n return (\n <Flex direction={\"row\"} itemAlign={\"stretch\"} gap={4}>\n <Flex direction={\"column\"} gap={4} className=\"oui-flex-1 oui-w-1/2\">\n <div className=\"oui-flex-1 oui-h-full oui-w-full\">\n <SummaryWidget />\n </div>\n <TitleStatisticWidget />\n </Flex>\n <Flex direction={\"column\"} gap={4} className=\"oui-w-1/2\">\n <ReferralLinkWidget />\n {/* <div className=\"oui-h-[360px]\"> */}\n <div className=\"oui-flex-1\">\n <ReferralCodesWidget />\n </div>\n {/* </div> */}\n </Flex>\n </Flex>\n );\n};\n","import { FC, ReactNode, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Text, cn } from \"@orderly.network/ui\";\nimport { commify } from \"@orderly.network/utils\";\nimport { useReferralContext } from \"../../../provider\";\nimport { BecomeAffiliateReturns } from \"./becomeAffiliate.script\";\n\nexport const BecomeAffiliate: FC<BecomeAffiliateReturns> = (props) => {\n const { t } = useTranslation();\n\n const { generateCode } = useReferralContext();\n\n const applyText = useMemo(() => {\n if (!generateCode) {\n return {\n title: t(\"affiliate.process.step1.title\"),\n desc: t(\"affiliate.process.step1.description\"),\n };\n }\n if (generateCode.requireVolume > 0) {\n return {\n title: t(\"affiliate.process.step1.volumeGt0.title\", {\n requireVolume: generateCode.requireVolume,\n }),\n desc: t(\"affiliate.process.step1.volumeGt0.description\", {\n volume: commify(generateCode.completedVolume ?? 0, 2),\n requireVolume: commify(generateCode.requireVolume),\n }),\n };\n }\n // require volume = 0;\n return {\n title: t(\"affiliate.process.step1.volumeEq0.title\"),\n desc: t(\"affiliate.process.step1.volumeEq0.description\"),\n };\n }, [generateCode, t]);\n\n if (typeof props.overwrite === \"function\") {\n return props.overwrite?.(props.state);\n }\n\n return (\n <Flex\n id=\"oui-affiliate-home-becomeAffiliate\"\n direction={\"column\"}\n gap={6}\n p={6}\n itemAlign={\"center\"}\n r={\"2xl\"}\n className=\"oui-bg-base-9\"\n width={\"100%\"}\n >\n <Text>{t(\"affiliate.process.title\")}</Text>\n <Flex className=\"oui-flex oui-flex-col oui-gap-3 lg:oui-w-full lg:oui-flex-row lg:oui-items-stretch\">\n <Item\n icon={<ApplyIcon />}\n title={applyText.title}\n content={applyText.desc}\n />\n <div className=\"oui-shrink lg:oui-flex lg:-oui-rotate-90 lg:oui-flex-row lg:oui-items-center lg:oui-justify-center\">\n <ArrowDownIcon />\n </div>\n <Item\n icon={<ShareIcon />}\n title={t(\"affiliate.process.step2.title\")}\n content={t(\"affiliate.process.step2.description\")}\n />\n <div className=\"oui-shrink lg:oui-flex lg:-oui-rotate-90 lg:oui-flex-row lg:oui-items-center lg:oui-justify-center\">\n <ArrowDownIcon />\n </div>\n <Item\n icon={<EarnIcon />}\n title={t(\"affiliate.process.step3.title\")}\n content={t(\"affiliate.process.step3.description\")}\n />\n </Flex>\n </Flex>\n );\n};\n\nconst Item: FC<{\n icon: ReactNode;\n title: string;\n content: string;\n}> = (props) => {\n return (\n <Flex\n className={cn(\n \"oui-flex oui-flex-row oui-gap-3\",\n \"lg:oui-flex-1 lg:oui-flex-col lg:oui-gap-[6px]\",\n )}\n width={\"100%\"}\n >\n <div className=\"oui-shrink-0\">{props.icon}</div>\n <Flex\n className={cn(\n \"oui-flex oui-flex-col oui-items-start oui-h-full oui-justify-between\",\n // lg\n \"lg:oui-items-center lg:oui-justify-start\",\n )}\n >\n <Text className=\"oui-text-sm md:oui-text-base 2xl:oui-text-lg lg:oui-text-center\">\n {props.title}\n </Text>\n <Text className=\"oui-text-2xs oui-text-base-contrast-36 lg:oui-text-center\">\n {props.content}\n </Text>\n </Flex>\n </Flex>\n );\n};\n\nconst ApplyIcon = () => {\n return (\n <svg\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"lg:oui-w-[64px] lg:oui-h-[64px] 2xl:oui-w-[80px] 2xl:oui-h-[80px]\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M24.941 5.4h-6.682a.6.6 0 0 0-.593.509l-.462 3a.6.6 0 0 0 .593.691h7.606a.6.6 0 0 0 .593-.691l-.462-3a.6.6 0 0 0-.593-.509m-6.682-1.8a2.4 2.4 0 0 0-2.372 2.035l-.462 3a2.4 2.4 0 0 0 2.372 2.765h7.606a2.4 2.4 0 0 0 2.372-2.765l-.462-3A2.4 2.4 0 0 0 24.941 3.6z\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <path\n d=\"M32.721 28.2c.924-1.6 3.233-1.6 4.157 0l7.275 12.6c.924 1.6-.231 3.6-2.079 3.6H27.525c-1.848 0-3.002-2-2.078-3.6z\"\n fill=\"#335FFC\"\n />\n <path\n d=\"M33.492 38.12H31.56c-.252 0-.426-.276-.336-.535l1.92-5.53a.4.4 0 0 1 .132-.185.34.34 0 0 1 .204-.07h3.24c.255 0 .43.284.333.544l-1.118 3.011h2.104c.31 0 .475.4.27.656l-5.158 6.453c-.251.313-.716.041-.619-.362z\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.4 16.8v2.4h2.4v-2.4zM13.2 15a.6.6 0 0 0-.6.6v4.8a.6.6 0 0 0 .6.6H18a.6.6 0 0 0 .6-.6v-4.8a.6.6 0 0 0-.6-.6z\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <path\n d=\"M20.4 16.2a.6.6 0 0 1 .6-.6h2.4a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6H21a.6.6 0 0 1-.6-.6zm0 3a.6.6 0 0 1 .6-.6h9a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6h-9a.6.6 0 0 1-.6-.6zm-7.8 5.4a.6.6 0 0 1 .6-.6H30a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6H13.2a.6.6 0 0 1-.6-.6zm0 3.6a.6.6 0 0 1 .6-.6H30a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6H13.2a.6.6 0 0 1-.6-.6zm0 3.6a.6.6 0 0 1 .6-.6h9a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6h-9a.6.6 0 0 1-.6-.6z\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15.739 6.6H10.2A2.4 2.4 0 0 0 7.8 9v30a2.4 2.4 0 0 0 2.4 2.4h13.84l1.014-1.8H10.2a.6.6 0 0 1-.6-.6V9a.6.6 0 0 1 .6-.6h5.262zm12 1.8H33a.6.6 0 0 1 .6.6v16.47a2.8 2.8 0 0 1 1.8-.205V9A2.4 2.4 0 0 0 33 6.6h-5.538z\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n </svg>\n );\n};\n\nconst ShareIcon = () => {\n return (\n <svg\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"lg:oui-w-[64px] lg:oui-h-[64px] 2xl:oui-w-[80px] 2xl:oui-h-[80px]\"\n >\n <path d=\"M24 33a9 9 0 1 1-18 0 9 9 0 0 1 18 0\" fill=\"#335FFC\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15 32.4a1.8 1.8 0 1 0 0-3.6 1.8 1.8 0 0 0 0 3.6m0 1.8a3.6 3.6 0 1 0 0-7.2 3.6 3.6 0 0 0 0 7.2m-6.578 4.942A4.8 4.8 0 0 1 13.2 34.8h3.6a4.8 4.8 0 0 1 4.778 4.342 9 9 0 0 1-1.778 1.473V39.6a3 3 0 0 0-3-3h-3.6a3 3 0 0 0-3 3v1.015a9 9 0 0 1-1.778-1.473\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.2 12a4.2 4.2 0 1 1-8.4 0 4.2 4.2 0 0 1 8.4 0m1.8 0c0 1.37-.459 2.632-1.231 3.642l2.308 2.308a7.76 7.76 0 0 1 4.023-1.7v-.764A3.602 3.602 0 0 1 24 8.4a3.6 3.6 0 0 1 .9 7.087v.764c1.48.17 2.833.754 3.942 1.633l2.326-2.326a6 6 0 1 1 1.273 1.273l-2.326 2.326a7.76 7.76 0 0 1 1.634 3.943h.764a3.602 3.602 0 0 1 7.087.9 3.6 3.6 0 0 1-7.087.9h-.764a7.76 7.76 0 0 1-1.699 4.023l2.308 2.308a6 6 0 1 1-1.25 1.295l-2.347-2.347a7.8 7.8 0 0 1-3.05 1.433 11 11 0 0 0-.377-1.76 6 6 0 1 0-7.185-7.185q-.855-.261-1.76-.379a7.8 7.8 0 0 1 1.432-3.049l-2.347-2.347A6 6 0 1 1 18 12m7.8 0a1.8 1.8 0 1 1-3.6 0 1.8 1.8 0 0 1 3.6 0M36 25.8a1.8 1.8 0 1 0 0-3.6 1.8 1.8 0 0 0 0 3.6m0-9.6a4.2 4.2 0 1 0 0-8.4 4.2 4.2 0 0 0 0 8.4M40.2 36a4.2 4.2 0 1 1-8.4 0 4.2 4.2 0 0 1 8.4 0\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n </svg>\n );\n};\n\nconst EarnIcon = () => {\n return (\n <svg\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"lg:oui-w-[64px] lg:oui-h-[64px] 2xl:oui-w-[80px] 2xl:oui-h-[80px]\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M24 24a2.4 2.4 0 1 0 0-4.8 2.4 2.4 0 0 0 0 4.8m0 1.8a4.2 4.2 0 1 0 0-8.4 4.2 4.2 0 0 0 0 8.4\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <path d=\"M45 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0\" fill=\"#335FFC\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M35.1 6.6a.9.9 0 1 1 1.8 0v.437A3 3 0 0 1 39 9.9h-1.8a1.2 1.2 0 1 0-1.2 1.2 3 3 0 0 1 .9 5.863v.437a.9.9 0 0 1-1.8 0v-.437A3 3 0 0 1 33 14.1h1.8a1.2 1.2 0 1 0 1.2-1.2 3 3 0 0 1-.9-5.863z\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M40.2 23.7a.9.9 0 0 1 1.8 0v.6q0 .045-.004.086c-.197 9.351-7.525 16.948-16.765 17.573l1.205 1.205a.9.9 0 1 1-1.272 1.272l-2.7-2.7a.9.9 0 0 1 0-1.272l2.7-2.7a.9.9 0 1 1 1.272 1.272l-1.11 1.11c8.325-.674 14.87-7.642 14.874-16.14zM21.564 4.836a.9.9 0 1 1 1.272-1.272l2.7 2.7a.9.9 0 0 1 0 1.272l-2.7 2.7a.9.9 0 1 1-1.272-1.272l1.11-1.11C14.347 8.528 7.8 15.5 7.8 24v.3a.9.9 0 1 1-1.8 0v-.6l.004-.086C6.201 14.263 13.53 6.666 22.77 6.042z\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M24 11.4q.615 0 1.213.058a11 11 0 0 0 .061 1.816Q24.647 13.2 24 13.2c-5.965 0-10.8 4.835-10.8 10.8 0 2.898 1.142 5.53 3 7.47a4.8 4.8 0 0 1 4.8-4.79h6a4.8 4.8 0 0 1 4.8 4.789c1.858-1.94 3-4.572 3-7.47q0-.647-.074-1.274a11 11 0 0 0 1.816.06q.057.6.058 1.214c0 6.959-5.641 12.6-12.6 12.6S11.4 30.959 11.4 24 17.041 11.4 24 11.4m6 21.581v-1.5a3 3 0 0 0-3-3h-6a3 3 0 0 0-3 3v1.5a10.75 10.75 0 0 0 6 1.819c2.22 0 4.284-.67 6-1.819\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n </svg>\n );\n};\n\nconst ArrowDownIcon = () => {\n return (\n <svg\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.5048 4.00806C8.8728 4.00806 9.1708 4.30626 9.1708 4.67406C9.1708 4.99259 9.1708 8.71739 9.1708 9.71072L11.1688 7.73339L12.1055 8.67005L8.98346 11.8127C8.85346 11.9434 8.6788 12.0081 8.50413 12.0081C8.33013 12.0081 8.15612 11.9427 8.02612 11.8127L4.90413 8.67005L5.8408 7.73339L7.83881 9.71072C7.83881 8.71739 7.83881 4.99259 7.83881 4.67406C7.83881 4.30626 8.1368 4.00806 8.5048 4.00806Z\"\n fill=\"#608CFF\"\n />\n </svg>\n );\n};\n","import {\n BuildNode,\n ReferralContextReturns,\n useReferralContext,\n} from \"../../../provider\";\n\nexport type BecomeAffiliateReturns = {\n state: ReferralContextReturns;\n overwrite?: BuildNode;\n};\n\nexport const useBecomeAffiliateScript = (): BecomeAffiliateReturns => {\n const state = useReferralContext();\n\n return {\n overwrite: state.overwrite?.ref?.step,\n state,\n };\n};\n","import { useBecomeAffiliateScript } from \"./becomeAffiliate.script\";\nimport { BecomeAffiliate } from \"./becomeAffiliate.ui\";\n\nexport const BecomeAffiliateWidget = () => {\n const state = useBecomeAffiliateScript();\n return <BecomeAffiliate {...state} />;\n};\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const Title: React.FC = () => {\n const { t } = useTranslation();\n return (\n <div\n id=\"oui-affiliate-home-title\"\n className=\"oui-text-center oui-text-3xl oui-font-bold md:oui-text-3xl lg:oui-text-4xl xl:oui-text-5xl\"\n >\n {t(\"affiliate.page.title\")}\n </div>\n );\n};\n","import React from \"react\";\nimport { Title } from \"./title.ui\";\n\nexport const TitleWidget: React.FC = () => {\n return <Title />;\n};\n","import { FC } from \"react\";\nimport { SubtitleReturns } from \"./subtitle.script\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const Subtitle: FC<SubtitleReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n id=\"oui-affiliate-home-subtitle\"\n direction={\"column\"}\n className=\"oui-text-sm md:oui-text-base xl:oui-text-lg oui-text-base-contrast-80 oui-text-center\"\n gap={3}\n >\n <Text>{t(\"affiliate.page.subTitle\")}</Text>\n <Flex\n direction={\"row\"}\n gap={1}\n className=\"oui-text-primary-light oui-fill-primary-light hover:oui-text-primary-darken oui-cursor-pointer oui-text-2xs md:oui-text-xs xl:oui-text-sm\"\n onClick={(e) => {\n if (props.onLearnAffiliate) {\n props.onLearnAffiliate?.();\n } else if (props.learnAffiliateUrl) {\n window.open(props.learnAffiliateUrl, \"_blank\");\n }\n }}\n >\n <Text children={t(\"affiliate.page.learnMore\")} />\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M4.008 7.995c0-.368.298-.666.666-.666H9.71L7.733 5.331l.937-.936 3.143 3.122c.13.13.195.304.195.479a.67.67 0 0 1-.195.478L8.67 11.596l-.937-.937 1.978-1.998H4.674a.666.666 0 0 1-.666-.666\" />\n </svg>\n </Flex>\n </Flex>\n );\n};\n","import { ReactNode } from \"react\";\nimport { RefferalAPI } from \"@orderly.network/hooks\";\nimport { BuildNode, useReferralContext } from \"../../../provider\";\n\nexport type SubtitleReturns = {\n onLearnAffiliate?: () => void;\n learnAffiliateUrl?: string;\n};\n\nexport const useSubtitleScript = (): SubtitleReturns => {\n const state = useReferralContext();\n\n const { onLearnAffiliate, learnAffiliateUrl } = state;\n\n return {\n onLearnAffiliate,\n learnAffiliateUrl,\n };\n};\n","import { useSubtitleScript } from \"./subtitle.script\";\nimport { Subtitle } from \"./subtitle.ui\";\n\nexport const SubtitleWidget = () => {\n const state = useSubtitleScript();\n return <Subtitle {...state} />;\n};\n","import { FC } from \"react\";\nimport { TopReturns } from \"./top.script\";\nimport { TitleWidget } from \"../title\";\nimport { SubtitleWidget } from \"../subtitle\";\nimport { Flex } from \"@orderly.network/ui\";\n\nexport const Top: FC<TopReturns> = (props) => {\n if (props.overwriteTop !== undefined) {\n return props.overwriteTop?.(props.state);\n }\n return (\n <Flex id=\"oui-affiliate-home-top\" direction=\"column\" gap={6}>\n <TitleWidget />\n <SubtitleWidget />\n </Flex>\n );\n};\n","import {\n BuildNode,\n ReferralContextReturns,\n useReferralContext,\n} from \"../../../provider\";\n\nexport type TopReturns = {\n state: ReferralContextReturns;\n overwriteTop?: BuildNode;\n};\n\nexport const useTopScript = (): TopReturns => {\n const state = useReferralContext();\n\n return {\n overwriteTop: state.overwrite?.ref?.top,\n state,\n };\n};\n","import { useTopScript } from \"./top.script\";\nimport { Top } from \"./top.ui\";\n\nexport const TopWidget = () => {\n const state = useTopScript();\n return (\n <Top {...state}/>\n );\n};\n","import { FC } from \"react\";\n\nexport const ArrowRightIcon: FC<{\n className?: string;\n}> = (props) => {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"white\"\n fillOpacity=\"0.98\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}\n >\n <path d=\"M4.00806 7.9952C4.00806 7.6272 4.30626 7.3292 4.67406 7.3292C4.99259 7.3292 8.71739 7.3292 9.71072 7.3292L7.73339 5.3312L8.67005 4.39453L11.8127 7.51654C11.9434 7.64654 12.0081 7.8212 12.0081 7.99587C12.0081 8.16987 11.9427 8.34388 11.8127 8.47388L8.67005 11.5959L7.73339 10.6592L9.71072 8.66119C8.71739 8.66119 4.99259 8.66119 4.67406 8.66119C4.30626 8.66119 4.00806 8.3632 4.00806 7.9952Z\" />\n </svg>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport {\n Button,\n cn,\n Dialog,\n DialogBody,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n Divider,\n Flex,\n inputFormatter,\n Text,\n TextField,\n} from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { ArrowRightIcon } from \"../../../icons/arrowRightIcon\";\nimport { USDCIcon } from \"../../../icons/usdcIcon\";\nimport { AsTraderReturns } from \"./asTrader.script\";\n\nexport const AsTrader: FC<AsTraderReturns> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex\n id=\"oui-affiliate-home-asTrader\"\n gradient=\"success\"\n r={\"2xl\"}\n p={6}\n gap={6}\n direction={\"column\"}\n angle={180}\n width={\"100%\"}\n justify={\"between\"}\n >\n <Flex\n height={80}\n direction={\"row\"}\n gap={3}\n itemAlign={\"start\"}\n width={\"100%\"}\n justify={\"between\"}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"between\"}\n className=\"oui-h-full\"\n >\n <Text className=\"oui-text-lg md:oui-text-xl lg:oui-text-2xl xl:oui-text-3xl\">\n {props.isTrader\n ? t(\"affiliate.trader\")\n : t(\"affiliate.asTrader.title\")}\n </Text>\n <Text\n className={cn(\n \"oui-text-xs oui-text-base-contrast-54 md:oui-text-sm 2xl:oui-text-base\",\n props.isTrader && \"oui-hidden\",\n )}\n >\n {t(\"affiliate.asTrader.description\")}\n </Text>\n </Flex>\n <div className=\"oui-shrink-0\">\n <Icon />\n </div>\n </Flex>\n <Bottom {...props} />\n </Flex>\n );\n};\n\nconst Icon = () => {\n return (\n <svg\n width=\"72\"\n height=\"72\"\n viewBox=\"0 0 90 90\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"xl:oui-size-[90px] \"\n >\n <path\n d=\"M44.996 7.324c-20.71 0-37.43 16.79-37.5 37.5-.07 20.682 16.806 37.575 37.5 37.617 20.694.04 37.537-17.082 37.5-37.617-.037-20.71-16.79-37.5-37.5-37.5m0 7.5c16.569 0 30 13.433 30 30 0 8.438-3.514 16.043-9.12 21.495-2.762-5.973-8.694-10.245-15.49-10.245h-10.78c-6.791 0-12.706 4.22-15.47 10.197-5.606-5.453-9.14-13.01-9.14-21.447 0-16.567 13.431-30 30-30m0 7.5c-8.284 0-15 6.717-15 15s6.716 15 15 15 15-6.716 15-15-6.716-15-15-15\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n <path\n d=\"M90 71.25C90 81.605 81.605 90 71.25 90S52.5 81.605 52.5 71.25 60.895 52.5 71.25 52.5 90 60.895 90 71.25\"\n fill=\"#005A4F\"\n />\n <path\n d=\"M80.62 75.007c0-.24-.08-.49-.263-.675l-3.487-3.456-1.318 1.318 1.845 1.875H63.745a.938.938 0 0 0 0 1.875h13.652l-1.845 1.875 1.318 1.318 3.487-3.456a.95.95 0 0 0 .263-.674m-.937-7.5a.94.94 0 0 0-.938-.938H65.093l1.846-1.875-1.319-1.318-3.486 3.456a.966.966 0 0 0 0 1.349l3.486 3.456 1.319-1.318-1.846-1.875h13.652c.518 0 .938-.42.938-.937\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n </svg>\n );\n};\n\nconst Bottom: FC<AsTraderReturns> = (props) => {\n const { t } = useTranslation();\n\n const content = () => {\n if (props.isTrader && !props.wrongNetwork) {\n const totalReferrerRebate =\n props.referralInfo?.referee_info?.total_referee_rebate;\n return (\n <>\n <Flex direction={\"column\"} itemAlign={\"start\"} gap={2}>\n <Text className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\">\n {t(\"affiliate.commission\")} {<Text intensity={36}>(USDC)</Text>}\n </Text>\n <Flex direction={\"row\"} gap={1}>\n <USDCIcon />\n <Text className=\"oui-text-base md:oui-text-lg lg:oui-text-xl xl:oui-text-2xl\">\n {commifyOptional(totalReferrerRebate, {\n fix: 2,\n fallback: \"0\",\n })}\n </Text>\n </Flex>\n </Flex>\n <Flex\n direction={\"row\"}\n gap={1}\n justify={\"end\"}\n itemAlign={\"center\"}\n className=\"oui-cursor-pointer\"\n onClick={props?.onEnterTraderPage}\n >\n <Text className=\"oui-text-sm md:oui-text-base xl:oui-text-lg\">\n {t(\"affiliate.enter\")}\n </Text>\n <ArrowRightIcon className=\"md:oui-size-[18px] lg:oui-size-[20px] xl:oui-size-[24px]\" />\n </Flex>\n </>\n );\n }\n\n return <EntryCode {...props} />;\n };\n\n return (\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n width={\"100%\"}\n itemAlign={\"end\"}\n >\n {content()}\n </Flex>\n );\n};\n\nconst EntryCode: FC<AsTraderReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Dialog open={props.open} onOpenChange={props.setOpen}>\n <DialogTrigger>\n <Button variant=\"contained\" color=\"light\">\n {t(\"affiliate.asTrader.button\")}\n </Button>\n </DialogTrigger>\n <DialogContent className=\"oui-w-[320px] oui-font-semibold\">\n <DialogHeader>\n <DialogTitle>{t(\"affiliate.referralCode.dialog.title\")}</DialogTitle>\n </DialogHeader>\n <Divider />\n <DialogBody>\n <Text size=\"sm\" intensity={54}>\n {t(\"affiliate.referralCode.dialog.description\")}\n </Text>\n\n <TextField\n className=\"oui-mt-4 oui-w-full\"\n placeholder={t(\"affiliate.referralCode\")}\n value={props.code}\n onChange={(e) => {\n const _value = e.target.value\n .toUpperCase()\n .replace(/[^A-Z0-9]/g, \"\");\n props.setCode(_value);\n }}\n formatters={[\n inputFormatter.createRegexInputFormatter(\n (value: string | number) => {\n return String(value).replace(/[a-z]/g, (char: string) =>\n char.toUpperCase(),\n );\n },\n ),\n inputFormatter.createRegexInputFormatter(/[^A-Z0-9]/g),\n ]}\n onClean={() => {\n props.setCode(\"\");\n }}\n label={t(\"affiliate.referralCode.label\")}\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-54\",\n }}\n helpText={\n !props.isExist && !props.isLoading && props.code.length > 0\n ? t(\"affiliate.referralCode.notExist\")\n : undefined\n }\n color={\n !props.isExist && !props.isLoading && props.code.length > 0\n ? \"danger\"\n : undefined\n }\n />\n\n <Flex direction={\"column\"} gapY={3} mt={6}>\n {props.warningMessage && (\n <Text size=\"2xs\" className=\"oui-text-warning-darken\">\n {props.warningMessage}\n </Text>\n )}\n <AuthGuard buttonProps={{ size: \"md\", fullWidth: true }}>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"md\"\n className=\"oui-px-[40px]\"\n fullWidth\n disabled={props.code.length < 4 || !props.isExist}\n onClick={(e) => {\n e.stopPropagation();\n props.onClickConfirm();\n }}\n >\n {t(\"common.confirm\")}\n </Button>\n </AuthGuard>\n </Flex>\n </DialogBody>\n </DialogContent>\n </Dialog>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport {\n useAccount,\n useCheckReferralCode,\n useMutation,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { toast, useScreen } from \"@orderly.network/ui\";\nimport { AuthStatusEnum, useAuthStatus } from \"@orderly.network/ui-connector\";\nimport { TabTypes, useReferralContext } from \"../../../provider\";\n\nexport const useAsTraderScript = () => {\n const { t } = useTranslation();\n\n const {\n isTrader,\n referralInfo,\n setShowHome,\n bindReferralCodeState,\n setTab,\n mutate,\n } = useReferralContext();\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const { state } = useAccount();\n\n const onEnterTraderPage = () => {\n setTab(TabTypes.trader);\n setShowHome(false);\n };\n\n const [code, setCode] = useState(\"\");\n const [open, setOpen] = useState(false);\n\n const {\n isExist,\n error: checkCodeError,\n isLoading,\n } = useCheckReferralCode(code);\n\n const hide = () => {\n setOpen(false);\n };\n\n const [bindCode, { error, isMutating }] = useMutation(\n \"/v1/referral/bind\",\n \"POST\",\n );\n\n const onClickConfirm = async () => {\n try {\n await bindCode({ referral_code: code });\n toast.success(t(\"affiliate.referralCode.bound\"));\n mutate();\n if (bindReferralCodeState) {\n bindReferralCodeState(true, null, hide, { tab: 1 });\n } else {\n hide();\n }\n } catch (e: any) {\n let errorText = `${e}`;\n if (\"message\" in e) {\n errorText = e.message;\n }\n\n if (\"referral code not exist\" === errorText) {\n errorText = t(\"affiliate.referralCode.notExist\");\n }\n\n if (bindReferralCodeState) {\n toast.error(errorText);\n bindReferralCodeState(false, e, hide, {});\n } else {\n toast.error(errorText);\n }\n }\n };\n\n const { isMobile } = useScreen();\n\n const authStatus = useAuthStatus();\n\n const warningMessage = useMemo(() => {\n const message: { [key in AuthStatusEnum]?: string } = {\n [AuthStatusEnum.ConnectWallet]: t(\"affiliate.connectWallet.tooltip\"),\n [AuthStatusEnum.CreateAccount]: t(\"affiliate.createAccount.tooltip\"),\n [AuthStatusEnum.WrongNetwork]: t(\"connector.wrongNetwork.tooltip\"),\n };\n return message[authStatus];\n }, [t, authStatus]);\n\n return {\n isTrader,\n isLoading,\n referralInfo,\n onEnterTraderPage,\n code,\n setCode,\n open,\n setOpen,\n onClickConfirm,\n isExist,\n wrongNetwork,\n isMobile,\n warningMessage,\n };\n};\n\nexport type AsTraderReturns = ReturnType<typeof useAsTraderScript>;\n","import { useAsTraderScript } from \"./asTrader.script\";\nimport { AsTrader } from \"./asTrader.ui\";\n\nexport const AsTraderWidget = () => {\n const state = useAsTraderScript();\n return <AsTrader {...state} />;\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Button, cn, Flex, Text } from \"@orderly.network/ui\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { ArrowRightIcon } from \"../../../icons/arrowRightIcon\";\nimport { USDCIcon } from \"../../../icons/usdcIcon\";\nimport { AsAnAffiliateReturns } from \"./asAnAffiliate.script\";\n\nexport const AsAnAffiliate: FC<AsAnAffiliateReturns> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex\n id=\"oui-affiliate-home-asAnAffiliate\"\n gradient=\"primary\"\n r={\"2xl\"}\n p={6}\n gap={6}\n direction={\"column\"}\n angle={180}\n width={\"100%\"}\n justify={\"between\"}\n >\n <Flex\n direction={\"row\"}\n gap={3}\n itemAlign={\"start\"}\n width={\"100%\"}\n justify={\"between\"}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"between\"}\n className=\"oui-h-full\"\n >\n <Text className=\"oui-text-lg md:oui-text-xl lg:oui-text-2xl xl:oui-text-3xl\">\n {props.isAffiliate\n ? t(\"common.affiliate\")\n : t(\"affiliate.asAffiliate.title\")}\n </Text>\n <Text\n className={cn(\n \"oui-text-xs oui-text-base-contrast-54 md:oui-text-sm 2xl:oui-text-base\",\n props.isAffiliate && \"oui-hidden\",\n )}\n >\n {t(\"affiliate.asAffiliate.description\")}\n </Text>\n </Flex>\n <div className=\"oui-shrink-0\">\n <Icon />\n </div>\n </Flex>\n <Bottom {...props} />\n </Flex>\n );\n};\n\nconst Icon = () => {\n return (\n <svg\n width=\"72\"\n height=\"72\"\n viewBox=\"0 0 72 72\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"xl:oui-size-[90px]\"\n >\n <path\n d=\"M35.997 5.86c-16.569 0-29.944 13.43-30 30-.056 16.545 13.445 30.06 30 30.093s30.03-13.665 30-30.093c-.03-16.57-13.432-30-30-30m0 6c13.255 0 24 10.746 24 24 0 6.75-2.812 12.834-7.297 17.196-2.209-4.78-6.955-8.196-12.39-8.196h-8.626c-5.432 0-10.164 3.375-12.375 8.157-4.485-4.362-7.312-10.407-7.312-17.157 0-13.254 10.745-24 24-24m0 6c-6.628 0-12 5.373-12 12s5.372 12 12 12c6.627 0 12-5.373 12-12s-5.373-12-12-12\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n <path\n d=\"M72 57c0 8.284-6.716 15-15 15s-15-6.716-15-15 6.716-15 15-15 15 6.716 15 15\"\n fill=\"#1828C3\"\n />\n <path\n d=\"M53.624 51.45a4.125 4.125 0 0 0-4.125 4.125c0 2.388 1.36 4.641 3.61 6.703a21 21 0 0 0 2.414 1.875c.287.194.556.37.797.516.147.089.243.154.304.187a.79.79 0 0 0 .75 0c.061-.033.158-.098.305-.187.24-.147.51-.322.797-.516a21 21 0 0 0 2.414-1.875c2.25-2.062 3.61-4.315 3.61-6.703a4.125 4.125 0 0 0-4.126-4.125c-1.294 0-2.557.705-3.351 1.734-.775-1.047-2.034-1.734-3.399-1.734\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n </svg>\n );\n};\n\nconst Bottom: FC<AsAnAffiliateReturns> = (props) => {\n const { t } = useTranslation();\n\n const content = () => {\n if (props.isAffiliate && !props.wrongNetwork) {\n const totalReferrerRebate =\n props.referralInfo?.referrer_info?.total_referrer_rebate;\n return (\n <>\n <Flex direction={\"column\"} itemAlign={\"start\"} gap={2}>\n <Text className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\">\n {t(\"affiliate.commission\")} {<Text intensity={36}>(USDC)</Text>}\n </Text>\n <Flex direction={\"row\"} gap={1}>\n <USDCIcon />\n <Text className=\"oui-text-base md:oui-text-lg lg:oui-text-xl xl:oui-text-2xl\">\n {commifyOptional(totalReferrerRebate, {\n fix: 2,\n fallback: \"0\",\n })}\n </Text>\n </Flex>\n </Flex>\n\n <Flex\n direction={\"row\"}\n gap={1}\n justify={\"end\"}\n itemAlign={\"center\"}\n className=\"oui-cursor-pointer\"\n onClick={props.onEnterAffiliatePage}\n >\n <Text className=\"oui-text-sm md:oui-text-base xl:oui-text-lg\">\n {t(\"affiliate.enter\")}\n </Text>\n <ArrowRightIcon className=\"md:oui-size-[18px] lg:oui-size-[20px] xl:oui-size-[24px]\" />\n </Flex>\n </>\n );\n }\n\n return (\n <>\n <Button\n variant=\"contained\"\n color=\"light\"\n onClick={props.becomeAnAffiliate}\n >\n {t(\"affiliate.asAffiliate.button\")}\n </Button>\n <Flex\n direction={\"column\"}\n justify={\"between\"}\n className=\"oui-h-full\"\n itemAlign={\"end\"}\n >\n <Text className=\"oui-text-base md:oui-text-lg lg:oui-text-xl 2xl:oui-text-2xl\">\n {t(\"affiliate.upTo\")}\n </Text>\n <Text className=\"oui-text-2xs oui-text-base-contrast-54 md:oui-text-xs 2xl:oui-text-sm\">\n {t(\"affiliate.commission\")}\n </Text>\n </Flex>\n </>\n );\n };\n\n return (\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n width={\"100%\"}\n itemAlign={\"end\"}\n >\n {content()}\n </Flex>\n );\n};\n","import { useAppContext } from \"@orderly.network/react-app\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { TabTypes, useReferralContext } from \"../../../provider\";\n\nexport type AsAnAffiliateReturns = ReturnType<typeof useAsAnAffiliateScript>;\n\nexport const useAsAnAffiliateScript = () => {\n const {\n isAffiliate,\n isLoading,\n referralInfo,\n becomeAnAffiliateUrl,\n setShowHome,\n setTab,\n } = useReferralContext();\n\n const { wrongNetwork } = useAppContext();\n\n const becomeAnAffiliate = () => {\n window.open(becomeAnAffiliateUrl, \"_blank\");\n };\n\n const onEnterAffiliatePage = () => {\n setTab(TabTypes.affiliate);\n setShowHome(false);\n };\n\n const { isMobile } = useScreen();\n\n return {\n isAffiliate,\n isLoading,\n referralInfo,\n onEnterAffiliatePage,\n becomeAnAffiliate,\n wrongNetwork,\n isMobile,\n };\n};\n","import React from \"react\";\nimport { useAsAnAffiliateScript } from \"./asAnAffiliate.script\";\nimport { AsAnAffiliate } from \"./asAnAffiliate.ui\";\n\nexport const AsAnAffiliateWidget: React.FC = () => {\n const state = useAsAnAffiliateScript();\n return <AsAnAffiliate {...state} />;\n};\n","import { FC } from \"react\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { AsTraderWidget } from \"../asATrader\";\nimport { AsAnAffiliateWidget } from \"../asAnAffilate\";\nimport { CardReturns } from \"./card.script\";\n\nexport const Card: FC<CardReturns> = (props) => {\n if (typeof props.overwrite === \"function\") {\n return props.overwrite?.(props.state);\n }\n return (\n <Flex\n id=\"oui-affiliate-home-card\"\n className=\"oui-flex oui-w-full oui-flex-col oui-items-stretch oui-gap-6 xl:oui-flex-row xl:oui-gap-[36px]\"\n >\n <AsAnAffiliateWidget />\n <AsTraderWidget />\n </Flex>\n );\n};\n","import {\n BuildNode,\n ReferralContextReturns,\n useReferralContext,\n} from \"../../../provider\";\n\nexport type CardReturns = {\n state: ReferralContextReturns;\n overwrite?: BuildNode;\n};\n\nexport const useCardScript = (): CardReturns => {\n const state = useReferralContext();\n\n return {\n overwrite: state.overwrite?.ref?.card,\n state,\n };\n};\n","import { useCardScript } from \"./card.script\";\nimport { Card } from \"./card.ui\";\n\nexport const CardWidget = () => {\n const state = useCardScript();\n return <Card {...state} />;\n};\n","import { Flex, Box, cn } from \"@orderly.network/ui\";\nimport { BecomeAffiliateWidget } from \"./becomeAffiliate\";\nimport { TopWidget } from \"./top\";\nimport { CardWidget } from \"./card\";\n\nexport const HomePage = () => {\n return (\n <Flex\n id=\"oui-affiliate-home-page\"\n className={cn(\n \"oui-h-lvw \",\n // padding\n // \"oui-p-4 lg:oui-p-6 xl:oui-p-3\",\n \"oui-font-semibold\"\n )}\n direction={\"column\"}\n gap={4}\n >\n <TopWidget />\n <CardWidget />\n <BecomeAffiliateWidget />\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Button, Flex, Select, Text } from \"@orderly.network/ui\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { USDCIcon } from \"../../../icons/usdcIcon\";\nimport { SummaryReturns } from \"./summary.script\";\n\nexport const Summary: FC<SummaryReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n id=\"oui-affiliate-trader-summary\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n height={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9 xl:oui-flex-1\"\n >\n <Title {...props} />\n <Rebate className=\"md:oui-hidden\" {...props} />\n <Flex direction={\"column\"} gap={3} width={\"100%\"} className=\"md:oui-mt-3\">\n <SummaryFilter {...props} />\n <CommissionData {...props} />\n </Flex>\n <Row title={`${t(\"affiliate.trader.tradingVol\")} (USDC)`} {...props} />\n </Flex>\n );\n};\n\nconst Title: FC<SummaryReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"row\"} width={\"100%\"} gap={3}>\n <Flex direction={\"row\"} gap={3} className=\"oui-flex-1\">\n <Text className=\"oui-text-lg\">\n {t(\"affiliate.trader.yourReferrer\")}\n </Text>\n <Button\n color=\"secondary\"\n size=\"sm\"\n className=\"oui-text-primary-light oui-text-2xs md:oui-text-xs 2xl:oui-text-sm oui-bg-base-6\"\n >\n {props.code}\n </Button>\n </Flex>\n <Rebate\n className=\"oui-hidden md:oui-flex md:oui-flex-shrink md:oui-w-fit\"\n {...props}\n />\n </Flex>\n );\n};\n\nconst Rebate: FC<SummaryReturns & { className?: string }> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"row\"} width={\"100%\"} gap={2} className={props.className}>\n <Text\n intensity={54}\n className=\"oui-text-sm md:oui-text-base 2xl:oui-text-lg\"\n >\n {`${t(\"affiliate.trader.rebate\")}:`}\n </Text>\n <Text.gradient\n color=\"brand\"\n className=\"oui-text-lg md:oui-text-xl 2xl:oui-text-2xl\"\n >\n {props.rebateText}\n </Text.gradient>\n </Flex>\n );\n};\n\nconst SummaryFilter: FC<SummaryReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"row\"} width={\"100%\"} justify={\"between\"} gap={3}>\n <Text className=\"oui-text-sm\">{t(\"affiliate.summary\")}</Text>\n <div>\n <Select.options\n size={\"xs\"}\n value={props.period}\n onValueChange={props.onPeriodChange}\n options={props.periodTypes}\n />\n </div>\n </Flex>\n );\n};\n\nconst CommissionData: FC<SummaryReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n gradient=\"success\"\n angle={180}\n r=\"xl\"\n py={4}\n px={6}\n width={\"100%\"}\n direction={\"column\"}\n gap={3}\n >\n <Text intensity={54} className=\"oui-text-base 2xl:oui-text-lg\">\n {`${t(\"affiliate.trader.rebates\")} (USDC)`}\n </Text>\n <Flex\n direction={\"row\"}\n gap={3}\n className=\"oui-text-xl md:oui-text-2xl xl:oui-text-3xl\"\n >\n <USDCIcon className=\"md:oui-w-[24px] md:oui-h-[24px] lg:oui-w-[28px] lg:oui-h-[28px] \" />\n <Text>{commifyOptional(props.rebates, { fix: 2, fallback: \"0\" })}</Text>\n </Flex>\n </Flex>\n );\n};\n\nconst Row: FC<\n SummaryReturns & {\n title: string;\n }\n> = (props) => {\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text\n intensity={54}\n className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\"\n >\n {props.title}\n </Text>\n <Text className=\"oui-text-xs md:oui-text-sm xl:oui-text-base\">\n {commifyOptional(props.vol, { fix: 2, fallback: \"0\" })}\n </Text>\n </Flex>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useReferralContext } from \"../../../provider\";\nimport { SummaryFilter } from \"../../../utils/types\";\n\nexport type SummaryReturns = {\n period: string;\n periodTypes: { label: string; value: string }[];\n onPeriodChange: (item: string) => void;\n rebates: number;\n vol?: number;\n code?: string;\n rebateText: string;\n};\n\nexport const useSummaryScript = (): SummaryReturns => {\n const { t } = useTranslation();\n const [period, setPeriod] = useState<SummaryFilter>(\"All\");\n\n const periodTypes: {\n label: SummaryFilter;\n value: SummaryFilter;\n }[] = [\n { label: t(\"common.all\"), value: \"All\" },\n { label: t(\"common.select.1d\"), value: \"1D\" },\n { label: t(\"common.select.7d\"), value: \"7D\" },\n { label: t(\"common.select.30d\"), value: \"30D\" },\n ];\n\n const { referralInfo, userVolume } = useReferralContext();\n\n const rebates = useMemo(() => {\n if (!referralInfo) return 0;\n //\n switch (period) {\n case \"All\":\n return referralInfo.referee_info.total_referee_rebate;\n case \"1D\":\n return referralInfo.referee_info[\"1d_referee_rebate\"];\n case \"7D\":\n return referralInfo.referee_info[\"7d_referee_rebate\"];\n case \"30D\":\n return referralInfo.referee_info[\"30d_referee_rebate\"];\n }\n }, [referralInfo, period]);\n\n const vol = useMemo(() => {\n if (!userVolume) return undefined;\n switch (period) {\n case \"All\":\n return userVolume.all_volume;\n case \"1D\":\n return userVolume[\"1d_volume\"];\n case \"7D\":\n return userVolume[\"7d_volume\"];\n case \"30D\":\n return userVolume[\"30d_volume\"];\n }\n }, [userVolume, period]);\n\n const code = referralInfo?.referee_info?.referer_code;\n const rebate = referralInfo?.referee_info?.referee_rebate_rate;\n\n const rebateText = useMemo(() => {\n if (!!rebate) {\n return (\n new Decimal(rebate)\n .mul(100)\n .toDecimalPlaces(2, Decimal.ROUND_DOWN)\n .toString() + \"%\"\n );\n }\n return \"-\";\n }, [rebate]);\n\n const onPeriodChange = (item: string) => {\n setPeriod(item as SummaryFilter);\n };\n return {\n period,\n periodTypes,\n onPeriodChange,\n rebates,\n vol,\n rebateText,\n code,\n };\n};\n","import { useSummaryScript } from \"./summary.script\";\nimport { Summary } from \"./summary.ui\";\n\nexport const SummaryWidget = () => {\n const state = useSummaryScript();\n return <Summary {...state} />;\n};\n","import { FC } from \"react\";\nimport { Flex, Select, Text } from \"@orderly.network/ui\";\nimport { VolBarChart } from \"@orderly.network/chart\";\nimport { TitleStatisticReturns } from \"./titleStatistic.script\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nexport const TitleStatistic: FC<TitleStatisticReturns> = (props) => {\n return (\n <Flex\n id=\"oui-affiliate-trader-titleStatistic\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9 xl:oui-flex-1\"\n >\n <Title {...props} />\n <Flex className=\"oui-min-h-[170px] oui-h-full oui-w-full oui-flex oui-flex-row oui-items-stretch\">\n <VolBarChart\n data={props.dataSource}\n colors={{ fill: \"rgba(0, 180, 158, 1)\" }}\n className=\"oui-w-full oui-flex-1\"\n tooltip={{\n rm: Decimal.ROUND_DOWN,\n dp: props.volType === \"volume\" ? 2 : 6,\n }}\n />\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<TitleStatisticReturns> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">{t(\"affiliate.statistics\")}</Text>\n <Flex direction={\"row\"} gap={2} className={\"oui-min-w-14\"}>\n <Select.options\n size={\"xs\"}\n value={props.period}\n onValueChange={props.onPeriodChange}\n options={props.periodTypes}\n />\n <Select.options\n size={\"xs\"}\n value={props.volType}\n onValueChange={props.onVolTypeChange}\n options={props.volTypes}\n />\n </Flex>\n </Flex>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { format, subDays } from \"date-fns\";\nimport { VolChartDataItem } from \"@orderly.network/chart\";\nimport { useRefereeRebateSummary } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useReferralContext } from \"../../../provider\";\nimport { fillData } from \"../../../utils/chartUtils\";\nimport { BarDayFilter } from \"../../../utils/types\";\n\nexport type TitleStatisticReturns = {\n period: string;\n periodTypes: { label: string; value: string }[];\n onPeriodChange: (item: string) => void;\n volType: string;\n volTypes: { label: string; value: string }[];\n onVolTypeChange: (item: string) => void;\n dataSource: VolChartDataItem[];\n};\n\nexport const useTitleStatisticScript = (): TitleStatisticReturns => {\n const { t } = useTranslation();\n const [period, setPeriod] = useState<BarDayFilter>(\"7\");\n\n const periodTypes = [\n { label: t(\"common.select.7d\"), value: \"7\" },\n { label: t(\"common.select.30d\"), value: \"30\" },\n { label: t(\"common.select.90d\"), value: \"90\" },\n ];\n\n const onPeriodChange = (item: string) => {\n setPeriod(item as BarDayFilter);\n };\n\n const [volType, setVolType] = useState(\"rebate\");\n const volTypes = [\n { label: t(\"affiliate.trader.rebate\"), value: \"rebate\" },\n { label: t(\"common.volume\"), value: \"volume\" },\n ];\n\n const onVolTypeChange = (item: string) => {\n setVolType(item);\n };\n\n const dateRange = useMemo((): {\n startDate?: Date;\n endDate?: Date;\n } => {\n if (period === \"7\") {\n return {\n startDate: subDays(new Date(), 7),\n endDate: subDays(new Date(), 1),\n };\n } else if (period === \"30\") {\n return {\n startDate: subDays(new Date(), 30),\n endDate: subDays(new Date(), 1),\n };\n } else if (period === \"90\") {\n return {\n startDate: subDays(new Date(), 90),\n endDate: subDays(new Date(), 1),\n };\n } else {\n return {\n startDate: subDays(new Date(), 7),\n endDate: subDays(new Date(), 1),\n };\n }\n }, [period]);\n\n const { data: distributionData, mutate } = useRefereeRebateSummary(dateRange);\n const { dailyVolume, chartConfig } = useReferralContext();\n\n const dataSource = useMemo(() => {\n if (volType === \"rebate\") {\n const newData = distributionData || [];\n return newData\n .map((e) => ({\n date: e.date,\n volume: e.referee_rebate,\n }))\n .reverse();\n } else if (volType === \"volume\") {\n return (\n dailyVolume\n ?.filter((e) => {\n return (\n e.date > format(subDays(Date(), Number(period) + 1), \"yyyy-MM-dd\")\n );\n })\n .map((e) => ({\n date: e.date,\n volume: e.perp_volume,\n })) || []\n );\n } else {\n return [];\n }\n }, [distributionData, dailyVolume, volType]);\n\n return {\n period,\n periodTypes,\n onPeriodChange,\n volType,\n volTypes,\n onVolTypeChange,\n dataSource: fillData(Number(period), dataSource),\n };\n};\n","import { useTitleStatisticScript } from \"./titleStatistic.script\";\nimport { TitleStatistic } from \"./titleStatistic.ui\";\n\nexport const TitleStatisticWidget = () => {\n const state = useTitleStatisticScript();\n return <TitleStatistic {...state} />;\n};\n","import { FC } from \"react\";\nimport {\n DatePicker,\n Divider,\n Flex,\n ListView,\n Statistic,\n Column,\n Text,\n} from \"@orderly.network/ui\";\nimport { RebatesItem, RebatesReturns } from \"./rebates.script\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { useMediaQuery } from \"@orderly.network/hooks\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const Rebates: FC<RebatesReturns> = (props) => {\n return (\n <Flex\n id=\"oui-affiliate-trader-rebates\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9 oui-tabular-nums\"\n >\n <Title {...props} />\n <Flex\n width={\"100%\"}\n className=\"oui-border-y-2 oui-border-line-6\"\n height={49}\n direction={\"row\"}\n itemAlign={\"center\"}\n >\n <div>\n <DatePicker.range\n size=\"xs\"\n value={props.dateRange}\n onChange={(range) => {\n props.setDateRange(range);\n }}\n max={90}\n disabled={{\n after: new Date(),\n }}\n />\n </div>\n </Flex>\n <List {...props} />\n </Flex>\n );\n};\n\nconst Title: FC<RebatesReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">{t(\"affiliate.trader.myRebates\")}</Text>\n <Text intensity={36} className=\"oui-text-2xs\">\n {props.displayDate}\n </Text>\n </Flex>\n );\n};\n\nconst List: FC<RebatesReturns> = (props) => {\n const { t } = useTranslation();\n\n const layout767 = useMediaQuery(\"(max-width: 767px)\");\n\n const columns: Column<RebatesItem>[] = [\n {\n title: `${t(\"affiliate.trader.rebates\")} (USDC)`,\n dataIndex: \"referee_rebate\",\n render: (value) => (\n <Text>\n {commifyOptional(value, {\n fix: 6,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n })}\n </Text>\n ),\n width: 127,\n },\n {\n title: `${t(\"affiliate.trader.tradingVol\")} (USDC)`,\n dataIndex: \"vol\",\n render: (value) =>\n commifyOptional(value, {\n fix: 2,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n }),\n width: 127,\n },\n {\n title: t(\"common.date\"),\n dataIndex: \"date\",\n render: (value) => (\n <Text.formatted formatString=\"yyyy-MM-dd\">{value}</Text.formatted>\n ),\n width: 127,\n },\n ];\n\n if (layout767) {\n return (\n <ListView<RebatesItem, RebatesItem[]>\n dataSource={props.dataSource}\n className=\"oui-h-[197px] oui-w-full\"\n renderItem={(item, index) => {\n return <Cell item={item} />;\n }}\n />\n );\n }\n\n return (\n <AuthGuardDataTable\n bordered\n loading={props.isLoading}\n columns={columns}\n dataSource={props.dataSource}\n ignoreLoadingCheck={true}\n onRow={(record) => {\n return {\n className: \"oui-h-[41px]\",\n };\n }}\n pagination={props.pagination}\n manualPagination={false}\n />\n );\n};\n\nconst Cell = (props: { item: RebatesItem }) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"column\"} width={\"100%\"}>\n <Flex width={\"100%\"} gap={1}>\n <Statistic\n label={`${t(\"affiliate.trader.rebates\")} (USDC)`}\n className=\"oui-text-xs oui-text-base-contrast-54 oui-flex-1 oui-min-w-[105px]\"\n >\n <Text size=\"sm\" intensity={80}>\n {commifyOptional(props.item.referee_rebate, {\n fix: 6,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n })}\n </Text>\n </Statistic>\n <Statistic\n label={`${t(\"affiliate.trader.tradingVol\")} (USDC)`}\n className=\"oui-text-xs oui-text-base-contrast-54 oui-flex-shrink\"\n >\n <Text size=\"sm\" intensity={80}>\n {commifyOptional(props.item.vol, {\n fix: 2,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n })}\n </Text>\n </Statistic>\n <Statistic\n label={t(\"common.date\")}\n className=\"oui-text-xs oui-text-base-contrast-54 oui-flex-1\"\n align=\"end\"\n >\n <Text.formatted size=\"sm\" intensity={80} formatString=\"yyyy-MM-dd\">\n {props.item.date}\n </Text.formatted>\n </Statistic>\n </Flex>\n <Divider className=\"oui-w-full oui-mt-3\" />\n </Flex>\n );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { DateRange } from \"../../../utils/types\";\nimport {\n useRefereeRebateSummary,\n RefferalAPI,\n useDaily,\n} from \"@orderly.network/hooks\";\nimport { compareDate, formatDateTimeToUTC } from \"../../../utils/utils\";\nimport { subDays, toDate } from \"date-fns\";\nimport { usePagination } from \"@orderly.network/ui\";\n\nexport type RebatesItem = RefferalAPI.RefereeRebateSummary & {\n vol?: number;\n};\n\nexport const useRebatesScript = () => {\n const [dateRange, setDateRange] = useState<DateRange | undefined>({\n from: subDays(new Date(), 90),\n to: subDays(new Date(), 1),\n });\n\n const {\n data: distributionData,\n mutate,\n isLoading,\n } = useRefereeRebateSummary({\n startDate: dateRange?.from,\n endDate: dateRange?.to,\n });\n // const { dailyVolume } = useReferralContext();\n\n const { data: dailyVolume, mutate: dailyVolumeMutate } = useDaily({\n startDate: dateRange?.to,\n endDate: dateRange?.from,\n });\n\n const dataSource = useMemo((): RebatesItem[] => {\n if (typeof distributionData === \"undefined\") return [];\n\n return (\n distributionData\n // .filter((item: any) => item.status === \"COMPLETED\" && item.type === \"REFEREE_REBATE\")\n .map((item) => {\n const createdTime = item.date;\n\n const volume = dailyVolume?.filter((item) => {\n return compareDate(toDate(createdTime), toDate(item.date));\n })?.[0];\n if (volume) {\n return { ...item, vol: volume.perp_volume };\n }\n\n return item;\n })\n );\n }, [distributionData, dailyVolume]);\n\n let displayDate = undefined;\n if ((dataSource?.length || 0) > 0) {\n displayDate = formatDateTimeToUTC(dataSource?.[0].date);\n }\n\n const { pagination, setPage } = usePagination();\n\n useEffect(() => {\n setPage(1);\n }, [dateRange]);\n\n return {\n dateRange,\n setDateRange,\n displayDate,\n dataSource,\n // meta,\n // onPageChange,\n // onPageSizeChange,\n pagination,\n isLoading,\n };\n};\n\nexport type RebatesReturns = ReturnType<typeof useRebatesScript>;\n","import { useRebatesScript } from \"./rebates.script\";\nimport { Rebates } from \"./rebates.ui\";\n\nexport const RebatesWidget = () => {\n const state = useRebatesScript();\n return <Rebates {...state} />;\n};\n","import { Flex, Box, cn } from \"@orderly.network/ui\";\nimport { SummaryWidget } from \"./summary\";\nimport { TitleStatisticWidget } from \"./titleStatistic\";\nimport { RebatesWidget } from \"./rebates\";\nexport const TraderPage = () => {\n return (\n <Flex\n id=\"oui-affiliate-trader-page\"\n className={cn(\n \"oui-h-lvw oui-w-full\",\n // padding\n // \"oui-p-4 lg:oui-p-6 xl:oui-p-3\",\n \"oui-font-semibold\"\n )}\n direction={\"column\"}\n gap={4}\n >\n <Flex\n width={\"100%\"}\n gap={4}\n className=\"oui-flex oui-flex-col xl:oui-flex-row xl:oui-items-stretch\"\n >\n <SummaryWidget />\n <TitleStatisticWidget />\n </Flex>\n <RebatesWidget />\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Button,\n cn,\n Flex,\n TabsBase,\n TabsContent,\n TabsList,\n TabsTrigger,\n Text,\n} from \"@orderly.network/ui\";\nimport { AffiliateIcon } from \"../../../icons/affiliateIcon\";\nimport { TraderIcon } from \"../../../icons/traderIcon\";\nimport { TabTypes } from \"../../../provider\";\nimport { AffiliatePage } from \"../../affiliate\";\nimport { HomePage } from \"../../home\";\nimport { TraderPage } from \"../../trader\";\nimport { TabReturns } from \"./tab.script\";\n\nexport const Tab: FC<\n TabReturns & {\n classNames?: {\n loadding?: string;\n home?: string;\n dashboard?: string;\n };\n }\n> = (props) => {\n const { t } = useTranslation();\n const extendNode = () => {\n if (props.isAffiliate && !props.isTrader) {\n return (\n <Button\n variant=\"contained\"\n color=\"success\"\n size=\"sm\"\n className=\"oui-px-2 oui-flex oui-gap-1\"\n style={{\n position: \"absolute\",\n top: \"50%\",\n right: \"24px\",\n transform: \"translateY(-50%)\",\n }}\n onClick={(e) => {\n props.anATrader();\n }}\n >\n <TraderIcon />\n <Text>{t(\"affiliate.asTrader.title\")}</Text>\n </Button>\n );\n }\n if (!props.isAffiliate && props.isTrader) {\n return (\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"sm\"\n className=\"oui-px-2 oui-flex oui-gap-1\"\n style={{\n position: \"absolute\",\n top: \"50%\",\n right: \"24px\",\n transform: \"translateY(-50%)\",\n }}\n onClick={(e) => {\n props.anAnAffiliate();\n }}\n >\n <AffiliateIcon />\n <Text>{t(\"affiliate.asAffiliate.title\")}</Text>\n </Button>\n );\n }\n\n return undefined;\n };\n\n if (props.isLoading) {\n return (\n <div className={cn(\"oui-max-w-[960px]\", props.classNames?.loadding)}>\n {props.splashPage?.() || <HomePage />}\n </div>\n );\n }\n\n if ((!props.isAffiliate && !props.isTrader) || props.showHome) {\n return (\n <div className={cn(\"oui-max-w-[960px]\", props?.classNames?.home)}>\n <HomePage />\n </div>\n );\n }\n\n return (\n <TabsBase\n id=\"oui-affiliate-dashboard-tab\"\n value={props.tab}\n onValueChange={(e) => {\n props.setTab(e as TabTypes);\n }}\n className={cn(\"oui-w-full\", props.classNames?.dashboard)}\n >\n <TabsList\n className={cn(\n \"oui-px-6 oui-flex oui-flex-row oui-justify-start oui-h-[44px] oui-relative oui-items-end\",\n \"oui-text-base md:oui-text-lg\",\n \"oui-rounded-xl oui-bg-base-9\",\n \"oui-border oui-border-line-6\",\n props.isAffiliate && props.isTrader && \"oui-justify-center\",\n )}\n >\n {props.isAffiliate && (\n <TabsTrigger\n id=\"oui-affiliate-dashboard-tab-affiliate\"\n value={TabTypes.affiliate}\n >\n <Flex direction={\"row\"} gap={1} mb={2}>\n <AffiliateIcon\n fillOpacity={1}\n fill=\"currentColor\"\n className={\n props.tab === TabTypes.affiliate\n ? \"oui-fill-white/[.98]\"\n : \"oui-fill-white/[.36]\"\n }\n />\n <Text>{t(\"common.affiliate\")}</Text>\n </Flex>\n </TabsTrigger>\n )}\n {props.isTrader && (\n <TabsTrigger\n id=\"oui-affiliate-dashboard-tab-trader\"\n value={TabTypes.trader}\n >\n <Flex direction={\"row\"} gap={1} mb={2}>\n <TraderIcon\n fillOpacity={1}\n fill=\"currentColor\"\n className={\n props.tab === TabTypes.trader\n ? \"oui-fill-white/[.98]\"\n : \"oui-fill-white/[.36]\"\n }\n />\n <Text>{t(\"affiliate.trader\")}</Text>\n </Flex>\n </TabsTrigger>\n )}\n {extendNode()}\n </TabsList>\n {props.isAffiliate && (\n <TabsContent value={TabTypes.affiliate} className=\"oui-mt-4\">\n <AffiliatePage />\n </TabsContent>\n )}\n {props.isTrader && (\n <TabsContent value={TabTypes.trader} className=\"oui-mt-4\">\n <TraderPage />\n </TabsContent>\n )}\n </TabsBase>\n );\n};\n","import { ReactNode, useEffect, useMemo } from \"react\";\nimport { TabTypes, useReferralContext } from \"../../../provider\";\n\nexport type TabReturns = {\n tab: string;\n setTab: React.Dispatch<React.SetStateAction<TabTypes>>;\n isAffiliate: boolean;\n isTrader: boolean;\n isLoading: boolean;\n anAnAffiliate: () => void;\n anATrader: () => void;\n splashPage?: () => ReactNode | undefined;\n showHome: boolean;\n setShowHome: (value: boolean) => void;\n};\n\nexport const useTabScript = (): TabReturns => {\n const {\n isAffiliate,\n isTrader,\n isLoading,\n splashPage,\n showHome,\n setShowHome,\n tab,\n setTab,\n } = useReferralContext();\n\n const tableValue = useMemo((): TabTypes => {\n if (isAffiliate && isTrader) {\n return tab;\n } else if (isAffiliate && !isTrader) {\n return TabTypes.affiliate;\n } else if (!isAffiliate && isTrader) {\n return TabTypes.trader;\n } else {\n return TabTypes.affiliate;\n }\n }, [tab, isAffiliate, isTrader]);\n\n useEffect(() => {\n const searchParams = new URLSearchParams(window.location.search);\n const tab = searchParams.get(\"tab\");\n if (tab) {\n setTab(tab as TabTypes);\n }\n }, [window.location.search]);\n\n const anAnAffiliate = () => {\n // if (becomeAnAffiliateUrl !== undefined) {\n // window.open(becomeAnAffiliateUrl, \"_blank\");\n // } else if (onBecomeAnAffiliate !== undefined) {\n // onBecomeAnAffiliate?.();\n // }\n setShowHome(true);\n };\n\n const anATrader = () => {\n setShowHome(true);\n // showReferralPage?.();\n };\n\n return {\n setTab,\n tab: tableValue,\n isAffiliate,\n isTrader,\n isLoading,\n anAnAffiliate,\n anATrader,\n splashPage,\n showHome,\n setShowHome,\n // tab: TabTypes.affiliate,\n // isAffiliate: false,\n // isTrader: false,\n // isLoading: false,\n };\n};\n","import { useTabScript } from \"./tab.script\";\nimport { Tab } from \"./tab.ui\";\n\nexport const TabWidget = (props: {\n classNames?: {\n loadding?: string;\n home?: string;\n dashboard?: string;\n };\n}) => {\n const state = useTabScript();\n return <Tab classNames={props.classNames} {...state} />;\n};\n","import { useEffect, useState } from \"react\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { cn, Flex, Spinner } from \"@orderly.network/ui\";\nimport { useReferralContext } from \"../../provider\";\nimport { LandingPage, MultiLevelAffiliatePage } from \"../multiLevel\";\nimport { TabWidget } from \"./tab\";\n\nexport const DashboardPage = (props: {\n classNames?: {\n root?: string;\n loadding?: string;\n home?: string;\n dashboard?: string;\n };\n}) => {\n const { root, ...rest } = props.classNames || {};\n\n const { state } = useAccount();\n\n const { wrongNetwork, disabledConnect, initialized } = useAppContext();\n\n const { isMultiLevelEnabled, multiLevelRebateInfo, isAffiliate, isLoading } =\n useReferralContext();\n\n const loadingView = (\n <Flex justify={\"center\"} itemAlign={\"center\"} height={\"100vh\"}>\n <Spinner />\n </Flex>\n );\n\n const [delay, setDelay] = useState(!initialized);\n\n useEffect(() => {\n const timer = setTimeout(() => setDelay(false), 500);\n return () => clearTimeout(timer);\n }, []);\n\n // we don't know wallet not connect => connect status, so manually delay to hide loading\n if (state.validating || delay) {\n return loadingView;\n }\n\n if (\n wrongNetwork ||\n disabledConnect ||\n (state.status < AccountStatusEnum.EnableTrading &&\n state.status !== AccountStatusEnum.EnableTradingWithoutConnected)\n ) {\n return <LandingPage />;\n }\n\n if (isLoading) {\n return loadingView;\n }\n\n if (isMultiLevelEnabled) {\n /** If the user has a legacy referral code ( is an affiliate), show the multi-level affiliate page */\n if (multiLevelRebateInfo?.referral_code || isAffiliate) {\n return <MultiLevelAffiliatePage />;\n }\n\n /** If the user does not have a legacy or multi-level referral code, show the landing page */\n return <LandingPage />;\n }\n\n return (\n <div\n id=\"oui-affiliate-dashboard-page\"\n className={cn(\"oui-w-full oui-tracking-tight\", root)}\n >\n <TabWidget classNames={rest} />\n </div>\n );\n};\n","import React, { PropsWithChildren } from \"react\";\nimport { Box } from \"@orderly.network/ui\";\nimport { Scaffold, SideBar, SideBarProps } from \"@orderly.network/ui-scaffold\";\n\nexport type AffiliateLayoutProps = {} & SideBarProps;\n\nexport const AffiliateLayout: React.FC<\n PropsWithChildren<AffiliateLayoutProps>\n> = (props) => {\n const { ...rest } = props;\n return (\n <Scaffold leftSidebar={<LeftSidebar {...rest} />}>\n <Box mx={3} my={6}>\n {props.children}\n </Box>\n </Scaffold>\n );\n};\n\nconst LeftSidebar: React.FC<SideBarProps> = (props) => {\n return (\n <Box p={4} m={3} border borderColor={8} r={\"xl\"}>\n <SideBar {...props} />\n </Box>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport type { SideBarProps } from \"@orderly.network/ui-scaffold\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const useLayoutBuilder = (): SideBarProps => {\n const [current, setCurrent] = useState(\"/\");\n // const [sideOpen, setSideOpen] = useState(true);\n const { t } = useTranslation();\n\n const items = useMemo(() => {\n return [\n {\n name: t(\"common.trading\"),\n href: \"/\",\n icon: (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.883 1.5c-.166.01-.393.076-.515.173a2 2 0 0 0-.18.173L.918 6.553a.86.86 0 0 0-.168.475c0 .339.232.543.232.543l7.374 8.633c.005.006.269.301.644.296s.64-.29.644-.296l7.402-8.663s.204-.269.204-.513-.196-.517-.196-.517L13.82 1.848c-.023-.032-.076-.021-.103-.049-.033-.038-.037-.091-.077-.124-.123-.097-.267-.106-.413-.123-.04-.005-.063-.049-.103-.049h-.078zm1.745 1.582h4.744L9 5.795zm-1.675.542 2.294 2.615H3.122zm8.094 0 1.831 2.615h-4.125zM3.328 7.818h4.847v5.672zm6.497 0h4.847c-1.151 1.345-3.422 4.007-4.847 5.672z\"\n fill=\"url(#a)\"\n />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"17.25\"\n y1=\"9\"\n x2=\".75\"\n y2=\"9\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop\n offset=\"1\"\n stopColor=\"rgb(var(--oui-gradient-brand-start))\"\n />\n </linearGradient>\n </defs>\n </svg>\n ),\n },\n {\n name: t(\"common.affiliate\"),\n href: \"/affiliate\",\n icon: (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.625 4.95c0-.746.604-1.35 1.35-1.35h4.05c.746 0 1.35.604 1.35 1.35v4.62L9 12.195 5.625 9.57zm8.624 3.163-.524.407v-.96l.074.05c.193.128.346.302.45.502m-4.42 5.148L14.4 9.705v3.345a1.35 1.35 0 0 1-1.35 1.35h-8.1a1.35 1.35 0 0 1-1.35-1.35V9.705l4.571 3.556c.488.379 1.17.379 1.658 0M4.275 8.52l-.524-.407c.104-.2.257-.374.45-.503l.074-.049zm0-2.581V4.95a2.7 2.7 0 0 1 2.7-2.7h4.05a2.7 2.7 0 0 1 2.7 2.7v.989l.823.548a2.7 2.7 0 0 1 1.202 2.247v4.316a2.7 2.7 0 0 1-2.7 2.7h-8.1a2.7 2.7 0 0 1-2.7-2.7V8.734a2.7 2.7 0 0 1 1.202-2.247zM9 6.089l.111-.118.005-.005a1.08 1.08 0 0 1 1.58.004 1.223 1.223 0 0 1 0 1.668l-1.515 1.62-.004.004c-.1.102-.26.1-.358-.004l-1.516-1.62a1.223 1.223 0 0 1 0-1.668l.004-.004a1.08 1.08 0 0 1 1.58.004z\"\n fill=\"#fff\"\n fillOpacity=\".54\"\n />\n </svg>\n ),\n },\n ];\n }, [t]);\n\n return {\n items,\n current,\n // open: sideOpen,\n // onOpenChange(open) {\n // setSideOpen(open);\n // },\n onItemSelect: (item) => {\n // @ts-ignore\n setCurrent(item.href);\n },\n };\n};\n","import { PropsWithChildren } from \"react\";\nimport { AffiliateLayout } from \"./layout.ui\";\nimport { useLayoutBuilder } from \"./layout.script\";\n\nexport const AffiliateLayoutWidget = (props: PropsWithChildren) => {\n const state = useLayoutBuilder();\n return <AffiliateLayout {...state} children={props.children} />;\n};\n"]}
1
+ {"version":3,"sources":["../src/pages/dashboard/index.tsx","../src/provider/context.ts","../src/hooks/useReferralApi.ts","../src/hooks/useMultiLevelReferralData.ts","../src/provider/provider.tsx","../src/pages/multiLevel/landing/components/faq.tsx","../src/hooks/useReferralCode.ts","../src/pages/multiLevel/affiliate/referralCodeForm/referralCodeForm.script.ts","../src/icons/giftIcon.tsx","../src/pages/multiLevel/affiliate/referralCodeForm/referralCodeForm.ui.tsx","../src/pages/multiLevel/affiliate/referralCodeForm/referralCodeForm.widget.tsx","../src/pages/multiLevel/affiliate/referralCodeForm/modal.ts","../src/pages/multiLevel/components/tradingVolumeProgress.tsx","../src/pages/multiLevel/landing/components/hero.tsx","../src/pages/multiLevel/landing/components/stepCard.tsx","../src/pages/multiLevel/landing/components/howItWorks.tsx","../src/pages/multiLevel/landing/page.tsx","../src/pages/multiLevel/affiliate/commissionChart/commissionChart.ui.tsx","../src/utils/chartUtils.ts","../src/pages/multiLevel/affiliate/commissionChart/commissionChart.script.tsx","../src/pages/multiLevel/affiliate/commissionChart/commissionChart.widget.tsx","../src/pages/multiLevel/affiliate/multiLevelReferral/multiLevelReferral.ui.tsx","../src/pages/multiLevel/affiliate/multiLevelReferral/multiLevelReferral.script.tsx","../src/pages/multiLevel/affiliate/multiLevelReferral/multiLevelReferral.widget.tsx","../src/pages/multiLevel/affiliate/referralInfo/referralInfo.ui.tsx","../src/utils/utils.ts","../src/pages/multiLevel/affiliate/referralInfo/referralInfo.script.tsx","../src/pages/multiLevel/affiliate/referralInfo/referralInfo.widget.tsx","../src/pages/multiLevel/affiliate/referrerTable/referrerTable.script.tsx","../src/hooks/useReferralHistory.ts","../src/pages/multiLevel/affiliate/referrerTable/commissionTable/commissionTable.script.tsx","../src/pages/multiLevel/affiliate/referrerTable/base/cells.tsx","../src/pages/multiLevel/affiliate/referrerTable/commissionTable/commissionTable.ui.tsx","../src/pages/multiLevel/affiliate/referrerTable/commissionTable/commissionTable.widget.tsx","../src/hooks/useMultiLevelReferees.ts","../src/pages/multiLevel/affiliate/referrerTable/refereesTable/refereesTable.script.tsx","../src/pages/multiLevel/affiliate/referrerTable/refereesTable/refereesTable.ui.tsx","../src/pages/multiLevel/affiliate/referrerTable/refereesTable/refereesTable.widget.tsx","../src/hooks/useMultiLevelReferralCodes.ts","../src/pages/multiLevel/affiliate/referrerTable/referralCodesTable/referralCodesTable.script.ts","../src/pages/multiLevel/affiliate/referrerTable/referralCodesTable/referralCodesTable.ui.tsx","../src/pages/multiLevel/affiliate/referrerTable/referralCodesTable/referralCodesTable.widget.tsx","../src/pages/multiLevel/affiliate/referrerTable/referrerTable.ui.tsx","../src/pages/multiLevel/affiliate/referrerTable/referrerTable.widget.tsx","../src/pages/multiLevel/affiliate/summary/summary.ui.tsx","../src/pages/multiLevel/affiliate/summary/summary.script.tsx","../src/pages/multiLevel/affiliate/summary/summary.widget.tsx","../src/pages/multiLevel/affiliate/page.tsx","../src/icons/affiliateIcon.tsx","../src/icons/traderIcon.tsx","../src/icons/usdcIcon.tsx","../src/pages/affiliate/summary/summary.ui.tsx","../src/pages/affiliate/summary/summary.script.tsx","../src/pages/affiliate/summary/summary.widget.tsx","../src/components/autoHideText.tsx","../src/pages/affiliate/referralLink/referralLink.ui.tsx","../src/pages/affiliate/referralLink/referralLink.script.tsx","../src/pages/affiliate/referralLink/referralLink.widget.tsx","../src/pages/affiliate/titleStatistic/titleStatistic.ui.tsx","../src/pages/affiliate/titleStatistic/titleStatistic.script.tsx","../src/pages/affiliate/titleStatistic/titleStatistic.widget.tsx","../src/icons/editIcon.tsx","../src/components/editCodeBtn.tsx","../src/components/pinButton.tsx","../src/pages/affiliate/referralCodes/referralCodes.ui.tsx","../src/pages/affiliate/referralCodes/editCodeModal.tsx","../src/pages/affiliate/referralCodes/editReferralRate.tsx","../src/pages/affiliate/referralCodes/referralCodes.script.tsx","../src/pages/affiliate/referralCodes/referralCodes.widget.tsx","../src/pages/affiliate/commissionAndReferees/commissionAndReferees.ui.tsx","../src/pages/affiliate/commissionAndReferees/commissionAndReferees.script.tsx","../src/pages/affiliate/commissionAndReferees/commissionAndReferees.widget.tsx","../src/pages/affiliate/page.tsx","../src/pages/home/becomeAffiliate/becomeAffiliate.ui.tsx","../src/pages/home/becomeAffiliate/becomeAffiliate.script.tsx","../src/pages/home/becomeAffiliate/becomeAffiliate.widget.tsx","../src/pages/home/title/title.ui.tsx","../src/pages/home/title/title.widget.tsx","../src/pages/home/subtitle/subtitle.ui.tsx","../src/pages/home/subtitle/subtitle.script.tsx","../src/pages/home/subtitle/subtitle.widget.tsx","../src/pages/home/top/top.ui.tsx","../src/pages/home/top/top.script.tsx","../src/pages/home/top/top.widget.tsx","../src/icons/arrowRightIcon.tsx","../src/pages/home/asATrader/asTrader.ui.tsx","../src/pages/home/asATrader/asTrader.script.tsx","../src/pages/home/asATrader/asTrader.widget.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.ui.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.script.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.widget.tsx","../src/pages/home/card/card.ui.tsx","../src/pages/home/card/card.script.tsx","../src/pages/home/card/card.widget.tsx","../src/pages/home/page.tsx","../src/pages/trader/summary/summary.ui.tsx","../src/pages/trader/summary/summary.script.tsx","../src/pages/trader/summary/summary.widget.tsx","../src/pages/trader/titleStatistic/titleStatistic.ui.tsx","../src/pages/trader/titleStatistic/titleStatistic.script.tsx","../src/pages/trader/titleStatistic/titleStatistic.widget.tsx","../src/pages/trader/rebates/rebates.ui.tsx","../src/pages/trader/rebates/rebates.script.tsx","../src/pages/trader/rebates/rebates.widget.tsx","../src/pages/trader/page.tsx","../src/pages/dashboard/tab/tab.ui.tsx","../src/pages/dashboard/tab/tab.script.tsx","../src/pages/dashboard/tab/tab.widget.tsx","../src/pages/dashboard/page.tsx","../src/layout/layout.ui.tsx","../src/layout/layout.script.tsx","../src/layout/layout.widget.tsx"],"names":["TabTypes","usePrivateQuery","data","useMemo","useState","jsx","Fragment","useTranslation","Decimal","Text","jsxs","Flex","Box","useRef","Button","useAccount","useAppContext","AccountStatusEnum","cn","format","subDays","modal","Trans","toast","sort","useScreen","useCallback","formatAddress","Grid","commifyOptional","Divider","usePagination","ListView","AuthGuardDataTable","Select","Summary","useSummaryScript","SummaryWidget","text","useEffect","Title","Tooltip","code","VolBarChart","useReferralRebateSummary","MobileCell","CopyIcon","useMutation","TextField","inputFormatter","useModal","Input","useLocalStorage","Tabs","TabPanel","MobileCellItem","Statistic","useMediaQuery","DatePicker","useRefereeInfo","Subtitle","Dialog","DialogContent","DialogTitle","AuthGuard","Icon","Bottom","CommissionData","Row","TitleStatistic","useTitleStatisticScript","TitleStatisticWidget","useRefereeRebateSummary","useDaily","item","toDate","tab"],"mappings":"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","file":"index.mjs","sourcesContent":["export { DashboardPage } from \"./page\";\nexport { HomePage} from \"../home\";\nexport { AffiliatePage } from \"../affiliate\";\nexport { TraderPage } from \"../trader\";","import { ReactNode, createContext, useContext } from \"react\";\nimport { RefferalAPI as API } from \"@orderly.network/hooks\";\nimport { MultiLevelReferralData } from \"../hooks/useMultiLevelReferralData\";\n\nexport enum TabTypes {\n affiliate = \"affiliate\",\n trader = \"trader\",\n}\n\nexport type UserVolumeType = {\n \"1d_volume\"?: number;\n \"7d_volume\"?: number;\n \"30d_volume\"?: number;\n all_volume?: number;\n};\n\n// export type OverwiteCard = {\n// ref?: BuildNode,\n// refClassName?: string,\n// refIcon?: ReactNode,\n\n// trader?: BuildNode,\n// traderClassName?: string,\n// traderIcon?: ReactNode,\n// }\n\nexport type BuildNode = (state: ReferralContextReturns) => ReactNode;\n\nexport type Overwrite = {\n shortBrokerName?: string;\n brokerName?: string;\n ref?: {\n top?: BuildNode;\n card?: BuildNode;\n step?: BuildNode;\n };\n};\n\nexport type ChartConfig = {\n // affiliate: {\n // bar?: BarStyle,\n // yAxis?: YAxis,\n // xAxis?: XAxis,\n // },\n // trader: {\n // bar?: BarStyle,\n // yAxis?: YAxis,\n // xAxis?: XAxis,\n // }\n affiliate: {\n bar?: any;\n yAxis?: any;\n xAxis?: any;\n };\n trader: {\n bar?: any;\n yAxis?: any;\n xAxis?: any;\n };\n};\n\nexport type ReferralContextProps = {\n //** click become an affiliate, If this method is implemented, the `becomeAnAffiliateUrl` will not work */\n onBecomeAnAffiliate?: () => void;\n //** set become an affiliate url, default is `https://orderly.network/` */\n becomeAnAffiliateUrl?: string;\n //** bind refferal code callback */\n bindReferralCodeState?: (\n success: boolean,\n error: any,\n hide: any,\n queryParams: any,\n ) => void;\n //** click learn affilate, if this method is implemented, the `learnAffilateUrl` will not work */\n onLearnAffiliate?: () => void;\n //** set learn affiliate url, default is `https://orderly.network/` */\n learnAffiliateUrl?: string;\n //** default is `https://orderly.network/` */\n referralLinkUrl: string;\n //** referral index page */\n showReferralPage?: () => void;\n // onEnterTraderPage?: (params?: any) => void,\n // onEnterAffiliatePage?: (params?: any) => void,\n //** tab + tab content */\n showDashboard?: () => void;\n //** col chart config */\n chartConfig?: ChartConfig;\n //** overwrite refferal */\n overwrite?: Overwrite;\n //** build a splash page, if not impletement, will be dispaly referral page */\n splashPage?: () => ReactNode;\n};\n\nexport type ReferralContextReturns = {\n referralInfo?: API.ReferralInfo;\n isAffiliate: boolean;\n isTrader: boolean;\n mutate: any;\n userVolume?: UserVolumeType;\n dailyVolume?: API.DayliVolume[];\n isLoading: boolean;\n showHome: boolean;\n setShowHome: (value: boolean) => void;\n tab: TabTypes;\n setTab: React.Dispatch<React.SetStateAction<TabTypes>>;\n wrongNetwork: boolean;\n disabledConnect: boolean;\n generateCode: API.AutoGenerateCode | undefined;\n} & ReferralContextProps &\n MultiLevelReferralData;\n\nexport const ReferralContext = createContext<ReferralContextReturns>(\n {} as ReferralContextReturns,\n);\n\nexport const useReferralContext = () => {\n return useContext(ReferralContext);\n};\n","import { usePrivateQuery } from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport { StatisticsTimeRange } from \"../types\";\n\n/** Get Volume Prerequisite */\nexport const useVolumePrerequisite = () => {\n return usePrivateQuery<API.Referral.VolumePrerequisite>(\n \"/v1/referral/multi_level/volume_prerequisite\",\n {\n revalidateOnFocus: false,\n shouldRetryOnError: false,\n },\n );\n};\n\n/** Get Max Rebate Rate */\nexport const useMaxRebateRate = () => {\n return usePrivateQuery<API.Referral.MaxRebateRate>(\n \"/v1/referral/multi_level/max_rebate_rate\",\n {\n revalidateOnFocus: false,\n shouldRetryOnError: false,\n },\n );\n};\n\n/** Generate Referral Code */\nexport const useMultiLevelRebateInfo = () => {\n return usePrivateQuery<API.Referral.MultiLevelRebateInfo>(\n \"/v1/referral/multi_level/rebate_info\",\n {\n revalidateOnFocus: false,\n shouldRetryOnError: false,\n },\n );\n};\n\n/** Get Multi-Level Statistics */\nexport const useMultiLevelStatistics = (time_range: StatisticsTimeRange) => {\n return usePrivateQuery<API.Referral.MultiLevelStatistics>(\n `/v1/referral/multi_level/statistics?time_range=${time_range}`,\n {\n revalidateOnFocus: false,\n shouldRetryOnError: false,\n },\n );\n};\n","import { useMemo } from \"react\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport {\n useMaxRebateRate,\n useMultiLevelRebateInfo,\n useVolumePrerequisite,\n} from \"./useReferralApi\";\n\nexport const useMultiLevelReferralData = () => {\n const { data: volumePrerequisite, isLoading: volumePrerequisiteLoading } =\n useVolumePrerequisite();\n\n const { data: maxRebateRateRes, isLoading: maxRebateRateLoading } =\n useMaxRebateRate();\n\n const {\n data: multiLevelRebateInfoRes,\n mutate: multiLevelRebateInfoMutate,\n isLoading: multiLevelRebateInfoLoading,\n } = useMultiLevelRebateInfo();\n\n const isMultiLevelReferralUnlocked =\n volumePrerequisite &&\n volumePrerequisite.current_volume >= volumePrerequisite.required_volume;\n\n // if maxRebateRateRes is undefined, it means the multi-level referral is not enabled\n const isMultiLevelEnabled = !!maxRebateRateRes;\n const maxRebateRate = maxRebateRateRes?.max_rebate_rate;\n\n const multiLevelRebateInfo = useMemo(() => {\n if (!multiLevelRebateInfoRes) return;\n\n const {\n default_referee_rebate_rate: referee_rebate_rate,\n max_rebate_rate,\n } = multiLevelRebateInfoRes;\n\n const referrer_rebate_rate = new Decimal(max_rebate_rate || 0)\n .sub(referee_rebate_rate || 0)\n .toNumber();\n\n return {\n ...multiLevelRebateInfoRes,\n referee_rebate_rate,\n referrer_rebate_rate,\n };\n }, [multiLevelRebateInfoRes, maxRebateRate]);\n\n const isLoading =\n volumePrerequisiteLoading ||\n maxRebateRateLoading ||\n multiLevelRebateInfoLoading;\n\n return {\n volumePrerequisite,\n maxRebateRate,\n multiLevelRebateInfo,\n isMultiLevelEnabled,\n isMultiLevelReferralUnlocked,\n multiLevelRebateInfoMutate,\n isLoading,\n };\n};\n\nexport type MultiLevelReferralData = ReturnType<\n typeof useMultiLevelReferralData\n>;\n","import {\n FC,\n PropsWithChildren,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { format, subDays } from \"date-fns\";\nimport {\n RefferalAPI as API,\n usePrivateQuery,\n useDaily,\n useAccount,\n useMemoizedFn,\n noCacheConfig,\n} from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useMultiLevelReferralData } from \"../hooks/useMultiLevelReferralData\";\nimport {\n ReferralContext,\n ReferralContextProps,\n ReferralContextReturns,\n TabTypes,\n UserVolumeType,\n} from \"./context\";\n\nexport const ReferralProvider: FC<PropsWithChildren<ReferralContextProps>> = (\n props,\n) => {\n const {\n becomeAnAffiliateUrl = \"https://orderly.network/\",\n learnAffiliateUrl = \"https://orderly.network/\",\n referralLinkUrl,\n chartConfig,\n overwrite,\n children,\n splashPage,\n onBecomeAnAffiliate,\n bindReferralCodeState,\n onLearnAffiliate,\n showReferralPage,\n } = props;\n\n const { state } = useAccount();\n\n const {\n data,\n mutate: referralInfoMutate,\n isLoading,\n } = usePrivateQuery<API.ReferralInfo>(\"/v1/referral/info\", {\n revalidateOnFocus: false,\n errorRetryCount: 3,\n ...noCacheConfig,\n });\n\n const { data: generateCode, mutate: generateCodeMutate } =\n usePrivateQuery<API.AutoGenerateCode>(\n \"/v1/referral/auto_referral/progress\",\n {\n revalidateOnFocus: false,\n errorRetryCount: 0,\n formatter: (data) => {\n return {\n code: data.auto_referral_code,\n requireVolume: data.required_volume,\n completedVolume: data.completed_volume,\n };\n },\n },\n );\n\n const {\n volumePrerequisite,\n multiLevelRebateInfo,\n isMultiLevelEnabled,\n isMultiLevelReferralUnlocked,\n multiLevelRebateInfoMutate,\n maxRebateRate,\n isLoading: isMultiLevelLoading,\n } = useMultiLevelReferralData();\n\n const [showHome, setShowHome] = useState(isLoading);\n\n useEffect(() => {\n setShowHome(true);\n }, [isLoading]);\n\n const { data: dailyVolume, mutate: dailyVolumeMutate } = useDaily({\n startDate: subDays(new Date(), 1),\n endDate: subDays(new Date(), 90),\n });\n\n const { data: volumeStatistics, mutate: volumeStatisticsMutate } =\n usePrivateQuery<API.UserVolStats>(\"/v1/volume/user/stats\", {\n revalidateOnFocus: false,\n });\n\n const isAffiliate = useMemo(() => {\n return (data?.referrer_info?.referral_codes?.length || 0) > 0;\n }, [data?.referrer_info]);\n\n const isTrader = useMemo(() => {\n return (data?.referee_info?.referer_code?.length || 0) > 0;\n }, [data?.referee_info]);\n\n const userVolume = useMemo<UserVolumeType>(() => {\n const volume: UserVolumeType = {};\n if (dailyVolume && dailyVolume.length > 0) {\n const now = format(new Date(), \"yyyy-MM-dd\");\n const index = dailyVolume.findIndex((item) => item.date === now);\n let oneDayVolume = 0;\n if (index !== -1) {\n oneDayVolume = dailyVolume[index].perp_volume;\n }\n volume[\"1d_volume\"] = oneDayVolume;\n }\n\n if (volumeStatistics) {\n volume[\"7d_volume\"] = volumeStatistics.perp_volume_last_7_days;\n volume[\"30d_volume\"] = volumeStatistics.perp_volume_last_30_days;\n volume[\"all_volume\"] = volumeStatistics.perp_volume_ltd;\n }\n return volume;\n }, [dailyVolume, volumeStatistics]);\n\n useEffect(() => {\n if (isAffiliate || isTrader) {\n setShowHome(false);\n }\n }, [isAffiliate, isTrader]);\n\n const memoMutate = useMemoizedFn(() => {\n volumeStatisticsMutate();\n dailyVolumeMutate();\n referralInfoMutate();\n generateCodeMutate();\n });\n\n useEffect(() => {\n const searchParams = new URLSearchParams(window.location.search);\n const refCode = searchParams.get(\"ref\");\n if (refCode) {\n localStorage.setItem(\"referral_code\", refCode);\n }\n }, []);\n\n const [tab, setTab] = useState<TabTypes>(() => {\n const savedTab = localStorage.getItem(\"orderly_affiliate_dashboard_tab\");\n return (savedTab as TabTypes) || TabTypes.affiliate;\n });\n\n useEffect(() => {\n localStorage.setItem(\"orderly_affiliate_dashboard_tab\", tab);\n }, [tab]);\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const lastStete = useRef<AccountStatusEnum>(AccountStatusEnum.NotConnected);\n\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (lastStete.current !== state.status) {\n lastStete.current = state.status;\n timerRef.current = setTimeout(() => {\n memoMutate();\n }, 1000);\n }\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n };\n }, [memoMutate, state.status]);\n\n const memoizedValue = useMemo<ReferralContextReturns>(() => {\n return {\n generateCode,\n showHome,\n referralInfo: data,\n isAffiliate: isAffiliate,\n isTrader: isTrader,\n tab,\n becomeAnAffiliateUrl,\n learnAffiliateUrl,\n referralLinkUrl,\n userVolume,\n dailyVolume,\n chartConfig,\n overwrite,\n isLoading: isLoading || isMultiLevelLoading,\n wrongNetwork,\n disabledConnect,\n setShowHome,\n setTab,\n mutate: memoMutate,\n onBecomeAnAffiliate,\n bindReferralCodeState,\n onLearnAffiliate,\n showReferralPage,\n splashPage,\n volumePrerequisite,\n multiLevelRebateInfo,\n isMultiLevelEnabled,\n isMultiLevelReferralUnlocked,\n multiLevelRebateInfoMutate,\n maxRebateRate,\n };\n }, [\n becomeAnAffiliateUrl,\n chartConfig,\n dailyVolume,\n data,\n disabledConnect,\n generateCode,\n isAffiliate,\n isLoading,\n isTrader,\n learnAffiliateUrl,\n overwrite,\n referralLinkUrl,\n showHome,\n tab,\n userVolume,\n wrongNetwork,\n onBecomeAnAffiliate,\n bindReferralCodeState,\n onLearnAffiliate,\n showReferralPage,\n splashPage,\n memoMutate,\n volumePrerequisite,\n multiLevelRebateInfo,\n isMultiLevelEnabled,\n isMultiLevelReferralUnlocked,\n multiLevelRebateInfoMutate,\n maxRebateRate,\n isMultiLevelLoading,\n ]);\n\n return (\n <ReferralContext.Provider value={memoizedValue}>\n {children}\n </ReferralContext.Provider>\n );\n};\n","import React, { FC, Fragment, useCallback, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Flex,\n Text,\n Collapsible,\n CollapsibleContent,\n Box,\n} from \"@orderly.network/ui\";\n\ntype FaqItem = {\n id: string;\n number: number;\n question: string;\n answer: string;\n expanded?: boolean;\n};\n\nexport const Faq = () => {\n const { t } = useTranslation();\n\n const faqItemsData = useMemo(() => {\n return [\n {\n id: \"faq-1\",\n question: t(\"affiliate.faq.question1\"),\n answer: t(\"affiliate.faq.answer1\"),\n },\n {\n id: \"faq-2\",\n question: t(\"affiliate.faq.question2\"),\n answer: t(\"affiliate.faq.answer2\"),\n },\n {\n id: \"faq-3\",\n question: t(\"affiliate.faq.question3\"),\n answer: t(\"affiliate.faq.answer3\"),\n },\n {\n id: \"faq-4\",\n question: t(\"affiliate.faq.question4\"),\n answer: t(\"affiliate.faq.answer4\"),\n },\n {\n id: \"faq-5\",\n question: t(\"affiliate.faq.question5\"),\n answer: t(\"affiliate.faq.answer5\"),\n },\n ] as FaqItem[];\n }, [t]);\n\n // State to track which items are expanded\n const [expandedItems, setExpandedItems] = useState<Set<string>>(new Set());\n\n // Toggle expanded state\n const toggleItem = useCallback((id: string) => {\n setExpandedItems((prev) => {\n const newSet = new Set(prev);\n if (newSet.has(id)) {\n newSet.delete(id);\n } else {\n newSet.add(id);\n }\n return newSet;\n });\n }, []);\n\n const faqItems = useMemo(() => {\n return faqItemsData.map((item) => ({\n ...item,\n expanded: expandedItems.has(item.id),\n }));\n }, [faqItemsData, expandedItems]);\n\n return (\n <Box className=\"oui-affiliate-faq\">\n {/* Title */}\n <Text className=\"oui-text-[32px]\">{t(\"affiliate.faq.title\")}</Text>\n\n {/* FAQ Items */}\n <Flex\n direction=\"column\"\n itemAlign=\"stretch\"\n gap={0}\n className=\"oui-faq-list\"\n >\n {faqItems.map((item, index) => (\n <Fragment key={item.id}>\n <Collapsible\n open={item.expanded}\n onOpenChange={() => toggleItem(item.id)}\n >\n <Flex\n direction=\"column\"\n className=\"oui-cursor-pointer oui-py-4\"\n itemAlign=\"stretch\"\n onClick={() => toggleItem(item.id)}\n >\n {/* Question row */}\n <Flex justify=\"between\" itemAlign=\"center\" gap={4}>\n <Flex gap={2} itemAlign=\"center\" className=\"oui-flex-1\">\n <Text size=\"2xl\" weight=\"semibold\">\n {`${index + 1}. ${item.question}`}\n </Text>\n </Flex>\n <ChevronIcon expanded={item.expanded} />\n </Flex>\n\n {/* Answer (collapsible) */}\n <CollapsibleContent>\n <Box\n className=\"oui-pt-3 oui-text-base-contrast-54\"\n dangerouslySetInnerHTML={{ __html: item.answer }}\n />\n </CollapsibleContent>\n </Flex>\n </Collapsible>\n\n {/* Divider (except for last item) */}\n {index < faqItems.length - 1 && (\n <div className=\"oui-my-4 oui-h-px oui-bg-line-6\" />\n )}\n </Fragment>\n ))}\n </Flex>\n </Box>\n );\n};\n\n// Chevron icon component\nconst ChevronIcon: FC<{ expanded: boolean }> = ({ expanded }) => (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={`oui-transition-transform oui-duration-200 ${\n expanded ? \"oui-rotate-180\" : \"\"\n }`}\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"oui-text-base-contrast-54\"\n />\n </svg>\n);\n","import { useMutation } from \"@orderly.network/hooks\";\n\nexport const useReferralCode = () => {\n const [doCreateReferralCode, { isMutating: isCreateMutating }] = useMutation(\n \"/v1/referral/multi_level/claim_code\",\n );\n\n const [doEditReferralCode, { isMutating: isEditMutating }] = useMutation(\n \"/v1/referral/edit_referral_code\",\n );\n\n const [doUpdateRebateRate, { isMutating: isUpdateRebateRateMutating }] =\n useMutation(\"/v1/referral/multi_level/rebate_rate/update\");\n\n const [doResetRebateRate, { isMutating: isResetRebateRateMutating }] =\n useMutation(\"/v1/referral/multi_level/rebate_rate/set_default\");\n\n const createReferralCode = async (params: {\n referee_rebate_rate: number;\n }) => {\n return doCreateReferralCode(params);\n };\n\n const editReferralCode = async (params: {\n current_referral_code: string;\n new_referral_code: string;\n }) => {\n return doEditReferralCode(params);\n };\n\n const updateRebateRate = async (params: {\n referee_rebate_rate: number;\n account_ids?: string[];\n }) => {\n return doUpdateRebateRate(params);\n };\n\n const resetRebateRate = async (params: { account_ids: string[] }) => {\n return doResetRebateRate(params);\n };\n\n const isMutating =\n isCreateMutating ||\n isEditMutating ||\n isUpdateRebateRateMutating ||\n isResetRebateRateMutating;\n\n return {\n createReferralCode,\n editReferralCode,\n updateRebateRate,\n resetRebateRate,\n isMutating,\n } as const;\n};\n","import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useReferralCode } from \"../../../../hooks/useReferralCode\";\nimport { ReferralCodeFormType } from \"../../../../types\";\nimport { ReferralCodeFormWidgetProps } from \"./referralCodeForm.widget\";\n\nexport const useReferralCodeFormScript = (\n options: ReferralCodeFormWidgetProps,\n) => {\n const { type, referralCode, maxRebateRate, referrerRebateRate, accountId } =\n options;\n const { t } = useTranslation();\n\n const [newCode, setNewCode] = useState<string>(referralCode || \"\");\n const [isReview, setIsReview] = useState(false);\n\n const maxRebatePercentage = useMemo(() => {\n return new Decimal(maxRebateRate).mul(100).toNumber();\n }, [maxRebateRate]);\n\n const [referrerRebatePercentage, setReferrerRebatePercentage] = useState(\n () => {\n if (type === ReferralCodeFormType.Create) {\n return Math.ceil(maxRebatePercentage / 2);\n }\n if (referrerRebateRate) {\n return new Decimal(referrerRebateRate).mul(100).toNumber();\n }\n return 0;\n },\n );\n\n const {\n createReferralCode,\n editReferralCode,\n updateRebateRate,\n resetRebateRate,\n isMutating,\n } = useReferralCode();\n\n const refereeRebatePercentage = useMemo(() => {\n return Math.max(\n 0,\n new Decimal(maxRebatePercentage).sub(referrerRebatePercentage).toNumber(),\n );\n }, [referrerRebatePercentage]);\n\n const codeChanged = useMemo(() => {\n return newCode !== referralCode;\n }, [newCode, referralCode]);\n\n const rateChanged = useMemo(() => {\n return (\n new Decimal(referrerRebatePercentage).toNumber() !==\n new Decimal(referrerRebateRate || 0).mul(100).toNumber()\n );\n }, [referrerRebatePercentage, referrerRebateRate, newCode]);\n\n const handleError = (err: any) => {\n console.error(\"handleError\", err);\n toast.error(err?.message || t(\"common.somethingWentWrong\"));\n };\n\n const handleResult = (res: any) => {\n if (res.success) {\n options.onSuccess?.();\n toast.success(t(\"affiliate.confirmChanges.success\"));\n options.close?.();\n } else {\n toast.error(res.message);\n }\n };\n\n const onEdit = async () => {\n const editReferralCodeParams = {\n current_referral_code: referralCode!,\n new_referral_code: newCode!,\n };\n\n const updateRebateRateParams = {\n referee_rebate_rate: new Decimal(refereeRebatePercentage)\n .div(100)\n .toNumber(),\n account_ids: accountId ? [accountId] : undefined,\n };\n\n try {\n if (codeChanged && rateChanged) {\n const codeRes = await editReferralCode(editReferralCodeParams);\n if (!codeRes.success) {\n toast.error(codeRes.message);\n return;\n }\n const rateRes = await updateRebateRate(updateRebateRateParams);\n handleResult(rateRes);\n } else if (codeChanged) {\n const res = await editReferralCode(editReferralCodeParams);\n handleResult(res);\n } else if (rateChanged) {\n const res = await updateRebateRate(updateRebateRateParams);\n handleResult(res);\n }\n } catch (err) {\n handleError(err);\n }\n };\n\n const onCreate = async () => {\n try {\n const referee_rebate_rate = new Decimal(refereeRebatePercentage)\n .div(100)\n .toNumber();\n\n const res = await createReferralCode({ referee_rebate_rate });\n if (res.success) {\n toast.success(t(\"affiliate.referralCode.create.success\"));\n options.onSuccess?.();\n options.close?.();\n } else {\n toast.error(res.message);\n }\n } catch (err) {\n handleError(err);\n }\n };\n\n const onReset = async () => {\n try {\n const res = await resetRebateRate({ account_ids: [accountId!] });\n handleResult(res);\n } catch (err) {\n handleError(err);\n }\n };\n\n const onClick = () => {\n switch (type) {\n case ReferralCodeFormType.Create:\n onCreate();\n break;\n case ReferralCodeFormType.Edit:\n if (isReview) {\n onEdit();\n } else {\n setIsReview(true);\n }\n break;\n case ReferralCodeFormType.Reset:\n onReset();\n break;\n }\n };\n\n const buttonDisabled =\n type === ReferralCodeFormType.Edit && !codeChanged && !rateChanged;\n\n return {\n onClick,\n maxRebatePercentage,\n referrerRebatePercentage,\n setReferrerRebatePercentage,\n refereeRebatePercentage,\n isMutating,\n newCode,\n setNewCode,\n isReview,\n buttonDisabled,\n onReset,\n };\n};\n\nexport type ReferralCodeFormReturns = ReturnType<\n typeof useReferralCodeFormScript\n>;\n","import { FC } from \"react\";\nimport { IconProps } from \"../utils/types\";\n\nexport const GiftIcon: FC<IconProps> = (props) => {\n const { size = 16, className, ...rest } = props;\n\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n {...rest}\n >\n <path\n d=\"M5.99902 1.99377C4.52636 1.99377 3.33236 3.18777 3.33236 4.66044H2.66569C2.29769 4.66044 1.99902 4.9591 1.99902 5.3271C1.99902 5.66044 1.99902 7.66043 1.99902 7.99377C1.99902 8.36177 2.29769 8.66043 2.66569 8.66043V11.3271C2.66569 12.7998 3.85969 13.9938 5.33236 13.9938H10.6657C12.1384 13.9938 13.3324 12.7998 13.3324 11.3271V8.66043C13.7004 8.66043 13.999 8.36177 13.999 7.99377V5.3271C13.999 4.9591 13.7004 4.66044 13.3324 4.66044H12.6657C12.6657 3.18777 11.4717 1.99377 9.99902 1.99377C9.19169 1.99377 8.48836 2.36444 7.99902 2.93111C7.50969 2.36444 6.80636 1.99377 5.99902 1.99377ZM5.99902 3.32711C6.73569 3.32711 7.33236 3.92377 7.33236 4.66044H4.66569C4.66569 3.92377 5.26236 3.32711 5.99902 3.32711ZM9.99902 3.32711C10.7357 3.32711 11.3324 3.92377 11.3324 4.66044H8.66569C8.66569 3.92377 9.26236 3.32711 9.99902 3.32711ZM3.33236 5.99377H12.6657V7.3271H3.33236C3.33236 6.84777 3.33236 6.4731 3.33236 5.99377ZM3.99902 8.66043H7.33236V12.6604H5.33236C4.59569 12.6604 3.99902 12.0638 3.99902 11.3271V8.66043ZM8.66569 8.66043H11.999V11.3271C11.999 12.0638 11.4024 12.6604 10.6657 12.6604H8.66569V8.66043Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n","import { ReactNode, useMemo, useRef, useState } from \"react\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\nimport {\n Box,\n Button,\n Flex,\n inputFormatter,\n Slider,\n Text,\n TextField,\n WarningIcon,\n Divider,\n formatAddress,\n} from \"@orderly.network/ui\";\nimport { GiftIcon } from \"../../../../icons/giftIcon\";\nimport { ReferralCodeFormField, ReferralCodeFormType } from \"../../../../types\";\nimport { ReferralCodeFormReturns } from \"./referralCodeForm.script\";\nimport { ReferralCodeFormWidgetProps } from \"./referralCodeForm.widget\";\n\nexport type ReferralCodeFormProps = ReferralCodeFormReturns &\n ReferralCodeFormWidgetProps;\n\nexport const ReferralCodeForm = (props: ReferralCodeFormProps) => {\n const { type, isReview } = props;\n const { t } = useTranslation();\n\n const isReset = type === ReferralCodeFormType.Reset;\n const hasBoundReferee = !!props.directInvites && props.directInvites > 0;\n\n const isEditingRefereeRebateRate = !!props.accountId;\n\n const noCommissionAvailable = props.maxRebateRate === 0;\n\n const { title, description, buttonText } = useMemo(() => {\n switch (type) {\n case ReferralCodeFormType.Create:\n return {\n title: t(\"affiliate.referralCode.create.modal.title\"),\n description: t(\"affiliate.referralCode.create.warning\"),\n buttonText: t(\"affiliate.confirmAndGenerate\"),\n };\n case ReferralCodeFormType.Edit:\n return {\n title: isEditingRefereeRebateRate\n ? t(\"affiliate.refereeRebateRate.modal.title\", {\n accountId: formatAddress(props.accountId!),\n })\n : t(\"affiliate.referralCode.edit.modal.title\"),\n description: isEditingRefereeRebateRate\n ? isReview\n ? t(\"affiliate.refereeRebateRate.review.warning\")\n : t(\"affiliate.refereeRebateRate.edit.warning\")\n : isReview\n ? t(\"affiliate.rebateRate.review.warning\")\n : t(\"affiliate.rebateRate.edit.warning\"),\n buttonText: isReview\n ? t(\"affiliate.confirmChanges\")\n : t(\"affiliate.review\"),\n };\n case ReferralCodeFormType.Reset:\n return {\n title: t(\"affiliate.resetRebateRate.modal.title\"),\n description: (\n <Text size=\"2xs\" intensity={54}>\n {t(\"affiliate.resetRebateRate.modal.description\", {\n accountId: formatAddress(props.accountId!),\n })}\n </Text>\n ),\n buttonText: t(\"common.reset\"),\n };\n default:\n return {\n title: \"\",\n description: \"\",\n buttonText: \"\",\n };\n }\n }, [t, type, isEditingRefereeRebateRate, isReview, props.accountId]);\n\n const titleView = (\n <Flex\n width={\"100%\"}\n direction=\"column\"\n itemAlign=\"start\"\n gap={3}\n className=\"oui-referralCodeForm-header\"\n >\n <Text size=\"base\" intensity={98}>\n {title}\n </Text>\n <Divider intensity={8} className=\"oui-w-full\" />\n </Flex>\n );\n\n const descriptionView = <WarningBox>{description}</WarningBox>;\n\n const referralCodeInput = (\n <ReferralCodeInput\n value={props.newCode}\n onChange={props.setNewCode}\n autoFocus={props.focusField === ReferralCodeFormField.ReferralCode}\n disabled={isReview || hasBoundReferee}\n />\n );\n\n const commissionConfiguration = (\n <>\n <Text size=\"2xs\" intensity={54}>\n {t(\"affiliate.commissionConfiguration\")}\n </Text>\n\n {!isReview && (\n <Text size=\"2xs\" intensity={54}>\n {t(\"affiliate.totalCommissionAvailable\")}:{\" \"}\n <Text className=\"oui-text-warning\">{props.maxRebatePercentage}%</Text>\n </Text>\n )}\n </>\n );\n\n const rebateRateSlider = (\n <RebateRateSlider\n value={props.referrerRebatePercentage}\n restValue={props.refereeRebatePercentage}\n onChange={props.setReferrerRebatePercentage}\n max={props.maxRebatePercentage}\n disabled={noCommissionAvailable || isReview || isReset}\n disabledIncrease={hasBoundReferee}\n directBonusRebateRate={props.directBonusRebateRate}\n noCommissionAvailable={noCommissionAvailable}\n />\n );\n\n const refereeInfo = (\n <Flex width={\"100%\"} justify=\"between\" gap={2}>\n <Text size=\"2xs\" intensity={54}>\n {t(\"affiliate.referees\")}\n </Text>\n\n <Text.formatted rule=\"address\" size=\"2xs\" intensity={98}>\n {props.accountId}\n </Text.formatted>\n </Flex>\n );\n\n const noCommissionAvailableWarning = noCommissionAvailable && (\n <Text size=\"2xs\" className=\"oui-text-warning\">\n {isEditingRefereeRebateRate\n ? t(\"affiliate.rebateRate.noCommissionRate\")\n : t(\"affiliate.rebateRate.noCommissionAvailable\")}\n </Text>\n );\n\n const resetRebateRateLabel = (\n <Text size=\"2xs\" intensity={98} className=\"oui-text-start\">\n {t(\"affiliate.resetRebateRate.rateAfterReset\")}:\n </Text>\n );\n\n const buttons = (\n <Flex direction={\"row\"} gap={2} width={\"100%\"} mt={0} pt={5}>\n <Button\n variant=\"contained\"\n color=\"gray\"\n fullWidth\n onClick={props.close}\n size=\"md\"\n className=\"oui-referralCodeForm-cancel-btn\"\n >\n {t(\"common.cancel\")}\n </Button>\n <Button\n fullWidth\n onClick={props.onClick}\n disabled={props.buttonDisabled || props.isMutating}\n loading={props.isMutating}\n size=\"md\"\n className=\"oui-referralCodeForm-confirm-btn\"\n >\n {buttonText}\n </Button>\n </Flex>\n );\n\n const renderContent = () => {\n switch (type) {\n case ReferralCodeFormType.Create:\n return (\n <Flex width={\"100%\"} direction=\"column\" itemAlign=\"start\" gap={2}>\n {commissionConfiguration}\n {rebateRateSlider}\n {noCommissionAvailableWarning}\n {buttons}\n </Flex>\n );\n case ReferralCodeFormType.Edit:\n return (\n <>\n {isEditingRefereeRebateRate ? refereeInfo : referralCodeInput}\n\n <Flex width={\"100%\"} direction=\"column\" itemAlign=\"start\" gap={2}>\n {commissionConfiguration}\n {rebateRateSlider}\n {noCommissionAvailableWarning}\n {buttons}\n </Flex>\n </>\n );\n case ReferralCodeFormType.Reset:\n return (\n <Flex width={\"100%\"} direction=\"column\" itemAlign=\"start\" gap={2}>\n {resetRebateRateLabel}\n {rebateRateSlider}\n {buttons}\n </Flex>\n );\n default:\n return null;\n }\n };\n\n return (\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n gap={6}\n className=\"oui-affiliate-referralCodeForm oui-font-semibold\"\n >\n {titleView}\n {descriptionView}\n {renderContent()}\n </Flex>\n );\n};\n\nconst NoCommissionCard = (props: { directBonusRebateRate?: number }) => {\n const { t } = useTranslation();\n const amount = props.directBonusRebateRate;\n\n return (\n <Flex\n direction=\"column\"\n gap={2}\n mt={2}\n width={\"100%\"}\n p={4}\n r=\"lg\"\n className=\"oui-border oui-border-base-contrast/[0.08] oui-tracking-[0.03em]\"\n >\n <Flex justify=\"between\" width={\"100%\"} itemAlign=\"center\">\n <Flex direction=\"column\" itemAlign=\"start\" gap={1}>\n <Text size=\"2xs\" intensity={54}>\n {t(\"affiliate.noCommissionCard.title\")}\n </Text>\n <Text size=\"lg\" className=\"oui-text-primary-light oui-font-semibold\">\n + {amount}%\n </Text>\n </Flex>\n <GiftIcon size={24} className=\"oui-shrink-0 oui-text-primary-light\" />\n </Flex>\n <Text size=\"2xs\" intensity={98} className=\"oui-leading-[15px]\">\n {t(\"affiliate.noCommissionCard.content\", { amount })}\n </Text>\n </Flex>\n );\n};\n\ntype RebateRateSliderProps = {\n value: number;\n onChange: (value: number) => void;\n max: number;\n disabled: boolean;\n restValue: number;\n disabledIncrease?: boolean;\n directBonusRebateRate?: number;\n noCommissionAvailable?: boolean;\n};\n\nconst RebateRateSlider = (props: RebateRateSliderProps) => {\n const { t } = useTranslation();\n const [maxValue] = useState(props.value);\n\n return (\n <>\n {!props.disabled && (\n <Box width={\"100%\"} my={2}>\n <Slider\n min={0}\n max={props.max}\n step={1}\n value={[props.value]}\n onValueChange={(value) => {\n const newValue = value[0] as number;\n props.onChange(\n props.disabledIncrease\n ? Math.min(newValue, maxValue)\n : newValue,\n );\n }}\n classNames={{\n range: \"oui-bg-success-darken oui-h-2 oui-top-[0px]\",\n trackInner: \"oui-bg-success-darken/30 oui-h-2 oui-top-[0px]\",\n thumb: \"oui-border-[#d9d9d9] oui-bg-[#d9d9d9] oui-size-4\",\n }}\n />\n </Box>\n )}\n\n <div className=\"oui-w-full\">\n <Flex justify={\"between\"} width={\"100%\"}>\n <Text size=\"sm\" intensity={54}>\n {t(\"affiliate.youKeep\")}\n </Text>\n <Text size=\"sm\" intensity={54}>\n {t(\"affiliate.refereesGet\")}\n </Text>\n </Flex>\n\n <Flex justify={\"between\"} width={\"100%\"}>\n <Text.formatted size=\"lg\" className=\"oui-text-success-darken\">\n {props.value}%\n </Text.formatted>\n <Text.formatted size=\"lg\" className=\"oui-text-success-darken/50\">\n {props.restValue}%\n </Text.formatted>\n </Flex>\n\n {props.noCommissionAvailable ? (\n <NoCommissionCard\n directBonusRebateRate={props.directBonusRebateRate}\n />\n ) : (\n props.directBonusRebateRate != null &&\n props.directBonusRebateRate > 0 && (\n <Flex gap={2} mt={2} width={\"100%\"}>\n <GiftIcon\n size={16}\n className=\"oui-text-base-contrast oui-mt-[1px]\"\n />\n <Text\n size=\"base\"\n intensity={54}\n as=\"span\"\n className=\"oui-inline-flex oui-items-center oui-gap-1 oui-tracking-[0.03em]\"\n >\n <Trans\n i18nKey=\"affiliate.extraBonusOnDirectReferrals\"\n values={{ amount: props.directBonusRebateRate }}\n components={[<Text as=\"span\" color=\"primaryLight\" key=\"0\" />]}\n />\n </Text>\n </Flex>\n )\n )}\n </div>\n </>\n );\n};\n\ntype ReferralCodeInputProps = {\n value: string;\n onChange: (value: string) => void;\n autoFocus: boolean;\n disabled: boolean;\n};\n\nconst ReferralCodeInput = (props: ReferralCodeInputProps) => {\n const { t } = useTranslation();\n\n const hasSetCursorToEnd = useRef(false);\n\n return (\n <TextField\n type=\"text\"\n fullWidth\n label={t(\"affiliate.referralCode.editCodeModal.label\")}\n value={props.value}\n onChange={(e) => {\n props.onChange(e.target.value);\n }}\n onFocus={(e) => {\n if (props.autoFocus && !hasSetCursorToEnd.current) {\n hasSetCursorToEnd.current = true;\n const input = e.target as HTMLInputElement;\n const len = input.value.length;\n requestAnimationFrame(() => {\n input.setSelectionRange(len, len);\n });\n }\n }}\n formatters={[\n inputFormatter.createRegexInputFormatter((value: string | number) => {\n return String(value).replace(/[a-z]/g, (char: string) =>\n char.toUpperCase(),\n );\n }),\n inputFormatter.createRegexInputFormatter(/[^A-Z0-9]/g),\n ]}\n className=\"oui-w-full\"\n classNames={{\n label: \"oui-text-base-contrast-54 oui-text-xs\",\n input: \"placeholder:oui-text-base-contrast-20 placeholder:oui-text-sm\",\n }}\n maxLength={10}\n minLength={4}\n autoComplete=\"off\"\n disabled={props.disabled}\n autoFocus={props.autoFocus}\n />\n );\n};\n\nconst WarningBox = (props: { children: ReactNode }) => {\n const { children } = props;\n\n if (typeof children === \"string\") {\n return (\n <Flex\n className=\"oui-bg-warning/10\"\n justify=\"start\"\n itemAlign=\"start\"\n gap={1}\n r=\"lg\"\n p={3}\n >\n <WarningIcon className=\"oui-shrink-0 oui-text-warning\" />\n <Text size=\"2xs\" intensity={54} className=\"oui-text-warning\">\n {children}\n </Text>\n </Flex>\n );\n }\n\n return children;\n};\n","import { ReferralCodeFormField, ReferralCodeFormType } from \"../../../../types\";\nimport { useReferralCodeFormScript } from \"./referralCodeForm.script\";\nimport { ReferralCodeForm } from \"./referralCodeForm.ui\";\n\nexport type ReferralCodeFormWidgetProps = {\n type: ReferralCodeFormType;\n close?: () => void;\n onSuccess?: () => void;\n referralCode?: string;\n maxRebateRate: number;\n referrerRebateRate?: number;\n focusField?: ReferralCodeFormField;\n accountId?: string;\n directInvites?: number;\n directBonusRebateRate?: number;\n};\n\nexport const ReferralCodeFormWidget = (props: ReferralCodeFormWidgetProps) => {\n const state = useReferralCodeFormScript(props);\n return <ReferralCodeForm {...state} {...props} />;\n};\n","import { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\nimport { ReferralCodeFormWidget } from \"./referralCodeForm.widget\";\n\nexport const ReferralCodeFormDialogId = \"ReferralCodeFormDialogId\";\nexport const ReferralCodeFormSheetId = \"ReferralCodeFormSheetId\";\n\nregisterSimpleDialog(ReferralCodeFormDialogId, ReferralCodeFormWidget, {\n size: \"sm\",\n classNames: {\n content: \"oui-border oui-border-line-6\",\n body: \"!oui-pt-3\",\n },\n});\n\nregisterSimpleSheet(ReferralCodeFormSheetId, ReferralCodeFormWidget);\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Button,\n ButtonProps,\n cn,\n Flex,\n parseNumber,\n Text,\n} from \"@orderly.network/ui\";\nimport { useScaffoldContext } from \"@orderly.network/ui-scaffold\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useReferralContext } from \"../../../provider\";\n\nexport type TradingVolumeProgressProps = {\n classNames?: {\n root?: string;\n description?: string;\n button?: string;\n };\n buttonProps?: ButtonProps;\n};\n\nexport const TradingVolumeProgress: FC<TradingVolumeProgressProps> = (\n props,\n) => {\n const { t } = useTranslation();\n const { classNames } = props;\n const { volumePrerequisite } = useReferralContext();\n const { routerAdapter } = useScaffoldContext();\n\n const { current_volume = 0, required_volume = 0 } = volumePrerequisite || {};\n\n const progressPercentage = useMemo(() => {\n if (required_volume === 0) return 0;\n const percentage = new Decimal(current_volume)\n .div(required_volume)\n .mul(100)\n .toNumber();\n return Math.min(percentage, 100);\n }, [current_volume, required_volume]);\n\n const formatRequiredVolume = useMemo(() => {\n return parseNumber(required_volume, {\n rule: \"price\",\n dp: 0,\n });\n }, [required_volume]);\n\n const gotoTrade = () => {\n routerAdapter?.onRouteChange?.({\n href: \"/perp\",\n name: \"Perp\",\n });\n };\n\n return (\n <Flex\n width=\"100%\"\n direction=\"column\"\n gap={4}\n className={cn(\"oui-tradingVolumeProgress\", classNames?.root)}\n >\n <Text\n size=\"sm\"\n intensity={54}\n className={cn(\n \"oui-tradingVolumeProgress-description\",\n \"oui-text-center\",\n classNames?.description,\n )}\n >\n {t(\"affiliate.newReferralProgram.tradeUnlock.description\", {\n volume: formatRequiredVolume,\n })}\n </Text>\n <Flex width=\"100%\" direction={\"column\"} gap={2}>\n <Flex\n width=\"100%\"\n justify=\"between\"\n className=\"oui-text-2xs oui-text-base-contrast\"\n >\n <Text>{t(\"common.current\")}</Text>\n <Flex gap={1}>\n <Text.numeral rule=\"price\" dp={0}>\n {current_volume}\n </Text.numeral>\n <Text.numeral\n intensity={54}\n rule=\"price\"\n dp={0}\n prefix={\"/ \"}\n suffix=\" USDC\"\n >\n {required_volume}\n </Text.numeral>\n </Flex>\n </Flex>\n\n <div className=\"oui-h-[8px] oui-w-full oui-rounded-full oui-bg-base-contrast-4\">\n <div\n style={{\n width: `${progressPercentage}%`,\n }}\n className={cn(\n \"oui-tradingVolumeProgress-bar oui-h-full oui-rounded-l-full oui-bg-primary-light\",\n progressPercentage === 100 && \"oui-rounded-r-full\",\n )}\n />\n </div>\n </Flex>\n\n <Button\n size=\"md\"\n onClick={gotoTrade}\n className={cn(\n \"oui-tradingVolumeProgress-cta-btn\",\n props.buttonProps?.className,\n )}\n {...props.buttonProps}\n >\n {t(\"affiliate.newReferralProgram.tradeUnlock\")}\n </Button>\n </Flex>\n );\n};\n","import { useMemo } from \"react\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { Button, Flex, modal, Text } from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { useReferralContext } from \"../../../../provider\";\nimport { ReferralCodeFormType } from \"../../../../types\";\nimport { ReferralCodeFormDialogId } from \"../../affiliate/referralCodeForm/modal\";\nimport { TradingVolumeProgress } from \"../../components/tradingVolumeProgress\";\n\nexport const Hero = () => {\n const { t } = useTranslation();\n const { state } = useAccount();\n const { wrongNetwork } = useAppContext();\n const status = state.status;\n\n const {\n isMultiLevelReferralUnlocked,\n isMultiLevelEnabled,\n multiLevelRebateInfo,\n multiLevelRebateInfoMutate,\n maxRebateRate,\n } = useReferralContext();\n\n const onCreateReferralCode = () => {\n modal.show(ReferralCodeFormDialogId, {\n type: ReferralCodeFormType.Create,\n maxRebateRate,\n directBonusRebateRate: 10, // Hardcoded value before API is ready\n onSuccess: () => {\n multiLevelRebateInfoMutate();\n },\n });\n };\n\n const description = useMemo(() => {\n if (wrongNetwork) {\n return t(\"affiliate.wrongNetwork.description\");\n }\n\n if (status === AccountStatusEnum.NotConnected) {\n return t(\"affiliate.newReferralProgram.description\");\n }\n\n if (\n status > AccountStatusEnum.Connected &&\n status < AccountStatusEnum.EnableTrading\n ) {\n return t(\"affiliate.setUpAccount.description\");\n }\n\n if (!isMultiLevelReferralUnlocked) {\n return \"\";\n }\n\n return t(\"affiliate.newReferralProgram.description\");\n }, [t, wrongNetwork, status]);\n\n const renderContent = () => {\n if (!isMultiLevelReferralUnlocked) {\n return (\n <TradingVolumeProgress\n classNames={{\n root: \"oui-items-start\",\n description: \"!oui-text-start\",\n }}\n buttonProps={{\n size: \"xl\",\n }}\n />\n );\n }\n\n if (isMultiLevelEnabled && !multiLevelRebateInfo?.referral_code) {\n return (\n <Button size=\"lg\" className=\"oui-px-4\" onClick={onCreateReferralCode}>\n {t(\"affiliate.referralCode.create\")}\n </Button>\n );\n }\n\n return \"\";\n\n // return (\n // <Button size=\"lg\" className=\"oui-px-4\" disabled>\n // {t(\"affiliate.accountNotEligible\")}\n // </Button>\n // );\n };\n\n return (\n <Flex\n gap={8}\n className=\"oui-affiliate-hero oui-flex-col-reverse md:oui-flex-row\"\n id=\"oui-affiliate-landing-hero\"\n itemAlign={\"center\"}\n >\n <Flex direction=\"column\" itemAlign=\"start\" gap={6} className=\"oui-flex-1\">\n <Flex\n direction=\"column\"\n gap={3}\n itemAlign=\"start\"\n id=\"oui-affiliate-landing-hero-title\"\n >\n <Text\n weight=\"semibold\"\n className=\"oui-text-[32px] oui-leading-tight md:oui-text-[48px]\"\n >\n {t(\"affiliate.landing.title\")}\n </Text>\n </Flex>\n\n {description && (\n <Text size=\"sm\" intensity={54}>\n {description}\n </Text>\n )}\n\n <AuthGuard\n labels={{\n connectWallet: t(\"affiliate.connectWallet\"),\n signin: t(\"affiliate.setUpAccount\"),\n enableTrading: t(\"affiliate.setUpAccount\"),\n }}\n >\n {renderContent()}\n </AuthGuard>\n </Flex>\n\n <img\n src=\"https://oss.orderly.network/static/sdk/referral/network-diagram.png\"\n alt=\"Network diagram\"\n className=\"oui-size-[335px] oui-object-cover md:oui-size-[480px]\"\n id=\"oui-affiliate-landing-network-diagram\"\n />\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Flex, Text, cn } from \"@orderly.network/ui\";\n\n/**\n * Icon type for step card\n */\nexport type IconType = \"wallet\" | \"settings\" | \"rocket\";\n\n/**\n * StepCard component props\n */\nexport type StepCardProps = {\n step: number;\n icon: IconType;\n title: string;\n description: string;\n className?: string;\n};\n\n/**\n * StepCard component - displays a step card with icon, title and description\n */\nexport const StepCard: FC<StepCardProps> = (props) => {\n const { step, icon, title, description, className } = props;\n\n return (\n <Flex\n direction=\"column\"\n gap={3}\n r=\"2xl\"\n p={5}\n itemAlign={\"start\"}\n className={cn(\"oui-stepCard\", \"oui-bg-base-9\", className)}\n >\n {/* Icon */}\n <Flex\n justify=\"center\"\n className={cn(\n \"oui-stepCard-icon\",\n \"oui-rounded-full oui-bg-base-7 lg:oui-justify-start\",\n )}\n p={3}\n width={48}\n height={48}\n itemAlign=\"center\"\n >\n {renderIcon(icon)}\n </Flex>\n\n {/* Title */}\n <Text size=\"xl\" weight=\"semibold\" className=\"oui-stepCard-title\">\n {`${step}. ${title}`}\n </Text>\n\n {/* Description */}\n <Text intensity={54} size={\"sm\"} className=\"oui-stepCard-description\">\n {description}\n </Text>\n </Flex>\n );\n};\n\n/**\n * Icon rendering function - renders the appropriate icon based on type\n */\nconst renderIcon = (iconType: IconType) => {\n switch (iconType) {\n case \"wallet\":\n return <WalletIcon />;\n case \"settings\":\n return <SettingsIcon />;\n case \"rocket\":\n return <RocketIcon />;\n default:\n return null;\n }\n};\n\n// SVG Icons\nconst WalletIcon = () => (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-fill-base-contrast-54\"\n >\n <path d=\"M7.006 2.93a4 4 0 0 0-4 4v10a4 4 0 0 0 4 4h10c1.552 0 3-1.448 3-3l-.004-1.163a3.025 3.025 0 0 0 2.004-2.837v-4c0-1.268-.822-2.428-1.994-2.815l-.006-1.185c0-1.553-1.448-3-3-3zm0 2h10c.448 0 1 .552 1 1v1h-3a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3h3v1c0 .447-.552 1-1 1h-10a2 2 0 0 1-2-2v-10a2 2 0 0 1 2-2m8 4h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1m2 2a1 1 0 1 0 0 2 1 1 0 0 0 0-2\" />\n </svg>\n);\n\nconst SettingsIcon = () => (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-fill-base-contrast-54\"\n >\n <path d=\"M14.99 2.93c-1.267 0-2.45.832-2.818 2.002L3.99 4.93a1 1 0 0 0 0 2l8.18-.001c.449 1.225 1.552 2 2.82 2s2.382-.777 2.838-2.008l2.162.009a1 1 0 0 0 0-2h-2.17c-.482-1.22-1.562-2-2.83-2m0 2a1 1 0 1 1 0 2 1 1 0 0 1 0-2m-6 4c-1.317 0-2.42.82-2.823 2.002-.14.009-2.176-.002-2.176-.002a1 1 0 0 0 0 2s2.052-.021 2.18-.008a2.95 2.95 0 0 0 2.82 2.008c1.268 0 2.354-.777 2.83-1.997l8.17-.003a1 1 0 0 0 0-2l-8.176-.01A3.01 3.01 0 0 0 8.99 8.93m0 2a1 1 0 1 1 0 2 1 1 0 0 1 0-2m6 4c-1.267 0-2.427.835-2.819 1.99l-8.18.01a1 1 0 0 0 0 2h8.165a3.02 3.02 0 0 0 2.835 2c1.268 0 2.36-.793 2.842-2h2.158a1 1 0 0 0 0-2l-2.167-.006a3.03 3.03 0 0 0-2.833-1.994m0 2a1 1 0 1 1 0 2 1 1 0 0 1 0-2\" />\n </svg>\n);\n\nconst RocketIcon = () => (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-fill-base-contrast-54\"\n >\n <path d=\"M18.527 13.88c-.423.424-.884.808-1.345 1.154a.63.63 0 0 0-.269.423 9.2 9.2 0 0 1-2.459 4.346 10 10 0 0 1-1.883 1.462c-.576.346-1.268-.231-1.037-.885.384-1 .538-2.076.538-3.192-.077 0-.192.039-.27.039a39 39 0 0 1-2.612-2.423 51 51 0 0 1-2.42-2.615c0-.077.038-.193.038-.27-1.115 0-2.19.193-3.19.539-.614.23-1.23-.462-.883-1.039a10 10 0 0 1 1.46-1.884 9.2 9.2 0 0 1 4.342-2.461c.153-.039.307-.154.422-.27.346-.5.73-.923 1.153-1.346 2.997-3 7.185-4.038 11.066-3.153a.76.76 0 0 1 .538.538c.845 3.846-.192 8.038-3.189 11.038m-1.69-6.73a2.41 2.41 0 0 0-3.382 0 2.416 2.416 0 0 0 0 3.385 2.41 2.41 0 0 0 3.381 0c.96-.962.96-2.462 0-3.385M8.266 18.92c-.73.73-5.225 3.807-6.109 2.923-.884-.885 2.19-5.385 2.92-6.115s2.037-.616 2.92.269c.884.885 1 2.192.27 2.923\" />\n </svg>\n);\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Text, Grid, Box } from \"@orderly.network/ui\";\nimport { IconType, StepCard } from \"./stepCard\";\n\ntype StepData = {\n step: number;\n icon: IconType;\n title: string;\n description: string;\n};\n\nexport const HowItWorks = () => {\n const { t } = useTranslation();\n const steps = useMemo<StepData[]>(() => {\n return [\n {\n step: 1,\n icon: \"wallet\" as IconType,\n title: t(\"affiliate.howItWorks.step1.title\"),\n description: t(\"affiliate.howItWorks.step1.description\"),\n },\n {\n step: 2,\n icon: \"settings\" as IconType,\n title: t(\"affiliate.howItWorks.step2.title\"),\n description: t(\"affiliate.howItWorks.step2.description\"),\n },\n {\n step: 3,\n icon: \"rocket\" as IconType,\n title: t(\"affiliate.howItWorks.step3.title\"),\n description: t(\"affiliate.howItWorks.step3.description\"),\n },\n ];\n }, [t]);\n\n return (\n <Box\n id=\"oui-affiliate-landing-how-it-works\"\n className=\"oui-affiliate-howItWorks\"\n >\n {/* Title and subtitle */}\n <Flex direction=\"column\" itemAlign=\"start\">\n <Text weight=\"semibold\" className=\"oui-text-[32px]\">\n {t(\"affiliate.howItWorks.title\")}\n </Text>\n <Box py={4}>\n <Text intensity={54}>{t(\"affiliate.howItWorks.description\")}</Text>\n </Box>\n </Flex>\n\n {/* Step cards */}\n <Grid\n className=\"oui-howItWorks-steps oui-grid-cols-1 md:oui-grid-cols-3\"\n gap={6}\n >\n {steps.map((step) => (\n <StepCard\n key={step.step}\n step={step.step}\n icon={step.icon}\n title={step.title}\n description={step.description}\n />\n ))}\n </Grid>\n </Box>\n );\n};\n","import { Flex } from \"@orderly.network/ui\";\nimport { Faq } from \"./components/faq\";\nimport { Hero } from \"./components/hero\";\nimport { HowItWorks } from \"./components/howItWorks\";\n\nexport const LandingPage = () => {\n return (\n <Flex\n id=\"oui-affiliate-landing-page\"\n direction=\"column\"\n gap={10}\n itemAlign={\"stretch\"}\n className=\"oui-affiliate-landing-page oui-mx-auto oui-w-full oui-p-5 md:oui-w-[1040px] md:oui-py-12\"\n >\n <Hero />\n <HowItWorks />\n <Faq />\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { VolBarChart } from \"@orderly.network/chart\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Select, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { TitleStatisticReturns } from \"./commissionChart.script\";\n\nexport const CommissionChart: FC<TitleStatisticReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-affiliate-commissionChart oui-border oui-border-line-6 oui-bg-base-9\"\n >\n <Flex\n justify={\"between\"}\n width={\"100%\"}\n className=\"oui-commissionChart-header\"\n >\n <Text size=\"lg\">{`${t(\"affiliate.commission\")} (USDC)`}</Text>\n <div className=\"oui-commissionChart-period-select\">\n <Select.options\n size={\"xs\"}\n value={props.period}\n onValueChange={props.onPeriodChange}\n options={props.periodTypes}\n />\n </div>\n </Flex>\n\n <Flex className=\"oui-commissionChart-body oui-flex oui-h-[170px] oui-w-full oui-flex-row oui-items-stretch 2xl:oui-h-[196px]\">\n <VolBarChart\n data={props.dataSource!}\n colors={{ fill: \"rgba(0, 180, 158, 1)\" }}\n className=\"oui-w-full oui-flex-1\"\n tooltip={{\n rm: Decimal.ROUND_DOWN,\n dp: 2,\n }}\n />\n </Flex>\n </Flex>\n );\n};\n","import { format, subDays } from \"date-fns\";\nimport type { VolChartDataItem } from \"@orderly.network/chart\";\n\nexport function fillData(\n days: number,\n origin?: VolChartDataItem[],\n): VolChartDataItem[] {\n const now = Date();\n const result = new Array(days)\n .fill(0)\n .map<VolChartDataItem>((_, index) => {\n return {\n date: format(subDays(now, index + 1), \"yyyy-MM-dd\"),\n volume: 0,\n opacity: 0,\n };\n })\n .reverse();\n\n const dataObject = origin?.reduce<{ [key: string]: VolChartDataItem }>(\n (acc, curr) => {\n acc[curr.date] = curr;\n return acc;\n },\n {},\n );\n\n for (let index = 0; index < result.length; index++) {\n const element = result[index];\n const originData = dataObject?.[element.date];\n if (originData) {\n result[index] = { ...originData, opacity: originData.volume > 0 ? 1 : 0 };\n }\n }\n\n return result;\n}\n","import { useMemo, useState } from \"react\";\nimport { format, subDays } from \"date-fns\";\nimport { RefferalAPI, useReferralRebateSummary } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { fillData } from \"../../../../utils/chartUtils\";\n\nexport type TitleStatisticReturns = {\n period: string;\n periodTypes: { label: string; value: string }[];\n onPeriodChange: (item: string) => void;\n dataSource?: {\n date: string;\n volume: number;\n }[];\n};\n\nexport const useCommissionChartScript = (): TitleStatisticReturns => {\n const { t } = useTranslation();\n\n const [period, setPeriod] = useState(\"90\");\n\n const periodTypes = useMemo(() => {\n return [\n { label: t(\"common.select.7d\"), value: \"7\" },\n { label: t(\"common.select.30d\"), value: \"30\" },\n { label: t(\"common.select.90d\"), value: \"90\" },\n ];\n }, [t]);\n\n const onPeriodChange = (item: string) => {\n setPeriod(item);\n };\n\n const dateRange = useMemo((): {\n startDate: Date;\n endDate: Date;\n } => {\n const days = Number(period) || 7;\n const now = new Date();\n return {\n startDate: subDays(now, days),\n endDate: subDays(now, 1),\n };\n }, [period]);\n\n const [rebateSummary] = useReferralRebateSummary({\n startDate: format(dateRange.startDate, \"yyyy-MM-dd\"),\n endDate: format(dateRange.endDate, \"yyyy-MM-dd\"),\n size: Number(period),\n });\n\n const dataSource = useMemo(() => {\n const data =\n ((rebateSummary as RefferalAPI.ReferralRebateSummary[]) || [])?.map(\n (item) => ({\n date: item.date,\n volume:\n item.direct_rebate +\n item.indirect_rebate +\n item.direct_bonus_rebate,\n }),\n ) || [];\n data.reverse();\n\n return fillData(Number(period), data);\n }, [rebateSummary, period]);\n\n return {\n period,\n periodTypes,\n onPeriodChange,\n dataSource,\n };\n};\n","import { useCommissionChartScript } from \"./commissionChart.script\";\nimport { CommissionChart } from \"./commissionChart.ui\";\n\nexport const CommissionChartWidget = () => {\n const state = useCommissionChartScript();\n return <CommissionChart {...state} />;\n};\n","import { FC } from \"react\";\nimport { SVGProps } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Text, Button, cn } from \"@orderly.network/ui\";\nimport { TradingVolumeProgress } from \"../../components/tradingVolumeProgress\";\nimport { MultiLevelReferralReturns } from \"./multiLevelReferral.script\";\n\nexport const MultiLevelReferral: FC<MultiLevelReferralReturns> = (props) => {\n const { isMultiLevelReferralUnlocked } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n r={\"2xl\"}\n width={\"100%\"}\n height={\"100%\"}\n gap={4}\n p={5}\n direction={\"column\"}\n intensity={900}\n className={cn(\n \"oui-affiliate-multiLevelReferral\",\n \"oui-border oui-border-line-6\",\n )}\n >\n <Text size=\"lg\" className=\"oui-w-full oui-text-start\">\n {t(\"affiliate.referral\")}\n </Text>\n <Flex\n width=\"100%\"\n height=\"100%\"\n direction=\"column\"\n itemAlign=\"center\"\n justify=\"center\"\n gap={4}\n >\n <MultiLevelReferralIcon className=\"oui-text-primary-light\" />\n\n <Text size=\"base\" intensity={98}>\n {t(\"affiliate.newReferralProgram.title\")}\n </Text>\n\n {isMultiLevelReferralUnlocked ? (\n <>\n <Text size=\"sm\" intensity={54} className=\"oui-text-center\">\n {t(\"affiliate.newReferralProgram.description\")}\n </Text>\n <Button\n size=\"md\"\n className=\"oui-px-16\"\n onClick={props.createReferralCode}\n >\n {t(\"affiliate.referralCode.create\")}\n </Button>\n </>\n ) : (\n <TradingVolumeProgress\n buttonProps={{\n className: \"oui-px-16\",\n }}\n />\n )}\n </Flex>\n </Flex>\n );\n};\n\nconst MultiLevelReferralIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n width={64}\n height={64}\n viewBox=\"0 0 64 64\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect width={64} height={64} rx={32} fill=\"rgb(var(--oui-color-base-8))\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M28.822 23.24a.86.86 0 0 1 .607-.24h5.142c.228 0 .446.086.607.24a.8.8 0 0 1 .25.579v3.28a.8.8 0 0 1-.25.578.88.88 0 0 1-.607.24h-1.719v3.259h7.714c.228 0 .446.086.606.24a.8.8 0 0 1 .251.578v4.094h1.72c.227 0 .445.086.606.24a.8.8 0 0 1 .251.578v3.275a.8.8 0 0 1-.251.58.88.88 0 0 1-.606.239H38a.88.88 0 0 1-.606-.24.8.8 0 0 1-.251-.579v-3.274a.8.8 0 0 1 .25-.58.88.88 0 0 1 .607-.24h1.71v-3.274h-6.858v3.275h1.72c.227 0 .445.086.605.24a.8.8 0 0 1 .252.578v3.275a.8.8 0 0 1-.252.58.88.88 0 0 1-.606.239H29.43a.88.88 0 0 1-.606-.24.8.8 0 0 1-.252-.579v-3.274a.8.8 0 0 1 .252-.58.88.88 0 0 1 .606-.24h1.709v-3.274H24.28v3.275H26c.227 0 .445.086.606.24a.8.8 0 0 1 .251.578v3.275a.8.8 0 0 1-.25.58A.88.88 0 0 1 26 41h-5.143a.88.88 0 0 1-.606-.24.8.8 0 0 1-.251-.579v-3.274a.8.8 0 0 1 .251-.58.88.88 0 0 1 .606-.24h1.71v-4.093a.8.8 0 0 1 .25-.579.88.88 0 0 1 .606-.24h7.715v-3.258h-1.71a.88.88 0 0 1-.605-.24.8.8 0 0 1-.252-.579V23.82q0-.163.065-.313a.8.8 0 0 1 .186-.268\"\n />\n </svg>\n);\n","import { modal } from \"@orderly.network/ui\";\nimport { useReferralContext } from \"../../../../provider\";\nimport { ReferralCodeFormType } from \"../../../../types\";\nimport { ReferralCodeFormDialogId } from \"../referralCodeForm/modal\";\n\nexport const useMultiLevelReferralScript = () => {\n const {\n isMultiLevelReferralUnlocked,\n maxRebateRate,\n multiLevelRebateInfoMutate,\n } = useReferralContext();\n\n const createReferralCode = () => {\n modal.show(ReferralCodeFormDialogId, {\n type: ReferralCodeFormType.Create,\n maxRebateRate,\n directBonusRebateRate: 10, // Hardcoded value before API is ready\n onSuccess: () => {\n multiLevelRebateInfoMutate();\n },\n });\n };\n\n return {\n isMultiLevelReferralUnlocked,\n createReferralCode,\n };\n};\n\nexport type MultiLevelReferralReturns = ReturnType<\n typeof useMultiLevelReferralScript\n>;\n","import { useMultiLevelReferralScript } from \"./multiLevelReferral.script\";\nimport { MultiLevelReferral } from \"./multiLevelReferral.ui\";\n\nexport const MultiLevelReferralWidget = () => {\n const state = useMultiLevelReferralScript();\n return <MultiLevelReferral {...state} />;\n};\n","import { FC } from \"react\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Text, Button, Box, cn, toast } from \"@orderly.network/ui\";\nimport { GiftIcon } from \"../../../../icons/giftIcon\";\nimport { ReferralCodeFormField } from \"../../../../types\";\nimport { ReferralInfoReturns } from \"./referralInfo.script\";\n\nexport const ReferralInfo: FC<ReferralInfoReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n id=\"oui-affiliate-affiliate-referralLink\"\n r={\"2xl\"}\n width={\"100%\"}\n height={\"100%\"}\n gap={4}\n p={5}\n direction={\"column\"}\n intensity={900}\n className=\"oui-affiliate-referralInfo oui-border oui-border-line-6\"\n >\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n width={\"100%\"}\n className=\"oui-referralInfo-header\"\n >\n <Text size=\"lg\">{t(\"affiliate.referral\")}</Text>\n <Button\n size=\"xs\"\n color=\"secondary\"\n onClick={() => props.onEdit(ReferralCodeFormField.ReferralCode)}\n >\n {t(\"affiliate.configure\")}\n </Button>\n </Flex>\n\n <Container className=\"oui-referralInfo-code oui-flex-col oui-items-start oui-gap-4 oui-p-5\">\n <Flex\n r=\"full\"\n px={2}\n height={20}\n justify={\"center\"}\n itemAlign={\"center\"}\n className=\"oui-border oui-border-primary-light\"\n >\n <Text intensity={98} className=\"oui-text-[10px] oui-leading-[10px]\">\n {t(\"affiliate.multiLevel\")}\n </Text>\n </Flex>\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text size=\"lg\" color=\"primaryLight\">\n {props.referralCode}\n </Text>\n <CopyButton value={props.referralCode} />\n </Flex>\n </Container>\n\n <Container className=\"oui-referralInfo-link oui-p-5\">\n <Text size=\"lg\" color=\"primaryLight\">\n {props.referralLink}\n </Text>\n <CopyButton value={props.referralLink} />\n </Container>\n\n <Box\n width={\"100%\"}\n r=\"2xl\"\n className=\"oui-bg-base-contrast-4 oui-p-5 md:oui-py-7\"\n >\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text size=\"sm\">{t(\"affiliate.revenueSplitStrategy\")}</Text>\n <Button\n size=\"xs\"\n color=\"secondary\"\n className=\"oui-affiliate-referralInfo-editSplit-btn\"\n onClick={() => props.onEdit()}\n >\n {t(\"common.edit\")}\n </Button>\n </Flex>\n\n <Flex justify={\"between\"} width={\"100%\"} mt={4}>\n <Text size=\"sm\" intensity={54}>\n {t(\"affiliate.youKeep\")}\n </Text>\n <Text size=\"sm\" intensity={54}>\n {t(\"affiliate.refereesGet\")}\n </Text>\n </Flex>\n\n <Flex justify={\"between\"} width={\"100%\"} mt={2}>\n <Text.formatted size=\"3xl\" intensity={80}>\n {props.referrerRebateRate}%\n </Text.formatted>\n <Text.formatted size=\"3xl\" intensity={36}>\n {props.refereeRebateRate}%\n </Text.formatted>\n </Flex>\n\n {props.directBonusRebateRate > 0 && (\n <Flex gap={2} mt={4} width={\"100%\"} className=\"oui-items-center\">\n <GiftIcon\n size={16}\n className=\"oui-shrink-0 oui-text-base-contrast oui-mt-[1px]\"\n />\n <Text\n intensity={54}\n as=\"span\"\n className=\"oui-flex-1 oui-min-w-0 oui-tracking-[0.03em]\"\n >\n <Trans\n i18nKey=\"affiliate.extraBonusOnDirectReferrals\"\n values={{ amount: props.directBonusRebateRate }}\n components={[<Text as=\"span\" color=\"primaryLight\" key=\"0\" />]}\n />\n </Text>\n </Flex>\n )}\n </Box>\n </Flex>\n );\n};\n\nconst Container: FC<{\n children: React.ReactNode;\n className?: string;\n}> = (props) => {\n return (\n <Flex\n width={\"100%\"}\n justify={\"between\"}\n px={5}\n r=\"2xl\"\n className={cn(\"oui-bg-base-contrast-4\", props.className)}\n >\n {props.children}\n </Flex>\n );\n};\n\nconst CopyButton: FC<{\n value?: string;\n}> = (props) => {\n const { t } = useTranslation();\n\n const onCopy = () => {\n if (!props.value) return;\n navigator.clipboard.writeText(props.value);\n toast.success(t(\"common.copy.copied\"));\n };\n\n return (\n <Button size=\"xs\" color=\"secondary\" onClick={onCopy}>\n {t(\"common.copy\")}\n </Button>\n );\n};\n","import { format, toDate } from \"date-fns\";\nimport { i18n } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\n\n// import { toZonedTime } from \"date-fns-tz\";\n// const { toZonedTime } = require(\"date-fns-tz\");\n\nexport function generateReferralLink(referralLinkUrl: string, code: string) {\n return `${referralLinkUrl || window?.location?.origin}?ref=${code}`;\n}\n\nexport async function copyText(content: string) {\n try {\n await navigator.clipboard.writeText(content);\n toast.success(i18n.t(\"common.copy.copied\"));\n } catch (error) {\n toast.success(i18n.t(\"common.copy.failed\"));\n }\n}\n\nexport function parseTime(time?: number | string): Date | null {\n if (!time) {\n return null;\n }\n const timestamp = typeof time === \"number\" ? time : Date.parse(time);\n\n if (!isNaN(timestamp)) {\n return new Date(timestamp);\n }\n\n return null;\n}\n\n//** will be return YYYY-MM-ddThh:mm:ssZ */\nexport function formatDateTimeToUTC(input?: number | string): string {\n if (input === undefined) {\n return \"\";\n }\n const date = toDate(input);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"yyyy-MM-dd HH:mm:ss 'UTC'\");\n}\n\n//** will return yyyy-MM-dd */\nexport function formatYMDTime(time?: number | string): string | undefined {\n if (time === undefined) {\n return undefined;\n }\n const date = toDate(time);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"yyyy-MM-dd\");\n}\n\n//** will return hh:mm */\nexport function formatHMTime(time?: number | string): string | undefined {\n if (time === undefined) {\n return undefined;\n }\n const date = toDate(time);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"hh:mm\");\n}\n\n//** will return MM-dd */\nexport function formatMdTime(time?: number | string): string | undefined {\n if (time === undefined) {\n return undefined;\n }\n const date = toDate(time);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"MM-dd\");\n}\n\n//** compare two date, yyyy-mm-dd */\nexport function compareDate(d1?: Date, d2?: Date) {\n const isEqual =\n d1 &&\n d2 &&\n d1.toISOString().substring(0, 10) === d2.toISOString().substring(0, 10);\n\n return isEqual;\n}\n\nexport function generateData(\n itemCount: number,\n data: any[] | null | undefined,\n timeKey: string,\n valueKey: string,\n): [string, number][] {\n const result: [string, number][] = [];\n\n for (let i = 0; i < itemCount; i++) {\n const currentDate = new Date();\n currentDate.setDate(currentDate.getDate() - i - 1);\n const currentDateStr = currentDate.toISOString().substring(0, 10);\n\n const matchedData = data?.find((item) => {\n const itemDate = parseTime(item[timeKey]);\n if (!itemDate) {\n return false;\n }\n return itemDate.toISOString().substring(0, 10) === currentDateStr;\n });\n\n if (matchedData) {\n result.push([currentDateStr, matchedData[valueKey]]);\n } else {\n result.push([currentDateStr, 0]);\n }\n }\n\n return result.reverse();\n}\n\nfunction toUTCDate(date: Date): Date {\n return new Date(date.toUTCString());\n}\n","import { useMemo } from \"react\";\nimport { modal } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useReferralContext } from \"../../../../provider\";\nimport { ReferralCodeFormField, ReferralCodeFormType } from \"../../../../types\";\nimport { generateReferralLink } from \"../../../../utils/utils\";\nimport { ReferralCodeFormDialogId } from \"../referralCodeForm/modal\";\n\nexport type ReferralInfoReturns = ReturnType<typeof useReferralInfoScript>;\n\nexport const useReferralInfoScript = () => {\n const {\n referralLinkUrl,\n multiLevelRebateInfo,\n multiLevelRebateInfoMutate,\n maxRebateRate,\n } = useReferralContext();\n\n const referralCode = multiLevelRebateInfo?.referral_code;\n\n const referralLink = useMemo(() => {\n if (!referralCode) return \"\";\n\n return generateReferralLink(referralLinkUrl, referralCode);\n }, [referralCode]);\n\n const referrerRebateRate = useMemo(() => {\n return new Decimal(multiLevelRebateInfo?.referrer_rebate_rate || 0)\n .mul(100)\n .toNumber();\n }, [multiLevelRebateInfo]);\n\n const refereeRebateRate = useMemo(() => {\n return new Decimal(multiLevelRebateInfo?.referee_rebate_rate || 0)\n .mul(100)\n .toNumber();\n }, [multiLevelRebateInfo]);\n\n const directBonusRebateRate = useMemo(() => {\n return new Decimal(multiLevelRebateInfo?.direct_bonus_rebate_rate ?? 0)\n .mul(100)\n .toNumber();\n }, [multiLevelRebateInfo]);\n\n const onEdit = (focusField?: ReferralCodeFormField) => {\n modal.show(ReferralCodeFormDialogId, {\n type: ReferralCodeFormType.Edit,\n focusField,\n referralCode: multiLevelRebateInfo?.referral_code,\n maxRebateRate,\n referrerRebateRate: multiLevelRebateInfo?.referrer_rebate_rate,\n directInvites: multiLevelRebateInfo?.direct_invites,\n directBonusRebateRate,\n onSuccess: () => {\n multiLevelRebateInfoMutate();\n },\n });\n };\n\n return {\n onEdit,\n referralCode,\n referralLink,\n multiLevelRebateInfo,\n referrerRebateRate,\n refereeRebateRate,\n directBonusRebateRate,\n };\n};\n","import { useReferralInfoScript } from \"./referralInfo.script\";\nimport { ReferralInfo } from \"./referralInfo.ui\";\n\nexport const ReferralInfoWidget = () => {\n const state = useReferralInfoScript();\n return <ReferralInfo {...state} />;\n};\n","import { useState } from \"react\";\n\nexport type ReferrerTableTab = \"commission\" | \"referees\" | \"codes\";\n\nexport const useReferrerTableScript = () => {\n const [activeTab, _setActiveTab] = useState<ReferrerTableTab>(\"commission\");\n const setActiveTab = (tab: ReferrerTableTab) => _setActiveTab(tab);\n return {\n activeTab,\n setActiveTab,\n };\n};\n\nexport type ReferrerTableScriptReturns = ReturnType<\n typeof useReferrerTableScript\n>;\n","import { useMemo } from \"react\";\nimport { usePrivateQuery } from \"@orderly.network/hooks\";\n\ntype Params = {\n /** default is 10 */\n size?: number;\n /** YYYY-MM-dd */\n startDate?: string;\n /** YYYY-MM-dd */\n endDate?: string;\n initialSize?: number;\n page?: number;\n fetchAll?: boolean;\n /** disable network request when false */\n enabled?: boolean;\n};\n\ntype ReferralHistoryItem = {\n account_id: string;\n user_address: string;\n referral_code: string;\n volume: number;\n referral_rebate: number;\n direct_bonus_rebate: number;\n date: string;\n};\n\ntype ReferralHistoryPageResponse = {\n rows: ReferralHistoryItem[];\n meta?: {\n total: number;\n records_per_page: number;\n current_page: number;\n };\n};\n\nexport const useReferralHistory = (params: Params) => {\n const { size, startDate, endDate, page, fetchAll, enabled = true } = params;\n\n const query = useMemo(() => {\n if (!enabled) return null;\n const search = new URLSearchParams({\n ...(startDate ? { start_date: startDate } : {}),\n ...(endDate ? { end_date: endDate } : {}),\n ...(!fetchAll && page !== undefined ? { page: String(page) } : {}),\n ...(!fetchAll && size !== undefined ? { size: String(size) } : {}),\n });\n\n const qs = search.toString();\n return qs\n ? `/v1/referral/referral_history?${qs}`\n : \"/v1/referral/referral_history\";\n }, [enabled, endDate, fetchAll, page, size, startDate]);\n\n const response = usePrivateQuery<\n ReferralHistoryPageResponse | { data?: ReferralHistoryPageResponse }\n >(query, {\n formatter: (data) => data,\n revalidateOnFocus: false,\n });\n\n const loadMore = () => {};\n\n const meta = useMemo(():\n | {\n total: number;\n records_per_page: number;\n current_page: number;\n }\n | undefined => {\n const payload =\n (response.data as { data?: ReferralHistoryPageResponse })?.data ??\n (response.data as ReferralHistoryPageResponse | undefined);\n if (payload?.meta) return payload.meta;\n if (!payload?.rows) return undefined;\n return {\n total: payload.rows.length,\n records_per_page: payload.rows.length,\n current_page: 1,\n };\n }, [response.data]);\n\n const total = useMemo(() => {\n if (typeof meta?.total === \"number\") return meta.total;\n return 0;\n }, [meta]);\n\n const flattenRows = useMemo((): ReferralHistoryItem[] | null => {\n if (!response.data) return null;\n const payload =\n (response.data as { data?: ReferralHistoryPageResponse })?.data ??\n (response.data as ReferralHistoryPageResponse | undefined);\n return payload?.rows ?? null;\n }, [response.data]);\n\n return [\n flattenRows,\n {\n total,\n isLoading: response.isLoading,\n refresh: response.mutate,\n loadMore,\n meta,\n },\n ] as const;\n};\n","import { useMemo, useState } from \"react\";\nimport { format, subDays } from \"date-fns\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { TableSort, usePagination, useScreen } from \"@orderly.network/ui\";\nimport { useReferralHistory } from \"../../../../../hooks/useReferralHistory\";\nimport { DateRange } from \"../../../../../utils/types\";\n\nexport type CommissionDataType = {\n date: string;\n code: string;\n volume: number;\n commission: number;\n directBonusRebate: number;\n address: string;\n};\n\nexport type UseCommissionTableScriptProps = {\n enabled?: boolean;\n};\n\nexport const useCommissionTableScript = (\n props: UseCommissionTableScriptProps = {},\n) => {\n const { enabled = true } = props;\n const { isMobile } = useScreen();\n const { state } = useAccount();\n\n const [dateRange, setDateRange] = useState<DateRange>({\n from: subDays(new Date(), 30),\n to: new Date(),\n });\n\n const { page, pageSize, parsePagination } = usePagination();\n\n const [sort, setSort] = useState<{\n key: keyof CommissionDataType;\n order: \"asc\" | \"desc\";\n } | null>(null);\n\n const [data, { meta, isLoading: isDataLoading }] = useReferralHistory({\n enabled: enabled && state.status >= AccountStatusEnum.EnableTrading,\n startDate: dateRange.from\n ? format(dateRange.from, \"yyyy-MM-dd\")\n : undefined,\n endDate: dateRange.to ? format(dateRange.to, \"yyyy-MM-dd\") : undefined,\n page: isMobile ? undefined : page,\n size: isMobile ? undefined : pageSize,\n fetchAll: isMobile,\n });\n\n const pagination = useMemo(() => {\n return parsePagination(meta);\n }, [meta, parsePagination]);\n\n const commissionData = useMemo(() => {\n if (!data) return [];\n\n const rows: CommissionDataType[] = data.map((row) => ({\n date: row.date,\n code: row.referral_code,\n volume: row.volume,\n commission: row.referral_rebate,\n directBonusRebate: row.direct_bonus_rebate,\n address: row.user_address,\n }));\n\n if (!sort) return rows;\n\n rows.sort((a, b) => {\n const valA = a[sort.key];\n const valB = b[sort.key];\n if (valA < valB) return sort.order === \"asc\" ? -1 : 1;\n if (valA > valB) return sort.order === \"asc\" ? 1 : -1;\n return 0;\n });\n\n return rows;\n }, [data, sort]);\n\n const onSort = (sort?: TableSort) => {\n if (!sort) {\n setSort(null);\n return;\n }\n const sortKey = sort.sortKey as keyof CommissionDataType;\n if (sortKey && (sortKey === \"volume\" || sortKey === \"commission\")) {\n setSort({\n key: sortKey,\n order: sort.sort === \"asc\" ? \"asc\" : \"desc\",\n });\n }\n };\n\n return {\n commissionData,\n dateRange,\n setDateRange,\n pagination,\n onSort,\n isLoading:\n state.status < AccountStatusEnum.EnableTrading ||\n !enabled ||\n isDataLoading,\n };\n};\n\nexport type CommissionTableScriptReturns = ReturnType<\n typeof useCommissionTableScript\n>;\n","import { FC, ReactNode, useCallback, MouseEvent } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Tooltip,\n formatAddress,\n Text,\n Flex,\n Grid,\n cn,\n useScreen,\n modal,\n} from \"@orderly.network/ui\";\nimport { commifyOptional } from \"@orderly.network/utils\";\n\nconst dashedUnderline =\n \"oui-cursor-pointer oui-underline oui-decoration-dashed oui-underline-offset-4 oui-decoration-base-contrast-36 oui-tracking-[0.03em]\";\n\nconst useMobileTooltipModal = (content: ReactNode, title?: ReactNode) => {\n const { isMobile } = useScreen();\n\n return useCallback(\n (e: MouseEvent) => {\n if (!isMobile) return;\n e.preventDefault();\n e.stopPropagation();\n\n modal.dialog({\n title,\n closable: true,\n size: \"sm\",\n content: (\n <div className=\"oui-text-sm oui-leading-5 oui-text-base-contrast\">\n {content}\n </div>\n ),\n });\n },\n [isMobile, content, title],\n );\n};\n\nexport const AddressCell: FC<{\n address: string;\n title?: ReactNode;\n}> = ({ address, title }) => {\n const onClick = useMobileTooltipModal(address, title);\n const { isMobile } = useScreen();\n return (\n <Tooltip content={address} open={isMobile ? false : undefined}>\n <Text className={dashedUnderline} onClick={onClick}>\n {formatAddress(address)}\n </Text>\n </Tooltip>\n );\n};\n\nexport const TooltipCell: FC<{\n text: string;\n tooltip: string | ReactNode;\n title?: ReactNode;\n}> = ({ text, tooltip, title }) => {\n const onClick = useMobileTooltipModal(tooltip, title);\n const { isMobile } = useScreen();\n return (\n <Tooltip content={tooltip} open={isMobile ? false : undefined}>\n <Text className={dashedUnderline} onClick={onClick}>\n {text}\n </Text>\n </Tooltip>\n );\n};\n\nexport const BreakdownCell: FC<{\n total: number;\n direct: number;\n indirect: number;\n directBonus?: number;\n prefix?: string;\n fix?: number;\n title?: ReactNode;\n}> = ({ total, direct, indirect, directBonus, prefix, fix = 0, title }) => {\n const { t } = useTranslation();\n const format = (val: number) =>\n commifyOptional(val, {\n fix,\n fallback: \"0\",\n padEnd: true,\n prefix,\n });\n\n const directLine = directBonus ? (\n <>\n • {t(\"affiliate.direct\")}: {format(direct + directBonus)}{\" \"}\n <span className=\"oui-text-base-contrast-54\">\n ({t(\"affiliate.directInclBonus\", { amount: format(directBonus) })})\n </span>\n </>\n ) : (\n <>\n • {t(\"affiliate.direct\")}: {format(direct)}\n </>\n );\n\n const tooltipContent = (\n <div className=\"oui-flex oui-flex-col oui-gap-1\">\n <div>{directLine}</div>\n <div>\n • {t(\"affiliate.indirect\")}: {format(indirect)}\n </div>\n </div>\n );\n const onClick = useMobileTooltipModal(tooltipContent, title);\n const { isMobile } = useScreen();\n\n return (\n <Tooltip content={tooltipContent} open={isMobile ? false : undefined}>\n <Text className={dashedUnderline} onClick={onClick}>\n {format(total)}\n </Text>\n </Tooltip>\n );\n};\n\nexport const MobileCell: FC<{\n label: string;\n children: ReactNode;\n align?: \"start\" | \"end\";\n className?: string;\n}> = ({ label, children, align = \"start\", className }) => {\n return (\n <Flex\n direction=\"column\"\n itemAlign={align}\n className={cn(\n \"oui-gap-1.5 oui-font-medium oui-tracking-[0.01em]\",\n className,\n )}\n >\n <Text intensity={36} size=\"2xs\" className=\"oui-leading-[15px]\">\n {label}\n </Text>\n <div className=\"oui-text-sm oui-leading-[20px]\">{children}</div>\n </Flex>\n );\n};\n\nexport const MobileCard: FC<{\n children: ReactNode;\n className?: string;\n}> = ({ children, className }) => {\n return (\n <Grid\n cols={3}\n py={3}\n r=\"xl\"\n width=\"100%\"\n className={cn(\"oui-bg-base-9 oui-gap-x-[6px] oui-gap-y-3\", className)}\n >\n {children}\n </Grid>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Flex,\n Column,\n Text,\n DatePicker,\n ListView,\n Divider,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { formatYMDTime } from \"../../../../../utils/utils\";\nimport {\n AddressCell,\n MobileCell,\n MobileCard,\n TooltipCell,\n} from \"../base/cells\";\nimport {\n CommissionDataType,\n CommissionTableScriptReturns,\n} from \"./commissionTable.script\";\n\ntype CommissionTableUIProps = CommissionTableScriptReturns;\n\nconst formatCommissionAmt = (v: number) =>\n commifyOptional(v, {\n fix: 6,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n });\n\nconst CommissionCell: FC<{\n item: CommissionDataType;\n}> = ({ item }) => {\n const { t } = useTranslation();\n const totalCommission = item.commission + item.directBonusRebate;\n const tooltip = (\n <>\n <div>\n • {t(\"affiliate.base\")}: {formatCommissionAmt(item.commission)}\n </div>\n <div>\n • {t(\"affiliate.directBonus\")}:{\" \"}\n {formatCommissionAmt(item.directBonusRebate)}\n </div>\n </>\n );\n return (\n <TooltipCell\n text={formatCommissionAmt(totalCommission)}\n tooltip={tooltip}\n title={t(\"affiliate.commission\")}\n />\n );\n};\n\nconst MobileCommissionItem: FC<{\n item: CommissionDataType;\n}> = ({ item }) => {\n const { t } = useTranslation();\n return (\n <MobileCard>\n <MobileCell label={t(\"common.date\")}>\n <Text>{formatYMDTime(item.date)}</Text>\n </MobileCell>\n <MobileCell label={t(\"common.code\")}>\n <Text>{item.code}</Text>\n </MobileCell>\n <MobileCell label={t(\"common.volume\")} align=\"end\">\n <Text>\n {commifyOptional(item.volume, {\n fix: 2,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n })}\n </Text>\n </MobileCell>\n <MobileCell label={t(\"affiliate.commission\")}>\n <CommissionCell item={item} />\n </MobileCell>\n <MobileCell\n label={t(\"common.address\")}\n align=\"end\"\n className=\"oui-col-start-3\"\n >\n <AddressCell address={item.address} title={t(\"common.address\")} />\n </MobileCell>\n </MobileCard>\n );\n};\n\nexport const CommissionTableUI: FC<CommissionTableUIProps> = (props) => {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const showPagination = (props.pagination?.count ?? 0) >= 10;\n\n const columns = useMemo<Column<CommissionDataType>[]>(() => {\n return [\n {\n title: t(\"common.date\"),\n dataIndex: \"date\",\n render: (value: string) => formatYMDTime(value),\n },\n {\n title: t(\"common.code\"),\n dataIndex: \"code\",\n },\n {\n title: t(\"common.volume\"),\n dataIndex: \"volume\",\n render: (value: number) => (\n <Text>\n {commifyOptional(value, {\n fix: 2,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n })}\n </Text>\n ),\n onSort: true,\n },\n {\n title: t(\"affiliate.commission\"),\n dataIndex: \"commission\",\n render: (_value: number, record: CommissionDataType) => (\n <CommissionCell item={record} />\n ),\n onSort: true,\n },\n {\n title: t(\"common.address\"),\n dataIndex: \"address\",\n render: (value: string) => (\n <AddressCell address={value} title={t(\"common.address\")} />\n ),\n },\n ];\n }, [t]);\n\n return (\n <div className=\"oui-affiliate-commissionTable oui-flex oui-w-full oui-flex-col\">\n <Flex\n width=\"100%\"\n height={49}\n className=\"oui-commissionTable-header oui-border-b oui-border-line-6\"\n >\n <div className=\"oui-px-3\">\n <DatePicker.range\n size=\"xs\"\n value={props.dateRange}\n onChange={props.setDateRange}\n max={90}\n disabled={{ after: new Date() }}\n />\n </div>\n </Flex>\n\n {isMobile ? (\n <div className=\"oui-affiliate-commissionTable-list oui-flex oui-flex-col oui-px-4\">\n <ListView\n dataSource={props.commissionData}\n contentClassName=\"!oui-space-y-0 oui-pb-3\"\n renderItem={(item, index) => (\n <div key={index}>\n <MobileCommissionItem item={item} />\n <Divider intensity={8} />\n </div>\n )}\n />\n </div>\n ) : (\n <div\n className={`oui-affiliate-commissionTable-container oui-px-3 ${showPagination ? \"\" : \"oui-pb-3\"}`}\n >\n <AuthGuardDataTable\n bordered\n columns={columns}\n dataSource={props.commissionData}\n loading={props.isLoading}\n pagination={showPagination ? props.pagination : undefined}\n onSort={props.onSort}\n onRow={() => ({ className: \"oui-commissionTable-row oui-h-12\" })}\n className=\"oui-commissionTable-table [&_.oui-h-10.oui-w-full]:!oui-mx-0 [&_.oui-table-pagination]:!oui-justify-end [&_th]:!oui-tracking-[0.03em] [&_th]:!oui-px-3 [&_td]:!oui-px-3\"\n />\n </div>\n )}\n </div>\n );\n};\n","import { FC } from \"react\";\nimport {\n useCommissionTableScript,\n UseCommissionTableScriptProps,\n} from \"./commissionTable.script\";\nimport { CommissionTableUI } from \"./commissionTable.ui\";\n\nexport const CommissionTableWidget: FC<UseCommissionTableScriptProps> = (\n props,\n) => {\n const state = useCommissionTableScript(props);\n return <CommissionTableUI {...state} />;\n};\n","import { useMemo } from \"react\";\nimport { useAccount, usePrivateQuery } from \"@orderly.network/hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\n\nexport type RefereeDataType = {\n account_id: string;\n address: string;\n bind_code: string;\n bind_type: string;\n code_binding_time: number;\n is_default_rate: boolean;\n referral_rebate_rate: number;\n referee_rebate_rate: number;\n direct_rebate: number;\n direct_bonus_rebate: number;\n indirect_rebate: number;\n network_size: number;\n volume: number;\n commission: number;\n direct_invites: number;\n indirect_invites: number;\n direct_volume: number;\n indirect_volume: number;\n};\n\nexport type RefereePaginationMeta = {\n total: number;\n current_page: number;\n records_per_page: number;\n};\n\ntype RefereesResponse = {\n rows?: RefereeDataType[];\n data?: { rows?: RefereeDataType[]; meta?: RefereePaginationMeta };\n success?: boolean;\n timestamp?: number;\n meta?: RefereePaginationMeta;\n};\n\nexport type UseMultiLevelRefereesParams = {\n /** disable network request when false */\n enabled?: boolean;\n /** fetch without pagination params (used by mobile) */\n fetchAll?: boolean;\n page?: number;\n pageSize?: number;\n};\n\nexport const useMultiLevelReferees = (\n params: UseMultiLevelRefereesParams = {},\n) => {\n const { enabled = true, fetchAll = false, page, pageSize } = params;\n const { state } = useAccount();\n\n const canQuery = enabled && state.status >= AccountStatusEnum.EnableTrading;\n\n const queryKey = useMemo(() => {\n if (!canQuery) return null;\n if (fetchAll) return \"/v1/referral/multi_level/referee_list\";\n if (page !== undefined && pageSize !== undefined) {\n return `/v1/referral/multi_level/referee_list?page=${page}&size=${pageSize}`;\n }\n return \"/v1/referral/multi_level/referee_list\";\n }, [canQuery, fetchAll, page, pageSize]);\n\n const response = usePrivateQuery<RefereesResponse>(queryKey, {\n formatter: (payload) => {\n const rows = payload.rows ?? payload.data?.rows ?? [];\n const meta = payload.meta ?? payload.data?.meta;\n return {\n ...payload,\n meta,\n rows: rows.map((row: RefereeDataType) => ({\n ...row,\n network_size: row.direct_invites + row.indirect_invites,\n volume: row.direct_volume + row.indirect_volume,\n commission:\n row.direct_rebate + row.indirect_rebate + row.direct_bonus_rebate,\n })),\n };\n },\n revalidateOnFocus: false,\n });\n\n return {\n ...response,\n isLoading:\n state.status < AccountStatusEnum.EnableTrading ||\n !enabled ||\n response.isLoading,\n rows: response.data?.rows ?? [],\n meta: response.data?.meta,\n };\n};\n\nexport type UseMultiLevelRefereesReturns = ReturnType<\n typeof useMultiLevelReferees\n>;\n","import { useCallback, useMemo, useState } from \"react\";\nimport {\n TableSort,\n modal,\n usePagination,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport {\n RefereeDataType,\n useMultiLevelReferees,\n} from \"../../../../../hooks/useMultiLevelReferees\";\nimport { useReferralContext } from \"../../../../../provider\";\nimport { ReferralCodeFormType } from \"../../../../../types\";\nimport { ReferralCodeFormDialogId } from \"../../referralCodeForm/modal\";\n\ntype RefereesSortableKey =\n | \"referee_rebate_rate\"\n | \"network_size\"\n | \"volume\"\n | \"commission\";\n\nexport type UseRefereesTableScriptProps = {\n enabled?: boolean;\n};\n\nexport const useRefereesTableScript = (\n props: UseRefereesTableScriptProps = {},\n) => {\n const { enabled = true } = props;\n const { isMobile } = useScreen();\n const refereesPaginationUtils = usePagination();\n\n const [refereesSort, setRefereesSort] = useState<{\n key: RefereesSortableKey;\n order: \"asc\" | \"desc\";\n } | null>(null);\n\n const {\n isLoading: isRefereesLoading,\n mutate: refereesMutate,\n rows: refereesRows,\n meta: refereesMeta,\n } = useMultiLevelReferees({\n enabled,\n fetchAll: isMobile,\n page: refereesPaginationUtils.page,\n pageSize: refereesPaginationUtils.pageSize,\n });\n\n const refereesPagination = useMemo(() => {\n return refereesPaginationUtils.parsePagination(refereesMeta);\n }, [refereesMeta, refereesPaginationUtils]);\n\n const { multiLevelRebateInfo, maxRebateRate, multiLevelRebateInfoMutate } =\n useReferralContext();\n\n const onEditReferee = useCallback(\n (type: ReferralCodeFormType, item: RefereeDataType) => {\n const referrerRebateRate =\n type === ReferralCodeFormType.Reset\n ? multiLevelRebateInfo?.referrer_rebate_rate\n : item.referral_rebate_rate;\n\n modal.show(ReferralCodeFormDialogId, {\n type,\n referralCode: multiLevelRebateInfo?.referral_code,\n maxRebateRate,\n referrerRebateRate,\n onSuccess: () => {\n multiLevelRebateInfoMutate();\n refereesMutate();\n },\n accountId: item.account_id,\n multiLevelRebateInfo,\n directInvites: multiLevelRebateInfo?.direct_invites,\n directBonusRebateRate: new Decimal(\n multiLevelRebateInfo?.direct_bonus_rebate_rate ?? 0,\n )\n .mul(100)\n .toNumber(),\n });\n },\n [\n maxRebateRate,\n multiLevelRebateInfo?.referral_code,\n multiLevelRebateInfo?.referrer_rebate_rate,\n multiLevelRebateInfoMutate,\n refereesMutate,\n ],\n );\n\n const refereesData = useMemo(() => {\n const rows = refereesRows ?? [];\n if (!refereesSort) return rows;\n\n const sortableRows = rows.map((row, index) => ({\n row,\n index,\n }));\n\n sortableRows.sort((a, b) => {\n const valA = Number(a.row[refereesSort.key] ?? 0);\n const valB = Number(b.row[refereesSort.key] ?? 0);\n if (valA < valB) return refereesSort.order === \"asc\" ? -1 : 1;\n if (valA > valB) return refereesSort.order === \"asc\" ? 1 : -1;\n return a.index - b.index;\n });\n\n return sortableRows.map((item) => item.row);\n }, [refereesRows, refereesSort]);\n\n const onRefereesSort = (sort?: TableSort) => {\n if (!sort) {\n setRefereesSort(null);\n return;\n }\n const sortKey = sort.sortKey as RefereesSortableKey;\n if (\n sortKey &&\n (sortKey === \"referee_rebate_rate\" ||\n sortKey === \"network_size\" ||\n sortKey === \"volume\" ||\n sortKey === \"commission\")\n ) {\n setRefereesSort({\n key: sortKey,\n order: sort.sort === \"asc\" ? \"asc\" : \"desc\",\n });\n }\n };\n\n return {\n refereesData,\n refereesPagination,\n isRefereesLoading,\n onEditReferee,\n onRefereesSort,\n };\n};\n\nexport type RefereesTableScriptReturns = ReturnType<\n typeof useRefereesTableScript\n>;\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Column,\n Text,\n Flex,\n ListView,\n Divider,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\nimport { RefereeDataType } from \"../../../../../hooks/useMultiLevelReferees\";\nimport { ReferralCodeFormType } from \"../../../../../types\";\nimport { formatYMDTime } from \"../../../../../utils/utils\";\nimport {\n AddressCell,\n BreakdownCell,\n TooltipCell,\n MobileCell,\n MobileCard,\n} from \"../base/cells\";\nimport { RefereesTableScriptReturns } from \"./refereesTable.script\";\n\ntype RefereesTableUIProps = RefereesTableScriptReturns;\n\nconst getRebateRateText = (rate: number) => {\n return (rate * 100).toFixed(0) + \"%\";\n};\n\nconst getRefereeType = (bindType: string) => {\n const { t } = useTranslation();\n if (bindType === \"legacy\") {\n return {\n text: t(\"affiliate.singleLevelLegacy\"),\n tooltip: t(\"affiliate.singleLevelLegacy.tooltip\"),\n };\n }\n\n return {\n text: t(\"affiliate.multiLevel\"),\n tooltip: t(\"affiliate.multiLevel.tooltip\"),\n };\n};\n\nconst MobileRefereeItem: FC<{\n item: RefereeDataType;\n onEditReferee: RefereesTableScriptReturns[\"onEditReferee\"];\n}> = ({ item, onEditReferee }) => {\n const { t } = useTranslation();\n const typeInfo = getRefereeType(item.bind_type);\n return (\n <MobileCard>\n <MobileCell label={t(\"common.address\")}>\n <AddressCell address={item.address} title={t(\"common.address\")} />\n </MobileCell>\n <MobileCell label={t(\"common.type\")}>\n <TooltipCell\n text={typeInfo.text}\n tooltip={typeInfo.tooltip}\n title={t(\"common.type\")}\n />\n </MobileCell>\n <MobileCell label={t(\"affiliate.boundAt\")} align=\"end\">\n <Text size=\"sm\">{formatYMDTime(item.code_binding_time)}</Text>\n </MobileCell>\n <MobileCell label={t(\"affiliate.referralCodes\")}>\n <Text size=\"sm\">{item.bind_code}</Text>\n </MobileCell>\n\n <MobileCell label={t(\"affiliate.referralCodes.column.you&Referee\")}>\n <Text size=\"sm\">\n {getRebateRateText(item.referral_rebate_rate) + \"/\"}\n <span className=\"oui-text-base-contrast-54\">\n {getRebateRateText(item.referee_rebate_rate)}{\" \"}\n </span>\n {!item.is_default_rate && (\n <span className=\"oui-text-primary-light\">\n {`(${t(\"affiliate.customized\")})`}\n </span>\n )}\n </Text>\n </MobileCell>\n <MobileCell label={t(\"affiliate.networkSize\")} align=\"end\">\n <BreakdownCell\n total={item.network_size}\n direct={item.direct_invites}\n indirect={item.indirect_invites}\n title={t(\"affiliate.networkSize\")}\n />\n </MobileCell>\n <MobileCell label={t(\"common.volume\")}>\n <BreakdownCell\n total={item.volume}\n direct={item.direct_volume}\n indirect={item.indirect_volume}\n prefix=\"$\"\n fix={2}\n title={t(\"common.volume\")}\n />\n </MobileCell>\n\n <MobileCell label={t(\"affiliate.commission\")}>\n <BreakdownCell\n total={item.commission}\n direct={item.direct_rebate}\n indirect={item.indirect_rebate}\n directBonus={item.direct_bonus_rebate}\n prefix=\"$\"\n fix={6}\n title={t(\"affiliate.commission\")}\n />\n </MobileCell>\n <MobileCell\n label={t(\"common.action\")}\n align=\"end\"\n className=\"oui-col-start-3\"\n >\n {item.bind_type !== \"legacy\" && (\n <Flex gap={2}>\n <Text\n className=\"oui-refereesTable-edit-btn oui-cursor-pointer oui-text-primary-light\"\n onClick={() => onEditReferee(ReferralCodeFormType.Edit, item)}\n >\n {t(\"common.edit\")}\n </Text>\n {!item.is_default_rate && (\n <Text\n className=\"oui-refereesTable-reset-btn oui-cursor-pointer oui-text-primary-light\"\n onClick={() => onEditReferee(ReferralCodeFormType.Reset, item)}\n >\n {t(\"common.reset\")}\n </Text>\n )}\n </Flex>\n )}\n </MobileCell>\n </MobileCard>\n );\n};\n\nexport const RefereesTableUI: FC<RefereesTableUIProps> = (props) => {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const showPagination = (props.refereesPagination?.count ?? 0) >= 10;\n\n const refereeColumns = useMemo<Column<RefereeDataType>[]>(() => {\n return [\n {\n title: t(\"common.address\"),\n dataIndex: \"address\",\n render: (value: string) => (\n <AddressCell address={value} title={t(\"common.address\")} />\n ),\n },\n {\n title: t(\"common.type\"),\n dataIndex: \"bind_type\",\n render: (_: unknown, record: RefereeDataType) => {\n const typeInfo = getRefereeType(record.bind_type);\n return (\n <TooltipCell\n text={typeInfo.text}\n tooltip={typeInfo.tooltip}\n title={t(\"common.type\")}\n />\n );\n },\n },\n {\n title: t(\"affiliate.boundAt\"),\n dataIndex: \"code_binding_time\",\n render: (value: number) => <Text>{formatYMDTime(value)}</Text>,\n },\n {\n title: t(\"affiliate.referralCodes\"),\n dataIndex: \"bind_code\",\n render: (value: string) => <Text>{value}</Text>,\n },\n {\n title: t(\"affiliate.referralCodes.column.you&Referee\"),\n dataIndex: \"referee_rebate_rate\",\n render: (_: unknown, record: RefereeDataType) => (\n <Text>\n {getRebateRateText(record.referral_rebate_rate) + \"/\"}\n <span className=\"oui-text-base-contrast-54\">\n {getRebateRateText(record.referee_rebate_rate)}{\" \"}\n </span>\n {!record.is_default_rate && (\n <span className=\"oui-text-primary-light\">\n {`(${t(\"affiliate.customized\")})`}\n </span>\n )}\n </Text>\n ),\n onSort: true,\n },\n {\n title: t(\"affiliate.networkSize\"),\n dataIndex: \"network_size\",\n render: (_: number, record: RefereeDataType) => (\n <BreakdownCell\n total={record.network_size}\n direct={record.direct_invites}\n indirect={record.indirect_invites}\n title={t(\"affiliate.networkSize\")}\n />\n ),\n onSort: true,\n },\n {\n title: t(\"common.volume\"),\n dataIndex: \"volume\",\n render: (_: number, record: RefereeDataType) => (\n <BreakdownCell\n total={record.volume}\n direct={record.direct_volume}\n indirect={record.indirect_volume}\n prefix=\"$\"\n fix={2}\n title={t(\"common.volume\")}\n />\n ),\n onSort: true,\n },\n {\n title: t(\"affiliate.commission\"),\n dataIndex: \"commission\",\n render: (_: number, record: RefereeDataType) => (\n <BreakdownCell\n total={record.commission}\n direct={record.direct_rebate}\n indirect={record.indirect_rebate}\n directBonus={record.direct_bonus_rebate}\n prefix=\"$\"\n fix={6}\n title={t(\"affiliate.commission\")}\n />\n ),\n onSort: true,\n },\n {\n title: t(\"common.action\"),\n dataIndex: \"action\",\n render: (_: unknown, record: RefereeDataType) =>\n record.bind_type !== \"legacy\" ? (\n <>\n <Text\n className=\"oui-refereesTable-edit-btn oui-cursor-pointer oui-text-primary-light\"\n onClick={() =>\n props.onEditReferee(ReferralCodeFormType.Edit, record)\n }\n >\n {t(\"common.edit\")}\n </Text>\n {!record.is_default_rate && (\n <Text\n className=\"oui-refereesTable-reset-btn oui-ml-2 oui-cursor-pointer oui-text-primary-light\"\n onClick={() =>\n props.onEditReferee(ReferralCodeFormType.Reset, record)\n }\n >\n {t(\"common.reset\")}\n </Text>\n )}\n </>\n ) : null,\n },\n ];\n }, [t, props.onEditReferee]);\n\n return (\n <>\n {isMobile ? (\n <div className=\"oui-affiliate-refereesTable oui-flex oui-flex-col oui-px-4\">\n <ListView\n dataSource={props.refereesData}\n contentClassName=\"!oui-space-y-0 oui-pb-3\"\n renderItem={(item, index) => (\n <div key={index}>\n <MobileRefereeItem\n item={item}\n onEditReferee={props.onEditReferee}\n />\n <Divider intensity={8} />\n </div>\n )}\n />\n </div>\n ) : (\n <div\n className={`oui-affiliate-refereesTable oui-px-3 ${\n showPagination ? \"\" : \"oui-pb-3\"\n }`}\n >\n <AuthGuardDataTable\n bordered\n columns={refereeColumns}\n dataSource={props.refereesData}\n loading={props.isRefereesLoading}\n pagination={showPagination ? props.refereesPagination : undefined}\n onSort={props.onRefereesSort}\n onRow={() => ({ className: \"oui-refereesTable-row oui-h-12\" })}\n className=\"oui-refereesTable-table [&_.oui-h-10.oui-w-full]:!oui-mx-0 [&_.oui-table-pagination]:!oui-justify-end [&_th]:!oui-tracking-[0.03em] [&_th]:!oui-px-3 [&_td]:!oui-px-3\"\n />\n </div>\n )}\n </>\n );\n};\n","import { FC } from \"react\";\nimport {\n useRefereesTableScript,\n UseRefereesTableScriptProps,\n} from \"./refereesTable.script\";\nimport { RefereesTableUI } from \"./refereesTable.ui\";\n\nexport const RefereesTableWidget: FC<UseRefereesTableScriptProps> = (props) => {\n const state = useRefereesTableScript(props);\n return <RefereesTableUI {...state} />;\n};\n","import { useMemo } from \"react\";\nimport { useRefereeInfo } from \"@orderly.network/hooks\";\nimport { useReferralContext } from \"../provider\";\nimport { copyText } from \"../utils/utils\";\nimport { useMultiLevelRebateInfo } from \"./useReferralApi\";\n\nexport type ReferralCodesRow = {\n code: string;\n direct_invites: number;\n indirect_invites: number;\n direct_volume: number;\n indirect_volume: number;\n direct_rebate: number;\n indirect_rebate: number;\n direct_bonus_rebate?: number;\n max_rebate_rate: number;\n referee_rebate_rate: number;\n referrer_rebate_rate: number;\n total_invites: number;\n total_volume: number;\n total_rebate: number;\n referral_type: \"multi\" | \"single\";\n};\n\nexport type UseMultiLevelReferralCodesReturns = {\n codes?: ReferralCodesRow[];\n copyCode: (code: string) => void;\n};\n\nexport const useMultiLevelReferralCodes =\n (): UseMultiLevelReferralCodesReturns => {\n const { referralInfo } = useReferralContext();\n const { data: multiLevelRebateInfo } = useMultiLevelRebateInfo();\n console.log(\"multiLevelRebateInfo\", multiLevelRebateInfo);\n const [refereesData] = useRefereeInfo({});\n\n const copyCode = (code: string) => {\n copyText(code);\n };\n\n const singleLevelTotals = useMemo(() => {\n const totalsMap = new Map<\n string,\n { volume: number; commission: number }\n >();\n\n if (refereesData) {\n refereesData.forEach((referee: any) => {\n const code = referee?.referral_code;\n if (!code) return;\n const existing = totalsMap.get(code) || { volume: 0, commission: 0 };\n totalsMap.set(code, {\n volume: existing.volume + (referee?.volume || 0),\n commission: existing.commission + (referee?.referral_rebate || 0),\n });\n });\n }\n\n return totalsMap;\n }, [refereesData]);\n\n const codes = useMemo((): ReferralCodesRow[] | undefined => {\n const allCodes: ReferralCodesRow[] = [];\n const multiLevelReferralCode = multiLevelRebateInfo?.referral_code;\n\n // Add multi-level code if present\n if (multiLevelRebateInfo?.referral_code) {\n const maxRebateRate = multiLevelRebateInfo.max_rebate_rate ?? 0;\n const defaultRefereeRebateRate =\n multiLevelRebateInfo.default_referee_rebate_rate ?? 0;\n const referrerRebateRate = Math.max(\n 0,\n maxRebateRate - defaultRefereeRebateRate,\n );\n\n const directInvites = multiLevelRebateInfo?.direct_invites ?? 0;\n const indirectInvites = multiLevelRebateInfo?.indirect_invites ?? 0;\n const directVolume = multiLevelRebateInfo?.direct_volume ?? 0;\n const indirectVolume = multiLevelRebateInfo?.indirect_volume ?? 0;\n const directRebate = multiLevelRebateInfo?.direct_rebate ?? 0;\n const indirectRebate = multiLevelRebateInfo?.indirect_rebate ?? 0;\n const directBonusRebate =\n multiLevelRebateInfo?.direct_bonus_rebate ?? 0;\n\n const multiLevelCode: ReferralCodesRow = {\n code: multiLevelRebateInfo.referral_code ?? \"\",\n direct_invites: directInvites,\n indirect_invites: indirectInvites,\n direct_volume: directVolume,\n indirect_volume: indirectVolume,\n direct_rebate: directRebate,\n indirect_rebate: indirectRebate,\n direct_bonus_rebate: directBonusRebate,\n max_rebate_rate: maxRebateRate,\n referee_rebate_rate: defaultRefereeRebateRate,\n referrer_rebate_rate: referrerRebateRate,\n total_invites: directInvites + indirectInvites,\n total_volume: directVolume + indirectVolume,\n total_rebate: directRebate + indirectRebate + directBonusRebate,\n referral_type: \"multi\",\n };\n\n allCodes.push(multiLevelCode);\n }\n\n // Add legacy single-level codes\n if (referralInfo?.referrer_info?.referral_codes) {\n allCodes.push(\n ...referralInfo.referrer_info.referral_codes\n .filter((item) =>\n multiLevelReferralCode\n ? item.code !== multiLevelReferralCode\n : true,\n )\n .map((item) => {\n const totals = singleLevelTotals.get(item.code);\n const totalVolume = totals?.volume ?? item.total_volume ?? 0;\n const totalRebate = totals?.commission ?? item.total_rebate ?? 0;\n const totalInvites = item.total_invites ?? 0;\n\n const row: ReferralCodesRow = {\n code: item.code,\n referral_type: \"single\",\n direct_invites: totalInvites,\n indirect_invites: 0,\n direct_volume: totalVolume,\n indirect_volume: 0,\n direct_rebate: totalRebate,\n indirect_rebate: 0,\n max_rebate_rate: item.max_rebate_rate ?? 0,\n referee_rebate_rate: item.referee_rebate_rate ?? 0,\n referrer_rebate_rate: item.referrer_rebate_rate ?? 0,\n total_invites: totalInvites,\n total_volume: totalVolume,\n total_rebate: totalRebate,\n };\n return row;\n }),\n );\n }\n\n if (allCodes.length === 0) return undefined;\n return allCodes;\n }, [\n referralInfo?.referrer_info?.referral_codes,\n multiLevelRebateInfo,\n singleLevelTotals,\n ]);\n\n return {\n codes,\n copyCode,\n };\n };\n","import { useMemo, useState } from \"react\";\nimport { TableSort } from \"@orderly.network/ui\";\nimport {\n ReferralCodesRow,\n useMultiLevelReferralCodes,\n} from \"../../../../../hooks/useMultiLevelReferralCodes\";\n\ntype ReferralCodesSortableKey =\n | \"total_invites\"\n | \"total_volume\"\n | \"total_rebate\";\ntype ReferralCodesSortableRow = ReferralCodesRow &\n Record<ReferralCodesSortableKey, number | undefined>;\n\nexport type UseReferralCodesTableScriptProps = {\n enabled?: boolean;\n};\n\nexport const useReferralCodesTableScript = (\n props: UseReferralCodesTableScriptProps = {},\n) => {\n const { enabled = true } = props;\n const { codes, copyCode } = useMultiLevelReferralCodes();\n const [sort, setSort] = useState<{\n key: ReferralCodesSortableKey;\n order: \"asc\" | \"desc\";\n } | null>(null);\n\n const sortedCodes = useMemo(() => {\n if (!enabled) return undefined;\n if (!codes || !sort) return codes;\n\n const sortableCodes = codes.map((code, index) => ({\n code,\n index,\n }));\n\n sortableCodes.sort((a, b) => {\n const valA = Number((a.code as ReferralCodesSortableRow)[sort.key] ?? 0);\n const valB = Number((b.code as ReferralCodesSortableRow)[sort.key] ?? 0);\n if (valA < valB) return sort.order === \"asc\" ? -1 : 1;\n if (valA > valB) return sort.order === \"asc\" ? 1 : -1;\n return a.index - b.index;\n });\n\n return sortableCodes.map((item) => item.code) as ReferralCodesRow[];\n }, [codes, enabled, sort]);\n\n const onSort = (sort?: TableSort) => {\n if (!sort) {\n setSort(null);\n return;\n }\n const sortKey = sort.sortKey as ReferralCodesSortableKey;\n if (\n sortKey &&\n (sortKey === \"total_invites\" ||\n sortKey === \"total_volume\" ||\n sortKey === \"total_rebate\")\n ) {\n setSort({\n key: sortKey,\n order: sort.sort === \"asc\" ? \"asc\" : \"desc\",\n });\n }\n };\n\n return {\n codes,\n sortedCodes,\n copyCode,\n onSort,\n isLoading: enabled && !codes,\n };\n};\n\nexport type ReferralCodesTableScriptReturns = ReturnType<\n typeof useReferralCodesTableScript\n>;\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Column,\n Text,\n ListView,\n Divider,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { ReferralCodesRow } from \"../../../../../hooks/useMultiLevelReferralCodes\";\nimport {\n MobileCell,\n MobileCard,\n TooltipCell,\n BreakdownCell,\n} from \"../base/cells\";\nimport { ReferralCodesTableScriptReturns } from \"./referralCodesTable.script\";\n\ntype ReferralCodesTableUIProps = ReferralCodesTableScriptReturns;\n\nconst getReferralCodeType = (referralType?: \"single\" | \"multi\") => {\n const { t } = useTranslation();\n if (referralType === \"multi\") {\n return {\n text: t(\"affiliate.multiLevel\"),\n tooltip: t(\"affiliate.multiLevel.tooltip\"),\n };\n }\n\n return {\n text: t(\"affiliate.singleLevelLegacy\"),\n tooltip: t(\"affiliate.singleLevelLegacy.tooltip\"),\n };\n};\n\nconst MobileReferralCodeItem: FC<{\n item: ReferralCodesRow;\n copyCode: (code: string) => void;\n}> = ({ item, copyCode }) => {\n const { t } = useTranslation();\n const referrerRate = new Decimal(item.referrer_rebate_rate ?? 0)\n .mul(100)\n .toFixed(0);\n const refereeRate = new Decimal(item.referee_rebate_rate ?? 0)\n .mul(100)\n .toFixed(0);\n const typeInfo = getReferralCodeType(item.referral_type);\n\n return (\n <MobileCard>\n <MobileCell label={t(\"affiliate.referralCode\")}>\n <Text>{item.code || \"\"}</Text>\n </MobileCell>\n <MobileCell label={t(\"common.type\")}>\n <TooltipCell\n text={typeInfo.text}\n tooltip={typeInfo.tooltip}\n title={t(\"common.type\")}\n />\n </MobileCell>\n <MobileCell\n label={t(\"affiliate.referralCodes.column.you&Referee\")}\n align=\"end\"\n >\n <Text>\n {referrerRate}%/\n <span className=\"oui-text-base-contrast-54\">{refereeRate}%</span>\n </Text>\n </MobileCell>\n <MobileCell label={t(\"affiliate.networkSize\")}>\n <BreakdownCell\n total={item.total_invites ?? 0}\n direct={item.direct_invites ?? 0}\n indirect={item.indirect_invites ?? 0}\n title={t(\"affiliate.networkSize\")}\n />\n </MobileCell>\n <MobileCell label={t(\"common.volume\")}>\n <BreakdownCell\n total={item.total_volume ?? 0}\n direct={item.direct_volume ?? 0}\n indirect={item.indirect_volume ?? 0}\n prefix=\"$\"\n fix={2}\n title={t(\"common.volume\")}\n />\n </MobileCell>\n <MobileCell label={t(\"affiliate.commission\")} align=\"end\">\n <BreakdownCell\n total={item.total_rebate ?? 0}\n direct={item.direct_rebate ?? 0}\n indirect={item.indirect_rebate ?? 0}\n directBonus={item.direct_bonus_rebate}\n prefix=\"$\"\n fix={6}\n title={t(\"affiliate.commission\")}\n />\n </MobileCell>\n\n <MobileCell label={t(\"common.action\")}>\n <Text\n className=\"oui-referralCodesTable-copyCode-btn oui-cursor-pointer oui-text-primary-light\"\n onClick={(e) => {\n e.stopPropagation();\n copyCode(item.code);\n }}\n >\n {t(\"common.copy\")}\n </Text>\n </MobileCell>\n </MobileCard>\n );\n};\n\nexport const ReferralCodesTableUI: FC<ReferralCodesTableUIProps> = (props) => {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n const columns = useMemo<Column<ReferralCodesRow>[]>(() => {\n return [\n {\n title: t(\"affiliate.referralCode\"),\n dataIndex: \"code\",\n render: (value: string) => <Text>{value || \"\"}</Text>,\n },\n {\n title: t(\"common.type\"),\n dataIndex: \"referral_type\",\n render: (_: unknown, record: ReferralCodesRow) => {\n const typeInfo = getReferralCodeType(record.referral_type);\n return (\n <TooltipCell\n text={typeInfo.text}\n tooltip={typeInfo.tooltip}\n title={t(\"common.type\")}\n />\n );\n },\n },\n {\n title: (\n <Text>\n {t(\"affiliate.referralCodes.column.defaultSplit\")}\n <br />({t(\"affiliate.referralCodes.column.you&Referee\")})\n </Text>\n ),\n dataIndex: \"rate\",\n render: (_: unknown, record: ReferralCodesRow) => {\n const referrerRate = new Decimal(record.referrer_rebate_rate ?? 0)\n .mul(100)\n .toFixed(0);\n const refereeRate = new Decimal(record.referee_rebate_rate ?? 0)\n .mul(100)\n .toFixed(0);\n return (\n <Text>\n {referrerRate}%\n <span className=\"oui-text-base-contrast-54\">/{refereeRate}%</span>\n </Text>\n );\n },\n },\n {\n title: t(\"affiliate.networkSize\"),\n dataIndex: \"total_invites\",\n render: (_: unknown, record: ReferralCodesRow) => {\n return (\n <BreakdownCell\n total={record.total_invites ?? 0}\n direct={record.direct_invites ?? 0}\n indirect={record.indirect_invites ?? 0}\n title={t(\"affiliate.networkSize\")}\n />\n );\n },\n onSort: true,\n },\n {\n title: t(\"common.volume\"),\n dataIndex: \"total_volume\",\n render: (_: unknown, record: ReferralCodesRow) => {\n return (\n <BreakdownCell\n total={record.total_volume ?? 0}\n direct={record.direct_volume ?? 0}\n indirect={record.indirect_volume ?? 0}\n prefix=\"$\"\n fix={2}\n title={t(\"common.volume\")}\n />\n );\n },\n onSort: true,\n },\n {\n title: t(\"affiliate.commission\"),\n dataIndex: \"total_rebate\",\n render: (_: unknown, record: ReferralCodesRow) => {\n return (\n <BreakdownCell\n total={record.total_rebate ?? 0}\n direct={record.direct_rebate ?? 0}\n indirect={record.indirect_rebate ?? 0}\n directBonus={record.direct_bonus_rebate}\n prefix=\"$\"\n fix={6}\n title={t(\"affiliate.commission\")}\n />\n );\n },\n onSort: true,\n },\n {\n title: t(\"common.action\"),\n dataIndex: \"action\",\n render: (_: unknown, record: ReferralCodesRow) => (\n <Text\n className=\"oui-cursor-pointer oui-text-primary-light\"\n onClick={(e) => {\n e.stopPropagation();\n props.copyCode(record.code);\n }}\n >\n {t(\"common.copy\")}\n </Text>\n ),\n },\n ];\n }, [t, props.copyCode]);\n\n return (\n <>\n {isMobile ? (\n <div className=\"oui-affiliate-referralCodesTable oui-flex oui-flex-col oui-px-4\">\n <ListView\n dataSource={props.sortedCodes}\n contentClassName=\"!oui-space-y-0 oui-pb-3\"\n renderItem={(item, index) => (\n <div key={index}>\n <MobileReferralCodeItem item={item} copyCode={props.copyCode} />\n <Divider intensity={8} />\n </div>\n )}\n />\n </div>\n ) : (\n <div className=\"oui-affiliate-referralCodesTable oui-px-3\">\n <AuthGuardDataTable\n bordered\n columns={columns}\n dataSource={props.sortedCodes}\n loading={props.isLoading}\n onSort={props.onSort}\n onRow={() => ({ className: \"oui-referralCodesTable-row oui-h-12\" })}\n className=\"oui-referralCodesTable-table oui-pb-3 [&_.oui-h-10.oui-w-full]:!oui-mx-0 [&_.oui-table-pagination]:!oui-justify-end [&_th]:!oui-tracking-[0.03em] [&_th]:!oui-px-3 [&_td]:!oui-px-3\"\n />\n </div>\n )}\n </>\n );\n};\n","import { FC } from \"react\";\nimport {\n useReferralCodesTableScript,\n UseReferralCodesTableScriptProps,\n} from \"./referralCodesTable.script\";\nimport { ReferralCodesTableUI } from \"./referralCodesTable.ui\";\n\nexport const ReferralCodesTableWidget: FC<UseReferralCodesTableScriptProps> = (\n props,\n) => {\n const state = useReferralCodesTableScript(props);\n return <ReferralCodesTableUI {...state} />;\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Tabs, TabPanel, Flex } from \"@orderly.network/ui\";\nimport { CommissionTable } from \"./commissionTable\";\nimport { RefereesTable } from \"./refereesTable\";\nimport { ReferralCodesTable } from \"./referralCodesTable\";\nimport {\n ReferrerTableScriptReturns,\n ReferrerTableTab,\n} from \"./referrerTable.script\";\n\nexport const ReferrerTableUI: FC<ReferrerTableScriptReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n direction=\"column\"\n className=\"oui-affiliate-referrerTable oui-rounded-2xl oui-bg-base-9 [&_td]:oui-font-medium [&_td]:oui-tracking-[0.03em] [&_th]:oui-font-semibold\"\n px={3}\n pt={4}\n gap={4}\n width=\"100%\"\n >\n <Tabs\n value={props.activeTab}\n onValueChange={(value) => props.setActiveTab(value as ReferrerTableTab)}\n className=\"oui-referrerTable-tabs oui-w-full oui-text-base\"\n variant=\"text\"\n classNames={{\n tabsListContainer: \"oui-px-3\",\n trigger: \"oui-pb-[9px] oui-tracking-[0.01em]\",\n scrollIndicator:\n \"[&_.oui-scroll-indicator-leading]:oui-hidden [&_.oui-scroll-indicator-tailing]:oui-hidden\",\n }}\n showScrollIndicator\n >\n <TabPanel value=\"commission\" title={t(\"affiliate.commission\")}>\n <CommissionTable enabled={props.activeTab === \"commission\"} />\n </TabPanel>\n <TabPanel value=\"referees\" title={t(\"affiliate.referees\")}>\n <RefereesTable enabled={props.activeTab === \"referees\"} />\n </TabPanel>\n <TabPanel value=\"codes\" title={t(\"affiliate.referralCodes\")}>\n <ReferralCodesTable enabled={props.activeTab === \"codes\"} />\n </TabPanel>\n </Tabs>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { useReferrerTableScript } from \"./referrerTable.script\";\nimport { ReferrerTableUI } from \"./referrerTable.ui\";\n\nexport const ReferrerTableWidget: FC = () => {\n const state = useReferrerTableScript();\n return <ReferrerTableUI {...state} />;\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Flex, Select, Text } from \"@orderly.network/ui\";\nimport { SummaryReturns } from \"./summary.script\";\n\nexport const Summary: FC<SummaryReturns> = (props) => {\n const { statistics } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n id=\"oui-affiliate-affiliate-summary\"\n r={\"2xl\"}\n p={5}\n width={\"100%\"}\n height={\"100%\"}\n gap={6}\n direction={\"column\"}\n intensity={900}\n className=\"oui-affiliate-summary oui-border oui-border-line-6\"\n >\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">{t(\"affiliate.summary\")}</Text>\n <div className={\"oui-min-w-14\"}>\n <Select.options\n size={\"xs\"}\n value={props.period}\n onValueChange={props.onPeriodChange}\n options={props.periodTypes}\n />\n </div>\n </Flex>\n\n <SummaryItem\n prefix=\"$\"\n rule=\"human\"\n label={`${t(\"affiliate.commission\")} (USDC)`}\n value={statistics.total_rebate}\n direct={statistics.direct_rebate + statistics.direct_bonus_rebate}\n indirect={statistics.indirect_rebate}\n classNames={{\n root: \"!oui-py-12\",\n value: \"oui-text-trade-profit\",\n direct: \"oui-text-trade-profit\",\n indirect: \"oui-text-trade-profit\",\n }}\n />\n\n <Flex width={\"100%\"} gap={6} className=\"oui-flex-col md:oui-flex-row\">\n <SummaryItem\n prefix=\"$\"\n rule=\"human\"\n label={`${t(\"affiliate.referralVol\")} (USDC)`}\n value={statistics.total_volume}\n direct={statistics.direct_volume}\n indirect={statistics.indirect_volume}\n classNames={{\n root: \"oui-w-full md:oui-w-1/2\",\n }}\n />\n <SummaryItem\n dp={0}\n label={t(\"affiliate.referrals\")}\n value={statistics.total_invites}\n direct={statistics.direct_invites}\n indirect={statistics.indirect_invites}\n classNames={{\n root: \"oui-w-full md:oui-w-1/2\",\n }}\n />\n </Flex>\n </Flex>\n );\n};\n\ntype SummaryItemProps = {\n label: string;\n value: number | string;\n direct: number | string;\n indirect: number | string;\n classNames?: {\n root?: string;\n value?: string;\n direct?: string;\n indirect?: string;\n };\n prefix?: string;\n rule?: \"human\";\n dp?: number;\n};\n\nconst SummaryItem: FC<SummaryItemProps> = (props) => {\n const { t } = useTranslation();\n const { rule, dp = 2 } = props;\n\n return (\n <Flex\n r=\"2xl\"\n width={\"100%\"}\n direction={\"column\"}\n itemAlign=\"start\"\n gap={2}\n className={cn(\n \"oui-bg-base-contrast-4 oui-p-5 md:oui-py-[38px]\",\n \"oui-text-sm oui-text-base-contrast-54\",\n props.classNames?.root,\n )}\n >\n <Text>{props.label}</Text>\n <Text.numeral\n rule={rule}\n dp={props.dp}\n size=\"3xl\"\n prefix={props.prefix}\n placeholder=\"--\"\n intensity={98}\n className={props.classNames?.value}\n >\n {props.value}\n </Text.numeral>\n\n <Flex className=\"oui-flex-wrap oui-text-base-contrast-54\">\n <Flex gap={1}>\n <Text>{t(\"affiliate.direct\")}:</Text>\n <Text.numeral\n rule={rule}\n dp={props.dp}\n prefix={props.prefix}\n intensity={54}\n className={props.classNames?.direct}\n >\n {props.direct}\n </Text.numeral>\n </Flex>\n {\"/\"}\n <Flex gap={1}>\n <Text>{t(\"affiliate.indirect\")}:</Text>\n <Text.numeral\n rule={rule}\n dp={props.dp}\n prefix={props.prefix}\n intensity={54}\n className={props.classNames?.indirect}\n >\n {props.indirect}\n </Text.numeral>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useMultiLevelStatistics } from \"../../../../hooks/useReferralApi\";\nimport { StatisticsTimeRange } from \"../../../../types\";\n\nexport type SummaryReturns = ReturnType<typeof useSummaryScript>;\n\nexport const useSummaryScript = () => {\n const { t } = useTranslation();\n const [period, setPeriod] = useState(StatisticsTimeRange.All);\n\n const { data } = useMultiLevelStatistics(period);\n\n const periodTypes: { label: string; value: StatisticsTimeRange }[] = [\n { label: t(\"common.all\"), value: StatisticsTimeRange.All },\n { label: t(\"common.select.1d\"), value: StatisticsTimeRange[\"1d\"] },\n { label: t(\"common.select.7d\"), value: StatisticsTimeRange[\"7d\"] },\n { label: t(\"common.select.30d\"), value: StatisticsTimeRange[\"30d\"] },\n ];\n\n const onPeriodChange = (item: string) => {\n setPeriod(item as StatisticsTimeRange);\n };\n\n const statistics = useMemo(() => {\n const {\n direct_invites = 0,\n indirect_invites = 0,\n direct_traded = 0,\n indirect_traded = 0,\n direct_volume = 0,\n indirect_volume = 0,\n direct_rebate = 0,\n indirect_rebate = 0,\n direct_bonus_rebate = 0,\n } = data || {};\n return {\n direct_invites,\n indirect_invites,\n total_invites: direct_invites + indirect_invites,\n direct_traded,\n indirect_traded,\n total_traded: direct_traded + indirect_traded,\n direct_volume,\n indirect_volume,\n total_volume: direct_volume + indirect_volume,\n direct_rebate,\n indirect_rebate,\n direct_bonus_rebate,\n total_rebate: direct_rebate + indirect_rebate + direct_bonus_rebate,\n };\n }, [data]);\n\n return {\n period,\n periodTypes,\n onPeriodChange,\n statistics,\n };\n};\n","import { useSummaryScript } from \"./summary.script\";\nimport { Summary } from \"./summary.ui\";\n\nexport const SummaryWidget = () => {\n const state = useSummaryScript();\n return <Summary {...state} />;\n};\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Grid, cn, Text } from \"@orderly.network/ui\";\nimport { useReferralContext } from \"../../../provider\";\nimport { CommissionChartWidget } from \"./commissionChart\";\nimport { MultiLevelReferralWidget } from \"./multiLevelReferral\";\nimport { ReferralInfoWidget } from \"./referralInfo\";\nimport { ReferrerTableWidget } from \"./referrerTable/referrerTable.widget\";\nimport { SummaryWidget } from \"./summary\";\n\nexport const MultiLevelAffiliatePage = () => {\n const { t } = useTranslation();\n\n const { multiLevelRebateInfo } = useReferralContext();\n\n return (\n <Flex\n className={cn(\n \"oui-multiLevel-affiliate-page\",\n \"oui-h-lvw\",\n \"oui-font-semibold\",\n \"oui-pb-24 oui-pt-16\",\n )}\n direction={\"column\"}\n gap={4}\n >\n <div className=\"oui-w-full oui-px-5 md:oui-mx-auto md:oui-max-w-[1040px]\">\n <Flex\n width={\"100%\"}\n direction={\"column\"}\n className=\"oui-gap-8 md:oui-gap-10\"\n >\n <Flex width={\"100%\"} direction={\"column\"} itemAlign={\"start\"} gap={4}>\n <Text className=\"oui-text-[32px] oui-leading-[40px] md:oui-text-6xl md:oui-leading-[72px]\">\n {t(\"affiliate.earnReferralCommissions\")}\n </Text>\n <Text size=\"sm\" intensity={54}>\n {t(\"affiliate.earnReferralCommissions.description\")}\n </Text>\n </Flex>\n\n <Grid\n width={\"100%\"}\n height={\"100%\"}\n gap={6}\n cols={1}\n rows={1}\n className=\"md:oui-grid-cols-2\"\n >\n <div className=\"oui-multiLevel-affiliate-summary-container oui-order-2 md:oui-order-1\">\n <SummaryWidget />\n </div>\n <div className=\"oui-order-1 md:oui-order-2\">\n {multiLevelRebateInfo?.referral_code ? (\n <ReferralInfoWidget />\n ) : (\n <MultiLevelReferralWidget />\n )}\n </div>\n </Grid>\n\n <CommissionChartWidget />\n\n <div className=\"oui-multiLevel-affiliate-referrerTables-container\">\n <ReferrerTableWidget />\n </div>\n </Flex>\n </div>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { IconProps } from \"../utils/types\";\n\nexport const AffiliateIcon: FC<IconProps> = (props) => {\n const { size = 16, ...rest } = props;\n\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M8 1.302c-3.683 0-6.655 2.985-6.667 6.667-.013 3.676 2.987 6.68 6.666 6.687s6.674-3.037 6.667-6.687c-.007-3.682-2.985-6.667-6.667-6.667m0 1.333a5.333 5.333 0 0 1 5.333 5.334c0 1.5-.625 2.852-1.622 3.821-.49-1.062-1.545-1.821-2.753-1.821H7.04c-1.207 0-2.259.75-2.75 1.812A5.3 5.3 0 0 1 2.666 7.97a5.333 5.333 0 0 1 5.333-5.334M8 3.97a2.667 2.667 0 1 0 0 5.333A2.667 2.667 0 0 0 8 3.97\" />\n <path\n d=\"M16 12.667a3.333 3.333 0 1 1-6.667 0 3.333 3.333 0 0 1 6.667 0\"\n fill=\"rgb(var(--oui-color-primary-darken))\"\n />\n <path d=\"M11.917 11.433a.917.917 0 0 0-.917.917c0 .53.302 1.031.802 1.49a4.6 4.6 0 0 0 .713.53l.068.043c.05.027.117.027.167 0l.068-.042q.08-.05.177-.115c.182-.123.366-.26.536-.416.5-.459.802-.96.802-1.49a.917.917 0 0 0-.917-.917.97.97 0 0 0-.744.386.95.95 0 0 0-.756-.386\" />\n </svg>\n );\n};\n","import { FC } from \"react\";\nimport { IconProps } from \"../utils/types\";\n\nexport const TraderIcon: FC<IconProps> = (props) => {\n const { size = 16, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n d=\"M7.99929 1.30212C4.31735 1.30212 1.34509 4.28679 1.33262 7.96878C1.32015 11.6454 4.32042 14.6488 7.99929 14.6561C11.6782 14.6634 14.6726 11.6194 14.666 7.96878C14.6593 4.28679 11.6812 1.30212 7.99929 1.30212ZM7.99929 2.63546C10.9448 2.63546 13.3326 5.02345 13.3326 7.96878C13.3326 9.46878 12.7078 10.8208 11.7112 11.7901C11.2202 10.7281 10.1656 9.96878 8.95762 9.96878C8.71802 9.96878 7.28042 9.96878 7.04095 9.96878C5.83369 9.96878 4.78215 10.7188 4.29095 11.7814C3.29429 10.8121 2.66595 9.46878 2.66595 7.96878C2.66595 5.02345 5.05375 2.63546 7.99929 2.63546ZM7.99929 3.96879C6.52649 3.96879 5.33255 5.16279 5.33262 6.63545C5.33262 8.10812 6.52649 9.30212 7.99929 9.30212C9.47202 9.30212 10.666 8.10812 10.666 6.63545C10.666 5.16279 9.47202 3.96879 7.99929 3.96879Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M16 12.6667C16 14.5076 14.5076 16 12.6666 16C10.8257 16 9.33331 14.5076 9.33331 12.6667C9.33331 10.8257 10.8257 9.33333 12.6666 9.33333C14.5076 9.33333 16 10.8257 16 12.6667Z\"\n className=\"oui-fill-success-darken\"\n />\n <path\n d=\"M14.3325 13.3345C14.3325 13.2918 14.3182 13.2473 14.2857 13.2147L13.6658 12.6002L13.4315 12.8345L13.7595 13.1678H11.3325C11.2405 13.1678 11.1658 13.2425 11.1658 13.3345C11.1658 13.4265 11.2405 13.5012 11.3325 13.5012H13.7595L13.4315 13.8345L13.6658 14.0688L14.2857 13.4543C14.3182 13.4217 14.3325 13.3772 14.3325 13.3345ZM14.1658 12.0012C14.1658 11.9092 14.0912 11.8345 13.9992 11.8345H11.572L11.9002 11.5012L11.6658 11.2668L11.046 11.8813C10.981 11.9465 10.981 12.0558 11.046 12.121L11.6658 12.7355L11.9002 12.5012L11.572 12.1678H13.9992C14.0912 12.1678 14.1658 12.0932 14.1658 12.0012Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n","import { FC } from \"react\";\n\nexport const USDCIcon: FC<{\n className?: string;\n}> = (props) => {\n return (\n <svg\n width=\"21\"\n height=\"20\"\n viewBox=\"0 0 21 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}\n >\n <g clipPath=\"url(#a)\">\n <path\n d=\"M10.5 20c5.542 0 10-4.458 10-10s-4.458-10-10-10S.5 4.458.5 10s4.458 10 10 10\"\n fill=\"rgb(var(--oui-color-primary))\"\n />\n <path\n d=\"M13.5 11.473c0-1.452-.94-1.95-2.82-2.158-1.344-.166-1.613-.498-1.613-1.078s.448-.955 1.343-.955c.806 0 1.254.25 1.478.872.045.124.18.207.313.207h.717c.179 0 .313-.125.313-.29v-.042c-.179-.913-.985-1.618-2.015-1.701v-.996c0-.166-.134-.29-.358-.332h-.671c-.18 0-.314.124-.359.332v.954c-1.343.166-2.194.996-2.194 2.034 0 1.369.896 1.908 2.776 2.116 1.254.207 1.657.456 1.657 1.12s-.627 1.12-1.477 1.12c-1.165 0-1.568-.456-1.702-1.078a.32.32 0 0 0-.313-.25h-.762c-.179 0-.313.125-.313.291v.042c.179 1.037.895 1.784 2.373 1.991v.996c0 .166.134.29.358.332h.672c.18 0 .313-.124.358-.332v-.996c1.344-.207 2.239-1.079 2.239-2.199\"\n fill=\"rgb(var(--oui-color-base-foreground))\"\n fillOpacity=\".98\"\n />\n <path\n d=\"M8.24 16.57c-3.458-1.215-5.23-4.986-3.945-8.324.665-1.821 2.127-3.208 3.944-3.859.178-.086.266-.216.266-.433v-.607c0-.174-.088-.304-.266-.347-.044 0-.133 0-.177.043-4.21 1.3-6.516 5.68-5.186 9.798.798 2.428 2.704 4.292 5.186 5.072.177.087.355 0 .4-.173.043-.043.043-.087.043-.173v-.608c0-.13-.133-.303-.266-.39m4.698-13.527c-.178-.086-.355 0-.4.174-.043.043-.043.086-.043.173v.607c0 .174.133.347.266.434 3.457 1.213 5.23 4.985 3.944 8.323-.664 1.821-2.127 3.209-3.944 3.859-.178.086-.266.216-.266.433v.607c0 .174.088.304.266.347.044 0 .133 0 .177-.043 4.21-1.3 6.515-5.68 5.186-9.798-.798-2.471-2.748-4.335-5.186-5.116\"\n fill=\"rgb(var(--oui-color-base-foreground))\"\n fillOpacity=\".98\"\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <path\n fill=\"rgb(var(--oui-color-base-foreground))\"\n d=\"M.5 0h20v20H.5z\"\n />\n </clipPath>\n </defs>\n </svg>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Select, Text } from \"@orderly.network/ui\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { USDCIcon } from \"../../../icons/usdcIcon\";\nimport { SummaryReturns } from \"./summary.script\";\n\nexport const Summary: FC<SummaryReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n id=\"oui-affiliate-affiliate-summary\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n height={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9\"\n >\n <Title {...props} />\n <CommissionData {...props} />\n <Flex direction={\"column\"} width={\"100%\"} gap={2}>\n <Row\n title={`${t(\"affiliate.referralVol\")} (USDC)`}\n value={props.referralVol}\n dp={2}\n {...props}\n />\n <Row\n title={t(\"affiliate.referees\")}\n value={props.referees}\n dp={0}\n {...props}\n />\n <Row\n title={t(\"affiliate.summary.refereesTraded\")}\n value={props.refereesTades}\n dp={0}\n {...props}\n />\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<SummaryReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">{t(\"affiliate.summary\")}</Text>\n <div className={\"oui-min-w-14\"}>\n <Select.options\n size={\"xs\"}\n value={props.period}\n onValueChange={props.onPeriodChange}\n options={props.periodTypes}\n />\n </div>\n </Flex>\n );\n};\n\nconst CommissionData: FC<SummaryReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n gradient=\"primary\"\n angle={180}\n r=\"xl\"\n py={4}\n px={6}\n width={\"100%\"}\n direction={\"column\"}\n gap={3}\n height={\"100%\"}\n className=\"oui-max-h-[104px]\"\n >\n <Text intensity={54} className=\"oui-text-base 2xl:oui-text-lg\">\n {`${t(\"affiliate.commission\")} (USDC)`}\n </Text>\n <Flex\n direction={\"row\"}\n gap={3}\n className=\"oui-text-xl md:oui-text-2xl xl:oui-text-3xl\"\n >\n <USDCIcon className=\"md:oui-w-[24px] md:oui-h-[24px] lg:oui-w-[28px] lg:oui-h-[28px] \" />\n <Text>\n {commifyOptional(props.commission, { fix: 2, fallback: \"0\" })}\n </Text>\n </Flex>\n </Flex>\n );\n};\n\nconst Row: FC<\n SummaryReturns & {\n title: string;\n value: number;\n dp: number;\n }\n> = (props) => {\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text\n intensity={54}\n className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\"\n >\n {props.title}\n </Text>\n <Text className=\"oui-text-xs md:oui-text-sm xl:oui-text-base\">\n {commifyOptional(props.value, { fix: props.dp, fallback: \"0\" })}\n </Text>\n </Flex>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useReferralContext } from \"../../../provider\";\nimport { SummaryFilter } from \"../../../utils/types\";\n\nexport type SummaryReturns = {\n period: string;\n periodTypes: { label: string; value: string }[];\n onPeriodChange: (item: string) => void;\n commission: number;\n referralVol: number;\n referees: number;\n refereesTades: number;\n};\n\nexport const useSummaryScript = (): SummaryReturns => {\n const { t } = useTranslation();\n const [period, setPeriod] = useState<SummaryFilter>(\"All\");\n\n const periodTypes: { label: string; value: SummaryFilter }[] = [\n { label: t(\"common.all\"), value: \"All\" },\n { label: t(\"common.select.1d\"), value: \"1D\" },\n { label: t(\"common.select.7d\"), value: \"7D\" },\n { label: t(\"common.select.30d\"), value: \"30D\" },\n ];\n\n const { referralInfo } = useReferralContext();\n\n const commission = useMemo(() => {\n if (!referralInfo || !referralInfo.referrer_info) {\n return 0;\n }\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_referrer_rebate;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_referrer_rebate\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_referrer_rebate\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_referrer_rebate\"];\n }\n }, [referralInfo, period]);\n\n const referralVol = useMemo(() => {\n if (!referralInfo || !referralInfo.referrer_info) {\n return 0;\n }\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_referee_volume;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_referee_volume\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_referee_volume\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_referee_volume\"];\n }\n }, [referralInfo, period]);\n\n const referees = useMemo(() => {\n if (!referralInfo || !referralInfo.referrer_info) {\n return 0;\n }\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_invites;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_invites\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_invites\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_invites\"];\n }\n }, [referralInfo, period]);\n\n const refereesTades = useMemo(() => {\n if (!referralInfo || !referralInfo.referrer_info) {\n return 0;\n }\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_traded;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_traded\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_traded\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_traded\"];\n }\n }, [referralInfo, period]);\n\n const onPeriodChange = (item: string) => {\n setPeriod(item as SummaryFilter);\n };\n\n return {\n period,\n periodTypes,\n onPeriodChange,\n commission,\n referralVol,\n referees,\n refereesTades,\n };\n};\n","import { useSummaryScript } from \"./summary.script\";\nimport { Summary } from \"./summary.ui\";\n\nexport const SummaryWidget = () => {\n const state = useSummaryScript();\n return <Summary {...state} />;\n};\n","\nimport { cn } from \"@orderly.network/ui\";\nimport { FC, useEffect, useMemo, useRef, useState } from \"react\";\n\nexport const AutoHideText: FC<{\n text: string;\n className?: string;\n visibleCount?: number;\n}> = (props) => {\n const { text, visibleCount } = props;\n const containerRef = useRef<HTMLDivElement | null>(null);\n const textRef = useRef<HTMLDivElement>(null);\n const lastContainerWidth = useRef<number | undefined>(undefined);\n\n function getTextWidth(ref: HTMLDivElement, text: string): number | undefined {\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n const element = ref; \n if (context && element) {\n let fontStyle = getComputedStyle(element).font;\n if (fontStyle.length === 0) {\n fontStyle = [\n getComputedStyle(element).fontWeight,\n getComputedStyle(element).fontSize,\n getComputedStyle(element).fontFamily,\n ].join(\" \");\n }\n context.font = fontStyle;\n context.letterSpacing = getComputedStyle(element).letterSpacing;\n\n const width = context.measureText(text).width;\n return width;\n }\n return undefined;\n }\n\n const [visibleChars, setVisibleChars] = useState(0);\n\n useEffect(() => {\n const calculateVisibleChars = () => {\n if (props.visibleCount !== undefined) return;\n if (containerRef.current && textRef.current) {\n const containerWidth = containerRef.current.clientWidth;\n\n if (containerWidth == lastContainerWidth.current) return;\n lastContainerWidth.current = containerWidth;\n\n const textElement = textRef.current;\n\n const textContent = text;\n\n const pWidth = Math.ceil(getTextWidth(textElement, \"...\") || 0);\n \n const maxDisplayW = containerWidth - pWidth;\n let count = 0;\n while(count < text.length) {\n let contentW = getTextWidth(textElement, subText(text, count++)) || maxDisplayW;\n \n if (contentW <= maxDisplayW) {\n break;\n }\n }\n setVisibleChars(textContent.length - count);\n }\n };\n\n lastContainerWidth.current = undefined;\n calculateVisibleChars();\n\n window.addEventListener(\"resize\", calculateVisibleChars);\n return () => {\n lastContainerWidth.current = undefined;\n window.removeEventListener(\"resize\", calculateVisibleChars);\n };\n }, [text, textRef]);\n\n const truncatedText = useMemo(() => {\n if (visibleChars + 1 >= text.length) {\n return text;\n }\n\n const maxCharacters = visibleCount || visibleChars;\n\n const startText = text.slice(0, Math.ceil(maxCharacters / 2));\n const endText = text.slice(\n text.length - Math.floor(maxCharacters / 2),\n text.length\n );\n\n return `${startText}...${endText}`;\n }, [text, visibleCount, visibleChars]);\n\n return (\n <div ref={containerRef} className={cn(\"oui-relative oui-w-full oui-text-end\", props.className)}>\n <div\n className={cn(\n \"oui-hidden oui-whitespace-nowrap oui-absolute oui-top-0 oui-bottom-0 oui-right-0 oui-left-0\",\n )}\n >\n <span ref={textRef}>{text}</span>\n </div>\n <span>{truncatedText}</span>\n </div>\n );\n};\n\n\nconst subText = (text: string, count: number) => {\n const start = Math.floor(text.length / 2 - (count > 0 ? count / 2 : 1));\n const first = text.slice(0, start);\n const end = text.slice(start + count);\n return first + end;\n}","import { FC } from \"react\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\nimport {\n CopyIcon,\n Divider,\n Flex,\n modal,\n Text,\n Tooltip,\n} from \"@orderly.network/ui\";\nimport { AutoHideText } from \"../../../components/autoHideText\";\nimport { ReferralLinkReturns } from \"./referralLink.script\";\n\nexport const ReferralLink: FC<ReferralLinkReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n id=\"oui-affiliate-affiliate-referralLink\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9\"\n >\n <Title {...props} />\n <Flex\n width={\"100%\"}\n className=\"oui-flex oui-flex-col 3xl:oui-flex-row\"\n gap={4}\n >\n <div className=\"oui-w-full 3xl:oui-w-1/3\">\n <Subtitle {...props} />\n </div>\n <Flex\n direction={\"column\"}\n width={\"100%\"}\n className=\"3xl:oui-w-2/3 3xl:oui-gap-2\"\n >\n <Input\n title={t(\"affiliate.referralCode\")}\n value={props.refCode}\n {...props}\n />\n <Input\n title={t(\"affiliate.referralLink\")}\n value={props.refLink}\n {...props}\n />\n </Flex>\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<ReferralLinkReturns> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">{t(\"affiliate.referralLink\")}</Text>\n </Flex>\n );\n};\n\nconst Subtitle: FC<ReferralLinkReturns> = (props) => {\n const { t } = useTranslation();\n\n const item = (\n title: string,\n value: string,\n gradient: boolean,\n className?: string,\n tooltip?: any,\n ) => {\n const valueClsName =\n \"oui-text-lg md:oui-text-xl lg:oui-text-2xl xl:oui-text-3xl\";\n return (\n <Flex direction={\"column\"} itemAlign={\"start\"} className={className}>\n <Flex direction={\"row\"} gap={2}>\n {/* <Text>{title}</Text> */}\n <Alert title={title} tooltip={tooltip} />\n </Flex>\n {gradient ? (\n <Text.gradient color=\"brand\" className={valueClsName}>\n {value}\n </Text.gradient>\n ) : (\n <Text className={valueClsName}>{value}</Text>\n )}\n </Flex>\n );\n };\n\n return (\n <Flex direction={\"row\"} width={\"100%\"}>\n {item(\n t(\"affiliate.referralLink.earn\"),\n props.earn || \"-\",\n true,\n \"oui-flex-1\",\n <span>\n <Text.gradient color=\"brand\">{props.earn || \"-\"}</Text.gradient>{\" \"}\n {t(\"affiliate.referralLink.earn.tooltip\", {\n brokerName: props.brokerName,\n })}\n </span>,\n // @ts-ignore\n // <Trans\n // i18nKey=\"affiliate.referralLink.earn.tooltip\"\n // values={{\n // value: props.earn || \"-\",\n // brokerName: props.brokerName,\n // }}\n // components={[<Text.gradient color=\"brand\" />]}\n // />\n )}\n {item(\n t(\"affiliate.referralLink.share\"),\n props.share || \"-\",\n false,\n \"oui-flex-1\",\n // @ts-ignore\n <Trans\n i18nKey=\"affiliate.referralLink.share.tooltip\"\n values={{\n value: props.share || \"-\",\n brokerName: props.brokerName,\n }}\n components={[<Text.gradient color=\"brand\" key=\"0\" />]}\n />,\n )}\n </Flex>\n );\n};\n\nconst Input: FC<\n ReferralLinkReturns & {\n title: string;\n value?: string;\n }\n> = (props) => {\n const { title, value = \"-\" } = props;\n return (\n <Flex\n r=\"xl\"\n p={3}\n gap={4}\n direction={\"row\"}\n width={\"100%\"}\n className=\"oui-bg-base-8\"\n >\n <Text className=\"oui-text-base-contrast-54 oui-flex-shrink oui-text-2xs md:oui-text-xs xl:oui-text-sm\">\n {title}\n </Text>\n <Flex\n direction={\"row\"}\n justify={\"end\"}\n gap={2}\n className=\"oui-flex-1 oui-text-xs md:oui-text-sm xl:oui-text-base\"\n >\n <AutoHideText text={value} />\n <button\n className=\"oui-cursor-pointer oui-text-sm oui-flex-shrink\"\n onClick={() => {\n navigator.clipboard.writeText(value);\n props.onCopy?.(value);\n }}\n >\n <CopyIcon\n size={12}\n color=\"white\"\n className=\"oui-w-[13px] oui-h-[13px] md:oui-w-[14px] md:oui-h-[14px] xl:oui-w-4 xl:oui-h-4\"\n />\n </button>\n </Flex>\n </Flex>\n );\n};\n\nconst Alert: FC<{\n title: string;\n tooltip: any;\n}> = (props) => {\n return (\n <Tooltip content={props.tooltip} className=\"oui-max-w-[200px]\">\n <div\n onClick={() => {\n modal.alert({\n title: props.title,\n message: (\n <div className=\"oui-text-base-contrast/30 oui-space-y-3 oui-text-xs desktop:oui-text-xs\">\n {props.tooltip}\n </div>\n ),\n });\n }}\n >\n <Flex direction={\"column\"}>\n <Text\n intensity={54}\n className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\"\n >\n {props.title}\n </Text>\n <Divider className=\"oui-w-full\" lineStyle=\"dotted\" intensity={16} />\n </Flex>\n </div>\n </Tooltip>\n );\n};\n","import { useMemo } from \"react\";\nimport { RefferalAPI, useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useReferralContext } from \"../../../provider\";\nimport { generateReferralLink } from \"../../../utils/utils\";\n\nexport type ReferralLinkReturns = {\n onCopy?: (value: string) => void;\n refLink?: string;\n refCode?: string;\n earn?: string;\n share?: string;\n brokerName?: string;\n};\n\nexport const useReferralLinkScript = (): ReferralLinkReturns => {\n const { t } = useTranslation();\n\n const onCopy = (value: string) => {\n toast.success(t(\"common.copy.copied\"));\n };\n\n const { referralInfo, referralLinkUrl, overwrite } = useReferralContext();\n const [pinCodes, setPinCodes] = useLocalStorage<string[]>(\n \"orderly_referral_codes\",\n [] as string[],\n );\n\n const codes = useMemo((): RefferalAPI.ReferralCode[] => {\n if (!referralInfo?.referrer_info?.referral_codes)\n return [] as RefferalAPI.ReferralCode[];\n const referralCodes = [...referralInfo?.referrer_info?.referral_codes];\n\n const pinedItems: RefferalAPI.ReferralCode[] = [];\n\n for (let i = 0; i < pinCodes.length; i++) {\n const code = pinCodes[i];\n\n const index = referralCodes.findIndex((item) => item.code === code);\n if (index !== -1) {\n pinedItems.push({ ...referralCodes[index] });\n referralCodes.splice(index, 1);\n }\n }\n\n return [...pinedItems, ...referralCodes];\n }, [referralInfo?.referrer_info?.referral_codes, pinCodes]);\n\n const firstCode = useMemo(() => {\n if (codes.length === 0) {\n return undefined;\n }\n\n return codes[0];\n }, [codes]);\n\n const code = useMemo(() => {\n return firstCode?.code;\n }, [firstCode]);\n\n const referralLink = useMemo(() => {\n if (!firstCode) return \"\";\n\n return generateReferralLink(referralLinkUrl, firstCode.code);\n }, [firstCode]);\n\n const earn = useMemo(() => {\n const value = new Decimal(firstCode?.referrer_rebate_rate || \"0\")\n .mul(100)\n .toDecimalPlaces(0, Decimal.ROUND_DOWN)\n .toString();\n return `${value}%`;\n }, [firstCode?.referrer_rebate_rate]);\n\n const share = useMemo(() => {\n const value = new Decimal(firstCode?.referee_rebate_rate || \"0\")\n .mul(100)\n .toDecimalPlaces(0, Decimal.ROUND_DOWN)\n .toString();\n return `${value}%`;\n }, [firstCode?.referee_rebate_rate]);\n\n return {\n onCopy,\n refLink: referralLink,\n refCode: code,\n share,\n earn,\n brokerName: overwrite?.brokerName ?? overwrite?.shortBrokerName,\n };\n};\n","import { useReferralLinkScript } from \"./referralLink.script\";\nimport { ReferralLink } from \"./referralLink.ui\";\n\nexport const ReferralLinkWidget = () => {\n const state = useReferralLinkScript();\n return <ReferralLink {...state} />;\n};\n","import { FC } from \"react\";\nimport { VolBarChart } from \"@orderly.network/chart\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { EMPTY_LIST } from \"@orderly.network/types\";\nimport { Flex, Select, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { TitleStatisticReturns } from \"./titleStatistic.script\";\n\nexport const TitleStatistic: FC<TitleStatisticReturns> = (props) => {\n return (\n <Flex\n id=\"oui-affiliate-affiliate-titleStatistic\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9\"\n >\n <Title {...props} />\n <Flex className=\"oui-h-[170px] 2xl:oui-h-[196px] oui-w-full oui-flex oui-flex-row oui-items-stretch\">\n <VolBarChart\n data={props.dataSource || EMPTY_LIST}\n colors={{ fill: \"rgb(var(--oui-color-success))\" }}\n className=\"oui-w-full oui-flex-1\"\n tooltip={{\n rm: Decimal.ROUND_DOWN,\n dp: props.volType === \"Commission\" ? 6 : 2,\n }}\n />\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<TitleStatisticReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">{t(\"affiliate.statistics\")}</Text>\n <Flex direction={\"row\"} gap={2} className={\"oui-min-w-14\"}>\n <Select.options\n size={\"xs\"}\n value={props.period}\n onValueChange={props.onPeriodChange}\n options={props.periodTypes}\n />\n <Select.options\n size={\"xs\"}\n value={props.volType}\n onValueChange={props.onVolTypeChange}\n options={props.volTypes}\n />\n </Flex>\n </Flex>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { fillData } from \"../../../utils/chartUtils\";\nimport { RefferalAPI, useReferralRebateSummary } from \"@orderly.network/hooks\";\nimport { format, subDays } from \"date-fns\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport type TitleStatisticReturns = {\n period: string;\n periodTypes: { label: string; value: string }[];\n onPeriodChange: (item: string) => void;\n volType: string;\n volTypes: { label: string; value: string }[];\n onVolTypeChange: (item: string) => void;\n dataSource?: {\n date: string;\n volume: number;\n }[];\n};\n\nexport const useTitleStatisticScript = (): TitleStatisticReturns => {\n const { t } = useTranslation();\n\n const [period, setPeriod] = useState(\"7\");\n\n const periodTypes = [\n { label: t(\"common.select.7d\"), value: \"7\" },\n { label: t(\"common.select.30d\"), value: \"30\" },\n { label: t(\"common.select.90d\"), value: \"90\" },\n ];\n\n const onPeriodChange = (item: string) => {\n setPeriod(item);\n };\n\n const [volType, setVolType] = useState(\"Commission\");\n const volTypes = [\n { label: t(\"affiliate.commission\"), value: \"Commission\" },\n { label: t(\"affiliate.referralVol\"), value: \"ref\" },\n ];\n\n const onVolTypeChange = (item: string) => {\n setVolType(item);\n };\n\n const dateRange = useMemo((): {\n startDate: Date;\n endDate: Date;\n } => {\n if (period === \"7\") {\n return {\n startDate: subDays(new Date(), 7),\n endDate: subDays(new Date(), 1),\n };\n } else if (period === \"30\") {\n return {\n startDate: subDays(new Date(), 30),\n endDate: subDays(new Date(), 1),\n };\n } else if (period === \"90\") {\n return {\n startDate: subDays(new Date(), 90),\n endDate: subDays(new Date(), 1),\n };\n } else {\n return {\n startDate: subDays(new Date(), 7),\n endDate: subDays(new Date(), 1),\n };\n }\n }, [period]);\n\n const [rebateSummary] = useReferralRebateSummary({\n startDate: format(dateRange.startDate, \"yyyy-MM-dd\"),\n endDate: format(dateRange.endDate, \"yyyy-MM-dd\"),\n size: Number(period),\n });\n\n const dataSource = useMemo(() => {\n return (\n (rebateSummary as RefferalAPI.ReferralRebateSummary[] | null)?.map(\n (e) => ({\n date: e.date,\n volume: volType === \"Commission\" ? e.referral_rebate : e.volume,\n })\n ) || []\n ).reverse();\n }, [rebateSummary, volType]);\n\n return {\n period,\n periodTypes,\n onPeriodChange,\n volType,\n volTypes,\n onVolTypeChange,\n dataSource: fillData(Number(period), dataSource),\n };\n};\n","import { useTitleStatisticScript } from \"./titleStatistic.script\";\nimport { TitleStatistic } from \"./titleStatistic.ui\";\n\nexport const TitleStatisticWidget = () => {\n const state = useTitleStatisticScript();\n return <TitleStatistic {...state} />;\n};\n","import { FC, SVGProps } from \"react\";\nimport { cn } from \"@orderly.network/ui\";\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {}\n\nexport const EditIcon: FC<IconProps> = (props) => {\n const { className, ...rest } = props;\n return (\n <svg\n width=\"12\"\n height=\"13\"\n viewBox=\"0 0 12 13\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(className, \"oui-fill-base-contrast-36\")}\n {...rest}\n >\n <path d=\"M8.49773 1.47656C8.36523 1.47656 8.23223 1.52357 8.13823 1.61707C7.86023 1.89507 6.85973 2.89558 6.63773 3.11808L2.13523 7.62059L1.63473 8.12059C1.56523 8.19059 1.52923 8.28958 1.50973 8.38658L1.00973 10.8881C0.939727 11.2381 1.23773 11.5361 1.58773 11.4666C1.90073 11.4036 3.77673 11.0286 4.08923 10.9661C4.18623 10.9466 4.28523 10.9106 4.35523 10.8411L4.85523 10.3406L9.35773 5.83808C9.58023 5.61608 10.5807 4.61506 10.8587 4.33756C10.9522 4.24356 10.9992 4.11056 10.9992 3.97806C10.9992 3.15956 10.7907 2.57456 10.3582 2.13306C9.92173 1.68756 9.33873 1.47656 8.49773 1.47656ZM8.69473 2.48606C9.14623 2.51256 9.43873 2.61608 9.63923 2.82108C9.84423 3.03008 9.97373 3.32008 10.0017 3.76258C9.72773 4.03608 9.32673 4.43106 8.99823 4.75956C8.60173 4.36306 8.11273 3.87407 7.71623 3.47757C8.04523 3.14907 8.42123 2.75956 8.69473 2.48606ZM6.99723 4.19657L8.27923 5.47858L4.49573 9.26207L3.21373 7.98009L6.99723 4.19657ZM2.49473 8.69908L3.77673 9.98107L3.72973 10.0281C3.39973 10.0941 2.73323 10.2336 2.11923 10.3566L2.44773 8.74608L2.49473 8.69908Z\" />\n </svg>\n );\n};\n","import { FC, useState } from \"react\";\nimport { EditIcon } from \"../icons/editIcon\";\n\nexport const EditCode: FC<{\n size?: number;\n onClick?: () => void;\n}> = (props) => {\n return (\n <button>\n <EditIcon\n className=\" oui-mt-px oui-cursor-pointer oui-fill-base-contrast-36 hover:oui-fill-base-contrast-80\"\n fillOpacity={1}\n fill=\"currentColor\"\n onClick={props.onClick}\n />\n </button>\n );\n};\n","import { FC } from \"react\";\nimport { IconProps } from \"../utils/types\";\n\nexport const PinBtn: FC<{\n pinned: boolean;\n size?: number;\n onClick?: (pinned: boolean) => void;\n}> = (props) => {\n return (\n <button\n onClick={(e) => {\n props?.onClick?.(!props.pinned);\n }}\n >\n {props.pinned === false ? (\n <UnPinIcon\n size={props.size}\n // className=\"oui-text-primary-darken hover:oui-text-primary-darken/80\"\n />\n ) : (\n <PinnedIcon\n size={props.size}\n className=\"oui-text-base-contrast-36 hover:oui-text-base-contrast\"\n />\n )}\n </button>\n );\n};\n\nconst PinnedIcon: FC<IconProps> = (props) => {\n const { size = 12 } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M10.008 1.302a.74.74 0 0 0-.486.215c-1.033.988-1.349 1.815-.972 2.947-.88.675-1.437.841-2.536.841-1.503 0-2.484.181-3.152.848v.021a1.583 1.583 0 0 0 0 2.249l1.867 1.881-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.193 1.87 1.86a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.522.854-3.144 0-1.03.212-1.758.853-2.523 1.232.361 1.95.015 2.96-.995a.68.68 0 0 0 .188-.479c0-.234-.06-.594-.209-1.041a5.34 5.34 0 0 0-1.312-2.103A5.35 5.35 0 0 0 11.05 1.51c-.448-.149-.808-.208-1.042-.208\" />\n </svg>\n );\n};\n\nconst UnPinIcon: FC<IconProps> = (props) => {\n const { size = 12 } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M10.008 1.302a.74.74 0 0 0-.486.215c-1.033.988-1.349 1.815-.972 2.947-.88.675-1.437.841-2.536.841-1.503 0-2.484.181-3.152.848v.021a1.583 1.583 0 0 0 0 2.249l1.867 1.881-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.193 1.87 1.86a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.522.854-3.144 0-1.03.212-1.758.853-2.523 1.232.361 1.95.015 2.96-.995a.68.68 0 0 0 .188-.479c0-.234-.06-.594-.209-1.041a5.34 5.34 0 0 0-1.312-2.103A5.35 5.35 0 0 0 11.05 1.51c-.448-.149-.808-.208-1.042-.208m.258 1.37c.708.131 1.421.6 1.93 1.108.507.507.94 1.13 1.119 1.944-.636.61-1.026.659-1.662.324a.67.67 0 0 0-.779.116c-1.214 1.213-1.533 2.314-1.533 3.8 0 1.293-.076 1.774-.48 2.207-.113.123-.27.104-.374 0L3.799 7.486a.24.24 0 0 1-.017-.34c.239-.29.769-.514 2.226-.514 1.742.001 2.668-.447 3.812-1.52a.67.67 0 0 0 .125-.77c-.343-.685-.29-1.046.321-1.67\" />\n </svg>\n );\n};\n","import { FC, ReactNode, useMemo } from \"react\";\nimport { useMediaQuery } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Button,\n DataTable,\n Divider,\n Flex,\n ListView,\n Statistic,\n Text,\n cn,\n Column,\n CopyIcon,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { EditCode } from \"../../../components/editCodeBtn\";\nimport { PinBtn } from \"../../../components/pinButton\";\nimport { EditIcon } from \"../../../icons/editIcon\";\nimport { ReferralCodesReturns, ReferralCodeType } from \"./referralCodes.script\";\n\nexport const ReferralCodes: FC<ReferralCodesReturns> = (props) => {\n const isTablet = useMediaQuery(\"(max-width: 767px)\");\n return (\n <Flex\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-h-full oui-bg-base-9 oui-p-6 oui-tabular-nums\"\n >\n <Title {...props} />\n\n <div className=\"oui-flex oui-w-full oui-flex-col 2xl:oui-h-full\">\n <Divider />\n {isTablet ? <MobileLayout {...props} /> : <DesktopLayout {...props} />}\n </div>\n </Flex>\n );\n};\n\nconst Title: FC<ReferralCodesReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">{t(\"affiliate.referralCodes\")}</Text>\n <div className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\">\n <Text className=\"oui-text-base-contrast-54\">\n {`${t(\"affiliate.referralCodes.remaining\")}: `}\n </Text>\n <Text className=\"oui-text-primary-light\">\n {props.codes?.length || \"--\"}\n </Text>\n </div>\n </Flex>\n );\n};\n\nconst MobileLayout: FC<ReferralCodesReturns> = (props) => {\n return (\n <ListView\n dataSource={props.codes}\n className=\"oui-max-h-[240px] oui-w-full\"\n renderItem={(e, index) => {\n return (\n <Flex direction={\"column\"}>\n <MobileCell\n key={index}\n data={e}\n editRate={props.editRate}\n copyLink={props.copyLink}\n copyCode={props.copyCode}\n setPinCode={props.setPinCode}\n editCode={props.editCode}\n />\n <Divider className=\"oui-mt-3 oui-w-full\" />\n </Flex>\n );\n }}\n />\n );\n};\n\nconst MobileCellItem: FC<{\n // key: string;\n title: string;\n value: string | ReactNode;\n copyable?: boolean;\n align?: \"start\" | \"end\" | undefined;\n className?: string;\n editRate?: () => void;\n onCopy?: () => void;\n}> = (props) => {\n const { title, copyable, value, align, className, editRate, onCopy } = props;\n return (\n <Statistic\n id=\"oui-affiliate-affiliate-referralCodes\"\n className={cn(\"oui-flex-1\", className)}\n label={\n <Text className=\"oui-text-2xs oui-text-base-contrast-36\">{title}</Text>\n }\n align={align}\n children={\n <Flex direction={\"row\"} gap={1}>\n <Text.formatted\n copyable={copyable}\n onCopy={() => {\n onCopy?.();\n }}\n className=\"oui-mt-[6px] oui-text-sm oui-text-base-contrast-80\"\n >\n {value as string}\n </Text.formatted>\n {editRate && (\n <EditIcon\n className=\"oui-mt-px oui-cursor-pointer oui-fill-base-contrast-36 hover:oui-fill-base-contrast-80\"\n fillOpacity={1}\n fill=\"currentColor\"\n onClick={() => editRate()}\n />\n )}\n </Flex>\n }\n />\n );\n};\nconst MobileCell: FC<{\n data: ReferralCodeType;\n setPinCode: (code: string, del?: boolean) => void;\n copyLink: (code: string) => void;\n copyCode: (code: string) => void;\n editRate: (code: ReferralCodeType) => void;\n editCode: (code: ReferralCodeType) => void;\n}> = (props) => {\n const { data, setPinCode, copyLink, editRate, editCode } = props;\n const { t } = useTranslation();\n\n return (\n <Flex key={data.code} gap={3} direction={\"column\"} className=\"oui-w-full\">\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n itemAlign={\"stretch\"}\n width={\"100%\"}\n >\n <MobileCellItem\n title={t(\"affiliate.referralCode\")}\n value={data.code}\n copyable\n onCopy={() => {\n props.copyCode?.(data.code);\n }}\n editRate={() => {\n editCode(data);\n }}\n />\n <MobileCellItem\n title={t(\"affiliate.referralCodes.column.you&Referee\")}\n value={getRate(data)}\n align=\"end\"\n editRate={() => {\n editRate(data);\n }}\n />\n <MobileCellItem\n title={t(\"affiliate.referralCodes.column.referees&Traders\")}\n value={getCount(data)}\n align=\"end\"\n className={\"oui-hidden md:oui-flex\"}\n />\n </Flex>\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n itemAlign={\"stretch\"}\n width={\"100%\"}\n className=\"md:oui-hidden\"\n >\n <MobileCellItem\n title={t(\"affiliate.referees\")}\n value={getCount(data).split(\"/\")?.[0]}\n align=\"start\"\n />\n <MobileCellItem\n title={t(\"affiliate.referralCodes.column.traders\")}\n value={getCount(data).split(\"/\")?.[1]}\n align=\"end\"\n />\n </Flex>\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n itemAlign={\"stretch\"}\n width={\"100%\"}\n >\n <PinBtn\n pinned={data.isPined || false}\n onClick={(e) => {\n setPinCode(data.code, !e);\n }}\n />\n <Button\n variant=\"outlined\"\n size=\"xs\"\n className=\"oui-px-[20px]\"\n onClick={(e) => {\n copyLink(data.code);\n }}\n >\n {t(\"affiliate.referralCodes.copyLink\")}\n </Button>\n </Flex>\n </Flex>\n );\n};\n\nconst DesktopLayout: FC<ReferralCodesReturns> = (props) => {\n const { t } = useTranslation();\n\n const moreColumn = useMediaQuery(\"(min-width: 1024px)\");\n\n const columns = useMemo(() => {\n const cols: Column[] = [\n {\n title: t(\"affiliate.referralCode\"),\n dataIndex: \"code\",\n width: moreColumn ? 115 : 120,\n className: \"!oui-px-0\",\n render: (value, data) => {\n return (\n <Flex direction={\"row\"} itemAlign={\"center\"} gap={1}>\n <PinBtn\n size={12}\n pinned={data.isPined || false}\n onClick={(e) => {\n props.setPinCode(data.code, !e);\n }}\n />\n <Text.formatted\n // rule={\"\"}\n suffix={\n <>\n {data.isAutoGenerated && data.total_invites < 1 && (\n <EditCode onClick={() => props.editCode?.(data)} />\n )}\n <CopyIcon\n className=\"oui-cursor-pointer\"\n size={12}\n color=\"white\"\n onClick={() => props.copyCode?.(data.code)}\n />\n </>\n }\n copyable\n onCopy={() => {\n props.copyCode?.(data.code);\n }}\n >\n {value}\n </Text.formatted>\n </Flex>\n );\n },\n },\n {\n title: t(\"affiliate.referralCodes.column.you&Referee\"),\n dataIndex: \"dffd\",\n width: moreColumn ? 120 : 120,\n className: \"oui-pr-0\",\n render: (value, data) => {\n return (\n <Flex direction={\"row\"} itemAlign={\"center\"} gap={1}>\n {getRate(data)}\n <EditIcon\n className=\"oui-mt-[6px] oui-cursor-pointer oui-fill-base-contrast-36 hover:oui-fill-base-contrast-80\"\n fillOpacity={1}\n fill=\"currentColor\"\n onClick={(e) => props.editRate?.(data)}\n />\n </Flex>\n );\n },\n },\n ];\n\n if (moreColumn) {\n cols.push({\n title: t(\"affiliate.referees\"),\n dataIndex: \"referee_rebate_rate\",\n width: 65,\n className: \"oui-pr-0\",\n render: (value, data) => getCount(data).split(\"/\")[0],\n });\n cols.push({\n title: t(\"affiliate.referralCodes.column.traders\"),\n dataIndex: \"referrer_rebate_rate\",\n width: 65,\n className: \"oui-pr-0\",\n render: (value, data) => getCount(data).split(\"/\")[1],\n });\n } else {\n cols.push({\n title: t(\"affiliate.referralCodes.column.referees&Traders\"),\n dataIndex: \"total_invites/total_traded\",\n width: 120,\n fixed: \"left\",\n render: (value, data) => getCount(data),\n });\n }\n\n cols.push({\n dataIndex: \"link\",\n align: \"right\",\n width: 74,\n className: \"!oui-px-0\",\n render: (value, data) => (\n <Button\n variant=\"outlined\"\n size=\"sm\"\n className=\"oui-px-5\"\n onClick={(e) => {\n props?.copyLink?.(data.code);\n }}\n >\n {t(\"affiliate.referralCodes.copyLink\")}\n </Button>\n ),\n });\n\n return cols;\n }, [moreColumn, t]);\n\n return (\n <DataTable\n bordered\n columns={columns}\n dataSource={props.codes}\n classNames={{\n header: \"oui-px-0\",\n root: \"2xl:oui-flex-1 2xl:oui-max-h-[230px] 3xl:oui-max-h-[300px]\",\n }}\n onRow={(record) => {\n return {\n className: \"oui-h-[45px]\",\n };\n }}\n />\n );\n};\n\nconst getRate = (item: ReferralCodeType) => {\n const refereeRate = new Decimal(item.referee_rebate_rate)\n .mul(100)\n .toFixed(1, Decimal.ROUND_DOWN)\n .toString();\n const referralRate = new Decimal(item.referrer_rebate_rate)\n .mul(100)\n .toFixed(1, Decimal.ROUND_DOWN)\n .toString();\n return `${referralRate}% / ${refereeRate}%`;\n};\n\nconst getCount = (item: ReferralCodeType) => {\n return `${item.total_invites} / ${item.total_traded}`;\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useMutation } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n inputFormatter,\n modal,\n SimpleDialog,\n TextField,\n Text,\n useModal,\n Flex,\n cn,\n toast,\n} from \"@orderly.network/ui\";\nimport { ReferralCodeType } from \"./referralCodes.script\";\n\nexport const EditCodeModal = modal.create<{\n code: ReferralCodeType;\n successCallback: () => void;\n}>((props) => {\n const { t } = useTranslation();\n const { visible, onOpenChange } = useModal();\n const [newCode, setNewCode] = useState<string>(\"\");\n const [filedError, setFiledError] = useState<{\n length: boolean;\n format: boolean;\n }>({\n length: false,\n format: false,\n });\n const [editCode, { error, isMutating }] = useMutation(\n \"/v1/referral/edit_referral_code\",\n \"POST\",\n );\n useEffect(() => {\n setNewCode(props.code.code);\n }, [props.code]);\n\n useEffect(() => {\n const _code = newCode.toUpperCase();\n const _fieldError = {\n length: false,\n format: false,\n };\n if (_code.length < 4 || _code.length > 10) {\n _fieldError.length = true;\n }\n if (!/^[A-Z0-9]+$/.test(_code)) {\n _fieldError.format = true;\n }\n setFiledError(_fieldError);\n }, [newCode]);\n\n return (\n <SimpleDialog\n classNames={{\n content: \"oui-max-w-[360px]\",\n }}\n title={<div>{t(\"affiliate.referralCode.editCodeModal.title\")}</div>}\n open={visible}\n onOpenChange={onOpenChange}\n actions={{\n primary: {\n loading: isMutating,\n disabled: filedError.length || filedError.format,\n label: t(\"common.confirm\"),\n onClick: async () => {\n try {\n const res = await editCode({\n current_referral_code: props.code.code,\n new_referral_code: newCode.toUpperCase(),\n });\n if (res.success) {\n toast.success(\n t(\"affiliate.referralCode.editCodeModal.success\"),\n );\n props.successCallback();\n onOpenChange(false);\n return;\n }\n toast.error(res.message);\n } catch (e) {\n console.log(\"edit referral code error\", e);\n }\n },\n },\n }}\n >\n <div className=\"oui-mb-6 oui-text-xs oui-text-base-contrast-54\">\n {t(\"affiliate.referralCode.editCodeModal.description\")}\n </div>\n <TextField\n placeholder=\"\"\n fullWidth\n label={t(\"affiliate.referralCode.editCodeModal.label\")}\n onClean={() => {\n setNewCode(\"\");\n }}\n value={newCode}\n onChange={(e) => {\n const _value = e.target.value.toUpperCase().replace(/[^A-Z0-9]/g, \"\");\n setNewCode(_value);\n }}\n formatters={[\n inputFormatter.createRegexInputFormatter((value: string | number) => {\n return String(value).replace(/[a-z]/g, (char: string) =>\n char.toUpperCase(),\n );\n }),\n inputFormatter.createRegexInputFormatter(/[^A-Z0-9]/g),\n ]}\n classNames={{\n label: \"oui-text-base-contrast-54 oui-text-xs\",\n input:\n \"placeholder:oui-text-base-contrast-20 placeholder:oui-text-sm\",\n }}\n maxLength={10}\n minLength={4}\n autoComplete=\"off\"\n helpText=\"\"\n />\n <Flex\n direction={\"column\"}\n justify={\"center\"}\n itemAlign={\"start\"}\n gap={1}\n className=\"oui-mt-3\"\n >\n <Text\n className={cn(\n \"oui-ml-4 oui-list-item oui-list-outside oui-list-disc oui-text-xs oui-text-base-contrast-36 marker:oui-text-3xs\",\n filedError.length ? \"oui-text-danger\" : \"oui-text-success\",\n )}\n >\n {t(\"affiliate.referralCode.editCodeModal.helpText.length\")}\n </Text>\n <Text\n className={cn(\n \"oui-ml-4 oui-list-item oui-list-outside oui-list-disc oui-text-xs oui-text-base-contrast-36 marker:oui-text-3xs\",\n \"oui-text-success\",\n )}\n >\n {t(\"affiliate.referralCode.editCodeModal.helpText.format\")}\n </Text>\n </Flex>\n </SimpleDialog>\n );\n});\n","import { useEffect, useRef, useState } from \"react\";\nimport { cleanStringStyle, useMutation } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Button,\n cn,\n Dialog,\n DialogContent,\n DialogTitle,\n Divider,\n Flex,\n Input,\n modal,\n toast,\n useModal,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { ReferralCodeType } from \"./referralCodes.script\";\n\nexport const EditReferralRate = modal.create<{\n code: ReferralCodeType;\n mutate: any;\n}>((props) => {\n const { code, mutate } = props;\n const { visible, hide, resolve, reject, onOpenChange } = useModal();\n const maxRate = new Decimal(code.max_rebate_rate).mul(100);\n const [refereeRebateRate, setRefereeRebateRate] = useState(\n `${new Decimal(code.referee_rebate_rate).mul(100)}`,\n );\n const [referrerRebateRate, setReferrerRebateRate] = useState(\n `${new Decimal(code.referrer_rebate_rate).mul(100)}`,\n );\n const [showError, setShowError] = useState(false);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const { t } = useTranslation();\n\n useEffect(() => {\n if (inputRef?.current) {\n inputRef.current.focus();\n inputRef.current.setSelectionRange(\n inputRef.current.value.length,\n inputRef.current.value.length,\n );\n }\n }, [inputRef]);\n\n useEffect(() => {\n setRefereeRebateRate(`${new Decimal(code.referee_rebate_rate).mul(100)}`);\n setReferrerRebateRate(`${new Decimal(code.referrer_rebate_rate).mul(100)}`);\n }, [code]);\n\n const [editRate, { error, isMutating }] = useMutation(\n \"/v1/referral/edit_split\",\n \"POST\",\n );\n\n const onClickConfirm = async () => {\n try {\n const r1 = Number.parseFloat(refereeRebateRate);\n const r2 = Number.parseFloat(referrerRebateRate);\n\n await editRate({\n referral_code: code.code,\n referee_rebate_rate: r1 / 100,\n referrer_rebate_rate: r2 / 100,\n });\n toast.success(t(\"affiliate.referralRate.editRateModal.success\"));\n mutate();\n hide();\n } catch (e) {\n // @ts-ignore\n toast.error(e?.message || e || \"\");\n }\n };\n\n return (\n <Dialog open={visible} onOpenChange={onOpenChange}>\n <DialogContent\n className=\"oui-px-6 oui-max-w-[320px] oui-bg-base-8 oui-shadow-[0px_12px_20px_0px_rgba(0,0,0,0.25)]\"\n closable\n >\n <DialogTitle>\n <div className=\"oui-my-3\">\n {t(\"affiliate.referralRate.editRateModal.title\")}\n </div>\n <Divider />\n </DialogTitle>\n\n <div className=\"oui-mt-3 oui-h-full oui-flex oui-flex-col oui-justify-end\">\n <div className=\"oui-text-xs oui-text-base-contrast-54\">\n {t(\"affiliate.referralRate.editRateModal.description\")}\n </div>\n <div className=\"oui-text-xs oui-text-base-contrast-80 oui-mt-2 oui-flex\">\n {t(\"affiliate.referralRate.editRateModal.label\")}\n <div className=\"oui-text-warning-darken oui-pl-1\">{`${new Decimal(\n code.max_rebate_rate,\n )\n .mul(100)\n .toFixed(0, Decimal.ROUND_DOWN)}%`}</div>\n </div>\n\n <div className=\"oui-text-2xs oui-mt-6 oui-text-base-contrast-80\">\n {t(\"affiliate.referralRate.editRateModal.label.you\")}\n </div>\n <Input\n ref={inputRef}\n containerClassName=\"oui-h-[40px] oui-mt-3 oui-bg-base-700 oui-outline oui-outline-1 oui-outline-base-contrast-12 focus-within:oui-outline-primary-darken\"\n placeholder=\"Enter code\"\n type=\"text\"\n inputMode=\"decimal\"\n autoComplete=\"off\"\n value={referrerRebateRate}\n onChange={(e) => {\n const text = cleanStringStyle(e.target.value);\n const rate = Number.parseFloat(text);\n setReferrerRebateRate(text);\n if (!Number.isNaN(rate)) {\n setRefereeRebateRate(\n `${maxDecimal(new Decimal(0), maxRate.sub(rate))}`,\n );\n setShowError(maxRate.sub(rate) < new Decimal(0));\n } else {\n setRefereeRebateRate(\"\");\n setReferrerRebateRate(\"\");\n }\n }}\n suffix={\n <div className=\"oui-px-3 oui-text-base-contrast-54 oui-text-base\">\n %\n </div>\n }\n color={showError ? \"danger\" : undefined}\n />\n\n <div className=\"oui-text-2xs oui-mt-6 oui-text-base-contrast-80\">\n {t(\"affiliate.referralRate.editRateModal.label.referee\")}\n </div>\n <Input\n containerClassName=\"oui-h-[40px] oui-mt-3 oui-bg-base-700 oui-outline oui-outline-1 oui-outline-base-contrast-12 focus-within:oui-outline-primary-darken\"\n placeholder=\"Enter code\"\n type=\"text\"\n inputMode=\"decimal\"\n autoComplete=\"off\"\n autoFocus={false}\n value={refereeRebateRate}\n onChange={(e) => {\n const text = cleanStringStyle(e.target.value);\n const rate = Number.parseFloat(text);\n setRefereeRebateRate(text);\n if (!Number.isNaN(rate)) {\n setReferrerRebateRate(\n `${maxDecimal(new Decimal(0), maxRate.sub(rate))}`,\n );\n setShowError(maxRate.sub(rate) < new Decimal(0));\n } else {\n setRefereeRebateRate(\"\");\n setReferrerRebateRate(\"\");\n }\n }}\n suffix={\n <div className=\"oui-px-3 oui-text-base-contrast-54 oui-text-base\">\n %\n </div>\n }\n color={showError ? \"danger\" : undefined}\n />\n\n {showError && (\n <div className=\"oui-text-danger oui-text-xs oui-mt-8 oui-text-center oui-px-4\">\n {t(\"affiliate.referralRate.editRateModal.helpText.max\")}\n </div>\n )}\n\n <Flex width={\"100%\"} justify={\"center\"}>\n <Button\n id=\"referral_bind_referral_code_btn\"\n disabled={\n refereeRebateRate.length === 0 ||\n referrerRebateRate.length === 0 ||\n showError\n }\n loading={isMutating}\n className={cn(\n \"oui-mt-8 oui-mb-4 oui-w-[154px]\",\n showError && \"oui-mt-3\",\n )}\n onClick={(e) => {\n e.stopPropagation();\n onClickConfirm();\n }}\n >\n {t(\"common.confirm\")}\n </Button>\n </Flex>\n </div>\n </DialogContent>\n </Dialog>\n );\n});\n\nfunction maxDecimal(a: Decimal, b: Decimal) {\n return a > b ? a : b;\n}\n","import { useMemo } from \"react\";\nimport { RefferalAPI, useLocalStorage } from \"@orderly.network/hooks\";\nimport { modal } from \"@orderly.network/ui\";\nimport { useReferralContext } from \"../../../provider\";\nimport { copyText, generateReferralLink } from \"../../../utils/utils\";\nimport { EditCodeModal } from \"./editCodeModal\";\nimport { EditReferralRate } from \"./editReferralRate\";\n\ntype LegacyReferralCode = NonNullable<\n NonNullable<RefferalAPI.ReferralInfo[\"referrer_info\"]>[\"referral_codes\"]\n>[number];\n\nexport type ReferralCodeType = LegacyReferralCode & {\n isPined?: boolean;\n isAutoGenerated?: boolean;\n};\n\nexport type ReferralCodesReturns = {\n copyCode: (code: string) => void;\n copyLink: (code: string) => void;\n editRate: (code: ReferralCodeType) => void;\n editCode: (code: ReferralCodeType) => void;\n setPinCode: (code: string, del?: boolean) => void;\n codes?: ReferralCodeType[];\n};\n\nexport const useReferralCodesScript = (): ReferralCodesReturns => {\n const { referralInfo, referralLinkUrl, mutate, generateCode } =\n useReferralContext();\n\n const copyLink = (code: string) => {\n copyText(generateReferralLink(referralLinkUrl, code));\n };\n const copyCode = (code: string) => {\n copyText(code);\n };\n const editRate = (code: ReferralCodeType) => {\n modal.show(EditReferralRate, { code: { ...code }, mutate });\n };\n\n const editCode = (code: ReferralCodeType) => {\n modal.show(EditCodeModal, {\n code: { ...code },\n successCallback: () => {\n mutate();\n },\n });\n };\n\n const [pinCodes, setPinCodes] = useLocalStorage<string[]>(\n \"orderly_referral_codes\",\n [] as string[],\n );\n const setPinCode = (code: string, del?: boolean) => {\n if (del) {\n const index = pinCodes.findIndex((item: string) => item === code);\n if (index !== -1) {\n pinCodes.splice(index, 1);\n }\n } else {\n pinCodes.splice(0, 0, code);\n }\n\n if (pinCodes.length > 6) {\n pinCodes.splice(pinCodes.length - 1, 1);\n }\n\n setPinCodes([...pinCodes]);\n };\n\n const codes = useMemo((): ReferralCodeType[] | undefined => {\n if (referralInfo?.referrer_info?.referral_codes) {\n const referralCodes: ReferralCodeType[] =\n referralInfo.referrer_info.referral_codes.map((item) => {\n const code: ReferralCodeType = {\n ...item,\n };\n // todo check auto generated\n if (generateCode && generateCode.code === item.code) {\n code.isAutoGenerated = true;\n }\n return code;\n });\n\n const pinedItems: ReferralCodeType[] = [];\n const unpinedItems: ReferralCodeType[] = [...referralCodes];\n\n for (let i = 0; i < pinCodes.length; i++) {\n const code = pinCodes[i];\n const index = unpinedItems.findIndex((item) => item.code === code);\n if (index !== -1) {\n pinedItems.push({ ...unpinedItems[index], isPined: true });\n unpinedItems.splice(index, 1);\n }\n }\n\n // Add pinned items first, then unpinned items\n const allCodes: ReferralCodeType[] = [...pinedItems, ...unpinedItems];\n\n // Return undefined if no codes at all (maintains existing behavior)\n if (allCodes.length === 0) {\n return undefined;\n }\n\n return allCodes;\n }\n\n // Return undefined if no codes at all (maintains existing behavior)\n return undefined;\n }, [referralInfo?.referrer_info?.referral_codes, pinCodes, generateCode]);\n\n return {\n copyCode,\n copyLink,\n editRate,\n editCode,\n setPinCode,\n codes,\n };\n};\n","import { useReferralCodesScript } from \"./referralCodes.script\";\nimport { ReferralCodes } from \"./referralCodes.ui\";\n\nexport const ReferralCodesWidget = () => {\n const state = useReferralCodesScript();\n return <ReferralCodes {...state} />;\n};\n","import { FC, ReactNode, useMemo } from \"react\";\nimport { RefferalAPI, useMediaQuery } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n DatePicker,\n Divider,\n Flex,\n ListView,\n Statistic,\n TabPanel,\n Column,\n Tabs,\n Text,\n cn,\n} from \"@orderly.network/ui\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { DateRange } from \"../../../utils/types\";\nimport { formatYMDTime } from \"../../../utils/utils\";\nimport { CommissionAndRefereesReturns } from \"./commissionAndReferees.script\";\n\nexport const CommissionAndReferees: FC<CommissionAndRefereesReturns> = (\n props,\n) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n id=\"oui-affiliate-affiliate-commissionAndReferees\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9 oui-tabular-nums\"\n >\n <Tabs defaultValue=\"account\" className=\"oui-w-full\" variant=\"contained\">\n <TabPanel value=\"account\" title={t(\"affiliate.commission\")}>\n <CommissionList {...props} />\n </TabPanel>\n <TabPanel value=\"password\" title={t(\"affiliate.myReferees\")}>\n <RefereesList {...props} />\n </TabPanel>\n </Tabs>\n </Flex>\n );\n};\n\nconst MobileCellItem: FC<{\n title: string;\n value: string | ReactNode;\n align?: \"start\" | \"end\" | undefined;\n className?: string;\n rule?: \"address\" | \"date\";\n formatString?: string;\n prefix?: string;\n}> = (props) => {\n const { title, value, align, className, rule, formatString, prefix } = props;\n return (\n <Statistic\n className={cn(\"oui-flex-1\", className)}\n label={\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">{title}</Text>\n }\n align={align}\n children={\n <Text.formatted\n rule={rule || \"\"}\n // @ts-ignore\n formatString={formatString}\n prefix={prefix}\n className=\"oui-text-base-contrast-80 oui-text-sm oui-mt-[6px]\"\n >\n {value}\n </Text.formatted>\n }\n />\n );\n};\n\nconst CommissionList: FC<CommissionAndRefereesReturns> = (props) => {\n const { t } = useTranslation();\n const isLG = useMediaQuery(\"(max-width: 767px)\");\n\n const columns = useMemo(() => {\n const cols: Column[] = [\n {\n title: `${t(\"affiliate.commission\")} (USDC)`,\n dataIndex: \"referral_rebate\",\n render: (value) => (\n <Text>\n {commifyOptional(value, {\n fix: 6,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n })}\n </Text>\n ),\n width: 216,\n },\n {\n title: `${t(\"affiliate.referralVol\")} (USDC)`,\n dataIndex: \"volume\",\n render: (value) => (\n <Text>\n {commifyOptional(value, {\n fix: 2,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n })}\n </Text>\n ),\n width: 216,\n },\n {\n title: t(\"affiliate.commission.column.activeUsers\"),\n dataIndex: \"daily_traded_referral\",\n render: (value) => <Text>{value}</Text>,\n width: 216,\n },\n {\n title: t(\"common.date\"),\n dataIndex: \"date\",\n render: (value) => formatYMDTime(value),\n width: 216,\n },\n ];\n\n return cols;\n }, [t]);\n\n const body = useMemo(() => {\n if (isLG) {\n return (\n <ListView<\n RefferalAPI.ReferralRebateSummary,\n RefferalAPI.ReferralRebateSummary[]\n >\n className=\"oui-max-h-[200px] oui-w-full\"\n dataSource={props.commission.data}\n loadMore={props.commission.loadMore}\n isLoading={props.commission.isLoading}\n renderItem={(e) => {\n return (\n <div>\n <Flex direction={\"row\"} width={\"100%\"}>\n <MobileCellItem\n title={t(\"affiliate.commission\")}\n value={commifyOptional(e.referral_rebate, {\n fix: 6,\n fallback: \"0\",\n padEnd: true,\n })}\n prefix=\"$\"\n />\n <MobileCellItem\n title={t(\"affiliate.referralVol\")}\n value={commifyOptional(e.volume, {\n fix: 2,\n fallback: \"0\",\n padEnd: true,\n })}\n prefix=\"$\"\n />\n <MobileCellItem\n title={t(\"affiliate.commission.column.activeUsers\")}\n value={e.daily_traded_referral}\n />\n <MobileCellItem\n title={t(\"common.date\")}\n value={e.date}\n rule=\"date\"\n formatString=\"yyyy-MM-dd\"\n align=\"end\"\n />\n </Flex>\n <Divider className=\"oui-mt-3 oui-w-full\" />\n </div>\n );\n }}\n />\n );\n }\n\n return (\n <AuthGuardDataTable\n bordered\n columns={columns}\n loading={props.commission.isLoading}\n ignoreLoadingCheck={true}\n dataSource={props.commission.data}\n pagination={props.commission.pagination}\n onRow={(record) => {\n return {\n className: \"oui-h-[41px]\",\n };\n }}\n />\n );\n }, [isLG, props.commission]);\n\n return (\n <Flex\n direction={\"column\"}\n width={\"100%\"}\n justify={\"start\"}\n itemAlign={\"start\"}\n >\n <DateFiler\n value={props.commission.dateRange}\n setValue={props.commission.setDateRange}\n />\n {body}\n </Flex>\n );\n};\n\nconst RefereesList: FC<CommissionAndRefereesReturns> = (props) => {\n const { t } = useTranslation();\n\n const isLG = useMediaQuery(\"(max-width: 767px)\");\n\n const columns = useMemo(() => {\n const cols: Column[] = [\n {\n title: t(\"affiliate.referees.column.refereeAddress\"),\n dataIndex: \"user_address\",\n render: (value) => (\n <Text.formatted rule={\"address\"}>{value}</Text.formatted>\n ),\n className: \"oui-w-1/5\",\n },\n {\n title: t(\"affiliate.referralCode\"),\n dataIndex: \"referral_code\",\n // render: (value) => value,\n className: \"oui-w-1/5\",\n },\n {\n title: `${t(\"affiliate.referees.column.totalCommission\")} (USDC)`,\n dataIndex: \"referral_rebate\",\n render: (value) => (\n <Text>\n {commifyOptional(value, { fix: 6, prefix: \"$\", padEnd: true })}\n </Text>\n ),\n className: \"oui-w-1/5\",\n },\n {\n title: `${t(\"affiliate.referees.column.totalVol\")} (USDC)`,\n dataIndex: \"volume\",\n render: (value) => (\n <Text>\n {commifyOptional(value, { fix: 2, prefix: \"$\", padEnd: true })}\n </Text>\n ),\n className: \"oui-w-1/5\",\n },\n {\n title: t(\"affiliate.referees.column.invitationTime\"),\n dataIndex: \"code_binding_time\",\n render: (value) => (\n <Text.formatted\n rule={\"date\"}\n formatString=\"yyyy-MM-dd\"\n children={value}\n />\n ),\n className: \"oui-w-1/5\",\n },\n ];\n\n return cols;\n }, [t]);\n\n const body = useMemo(() => {\n if (isLG) {\n return (\n <ListView<RefferalAPI.RefereeInfoItem, RefferalAPI.RefereeInfoItem[]>\n className=\"oui-w-full oui-max-h-[200px]\"\n dataSource={props.referees.data}\n loadMore={props.referees.loadMore}\n isLoading={props.referees.isLoading}\n renderItem={(e, index) => {\n return (\n <Flex\n key={index}\n direction={\"column\"}\n gap={3}\n className=\"oui-border-b-2 oui-border-line-6 oui-pb-3\"\n >\n <Flex direction={\"row\"} width={\"100%\"}>\n <MobileCellItem\n title={t(\"affiliate.referralCode\")}\n value={e.referral_code}\n />\n <MobileCellItem\n title={`${t(\n \"affiliate.referees.column.totalCommission\",\n )} (USDC)`}\n value={commifyOptional(e.referral_rebate, {\n fix: 6,\n prefix: \"$\",\n padEnd: true,\n })}\n className=\"oui-min-w-[102px]\"\n />\n <MobileCellItem\n title={t(\"affiliate.referees.column.totalVol\")}\n value={commifyOptional(e.volume, {\n fix: 2,\n prefix: \"$\",\n padEnd: true,\n })}\n align=\"end\"\n />\n </Flex>\n <Flex direction={\"row\"} pt={3} gap={3} width={\"100%\"}>\n <MobileCellItem\n title={t(\"affiliate.referees.column.refereeAddress\")}\n value={e.user_address}\n rule=\"address\"\n />\n <MobileCellItem\n title={t(\"affiliate.referees.column.invitationTime\")}\n value={e.code_binding_time}\n align=\"end\"\n rule=\"date\"\n formatString=\"yyyy-MM-dd\"\n />\n </Flex>\n {/* <Divider /> */}\n </Flex>\n );\n }}\n />\n );\n }\n\n return (\n <AuthGuardDataTable\n bordered\n loading={props.referees.isLoading}\n ignoreLoadingCheck={true}\n columns={columns}\n dataSource={props.referees.data}\n pagination={props.referees.pagination}\n onRow={(record) => {\n return {\n className: \"oui-h-[41px]\",\n };\n }}\n />\n );\n }, [isLG, props.referees]);\n\n return (\n <Flex\n direction={\"column\"}\n width={\"100%\"}\n justify={\"start\"}\n itemAlign={\"start\"}\n >\n {/* <DateFiler\n value={props.referees.dateRange}\n setValue={props.referees.setDateRange}\n /> */}\n {body}\n </Flex>\n );\n};\n\nconst DateFiler: FC<{\n value?: DateRange;\n setValue: any;\n}> = (props) => {\n return (\n <Flex width={\"100%\"} height={49} className=\"oui-border-b oui-border-line-6\">\n <div>\n <DatePicker.range\n size=\"xs\"\n value={props.value}\n onChange={(range) => {\n props.setValue(range);\n }}\n max={90}\n disabled={{\n after: new Date(),\n }}\n />\n </div>\n </Flex>\n );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { DateRange } from \"../../../utils/types\";\nimport { format, subDays } from \"date-fns\";\nimport {\n RefferalAPI,\n useMediaQuery,\n useRefereeInfo,\n useReferralRebateSummary,\n} from \"@orderly.network/hooks\";\nimport { PaginationMeta, usePagination } from \"@orderly.network/ui\";\n\nexport type ListReturns<T> = {\n data: T;\n dateRange?: DateRange;\n setDateRange: React.Dispatch<React.SetStateAction<DateRange | undefined>>;\n isLoading?: boolean;\n loadMore?: () => void;\n pagination: PaginationMeta;\n};\n\nexport type CommissionAndRefereesReturns = {\n commission: ListReturns<RefferalAPI.ReferralRebateSummary[] | undefined>;\n referees: ListReturns<RefferalAPI.RefereeInfoItem[] | undefined>;\n};\n\nexport const useCommissionAndRefereesScript =\n (): CommissionAndRefereesReturns => {\n const commission = useCommissionDataScript();\n const referees = useRefereesDataScript();\n\n return {\n commission,\n referees,\n };\n };\n\nconst useCommissionDataScript = (): ListReturns<\n RefferalAPI.ReferralRebateSummary[] | undefined\n> => {\n const [commissionRange, setCommissionRange] = useState<DateRange | undefined>(\n {\n from: subDays(new Date(), 90),\n to: subDays(new Date(), 1),\n }\n );\n\n const isLG = useMediaQuery(\"(max-width: 767px)\");\n\n const { page, pageSize, setPage, parsePagination } = usePagination();\n\n const [commissionData, { refresh, isLoading, loadMore, meta }] =\n useReferralRebateSummary({\n startDate:\n commissionRange?.from !== undefined\n ? format(commissionRange.from, \"yyyy-MM-dd\")\n : undefined,\n endDate:\n commissionRange?.to !== undefined\n ? format(commissionRange.to, \"yyyy-MM-dd\")\n : undefined,\n size: pageSize,\n page: !isLG ? page : undefined,\n });\n\n useEffect(() => {\n refresh();\n }, [commissionRange]);\n\n // const loadMore = () => {\n // setPage(page + 1);\n // };\n\n const pagination = useMemo(\n () => parsePagination(meta),\n [parsePagination, meta]\n );\n\n useEffect(() => {\n setPage(1);\n }, [commissionRange]);\n\n return {\n data: commissionData || undefined,\n pagination,\n dateRange: commissionRange,\n setDateRange: setCommissionRange,\n isLoading,\n loadMore,\n };\n};\n\nconst useRefereesDataScript = (): ListReturns<\n RefferalAPI.RefereeInfoItem[] | undefined\n> => {\n const [commissionRange, setCommissionRange] = useState<DateRange | undefined>(\n {\n from: subDays(new Date(), 90),\n to: subDays(new Date(), 1),\n }\n );\n\n const isLG = useMediaQuery(\"(max-width: 767px)\");\n\n const { page, pageSize, setPage, parsePagination } = usePagination();\n\n const [commissionData, { refresh, isLoading, loadMore, meta }] =\n useRefereeInfo({\n startDate:\n commissionRange?.from !== undefined\n ? format(commissionRange.from, \"yyyy-MM-dd\")\n : undefined,\n endDate:\n commissionRange?.to !== undefined\n ? format(commissionRange.to, \"yyyy-MM-dd\")\n : undefined,\n size: pageSize,\n page: !isLG ? page : undefined,\n sort: \"descending_code_binding_time\",\n });\n\n useEffect(() => {\n refresh();\n }, [commissionRange]);\n\n // const loadMore = () => {\n // setPage(page + 1);\n // };\n\n const pagination = useMemo(\n () => parsePagination(meta),\n [parsePagination, meta]\n );\n\n useEffect(() => {\n setPage(1);\n }, [commissionRange]);\n\n return {\n data: commissionData || undefined,\n pagination,\n dateRange: commissionRange,\n setDateRange: setCommissionRange,\n isLoading,\n loadMore,\n };\n};\n","import { useCommissionAndRefereesScript } from \"./commissionAndReferees.script\";\nimport { CommissionAndReferees } from \"./commissionAndReferees.ui\";\n\nexport const CommissionAndRefereesWidget = () => {\n const state = useCommissionAndRefereesScript();\n return <CommissionAndReferees {...state} />;\n};\n","import { Flex, cn } from \"@orderly.network/ui\";\nimport { SummaryWidget } from \"./summary\";\nimport { ReferralLinkWidget } from \"./referralLink\";\nimport { TitleStatisticWidget } from \"./titleStatistic\";\nimport { ReferralCodesWidget } from \"./referralCodes\";\nimport { CommissionAndRefereesWidget } from \"./commissionAndReferees\";\nimport { useMediaQuery } from \"@orderly.network/hooks\";\n\nexport const AffiliatePage = () => {\n return (\n <Flex\n id=\"oui-affiliate-affiliate-page\"\n className={cn(\n \"oui-h-lvw\",\n // padding\n // \"oui-p-4 lg:oui-p-6 xl:oui-p-3\",\n \"oui-font-semibold\"\n )}\n direction={\"column\"}\n gap={4}\n >\n <Layout />\n <CommissionAndRefereesWidget />\n </Flex>\n );\n};\n\nconst Layout = () => {\n const is2XL = useMediaQuery(\"(max-width: 1279px)\");\n\n if (is2XL) {\n return <Layout1024 />;\n }\n\n return <Layout1280 />;\n};\n\nconst Layout1024 = () => {\n return (\n <>\n <div className=\"oui-flex oui-flex-col xl:oui-flex-row oui-gap-4 oui-w-full\">\n <SummaryWidget />\n <ReferralLinkWidget />\n </div>\n <TitleStatisticWidget />\n <ReferralCodesWidget />\n </>\n );\n};\n\nconst Layout1280 = () => {\n return (\n <Flex direction={\"row\"} itemAlign={\"stretch\"} gap={4}>\n <Flex direction={\"column\"} gap={4} className=\"oui-flex-1 oui-w-1/2\">\n <div className=\"oui-flex-1 oui-h-full oui-w-full\">\n <SummaryWidget />\n </div>\n <TitleStatisticWidget />\n </Flex>\n <Flex direction={\"column\"} gap={4} className=\"oui-w-1/2\">\n <ReferralLinkWidget />\n {/* <div className=\"oui-h-[360px]\"> */}\n <div className=\"oui-flex-1\">\n <ReferralCodesWidget />\n </div>\n {/* </div> */}\n </Flex>\n </Flex>\n );\n};\n","import { FC, ReactNode, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Text, cn } from \"@orderly.network/ui\";\nimport { commify } from \"@orderly.network/utils\";\nimport { useReferralContext } from \"../../../provider\";\nimport { BecomeAffiliateReturns } from \"./becomeAffiliate.script\";\n\nexport const BecomeAffiliate: FC<BecomeAffiliateReturns> = (props) => {\n const { t } = useTranslation();\n\n const { generateCode } = useReferralContext();\n\n const applyText = useMemo(() => {\n if (!generateCode) {\n return {\n title: t(\"affiliate.process.step1.title\"),\n desc: t(\"affiliate.process.step1.description\"),\n };\n }\n if (generateCode.requireVolume > 0) {\n return {\n title: t(\"affiliate.process.step1.volumeGt0.title\", {\n requireVolume: generateCode.requireVolume,\n }),\n desc: t(\"affiliate.process.step1.volumeGt0.description\", {\n volume: commify(generateCode.completedVolume ?? 0, 2),\n requireVolume: commify(generateCode.requireVolume),\n }),\n };\n }\n // require volume = 0;\n return {\n title: t(\"affiliate.process.step1.volumeEq0.title\"),\n desc: t(\"affiliate.process.step1.volumeEq0.description\"),\n };\n }, [generateCode, t]);\n\n if (typeof props.overwrite === \"function\") {\n return props.overwrite?.(props.state);\n }\n\n return (\n <Flex\n id=\"oui-affiliate-home-becomeAffiliate\"\n direction={\"column\"}\n gap={6}\n p={6}\n itemAlign={\"center\"}\n r={\"2xl\"}\n className=\"oui-bg-base-9\"\n width={\"100%\"}\n >\n <Text>{t(\"affiliate.process.title\")}</Text>\n <Flex className=\"oui-flex oui-flex-col oui-gap-3 lg:oui-w-full lg:oui-flex-row lg:oui-items-stretch\">\n <Item\n icon={<ApplyIcon />}\n title={applyText.title}\n content={applyText.desc}\n />\n <div className=\"oui-shrink lg:oui-flex lg:-oui-rotate-90 lg:oui-flex-row lg:oui-items-center lg:oui-justify-center\">\n <ArrowDownIcon />\n </div>\n <Item\n icon={<ShareIcon />}\n title={t(\"affiliate.process.step2.title\")}\n content={t(\"affiliate.process.step2.description\")}\n />\n <div className=\"oui-shrink lg:oui-flex lg:-oui-rotate-90 lg:oui-flex-row lg:oui-items-center lg:oui-justify-center\">\n <ArrowDownIcon />\n </div>\n <Item\n icon={<EarnIcon />}\n title={t(\"affiliate.process.step3.title\")}\n content={t(\"affiliate.process.step3.description\")}\n />\n </Flex>\n </Flex>\n );\n};\n\nconst Item: FC<{\n icon: ReactNode;\n title: string;\n content: string;\n}> = (props) => {\n return (\n <Flex\n className={cn(\n \"oui-flex oui-flex-row oui-gap-3\",\n \"lg:oui-flex-1 lg:oui-flex-col lg:oui-gap-[6px]\",\n )}\n width={\"100%\"}\n >\n <div className=\"oui-shrink-0\">{props.icon}</div>\n <Flex\n className={cn(\n \"oui-flex oui-flex-col oui-items-start oui-h-full oui-justify-between\",\n // lg\n \"lg:oui-items-center lg:oui-justify-start\",\n )}\n >\n <Text className=\"oui-text-sm md:oui-text-base 2xl:oui-text-lg lg:oui-text-center\">\n {props.title}\n </Text>\n <Text className=\"oui-text-2xs oui-text-base-contrast-36 lg:oui-text-center\">\n {props.content}\n </Text>\n </Flex>\n </Flex>\n );\n};\n\nconst ApplyIcon = () => {\n return (\n <svg\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"lg:oui-w-[64px] lg:oui-h-[64px] 2xl:oui-w-[80px] 2xl:oui-h-[80px]\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M24.941 5.4h-6.682a.6.6 0 0 0-.593.509l-.462 3a.6.6 0 0 0 .593.691h7.606a.6.6 0 0 0 .593-.691l-.462-3a.6.6 0 0 0-.593-.509m-6.682-1.8a2.4 2.4 0 0 0-2.372 2.035l-.462 3a2.4 2.4 0 0 0 2.372 2.765h7.606a2.4 2.4 0 0 0 2.372-2.765l-.462-3A2.4 2.4 0 0 0 24.941 3.6z\"\n fill=\"rgb(var(--oui-color-base-foreground))\"\n fillOpacity=\".36\"\n />\n <path\n d=\"M32.721 28.2c.924-1.6 3.233-1.6 4.157 0l7.275 12.6c.924 1.6-.231 3.6-2.079 3.6H27.525c-1.848 0-3.002-2-2.078-3.6z\"\n fill=\"rgb(var(--oui-color-primary-darken))\"\n />\n <path\n d=\"M33.492 38.12H31.56c-.252 0-.426-.276-.336-.535l1.92-5.53a.4.4 0 0 1 .132-.185.34.34 0 0 1 .204-.07h3.24c.255 0 .43.284.333.544l-1.118 3.011h2.104c.31 0 .475.4.27.656l-5.158 6.453c-.251.313-.716.041-.619-.362z\"\n fill=\"rgb(var(--oui-color-base-foreground))\"\n fillOpacity=\".98\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.4 16.8v2.4h2.4v-2.4zM13.2 15a.6.6 0 0 0-.6.6v4.8a.6.6 0 0 0 .6.6H18a.6.6 0 0 0 .6-.6v-4.8a.6.6 0 0 0-.6-.6z\"\n fill=\"rgb(var(--oui-color-base-foreground))\"\n fillOpacity=\".36\"\n />\n <path\n d=\"M20.4 16.2a.6.6 0 0 1 .6-.6h2.4a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6H21a.6.6 0 0 1-.6-.6zm0 3a.6.6 0 0 1 .6-.6h9a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6h-9a.6.6 0 0 1-.6-.6zm-7.8 5.4a.6.6 0 0 1 .6-.6H30a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6H13.2a.6.6 0 0 1-.6-.6zm0 3.6a.6.6 0 0 1 .6-.6H30a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6H13.2a.6.6 0 0 1-.6-.6zm0 3.6a.6.6 0 0 1 .6-.6h9a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6h-9a.6.6 0 0 1-.6-.6z\"\n fill=\"rgb(var(--oui-color-base-foreground))\"\n fillOpacity=\".36\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15.739 6.6H10.2A2.4 2.4 0 0 0 7.8 9v30a2.4 2.4 0 0 0 2.4 2.4h13.84l1.014-1.8H10.2a.6.6 0 0 1-.6-.6V9a.6.6 0 0 1 .6-.6h5.262zm12 1.8H33a.6.6 0 0 1 .6.6v16.47a2.8 2.8 0 0 1 1.8-.205V9A2.4 2.4 0 0 0 33 6.6h-5.538z\"\n fill=\"rgb(var(--oui-color-base-foreground))\"\n fillOpacity=\".36\"\n />\n </svg>\n );\n};\n\nconst ShareIcon = () => {\n return (\n <svg\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"lg:oui-w-[64px] lg:oui-h-[64px] 2xl:oui-w-[80px] 2xl:oui-h-[80px]\"\n >\n <path\n d=\"M24 33a9 9 0 1 1-18 0 9 9 0 0 1 18 0\"\n fill=\"rgb(var(--oui-color-primary-darken))\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15 32.4a1.8 1.8 0 1 0 0-3.6 1.8 1.8 0 0 0 0 3.6m0 1.8a3.6 3.6 0 1 0 0-7.2 3.6 3.6 0 0 0 0 7.2m-6.578 4.942A4.8 4.8 0 0 1 13.2 34.8h3.6a4.8 4.8 0 0 1 4.778 4.342 9 9 0 0 1-1.778 1.473V39.6a3 3 0 0 0-3-3h-3.6a3 3 0 0 0-3 3v1.015a9 9 0 0 1-1.778-1.473\"\n fill=\"rgb(var(--oui-color-base-foreground))\"\n fillOpacity=\".98\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.2 12a4.2 4.2 0 1 1-8.4 0 4.2 4.2 0 0 1 8.4 0m1.8 0c0 1.37-.459 2.632-1.231 3.642l2.308 2.308a7.76 7.76 0 0 1 4.023-1.7v-.764A3.602 3.602 0 0 1 24 8.4a3.6 3.6 0 0 1 .9 7.087v.764c1.48.17 2.833.754 3.942 1.633l2.326-2.326a6 6 0 1 1 1.273 1.273l-2.326 2.326a7.76 7.76 0 0 1 1.634 3.943h.764a3.602 3.602 0 0 1 7.087.9 3.6 3.6 0 0 1-7.087.9h-.764a7.76 7.76 0 0 1-1.699 4.023l2.308 2.308a6 6 0 1 1-1.25 1.295l-2.347-2.347a7.8 7.8 0 0 1-3.05 1.433 11 11 0 0 0-.377-1.76 6 6 0 1 0-7.185-7.185q-.855-.261-1.76-.379a7.8 7.8 0 0 1 1.432-3.049l-2.347-2.347A6 6 0 1 1 18 12m7.8 0a1.8 1.8 0 1 1-3.6 0 1.8 1.8 0 0 1 3.6 0M36 25.8a1.8 1.8 0 1 0 0-3.6 1.8 1.8 0 0 0 0 3.6m0-9.6a4.2 4.2 0 1 0 0-8.4 4.2 4.2 0 0 0 0 8.4M40.2 36a4.2 4.2 0 1 1-8.4 0 4.2 4.2 0 0 1 8.4 0\"\n fill=\"rgb(var(--oui-color-base-foreground))\"\n fillOpacity=\".36\"\n />\n </svg>\n );\n};\n\nconst EarnIcon = () => {\n return (\n <svg\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"lg:oui-w-[64px] lg:oui-h-[64px] 2xl:oui-w-[80px] 2xl:oui-h-[80px]\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M24 24a2.4 2.4 0 1 0 0-4.8 2.4 2.4 0 0 0 0 4.8m0 1.8a4.2 4.2 0 1 0 0-8.4 4.2 4.2 0 0 0 0 8.4\"\n fill=\"rgb(var(--oui-color-base-foreground))\"\n fillOpacity=\".36\"\n />\n <path\n d=\"M45 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0\"\n fill=\"rgb(var(--oui-color-primary-darken))\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M35.1 6.6a.9.9 0 1 1 1.8 0v.437A3 3 0 0 1 39 9.9h-1.8a1.2 1.2 0 1 0-1.2 1.2 3 3 0 0 1 .9 5.863v.437a.9.9 0 0 1-1.8 0v-.437A3 3 0 0 1 33 14.1h1.8a1.2 1.2 0 1 0 1.2-1.2 3 3 0 0 1-.9-5.863z\"\n fill=\"rgb(var(--oui-color-base-foreground))\"\n fillOpacity=\".98\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M40.2 23.7a.9.9 0 0 1 1.8 0v.6q0 .045-.004.086c-.197 9.351-7.525 16.948-16.765 17.573l1.205 1.205a.9.9 0 1 1-1.272 1.272l-2.7-2.7a.9.9 0 0 1 0-1.272l2.7-2.7a.9.9 0 1 1 1.272 1.272l-1.11 1.11c8.325-.674 14.87-7.642 14.874-16.14zM21.564 4.836a.9.9 0 1 1 1.272-1.272l2.7 2.7a.9.9 0 0 1 0 1.272l-2.7 2.7a.9.9 0 1 1-1.272-1.272l1.11-1.11C14.347 8.528 7.8 15.5 7.8 24v.3a.9.9 0 1 1-1.8 0v-.6l.004-.086C6.201 14.263 13.53 6.666 22.77 6.042z\"\n fill=\"rgb(var(--oui-color-base-foreground))\"\n fillOpacity=\".36\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M24 11.4q.615 0 1.213.058a11 11 0 0 0 .061 1.816Q24.647 13.2 24 13.2c-5.965 0-10.8 4.835-10.8 10.8 0 2.898 1.142 5.53 3 7.47a4.8 4.8 0 0 1 4.8-4.79h6a4.8 4.8 0 0 1 4.8 4.789c1.858-1.94 3-4.572 3-7.47q0-.647-.074-1.274a11 11 0 0 0 1.816.06q.057.6.058 1.214c0 6.959-5.641 12.6-12.6 12.6S11.4 30.959 11.4 24 17.041 11.4 24 11.4m6 21.581v-1.5a3 3 0 0 0-3-3h-6a3 3 0 0 0-3 3v1.5a10.75 10.75 0 0 0 6 1.819c2.22 0 4.284-.67 6-1.819\"\n fill=\"rgb(var(--oui-color-base-foreground))\"\n fillOpacity=\".36\"\n />\n </svg>\n );\n};\n\nconst ArrowDownIcon = () => {\n return (\n <svg\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.5048 4.00806C8.8728 4.00806 9.1708 4.30626 9.1708 4.67406C9.1708 4.99259 9.1708 8.71739 9.1708 9.71072L11.1688 7.73339L12.1055 8.67005L8.98346 11.8127C8.85346 11.9434 8.6788 12.0081 8.50413 12.0081C8.33013 12.0081 8.15612 11.9427 8.02612 11.8127L4.90413 8.67005L5.8408 7.73339L7.83881 9.71072C7.83881 8.71739 7.83881 4.99259 7.83881 4.67406C7.83881 4.30626 8.1368 4.00806 8.5048 4.00806Z\"\n fill=\"rgb(var(--oui-color-primary))\"\n />\n </svg>\n );\n};\n","import {\n BuildNode,\n ReferralContextReturns,\n useReferralContext,\n} from \"../../../provider\";\n\nexport type BecomeAffiliateReturns = {\n state: ReferralContextReturns;\n overwrite?: BuildNode;\n};\n\nexport const useBecomeAffiliateScript = (): BecomeAffiliateReturns => {\n const state = useReferralContext();\n\n return {\n overwrite: state.overwrite?.ref?.step,\n state,\n };\n};\n","import { useBecomeAffiliateScript } from \"./becomeAffiliate.script\";\nimport { BecomeAffiliate } from \"./becomeAffiliate.ui\";\n\nexport const BecomeAffiliateWidget = () => {\n const state = useBecomeAffiliateScript();\n return <BecomeAffiliate {...state} />;\n};\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const Title: React.FC = () => {\n const { t } = useTranslation();\n return (\n <div\n id=\"oui-affiliate-home-title\"\n className=\"oui-text-center oui-text-3xl oui-font-bold md:oui-text-3xl lg:oui-text-4xl xl:oui-text-5xl\"\n >\n {t(\"affiliate.page.title\")}\n </div>\n );\n};\n","import React from \"react\";\nimport { Title } from \"./title.ui\";\n\nexport const TitleWidget: React.FC = () => {\n return <Title />;\n};\n","import { FC } from \"react\";\nimport { SubtitleReturns } from \"./subtitle.script\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const Subtitle: FC<SubtitleReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n id=\"oui-affiliate-home-subtitle\"\n direction={\"column\"}\n className=\"oui-text-sm md:oui-text-base xl:oui-text-lg oui-text-base-contrast-80 oui-text-center\"\n gap={3}\n >\n <Text>{t(\"affiliate.page.subTitle\")}</Text>\n <Flex\n direction={\"row\"}\n gap={1}\n className=\"oui-text-primary-light oui-fill-primary-light hover:oui-text-primary-darken oui-cursor-pointer oui-text-2xs md:oui-text-xs xl:oui-text-sm\"\n onClick={(e) => {\n if (props.onLearnAffiliate) {\n props.onLearnAffiliate?.();\n } else if (props.learnAffiliateUrl) {\n window.open(props.learnAffiliateUrl, \"_blank\");\n }\n }}\n >\n <Text children={t(\"affiliate.page.learnMore\")} />\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M4.008 7.995c0-.368.298-.666.666-.666H9.71L7.733 5.331l.937-.936 3.143 3.122c.13.13.195.304.195.479a.67.67 0 0 1-.195.478L8.67 11.596l-.937-.937 1.978-1.998H4.674a.666.666 0 0 1-.666-.666\" />\n </svg>\n </Flex>\n </Flex>\n );\n};\n","import { ReactNode } from \"react\";\nimport { RefferalAPI } from \"@orderly.network/hooks\";\nimport { BuildNode, useReferralContext } from \"../../../provider\";\n\nexport type SubtitleReturns = {\n onLearnAffiliate?: () => void;\n learnAffiliateUrl?: string;\n};\n\nexport const useSubtitleScript = (): SubtitleReturns => {\n const state = useReferralContext();\n\n const { onLearnAffiliate, learnAffiliateUrl } = state;\n\n return {\n onLearnAffiliate,\n learnAffiliateUrl,\n };\n};\n","import { useSubtitleScript } from \"./subtitle.script\";\nimport { Subtitle } from \"./subtitle.ui\";\n\nexport const SubtitleWidget = () => {\n const state = useSubtitleScript();\n return <Subtitle {...state} />;\n};\n","import { FC } from \"react\";\nimport { TopReturns } from \"./top.script\";\nimport { TitleWidget } from \"../title\";\nimport { SubtitleWidget } from \"../subtitle\";\nimport { Flex } from \"@orderly.network/ui\";\n\nexport const Top: FC<TopReturns> = (props) => {\n if (props.overwriteTop !== undefined) {\n return props.overwriteTop?.(props.state);\n }\n return (\n <Flex id=\"oui-affiliate-home-top\" direction=\"column\" gap={6}>\n <TitleWidget />\n <SubtitleWidget />\n </Flex>\n );\n};\n","import {\n BuildNode,\n ReferralContextReturns,\n useReferralContext,\n} from \"../../../provider\";\n\nexport type TopReturns = {\n state: ReferralContextReturns;\n overwriteTop?: BuildNode;\n};\n\nexport const useTopScript = (): TopReturns => {\n const state = useReferralContext();\n\n return {\n overwriteTop: state.overwrite?.ref?.top,\n state,\n };\n};\n","import { useTopScript } from \"./top.script\";\nimport { Top } from \"./top.ui\";\n\nexport const TopWidget = () => {\n const state = useTopScript();\n return (\n <Top {...state}/>\n );\n};\n","import { FC } from \"react\";\nimport { cn } from \"@orderly.network/ui\";\n\nexport const ArrowRightIcon: FC<{\n className?: string;\n}> = (props) => {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(props.className, \"oui-fill-base-contrast\")}\n >\n <path d=\"M4.00806 7.9952C4.00806 7.6272 4.30626 7.3292 4.67406 7.3292C4.99259 7.3292 8.71739 7.3292 9.71072 7.3292L7.73339 5.3312L8.67005 4.39453L11.8127 7.51654C11.9434 7.64654 12.0081 7.8212 12.0081 7.99587C12.0081 8.16987 11.9427 8.34388 11.8127 8.47388L8.67005 11.5959L7.73339 10.6592L9.71072 8.66119C8.71739 8.66119 4.99259 8.66119 4.67406 8.66119C4.30626 8.66119 4.00806 8.3632 4.00806 7.9952Z\" />\n </svg>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport {\n Button,\n cn,\n Dialog,\n DialogBody,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n Divider,\n Flex,\n inputFormatter,\n Text,\n TextField,\n} from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { ArrowRightIcon } from \"../../../icons/arrowRightIcon\";\nimport { USDCIcon } from \"../../../icons/usdcIcon\";\nimport { AsTraderReturns } from \"./asTrader.script\";\n\nexport const AsTrader: FC<AsTraderReturns> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex\n id=\"oui-affiliate-home-asTrader\"\n gradient=\"success\"\n r={\"2xl\"}\n p={6}\n gap={6}\n direction={\"column\"}\n angle={180}\n width={\"100%\"}\n justify={\"between\"}\n >\n <Flex\n height={80}\n direction={\"row\"}\n gap={3}\n itemAlign={\"start\"}\n width={\"100%\"}\n justify={\"between\"}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"between\"}\n className=\"oui-h-full\"\n >\n <Text className=\"oui-text-lg md:oui-text-xl lg:oui-text-2xl xl:oui-text-3xl\">\n {props.isTrader\n ? t(\"affiliate.trader\")\n : t(\"affiliate.asTrader.title\")}\n </Text>\n <Text\n className={cn(\n \"oui-text-xs oui-text-base-contrast-54 md:oui-text-sm 2xl:oui-text-base\",\n props.isTrader && \"oui-hidden\",\n )}\n >\n {t(\"affiliate.asTrader.description\")}\n </Text>\n </Flex>\n <div className=\"oui-shrink-0\">\n <Icon />\n </div>\n </Flex>\n <Bottom {...props} />\n </Flex>\n );\n};\n\nconst Icon = () => {\n return (\n <svg\n width=\"72\"\n height=\"72\"\n viewBox=\"0 0 90 90\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"xl:oui-size-[90px] \"\n >\n <path\n d=\"M44.996 7.324c-20.71 0-37.43 16.79-37.5 37.5-.07 20.682 16.806 37.575 37.5 37.617 20.694.04 37.537-17.082 37.5-37.617-.037-20.71-16.79-37.5-37.5-37.5m0 7.5c16.569 0 30 13.433 30 30 0 8.438-3.514 16.043-9.12 21.495-2.762-5.973-8.694-10.245-15.49-10.245h-10.78c-6.791 0-12.706 4.22-15.47 10.197-5.606-5.453-9.14-13.01-9.14-21.447 0-16.567 13.431-30 30-30m0 7.5c-8.284 0-15 6.717-15 15s6.716 15 15 15 15-6.716 15-15-6.716-15-15-15\"\n fill=\"rgb(var(--oui-color-base-foreground))\"\n fillOpacity=\".2\"\n />\n <path\n d=\"M90 71.25C90 81.605 81.605 90 71.25 90S52.5 81.605 52.5 71.25 60.895 52.5 71.25 52.5 90 60.895 90 71.25\"\n fill=\"rgb(var(--oui-color-success-darken))\"\n />\n <path\n d=\"M80.62 75.007c0-.24-.08-.49-.263-.675l-3.487-3.456-1.318 1.318 1.845 1.875H63.745a.938.938 0 0 0 0 1.875h13.652l-1.845 1.875 1.318 1.318 3.487-3.456a.95.95 0 0 0 .263-.674m-.937-7.5a.94.94 0 0 0-.938-.938H65.093l1.846-1.875-1.319-1.318-3.486 3.456a.966.966 0 0 0 0 1.349l3.486 3.456 1.319-1.318-1.846-1.875h13.652c.518 0 .938-.42.938-.937\"\n fill=\"rgb(var(--oui-color-base-foreground))\"\n fillOpacity=\".98\"\n />\n </svg>\n );\n};\n\nconst Bottom: FC<AsTraderReturns> = (props) => {\n const { t } = useTranslation();\n\n const content = () => {\n if (props.isTrader && !props.wrongNetwork) {\n const totalReferrerRebate =\n props.referralInfo?.referee_info?.total_referee_rebate;\n return (\n <>\n <Flex direction={\"column\"} itemAlign={\"start\"} gap={2}>\n <Text className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\">\n {t(\"affiliate.commission\")} {<Text intensity={36}>(USDC)</Text>}\n </Text>\n <Flex direction={\"row\"} gap={1}>\n <USDCIcon />\n <Text className=\"oui-text-base md:oui-text-lg lg:oui-text-xl xl:oui-text-2xl\">\n {commifyOptional(totalReferrerRebate, {\n fix: 2,\n fallback: \"0\",\n })}\n </Text>\n </Flex>\n </Flex>\n <Flex\n direction={\"row\"}\n gap={1}\n justify={\"end\"}\n itemAlign={\"center\"}\n className=\"oui-cursor-pointer\"\n onClick={props?.onEnterTraderPage}\n >\n <Text className=\"oui-text-sm md:oui-text-base xl:oui-text-lg\">\n {t(\"affiliate.enter\")}\n </Text>\n <ArrowRightIcon className=\"md:oui-size-[18px] lg:oui-size-[20px] xl:oui-size-[24px]\" />\n </Flex>\n </>\n );\n }\n\n return <EntryCode {...props} />;\n };\n\n return (\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n width={\"100%\"}\n itemAlign={\"end\"}\n >\n {content()}\n </Flex>\n );\n};\n\nconst EntryCode: FC<AsTraderReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Dialog open={props.open} onOpenChange={props.setOpen}>\n <DialogTrigger>\n <Button variant=\"contained\" color=\"light\">\n {t(\"affiliate.asTrader.button\")}\n </Button>\n </DialogTrigger>\n <DialogContent className=\"oui-w-[320px] oui-font-semibold\">\n <DialogHeader>\n <DialogTitle>{t(\"affiliate.referralCode.dialog.title\")}</DialogTitle>\n </DialogHeader>\n <Divider />\n <DialogBody>\n <Text size=\"sm\" intensity={54}>\n {t(\"affiliate.referralCode.dialog.description\")}\n </Text>\n\n <TextField\n className=\"oui-mt-4 oui-w-full\"\n placeholder={t(\"affiliate.referralCode\")}\n value={props.code}\n onChange={(e) => {\n const _value = e.target.value\n .toUpperCase()\n .replace(/[^A-Z0-9]/g, \"\");\n props.setCode(_value);\n }}\n formatters={[\n inputFormatter.createRegexInputFormatter(\n (value: string | number) => {\n return String(value).replace(/[a-z]/g, (char: string) =>\n char.toUpperCase(),\n );\n },\n ),\n inputFormatter.createRegexInputFormatter(/[^A-Z0-9]/g),\n ]}\n onClean={() => {\n props.setCode(\"\");\n }}\n label={t(\"affiliate.referralCode.label\")}\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-54\",\n }}\n helpText={\n !props.isExist && !props.isLoading && props.code.length > 0\n ? t(\"affiliate.referralCode.notExist\")\n : undefined\n }\n color={\n !props.isExist && !props.isLoading && props.code.length > 0\n ? \"danger\"\n : undefined\n }\n />\n\n <Flex direction={\"column\"} gapY={3} mt={6}>\n {props.warningMessage && (\n <Text size=\"2xs\" className=\"oui-text-warning-darken\">\n {props.warningMessage}\n </Text>\n )}\n <AuthGuard buttonProps={{ size: \"md\", fullWidth: true }}>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"md\"\n className=\"oui-px-[40px]\"\n fullWidth\n disabled={props.code.length < 4 || !props.isExist}\n onClick={(e) => {\n e.stopPropagation();\n props.onClickConfirm();\n }}\n >\n {t(\"common.confirm\")}\n </Button>\n </AuthGuard>\n </Flex>\n </DialogBody>\n </DialogContent>\n </Dialog>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport {\n useAccount,\n useCheckReferralCode,\n useMutation,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { toast, useScreen } from \"@orderly.network/ui\";\nimport { AuthStatusEnum, useAuthStatus } from \"@orderly.network/ui-connector\";\nimport { TabTypes, useReferralContext } from \"../../../provider\";\n\nexport const useAsTraderScript = () => {\n const { t } = useTranslation();\n\n const {\n isTrader,\n referralInfo,\n setShowHome,\n bindReferralCodeState,\n setTab,\n mutate,\n } = useReferralContext();\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const { state } = useAccount();\n\n const onEnterTraderPage = () => {\n setTab(TabTypes.trader);\n setShowHome(false);\n };\n\n const [code, setCode] = useState(\"\");\n const [open, setOpen] = useState(false);\n\n const {\n isExist,\n error: checkCodeError,\n isLoading,\n } = useCheckReferralCode(code);\n\n const hide = () => {\n setOpen(false);\n };\n\n const [bindCode, { error, isMutating }] = useMutation(\n \"/v1/referral/bind\",\n \"POST\",\n );\n\n const onClickConfirm = async () => {\n try {\n await bindCode({ referral_code: code });\n toast.success(t(\"affiliate.referralCode.bound\"));\n mutate();\n if (bindReferralCodeState) {\n bindReferralCodeState(true, null, hide, { tab: 1 });\n } else {\n hide();\n }\n } catch (e: any) {\n let errorText = `${e}`;\n if (\"message\" in e) {\n errorText = e.message;\n }\n\n if (\"referral code not exist\" === errorText) {\n errorText = t(\"affiliate.referralCode.notExist\");\n }\n\n if (bindReferralCodeState) {\n toast.error(errorText);\n bindReferralCodeState(false, e, hide, {});\n } else {\n toast.error(errorText);\n }\n }\n };\n\n const { isMobile } = useScreen();\n\n const authStatus = useAuthStatus();\n\n const warningMessage = useMemo(() => {\n const message: { [key in AuthStatusEnum]?: string } = {\n [AuthStatusEnum.ConnectWallet]: t(\"affiliate.connectWallet.tooltip\"),\n [AuthStatusEnum.CreateAccount]: t(\"affiliate.createAccount.tooltip\"),\n [AuthStatusEnum.WrongNetwork]: t(\"connector.wrongNetwork.tooltip\"),\n };\n return message[authStatus];\n }, [t, authStatus]);\n\n return {\n isTrader,\n isLoading,\n referralInfo,\n onEnterTraderPage,\n code,\n setCode,\n open,\n setOpen,\n onClickConfirm,\n isExist,\n wrongNetwork,\n isMobile,\n warningMessage,\n };\n};\n\nexport type AsTraderReturns = ReturnType<typeof useAsTraderScript>;\n","import { useAsTraderScript } from \"./asTrader.script\";\nimport { AsTrader } from \"./asTrader.ui\";\n\nexport const AsTraderWidget = () => {\n const state = useAsTraderScript();\n return <AsTrader {...state} />;\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Button, cn, Flex, Text } from \"@orderly.network/ui\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { ArrowRightIcon } from \"../../../icons/arrowRightIcon\";\nimport { USDCIcon } from \"../../../icons/usdcIcon\";\nimport { AsAnAffiliateReturns } from \"./asAnAffiliate.script\";\n\nexport const AsAnAffiliate: FC<AsAnAffiliateReturns> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex\n id=\"oui-affiliate-home-asAnAffiliate\"\n gradient=\"primary\"\n r={\"2xl\"}\n p={6}\n gap={6}\n direction={\"column\"}\n angle={180}\n width={\"100%\"}\n justify={\"between\"}\n >\n <Flex\n direction={\"row\"}\n gap={3}\n itemAlign={\"start\"}\n width={\"100%\"}\n justify={\"between\"}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"between\"}\n className=\"oui-h-full\"\n >\n <Text className=\"oui-text-lg md:oui-text-xl lg:oui-text-2xl xl:oui-text-3xl\">\n {props.isAffiliate\n ? t(\"common.affiliate\")\n : t(\"affiliate.asAffiliate.title\")}\n </Text>\n <Text\n className={cn(\n \"oui-text-xs oui-text-base-contrast-54 md:oui-text-sm 2xl:oui-text-base\",\n props.isAffiliate && \"oui-hidden\",\n )}\n >\n {t(\"affiliate.asAffiliate.description\")}\n </Text>\n </Flex>\n <div className=\"oui-shrink-0\">\n <Icon />\n </div>\n </Flex>\n <Bottom {...props} />\n </Flex>\n );\n};\n\nconst Icon = () => {\n return (\n <svg\n width=\"72\"\n height=\"72\"\n viewBox=\"0 0 72 72\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"xl:oui-size-[90px]\"\n >\n <path\n d=\"M35.997 5.86c-16.569 0-29.944 13.43-30 30-.056 16.545 13.445 30.06 30 30.093s30.03-13.665 30-30.093c-.03-16.57-13.432-30-30-30m0 6c13.255 0 24 10.746 24 24 0 6.75-2.812 12.834-7.297 17.196-2.209-4.78-6.955-8.196-12.39-8.196h-8.626c-5.432 0-10.164 3.375-12.375 8.157-4.485-4.362-7.312-10.407-7.312-17.157 0-13.254 10.745-24 24-24m0 6c-6.628 0-12 5.373-12 12s5.372 12 12 12c6.627 0 12-5.373 12-12s-5.373-12-12-12\"\n fill=\"rgb(var(--oui-color-base-foreground))\"\n fillOpacity=\".2\"\n />\n <path\n d=\"M72 57c0 8.284-6.716 15-15 15s-15-6.716-15-15 6.716-15 15-15 15 6.716 15 15\"\n fill=\"rgb(var(--oui-gradient-primary-end))\"\n />\n <path\n d=\"M53.624 51.45a4.125 4.125 0 0 0-4.125 4.125c0 2.388 1.36 4.641 3.61 6.703a21 21 0 0 0 2.414 1.875c.287.194.556.37.797.516.147.089.243.154.304.187a.79.79 0 0 0 .75 0c.061-.033.158-.098.305-.187.24-.147.51-.322.797-.516a21 21 0 0 0 2.414-1.875c2.25-2.062 3.61-4.315 3.61-6.703a4.125 4.125 0 0 0-4.126-4.125c-1.294 0-2.557.705-3.351 1.734-.775-1.047-2.034-1.734-3.399-1.734\"\n fill=\"rgb(var(--oui-color-base-foreground))\"\n fillOpacity=\".98\"\n />\n </svg>\n );\n};\n\nconst Bottom: FC<AsAnAffiliateReturns> = (props) => {\n const { t } = useTranslation();\n\n const content = () => {\n if (props.isAffiliate && !props.wrongNetwork) {\n const totalReferrerRebate =\n props.referralInfo?.referrer_info?.total_referrer_rebate;\n return (\n <>\n <Flex direction={\"column\"} itemAlign={\"start\"} gap={2}>\n <Text className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\">\n {t(\"affiliate.commission\")} {<Text intensity={36}>(USDC)</Text>}\n </Text>\n <Flex direction={\"row\"} gap={1}>\n <USDCIcon />\n <Text className=\"oui-text-base md:oui-text-lg lg:oui-text-xl xl:oui-text-2xl\">\n {commifyOptional(totalReferrerRebate, {\n fix: 2,\n fallback: \"0\",\n })}\n </Text>\n </Flex>\n </Flex>\n\n <Flex\n direction={\"row\"}\n gap={1}\n justify={\"end\"}\n itemAlign={\"center\"}\n className=\"oui-cursor-pointer\"\n onClick={props.onEnterAffiliatePage}\n >\n <Text className=\"oui-text-sm md:oui-text-base xl:oui-text-lg\">\n {t(\"affiliate.enter\")}\n </Text>\n <ArrowRightIcon className=\"md:oui-size-[18px] lg:oui-size-[20px] xl:oui-size-[24px]\" />\n </Flex>\n </>\n );\n }\n\n return (\n <>\n <Button\n variant=\"contained\"\n color=\"light\"\n onClick={props.becomeAnAffiliate}\n >\n {t(\"affiliate.asAffiliate.button\")}\n </Button>\n <Flex\n direction={\"column\"}\n justify={\"between\"}\n className=\"oui-h-full\"\n itemAlign={\"end\"}\n >\n <Text className=\"oui-text-base md:oui-text-lg lg:oui-text-xl 2xl:oui-text-2xl\">\n {t(\"affiliate.upTo\")}\n </Text>\n <Text className=\"oui-text-2xs oui-text-base-contrast-54 md:oui-text-xs 2xl:oui-text-sm\">\n {t(\"affiliate.commission\")}\n </Text>\n </Flex>\n </>\n );\n };\n\n return (\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n width={\"100%\"}\n itemAlign={\"end\"}\n >\n {content()}\n </Flex>\n );\n};\n","import { useAppContext } from \"@orderly.network/react-app\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { TabTypes, useReferralContext } from \"../../../provider\";\n\nexport type AsAnAffiliateReturns = ReturnType<typeof useAsAnAffiliateScript>;\n\nexport const useAsAnAffiliateScript = () => {\n const {\n isAffiliate,\n isLoading,\n referralInfo,\n becomeAnAffiliateUrl,\n setShowHome,\n setTab,\n } = useReferralContext();\n\n const { wrongNetwork } = useAppContext();\n\n const becomeAnAffiliate = () => {\n window.open(becomeAnAffiliateUrl, \"_blank\");\n };\n\n const onEnterAffiliatePage = () => {\n setTab(TabTypes.affiliate);\n setShowHome(false);\n };\n\n const { isMobile } = useScreen();\n\n return {\n isAffiliate,\n isLoading,\n referralInfo,\n onEnterAffiliatePage,\n becomeAnAffiliate,\n wrongNetwork,\n isMobile,\n };\n};\n","import React from \"react\";\nimport { useAsAnAffiliateScript } from \"./asAnAffiliate.script\";\nimport { AsAnAffiliate } from \"./asAnAffiliate.ui\";\n\nexport const AsAnAffiliateWidget: React.FC = () => {\n const state = useAsAnAffiliateScript();\n return <AsAnAffiliate {...state} />;\n};\n","import { FC } from \"react\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { AsTraderWidget } from \"../asATrader\";\nimport { AsAnAffiliateWidget } from \"../asAnAffilate\";\nimport { CardReturns } from \"./card.script\";\n\nexport const Card: FC<CardReturns> = (props) => {\n if (typeof props.overwrite === \"function\") {\n return props.overwrite?.(props.state);\n }\n return (\n <Flex\n id=\"oui-affiliate-home-card\"\n className=\"oui-flex oui-w-full oui-flex-col oui-items-stretch oui-gap-6 xl:oui-flex-row xl:oui-gap-[36px]\"\n >\n <AsAnAffiliateWidget />\n <AsTraderWidget />\n </Flex>\n );\n};\n","import {\n BuildNode,\n ReferralContextReturns,\n useReferralContext,\n} from \"../../../provider\";\n\nexport type CardReturns = {\n state: ReferralContextReturns;\n overwrite?: BuildNode;\n};\n\nexport const useCardScript = (): CardReturns => {\n const state = useReferralContext();\n\n return {\n overwrite: state.overwrite?.ref?.card,\n state,\n };\n};\n","import { useCardScript } from \"./card.script\";\nimport { Card } from \"./card.ui\";\n\nexport const CardWidget = () => {\n const state = useCardScript();\n return <Card {...state} />;\n};\n","import { Flex, Box, cn } from \"@orderly.network/ui\";\nimport { BecomeAffiliateWidget } from \"./becomeAffiliate\";\nimport { TopWidget } from \"./top\";\nimport { CardWidget } from \"./card\";\n\nexport const HomePage = () => {\n return (\n <Flex\n id=\"oui-affiliate-home-page\"\n className={cn(\n \"oui-h-lvw \",\n // padding\n // \"oui-p-4 lg:oui-p-6 xl:oui-p-3\",\n \"oui-font-semibold\"\n )}\n direction={\"column\"}\n gap={4}\n >\n <TopWidget />\n <CardWidget />\n <BecomeAffiliateWidget />\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Button, Flex, Select, Text } from \"@orderly.network/ui\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { USDCIcon } from \"../../../icons/usdcIcon\";\nimport { SummaryReturns } from \"./summary.script\";\n\nexport const Summary: FC<SummaryReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n id=\"oui-affiliate-trader-summary\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n height={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9 xl:oui-flex-1\"\n >\n <Title {...props} />\n <Rebate className=\"md:oui-hidden\" {...props} />\n <Flex direction={\"column\"} gap={3} width={\"100%\"} className=\"md:oui-mt-3\">\n <SummaryFilter {...props} />\n <CommissionData {...props} />\n </Flex>\n <Row title={`${t(\"affiliate.trader.tradingVol\")} (USDC)`} {...props} />\n </Flex>\n );\n};\n\nconst Title: FC<SummaryReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"row\"} width={\"100%\"} gap={3}>\n <Flex direction={\"row\"} gap={3} className=\"oui-flex-1\">\n <Text className=\"oui-text-lg\">\n {t(\"affiliate.trader.yourReferrer\")}\n </Text>\n <Button\n color=\"secondary\"\n size=\"sm\"\n className=\"oui-text-primary-light oui-text-2xs md:oui-text-xs 2xl:oui-text-sm oui-bg-base-6\"\n >\n {props.code}\n </Button>\n </Flex>\n <Rebate\n className=\"oui-hidden md:oui-flex md:oui-flex-shrink md:oui-w-fit\"\n {...props}\n />\n </Flex>\n );\n};\n\nconst Rebate: FC<SummaryReturns & { className?: string }> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"row\"} width={\"100%\"} gap={2} className={props.className}>\n <Text\n intensity={54}\n className=\"oui-text-sm md:oui-text-base 2xl:oui-text-lg\"\n >\n {`${t(\"affiliate.trader.rebate\")}:`}\n </Text>\n <Text.gradient\n color=\"brand\"\n className=\"oui-text-lg md:oui-text-xl 2xl:oui-text-2xl\"\n >\n {props.rebateText}\n </Text.gradient>\n </Flex>\n );\n};\n\nconst SummaryFilter: FC<SummaryReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"row\"} width={\"100%\"} justify={\"between\"} gap={3}>\n <Text className=\"oui-text-sm\">{t(\"affiliate.summary\")}</Text>\n <div>\n <Select.options\n size={\"xs\"}\n value={props.period}\n onValueChange={props.onPeriodChange}\n options={props.periodTypes}\n />\n </div>\n </Flex>\n );\n};\n\nconst CommissionData: FC<SummaryReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n gradient=\"success\"\n angle={180}\n r=\"xl\"\n py={4}\n px={6}\n width={\"100%\"}\n direction={\"column\"}\n gap={3}\n >\n <Text intensity={54} className=\"oui-text-base 2xl:oui-text-lg\">\n {`${t(\"affiliate.trader.rebates\")} (USDC)`}\n </Text>\n <Flex\n direction={\"row\"}\n gap={3}\n className=\"oui-text-xl md:oui-text-2xl xl:oui-text-3xl\"\n >\n <USDCIcon className=\"md:oui-w-[24px] md:oui-h-[24px] lg:oui-w-[28px] lg:oui-h-[28px] \" />\n <Text>{commifyOptional(props.rebates, { fix: 2, fallback: \"0\" })}</Text>\n </Flex>\n </Flex>\n );\n};\n\nconst Row: FC<\n SummaryReturns & {\n title: string;\n }\n> = (props) => {\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text\n intensity={54}\n className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\"\n >\n {props.title}\n </Text>\n <Text className=\"oui-text-xs md:oui-text-sm xl:oui-text-base\">\n {commifyOptional(props.vol, { fix: 2, fallback: \"0\" })}\n </Text>\n </Flex>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useReferralContext } from \"../../../provider\";\nimport { SummaryFilter } from \"../../../utils/types\";\n\nexport type SummaryReturns = {\n period: string;\n periodTypes: { label: string; value: string }[];\n onPeriodChange: (item: string) => void;\n rebates: number;\n vol?: number;\n code?: string;\n rebateText: string;\n};\n\nexport const useSummaryScript = (): SummaryReturns => {\n const { t } = useTranslation();\n const [period, setPeriod] = useState<SummaryFilter>(\"All\");\n\n const periodTypes: {\n label: SummaryFilter;\n value: SummaryFilter;\n }[] = [\n { label: t(\"common.all\"), value: \"All\" },\n { label: t(\"common.select.1d\"), value: \"1D\" },\n { label: t(\"common.select.7d\"), value: \"7D\" },\n { label: t(\"common.select.30d\"), value: \"30D\" },\n ];\n\n const { referralInfo, userVolume } = useReferralContext();\n\n const rebates = useMemo(() => {\n if (!referralInfo) return 0;\n //\n switch (period) {\n case \"All\":\n return referralInfo.referee_info.total_referee_rebate;\n case \"1D\":\n return referralInfo.referee_info[\"1d_referee_rebate\"];\n case \"7D\":\n return referralInfo.referee_info[\"7d_referee_rebate\"];\n case \"30D\":\n return referralInfo.referee_info[\"30d_referee_rebate\"];\n }\n }, [referralInfo, period]);\n\n const vol = useMemo(() => {\n if (!userVolume) return undefined;\n switch (period) {\n case \"All\":\n return userVolume.all_volume;\n case \"1D\":\n return userVolume[\"1d_volume\"];\n case \"7D\":\n return userVolume[\"7d_volume\"];\n case \"30D\":\n return userVolume[\"30d_volume\"];\n }\n }, [userVolume, period]);\n\n const code = referralInfo?.referee_info?.referer_code;\n const rebate = referralInfo?.referee_info?.referee_rebate_rate;\n\n const rebateText = useMemo(() => {\n if (!!rebate) {\n return (\n new Decimal(rebate)\n .mul(100)\n .toDecimalPlaces(2, Decimal.ROUND_DOWN)\n .toString() + \"%\"\n );\n }\n return \"-\";\n }, [rebate]);\n\n const onPeriodChange = (item: string) => {\n setPeriod(item as SummaryFilter);\n };\n return {\n period,\n periodTypes,\n onPeriodChange,\n rebates,\n vol,\n rebateText,\n code,\n };\n};\n","import { useSummaryScript } from \"./summary.script\";\nimport { Summary } from \"./summary.ui\";\n\nexport const SummaryWidget = () => {\n const state = useSummaryScript();\n return <Summary {...state} />;\n};\n","import { FC } from \"react\";\nimport { VolBarChart } from \"@orderly.network/chart\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Select, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { TitleStatisticReturns } from \"./titleStatistic.script\";\n\nexport const TitleStatistic: FC<TitleStatisticReturns> = (props) => {\n return (\n <Flex\n id=\"oui-affiliate-trader-titleStatistic\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9 xl:oui-flex-1\"\n >\n <Title {...props} />\n <Flex className=\"oui-min-h-[170px] oui-h-full oui-w-full oui-flex oui-flex-row oui-items-stretch\">\n <VolBarChart\n data={props.dataSource}\n colors={{ fill: \"rgb(var(--oui-color-success))\" }}\n className=\"oui-w-full oui-flex-1\"\n tooltip={{\n rm: Decimal.ROUND_DOWN,\n dp: props.volType === \"volume\" ? 2 : 6,\n }}\n />\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<TitleStatisticReturns> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">{t(\"affiliate.statistics\")}</Text>\n <Flex direction={\"row\"} gap={2} className={\"oui-min-w-14\"}>\n <Select.options\n size={\"xs\"}\n value={props.period}\n onValueChange={props.onPeriodChange}\n options={props.periodTypes}\n />\n <Select.options\n size={\"xs\"}\n value={props.volType}\n onValueChange={props.onVolTypeChange}\n options={props.volTypes}\n />\n </Flex>\n </Flex>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { format, subDays } from \"date-fns\";\nimport { VolChartDataItem } from \"@orderly.network/chart\";\nimport { useRefereeRebateSummary } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { useReferralContext } from \"../../../provider\";\nimport { fillData } from \"../../../utils/chartUtils\";\nimport { BarDayFilter } from \"../../../utils/types\";\n\nexport type TitleStatisticReturns = {\n period: string;\n periodTypes: { label: string; value: string }[];\n onPeriodChange: (item: string) => void;\n volType: string;\n volTypes: { label: string; value: string }[];\n onVolTypeChange: (item: string) => void;\n dataSource: VolChartDataItem[];\n};\n\nexport const useTitleStatisticScript = (): TitleStatisticReturns => {\n const { t } = useTranslation();\n const [period, setPeriod] = useState<BarDayFilter>(\"7\");\n\n const periodTypes = [\n { label: t(\"common.select.7d\"), value: \"7\" },\n { label: t(\"common.select.30d\"), value: \"30\" },\n { label: t(\"common.select.90d\"), value: \"90\" },\n ];\n\n const onPeriodChange = (item: string) => {\n setPeriod(item as BarDayFilter);\n };\n\n const [volType, setVolType] = useState(\"rebate\");\n const volTypes = [\n { label: t(\"affiliate.trader.rebate\"), value: \"rebate\" },\n { label: t(\"common.volume\"), value: \"volume\" },\n ];\n\n const onVolTypeChange = (item: string) => {\n setVolType(item);\n };\n\n const dateRange = useMemo((): {\n startDate?: Date;\n endDate?: Date;\n } => {\n if (period === \"7\") {\n return {\n startDate: subDays(new Date(), 7),\n endDate: subDays(new Date(), 1),\n };\n } else if (period === \"30\") {\n return {\n startDate: subDays(new Date(), 30),\n endDate: subDays(new Date(), 1),\n };\n } else if (period === \"90\") {\n return {\n startDate: subDays(new Date(), 90),\n endDate: subDays(new Date(), 1),\n };\n } else {\n return {\n startDate: subDays(new Date(), 7),\n endDate: subDays(new Date(), 1),\n };\n }\n }, [period]);\n\n const { data: distributionData, mutate } = useRefereeRebateSummary(dateRange);\n const { dailyVolume, chartConfig } = useReferralContext();\n\n const dataSource = useMemo(() => {\n if (volType === \"rebate\") {\n const newData = distributionData || [];\n return newData\n .map((e) => ({\n date: e.date,\n volume: e.referee_rebate,\n }))\n .reverse();\n } else if (volType === \"volume\") {\n return (\n dailyVolume\n ?.filter((e) => {\n return (\n e.date > format(subDays(Date(), Number(period) + 1), \"yyyy-MM-dd\")\n );\n })\n .map((e) => ({\n date: e.date,\n volume: e.perp_volume,\n })) || []\n );\n } else {\n return [];\n }\n }, [distributionData, dailyVolume, volType]);\n\n return {\n period,\n periodTypes,\n onPeriodChange,\n volType,\n volTypes,\n onVolTypeChange,\n dataSource: fillData(Number(period), dataSource),\n };\n};\n","import { useTitleStatisticScript } from \"./titleStatistic.script\";\nimport { TitleStatistic } from \"./titleStatistic.ui\";\n\nexport const TitleStatisticWidget = () => {\n const state = useTitleStatisticScript();\n return <TitleStatistic {...state} />;\n};\n","import { FC } from \"react\";\nimport {\n DatePicker,\n Divider,\n Flex,\n ListView,\n Statistic,\n Column,\n Text,\n} from \"@orderly.network/ui\";\nimport { RebatesItem, RebatesReturns } from \"./rebates.script\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { useMediaQuery } from \"@orderly.network/hooks\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const Rebates: FC<RebatesReturns> = (props) => {\n return (\n <Flex\n id=\"oui-affiliate-trader-rebates\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9 oui-tabular-nums\"\n >\n <Title {...props} />\n <Flex\n width={\"100%\"}\n className=\"oui-border-y-2 oui-border-line-6\"\n height={49}\n direction={\"row\"}\n itemAlign={\"center\"}\n >\n <div>\n <DatePicker.range\n size=\"xs\"\n value={props.dateRange}\n onChange={(range) => {\n props.setDateRange(range);\n }}\n max={90}\n disabled={{\n after: new Date(),\n }}\n />\n </div>\n </Flex>\n <List {...props} />\n </Flex>\n );\n};\n\nconst Title: FC<RebatesReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">{t(\"affiliate.trader.myRebates\")}</Text>\n <Text intensity={36} className=\"oui-text-2xs\">\n {props.displayDate}\n </Text>\n </Flex>\n );\n};\n\nconst List: FC<RebatesReturns> = (props) => {\n const { t } = useTranslation();\n\n const layout767 = useMediaQuery(\"(max-width: 767px)\");\n\n const columns: Column<RebatesItem>[] = [\n {\n title: `${t(\"affiliate.trader.rebates\")} (USDC)`,\n dataIndex: \"referee_rebate\",\n render: (value) => (\n <Text>\n {commifyOptional(value, {\n fix: 6,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n })}\n </Text>\n ),\n width: 127,\n },\n {\n title: `${t(\"affiliate.trader.tradingVol\")} (USDC)`,\n dataIndex: \"vol\",\n render: (value) =>\n commifyOptional(value, {\n fix: 2,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n }),\n width: 127,\n },\n {\n title: t(\"common.date\"),\n dataIndex: \"date\",\n render: (value) => (\n <Text.formatted formatString=\"yyyy-MM-dd\">{value}</Text.formatted>\n ),\n width: 127,\n },\n ];\n\n if (layout767) {\n return (\n <ListView<RebatesItem, RebatesItem[]>\n dataSource={props.dataSource}\n className=\"oui-h-[197px] oui-w-full\"\n renderItem={(item, index) => {\n return <Cell item={item} />;\n }}\n />\n );\n }\n\n return (\n <AuthGuardDataTable\n bordered\n loading={props.isLoading}\n columns={columns}\n dataSource={props.dataSource}\n ignoreLoadingCheck={true}\n onRow={(record) => {\n return {\n className: \"oui-h-[41px]\",\n };\n }}\n pagination={props.pagination}\n manualPagination={false}\n />\n );\n};\n\nconst Cell = (props: { item: RebatesItem }) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"column\"} width={\"100%\"}>\n <Flex width={\"100%\"} gap={1}>\n <Statistic\n label={`${t(\"affiliate.trader.rebates\")} (USDC)`}\n className=\"oui-text-xs oui-text-base-contrast-54 oui-flex-1 oui-min-w-[105px]\"\n >\n <Text size=\"sm\" intensity={80}>\n {commifyOptional(props.item.referee_rebate, {\n fix: 6,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n })}\n </Text>\n </Statistic>\n <Statistic\n label={`${t(\"affiliate.trader.tradingVol\")} (USDC)`}\n className=\"oui-text-xs oui-text-base-contrast-54 oui-flex-shrink\"\n >\n <Text size=\"sm\" intensity={80}>\n {commifyOptional(props.item.vol, {\n fix: 2,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n })}\n </Text>\n </Statistic>\n <Statistic\n label={t(\"common.date\")}\n className=\"oui-text-xs oui-text-base-contrast-54 oui-flex-1\"\n align=\"end\"\n >\n <Text.formatted size=\"sm\" intensity={80} formatString=\"yyyy-MM-dd\">\n {props.item.date}\n </Text.formatted>\n </Statistic>\n </Flex>\n <Divider className=\"oui-w-full oui-mt-3\" />\n </Flex>\n );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { DateRange } from \"../../../utils/types\";\nimport {\n useRefereeRebateSummary,\n RefferalAPI,\n useDaily,\n} from \"@orderly.network/hooks\";\nimport { compareDate, formatDateTimeToUTC } from \"../../../utils/utils\";\nimport { subDays, toDate } from \"date-fns\";\nimport { usePagination } from \"@orderly.network/ui\";\n\nexport type RebatesItem = RefferalAPI.RefereeRebateSummary & {\n vol?: number;\n};\n\nexport const useRebatesScript = () => {\n const [dateRange, setDateRange] = useState<DateRange | undefined>({\n from: subDays(new Date(), 90),\n to: subDays(new Date(), 1),\n });\n\n const {\n data: distributionData,\n mutate,\n isLoading,\n } = useRefereeRebateSummary({\n startDate: dateRange?.from,\n endDate: dateRange?.to,\n });\n // const { dailyVolume } = useReferralContext();\n\n const { data: dailyVolume, mutate: dailyVolumeMutate } = useDaily({\n startDate: dateRange?.to,\n endDate: dateRange?.from,\n });\n\n const dataSource = useMemo((): RebatesItem[] => {\n if (typeof distributionData === \"undefined\") return [];\n\n return (\n distributionData\n // .filter((item: any) => item.status === \"COMPLETED\" && item.type === \"REFEREE_REBATE\")\n .map((item) => {\n const createdTime = item.date;\n\n const volume = dailyVolume?.filter((item) => {\n return compareDate(toDate(createdTime), toDate(item.date));\n })?.[0];\n if (volume) {\n return { ...item, vol: volume.perp_volume };\n }\n\n return item;\n })\n );\n }, [distributionData, dailyVolume]);\n\n let displayDate = undefined;\n if ((dataSource?.length || 0) > 0) {\n displayDate = formatDateTimeToUTC(dataSource?.[0].date);\n }\n\n const { pagination, setPage } = usePagination();\n\n useEffect(() => {\n setPage(1);\n }, [dateRange]);\n\n return {\n dateRange,\n setDateRange,\n displayDate,\n dataSource,\n // meta,\n // onPageChange,\n // onPageSizeChange,\n pagination,\n isLoading,\n };\n};\n\nexport type RebatesReturns = ReturnType<typeof useRebatesScript>;\n","import { useRebatesScript } from \"./rebates.script\";\nimport { Rebates } from \"./rebates.ui\";\n\nexport const RebatesWidget = () => {\n const state = useRebatesScript();\n return <Rebates {...state} />;\n};\n","import { Flex, Box, cn } from \"@orderly.network/ui\";\nimport { SummaryWidget } from \"./summary\";\nimport { TitleStatisticWidget } from \"./titleStatistic\";\nimport { RebatesWidget } from \"./rebates\";\nexport const TraderPage = () => {\n return (\n <Flex\n id=\"oui-affiliate-trader-page\"\n className={cn(\n \"oui-h-lvw oui-w-full\",\n // padding\n // \"oui-p-4 lg:oui-p-6 xl:oui-p-3\",\n \"oui-font-semibold\"\n )}\n direction={\"column\"}\n gap={4}\n >\n <Flex\n width={\"100%\"}\n gap={4}\n className=\"oui-flex oui-flex-col xl:oui-flex-row xl:oui-items-stretch\"\n >\n <SummaryWidget />\n <TitleStatisticWidget />\n </Flex>\n <RebatesWidget />\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Button,\n cn,\n Flex,\n TabsBase,\n TabsContent,\n TabsList,\n TabsTrigger,\n Text,\n} from \"@orderly.network/ui\";\nimport { AffiliateIcon } from \"../../../icons/affiliateIcon\";\nimport { TraderIcon } from \"../../../icons/traderIcon\";\nimport { TabTypes } from \"../../../provider\";\nimport { AffiliatePage } from \"../../affiliate\";\nimport { HomePage } from \"../../home\";\nimport { TraderPage } from \"../../trader\";\nimport { TabReturns } from \"./tab.script\";\n\nexport const Tab: FC<\n TabReturns & {\n classNames?: {\n loadding?: string;\n home?: string;\n dashboard?: string;\n };\n }\n> = (props) => {\n const { t } = useTranslation();\n const extendNode = () => {\n if (props.isAffiliate && !props.isTrader) {\n return (\n <Button\n variant=\"contained\"\n color=\"success\"\n size=\"sm\"\n className=\"oui-px-2 oui-flex oui-gap-1\"\n style={{\n position: \"absolute\",\n top: \"50%\",\n right: \"24px\",\n transform: \"translateY(-50%)\",\n }}\n onClick={(e) => {\n props.anATrader();\n }}\n >\n <TraderIcon className=\"oui-text-base-contrast\" />\n <Text>{t(\"affiliate.asTrader.title\")}</Text>\n </Button>\n );\n }\n if (!props.isAffiliate && props.isTrader) {\n return (\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"sm\"\n className=\"oui-px-2 oui-flex oui-gap-1\"\n style={{\n position: \"absolute\",\n top: \"50%\",\n right: \"24px\",\n transform: \"translateY(-50%)\",\n }}\n onClick={(e) => {\n props.anAnAffiliate();\n }}\n >\n <AffiliateIcon className=\"oui-text-base-contrast\" />\n <Text>{t(\"affiliate.asAffiliate.title\")}</Text>\n </Button>\n );\n }\n\n return undefined;\n };\n\n if (props.isLoading) {\n return (\n <div className={cn(\"oui-max-w-[960px]\", props.classNames?.loadding)}>\n {props.splashPage?.() || <HomePage />}\n </div>\n );\n }\n\n if ((!props.isAffiliate && !props.isTrader) || props.showHome) {\n return (\n <div className={cn(\"oui-max-w-[960px]\", props?.classNames?.home)}>\n <HomePage />\n </div>\n );\n }\n\n return (\n <TabsBase\n id=\"oui-affiliate-dashboard-tab\"\n value={props.tab}\n onValueChange={(e) => {\n props.setTab(e as TabTypes);\n }}\n className={cn(\"oui-w-full\", props.classNames?.dashboard)}\n >\n <TabsList\n className={cn(\n \"oui-px-6 oui-flex oui-flex-row oui-justify-start oui-h-[44px] oui-relative oui-items-end\",\n \"oui-text-base md:oui-text-lg\",\n \"oui-rounded-xl oui-bg-base-9\",\n \"oui-border oui-border-line-6\",\n props.isAffiliate && props.isTrader && \"oui-justify-center\",\n )}\n >\n {props.isAffiliate && (\n <TabsTrigger\n id=\"oui-affiliate-dashboard-tab-affiliate\"\n value={TabTypes.affiliate}\n >\n <Flex direction={\"row\"} gap={1} mb={2}>\n <AffiliateIcon\n className={\n props.tab === TabTypes.affiliate\n ? \"oui-text-base-contrast\"\n : \"oui-text-base-contrast-36\"\n }\n />\n <Text>{t(\"common.affiliate\")}</Text>\n </Flex>\n </TabsTrigger>\n )}\n {props.isTrader && (\n <TabsTrigger\n id=\"oui-affiliate-dashboard-tab-trader\"\n value={TabTypes.trader}\n >\n <Flex direction={\"row\"} gap={1} mb={2}>\n <TraderIcon\n className={\n props.tab === TabTypes.trader\n ? \"oui-text-base-contrast\"\n : \"oui-text-base-contrast-36\"\n }\n />\n <Text>{t(\"affiliate.trader\")}</Text>\n </Flex>\n </TabsTrigger>\n )}\n {extendNode()}\n </TabsList>\n {props.isAffiliate && (\n <TabsContent value={TabTypes.affiliate} className=\"oui-mt-4\">\n <AffiliatePage />\n </TabsContent>\n )}\n {props.isTrader && (\n <TabsContent value={TabTypes.trader} className=\"oui-mt-4\">\n <TraderPage />\n </TabsContent>\n )}\n </TabsBase>\n );\n};\n","import { ReactNode, useEffect, useMemo } from \"react\";\nimport { TabTypes, useReferralContext } from \"../../../provider\";\n\nexport type TabReturns = {\n tab: string;\n setTab: React.Dispatch<React.SetStateAction<TabTypes>>;\n isAffiliate: boolean;\n isTrader: boolean;\n isLoading: boolean;\n anAnAffiliate: () => void;\n anATrader: () => void;\n splashPage?: () => ReactNode | undefined;\n showHome: boolean;\n setShowHome: (value: boolean) => void;\n};\n\nexport const useTabScript = (): TabReturns => {\n const {\n isAffiliate,\n isTrader,\n isLoading,\n splashPage,\n showHome,\n setShowHome,\n tab,\n setTab,\n } = useReferralContext();\n\n const tableValue = useMemo((): TabTypes => {\n if (isAffiliate && isTrader) {\n return tab;\n } else if (isAffiliate && !isTrader) {\n return TabTypes.affiliate;\n } else if (!isAffiliate && isTrader) {\n return TabTypes.trader;\n } else {\n return TabTypes.affiliate;\n }\n }, [tab, isAffiliate, isTrader]);\n\n useEffect(() => {\n const searchParams = new URLSearchParams(window.location.search);\n const tab = searchParams.get(\"tab\");\n if (tab) {\n setTab(tab as TabTypes);\n }\n }, [window.location.search]);\n\n const anAnAffiliate = () => {\n // if (becomeAnAffiliateUrl !== undefined) {\n // window.open(becomeAnAffiliateUrl, \"_blank\");\n // } else if (onBecomeAnAffiliate !== undefined) {\n // onBecomeAnAffiliate?.();\n // }\n setShowHome(true);\n };\n\n const anATrader = () => {\n setShowHome(true);\n // showReferralPage?.();\n };\n\n return {\n setTab,\n tab: tableValue,\n isAffiliate,\n isTrader,\n isLoading,\n anAnAffiliate,\n anATrader,\n splashPage,\n showHome,\n setShowHome,\n // tab: TabTypes.affiliate,\n // isAffiliate: false,\n // isTrader: false,\n // isLoading: false,\n };\n};\n","import { useTabScript } from \"./tab.script\";\nimport { Tab } from \"./tab.ui\";\n\nexport const TabWidget = (props: {\n classNames?: {\n loadding?: string;\n home?: string;\n dashboard?: string;\n };\n}) => {\n const state = useTabScript();\n return <Tab classNames={props.classNames} {...state} />;\n};\n","import { useEffect, useState } from \"react\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { cn, Flex, Spinner } from \"@orderly.network/ui\";\nimport { useReferralContext } from \"../../provider\";\nimport { LandingPage, MultiLevelAffiliatePage } from \"../multiLevel\";\nimport { TabWidget } from \"./tab\";\n\nexport const DashboardPage = (props: {\n classNames?: {\n root?: string;\n loadding?: string;\n home?: string;\n dashboard?: string;\n };\n}) => {\n const { root, ...rest } = props.classNames || {};\n\n const { state } = useAccount();\n\n const { wrongNetwork, disabledConnect, initialized } = useAppContext();\n\n const { isMultiLevelEnabled, multiLevelRebateInfo, isAffiliate, isLoading } =\n useReferralContext();\n\n const loadingView = (\n <Flex justify={\"center\"} itemAlign={\"center\"} height={\"100vh\"}>\n <Spinner />\n </Flex>\n );\n\n const [delay, setDelay] = useState(!initialized);\n\n useEffect(() => {\n const timer = setTimeout(() => setDelay(false), 500);\n return () => clearTimeout(timer);\n }, []);\n\n // we don't know wallet not connect => connect status, so manually delay to hide loading\n if (state.validating || delay) {\n return loadingView;\n }\n\n if (\n wrongNetwork ||\n disabledConnect ||\n (state.status < AccountStatusEnum.EnableTrading &&\n state.status !== AccountStatusEnum.EnableTradingWithoutConnected)\n ) {\n return <LandingPage />;\n }\n\n if (isLoading) {\n return loadingView;\n }\n\n if (isMultiLevelEnabled) {\n /** If the user has a legacy referral code ( is an affiliate), show the multi-level affiliate page */\n if (multiLevelRebateInfo?.referral_code || isAffiliate) {\n return <MultiLevelAffiliatePage />;\n }\n\n /** If the user does not have a legacy or multi-level referral code, show the landing page */\n return <LandingPage />;\n }\n\n return (\n <div\n id=\"oui-affiliate-dashboard-page\"\n className={cn(\"oui-w-full oui-tracking-tight\", root)}\n >\n <TabWidget classNames={rest} />\n </div>\n );\n};\n","import React, { PropsWithChildren } from \"react\";\nimport { Box } from \"@orderly.network/ui\";\nimport { Scaffold, SideBar, SideBarProps } from \"@orderly.network/ui-scaffold\";\n\nexport type AffiliateLayoutProps = {} & SideBarProps;\n\nexport const AffiliateLayout: React.FC<\n PropsWithChildren<AffiliateLayoutProps>\n> = (props) => {\n const { ...rest } = props;\n return (\n <Scaffold leftSidebar={<LeftSidebar {...rest} />}>\n <Box mx={3} my={6}>\n {props.children}\n </Box>\n </Scaffold>\n );\n};\n\nconst LeftSidebar: React.FC<SideBarProps> = (props) => {\n return (\n <Box p={4} m={3} border borderColor={8} r={\"xl\"}>\n <SideBar {...props} />\n </Box>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport type { SideBarProps } from \"@orderly.network/ui-scaffold\";\n\nexport const useLayoutBuilder = (): SideBarProps => {\n const [current, setCurrent] = useState(\"/\");\n // const [sideOpen, setSideOpen] = useState(true);\n const { t } = useTranslation();\n\n const items = useMemo(() => {\n return [\n {\n name: t(\"common.trading\"),\n href: \"/\",\n icon: (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.883 1.5c-.166.01-.393.076-.515.173a2 2 0 0 0-.18.173L.918 6.553a.86.86 0 0 0-.168.475c0 .339.232.543.232.543l7.374 8.633c.005.006.269.301.644.296s.64-.29.644-.296l7.402-8.663s.204-.269.204-.513-.196-.517-.196-.517L13.82 1.848c-.023-.032-.076-.021-.103-.049-.033-.038-.037-.091-.077-.124-.123-.097-.267-.106-.413-.123-.04-.005-.063-.049-.103-.049h-.078zm1.745 1.582h4.744L9 5.795zm-1.675.542 2.294 2.615H3.122zm8.094 0 1.831 2.615h-4.125zM3.328 7.818h4.847v5.672zm6.497 0h4.847c-1.151 1.345-3.422 4.007-4.847 5.672z\"\n fill=\"url(#a)\"\n />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"17.25\"\n y1=\"9\"\n x2=\".75\"\n y2=\"9\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop\n offset=\"1\"\n stopColor=\"rgb(var(--oui-gradient-brand-start))\"\n />\n </linearGradient>\n </defs>\n </svg>\n ),\n },\n {\n name: t(\"common.affiliate\"),\n href: \"/affiliate\",\n icon: (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.625 4.95c0-.746.604-1.35 1.35-1.35h4.05c.746 0 1.35.604 1.35 1.35v4.62L9 12.195 5.625 9.57zm8.624 3.163-.524.407v-.96l.074.05c.193.128.346.302.45.502m-4.42 5.148L14.4 9.705v3.345a1.35 1.35 0 0 1-1.35 1.35h-8.1a1.35 1.35 0 0 1-1.35-1.35V9.705l4.571 3.556c.488.379 1.17.379 1.658 0M4.275 8.52l-.524-.407c.104-.2.257-.374.45-.503l.074-.049zm0-2.581V4.95a2.7 2.7 0 0 1 2.7-2.7h4.05a2.7 2.7 0 0 1 2.7 2.7v.989l.823.548a2.7 2.7 0 0 1 1.202 2.247v4.316a2.7 2.7 0 0 1-2.7 2.7h-8.1a2.7 2.7 0 0 1-2.7-2.7V8.734a2.7 2.7 0 0 1 1.202-2.247zM9 6.089l.111-.118.005-.005a1.08 1.08 0 0 1 1.58.004 1.223 1.223 0 0 1 0 1.668l-1.515 1.62-.004.004c-.1.102-.26.1-.358-.004l-1.516-1.62a1.223 1.223 0 0 1 0-1.668l.004-.004a1.08 1.08 0 0 1 1.58.004z\"\n fill=\"rgb(var(--oui-color-base-foreground))\"\n fillOpacity=\".54\"\n />\n </svg>\n ),\n },\n ];\n }, [t]);\n\n return {\n items,\n current,\n // open: sideOpen,\n // onOpenChange(open) {\n // setSideOpen(open);\n // },\n onItemSelect: (item) => {\n // @ts-ignore\n setCurrent(item.href);\n },\n };\n};\n","import { PropsWithChildren } from \"react\";\nimport { AffiliateLayout } from \"./layout.ui\";\nimport { useLayoutBuilder } from \"./layout.script\";\n\nexport const AffiliateLayoutWidget = (props: PropsWithChildren) => {\n const state = useLayoutBuilder();\n return <AffiliateLayout {...state} children={props.children} />;\n};\n"]}