@orderly.network/affiliate 2.3.1 → 2.3.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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/pages/dashboard/index.tsx","../src/pages/dashboard/page.tsx","../src/pages/dashboard/tab/tab.ui.tsx","../src/components/affiliateIcon.tsx","../src/components/traderIcon.tsx","../src/pages/affiliate/page.tsx","../src/pages/affiliate/summary/summary.ui.tsx","../src/components/usdcIcon.tsx","../src/pages/affiliate/summary/summary.script.tsx","../src/hooks/provider.tsx","../src/pages/affiliate/summary/summary.widget.tsx","../src/pages/affiliate/referralLink/referralLink.ui.tsx","../src/components/autoHideText.tsx","../src/pages/affiliate/referralLink/referralLink.script.tsx","../src/utils/utils.ts","../src/pages/affiliate/referralLink/referralLink.widget.tsx","../src/pages/affiliate/titleStatistic/titleStatistic.ui.tsx","../src/pages/affiliate/titleStatistic/titleStatistic.script.tsx","../src/utils/chartUtils.ts","../src/pages/affiliate/titleStatistic/titleStatistic.widget.tsx","../src/pages/affiliate/referralCodes/referralCodes.ui.tsx","../src/components/editIcon.tsx","../src/components/editCodeBtn.tsx","../src/components/pinButton.tsx","../src/pages/affiliate/referralCodes/referralCodes.script.tsx","../src/pages/affiliate/referralCodes/editCodeModal.tsx","../src/pages/affiliate/referralCodes/editReferralRate.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/trader/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/home/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.script.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/pages/home/card/card.ui.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.ui.tsx","../src/components/arrowRightIcon.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.script.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.widget.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/card/card.script.tsx","../src/pages/home/card/card.widget.tsx","../src/pages/dashboard/tab/tab.script.tsx","../src/pages/dashboard/tab/tab.widget.tsx","../src/layout/layout.ui.tsx","../src/layout/layout.script.tsx","../src/layout/layout.widget.tsx"],"names":["dashboard_exports","__export","AffiliatePage","DashboardPage","HomePage","TraderPage","cn","Button","Flex","TabsBase","TabsContent","TabsList","TabsTrigger","Text","jsx","jsxs","AffiliateIcon","props","size","className","rest","TraderIcon","Select","USDCIcon","commifyOptional","useTranslation","Summary","Title","CommissionData","Row","useMemo","useState","createContext","useContext","useEffect","useRef","format","subDays","usePrivateQuery","useDaily","useAccount","useAppContext","AccountStatusEnum","TabTypes","ReferralContext","ReferralProvider","becomeAnAffiliate","becomeAnAffiliateUrl","bindReferralCodeState","learnAffiliate","learnAffiliateUrl","referralLinkUrl","showReferralPage","chartConfig","overwrite","splashPage","state","data","referralInfoMutate","isLoading","generateCode","generateCodeMutate","showHome","setShowHome","dailyVolume","dailyVolumeMutate","volumeStatistics","volumeStatisticsMutate","isAffiliate","isTrader","userVolume","volume","now","index","item","oneDayVolume","mutate","refCode","tab","setTab","wrongNetwork","disabledConnect","lastStete","timerId","useReferralContext","useSummaryScript","t","period","setPeriod","periodTypes","referralInfo","commission","referralVol","referees","refereesTades","SummaryWidget","CopyIcon","Divider","modal","Tooltip","AutoHideText","text","visibleCount","containerRef","textRef","lastContainerWidth","getTextWidth","ref","context","element","fontStyle","visibleChars","setVisibleChars","calculateVisibleChars","containerWidth","textElement","textContent","pWidth","maxDisplayW","count","subText","truncatedText","maxCharacters","startText","endText","start","first","end","Trans","ReferralLink","Subtitle","Input","title","value","gradient","tooltip","valueClsName","Alert","i18n","toast","toDate","addQueryParam","url","paramName","paramValue","urlObj","searchParams","copyText","content","formatDateTimeToUTC","input","date","utcDate","toUTCDate","formatYMDTime","time","compareDate","d1","d2","Decimal","useLocalStorage","useReferralLinkScript","onCopy","pinCodes","setPinCodes","codes","referralCodes","pinedItems","i","code","firstCode","referralLink","earn","share","ReferralLinkWidget","VolBarChart","TitleStatistic","fillData","days","origin","result","_","dataObject","acc","curr","originData","useReferralRebateSummary","useTitleStatisticScript","onPeriodChange","volType","setVolType","volTypes","onVolTypeChange","dateRange","rebateSummary","dataSource","e","TitleStatisticWidget","useMediaQuery","DataTable","ListView","Statistic","EditIcon","EditCode","PinBtn","UnPinIcon","PinnedIcon","Fragment","ReferralCodes","isTablet","MobileLayout","DesktopLayout","MobileCell","MobileCellItem","copyable","align","editRate","setPinCode","copyLink","copyCode","getRate","getCount","moreColumn","columns","cols","record","refereeRate","useMutation","inputFormatter","SimpleDialog","TextField","useModal","EditCodeModal","visible","onOpenChange","newCode","setNewCode","filedError","setFiledError","editCode","error","isMutating","_code","_fieldError","res","_value","char","cleanStringStyle","Dialog","DialogContent","DialogTitle","EditReferralRate","hide","resolve","reject","maxRate","refereeRebateRate","setRefereeRebateRate","referrerRebateRate","setReferrerRebateRate","showError","setShowError","inputRef","onClickConfirm","r1","r2","rate","maxDecimal","a","b","useReferralCodesScript","del","ReferralCodesWidget","DatePicker","TabPanel","Tabs","AuthGuardDataTable","CommissionAndReferees","CommissionList","RefereesList","rule","formatString","prefix","isLG","body","DateFiler","range","useRefereeInfo","usePagination","useCommissionAndRefereesScript","useCommissionDataScript","useRefereesDataScript","commissionRange","setCommissionRange","page","pageSize","setPage","parsePagination","commissionData","refresh","loadMore","meta","pagination","CommissionAndRefereesWidget","Layout","Layout1024","Layout1280","Rebate","SummaryFilter","rebates","vol","rebate","rebateText","useRefereeRebateSummary","distributionData","Rebates","List","layout767","Cell","useRebatesScript","setDateRange","createdTime","displayDate","RebatesWidget","commify","BecomeAffiliate","applyText","Item","ApplyIcon","ArrowDownIcon","ShareIcon","EarnIcon","useBecomeAffiliateScript","BecomeAffiliateWidget","useTitleScript","TitleWidget","useSubtitleScript","onLearnAffiliate","SubtitleWidget","Top","useTopScript","TopWidget","ArrowRightIcon","AsAnAffiliate","Icon","Bottom","totalReferrerRebate","event","useScreen","useAsAnAffiliateScript","isSignIn","onEnterAffiliatePage","isMobile","AsAnAffiliateWidget","DialogBody","DialogHeader","DialogTrigger","AsTrader","EntryCode","useCheckReferralCode","useAsTraderScript","onEnterTraderPage","setCode","open","setOpen","isExist","checkCodeError","bindCode","errorText","AsTraderWidget","Card","useCardScript","CardWidget","Tab","extendNode","useTabScript","onBecomeAnAffiliate","tableValue","TabWidget","classNames","root","Box","Scaffold","SideBar","AffiliateLayout","LeftSidebar","useLayoutBuilder","current","setCurrent","AffiliateLayoutWidget"],"mappings":"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","sourcesContent":["export { DashboardPage } from \"./page\";\nexport { HomePage} from \"../home\";\nexport { AffiliatePage } from \"../affiliate\";\nexport { TraderPage } from \"../trader\";","import { Flex, Box, cn } from \"@orderly.network/ui\";\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 { classNames = {} } = props;\n const { root, ...rest } = classNames;\n \n return (\n <div id=\"oui-affiliate-dashboard-page\" className={cn(\"oui-w-full oui-tracking-tight\", root)}>\n <TabWidget classNames={rest} />\n </div>\n );\n};\n","import { FC } from \"react\";\nimport {\n Button,\n cn,\n Flex,\n TabsBase,\n TabsContent,\n TabsList,\n TabsTrigger,\n Text,\n} from \"@orderly.network/ui\";\nimport { TabReturns } from \"./tab.script\";\nimport { AffiliateIcon } from \"../../../components/affiliateIcon\";\nimport { TraderIcon } from \"../../../components/traderIcon\";\nimport { AffiliatePage } from \"../../affiliate\";\nimport { TraderPage } from \"../../trader\";\nimport { HomePage } from \"../../home\";\nimport { TabTypes } from \"../../../hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 { 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 { 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 } from \"react\";\nimport { Flex, Select, Text } from \"@orderly.network/ui\";\nimport { SummaryReturns } from \"./summary.script\";\nimport { USDCIcon } from \"../../../components/usdcIcon\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 { 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 { useMemo, useState } from \"react\";\nimport { SummaryFilter } from \"../../../utils/types\";\nimport { useReferralContext } from \"../../../hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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: {\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 } = useReferralContext();\n\n const commission = useMemo(() => {\n if (!referralInfo) 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) return 0;\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 const referees = useMemo(() => {\n if (!referralInfo) return 0;\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) return 0;\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 {\n FC,\n PropsWithChildren,\n ReactNode,\n createContext,\n useContext,\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} from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\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 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\nexport const ReferralContext = createContext<ReferralContextReturns>(\n {} as ReferralContextReturns,\n);\n\nexport type BuildNode = (state: ReferralContextReturns) => ReactNode;\n\nexport const ReferralProvider: FC<PropsWithChildren<ReferralContextProps>> = (\n props,\n) => {\n const {\n onBecomeAnAffiliate: becomeAnAffiliate,\n becomeAnAffiliateUrl = \"https://orderly.network/\",\n bindReferralCodeState,\n onLearnAffiliate: learnAffiliate,\n learnAffiliateUrl = \"https://orderly.network/\",\n referralLinkUrl = \"https://orderly.network/\",\n showReferralPage,\n // onEnterTraderPage: enterTraderPage,\n // onEnterAffiliatePage: enterAffiliatePage,\n chartConfig,\n overwrite,\n splashPage,\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: true,\n });\n\n const { data: generateCode, mutate: generateCodeMutate } =\n usePrivateQuery<API.AutoGenerateCode>(\n \"/v1/referral/auto_referral/progress\",\n {\n revalidateOnFocus: true,\n errorRetryCount: 2,\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 [showHome, setShowHome] = useState(isLoading);\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: true,\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(() => {\n const volume: any = {};\n\n if (dailyVolume && dailyVolume.length > 0) {\n const now = format(new Date(), \"yyyy-MM-dd\");\n const index = dailyVolume.findIndex((item: any) => {\n const itemDate = item.date;\n return itemDate === now;\n });\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 mutate = () => {\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>(TabTypes.affiliate);\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const lastStete = useRef<AccountStatusEnum>(AccountStatusEnum.NotConnected);\n useEffect(() => {\n let timerId: any;\n if (lastStete.current !== state.status) {\n lastStete.current = state.status;\n timerId = setTimeout(() => {\n mutate();\n }, 1000);\n }\n\n return () => {\n if (timerId) clearTimeout(timerId);\n };\n }, [state.status]);\n\n return (\n <ReferralContext.Provider\n value={{\n generateCode,\n showHome,\n setShowHome,\n referralInfo: data,\n isAffiliate: isAffiliate,\n isTrader: isTrader,\n // isAffiliate: true,\n // isTrader: false,\n mutate,\n onBecomeAnAffiliate: becomeAnAffiliate,\n becomeAnAffiliateUrl,\n bindReferralCodeState,\n onLearnAffiliate: learnAffiliate,\n learnAffiliateUrl,\n referralLinkUrl,\n userVolume,\n dailyVolume,\n showReferralPage,\n chartConfig,\n overwrite,\n splashPage,\n isLoading,\n tab,\n setTab,\n wrongNetwork,\n disabledConnect,\n }}\n >\n {props.children}\n </ReferralContext.Provider>\n );\n};\n\nexport function useReferralContext() {\n return useContext(ReferralContext);\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 {\n CopyIcon,\n Divider,\n Flex,\n modal,\n Text,\n Tooltip,\n} from \"@orderly.network/ui\";\nimport { ReferralLinkReturns } from \"./referralLink.script\";\nimport { AutoHideText } from \"../../../components/autoHideText\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\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\" />]}\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","\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 { useMemo } from \"react\";\nimport { useReferralContext } from \"../../../hooks\";\nimport { addQueryParam } from \"../../../utils/utils\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { toast } from \"@orderly.network/ui\";\nimport { RefferalAPI, useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 addQueryParam(referralLinkUrl, \"ref\", 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 { i18n } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { format, toDate } from \"date-fns\";\n// import { toZonedTime } from \"date-fns-tz\";\n// const { toZonedTime } = require(\"date-fns-tz\");\n\nexport function addQueryParam(\n url: string,\n paramName: string,\n paramValue: string\n): string {\n const urlObj = new URL(url);\n const searchParams = new URLSearchParams(urlObj.search);\n\n searchParams.set(paramName, paramValue);\n\n urlObj.search = searchParams.toString();\n\n return urlObj.toString();\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) return null;\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) return \"\";\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) return undefined;\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) return undefined;\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) return undefined;\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) return false;\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 { 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 { 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\";\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 || []}\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 { VolChartDataItem } from \"@orderly.network/chart\";\nimport { format, subDays } from \"date-fns\";\n\nexport function fillData(\n days: number,\n origin?: VolChartDataItem[]\n): VolChartDataItem[] {\n const now = Date();\n const result: VolChartDataItem[] = new Array(days).fill(0).map(\n (_, index): VolChartDataItem => {\n return {\n date: format(subDays(now, index + 1), \"yyyy-MM-dd\"),\n volume: 0,\n opacity: 0,\n };\n }\n ).reverse();\n\n console.log(\"fill data\", result, origin);\n \n\n const dataObject = origin?.reduce((acc, curr) => {\n acc[curr.date] = curr;\n return acc;\n }, {} as { [key: string]: VolChartDataItem });\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 { 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, 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 { EditIcon } from \"../../../components/editIcon\";\nimport { PinBtn } from \"../../../components/pinButton\";\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-bg-base-9 oui-tabular-nums oui-p-6 oui-h-full\"\n >\n <Title {...props} />\n\n <div className=\"oui-w-full oui-flex 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 />\n <Divider className=\"oui-w-full oui-mt-3\" />\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-base-contrast-36 oui-text-2xs\">{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-text-base-contrast-80 oui-text-sm oui-mt-[6px]\"\n >\n {value as string}\n </Text.formatted>\n {editRate && (\n <EditIcon\n className=\" oui-fill-white/[.36] hover:oui-fill-white/80 oui-cursor-pointer oui-mt-[1px]\"\n fillOpacity={1}\n fill=\"currentColor\"\n onClick={(e) => 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}> = (props) => {\n const { data, setPinCode, copyLink, copyCode, editRate } = 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 />\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-fill-white/[.36] hover:oui-fill-white/80 oui-cursor-pointer oui-mt-[1px]\"\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 { 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 \"./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 { useMemo } from \"react\";\nimport { RefferalAPI, useLocalStorage } from \"@orderly.network/hooks\";\nimport { modal } from \"@orderly.network/ui\";\nimport { useReferralContext } from \"../../../hooks\";\nimport { addQueryParam, copyText } from \"../../../utils/utils\";\nimport { EditCodeModal } from \"./editCodeModal\";\nimport { EditReferralRate } from \"./editReferralRate\";\n\nexport type ReferralCodeType = RefferalAPI.ReferralCode & {\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(addQueryParam(referralLinkUrl, \"ref\", 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 return undefined;\n }\n\n const referralCodes: ReferralCodeType[] =\n referralInfo?.referrer_info.referral_codes.map((item) => {\n // todo check auto generated\n if (generateCode && generateCode.code === item.code) {\n (item as ReferralCodeType).isAutoGenerated = true;\n }\n\n return item;\n });\n const pinedItems: ReferralCodeType[] = [];\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], isPined: true });\n referralCodes.splice(index, 1);\n }\n }\n return [...pinedItems, ...referralCodes];\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 { 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 { 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 {\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 { CommissionAndRefereesReturns } from \"./commissionAndReferees.script\";\nimport { RefferalAPI, useMediaQuery } from \"@orderly.network/hooks\";\nimport { DateRange } from \"../../../utils/types\";\nimport { formatYMDTime } from \"../../../utils/utils\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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-w-full oui-max-h-[200px]\"\n dataSource={props.commission.data}\n // dataSource={[]}\n loadMore={props.commission.loadMore}\n isLoading={props.commission.isLoading}\n renderItem={(e, index) => {\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-w-full oui-mt-3\" />\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, 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 { Button, Flex, Select, Text } from \"@orderly.network/ui\";\nimport { SummaryReturns } from \"./summary.script\";\nimport { USDCIcon } from \"../../../components/usdcIcon\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 { useReferralContext } from \"../../../hooks\";\nimport { SummaryFilter } from \"../../../utils/types\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 { useRefereeRebateSummary } from \"@orderly.network/hooks\";\nimport { format, subDays } from \"date-fns\";\nimport { useMemo, useState } from \"react\";\nimport { useReferralContext } from \"../../../hooks\";\nimport { BarDayFilter } from \"../../../utils/types\";\nimport { VolChartDataItem } from \"@orderly.network/chart\";\nimport { fillData } from \"../../../utils/chartUtils\";\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: 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 let 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 { 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, 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 \"../../../hooks/provider\";\nimport { BecomeAffiliateReturns } from \"./becomeAffiliate.script\";\n\nexport const BecomeAffiliate: FC<BecomeAffiliateReturns> = (props) => {\n const { t } = useTranslation();\n\n const { generateCode } = useReferralContext();\n\n if (typeof props.overwrite === \"function\") {\n return props.overwrite?.(props.state);\n }\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 // volume: <Text.formatted></Text.formatted>,\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]);\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 lg:oui-flex-row oui-gap-3 lg:oui-items-stretch lg:oui-w-full\">\n <Item\n icon={<ApplyIcon />}\n title={applyText.title}\n content={applyText.desc}\n />\n <div className=\"oui-flex-shrink lg:-oui-rotate-90 lg:oui-flex 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-flex-shrink lg:-oui-rotate-90 lg:oui-flex 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\n \"lg:oui-flex-col lg:oui-gap-[6px] lg:oui-flex-1\",\n )}\n width={\"100%\"}\n >\n <div className=\"oui-flex-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 \"../../../hooks\";\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 { FC } from \"react\";\nimport { TitleReturns } from \"./title.script\";\nimport { Trans } from \"@orderly.network/i18n\";\n\nexport const Title: FC<TitleReturns> = (props) => {\n return (\n <div\n id=\"oui-affiliate-home-title\"\n className=\"oui-text-3xl md:oui-text-3xl lg:oui-text-4xl xl:oui-text-5xl oui-font-bold oui-text-center\"\n >\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"affiliate.page.title\"\n values={{\n shortBrokerName: props.shortBrokerName,\n }}\n components={[\n <span\n className=\"oui-gradient-brand oui-text-transparent oui-bg-clip-text\"\n style={{\n // @ts-ignore\n \"--oui-gradient-angle\": \"270deg\",\n }}\n />,\n ]}\n />\n </div>\n );\n};\n","import { useReferralContext } from \"../../../hooks\";\n\nexport type TitleReturns = {\n shortBrokerName: string;\n};\n\nexport const useTitleScript = (): TitleReturns => {\n const { overwrite } = useReferralContext();\n\n return {\n shortBrokerName: overwrite?.shortBrokerName || \"Orderly\",\n };\n};\n","import { useTitleScript } from \"./title.script\";\nimport { Title } from \"./title.ui\";\n\nexport const TitleWidget = () => {\n const state = useTitleScript();\n return <Title {...state} />;\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 { RefferalAPI } from \"@orderly.network/hooks\";\nimport { BuildNode, useReferralContext } from \"../../../hooks\";\nimport { ReactNode } from \"react\";\n\nexport type SubtitleReturns = {\n onLearnAffiliate?: () => void;\n learnAffiliateUrl?: string;\n \n};\n\nexport const useSubtitleScript = (): SubtitleReturns => {\n const state =\n 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 \"../../../hooks\";\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 { Flex, Text } from \"@orderly.network/ui\";\nimport { CardReturns } from \"./card.script\";\nimport { AsAnAffiliateWidget } from \"../asAnAffilate\";\nimport { AsTraderWidget } from \"../asATrader\";\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-flex-col xl:oui-flex-row oui-gap-6 xl:oui-gap-[36px] oui-w-full oui-items-stretch\"\n >\n <AsAnAffiliateWidget />\n <AsTraderWidget />\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Button, cn, Flex, modal, Text, Tooltip } from \"@orderly.network/ui\";\nimport { AsAnAffiliateReturns } from \"./asAnAffiliate.script\";\nimport { USDCIcon } from \"../../../components/usdcIcon\";\nimport { ArrowRightIcon } from \"../../../components/arrowRightIcon\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 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.isAffiliate\n ? t(\"common.affiliate\")\n : t(\"affiliate.asAffiliate.title\")}\n </Text>\n <Text\n className={cn(\n \"oui-text-xs md:oui-text-sm 2xl:oui-text-base oui-text-base-contrast-54\",\n props.isAffiliate && \"oui-hidden\"\n )}\n >\n {t(\"affiliate.asAffiliate.description\")}\n </Text>\n </Flex>\n <div className=\"oui-flex-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-w-[90px] xl:oui-h-[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={(e) => {\n props.onEnterAffiliatePage?.(props.referralInfo);\n }}\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-w-[18px] md:oui-h-[18px] lg:oui-w-[20px] lg:oui-h-[20px] xl:oui-w-[24px] xl:oui-h-[24px]\" />\n </Flex>\n </>\n );\n }\n\n return (\n <>\n <Tooltip\n content={\n props.wrongNetwork\n ? t(\"connector.wrongNetwork.tooltip\")\n : t(\"affiliate.connectWallet.tooltip\")\n }\n >\n {props.isMobile ? (\n <Button\n variant=\"contained\"\n color=\"light\"\n onClick={(event) => {\n if (!props.isSignIn || props.wrongNetwork) {\n event.stopPropagation();\n event.preventDefault();\n modal.alert({\n title: t(\"common.tips\"),\n message: (\n <Text intensity={54}>\n {props.wrongNetwork\n ? t(\"connector.wrongNetwork.tooltip\")\n : t(\"affiliate.connectWallet.tooltip\")}\n </Text>\n ),\n });\n } else {\n props.becomeAnAffiliate?.();\n }\n }}\n className={\n !props.isSignIn || props.wrongNetwork\n ? \"oui-bg-white/[.54] oui-text-black/[.36] hover:oui-bg-white/[.54]\"\n : undefined\n }\n >\n {t(\"affiliate.asAffiliate.button\")}\n </Button>\n ) : (\n <Button\n variant=\"contained\"\n color=\"light\"\n onClick={props.becomeAnAffiliate}\n disabled={!props.isSignIn || props.wrongNetwork}\n >\n {t(\"affiliate.asAffiliate.button\")}\n </Button>\n )}\n </Tooltip>\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 40%~60%\n </Text>\n <Text className=\"oui-text-2xs md:oui-text-xs 2xl:oui-text-sm oui-text-base-contrast-54\">\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 { 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 { RefferalAPI as API, useAccount } from \"@orderly.network/hooks\";\nimport { TabTypes, useReferralContext } from \"../../../hooks\";\nimport { MockData } from \"../../../utils/mockData\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useScreen } from \"@orderly.network/ui\";\n\nexport type AsAnAffiliateReturns = {\n isAffiliate: boolean;\n isLoading: boolean;\n referralInfo?: API.ReferralInfo;\n onEnterAffiliatePage?: (params?: any) => void;\n becomeAnAffiliate?: () => void;\n isSignIn: boolean;\n wrongNetwork: boolean;\n isMobile: boolean;\n};\n\nexport const useAsAnAffiliateScript = (): AsAnAffiliateReturns => {\n const {\n isAffiliate,\n isLoading,\n referralInfo,\n becomeAnAffiliateUrl,\n setShowHome,\n setTab,\n wrongNetwork,\n disabledConnect,\n } = useReferralContext();\n\n const { state } = useAccount();\n\n const isSignIn =\n !disabledConnect &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected);\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 isSignIn,\n isAffiliate,\n isLoading,\n referralInfo,\n // isAffiliate: true,\n // isLoading: false,\n // referralInfo: MockData.referralInfo,\n onEnterAffiliatePage,\n becomeAnAffiliate,\n wrongNetwork,\n isMobile,\n };\n};\n","import { useAsAnAffiliateScript } from \"./asAnAffiliate.script\";\nimport { AsAnAffiliate } from \"./asAnAffiliate.ui\";\n\nexport const AsAnAffiliateWidget = () => {\n const state = useAsAnAffiliateScript();\n return <AsAnAffiliate {...state} />;\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Button,\n cn,\n Dialog,\n DialogBody,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n Divider,\n Flex,\n inputFormatter,\n modal,\n Text,\n TextField,\n Tooltip,\n} from \"@orderly.network/ui\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { ArrowRightIcon } from \"../../../components/arrowRightIcon\";\nimport { USDCIcon } from \"../../../components/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 md:oui-text-sm 2xl:oui-text-base oui-text-base-contrast-54\",\n props.isTrader && \"oui-hidden\",\n )}\n >\n {t(\"affiliate.asTrader.description\")}\n </Text>\n </Flex>\n <div className=\"oui-flex-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-w-[90px] xl:oui-h-[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\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={(e) => {\n props?.onEnterTraderPage?.();\n }}\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-w-[18px] md:oui-h-[18px] lg:oui-w-[20px] lg:oui-h-[20px] xl:oui-w-[24px] xl:oui-h-[24px]\" />\n </Flex>\n </>\n );\n }\n\n return (\n <>\n <EntryCode {...props} />\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 0%~20%\n </Text>\n <Text className=\"oui-text-2xs md:oui-text-xs 2xl:oui-text-sm oui-text-base-contrast-54\">\n {t(\"affiliate.trader.rebate\")}\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\nconst EntryCode: FC<AsTraderReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Dialog open={props.open} onOpenChange={props.setOpen}>\n <DialogTrigger>\n <Tooltip\n content={\n props.wrongNetwork\n ? t(\"connector.wrongNetwork.tooltip\")\n : t(\"affiliate.connectWallet.tooltip\")\n }\n >\n {props.isMobile ? (\n <Button\n variant=\"contained\"\n color=\"light\"\n onClick={(event) => {\n if (!props.isSignIn || props.wrongNetwork) {\n event.stopPropagation();\n event.preventDefault();\n modal.alert({\n title: t(\"common.tips\"),\n message: (\n <Text intensity={54}>\n {props.wrongNetwork\n ? t(\"connector.wrongNetwork.tooltip\")\n : t(\"affiliate.connectWallet.tooltip\")}\n </Text>\n ),\n });\n }\n }}\n className={\n !props.isSignIn || props.wrongNetwork\n ? \"oui-bg-white/[.54] oui-text-black/[.36] hover:oui-bg-white/[.54]\"\n : undefined\n }\n >\n {t(\"affiliate.asTrader.button\")}\n </Button>\n ) : (\n <Button\n variant=\"contained\"\n color=\"light\"\n disabled={!props.isSignIn || props.wrongNetwork}\n >\n {t(\"affiliate.asTrader.button\")}\n </Button>\n )}\n </Tooltip>\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-w-full oui-mt-4\"\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\n itemAlign={\"center\"}\n width={\"100%\"}\n direction={\"row\"}\n justify={\"center\"}\n mt={6}\n >\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"md\"\n className=\"oui-px-[40px]\"\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 </Flex>\n </DialogBody>\n </DialogContent>\n </Dialog>\n );\n};\n","import { useState } from \"react\";\nimport {\n useAccount,\n useCheckReferralCode,\n useMutation,\n} from \"@orderly.network/hooks\";\nimport { TabTypes, useReferralContext } from \"../../../hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { toast, useScreen } from \"@orderly.network/ui\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const useAsTraderScript = () => {\n const { t } = useTranslation();\n\n const {\n isTrader,\n referralInfo,\n setShowHome,\n bindReferralCodeState,\n setTab,\n mutate,\n wrongNetwork,\n disabledConnect,\n } = useReferralContext();\n\n const { state } = useAccount();\n\n const isSignIn =\n !disabledConnect &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected);\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 return {\n isSignIn,\n isTrader,\n isLoading,\n referralInfo,\n // isTrader: true,\n // isLoading: false,\n // referralInfo: MockData.referralInfo,\n onEnterTraderPage,\n code,\n setCode,\n open,\n setOpen,\n onClickConfirm,\n isExist,\n wrongNetwork,\n isMobile,\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 {\n BuildNode,\n ReferralContextReturns,\n useReferralContext,\n} from \"../../../hooks\";\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 { ReactNode, useEffect, useMemo } from \"react\";\nimport { TabTypes, useReferralContext } from \"../../../hooks\";\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 becomeAnAffiliateUrl,\n onBecomeAnAffiliate,\n showReferralPage,\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 console.log(\" tab\", tab, tableValue, window.location);\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 { PropsWithChildren } from \"react\";\nimport { Box, ExtensionPositionEnum, ExtensionSlot } from \"@orderly.network/ui\";\nimport { Scaffold, SideBar, SideBarProps } from \"@orderly.network/ui-scaffold\";\nimport { LayoutProvider } from \"./context\";\n\nexport type AffiliateLayoutProps = {} & SideBarProps;\n\nexport const AffiliateLayout = (\n props: PropsWithChildren<AffiliateLayoutProps>,\n) => {\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 // return (\n // <LayoutProvider>\n // <div className=\"oui-h-dvh\">\n // <ExtensionSlot position={ExtensionPositionEnum.MainNav} />\n // <div\n // className=\"oui-grid oui-h-full\"\n // style={{ gridAutoColumns: \"160px 1fr\" }}\n // >\n // <Box p={4} className=\"oui-bg-base-9 oui-rounded-2xl\">\n // <ExtensionSlot position={ExtensionPositionEnum.SideNav} />\n // </Box>\n // <div></div>\n // </div>\n // </div>\n // </LayoutProvider>\n // );\n};\n\nconst LeftSidebar = (props: SideBarProps) => {\n console.log(\"xxxxxxx left sidebar\", props.items);\n\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/pages/dashboard/page.tsx","../src/pages/dashboard/tab/tab.ui.tsx","../src/components/affiliateIcon.tsx","../src/components/traderIcon.tsx","../src/pages/affiliate/page.tsx","../src/pages/affiliate/summary/summary.ui.tsx","../src/components/usdcIcon.tsx","../src/pages/affiliate/summary/summary.script.tsx","../src/hooks/provider.tsx","../src/pages/affiliate/summary/summary.widget.tsx","../src/pages/affiliate/referralLink/referralLink.ui.tsx","../src/components/autoHideText.tsx","../src/pages/affiliate/referralLink/referralLink.script.tsx","../src/utils/utils.ts","../src/pages/affiliate/referralLink/referralLink.widget.tsx","../src/pages/affiliate/titleStatistic/titleStatistic.ui.tsx","../src/pages/affiliate/titleStatistic/titleStatistic.script.tsx","../src/utils/chartUtils.ts","../src/pages/affiliate/titleStatistic/titleStatistic.widget.tsx","../src/pages/affiliate/referralCodes/referralCodes.ui.tsx","../src/components/editIcon.tsx","../src/components/editCodeBtn.tsx","../src/components/pinButton.tsx","../src/pages/affiliate/referralCodes/referralCodes.script.tsx","../src/pages/affiliate/referralCodes/editCodeModal.tsx","../src/pages/affiliate/referralCodes/editReferralRate.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/trader/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/home/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.script.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/pages/home/card/card.ui.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.ui.tsx","../src/components/arrowRightIcon.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.script.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.widget.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/card/card.script.tsx","../src/pages/home/card/card.widget.tsx","../src/pages/dashboard/tab/tab.script.tsx","../src/pages/dashboard/tab/tab.widget.tsx","../src/layout/layout.ui.tsx","../src/layout/layout.script.tsx","../src/layout/layout.widget.tsx"],"names":["dashboard_exports","__export","AffiliatePage","DashboardPage","HomePage","TraderPage","cn","Button","Flex","TabsBase","TabsContent","TabsList","TabsTrigger","Text","jsx","jsxs","AffiliateIcon","props","size","className","rest","TraderIcon","Select","USDCIcon","commifyOptional","useTranslation","Summary","Title","CommissionData","Row","useMemo","useState","createContext","useContext","useEffect","useRef","format","subDays","usePrivateQuery","useDaily","useAccount","useAppContext","AccountStatusEnum","TabTypes","ReferralContext","ReferralProvider","becomeAnAffiliate","becomeAnAffiliateUrl","bindReferralCodeState","learnAffiliate","learnAffiliateUrl","referralLinkUrl","showReferralPage","chartConfig","overwrite","splashPage","state","data","referralInfoMutate","isLoading","generateCode","generateCodeMutate","showHome","setShowHome","dailyVolume","dailyVolumeMutate","volumeStatistics","volumeStatisticsMutate","isAffiliate","isTrader","userVolume","volume","now","index","item","oneDayVolume","mutate","refCode","tab","setTab","wrongNetwork","disabledConnect","lastStete","timerId","useReferralContext","useSummaryScript","t","period","setPeriod","periodTypes","referralInfo","commission","referralVol","referees","refereesTades","SummaryWidget","CopyIcon","Divider","modal","Tooltip","AutoHideText","text","visibleCount","containerRef","textRef","lastContainerWidth","getTextWidth","ref","context","element","fontStyle","visibleChars","setVisibleChars","calculateVisibleChars","containerWidth","textElement","textContent","pWidth","maxDisplayW","count","subText","truncatedText","maxCharacters","startText","endText","start","first","end","Trans","ReferralLink","Subtitle","Input","title","value","gradient","tooltip","valueClsName","Alert","i18n","toast","toDate","addQueryParam","url","paramName","paramValue","urlObj","searchParams","copyText","content","formatDateTimeToUTC","input","date","utcDate","toUTCDate","formatYMDTime","time","compareDate","d1","d2","Decimal","useLocalStorage","useReferralLinkScript","onCopy","pinCodes","setPinCodes","codes","referralCodes","pinedItems","i","code","firstCode","referralLink","earn","share","ReferralLinkWidget","VolBarChart","TitleStatistic","fillData","days","origin","result","_","dataObject","acc","curr","originData","useReferralRebateSummary","useTitleStatisticScript","onPeriodChange","volType","setVolType","volTypes","onVolTypeChange","dateRange","rebateSummary","dataSource","e","TitleStatisticWidget","useMediaQuery","DataTable","ListView","Statistic","EditIcon","EditCode","PinBtn","UnPinIcon","PinnedIcon","Fragment","ReferralCodes","isTablet","MobileLayout","DesktopLayout","MobileCell","MobileCellItem","copyable","align","editRate","setPinCode","copyLink","editCode","getRate","getCount","moreColumn","columns","cols","record","refereeRate","useMutation","inputFormatter","SimpleDialog","TextField","useModal","EditCodeModal","visible","onOpenChange","newCode","setNewCode","filedError","setFiledError","error","isMutating","_code","_fieldError","res","_value","char","cleanStringStyle","Dialog","DialogContent","DialogTitle","EditReferralRate","hide","resolve","reject","maxRate","refereeRebateRate","setRefereeRebateRate","referrerRebateRate","setReferrerRebateRate","showError","setShowError","inputRef","onClickConfirm","r1","r2","rate","maxDecimal","a","b","useReferralCodesScript","copyCode","del","ReferralCodesWidget","DatePicker","TabPanel","Tabs","AuthGuardDataTable","CommissionAndReferees","CommissionList","RefereesList","rule","formatString","prefix","isLG","body","DateFiler","range","useRefereeInfo","usePagination","useCommissionAndRefereesScript","useCommissionDataScript","useRefereesDataScript","commissionRange","setCommissionRange","page","pageSize","setPage","parsePagination","commissionData","refresh","loadMore","meta","pagination","CommissionAndRefereesWidget","Layout","Layout1024","Layout1280","Rebate","SummaryFilter","rebates","vol","rebate","rebateText","useRefereeRebateSummary","distributionData","Rebates","List","layout767","Cell","useRebatesScript","setDateRange","createdTime","displayDate","RebatesWidget","commify","BecomeAffiliate","applyText","Item","ApplyIcon","ArrowDownIcon","ShareIcon","EarnIcon","useBecomeAffiliateScript","BecomeAffiliateWidget","useTitleScript","TitleWidget","useSubtitleScript","onLearnAffiliate","SubtitleWidget","Top","useTopScript","TopWidget","ArrowRightIcon","AsAnAffiliate","Icon","Bottom","totalReferrerRebate","event","useScreen","useAsAnAffiliateScript","isSignIn","onEnterAffiliatePage","isMobile","AsAnAffiliateWidget","DialogBody","DialogHeader","DialogTrigger","AsTrader","EntryCode","useCheckReferralCode","useAsTraderScript","onEnterTraderPage","setCode","open","setOpen","isExist","checkCodeError","bindCode","errorText","AsTraderWidget","Card","useCardScript","CardWidget","Tab","extendNode","useTabScript","onBecomeAnAffiliate","tableValue","TabWidget","classNames","root","Box","Scaffold","SideBar","AffiliateLayout","LeftSidebar","useLayoutBuilder","current","setCurrent","AffiliateLayoutWidget"],"mappings":"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","sourcesContent":["export { DashboardPage } from \"./page\";\nexport { HomePage} from \"../home\";\nexport { AffiliatePage } from \"../affiliate\";\nexport { TraderPage } from \"../trader\";","import { Flex, Box, cn } from \"@orderly.network/ui\";\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 { classNames = {} } = props;\n const { root, ...rest } = classNames;\n \n return (\n <div id=\"oui-affiliate-dashboard-page\" className={cn(\"oui-w-full oui-tracking-tight\", root)}>\n <TabWidget classNames={rest} />\n </div>\n );\n};\n","import { FC } from \"react\";\nimport {\n Button,\n cn,\n Flex,\n TabsBase,\n TabsContent,\n TabsList,\n TabsTrigger,\n Text,\n} from \"@orderly.network/ui\";\nimport { TabReturns } from \"./tab.script\";\nimport { AffiliateIcon } from \"../../../components/affiliateIcon\";\nimport { TraderIcon } from \"../../../components/traderIcon\";\nimport { AffiliatePage } from \"../../affiliate\";\nimport { TraderPage } from \"../../trader\";\nimport { HomePage } from \"../../home\";\nimport { TabTypes } from \"../../../hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 { 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 { 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 } from \"react\";\nimport { Flex, Select, Text } from \"@orderly.network/ui\";\nimport { SummaryReturns } from \"./summary.script\";\nimport { USDCIcon } from \"../../../components/usdcIcon\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 { 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 { useMemo, useState } from \"react\";\nimport { SummaryFilter } from \"../../../utils/types\";\nimport { useReferralContext } from \"../../../hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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: {\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 } = useReferralContext();\n\n const commission = useMemo(() => {\n if (!referralInfo) 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) return 0;\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 const referees = useMemo(() => {\n if (!referralInfo) return 0;\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) return 0;\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 {\n FC,\n PropsWithChildren,\n ReactNode,\n createContext,\n useContext,\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} from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\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 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\nexport const ReferralContext = createContext<ReferralContextReturns>(\n {} as ReferralContextReturns,\n);\n\nexport type BuildNode = (state: ReferralContextReturns) => ReactNode;\n\nexport const ReferralProvider: FC<PropsWithChildren<ReferralContextProps>> = (\n props,\n) => {\n const {\n onBecomeAnAffiliate: becomeAnAffiliate,\n becomeAnAffiliateUrl = \"https://orderly.network/\",\n bindReferralCodeState,\n onLearnAffiliate: learnAffiliate,\n learnAffiliateUrl = \"https://orderly.network/\",\n referralLinkUrl = \"https://orderly.network/\",\n showReferralPage,\n // onEnterTraderPage: enterTraderPage,\n // onEnterAffiliatePage: enterAffiliatePage,\n chartConfig,\n overwrite,\n splashPage,\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: true,\n });\n\n const { data: generateCode, mutate: generateCodeMutate } =\n usePrivateQuery<API.AutoGenerateCode>(\n \"/v1/referral/auto_referral/progress\",\n {\n revalidateOnFocus: true,\n errorRetryCount: 2,\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 [showHome, setShowHome] = useState(isLoading);\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: true,\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(() => {\n const volume: any = {};\n\n if (dailyVolume && dailyVolume.length > 0) {\n const now = format(new Date(), \"yyyy-MM-dd\");\n const index = dailyVolume.findIndex((item: any) => {\n const itemDate = item.date;\n return itemDate === now;\n });\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 mutate = () => {\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>(TabTypes.affiliate);\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const lastStete = useRef<AccountStatusEnum>(AccountStatusEnum.NotConnected);\n useEffect(() => {\n let timerId: any;\n if (lastStete.current !== state.status) {\n lastStete.current = state.status;\n timerId = setTimeout(() => {\n mutate();\n }, 1000);\n }\n\n return () => {\n if (timerId) clearTimeout(timerId);\n };\n }, [state.status]);\n\n return (\n <ReferralContext.Provider\n value={{\n generateCode,\n showHome,\n setShowHome,\n referralInfo: data,\n isAffiliate: isAffiliate,\n isTrader: isTrader,\n // isAffiliate: true,\n // isTrader: false,\n mutate,\n onBecomeAnAffiliate: becomeAnAffiliate,\n becomeAnAffiliateUrl,\n bindReferralCodeState,\n onLearnAffiliate: learnAffiliate,\n learnAffiliateUrl,\n referralLinkUrl,\n userVolume,\n dailyVolume,\n showReferralPage,\n chartConfig,\n overwrite,\n splashPage,\n isLoading,\n tab,\n setTab,\n wrongNetwork,\n disabledConnect,\n }}\n >\n {props.children}\n </ReferralContext.Provider>\n );\n};\n\nexport function useReferralContext() {\n return useContext(ReferralContext);\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 {\n CopyIcon,\n Divider,\n Flex,\n modal,\n Text,\n Tooltip,\n} from \"@orderly.network/ui\";\nimport { ReferralLinkReturns } from \"./referralLink.script\";\nimport { AutoHideText } from \"../../../components/autoHideText\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\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\" />]}\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","\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 { useMemo } from \"react\";\nimport { useReferralContext } from \"../../../hooks\";\nimport { addQueryParam } from \"../../../utils/utils\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { toast } from \"@orderly.network/ui\";\nimport { RefferalAPI, useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 addQueryParam(referralLinkUrl, \"ref\", 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 { i18n } from \"@orderly.network/i18n\";\nimport { toast } from \"@orderly.network/ui\";\nimport { format, toDate } from \"date-fns\";\n// import { toZonedTime } from \"date-fns-tz\";\n// const { toZonedTime } = require(\"date-fns-tz\");\n\nexport function addQueryParam(\n url: string,\n paramName: string,\n paramValue: string\n): string {\n const urlObj = new URL(url);\n const searchParams = new URLSearchParams(urlObj.search);\n\n searchParams.set(paramName, paramValue);\n\n urlObj.search = searchParams.toString();\n\n return urlObj.toString();\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) return null;\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) return \"\";\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) return undefined;\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) return undefined;\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) return undefined;\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) return false;\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 { 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 { 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\";\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 || []}\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 { VolChartDataItem } from \"@orderly.network/chart\";\nimport { format, subDays } from \"date-fns\";\n\nexport function fillData(\n days: number,\n origin?: VolChartDataItem[]\n): VolChartDataItem[] {\n const now = Date();\n const result: VolChartDataItem[] = new Array(days).fill(0).map(\n (_, index): VolChartDataItem => {\n return {\n date: format(subDays(now, index + 1), \"yyyy-MM-dd\"),\n volume: 0,\n opacity: 0,\n };\n }\n ).reverse();\n\n console.log(\"fill data\", result, origin);\n \n\n const dataObject = origin?.reduce((acc, curr) => {\n acc[curr.date] = curr;\n return acc;\n }, {} as { [key: string]: VolChartDataItem });\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 { 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, 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 { EditIcon } from \"../../../components/editIcon\";\nimport { PinBtn } from \"../../../components/pinButton\";\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 { 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 \"./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 { useMemo } from \"react\";\nimport { RefferalAPI, useLocalStorage } from \"@orderly.network/hooks\";\nimport { modal } from \"@orderly.network/ui\";\nimport { useReferralContext } from \"../../../hooks\";\nimport { addQueryParam, copyText } from \"../../../utils/utils\";\nimport { EditCodeModal } from \"./editCodeModal\";\nimport { EditReferralRate } from \"./editReferralRate\";\n\nexport type ReferralCodeType = RefferalAPI.ReferralCode & {\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(addQueryParam(referralLinkUrl, \"ref\", 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 return undefined;\n }\n\n const referralCodes: ReferralCodeType[] =\n referralInfo?.referrer_info.referral_codes.map((item) => {\n // todo check auto generated\n if (generateCode && generateCode.code === item.code) {\n (item as ReferralCodeType).isAutoGenerated = true;\n }\n\n return item;\n });\n const pinedItems: ReferralCodeType[] = [];\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], isPined: true });\n referralCodes.splice(index, 1);\n }\n }\n return [...pinedItems, ...referralCodes];\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 { 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 { 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 {\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 { CommissionAndRefereesReturns } from \"./commissionAndReferees.script\";\nimport { RefferalAPI, useMediaQuery } from \"@orderly.network/hooks\";\nimport { DateRange } from \"../../../utils/types\";\nimport { formatYMDTime } from \"../../../utils/utils\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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-w-full oui-max-h-[200px]\"\n dataSource={props.commission.data}\n // dataSource={[]}\n loadMore={props.commission.loadMore}\n isLoading={props.commission.isLoading}\n renderItem={(e, index) => {\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-w-full oui-mt-3\" />\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, 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 { Button, Flex, Select, Text } from \"@orderly.network/ui\";\nimport { SummaryReturns } from \"./summary.script\";\nimport { USDCIcon } from \"../../../components/usdcIcon\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 { useReferralContext } from \"../../../hooks\";\nimport { SummaryFilter } from \"../../../utils/types\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 { useRefereeRebateSummary } from \"@orderly.network/hooks\";\nimport { format, subDays } from \"date-fns\";\nimport { useMemo, useState } from \"react\";\nimport { useReferralContext } from \"../../../hooks\";\nimport { BarDayFilter } from \"../../../utils/types\";\nimport { VolChartDataItem } from \"@orderly.network/chart\";\nimport { fillData } from \"../../../utils/chartUtils\";\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: 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 let 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 { 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, 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 \"../../../hooks/provider\";\nimport { BecomeAffiliateReturns } from \"./becomeAffiliate.script\";\n\nexport const BecomeAffiliate: FC<BecomeAffiliateReturns> = (props) => {\n const { t } = useTranslation();\n\n const { generateCode } = useReferralContext();\n\n if (typeof props.overwrite === \"function\") {\n return props.overwrite?.(props.state);\n }\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 // volume: <Text.formatted></Text.formatted>,\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]);\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 lg:oui-flex-row oui-gap-3 lg:oui-items-stretch lg:oui-w-full\">\n <Item\n icon={<ApplyIcon />}\n title={applyText.title}\n content={applyText.desc}\n />\n <div className=\"oui-flex-shrink lg:-oui-rotate-90 lg:oui-flex 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-flex-shrink lg:-oui-rotate-90 lg:oui-flex 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\n \"lg:oui-flex-col lg:oui-gap-[6px] lg:oui-flex-1\",\n )}\n width={\"100%\"}\n >\n <div className=\"oui-flex-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 \"../../../hooks\";\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 { FC } from \"react\";\nimport { TitleReturns } from \"./title.script\";\nimport { Trans } from \"@orderly.network/i18n\";\n\nexport const Title: FC<TitleReturns> = (props) => {\n return (\n <div\n id=\"oui-affiliate-home-title\"\n className=\"oui-text-3xl md:oui-text-3xl lg:oui-text-4xl xl:oui-text-5xl oui-font-bold oui-text-center\"\n >\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"affiliate.page.title\"\n values={{\n shortBrokerName: props.shortBrokerName,\n }}\n components={[\n <span\n className=\"oui-gradient-brand oui-text-transparent oui-bg-clip-text\"\n style={{\n // @ts-ignore\n \"--oui-gradient-angle\": \"270deg\",\n }}\n />,\n ]}\n />\n </div>\n );\n};\n","import { useReferralContext } from \"../../../hooks\";\n\nexport type TitleReturns = {\n shortBrokerName: string;\n};\n\nexport const useTitleScript = (): TitleReturns => {\n const { overwrite } = useReferralContext();\n\n return {\n shortBrokerName: overwrite?.shortBrokerName || \"Orderly\",\n };\n};\n","import { useTitleScript } from \"./title.script\";\nimport { Title } from \"./title.ui\";\n\nexport const TitleWidget = () => {\n const state = useTitleScript();\n return <Title {...state} />;\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 { RefferalAPI } from \"@orderly.network/hooks\";\nimport { BuildNode, useReferralContext } from \"../../../hooks\";\nimport { ReactNode } from \"react\";\n\nexport type SubtitleReturns = {\n onLearnAffiliate?: () => void;\n learnAffiliateUrl?: string;\n \n};\n\nexport const useSubtitleScript = (): SubtitleReturns => {\n const state =\n 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 \"../../../hooks\";\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 { Flex, Text } from \"@orderly.network/ui\";\nimport { CardReturns } from \"./card.script\";\nimport { AsAnAffiliateWidget } from \"../asAnAffilate\";\nimport { AsTraderWidget } from \"../asATrader\";\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-flex-col xl:oui-flex-row oui-gap-6 xl:oui-gap-[36px] oui-w-full oui-items-stretch\"\n >\n <AsAnAffiliateWidget />\n <AsTraderWidget />\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Button, cn, Flex, modal, Text, Tooltip } from \"@orderly.network/ui\";\nimport { AsAnAffiliateReturns } from \"./asAnAffiliate.script\";\nimport { USDCIcon } from \"../../../components/usdcIcon\";\nimport { ArrowRightIcon } from \"../../../components/arrowRightIcon\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 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.isAffiliate\n ? t(\"common.affiliate\")\n : t(\"affiliate.asAffiliate.title\")}\n </Text>\n <Text\n className={cn(\n \"oui-text-xs md:oui-text-sm 2xl:oui-text-base oui-text-base-contrast-54\",\n props.isAffiliate && \"oui-hidden\"\n )}\n >\n {t(\"affiliate.asAffiliate.description\")}\n </Text>\n </Flex>\n <div className=\"oui-flex-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-w-[90px] xl:oui-h-[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={(e) => {\n props.onEnterAffiliatePage?.(props.referralInfo);\n }}\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-w-[18px] md:oui-h-[18px] lg:oui-w-[20px] lg:oui-h-[20px] xl:oui-w-[24px] xl:oui-h-[24px]\" />\n </Flex>\n </>\n );\n }\n\n return (\n <>\n <Tooltip\n content={\n props.wrongNetwork\n ? t(\"connector.wrongNetwork.tooltip\")\n : t(\"affiliate.connectWallet.tooltip\")\n }\n >\n {props.isMobile ? (\n <Button\n variant=\"contained\"\n color=\"light\"\n onClick={(event) => {\n if (!props.isSignIn || props.wrongNetwork) {\n event.stopPropagation();\n event.preventDefault();\n modal.alert({\n title: t(\"common.tips\"),\n message: (\n <Text intensity={54}>\n {props.wrongNetwork\n ? t(\"connector.wrongNetwork.tooltip\")\n : t(\"affiliate.connectWallet.tooltip\")}\n </Text>\n ),\n });\n } else {\n props.becomeAnAffiliate?.();\n }\n }}\n className={\n !props.isSignIn || props.wrongNetwork\n ? \"oui-bg-white/[.54] oui-text-black/[.36] hover:oui-bg-white/[.54]\"\n : undefined\n }\n >\n {t(\"affiliate.asAffiliate.button\")}\n </Button>\n ) : (\n <Button\n variant=\"contained\"\n color=\"light\"\n onClick={props.becomeAnAffiliate}\n disabled={!props.isSignIn || props.wrongNetwork}\n >\n {t(\"affiliate.asAffiliate.button\")}\n </Button>\n )}\n </Tooltip>\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 40%~60%\n </Text>\n <Text className=\"oui-text-2xs md:oui-text-xs 2xl:oui-text-sm oui-text-base-contrast-54\">\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 { 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 { RefferalAPI as API, useAccount } from \"@orderly.network/hooks\";\nimport { TabTypes, useReferralContext } from \"../../../hooks\";\nimport { MockData } from \"../../../utils/mockData\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useScreen } from \"@orderly.network/ui\";\n\nexport type AsAnAffiliateReturns = {\n isAffiliate: boolean;\n isLoading: boolean;\n referralInfo?: API.ReferralInfo;\n onEnterAffiliatePage?: (params?: any) => void;\n becomeAnAffiliate?: () => void;\n isSignIn: boolean;\n wrongNetwork: boolean;\n isMobile: boolean;\n};\n\nexport const useAsAnAffiliateScript = (): AsAnAffiliateReturns => {\n const {\n isAffiliate,\n isLoading,\n referralInfo,\n becomeAnAffiliateUrl,\n setShowHome,\n setTab,\n wrongNetwork,\n disabledConnect,\n } = useReferralContext();\n\n const { state } = useAccount();\n\n const isSignIn =\n !disabledConnect &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected);\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 isSignIn,\n isAffiliate,\n isLoading,\n referralInfo,\n // isAffiliate: true,\n // isLoading: false,\n // referralInfo: MockData.referralInfo,\n onEnterAffiliatePage,\n becomeAnAffiliate,\n wrongNetwork,\n isMobile,\n };\n};\n","import { useAsAnAffiliateScript } from \"./asAnAffiliate.script\";\nimport { AsAnAffiliate } from \"./asAnAffiliate.ui\";\n\nexport const AsAnAffiliateWidget = () => {\n const state = useAsAnAffiliateScript();\n return <AsAnAffiliate {...state} />;\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n Button,\n cn,\n Dialog,\n DialogBody,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n Divider,\n Flex,\n inputFormatter,\n modal,\n Text,\n TextField,\n Tooltip,\n} from \"@orderly.network/ui\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { ArrowRightIcon } from \"../../../components/arrowRightIcon\";\nimport { USDCIcon } from \"../../../components/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 md:oui-text-sm 2xl:oui-text-base oui-text-base-contrast-54\",\n props.isTrader && \"oui-hidden\",\n )}\n >\n {t(\"affiliate.asTrader.description\")}\n </Text>\n </Flex>\n <div className=\"oui-flex-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-w-[90px] xl:oui-h-[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\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={(e) => {\n props?.onEnterTraderPage?.();\n }}\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-w-[18px] md:oui-h-[18px] lg:oui-w-[20px] lg:oui-h-[20px] xl:oui-w-[24px] xl:oui-h-[24px]\" />\n </Flex>\n </>\n );\n }\n\n return (\n <>\n <EntryCode {...props} />\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 0%~20%\n </Text>\n <Text className=\"oui-text-2xs md:oui-text-xs 2xl:oui-text-sm oui-text-base-contrast-54\">\n {t(\"affiliate.trader.rebate\")}\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\nconst EntryCode: FC<AsTraderReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Dialog open={props.open} onOpenChange={props.setOpen}>\n <DialogTrigger>\n <Tooltip\n content={\n props.wrongNetwork\n ? t(\"connector.wrongNetwork.tooltip\")\n : t(\"affiliate.connectWallet.tooltip\")\n }\n >\n {props.isMobile ? (\n <Button\n variant=\"contained\"\n color=\"light\"\n onClick={(event) => {\n if (!props.isSignIn || props.wrongNetwork) {\n event.stopPropagation();\n event.preventDefault();\n modal.alert({\n title: t(\"common.tips\"),\n message: (\n <Text intensity={54}>\n {props.wrongNetwork\n ? t(\"connector.wrongNetwork.tooltip\")\n : t(\"affiliate.connectWallet.tooltip\")}\n </Text>\n ),\n });\n }\n }}\n className={\n !props.isSignIn || props.wrongNetwork\n ? \"oui-bg-white/[.54] oui-text-black/[.36] hover:oui-bg-white/[.54]\"\n : undefined\n }\n >\n {t(\"affiliate.asTrader.button\")}\n </Button>\n ) : (\n <Button\n variant=\"contained\"\n color=\"light\"\n disabled={!props.isSignIn || props.wrongNetwork}\n >\n {t(\"affiliate.asTrader.button\")}\n </Button>\n )}\n </Tooltip>\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-w-full oui-mt-4\"\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\n itemAlign={\"center\"}\n width={\"100%\"}\n direction={\"row\"}\n justify={\"center\"}\n mt={6}\n >\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"md\"\n className=\"oui-px-[40px]\"\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 </Flex>\n </DialogBody>\n </DialogContent>\n </Dialog>\n );\n};\n","import { useState } from \"react\";\nimport {\n useAccount,\n useCheckReferralCode,\n useMutation,\n} from \"@orderly.network/hooks\";\nimport { TabTypes, useReferralContext } from \"../../../hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { toast, useScreen } from \"@orderly.network/ui\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const useAsTraderScript = () => {\n const { t } = useTranslation();\n\n const {\n isTrader,\n referralInfo,\n setShowHome,\n bindReferralCodeState,\n setTab,\n mutate,\n wrongNetwork,\n disabledConnect,\n } = useReferralContext();\n\n const { state } = useAccount();\n\n const isSignIn =\n !disabledConnect &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected);\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 return {\n isSignIn,\n isTrader,\n isLoading,\n referralInfo,\n // isTrader: true,\n // isLoading: false,\n // referralInfo: MockData.referralInfo,\n onEnterTraderPage,\n code,\n setCode,\n open,\n setOpen,\n onClickConfirm,\n isExist,\n wrongNetwork,\n isMobile,\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 {\n BuildNode,\n ReferralContextReturns,\n useReferralContext,\n} from \"../../../hooks\";\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 { ReactNode, useEffect, useMemo } from \"react\";\nimport { TabTypes, useReferralContext } from \"../../../hooks\";\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 becomeAnAffiliateUrl,\n onBecomeAnAffiliate,\n showReferralPage,\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 console.log(\" tab\", tab, tableValue, window.location);\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 { PropsWithChildren } from \"react\";\nimport { Box, ExtensionPositionEnum, ExtensionSlot } from \"@orderly.network/ui\";\nimport { Scaffold, SideBar, SideBarProps } from \"@orderly.network/ui-scaffold\";\nimport { LayoutProvider } from \"./context\";\n\nexport type AffiliateLayoutProps = {} & SideBarProps;\n\nexport const AffiliateLayout = (\n props: PropsWithChildren<AffiliateLayoutProps>,\n) => {\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 // return (\n // <LayoutProvider>\n // <div className=\"oui-h-dvh\">\n // <ExtensionSlot position={ExtensionPositionEnum.MainNav} />\n // <div\n // className=\"oui-grid oui-h-full\"\n // style={{ gridAutoColumns: \"160px 1fr\" }}\n // >\n // <Box p={4} className=\"oui-bg-base-9 oui-rounded-2xl\">\n // <ExtensionSlot position={ExtensionPositionEnum.SideNav} />\n // </Box>\n // <div></div>\n // </div>\n // </div>\n // </LayoutProvider>\n // );\n};\n\nconst LeftSidebar = (props: SideBarProps) => {\n console.log(\"xxxxxxx left sidebar\", props.items);\n\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"]}