@kodiak-finance/orderly-affiliate 2.8.18 → 2.8.19
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.d.mts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +4064 -9
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4061 -6
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +11 -11
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.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/asATrader/asTrader.ui.tsx","../src/components/arrowRightIcon.tsx","../src/pages/home/asATrader/asTrader.script.tsx","../src/pages/home/asATrader/asTrader.widget.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.ui.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.script.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.widget.tsx","../src/pages/home/card/card.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","useMemoizedFn","noCacheConfig","useAppContext","AccountStatusEnum","TabTypes","ReferralContext","ReferralProvider","becomeAnAffiliateUrl","learnAffiliateUrl","referralLinkUrl","chartConfig","overwrite","children","splashPage","onBecomeAnAffiliate","bindReferralCodeState","onLearnAffiliate","showReferralPage","state","data","referralInfoMutate","isLoading","generateCode","generateCodeMutate","showHome","setShowHome","dailyVolume","dailyVolumeMutate","volumeStatistics","volumeStatisticsMutate","isAffiliate","isTrader","userVolume","volume","now","index","item","oneDayVolume","memoMutate","refCode","tab","setTab","wrongNetwork","disabledConnect","lastStete","timerRef","memoizedValue","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","useLocalStorage","toast","Decimal","toDate","i18n","addQueryParam","url","paramName","paramValue","urlObj","searchParams","copyText","content","formatDateTimeToUTC","input","date","utcDate","toUTCDate","formatYMDTime","time","compareDate","d1","d2","useReferralLinkScript","onCopy","pinCodes","setPinCodes","codes","referralCodes","pinedItems","i","code","firstCode","referralLink","earn","share","ReferralLinkWidget","VolBarChart","EMPTY_LIST","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","mutate","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","TitleWidget","useSubtitleScript","SubtitleWidget","Top","useTopScript","TopWidget","DialogBody","DialogHeader","DialogTrigger","ArrowRightIcon","AsTrader","Icon","Bottom","totalReferrerRebate","EntryCode","event","useCheckReferralCode","useScreen","useAsTraderScript","isSignIn","onEnterTraderPage","setCode","open","setOpen","isExist","checkCodeError","bindCode","errorText","isMobile","AsTraderWidget","AsAnAffiliate","useAsAnAffiliateScript","becomeAnAffiliate","onEnterAffiliatePage","AsAnAffiliateWidget","Card","useCardScript","CardWidget","Tab","extendNode","useTabScript","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 \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-ui\";\nimport { SummaryWidget } from \"./summary\";\nimport { ReferralLinkWidget } from \"./referralLink\";\nimport { TitleStatisticWidget } from \"./titleStatistic\";\nimport { ReferralCodesWidget } from \"./referralCodes\";\nimport { CommissionAndRefereesWidget } from \"./commissionAndReferees\";\nimport { useMediaQuery } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-ui\";\nimport { SummaryReturns } from \"./summary.script\";\nimport { USDCIcon } from \"../../../components/usdcIcon\";\nimport { commifyOptional } from \"@kodiak-finance/orderly-utils\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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 { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useReferralContext } from \"../../../hooks\";\nimport { SummaryFilter } from \"../../../utils/types\";\n\nexport type SummaryReturns = {\n period: string;\n periodTypes: { label: string; value: string }[];\n onPeriodChange: (item: string) => void;\n commission: number;\n referralVol: number;\n referees: number;\n refereesTades: number;\n};\n\nexport const useSummaryScript = (): SummaryReturns => {\n const { t } = useTranslation();\n const [period, setPeriod] = useState<SummaryFilter>(\"All\");\n\n const periodTypes: { label: string; value: SummaryFilter }[] = [\n { label: t(\"common.all\"), value: \"All\" },\n { label: t(\"common.select.1d\"), value: \"1D\" },\n { label: t(\"common.select.7d\"), value: \"7D\" },\n { label: t(\"common.select.30d\"), value: \"30D\" },\n ];\n\n const { referralInfo } = useReferralContext();\n\n const commission = useMemo(() => {\n if (!referralInfo || !referralInfo.referrer_info) {\n return 0;\n }\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_referrer_rebate;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_referrer_rebate\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_referrer_rebate\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_referrer_rebate\"];\n }\n }, [referralInfo, period]);\n\n const referralVol = useMemo(() => {\n if (!referralInfo || !referralInfo.referrer_info) {\n return 0;\n }\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_referee_volume;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_referee_volume\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_referee_volume\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_referee_volume\"];\n }\n }, [referralInfo, period]);\n\n const referees = useMemo(() => {\n if (!referralInfo || !referralInfo.referrer_info) {\n return 0;\n }\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_invites;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_invites\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_invites\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_invites\"];\n }\n }, [referralInfo, period]);\n\n const refereesTades = useMemo(() => {\n if (!referralInfo || !referralInfo.referrer_info) {\n return 0;\n }\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_traded;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_traded\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_traded\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_traded\"];\n }\n }, [referralInfo, period]);\n\n const onPeriodChange = (item: string) => {\n setPeriod(item as SummaryFilter);\n };\n\n return {\n period,\n periodTypes,\n onPeriodChange,\n commission,\n referralVol,\n referees,\n refereesTades,\n };\n};\n","import {\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 useMemoizedFn,\n noCacheConfig,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-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 becomeAnAffiliateUrl = \"https://orderly.network/\",\n learnAffiliateUrl = \"https://orderly.network/\",\n referralLinkUrl = \"https://orderly.network/\",\n chartConfig,\n overwrite,\n children,\n splashPage,\n onBecomeAnAffiliate,\n bindReferralCodeState,\n onLearnAffiliate,\n showReferralPage,\n } = props;\n\n const { state } = useAccount();\n\n const {\n data,\n mutate: referralInfoMutate,\n isLoading,\n } = usePrivateQuery<API.ReferralInfo>(\"/v1/referral/info\", {\n revalidateOnFocus: true,\n errorRetryCount: 3,\n ...noCacheConfig,\n });\n\n const { data: generateCode, mutate: generateCodeMutate } =\n usePrivateQuery<API.AutoGenerateCode>(\n \"/v1/referral/auto_referral/progress\",\n {\n revalidateOnFocus: 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\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<UserVolumeType>(() => {\n const volume: UserVolumeType = {};\n if (dailyVolume && dailyVolume.length > 0) {\n const now = format(new Date(), \"yyyy-MM-dd\");\n const index = dailyVolume.findIndex((item) => item.date === now);\n let oneDayVolume = 0;\n if (index !== -1) {\n oneDayVolume = dailyVolume[index].perp_volume;\n }\n volume[\"1d_volume\"] = oneDayVolume;\n }\n\n if (volumeStatistics) {\n volume[\"7d_volume\"] = volumeStatistics.perp_volume_last_7_days;\n volume[\"30d_volume\"] = volumeStatistics.perp_volume_last_30_days;\n volume[\"all_volume\"] = volumeStatistics.perp_volume_ltd;\n }\n return volume;\n }, [dailyVolume, volumeStatistics]);\n\n useEffect(() => {\n if (isAffiliate || isTrader) {\n setShowHome(false);\n }\n }, [isAffiliate, isTrader]);\n\n const memoMutate = useMemoizedFn(() => {\n volumeStatisticsMutate();\n dailyVolumeMutate();\n referralInfoMutate();\n generateCodeMutate();\n });\n\n useEffect(() => {\n const searchParams = new URLSearchParams(window.location.search);\n const refCode = searchParams.get(\"ref\");\n if (refCode) {\n localStorage.setItem(\"referral_code\", refCode);\n }\n }, []);\n\n const [tab, setTab] = useState<TabTypes>(TabTypes.affiliate);\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const lastStete = useRef<AccountStatusEnum>(AccountStatusEnum.NotConnected);\n\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (lastStete.current !== state.status) {\n lastStete.current = state.status;\n timerRef.current = setTimeout(() => {\n memoMutate();\n }, 1000);\n }\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n };\n }, [memoMutate, state.status]);\n\n const memoizedValue = useMemo<ReferralContextReturns>(() => {\n return {\n generateCode,\n showHome,\n referralInfo: data,\n isAffiliate: isAffiliate,\n isTrader: isTrader,\n tab,\n becomeAnAffiliateUrl,\n learnAffiliateUrl,\n referralLinkUrl,\n userVolume,\n dailyVolume,\n chartConfig,\n overwrite,\n isLoading,\n wrongNetwork,\n disabledConnect,\n setShowHome,\n setTab: setTab,\n mutate: memoMutate,\n onBecomeAnAffiliate,\n bindReferralCodeState,\n onLearnAffiliate,\n showReferralPage,\n splashPage,\n };\n }, [\n becomeAnAffiliateUrl,\n chartConfig,\n dailyVolume,\n data,\n disabledConnect,\n generateCode,\n isAffiliate,\n isLoading,\n isTrader,\n learnAffiliateUrl,\n overwrite,\n referralLinkUrl,\n showHome,\n tab,\n userVolume,\n wrongNetwork,\n onBecomeAnAffiliate,\n bindReferralCodeState,\n onLearnAffiliate,\n showReferralPage,\n splashPage,\n memoMutate,\n ]);\n\n return (\n <ReferralContext.Provider value={memoizedValue}>\n {children}\n </ReferralContext.Provider>\n );\n};\n\nexport const 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 \"@kodiak-finance/orderly-ui\";\nimport { ReferralLinkReturns } from \"./referralLink.script\";\nimport { AutoHideText } from \"../../../components/autoHideText\";\nimport { Trans, useTranslation } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-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 { RefferalAPI, useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { toast } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { useReferralContext } from \"../../../hooks\";\nimport { addQueryParam } from \"../../../utils/utils\";\n\nexport type ReferralLinkReturns = {\n onCopy?: (value: string) => void;\n refLink?: string;\n refCode?: string;\n earn?: string;\n share?: string;\n brokerName?: string;\n};\n\nexport const useReferralLinkScript = (): ReferralLinkReturns => {\n const { t } = useTranslation();\n\n const onCopy = (value: string) => {\n toast.success(t(\"common.copy.copied\"));\n };\n\n const { referralInfo, referralLinkUrl, overwrite } = useReferralContext();\n const [pinCodes, setPinCodes] = useLocalStorage<string[]>(\n \"orderly_referral_codes\",\n [] as string[],\n );\n\n const codes = useMemo((): RefferalAPI.ReferralCode[] => {\n if (!referralInfo?.referrer_info?.referral_codes)\n return [] as RefferalAPI.ReferralCode[];\n const referralCodes = [...referralInfo?.referrer_info?.referral_codes];\n\n const pinedItems: RefferalAPI.ReferralCode[] = [];\n\n for (let i = 0; i < pinCodes.length; i++) {\n const code = pinCodes[i];\n\n const index = referralCodes.findIndex((item) => item.code === code);\n if (index !== -1) {\n pinedItems.push({ ...referralCodes[index] });\n referralCodes.splice(index, 1);\n }\n }\n\n return [...pinedItems, ...referralCodes];\n }, [referralInfo?.referrer_info?.referral_codes, pinCodes]);\n\n const firstCode = useMemo(() => {\n if (codes.length === 0) {\n return undefined;\n }\n\n return codes[0];\n }, [codes]);\n\n const code = useMemo(() => {\n return firstCode?.code;\n }, [firstCode]);\n\n const referralLink = useMemo(() => {\n if (!firstCode) return \"\";\n\n return 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 { format, toDate } from \"date-fns\";\nimport { i18n } from \"@kodiak-finance/orderly-i18n\";\nimport { toast } from \"@kodiak-finance/orderly-ui\";\n\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 try {\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 } catch (error) {\n return url;\n }\n}\n\nexport async function copyText(content: string) {\n try {\n await navigator.clipboard.writeText(content);\n toast.success(i18n.t(\"common.copy.copied\"));\n } catch (error) {\n toast.success(i18n.t(\"common.copy.failed\"));\n }\n}\n\nexport function parseTime(time?: number | string): Date | null {\n if (!time) {\n return null;\n }\n const timestamp = typeof time === \"number\" ? time : Date.parse(time);\n\n if (!isNaN(timestamp)) {\n return new Date(timestamp);\n }\n\n return null;\n}\n\n//** will be return YYYY-MM-ddThh:mm:ssZ */\nexport function formatDateTimeToUTC(input?: number | string): string {\n if (input === undefined) {\n return \"\";\n }\n const date = toDate(input);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"yyyy-MM-dd HH:mm:ss 'UTC'\");\n}\n\n//** will return yyyy-MM-dd */\nexport function formatYMDTime(time?: number | string): string | undefined {\n if (time === undefined) {\n return undefined;\n }\n const date = toDate(time);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"yyyy-MM-dd\");\n}\n\n//** will return hh:mm */\nexport function formatHMTime(time?: number | string): string | undefined {\n if (time === undefined) {\n return undefined;\n }\n const date = toDate(time);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"hh:mm\");\n}\n\n//** will return MM-dd */\nexport function formatMdTime(time?: number | string): string | undefined {\n if (time === undefined) {\n return undefined;\n }\n const date = toDate(time);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"MM-dd\");\n}\n\n//** compare two date, yyyy-mm-dd */\nexport function compareDate(d1?: Date, d2?: Date) {\n const isEqual =\n d1 &&\n d2 &&\n d1.toISOString().substring(0, 10) === d2.toISOString().substring(0, 10);\n\n return isEqual;\n}\n\nexport function generateData(\n itemCount: number,\n data: any[] | null | undefined,\n timeKey: string,\n valueKey: string,\n): [string, number][] {\n const result: [string, number][] = [];\n\n for (let i = 0; i < itemCount; i++) {\n const currentDate = new Date();\n currentDate.setDate(currentDate.getDate() - i - 1);\n const currentDateStr = currentDate.toISOString().substring(0, 10);\n\n const matchedData = data?.find((item) => {\n const itemDate = parseTime(item[timeKey]);\n if (!itemDate) {\n return false;\n }\n return itemDate.toISOString().substring(0, 10) === currentDateStr;\n });\n\n if (matchedData) {\n result.push([currentDateStr, matchedData[valueKey]]);\n } else {\n result.push([currentDateStr, 0]);\n }\n }\n\n return result.reverse();\n}\n\nfunction toUTCDate(date: Date): Date {\n return new Date(date.toUTCString());\n}\n","import { useReferralLinkScript } from \"./referralLink.script\";\nimport { ReferralLink } from \"./referralLink.ui\";\n\nexport const ReferralLinkWidget = () => {\n const state = useReferralLinkScript();\n return <ReferralLink {...state} />;\n};\n","import { FC } from \"react\";\nimport { VolBarChart } from \"@kodiak-finance/orderly-chart\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { EMPTY_LIST } from \"@kodiak-finance/orderly-types\";\nimport { Flex, Select, Text } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { TitleStatisticReturns } from \"./titleStatistic.script\";\n\nexport const TitleStatistic: FC<TitleStatisticReturns> = (props) => {\n return (\n <Flex\n id=\"oui-affiliate-affiliate-titleStatistic\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9\"\n >\n <Title {...props} />\n <Flex className=\"oui-h-[170px] 2xl:oui-h-[196px] oui-w-full oui-flex oui-flex-row oui-items-stretch\">\n <VolBarChart\n data={props.dataSource || EMPTY_LIST}\n colors={{ fill: \"rgba(0, 180, 158, 1)\" }}\n className=\"oui-w-full oui-flex-1\"\n tooltip={{\n rm: Decimal.ROUND_DOWN,\n dp: props.volType === \"Commission\" ? 6 : 2,\n }}\n />\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<TitleStatisticReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">{t(\"affiliate.statistics\")}</Text>\n <Flex direction={\"row\"} gap={2} className={\"oui-min-w-14\"}>\n <Select.options\n size={\"xs\"}\n value={props.period}\n onValueChange={props.onPeriodChange}\n options={props.periodTypes}\n />\n <Select.options\n size={\"xs\"}\n value={props.volType}\n onValueChange={props.onVolTypeChange}\n options={props.volTypes}\n />\n </Flex>\n </Flex>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { fillData } from \"../../../utils/chartUtils\";\nimport { RefferalAPI, useReferralRebateSummary } from \"@kodiak-finance/orderly-hooks\";\nimport { format, subDays } from \"date-fns\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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 { format, subDays } from \"date-fns\";\nimport type { VolChartDataItem } from \"@kodiak-finance/orderly-chart\";\n\nexport function fillData(\n days: number,\n origin?: VolChartDataItem[],\n): VolChartDataItem[] {\n const now = Date();\n const result = new Array(days)\n .fill(0)\n .map<VolChartDataItem>((_, index) => {\n return {\n date: format(subDays(now, index + 1), \"yyyy-MM-dd\"),\n volume: 0,\n opacity: 0,\n };\n })\n .reverse();\n\n const dataObject = origin?.reduce<{ [key: string]: VolChartDataItem }>(\n (acc, curr) => {\n acc[curr.date] = curr;\n return acc;\n },\n {},\n );\n\n for (let index = 0; index < result.length; index++) {\n const element = result[index];\n const originData = dataObject?.[element.date];\n if (originData) {\n result[index] = { ...originData, opacity: originData.volume > 0 ? 1 : 0 };\n }\n }\n\n return result;\n}\n","import { 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 \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Button,\n DataTable,\n Divider,\n Flex,\n ListView,\n Statistic,\n Text,\n cn,\n Column,\n CopyIcon,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-hooks\";\nimport { modal } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n inputFormatter,\n modal,\n SimpleDialog,\n TextField,\n Text,\n useModal,\n Flex,\n cn,\n toast,\n} from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-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 { RefferalAPI, useMediaQuery } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n DatePicker,\n Divider,\n Flex,\n ListView,\n Statistic,\n TabPanel,\n Column,\n Tabs,\n Text,\n cn,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport { commifyOptional } from \"@kodiak-finance/orderly-utils\";\nimport { DateRange } from \"../../../utils/types\";\nimport { formatYMDTime } from \"../../../utils/utils\";\nimport { CommissionAndRefereesReturns } from \"./commissionAndReferees.script\";\n\nexport const CommissionAndReferees: FC<CommissionAndRefereesReturns> = (\n props,\n) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n id=\"oui-affiliate-affiliate-commissionAndReferees\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9 oui-tabular-nums\"\n >\n <Tabs defaultValue=\"account\" className=\"oui-w-full\" variant=\"contained\">\n <TabPanel value=\"account\" title={t(\"affiliate.commission\")}>\n <CommissionList {...props} />\n </TabPanel>\n <TabPanel value=\"password\" title={t(\"affiliate.myReferees\")}>\n <RefereesList {...props} />\n </TabPanel>\n </Tabs>\n </Flex>\n );\n};\n\nconst MobileCellItem: FC<{\n title: string;\n value: string | ReactNode;\n align?: \"start\" | \"end\" | undefined;\n className?: string;\n rule?: \"address\" | \"date\";\n formatString?: string;\n prefix?: string;\n}> = (props) => {\n const { title, value, align, className, rule, formatString, prefix } = props;\n return (\n <Statistic\n className={cn(\"oui-flex-1\", className)}\n label={\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">{title}</Text>\n }\n align={align}\n children={\n <Text.formatted\n rule={rule || \"\"}\n // @ts-ignore\n formatString={formatString}\n prefix={prefix}\n className=\"oui-text-base-contrast-80 oui-text-sm oui-mt-[6px]\"\n >\n {value}\n </Text.formatted>\n }\n />\n );\n};\n\nconst CommissionList: FC<CommissionAndRefereesReturns> = (props) => {\n const { t } = useTranslation();\n const isLG = useMediaQuery(\"(max-width: 767px)\");\n\n const columns = useMemo(() => {\n const cols: Column[] = [\n {\n title: `${t(\"affiliate.commission\")} (USDC)`,\n dataIndex: \"referral_rebate\",\n render: (value) => (\n <Text>\n {commifyOptional(value, {\n fix: 6,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n })}\n </Text>\n ),\n width: 216,\n },\n {\n title: `${t(\"affiliate.referralVol\")} (USDC)`,\n dataIndex: \"volume\",\n render: (value) => (\n <Text>\n {commifyOptional(value, {\n fix: 2,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n })}\n </Text>\n ),\n width: 216,\n },\n {\n title: t(\"affiliate.commission.column.activeUsers\"),\n dataIndex: \"daily_traded_referral\",\n render: (value) => <Text>{value}</Text>,\n width: 216,\n },\n {\n title: t(\"common.date\"),\n dataIndex: \"date\",\n render: (value) => formatYMDTime(value),\n width: 216,\n },\n ];\n\n return cols;\n }, [t]);\n\n const body = useMemo(() => {\n if (isLG) {\n return (\n <ListView<\n RefferalAPI.ReferralRebateSummary,\n RefferalAPI.ReferralRebateSummary[]\n >\n className=\"oui-max-h-[200px] oui-w-full\"\n dataSource={props.commission.data}\n loadMore={props.commission.loadMore}\n isLoading={props.commission.isLoading}\n renderItem={(e) => {\n return (\n <div>\n <Flex direction={\"row\"} width={\"100%\"}>\n <MobileCellItem\n title={t(\"affiliate.commission\")}\n value={commifyOptional(e.referral_rebate, {\n fix: 6,\n fallback: \"0\",\n padEnd: true,\n })}\n prefix=\"$\"\n />\n <MobileCellItem\n title={t(\"affiliate.referralVol\")}\n value={commifyOptional(e.volume, {\n fix: 2,\n fallback: \"0\",\n padEnd: true,\n })}\n prefix=\"$\"\n />\n <MobileCellItem\n title={t(\"affiliate.commission.column.activeUsers\")}\n value={e.daily_traded_referral}\n />\n <MobileCellItem\n title={t(\"common.date\")}\n value={e.date}\n rule=\"date\"\n formatString=\"yyyy-MM-dd\"\n align=\"end\"\n />\n </Flex>\n <Divider className=\"oui-mt-3 oui-w-full\" />\n </div>\n );\n }}\n />\n );\n }\n\n return (\n <AuthGuardDataTable\n bordered\n columns={columns}\n loading={props.commission.isLoading}\n ignoreLoadingCheck={true}\n dataSource={props.commission.data}\n pagination={props.commission.pagination}\n onRow={(record) => {\n return {\n className: \"oui-h-[41px]\",\n };\n }}\n />\n );\n }, [isLG, props.commission]);\n\n return (\n <Flex\n direction={\"column\"}\n width={\"100%\"}\n justify={\"start\"}\n itemAlign={\"start\"}\n >\n <DateFiler\n value={props.commission.dateRange}\n setValue={props.commission.setDateRange}\n />\n {body}\n </Flex>\n );\n};\n\nconst RefereesList: FC<CommissionAndRefereesReturns> = (props) => {\n const { t } = useTranslation();\n\n const isLG = useMediaQuery(\"(max-width: 767px)\");\n\n const columns = useMemo(() => {\n const cols: Column[] = [\n {\n title: t(\"affiliate.referees.column.refereeAddress\"),\n dataIndex: \"user_address\",\n render: (value) => (\n <Text.formatted rule={\"address\"}>{value}</Text.formatted>\n ),\n className: \"oui-w-1/5\",\n },\n {\n title: t(\"affiliate.referralCode\"),\n dataIndex: \"referral_code\",\n // render: (value) => value,\n className: \"oui-w-1/5\",\n },\n {\n title: `${t(\"affiliate.referees.column.totalCommission\")} (USDC)`,\n dataIndex: \"referral_rebate\",\n render: (value) => (\n <Text>\n {commifyOptional(value, { fix: 6, prefix: \"$\", padEnd: true })}\n </Text>\n ),\n className: \"oui-w-1/5\",\n },\n {\n title: `${t(\"affiliate.referees.column.totalVol\")} (USDC)`,\n dataIndex: \"volume\",\n render: (value) => (\n <Text>\n {commifyOptional(value, { fix: 2, prefix: \"$\", padEnd: true })}\n </Text>\n ),\n className: \"oui-w-1/5\",\n },\n {\n title: t(\"affiliate.referees.column.invitationTime\"),\n dataIndex: \"code_binding_time\",\n render: (value) => (\n <Text.formatted\n rule={\"date\"}\n formatString=\"yyyy-MM-dd\"\n children={value}\n />\n ),\n className: \"oui-w-1/5\",\n },\n ];\n\n return cols;\n }, [t]);\n\n const body = useMemo(() => {\n if (isLG) {\n return (\n <ListView<RefferalAPI.RefereeInfoItem, RefferalAPI.RefereeInfoItem[]>\n className=\"oui-w-full oui-max-h-[200px]\"\n dataSource={props.referees.data}\n loadMore={props.referees.loadMore}\n isLoading={props.referees.isLoading}\n renderItem={(e, index) => {\n return (\n <Flex\n key={index}\n direction={\"column\"}\n gap={3}\n className=\"oui-border-b-2 oui-border-line-6 oui-pb-3\"\n >\n <Flex direction={\"row\"} width={\"100%\"}>\n <MobileCellItem\n title={t(\"affiliate.referralCode\")}\n value={e.referral_code}\n />\n <MobileCellItem\n title={`${t(\n \"affiliate.referees.column.totalCommission\",\n )} (USDC)`}\n value={commifyOptional(e.referral_rebate, {\n fix: 6,\n prefix: \"$\",\n padEnd: true,\n })}\n className=\"oui-min-w-[102px]\"\n />\n <MobileCellItem\n title={t(\"affiliate.referees.column.totalVol\")}\n value={commifyOptional(e.volume, {\n fix: 2,\n prefix: \"$\",\n padEnd: true,\n })}\n align=\"end\"\n />\n </Flex>\n <Flex direction={\"row\"} pt={3} gap={3} width={\"100%\"}>\n <MobileCellItem\n title={t(\"affiliate.referees.column.refereeAddress\")}\n value={e.user_address}\n rule=\"address\"\n />\n <MobileCellItem\n title={t(\"affiliate.referees.column.invitationTime\")}\n value={e.code_binding_time}\n align=\"end\"\n rule=\"date\"\n formatString=\"yyyy-MM-dd\"\n />\n </Flex>\n {/* <Divider /> */}\n </Flex>\n );\n }}\n />\n );\n }\n\n return (\n <AuthGuardDataTable\n bordered\n loading={props.referees.isLoading}\n ignoreLoadingCheck={true}\n columns={columns}\n dataSource={props.referees.data}\n pagination={props.referees.pagination}\n onRow={(record) => {\n return {\n className: \"oui-h-[41px]\",\n };\n }}\n />\n );\n }, [isLG, props.referees]);\n\n return (\n <Flex\n direction={\"column\"}\n width={\"100%\"}\n justify={\"start\"}\n itemAlign={\"start\"}\n >\n {/* <DateFiler\n value={props.referees.dateRange}\n setValue={props.referees.setDateRange}\n /> */}\n {body}\n </Flex>\n );\n};\n\nconst DateFiler: FC<{\n value?: DateRange;\n setValue: any;\n}> = (props) => {\n return (\n <Flex width={\"100%\"} height={49} className=\"oui-border-b oui-border-line-6\">\n <div>\n <DatePicker.range\n size=\"xs\"\n value={props.value}\n onChange={(range) => {\n props.setValue(range);\n }}\n max={90}\n disabled={{\n after: new Date(),\n }}\n />\n </div>\n </Flex>\n );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { DateRange } from \"../../../utils/types\";\nimport { format, subDays } from \"date-fns\";\nimport {\n RefferalAPI,\n useMediaQuery,\n useRefereeInfo,\n useReferralRebateSummary,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { PaginationMeta, usePagination } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-ui\";\nimport { SummaryReturns } from \"./summary.script\";\nimport { USDCIcon } from \"../../../components/usdcIcon\";\nimport { commifyOptional } from \"@kodiak-finance/orderly-utils\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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 { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { useReferralContext } from \"../../../hooks\";\nimport { SummaryFilter } from \"../../../utils/types\";\n\nexport type SummaryReturns = {\n period: string;\n periodTypes: { label: string; value: string }[];\n onPeriodChange: (item: string) => void;\n rebates: number;\n vol?: number;\n code?: string;\n rebateText: string;\n};\n\nexport const useSummaryScript = (): SummaryReturns => {\n const { t } = useTranslation();\n const [period, setPeriod] = useState<SummaryFilter>(\"All\");\n\n const periodTypes: {\n label: SummaryFilter;\n value: SummaryFilter;\n }[] = [\n { label: t(\"common.all\"), value: \"All\" },\n { label: t(\"common.select.1d\"), value: \"1D\" },\n { label: t(\"common.select.7d\"), value: \"7D\" },\n { label: t(\"common.select.30d\"), value: \"30D\" },\n ];\n\n const { referralInfo, userVolume } = useReferralContext();\n\n const rebates = useMemo(() => {\n if (!referralInfo) return 0;\n //\n switch (period) {\n case \"All\":\n return referralInfo.referee_info.total_referee_rebate;\n case \"1D\":\n return referralInfo.referee_info[\"1d_referee_rebate\"];\n case \"7D\":\n return referralInfo.referee_info[\"7d_referee_rebate\"];\n case \"30D\":\n return referralInfo.referee_info[\"30d_referee_rebate\"];\n }\n }, [referralInfo, period]);\n\n const vol = useMemo(() => {\n if (!userVolume) return undefined;\n switch (period) {\n case \"All\":\n return userVolume.all_volume;\n case \"1D\":\n return userVolume[\"1d_volume\"];\n case \"7D\":\n return userVolume[\"7d_volume\"];\n case \"30D\":\n return userVolume[\"30d_volume\"];\n }\n }, [userVolume, period]);\n\n const code = referralInfo?.referee_info?.referer_code;\n const rebate = referralInfo?.referee_info?.referee_rebate_rate;\n\n const rebateText = useMemo(() => {\n if (!!rebate) {\n return (\n new Decimal(rebate)\n .mul(100)\n .toDecimalPlaces(2, Decimal.ROUND_DOWN)\n .toString() + \"%\"\n );\n }\n return \"-\";\n }, [rebate]);\n\n const onPeriodChange = (item: string) => {\n setPeriod(item as SummaryFilter);\n };\n return {\n period,\n periodTypes,\n onPeriodChange,\n rebates,\n vol,\n rebateText,\n code,\n };\n};\n","import { useSummaryScript } from \"./summary.script\";\nimport { Summary } from \"./summary.ui\";\n\nexport const SummaryWidget = () => {\n const state = useSummaryScript();\n return <Summary {...state} />;\n};\n","import { FC } from \"react\";\nimport { Flex, Select, Text } from \"@kodiak-finance/orderly-ui\";\nimport { VolBarChart } from \"@kodiak-finance/orderly-chart\";\nimport { TitleStatisticReturns } from \"./titleStatistic.script\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-hooks\";\nimport { format, subDays } from \"date-fns\";\nimport { useMemo, useState } from \"react\";\nimport { useReferralContext } from \"../../../hooks\";\nimport { BarDayFilter } from \"../../../utils/types\";\nimport { VolChartDataItem } from \"@kodiak-finance/orderly-chart\";\nimport { fillData } from \"../../../utils/chartUtils\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-ui\";\nimport { RebatesItem, RebatesReturns } from \"./rebates.script\";\nimport { commifyOptional } from \"@kodiak-finance/orderly-utils\";\nimport { useMediaQuery } from \"@kodiak-finance/orderly-hooks\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-hooks\";\nimport { compareDate, formatDateTimeToUTC } from \"../../../utils/utils\";\nimport { subDays, toDate } from \"date-fns\";\nimport { usePagination } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-i18n\";\nimport { Flex, Text, cn } from \"@kodiak-finance/orderly-ui\";\nimport { commify } from \"@kodiak-finance/orderly-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 const applyText = useMemo(() => {\n if (!generateCode) {\n return {\n title: t(\"affiliate.process.step1.title\"),\n desc: t(\"affiliate.process.step1.description\"),\n };\n }\n if (generateCode.requireVolume > 0) {\n return {\n title: t(\"affiliate.process.step1.volumeGt0.title\", {\n requireVolume: generateCode.requireVolume,\n }),\n desc: t(\"affiliate.process.step1.volumeGt0.description\", {\n volume: commify(generateCode.completedVolume ?? 0, 2),\n requireVolume: commify(generateCode.requireVolume),\n }),\n };\n }\n // require volume = 0;\n return {\n title: t(\"affiliate.process.step1.volumeEq0.title\"),\n desc: t(\"affiliate.process.step1.volumeEq0.description\"),\n };\n }, [generateCode, t]);\n\n if (typeof props.overwrite === \"function\") {\n return props.overwrite?.(props.state);\n }\n\n return (\n <Flex\n id=\"oui-affiliate-home-becomeAffiliate\"\n direction={\"column\"}\n gap={6}\n p={6}\n itemAlign={\"center\"}\n r={\"2xl\"}\n className=\"oui-bg-base-9\"\n width={\"100%\"}\n >\n <Text>{t(\"affiliate.process.title\")}</Text>\n <Flex className=\"oui-flex oui-flex-col oui-gap-3 lg:oui-w-full lg:oui-flex-row lg:oui-items-stretch\">\n <Item\n icon={<ApplyIcon />}\n title={applyText.title}\n content={applyText.desc}\n />\n <div className=\"oui-shrink lg:oui-flex lg:-oui-rotate-90 lg:oui-flex-row lg:oui-items-center lg:oui-justify-center\">\n <ArrowDownIcon />\n </div>\n <Item\n icon={<ShareIcon />}\n title={t(\"affiliate.process.step2.title\")}\n content={t(\"affiliate.process.step2.description\")}\n />\n <div className=\"oui-shrink lg:oui-flex lg:-oui-rotate-90 lg:oui-flex-row lg:oui-items-center lg:oui-justify-center\">\n <ArrowDownIcon />\n </div>\n <Item\n icon={<EarnIcon />}\n title={t(\"affiliate.process.step3.title\")}\n content={t(\"affiliate.process.step3.description\")}\n />\n </Flex>\n </Flex>\n );\n};\n\nconst Item: FC<{\n icon: ReactNode;\n title: string;\n content: string;\n}> = (props) => {\n return (\n <Flex\n className={cn(\n \"oui-flex oui-flex-row oui-gap-3\",\n \"lg:oui-flex-1 lg:oui-flex-col lg:oui-gap-[6px]\",\n )}\n width={\"100%\"}\n >\n <div className=\"oui-shrink-0\">{props.icon}</div>\n <Flex\n className={cn(\n \"oui-flex oui-flex-col oui-items-start oui-h-full oui-justify-between\",\n // lg\n \"lg:oui-items-center lg:oui-justify-start\",\n )}\n >\n <Text className=\"oui-text-sm md:oui-text-base 2xl:oui-text-lg lg:oui-text-center\">\n {props.title}\n </Text>\n <Text className=\"oui-text-2xs oui-text-base-contrast-36 lg:oui-text-center\">\n {props.content}\n </Text>\n </Flex>\n </Flex>\n );\n};\n\nconst ApplyIcon = () => {\n return (\n <svg\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"lg:oui-w-[64px] lg:oui-h-[64px] 2xl:oui-w-[80px] 2xl:oui-h-[80px]\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M24.941 5.4h-6.682a.6.6 0 0 0-.593.509l-.462 3a.6.6 0 0 0 .593.691h7.606a.6.6 0 0 0 .593-.691l-.462-3a.6.6 0 0 0-.593-.509m-6.682-1.8a2.4 2.4 0 0 0-2.372 2.035l-.462 3a2.4 2.4 0 0 0 2.372 2.765h7.606a2.4 2.4 0 0 0 2.372-2.765l-.462-3A2.4 2.4 0 0 0 24.941 3.6z\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <path\n d=\"M32.721 28.2c.924-1.6 3.233-1.6 4.157 0l7.275 12.6c.924 1.6-.231 3.6-2.079 3.6H27.525c-1.848 0-3.002-2-2.078-3.6z\"\n fill=\"#335FFC\"\n />\n <path\n d=\"M33.492 38.12H31.56c-.252 0-.426-.276-.336-.535l1.92-5.53a.4.4 0 0 1 .132-.185.34.34 0 0 1 .204-.07h3.24c.255 0 .43.284.333.544l-1.118 3.011h2.104c.31 0 .475.4.27.656l-5.158 6.453c-.251.313-.716.041-.619-.362z\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.4 16.8v2.4h2.4v-2.4zM13.2 15a.6.6 0 0 0-.6.6v4.8a.6.6 0 0 0 .6.6H18a.6.6 0 0 0 .6-.6v-4.8a.6.6 0 0 0-.6-.6z\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <path\n d=\"M20.4 16.2a.6.6 0 0 1 .6-.6h2.4a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6H21a.6.6 0 0 1-.6-.6zm0 3a.6.6 0 0 1 .6-.6h9a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6h-9a.6.6 0 0 1-.6-.6zm-7.8 5.4a.6.6 0 0 1 .6-.6H30a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6H13.2a.6.6 0 0 1-.6-.6zm0 3.6a.6.6 0 0 1 .6-.6H30a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6H13.2a.6.6 0 0 1-.6-.6zm0 3.6a.6.6 0 0 1 .6-.6h9a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6h-9a.6.6 0 0 1-.6-.6z\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15.739 6.6H10.2A2.4 2.4 0 0 0 7.8 9v30a2.4 2.4 0 0 0 2.4 2.4h13.84l1.014-1.8H10.2a.6.6 0 0 1-.6-.6V9a.6.6 0 0 1 .6-.6h5.262zm12 1.8H33a.6.6 0 0 1 .6.6v16.47a2.8 2.8 0 0 1 1.8-.205V9A2.4 2.4 0 0 0 33 6.6h-5.538z\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n </svg>\n );\n};\n\nconst ShareIcon = () => {\n return (\n <svg\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"lg:oui-w-[64px] lg:oui-h-[64px] 2xl:oui-w-[80px] 2xl:oui-h-[80px]\"\n >\n <path d=\"M24 33a9 9 0 1 1-18 0 9 9 0 0 1 18 0\" fill=\"#335FFC\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15 32.4a1.8 1.8 0 1 0 0-3.6 1.8 1.8 0 0 0 0 3.6m0 1.8a3.6 3.6 0 1 0 0-7.2 3.6 3.6 0 0 0 0 7.2m-6.578 4.942A4.8 4.8 0 0 1 13.2 34.8h3.6a4.8 4.8 0 0 1 4.778 4.342 9 9 0 0 1-1.778 1.473V39.6a3 3 0 0 0-3-3h-3.6a3 3 0 0 0-3 3v1.015a9 9 0 0 1-1.778-1.473\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.2 12a4.2 4.2 0 1 1-8.4 0 4.2 4.2 0 0 1 8.4 0m1.8 0c0 1.37-.459 2.632-1.231 3.642l2.308 2.308a7.76 7.76 0 0 1 4.023-1.7v-.764A3.602 3.602 0 0 1 24 8.4a3.6 3.6 0 0 1 .9 7.087v.764c1.48.17 2.833.754 3.942 1.633l2.326-2.326a6 6 0 1 1 1.273 1.273l-2.326 2.326a7.76 7.76 0 0 1 1.634 3.943h.764a3.602 3.602 0 0 1 7.087.9 3.6 3.6 0 0 1-7.087.9h-.764a7.76 7.76 0 0 1-1.699 4.023l2.308 2.308a6 6 0 1 1-1.25 1.295l-2.347-2.347a7.8 7.8 0 0 1-3.05 1.433 11 11 0 0 0-.377-1.76 6 6 0 1 0-7.185-7.185q-.855-.261-1.76-.379a7.8 7.8 0 0 1 1.432-3.049l-2.347-2.347A6 6 0 1 1 18 12m7.8 0a1.8 1.8 0 1 1-3.6 0 1.8 1.8 0 0 1 3.6 0M36 25.8a1.8 1.8 0 1 0 0-3.6 1.8 1.8 0 0 0 0 3.6m0-9.6a4.2 4.2 0 1 0 0-8.4 4.2 4.2 0 0 0 0 8.4M40.2 36a4.2 4.2 0 1 1-8.4 0 4.2 4.2 0 0 1 8.4 0\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n </svg>\n );\n};\n\nconst EarnIcon = () => {\n return (\n <svg\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"lg:oui-w-[64px] lg:oui-h-[64px] 2xl:oui-w-[80px] 2xl:oui-h-[80px]\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M24 24a2.4 2.4 0 1 0 0-4.8 2.4 2.4 0 0 0 0 4.8m0 1.8a4.2 4.2 0 1 0 0-8.4 4.2 4.2 0 0 0 0 8.4\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <path d=\"M45 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0\" fill=\"#335FFC\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M35.1 6.6a.9.9 0 1 1 1.8 0v.437A3 3 0 0 1 39 9.9h-1.8a1.2 1.2 0 1 0-1.2 1.2 3 3 0 0 1 .9 5.863v.437a.9.9 0 0 1-1.8 0v-.437A3 3 0 0 1 33 14.1h1.8a1.2 1.2 0 1 0 1.2-1.2 3 3 0 0 1-.9-5.863z\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M40.2 23.7a.9.9 0 0 1 1.8 0v.6q0 .045-.004.086c-.197 9.351-7.525 16.948-16.765 17.573l1.205 1.205a.9.9 0 1 1-1.272 1.272l-2.7-2.7a.9.9 0 0 1 0-1.272l2.7-2.7a.9.9 0 1 1 1.272 1.272l-1.11 1.11c8.325-.674 14.87-7.642 14.874-16.14zM21.564 4.836a.9.9 0 1 1 1.272-1.272l2.7 2.7a.9.9 0 0 1 0 1.272l-2.7 2.7a.9.9 0 1 1-1.272-1.272l1.11-1.11C14.347 8.528 7.8 15.5 7.8 24v.3a.9.9 0 1 1-1.8 0v-.6l.004-.086C6.201 14.263 13.53 6.666 22.77 6.042z\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M24 11.4q.615 0 1.213.058a11 11 0 0 0 .061 1.816Q24.647 13.2 24 13.2c-5.965 0-10.8 4.835-10.8 10.8 0 2.898 1.142 5.53 3 7.47a4.8 4.8 0 0 1 4.8-4.79h6a4.8 4.8 0 0 1 4.8 4.789c1.858-1.94 3-4.572 3-7.47q0-.647-.074-1.274a11 11 0 0 0 1.816.06q.057.6.058 1.214c0 6.959-5.641 12.6-12.6 12.6S11.4 30.959 11.4 24 17.041 11.4 24 11.4m6 21.581v-1.5a3 3 0 0 0-3-3h-6a3 3 0 0 0-3 3v1.5a10.75 10.75 0 0 0 6 1.819c2.22 0 4.284-.67 6-1.819\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n </svg>\n );\n};\n\nconst ArrowDownIcon = () => {\n return (\n <svg\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.5048 4.00806C8.8728 4.00806 9.1708 4.30626 9.1708 4.67406C9.1708 4.99259 9.1708 8.71739 9.1708 9.71072L11.1688 7.73339L12.1055 8.67005L8.98346 11.8127C8.85346 11.9434 8.6788 12.0081 8.50413 12.0081C8.33013 12.0081 8.15612 11.9427 8.02612 11.8127L4.90413 8.67005L5.8408 7.73339L7.83881 9.71072C7.83881 8.71739 7.83881 4.99259 7.83881 4.67406C7.83881 4.30626 8.1368 4.00806 8.5048 4.00806Z\"\n fill=\"#608CFF\"\n />\n </svg>\n );\n};\n","import {\n BuildNode,\n ReferralContextReturns,\n useReferralContext,\n } from \"../../../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 React from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\n\nexport const Title: React.FC = () => {\n const { t } = useTranslation();\n return (\n <div\n id=\"oui-affiliate-home-title\"\n className=\"oui-text-center oui-text-3xl oui-font-bold md:oui-text-3xl lg:oui-text-4xl xl:oui-text-5xl\"\n >\n {t(\"affiliate.page.title\")}\n </div>\n );\n};\n","import React from \"react\";\nimport { Title } from \"./title.ui\";\n\nexport const TitleWidget: React.FC = () => {\n return <Title />;\n};\n","import { FC } from \"react\";\nimport { SubtitleReturns } from \"./subtitle.script\";\nimport { Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-ui\";\nimport { AsTraderWidget } from \"../asATrader\";\nimport { AsAnAffiliateWidget } from \"../asAnAffilate\";\nimport { CardReturns } from \"./card.script\";\n\nexport const Card: FC<CardReturns> = (props) => {\n if (typeof props.overwrite === \"function\") {\n return props.overwrite?.(props.state);\n }\n return (\n <Flex\n id=\"oui-affiliate-home-card\"\n className=\"oui-flex oui-w-full oui-flex-col oui-items-stretch oui-gap-6 xl:oui-flex-row xl:oui-gap-[36px]\"\n >\n <AsAnAffiliateWidget />\n <AsTraderWidget />\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-ui\";\nimport { commifyOptional } from \"@kodiak-finance/orderly-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 return (\n <>\n <Flex direction={\"column\"} itemAlign={\"start\"} gap={2}>\n <Text className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\">\n {t(\"affiliate.commission\")} {<Text intensity={36}>(USDC)</Text>}\n </Text>\n <Flex direction={\"row\"} gap={1}>\n <USDCIcon />\n <Text className=\"oui-text-base md:oui-text-lg lg:oui-text-xl xl:oui-text-2xl\">\n {commifyOptional(totalReferrerRebate, {\n fix: 2,\n fallback: \"0\",\n })}\n </Text>\n </Flex>\n </Flex>\n <Flex\n direction={\"row\"}\n gap={1}\n justify={\"end\"}\n itemAlign={\"center\"}\n className=\"oui-cursor-pointer\"\n onClick={props?.onEnterTraderPage}\n >\n <Text className=\"oui-text-sm md:oui-text-base xl:oui-text-lg\">\n {t(\"affiliate.enter\")}\n </Text>\n <ArrowRightIcon className=\"md:oui-size-[18px] lg:oui-size-[20px] xl:oui-size-[24px]\" />\n </Flex>\n </>\n );\n }\n\n return <EntryCode {...props} />;\n };\n\n return (\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n width={\"100%\"}\n itemAlign={\"end\"}\n >\n {content()}\n </Flex>\n );\n};\n\nconst EntryCode: FC<AsTraderReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Dialog open={props.open} onOpenChange={props.setOpen}>\n <DialogTrigger>\n <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-mt-4 oui-w-full\"\n placeholder={t(\"affiliate.referralCode\")}\n value={props.code}\n onChange={(e) => {\n const _value = e.target.value\n .toUpperCase()\n .replace(/[^A-Z0-9]/g, \"\");\n props.setCode(_value);\n }}\n formatters={[\n inputFormatter.createRegexInputFormatter(\n (value: string | number) => {\n return String(value).replace(/[a-z]/g, (char: string) =>\n char.toUpperCase(),\n );\n },\n ),\n inputFormatter.createRegexInputFormatter(/[^A-Z0-9]/g),\n ]}\n onClean={() => {\n props.setCode(\"\");\n }}\n label={t(\"affiliate.referralCode.label\")}\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-54\",\n }}\n helpText={\n !props.isExist && !props.isLoading && props.code.length > 0\n ? t(\"affiliate.referralCode.notExist\")\n : undefined\n }\n color={\n !props.isExist && !props.isLoading && props.code.length > 0\n ? \"danger\"\n : undefined\n }\n />\n\n <Flex\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 { 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 { useState } from \"react\";\nimport {\n useAccount,\n useCheckReferralCode,\n useMutation,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { TabTypes, useReferralContext } from \"../../../hooks\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { toast, useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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 { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Button, cn, Flex, modal, Text, Tooltip } from \"@kodiak-finance/orderly-ui\";\nimport { commifyOptional } from \"@kodiak-finance/orderly-utils\";\nimport { ArrowRightIcon } from \"../../../components/arrowRightIcon\";\nimport { USDCIcon } from \"../../../components/usdcIcon\";\nimport { AsAnAffiliateReturns } from \"./asAnAffiliate.script\";\n\nexport const AsAnAffiliate: FC<AsAnAffiliateReturns> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex\n id=\"oui-affiliate-home-asAnAffiliate\"\n gradient=\"primary\"\n r={\"2xl\"}\n p={6}\n gap={6}\n direction={\"column\"}\n angle={180}\n width={\"100%\"}\n justify={\"between\"}\n >\n <Flex\n direction={\"row\"}\n gap={3}\n itemAlign={\"start\"}\n width={\"100%\"}\n justify={\"between\"}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"between\"}\n className=\"oui-h-full\"\n >\n <Text className=\"oui-text-lg md:oui-text-xl lg:oui-text-2xl xl:oui-text-3xl\">\n {props.isAffiliate\n ? t(\"common.affiliate\")\n : t(\"affiliate.asAffiliate.title\")}\n </Text>\n <Text\n className={cn(\n \"oui-text-xs oui-text-base-contrast-54 md:oui-text-sm 2xl:oui-text-base\",\n props.isAffiliate && \"oui-hidden\",\n )}\n >\n {t(\"affiliate.asAffiliate.description\")}\n </Text>\n </Flex>\n <div className=\"oui-shrink-0\">\n <Icon />\n </div>\n </Flex>\n <Bottom {...props} />\n </Flex>\n );\n};\n\nconst Icon = () => {\n return (\n <svg\n width=\"72\"\n height=\"72\"\n viewBox=\"0 0 72 72\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"xl:oui-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 {t(\"affiliate.upTo\")}\n </Text>\n <Text className=\"oui-text-2xs oui-text-base-contrast-54 md:oui-text-xs 2xl:oui-text-sm\">\n {t(\"affiliate.commission\")}\n </Text>\n </Flex>\n </>\n );\n };\n\n return (\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n width={\"100%\"}\n itemAlign={\"end\"}\n >\n {content()}\n </Flex>\n );\n};\n","import { RefferalAPI as API, useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { TabTypes, useReferralContext } from \"../../../hooks\";\nimport { MockData } from \"../../../utils/mockData\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { useScreen } from \"@kodiak-finance/orderly-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 React from \"react\";\nimport { useAsAnAffiliateScript } from \"./asAnAffiliate.script\";\nimport { AsAnAffiliate } from \"./asAnAffiliate.ui\";\n\nexport const AsAnAffiliateWidget: React.FC = () => {\n const state = useAsAnAffiliateScript();\n return <AsAnAffiliate {...state} />;\n};\n","import {\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 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 React, { PropsWithChildren } from \"react\";\nimport { Box } from \"@kodiak-finance/orderly-ui\";\nimport { Scaffold, SideBar, SideBarProps } from \"@kodiak-finance/orderly-ui-scaffold\";\n\nexport type AffiliateLayoutProps = {} & SideBarProps;\n\nexport const AffiliateLayout: React.FC<\n PropsWithChildren<AffiliateLayoutProps>\n> = (props) => {\n const { ...rest } = props;\n return (\n <Scaffold leftSidebar={<LeftSidebar {...rest} />}>\n <Box mx={3} my={6}>\n {props.children}\n </Box>\n </Scaffold>\n );\n};\n\nconst LeftSidebar: React.FC<SideBarProps> = (props) => {\n return (\n <Box p={4} m={3} border borderColor={8} r={\"xl\"}>\n <SideBar {...props} />\n </Box>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport type { SideBarProps } from \"@kodiak-finance/orderly-ui-scaffold\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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/provider/context.ts","../src/provider/provider.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/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/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.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/asATrader/asTrader.ui.tsx","../src/components/arrowRightIcon.tsx","../src/pages/home/asATrader/asTrader.script.tsx","../src/pages/home/asATrader/asTrader.widget.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.ui.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.script.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.widget.tsx","../src/pages/home/card/card.script.tsx","../src/pages/home/card/card.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/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":["cn","useTranslation","Button","Flex","Text","jsx","jsxs","TabTypes","data","useMemo","useState","useEffect","useRef","text","Title","toast","format","code","Select","Decimal","subDays","Divider","CopyIcon","useLocalStorage","modal","useMutation","Input","useModal","useMediaQuery","ListView","Statistic","commifyOptional","MobileCellItem","useReferralRebateSummary","Fragment","Subtitle","Dialog","DialogContent","DialogTitle","inputFormatter","TextField","useAccount","useAppContext","Icon","Bottom","useScreen","Summary","CommissionData","Row","useSummaryScript","SummaryWidget","VolBarChart","TitleStatistic","useTitleStatisticScript","TitleStatisticWidget","DatePicker","AuthGuardDataTable","useRefereeRebateSummary","useDaily","toDate","usePagination","item","tab","Box"],"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 \"@kodiak-finance/orderly-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 { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Button,\n cn,\n Flex,\n TabsBase,\n TabsContent,\n TabsList,\n TabsTrigger,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AffiliateIcon } from \"../../../components/affiliateIcon\";\nimport { TraderIcon } from \"../../../components/traderIcon\";\nimport { TabTypes } from \"../../../provider\";\nimport { AffiliatePage } from \"../../affiliate\";\nimport { HomePage } from \"../../home\";\nimport { TraderPage } from \"../../trader\";\nimport { TabReturns } from \"./tab.script\";\n\nexport const Tab: FC<\n TabReturns & {\n classNames?: {\n loadding?: string;\n home?: string;\n dashboard?: string;\n };\n }\n> = (props) => {\n const { t } = useTranslation();\n const extendNode = () => {\n if (props.isAffiliate && !props.isTrader) {\n return (\n <Button\n variant=\"contained\"\n color=\"success\"\n size=\"sm\"\n className=\"oui-px-2 oui-flex oui-gap-1\"\n style={{\n position: \"absolute\",\n top: \"50%\",\n right: \"24px\",\n transform: \"translateY(-50%)\",\n }}\n onClick={(e) => {\n props.anATrader();\n }}\n >\n <TraderIcon />\n <Text>{t(\"affiliate.asTrader.title\")}</Text>\n </Button>\n );\n }\n if (!props.isAffiliate && props.isTrader) {\n return (\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"sm\"\n className=\"oui-px-2 oui-flex oui-gap-1\"\n style={{\n position: \"absolute\",\n top: \"50%\",\n right: \"24px\",\n transform: \"translateY(-50%)\",\n }}\n onClick={(e) => {\n props.anAnAffiliate();\n }}\n >\n <AffiliateIcon />\n <Text>{t(\"affiliate.asAffiliate.title\")}</Text>\n </Button>\n );\n }\n\n return undefined;\n };\n\n if (props.isLoading) {\n return (\n <div className={cn(\"oui-max-w-[960px]\", props.classNames?.loadding)}>\n {props.splashPage?.() || <HomePage />}\n </div>\n );\n }\n\n if ((!props.isAffiliate && !props.isTrader) || props.showHome) {\n return (\n <div className={cn(\"oui-max-w-[960px]\", props?.classNames?.home)}>\n <HomePage />\n </div>\n );\n }\n\n return (\n <TabsBase\n id=\"oui-affiliate-dashboard-tab\"\n value={props.tab}\n onValueChange={(e) => {\n props.setTab(e as TabTypes);\n }}\n className={cn(\"oui-w-full\", props.classNames?.dashboard)}\n >\n <TabsList\n className={cn(\n \"oui-px-6 oui-flex oui-flex-row oui-justify-start oui-h-[44px] oui-relative oui-items-end\",\n \"oui-text-base md:oui-text-lg\",\n \"oui-rounded-xl oui-bg-base-9\",\n \"oui-border oui-border-line-6\",\n props.isAffiliate && props.isTrader && \"oui-justify-center\",\n )}\n >\n {props.isAffiliate && (\n <TabsTrigger\n id=\"oui-affiliate-dashboard-tab-affiliate\"\n value={TabTypes.affiliate}\n >\n <Flex direction={\"row\"} gap={1} mb={2}>\n <AffiliateIcon\n fillOpacity={1}\n fill=\"currentColor\"\n className={\n props.tab === TabTypes.affiliate\n ? \"oui-fill-white/[.98]\"\n : \"oui-fill-white/[.36]\"\n }\n />\n <Text>{t(\"common.affiliate\")}</Text>\n </Flex>\n </TabsTrigger>\n )}\n {props.isTrader && (\n <TabsTrigger\n id=\"oui-affiliate-dashboard-tab-trader\"\n value={TabTypes.trader}\n >\n <Flex direction={\"row\"} gap={1} mb={2}>\n <TraderIcon\n fillOpacity={1}\n fill=\"currentColor\"\n className={\n props.tab === TabTypes.trader\n ? \"oui-fill-white/[.98]\"\n : \"oui-fill-white/[.36]\"\n }\n />\n <Text>{t(\"affiliate.trader\")}</Text>\n </Flex>\n </TabsTrigger>\n )}\n {extendNode()}\n </TabsList>\n {props.isAffiliate && (\n <TabsContent value={TabTypes.affiliate} className=\"oui-mt-4\">\n <AffiliatePage />\n </TabsContent>\n )}\n {props.isTrader && (\n <TabsContent value={TabTypes.trader} className=\"oui-mt-4\">\n <TraderPage />\n </TabsContent>\n )}\n </TabsBase>\n );\n};\n","import { 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 { ReactNode, createContext, useContext } from \"react\";\nimport { RefferalAPI as API } from \"@kodiak-finance/orderly-hooks\";\n\nexport enum TabTypes {\n affiliate = \"affiliate\",\n trader = \"trader\",\n}\n\nexport type UserVolumeType = {\n \"1d_volume\"?: number;\n \"7d_volume\"?: number;\n \"30d_volume\"?: number;\n all_volume?: number;\n};\n\n// export type OverwiteCard = {\n// ref?: BuildNode,\n// refClassName?: string,\n// refIcon?: ReactNode,\n\n// trader?: BuildNode,\n// traderClassName?: string,\n// traderIcon?: ReactNode,\n// }\n\nexport type BuildNode = (state: ReferralContextReturns) => ReactNode;\n\nexport type Overwrite = {\n shortBrokerName?: string;\n brokerName?: string;\n ref?: {\n top?: BuildNode;\n card?: BuildNode;\n step?: BuildNode;\n };\n};\n\nexport type ChartConfig = {\n // affiliate: {\n // bar?: BarStyle,\n // yAxis?: YAxis,\n // xAxis?: XAxis,\n // },\n // trader: {\n // bar?: BarStyle,\n // yAxis?: YAxis,\n // xAxis?: XAxis,\n // }\n affiliate: {\n bar?: any;\n yAxis?: any;\n xAxis?: any;\n };\n trader: {\n bar?: any;\n yAxis?: any;\n xAxis?: any;\n };\n};\n\nexport type ReferralContextProps = {\n //** click become an affiliate, If this method is implemented, the `becomeAnAffiliateUrl` will not work */\n onBecomeAnAffiliate?: () => void;\n //** set become an affiliate url, default is `https://orderly.network/` */\n becomeAnAffiliateUrl?: string;\n //** bind refferal code callback */\n bindReferralCodeState?: (\n success: boolean,\n error: any,\n hide: any,\n queryParams: any,\n ) => void;\n //** click learn affilate, if this method is implemented, the `learnAffilateUrl` will not work */\n onLearnAffiliate?: () => void;\n //** set learn affiliate url, default is `https://orderly.network/` */\n learnAffiliateUrl?: string;\n //** default is `https://orderly.network/` */\n referralLinkUrl: string;\n //** referral index page */\n showReferralPage?: () => void;\n // onEnterTraderPage?: (params?: any) => void,\n // onEnterAffiliatePage?: (params?: any) => void,\n //** tab + tab content */\n showDashboard?: () => void;\n //** col chart config */\n chartConfig?: ChartConfig;\n //** overwrite refferal */\n overwrite?: Overwrite;\n //** build a splash page, if not impletement, will be dispaly referral page */\n splashPage?: () => ReactNode;\n};\n\nexport type ReferralContextReturns = {\n referralInfo?: API.ReferralInfo;\n isAffiliate: boolean;\n isTrader: boolean;\n mutate: any;\n userVolume?: UserVolumeType;\n dailyVolume?: API.DayliVolume[];\n isLoading: boolean;\n showHome: boolean;\n setShowHome: (value: boolean) => void;\n tab: TabTypes;\n setTab: React.Dispatch<React.SetStateAction<TabTypes>>;\n wrongNetwork: boolean;\n disabledConnect: boolean;\n generateCode: API.AutoGenerateCode | undefined;\n} & ReferralContextProps;\n\nexport const ReferralContext = createContext<ReferralContextReturns>(\n {} as ReferralContextReturns,\n);\n\nexport const useReferralContext = () => {\n return useContext(ReferralContext);\n};\n","import {\n FC,\n PropsWithChildren,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { format, subDays } from \"date-fns\";\nimport {\n RefferalAPI as API,\n usePrivateQuery,\n useDaily,\n useAccount,\n useMemoizedFn,\n noCacheConfig,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport {\n ReferralContext,\n ReferralContextProps,\n ReferralContextReturns,\n TabTypes,\n UserVolumeType,\n} from \"./context\";\n\nexport const ReferralProvider: FC<PropsWithChildren<ReferralContextProps>> = (\n props,\n) => {\n const {\n becomeAnAffiliateUrl = \"https://orderly.network/\",\n learnAffiliateUrl = \"https://orderly.network/\",\n referralLinkUrl,\n chartConfig,\n overwrite,\n children,\n splashPage,\n onBecomeAnAffiliate,\n bindReferralCodeState,\n onLearnAffiliate,\n showReferralPage,\n } = props;\n\n const { state } = useAccount();\n\n const {\n data,\n mutate: referralInfoMutate,\n isLoading,\n } = usePrivateQuery<API.ReferralInfo>(\"/v1/referral/info\", {\n revalidateOnFocus: true,\n errorRetryCount: 3,\n ...noCacheConfig,\n });\n\n const { data: generateCode, mutate: generateCodeMutate } =\n usePrivateQuery<API.AutoGenerateCode>(\n \"/v1/referral/auto_referral/progress\",\n {\n revalidateOnFocus: 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\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<UserVolumeType>(() => {\n const volume: UserVolumeType = {};\n if (dailyVolume && dailyVolume.length > 0) {\n const now = format(new Date(), \"yyyy-MM-dd\");\n const index = dailyVolume.findIndex((item) => item.date === now);\n let oneDayVolume = 0;\n if (index !== -1) {\n oneDayVolume = dailyVolume[index].perp_volume;\n }\n volume[\"1d_volume\"] = oneDayVolume;\n }\n\n if (volumeStatistics) {\n volume[\"7d_volume\"] = volumeStatistics.perp_volume_last_7_days;\n volume[\"30d_volume\"] = volumeStatistics.perp_volume_last_30_days;\n volume[\"all_volume\"] = volumeStatistics.perp_volume_ltd;\n }\n return volume;\n }, [dailyVolume, volumeStatistics]);\n\n useEffect(() => {\n if (isAffiliate || isTrader) {\n setShowHome(false);\n }\n }, [isAffiliate, isTrader]);\n\n const memoMutate = useMemoizedFn(() => {\n volumeStatisticsMutate();\n dailyVolumeMutate();\n referralInfoMutate();\n generateCodeMutate();\n });\n\n useEffect(() => {\n const searchParams = new URLSearchParams(window.location.search);\n const refCode = searchParams.get(\"ref\");\n if (refCode) {\n localStorage.setItem(\"referral_code\", refCode);\n }\n }, []);\n\n const [tab, setTab] = useState<TabTypes>(() => {\n const savedTab = localStorage.getItem(\"orderly_affiliate_dashboard_tab\");\n return (savedTab as TabTypes) || TabTypes.affiliate;\n });\n\n useEffect(() => {\n localStorage.setItem(\"orderly_affiliate_dashboard_tab\", tab);\n }, [tab]);\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const lastStete = useRef<AccountStatusEnum>(AccountStatusEnum.NotConnected);\n\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (lastStete.current !== state.status) {\n lastStete.current = state.status;\n timerRef.current = setTimeout(() => {\n memoMutate();\n }, 1000);\n }\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n };\n }, [memoMutate, state.status]);\n\n const memoizedValue = useMemo<ReferralContextReturns>(() => {\n return {\n generateCode,\n showHome,\n referralInfo: data,\n isAffiliate: isAffiliate,\n isTrader: isTrader,\n tab,\n becomeAnAffiliateUrl,\n learnAffiliateUrl,\n referralLinkUrl,\n userVolume,\n dailyVolume,\n chartConfig,\n overwrite,\n isLoading,\n wrongNetwork,\n disabledConnect,\n setShowHome,\n setTab: setTab,\n mutate: memoMutate,\n onBecomeAnAffiliate,\n bindReferralCodeState,\n onLearnAffiliate,\n showReferralPage,\n splashPage,\n };\n }, [\n becomeAnAffiliateUrl,\n chartConfig,\n dailyVolume,\n data,\n disabledConnect,\n generateCode,\n isAffiliate,\n isLoading,\n isTrader,\n learnAffiliateUrl,\n overwrite,\n referralLinkUrl,\n showHome,\n tab,\n userVolume,\n wrongNetwork,\n onBecomeAnAffiliate,\n bindReferralCodeState,\n onLearnAffiliate,\n showReferralPage,\n splashPage,\n memoMutate,\n ]);\n\n return (\n <ReferralContext.Provider value={memoizedValue}>\n {children}\n </ReferralContext.Provider>\n );\n};\n","import { Flex, cn } from \"@kodiak-finance/orderly-ui\";\nimport { SummaryWidget } from \"./summary\";\nimport { ReferralLinkWidget } from \"./referralLink\";\nimport { TitleStatisticWidget } from \"./titleStatistic\";\nimport { ReferralCodesWidget } from \"./referralCodes\";\nimport { CommissionAndRefereesWidget } from \"./commissionAndReferees\";\nimport { useMediaQuery } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-ui\";\nimport { SummaryReturns } from \"./summary.script\";\nimport { USDCIcon } from \"../../../components/usdcIcon\";\nimport { commifyOptional } from \"@kodiak-finance/orderly-utils\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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 { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useReferralContext } from \"../../../provider\";\nimport { SummaryFilter } from \"../../../utils/types\";\n\nexport type SummaryReturns = {\n period: string;\n periodTypes: { label: string; value: string }[];\n onPeriodChange: (item: string) => void;\n commission: number;\n referralVol: number;\n referees: number;\n refereesTades: number;\n};\n\nexport const useSummaryScript = (): SummaryReturns => {\n const { t } = useTranslation();\n const [period, setPeriod] = useState<SummaryFilter>(\"All\");\n\n const periodTypes: { label: string; value: SummaryFilter }[] = [\n { label: t(\"common.all\"), value: \"All\" },\n { label: t(\"common.select.1d\"), value: \"1D\" },\n { label: t(\"common.select.7d\"), value: \"7D\" },\n { label: t(\"common.select.30d\"), value: \"30D\" },\n ];\n\n const { referralInfo } = useReferralContext();\n\n const commission = useMemo(() => {\n if (!referralInfo || !referralInfo.referrer_info) {\n return 0;\n }\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_referrer_rebate;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_referrer_rebate\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_referrer_rebate\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_referrer_rebate\"];\n }\n }, [referralInfo, period]);\n\n const referralVol = useMemo(() => {\n if (!referralInfo || !referralInfo.referrer_info) {\n return 0;\n }\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_referee_volume;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_referee_volume\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_referee_volume\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_referee_volume\"];\n }\n }, [referralInfo, period]);\n\n const referees = useMemo(() => {\n if (!referralInfo || !referralInfo.referrer_info) {\n return 0;\n }\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_invites;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_invites\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_invites\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_invites\"];\n }\n }, [referralInfo, period]);\n\n const refereesTades = useMemo(() => {\n if (!referralInfo || !referralInfo.referrer_info) {\n return 0;\n }\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_traded;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_traded\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_traded\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_traded\"];\n }\n }, [referralInfo, period]);\n\n const onPeriodChange = (item: string) => {\n setPeriod(item as SummaryFilter);\n };\n\n return {\n period,\n periodTypes,\n onPeriodChange,\n commission,\n referralVol,\n referees,\n refereesTades,\n };\n};\n","import { useSummaryScript } from \"./summary.script\";\nimport { Summary } from \"./summary.ui\";\n\nexport const SummaryWidget = () => {\n const state = useSummaryScript();\n return <Summary {...state} />;\n};\n","import { FC } from \"react\";\nimport {\n CopyIcon,\n Divider,\n Flex,\n modal,\n Text,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { ReferralLinkReturns } from \"./referralLink.script\";\nimport { AutoHideText } from \"../../../components/autoHideText\";\nimport { Trans, useTranslation } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-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 { RefferalAPI, useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { toast } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { useReferralContext } from \"../../../provider\";\nimport { generateReferralLink } from \"../../../utils/utils\";\n\nexport type ReferralLinkReturns = {\n onCopy?: (value: string) => void;\n refLink?: string;\n refCode?: string;\n earn?: string;\n share?: string;\n brokerName?: string;\n};\n\nexport const useReferralLinkScript = (): ReferralLinkReturns => {\n const { t } = useTranslation();\n\n const onCopy = (value: string) => {\n toast.success(t(\"common.copy.copied\"));\n };\n\n const { referralInfo, referralLinkUrl, overwrite } = useReferralContext();\n const [pinCodes, setPinCodes] = useLocalStorage<string[]>(\n \"orderly_referral_codes\",\n [] as string[],\n );\n\n const codes = useMemo((): RefferalAPI.ReferralCode[] => {\n if (!referralInfo?.referrer_info?.referral_codes)\n return [] as RefferalAPI.ReferralCode[];\n const referralCodes = [...referralInfo?.referrer_info?.referral_codes];\n\n const pinedItems: RefferalAPI.ReferralCode[] = [];\n\n for (let i = 0; i < pinCodes.length; i++) {\n const code = pinCodes[i];\n\n const index = referralCodes.findIndex((item) => item.code === code);\n if (index !== -1) {\n pinedItems.push({ ...referralCodes[index] });\n referralCodes.splice(index, 1);\n }\n }\n\n return [...pinedItems, ...referralCodes];\n }, [referralInfo?.referrer_info?.referral_codes, pinCodes]);\n\n const firstCode = useMemo(() => {\n if (codes.length === 0) {\n return undefined;\n }\n\n return codes[0];\n }, [codes]);\n\n const code = useMemo(() => {\n return firstCode?.code;\n }, [firstCode]);\n\n const referralLink = useMemo(() => {\n if (!firstCode) return \"\";\n\n return generateReferralLink(referralLinkUrl, firstCode.code);\n }, [firstCode]);\n\n const earn = useMemo(() => {\n const value = new Decimal(firstCode?.referrer_rebate_rate || \"0\")\n .mul(100)\n .toDecimalPlaces(0, Decimal.ROUND_DOWN)\n .toString();\n return `${value}%`;\n }, [firstCode?.referrer_rebate_rate]);\n\n const share = useMemo(() => {\n const value = new Decimal(firstCode?.referee_rebate_rate || \"0\")\n .mul(100)\n .toDecimalPlaces(0, Decimal.ROUND_DOWN)\n .toString();\n return `${value}%`;\n }, [firstCode?.referee_rebate_rate]);\n\n return {\n onCopy,\n refLink: referralLink,\n refCode: code,\n share,\n earn,\n brokerName: overwrite?.brokerName ?? overwrite?.shortBrokerName,\n };\n};\n","import { format, toDate } from \"date-fns\";\nimport { i18n } from \"@kodiak-finance/orderly-i18n\";\nimport { toast } from \"@kodiak-finance/orderly-ui\";\n\n// import { toZonedTime } from \"date-fns-tz\";\n// const { toZonedTime } = require(\"date-fns-tz\");\n\nexport function generateReferralLink(referralLinkUrl: string, code: string) {\n return `${referralLinkUrl || window?.location?.origin}?ref=${code}`;\n}\n\nexport async function copyText(content: string) {\n try {\n await navigator.clipboard.writeText(content);\n toast.success(i18n.t(\"common.copy.copied\"));\n } catch (error) {\n toast.success(i18n.t(\"common.copy.failed\"));\n }\n}\n\nexport function parseTime(time?: number | string): Date | null {\n if (!time) {\n return null;\n }\n const timestamp = typeof time === \"number\" ? time : Date.parse(time);\n\n if (!isNaN(timestamp)) {\n return new Date(timestamp);\n }\n\n return null;\n}\n\n//** will be return YYYY-MM-ddThh:mm:ssZ */\nexport function formatDateTimeToUTC(input?: number | string): string {\n if (input === undefined) {\n return \"\";\n }\n const date = toDate(input);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"yyyy-MM-dd HH:mm:ss 'UTC'\");\n}\n\n//** will return yyyy-MM-dd */\nexport function formatYMDTime(time?: number | string): string | undefined {\n if (time === undefined) {\n return undefined;\n }\n const date = toDate(time);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"yyyy-MM-dd\");\n}\n\n//** will return hh:mm */\nexport function formatHMTime(time?: number | string): string | undefined {\n if (time === undefined) {\n return undefined;\n }\n const date = toDate(time);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"hh:mm\");\n}\n\n//** will return MM-dd */\nexport function formatMdTime(time?: number | string): string | undefined {\n if (time === undefined) {\n return undefined;\n }\n const date = toDate(time);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"MM-dd\");\n}\n\n//** compare two date, yyyy-mm-dd */\nexport function compareDate(d1?: Date, d2?: Date) {\n const isEqual =\n d1 &&\n d2 &&\n d1.toISOString().substring(0, 10) === d2.toISOString().substring(0, 10);\n\n return isEqual;\n}\n\nexport function generateData(\n itemCount: number,\n data: any[] | null | undefined,\n timeKey: string,\n valueKey: string,\n): [string, number][] {\n const result: [string, number][] = [];\n\n for (let i = 0; i < itemCount; i++) {\n const currentDate = new Date();\n currentDate.setDate(currentDate.getDate() - i - 1);\n const currentDateStr = currentDate.toISOString().substring(0, 10);\n\n const matchedData = data?.find((item) => {\n const itemDate = parseTime(item[timeKey]);\n if (!itemDate) {\n return false;\n }\n return itemDate.toISOString().substring(0, 10) === currentDateStr;\n });\n\n if (matchedData) {\n result.push([currentDateStr, matchedData[valueKey]]);\n } else {\n result.push([currentDateStr, 0]);\n }\n }\n\n return result.reverse();\n}\n\nfunction toUTCDate(date: Date): Date {\n return new Date(date.toUTCString());\n}\n","import { useReferralLinkScript } from \"./referralLink.script\";\nimport { ReferralLink } from \"./referralLink.ui\";\n\nexport const ReferralLinkWidget = () => {\n const state = useReferralLinkScript();\n return <ReferralLink {...state} />;\n};\n","import { FC } from \"react\";\nimport { VolBarChart } from \"@kodiak-finance/orderly-chart\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { EMPTY_LIST } from \"@kodiak-finance/orderly-types\";\nimport { Flex, Select, Text } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { TitleStatisticReturns } from \"./titleStatistic.script\";\n\nexport const TitleStatistic: FC<TitleStatisticReturns> = (props) => {\n return (\n <Flex\n id=\"oui-affiliate-affiliate-titleStatistic\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9\"\n >\n <Title {...props} />\n <Flex className=\"oui-h-[170px] 2xl:oui-h-[196px] oui-w-full oui-flex oui-flex-row oui-items-stretch\">\n <VolBarChart\n data={props.dataSource || EMPTY_LIST}\n colors={{ fill: \"rgba(0, 180, 158, 1)\" }}\n className=\"oui-w-full oui-flex-1\"\n tooltip={{\n rm: Decimal.ROUND_DOWN,\n dp: props.volType === \"Commission\" ? 6 : 2,\n }}\n />\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<TitleStatisticReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">{t(\"affiliate.statistics\")}</Text>\n <Flex direction={\"row\"} gap={2} className={\"oui-min-w-14\"}>\n <Select.options\n size={\"xs\"}\n value={props.period}\n onValueChange={props.onPeriodChange}\n options={props.periodTypes}\n />\n <Select.options\n size={\"xs\"}\n value={props.volType}\n onValueChange={props.onVolTypeChange}\n options={props.volTypes}\n />\n </Flex>\n </Flex>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { fillData } from \"../../../utils/chartUtils\";\nimport { RefferalAPI, useReferralRebateSummary } from \"@kodiak-finance/orderly-hooks\";\nimport { format, subDays } from \"date-fns\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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 { format, subDays } from \"date-fns\";\nimport type { VolChartDataItem } from \"@kodiak-finance/orderly-chart\";\n\nexport function fillData(\n days: number,\n origin?: VolChartDataItem[],\n): VolChartDataItem[] {\n const now = Date();\n const result = new Array(days)\n .fill(0)\n .map<VolChartDataItem>((_, index) => {\n return {\n date: format(subDays(now, index + 1), \"yyyy-MM-dd\"),\n volume: 0,\n opacity: 0,\n };\n })\n .reverse();\n\n const dataObject = origin?.reduce<{ [key: string]: VolChartDataItem }>(\n (acc, curr) => {\n acc[curr.date] = curr;\n return acc;\n },\n {},\n );\n\n for (let index = 0; index < result.length; index++) {\n const element = result[index];\n const originData = dataObject?.[element.date];\n if (originData) {\n result[index] = { ...originData, opacity: originData.volume > 0 ? 1 : 0 };\n }\n }\n\n return result;\n}\n","import { 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 \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Button,\n DataTable,\n Divider,\n Flex,\n ListView,\n Statistic,\n Text,\n cn,\n Column,\n CopyIcon,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-hooks\";\nimport { modal } from \"@kodiak-finance/orderly-ui\";\nimport { useReferralContext } from \"../../../provider\";\nimport { copyText, generateReferralLink } 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(generateReferralLink(referralLinkUrl, code));\n };\n const copyCode = (code: string) => {\n copyText(code);\n };\n const editRate = (code: ReferralCodeType) => {\n modal.show(EditReferralRate, { code: { ...code }, mutate });\n };\n\n const editCode = (code: ReferralCodeType) => {\n modal.show(EditCodeModal, {\n code: { ...code },\n successCallback: () => {\n mutate();\n },\n });\n };\n\n const [pinCodes, setPinCodes] = useLocalStorage<string[]>(\n \"orderly_referral_codes\",\n [] as string[],\n );\n const setPinCode = (code: string, del?: boolean) => {\n if (del) {\n const index = pinCodes.findIndex((item: string) => item === code);\n if (index !== -1) {\n pinCodes.splice(index, 1);\n }\n } else {\n pinCodes.splice(0, 0, code);\n }\n\n if (pinCodes.length > 6) {\n pinCodes.splice(pinCodes.length - 1, 1);\n }\n\n setPinCodes([...pinCodes]);\n };\n\n const codes = useMemo((): ReferralCodeType[] | undefined => {\n if (!referralInfo?.referrer_info?.referral_codes) {\n 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 \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n inputFormatter,\n modal,\n SimpleDialog,\n TextField,\n Text,\n useModal,\n Flex,\n cn,\n toast,\n} from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-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 { RefferalAPI, useMediaQuery } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n DatePicker,\n Divider,\n Flex,\n ListView,\n Statistic,\n TabPanel,\n Column,\n Tabs,\n Text,\n cn,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport { commifyOptional } from \"@kodiak-finance/orderly-utils\";\nimport { DateRange } from \"../../../utils/types\";\nimport { formatYMDTime } from \"../../../utils/utils\";\nimport { CommissionAndRefereesReturns } from \"./commissionAndReferees.script\";\n\nexport const CommissionAndReferees: FC<CommissionAndRefereesReturns> = (\n props,\n) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n id=\"oui-affiliate-affiliate-commissionAndReferees\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9 oui-tabular-nums\"\n >\n <Tabs defaultValue=\"account\" className=\"oui-w-full\" variant=\"contained\">\n <TabPanel value=\"account\" title={t(\"affiliate.commission\")}>\n <CommissionList {...props} />\n </TabPanel>\n <TabPanel value=\"password\" title={t(\"affiliate.myReferees\")}>\n <RefereesList {...props} />\n </TabPanel>\n </Tabs>\n </Flex>\n );\n};\n\nconst MobileCellItem: FC<{\n title: string;\n value: string | ReactNode;\n align?: \"start\" | \"end\" | undefined;\n className?: string;\n rule?: \"address\" | \"date\";\n formatString?: string;\n prefix?: string;\n}> = (props) => {\n const { title, value, align, className, rule, formatString, prefix } = props;\n return (\n <Statistic\n className={cn(\"oui-flex-1\", className)}\n label={\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">{title}</Text>\n }\n align={align}\n children={\n <Text.formatted\n rule={rule || \"\"}\n // @ts-ignore\n formatString={formatString}\n prefix={prefix}\n className=\"oui-text-base-contrast-80 oui-text-sm oui-mt-[6px]\"\n >\n {value}\n </Text.formatted>\n }\n />\n );\n};\n\nconst CommissionList: FC<CommissionAndRefereesReturns> = (props) => {\n const { t } = useTranslation();\n const isLG = useMediaQuery(\"(max-width: 767px)\");\n\n const columns = useMemo(() => {\n const cols: Column[] = [\n {\n title: `${t(\"affiliate.commission\")} (USDC)`,\n dataIndex: \"referral_rebate\",\n render: (value) => (\n <Text>\n {commifyOptional(value, {\n fix: 6,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n })}\n </Text>\n ),\n width: 216,\n },\n {\n title: `${t(\"affiliate.referralVol\")} (USDC)`,\n dataIndex: \"volume\",\n render: (value) => (\n <Text>\n {commifyOptional(value, {\n fix: 2,\n fallback: \"0\",\n padEnd: true,\n prefix: \"$\",\n })}\n </Text>\n ),\n width: 216,\n },\n {\n title: t(\"affiliate.commission.column.activeUsers\"),\n dataIndex: \"daily_traded_referral\",\n render: (value) => <Text>{value}</Text>,\n width: 216,\n },\n {\n title: t(\"common.date\"),\n dataIndex: \"date\",\n render: (value) => formatYMDTime(value),\n width: 216,\n },\n ];\n\n return cols;\n }, [t]);\n\n const body = useMemo(() => {\n if (isLG) {\n return (\n <ListView<\n RefferalAPI.ReferralRebateSummary,\n RefferalAPI.ReferralRebateSummary[]\n >\n className=\"oui-max-h-[200px] oui-w-full\"\n dataSource={props.commission.data}\n loadMore={props.commission.loadMore}\n isLoading={props.commission.isLoading}\n renderItem={(e) => {\n return (\n <div>\n <Flex direction={\"row\"} width={\"100%\"}>\n <MobileCellItem\n title={t(\"affiliate.commission\")}\n value={commifyOptional(e.referral_rebate, {\n fix: 6,\n fallback: \"0\",\n padEnd: true,\n })}\n prefix=\"$\"\n />\n <MobileCellItem\n title={t(\"affiliate.referralVol\")}\n value={commifyOptional(e.volume, {\n fix: 2,\n fallback: \"0\",\n padEnd: true,\n })}\n prefix=\"$\"\n />\n <MobileCellItem\n title={t(\"affiliate.commission.column.activeUsers\")}\n value={e.daily_traded_referral}\n />\n <MobileCellItem\n title={t(\"common.date\")}\n value={e.date}\n rule=\"date\"\n formatString=\"yyyy-MM-dd\"\n align=\"end\"\n />\n </Flex>\n <Divider className=\"oui-mt-3 oui-w-full\" />\n </div>\n );\n }}\n />\n );\n }\n\n return (\n <AuthGuardDataTable\n bordered\n columns={columns}\n loading={props.commission.isLoading}\n ignoreLoadingCheck={true}\n dataSource={props.commission.data}\n pagination={props.commission.pagination}\n onRow={(record) => {\n return {\n className: \"oui-h-[41px]\",\n };\n }}\n />\n );\n }, [isLG, props.commission]);\n\n return (\n <Flex\n direction={\"column\"}\n width={\"100%\"}\n justify={\"start\"}\n itemAlign={\"start\"}\n >\n <DateFiler\n value={props.commission.dateRange}\n setValue={props.commission.setDateRange}\n />\n {body}\n </Flex>\n );\n};\n\nconst RefereesList: FC<CommissionAndRefereesReturns> = (props) => {\n const { t } = useTranslation();\n\n const isLG = useMediaQuery(\"(max-width: 767px)\");\n\n const columns = useMemo(() => {\n const cols: Column[] = [\n {\n title: t(\"affiliate.referees.column.refereeAddress\"),\n dataIndex: \"user_address\",\n render: (value) => (\n <Text.formatted rule={\"address\"}>{value}</Text.formatted>\n ),\n className: \"oui-w-1/5\",\n },\n {\n title: t(\"affiliate.referralCode\"),\n dataIndex: \"referral_code\",\n // render: (value) => value,\n className: \"oui-w-1/5\",\n },\n {\n title: `${t(\"affiliate.referees.column.totalCommission\")} (USDC)`,\n dataIndex: \"referral_rebate\",\n render: (value) => (\n <Text>\n {commifyOptional(value, { fix: 6, prefix: \"$\", padEnd: true })}\n </Text>\n ),\n className: \"oui-w-1/5\",\n },\n {\n title: `${t(\"affiliate.referees.column.totalVol\")} (USDC)`,\n dataIndex: \"volume\",\n render: (value) => (\n <Text>\n {commifyOptional(value, { fix: 2, prefix: \"$\", padEnd: true })}\n </Text>\n ),\n className: \"oui-w-1/5\",\n },\n {\n title: t(\"affiliate.referees.column.invitationTime\"),\n dataIndex: \"code_binding_time\",\n render: (value) => (\n <Text.formatted\n rule={\"date\"}\n formatString=\"yyyy-MM-dd\"\n children={value}\n />\n ),\n className: \"oui-w-1/5\",\n },\n ];\n\n return cols;\n }, [t]);\n\n const body = useMemo(() => {\n if (isLG) {\n return (\n <ListView<RefferalAPI.RefereeInfoItem, RefferalAPI.RefereeInfoItem[]>\n className=\"oui-w-full oui-max-h-[200px]\"\n dataSource={props.referees.data}\n loadMore={props.referees.loadMore}\n isLoading={props.referees.isLoading}\n renderItem={(e, index) => {\n return (\n <Flex\n key={index}\n direction={\"column\"}\n gap={3}\n className=\"oui-border-b-2 oui-border-line-6 oui-pb-3\"\n >\n <Flex direction={\"row\"} width={\"100%\"}>\n <MobileCellItem\n title={t(\"affiliate.referralCode\")}\n value={e.referral_code}\n />\n <MobileCellItem\n title={`${t(\n \"affiliate.referees.column.totalCommission\",\n )} (USDC)`}\n value={commifyOptional(e.referral_rebate, {\n fix: 6,\n prefix: \"$\",\n padEnd: true,\n })}\n className=\"oui-min-w-[102px]\"\n />\n <MobileCellItem\n title={t(\"affiliate.referees.column.totalVol\")}\n value={commifyOptional(e.volume, {\n fix: 2,\n prefix: \"$\",\n padEnd: true,\n })}\n align=\"end\"\n />\n </Flex>\n <Flex direction={\"row\"} pt={3} gap={3} width={\"100%\"}>\n <MobileCellItem\n title={t(\"affiliate.referees.column.refereeAddress\")}\n value={e.user_address}\n rule=\"address\"\n />\n <MobileCellItem\n title={t(\"affiliate.referees.column.invitationTime\")}\n value={e.code_binding_time}\n align=\"end\"\n rule=\"date\"\n formatString=\"yyyy-MM-dd\"\n />\n </Flex>\n {/* <Divider /> */}\n </Flex>\n );\n }}\n />\n );\n }\n\n return (\n <AuthGuardDataTable\n bordered\n loading={props.referees.isLoading}\n ignoreLoadingCheck={true}\n columns={columns}\n dataSource={props.referees.data}\n pagination={props.referees.pagination}\n onRow={(record) => {\n return {\n className: \"oui-h-[41px]\",\n };\n }}\n />\n );\n }, [isLG, props.referees]);\n\n return (\n <Flex\n direction={\"column\"}\n width={\"100%\"}\n justify={\"start\"}\n itemAlign={\"start\"}\n >\n {/* <DateFiler\n value={props.referees.dateRange}\n setValue={props.referees.setDateRange}\n /> */}\n {body}\n </Flex>\n );\n};\n\nconst DateFiler: FC<{\n value?: DateRange;\n setValue: any;\n}> = (props) => {\n return (\n <Flex width={\"100%\"} height={49} className=\"oui-border-b oui-border-line-6\">\n <div>\n <DatePicker.range\n size=\"xs\"\n value={props.value}\n onChange={(range) => {\n props.setValue(range);\n }}\n max={90}\n disabled={{\n after: new Date(),\n }}\n />\n </div>\n </Flex>\n );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { DateRange } from \"../../../utils/types\";\nimport { format, subDays } from \"date-fns\";\nimport {\n RefferalAPI,\n useMediaQuery,\n useRefereeInfo,\n useReferralRebateSummary,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { PaginationMeta, usePagination } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-i18n\";\nimport { Flex, Text, cn } from \"@kodiak-finance/orderly-ui\";\nimport { commify } from \"@kodiak-finance/orderly-utils\";\nimport { useReferralContext } from \"../../../provider\";\nimport { BecomeAffiliateReturns } from \"./becomeAffiliate.script\";\n\nexport const BecomeAffiliate: FC<BecomeAffiliateReturns> = (props) => {\n const { t } = useTranslation();\n\n const { generateCode } = useReferralContext();\n\n const applyText = useMemo(() => {\n if (!generateCode) {\n return {\n title: t(\"affiliate.process.step1.title\"),\n desc: t(\"affiliate.process.step1.description\"),\n };\n }\n if (generateCode.requireVolume > 0) {\n return {\n title: t(\"affiliate.process.step1.volumeGt0.title\", {\n requireVolume: generateCode.requireVolume,\n }),\n desc: t(\"affiliate.process.step1.volumeGt0.description\", {\n volume: commify(generateCode.completedVolume ?? 0, 2),\n requireVolume: commify(generateCode.requireVolume),\n }),\n };\n }\n // require volume = 0;\n return {\n title: t(\"affiliate.process.step1.volumeEq0.title\"),\n desc: t(\"affiliate.process.step1.volumeEq0.description\"),\n };\n }, [generateCode, t]);\n\n if (typeof props.overwrite === \"function\") {\n return props.overwrite?.(props.state);\n }\n\n return (\n <Flex\n id=\"oui-affiliate-home-becomeAffiliate\"\n direction={\"column\"}\n gap={6}\n p={6}\n itemAlign={\"center\"}\n r={\"2xl\"}\n className=\"oui-bg-base-9\"\n width={\"100%\"}\n >\n <Text>{t(\"affiliate.process.title\")}</Text>\n <Flex className=\"oui-flex oui-flex-col oui-gap-3 lg:oui-w-full lg:oui-flex-row lg:oui-items-stretch\">\n <Item\n icon={<ApplyIcon />}\n title={applyText.title}\n content={applyText.desc}\n />\n <div className=\"oui-shrink lg:oui-flex lg:-oui-rotate-90 lg:oui-flex-row lg:oui-items-center lg:oui-justify-center\">\n <ArrowDownIcon />\n </div>\n <Item\n icon={<ShareIcon />}\n title={t(\"affiliate.process.step2.title\")}\n content={t(\"affiliate.process.step2.description\")}\n />\n <div className=\"oui-shrink lg:oui-flex lg:-oui-rotate-90 lg:oui-flex-row lg:oui-items-center lg:oui-justify-center\">\n <ArrowDownIcon />\n </div>\n <Item\n icon={<EarnIcon />}\n title={t(\"affiliate.process.step3.title\")}\n content={t(\"affiliate.process.step3.description\")}\n />\n </Flex>\n </Flex>\n );\n};\n\nconst Item: FC<{\n icon: ReactNode;\n title: string;\n content: string;\n}> = (props) => {\n return (\n <Flex\n className={cn(\n \"oui-flex oui-flex-row oui-gap-3\",\n \"lg:oui-flex-1 lg:oui-flex-col lg:oui-gap-[6px]\",\n )}\n width={\"100%\"}\n >\n <div className=\"oui-shrink-0\">{props.icon}</div>\n <Flex\n className={cn(\n \"oui-flex oui-flex-col oui-items-start oui-h-full oui-justify-between\",\n // lg\n \"lg:oui-items-center lg:oui-justify-start\",\n )}\n >\n <Text className=\"oui-text-sm md:oui-text-base 2xl:oui-text-lg lg:oui-text-center\">\n {props.title}\n </Text>\n <Text className=\"oui-text-2xs oui-text-base-contrast-36 lg:oui-text-center\">\n {props.content}\n </Text>\n </Flex>\n </Flex>\n );\n};\n\nconst ApplyIcon = () => {\n return (\n <svg\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"lg:oui-w-[64px] lg:oui-h-[64px] 2xl:oui-w-[80px] 2xl:oui-h-[80px]\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M24.941 5.4h-6.682a.6.6 0 0 0-.593.509l-.462 3a.6.6 0 0 0 .593.691h7.606a.6.6 0 0 0 .593-.691l-.462-3a.6.6 0 0 0-.593-.509m-6.682-1.8a2.4 2.4 0 0 0-2.372 2.035l-.462 3a2.4 2.4 0 0 0 2.372 2.765h7.606a2.4 2.4 0 0 0 2.372-2.765l-.462-3A2.4 2.4 0 0 0 24.941 3.6z\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <path\n d=\"M32.721 28.2c.924-1.6 3.233-1.6 4.157 0l7.275 12.6c.924 1.6-.231 3.6-2.079 3.6H27.525c-1.848 0-3.002-2-2.078-3.6z\"\n fill=\"#335FFC\"\n />\n <path\n d=\"M33.492 38.12H31.56c-.252 0-.426-.276-.336-.535l1.92-5.53a.4.4 0 0 1 .132-.185.34.34 0 0 1 .204-.07h3.24c.255 0 .43.284.333.544l-1.118 3.011h2.104c.31 0 .475.4.27.656l-5.158 6.453c-.251.313-.716.041-.619-.362z\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.4 16.8v2.4h2.4v-2.4zM13.2 15a.6.6 0 0 0-.6.6v4.8a.6.6 0 0 0 .6.6H18a.6.6 0 0 0 .6-.6v-4.8a.6.6 0 0 0-.6-.6z\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <path\n d=\"M20.4 16.2a.6.6 0 0 1 .6-.6h2.4a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6H21a.6.6 0 0 1-.6-.6zm0 3a.6.6 0 0 1 .6-.6h9a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6h-9a.6.6 0 0 1-.6-.6zm-7.8 5.4a.6.6 0 0 1 .6-.6H30a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6H13.2a.6.6 0 0 1-.6-.6zm0 3.6a.6.6 0 0 1 .6-.6H30a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6H13.2a.6.6 0 0 1-.6-.6zm0 3.6a.6.6 0 0 1 .6-.6h9a.6.6 0 0 1 .6.6v.6a.6.6 0 0 1-.6.6h-9a.6.6 0 0 1-.6-.6z\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15.739 6.6H10.2A2.4 2.4 0 0 0 7.8 9v30a2.4 2.4 0 0 0 2.4 2.4h13.84l1.014-1.8H10.2a.6.6 0 0 1-.6-.6V9a.6.6 0 0 1 .6-.6h5.262zm12 1.8H33a.6.6 0 0 1 .6.6v16.47a2.8 2.8 0 0 1 1.8-.205V9A2.4 2.4 0 0 0 33 6.6h-5.538z\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n </svg>\n );\n};\n\nconst ShareIcon = () => {\n return (\n <svg\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"lg:oui-w-[64px] lg:oui-h-[64px] 2xl:oui-w-[80px] 2xl:oui-h-[80px]\"\n >\n <path d=\"M24 33a9 9 0 1 1-18 0 9 9 0 0 1 18 0\" fill=\"#335FFC\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15 32.4a1.8 1.8 0 1 0 0-3.6 1.8 1.8 0 0 0 0 3.6m0 1.8a3.6 3.6 0 1 0 0-7.2 3.6 3.6 0 0 0 0 7.2m-6.578 4.942A4.8 4.8 0 0 1 13.2 34.8h3.6a4.8 4.8 0 0 1 4.778 4.342 9 9 0 0 1-1.778 1.473V39.6a3 3 0 0 0-3-3h-3.6a3 3 0 0 0-3 3v1.015a9 9 0 0 1-1.778-1.473\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.2 12a4.2 4.2 0 1 1-8.4 0 4.2 4.2 0 0 1 8.4 0m1.8 0c0 1.37-.459 2.632-1.231 3.642l2.308 2.308a7.76 7.76 0 0 1 4.023-1.7v-.764A3.602 3.602 0 0 1 24 8.4a3.6 3.6 0 0 1 .9 7.087v.764c1.48.17 2.833.754 3.942 1.633l2.326-2.326a6 6 0 1 1 1.273 1.273l-2.326 2.326a7.76 7.76 0 0 1 1.634 3.943h.764a3.602 3.602 0 0 1 7.087.9 3.6 3.6 0 0 1-7.087.9h-.764a7.76 7.76 0 0 1-1.699 4.023l2.308 2.308a6 6 0 1 1-1.25 1.295l-2.347-2.347a7.8 7.8 0 0 1-3.05 1.433 11 11 0 0 0-.377-1.76 6 6 0 1 0-7.185-7.185q-.855-.261-1.76-.379a7.8 7.8 0 0 1 1.432-3.049l-2.347-2.347A6 6 0 1 1 18 12m7.8 0a1.8 1.8 0 1 1-3.6 0 1.8 1.8 0 0 1 3.6 0M36 25.8a1.8 1.8 0 1 0 0-3.6 1.8 1.8 0 0 0 0 3.6m0-9.6a4.2 4.2 0 1 0 0-8.4 4.2 4.2 0 0 0 0 8.4M40.2 36a4.2 4.2 0 1 1-8.4 0 4.2 4.2 0 0 1 8.4 0\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n </svg>\n );\n};\n\nconst EarnIcon = () => {\n return (\n <svg\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"lg:oui-w-[64px] lg:oui-h-[64px] 2xl:oui-w-[80px] 2xl:oui-h-[80px]\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M24 24a2.4 2.4 0 1 0 0-4.8 2.4 2.4 0 0 0 0 4.8m0 1.8a4.2 4.2 0 1 0 0-8.4 4.2 4.2 0 0 0 0 8.4\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <path d=\"M45 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0\" fill=\"#335FFC\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M35.1 6.6a.9.9 0 1 1 1.8 0v.437A3 3 0 0 1 39 9.9h-1.8a1.2 1.2 0 1 0-1.2 1.2 3 3 0 0 1 .9 5.863v.437a.9.9 0 0 1-1.8 0v-.437A3 3 0 0 1 33 14.1h1.8a1.2 1.2 0 1 0 1.2-1.2 3 3 0 0 1-.9-5.863z\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M40.2 23.7a.9.9 0 0 1 1.8 0v.6q0 .045-.004.086c-.197 9.351-7.525 16.948-16.765 17.573l1.205 1.205a.9.9 0 1 1-1.272 1.272l-2.7-2.7a.9.9 0 0 1 0-1.272l2.7-2.7a.9.9 0 1 1 1.272 1.272l-1.11 1.11c8.325-.674 14.87-7.642 14.874-16.14zM21.564 4.836a.9.9 0 1 1 1.272-1.272l2.7 2.7a.9.9 0 0 1 0 1.272l-2.7 2.7a.9.9 0 1 1-1.272-1.272l1.11-1.11C14.347 8.528 7.8 15.5 7.8 24v.3a.9.9 0 1 1-1.8 0v-.6l.004-.086C6.201 14.263 13.53 6.666 22.77 6.042z\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M24 11.4q.615 0 1.213.058a11 11 0 0 0 .061 1.816Q24.647 13.2 24 13.2c-5.965 0-10.8 4.835-10.8 10.8 0 2.898 1.142 5.53 3 7.47a4.8 4.8 0 0 1 4.8-4.79h6a4.8 4.8 0 0 1 4.8 4.789c1.858-1.94 3-4.572 3-7.47q0-.647-.074-1.274a11 11 0 0 0 1.816.06q.057.6.058 1.214c0 6.959-5.641 12.6-12.6 12.6S11.4 30.959 11.4 24 17.041 11.4 24 11.4m6 21.581v-1.5a3 3 0 0 0-3-3h-6a3 3 0 0 0-3 3v1.5a10.75 10.75 0 0 0 6 1.819c2.22 0 4.284-.67 6-1.819\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n />\n </svg>\n );\n};\n\nconst ArrowDownIcon = () => {\n return (\n <svg\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.5048 4.00806C8.8728 4.00806 9.1708 4.30626 9.1708 4.67406C9.1708 4.99259 9.1708 8.71739 9.1708 9.71072L11.1688 7.73339L12.1055 8.67005L8.98346 11.8127C8.85346 11.9434 8.6788 12.0081 8.50413 12.0081C8.33013 12.0081 8.15612 11.9427 8.02612 11.8127L4.90413 8.67005L5.8408 7.73339L7.83881 9.71072C7.83881 8.71739 7.83881 4.99259 7.83881 4.67406C7.83881 4.30626 8.1368 4.00806 8.5048 4.00806Z\"\n fill=\"#608CFF\"\n />\n </svg>\n );\n};\n","import {\n BuildNode,\n ReferralContextReturns,\n useReferralContext,\n} from \"../../../provider\";\n\nexport type BecomeAffiliateReturns = {\n state: ReferralContextReturns;\n overwrite?: BuildNode;\n};\n\nexport const useBecomeAffiliateScript = (): BecomeAffiliateReturns => {\n const state = useReferralContext();\n\n return {\n overwrite: state.overwrite?.ref?.step,\n state,\n };\n};\n","import { useBecomeAffiliateScript } from \"./becomeAffiliate.script\";\nimport { BecomeAffiliate } from \"./becomeAffiliate.ui\";\n\nexport const BecomeAffiliateWidget = () => {\n const state = useBecomeAffiliateScript();\n return <BecomeAffiliate {...state} />;\n};\n","import React from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\n\nexport const Title: React.FC = () => {\n const { t } = useTranslation();\n return (\n <div\n id=\"oui-affiliate-home-title\"\n className=\"oui-text-center oui-text-3xl oui-font-bold md:oui-text-3xl lg:oui-text-4xl xl:oui-text-5xl\"\n >\n {t(\"affiliate.page.title\")}\n </div>\n );\n};\n","import React from \"react\";\nimport { Title } from \"./title.ui\";\n\nexport const TitleWidget: React.FC = () => {\n return <Title />;\n};\n","import { FC } from \"react\";\nimport { SubtitleReturns } from \"./subtitle.script\";\nimport { Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\n\nexport const Subtitle: FC<SubtitleReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex\n id=\"oui-affiliate-home-subtitle\"\n direction={\"column\"}\n className=\"oui-text-sm md:oui-text-base xl:oui-text-lg oui-text-base-contrast-80 oui-text-center\"\n gap={3}\n >\n <Text>{t(\"affiliate.page.subTitle\")}</Text>\n <Flex\n direction={\"row\"}\n gap={1}\n className=\"oui-text-primary-light oui-fill-primary-light hover:oui-text-primary-darken oui-cursor-pointer oui-text-2xs md:oui-text-xs xl:oui-text-sm\"\n onClick={(e) => {\n if (props.onLearnAffiliate) {\n props.onLearnAffiliate?.();\n } else if (props.learnAffiliateUrl) {\n window.open(props.learnAffiliateUrl, \"_blank\");\n }\n }}\n >\n <Text children={t(\"affiliate.page.learnMore\")} />\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M4.008 7.995c0-.368.298-.666.666-.666H9.71L7.733 5.331l.937-.936 3.143 3.122c.13.13.195.304.195.479a.67.67 0 0 1-.195.478L8.67 11.596l-.937-.937 1.978-1.998H4.674a.666.666 0 0 1-.666-.666\" />\n </svg>\n </Flex>\n </Flex>\n );\n};\n","import { ReactNode } from \"react\";\nimport { RefferalAPI } from \"@kodiak-finance/orderly-hooks\";\nimport { BuildNode, useReferralContext } from \"../../../provider\";\n\nexport type SubtitleReturns = {\n onLearnAffiliate?: () => void;\n learnAffiliateUrl?: string;\n};\n\nexport const useSubtitleScript = (): SubtitleReturns => {\n const state = useReferralContext();\n\n const { onLearnAffiliate, learnAffiliateUrl } = state;\n\n return {\n onLearnAffiliate,\n learnAffiliateUrl,\n };\n};\n","import { useSubtitleScript } from \"./subtitle.script\";\nimport { Subtitle } from \"./subtitle.ui\";\n\nexport const SubtitleWidget = () => {\n const state = useSubtitleScript();\n return <Subtitle {...state} />;\n};\n","import { FC } from \"react\";\nimport { TopReturns } from \"./top.script\";\nimport { TitleWidget } from \"../title\";\nimport { SubtitleWidget } from \"../subtitle\";\nimport { Flex } from \"@kodiak-finance/orderly-ui\";\n\nexport const Top: FC<TopReturns> = (props) => {\n if (props.overwriteTop !== undefined) {\n return props.overwriteTop?.(props.state);\n }\n return (\n <Flex id=\"oui-affiliate-home-top\" direction=\"column\" gap={6}>\n <TitleWidget />\n <SubtitleWidget />\n </Flex>\n );\n};\n","import {\n BuildNode,\n ReferralContextReturns,\n useReferralContext,\n} from \"../../../provider\";\n\nexport type TopReturns = {\n state: ReferralContextReturns;\n overwriteTop?: BuildNode;\n};\n\nexport const useTopScript = (): TopReturns => {\n const state = useReferralContext();\n\n return {\n overwriteTop: state.overwrite?.ref?.top,\n state,\n };\n};\n","import { useTopScript } from \"./top.script\";\nimport { Top } from \"./top.ui\";\n\nexport const TopWidget = () => {\n const state = useTopScript();\n return (\n <Top {...state}/>\n );\n};\n","import { FC } from \"react\";\nimport { Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { AsTraderWidget } from \"../asATrader\";\nimport { AsAnAffiliateWidget } from \"../asAnAffilate\";\nimport { CardReturns } from \"./card.script\";\n\nexport const Card: FC<CardReturns> = (props) => {\n if (typeof props.overwrite === \"function\") {\n return props.overwrite?.(props.state);\n }\n return (\n <Flex\n id=\"oui-affiliate-home-card\"\n className=\"oui-flex oui-w-full oui-flex-col oui-items-stretch oui-gap-6 xl:oui-flex-row xl:oui-gap-[36px]\"\n >\n <AsAnAffiliateWidget />\n <AsTraderWidget />\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport {\n Button,\n cn,\n Dialog,\n DialogBody,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n Divider,\n Flex,\n inputFormatter,\n Text,\n TextField,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuard } from \"@kodiak-finance/orderly-ui-connector\";\nimport { commifyOptional } from \"@kodiak-finance/orderly-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 oui-text-base-contrast-54 md:oui-text-sm 2xl:oui-text-base\",\n props.isTrader && \"oui-hidden\",\n )}\n >\n {t(\"affiliate.asTrader.description\")}\n </Text>\n </Flex>\n <div className=\"oui-shrink-0\">\n <Icon />\n </div>\n </Flex>\n <Bottom {...props} />\n </Flex>\n );\n};\n\nconst Icon = () => {\n return (\n <svg\n width=\"72\"\n height=\"72\"\n viewBox=\"0 0 90 90\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"xl:oui-size-[90px] \"\n >\n <path\n d=\"M44.996 7.324c-20.71 0-37.43 16.79-37.5 37.5-.07 20.682 16.806 37.575 37.5 37.617 20.694.04 37.537-17.082 37.5-37.617-.037-20.71-16.79-37.5-37.5-37.5m0 7.5c16.569 0 30 13.433 30 30 0 8.438-3.514 16.043-9.12 21.495-2.762-5.973-8.694-10.245-15.49-10.245h-10.78c-6.791 0-12.706 4.22-15.47 10.197-5.606-5.453-9.14-13.01-9.14-21.447 0-16.567 13.431-30 30-30m0 7.5c-8.284 0-15 6.717-15 15s6.716 15 15 15 15-6.716 15-15-6.716-15-15-15\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n <path\n d=\"M90 71.25C90 81.605 81.605 90 71.25 90S52.5 81.605 52.5 71.25 60.895 52.5 71.25 52.5 90 60.895 90 71.25\"\n fill=\"#005A4F\"\n />\n <path\n d=\"M80.62 75.007c0-.24-.08-.49-.263-.675l-3.487-3.456-1.318 1.318 1.845 1.875H63.745a.938.938 0 0 0 0 1.875h13.652l-1.845 1.875 1.318 1.318 3.487-3.456a.95.95 0 0 0 .263-.674m-.937-7.5a.94.94 0 0 0-.938-.938H65.093l1.846-1.875-1.319-1.318-3.486 3.456a.966.966 0 0 0 0 1.349l3.486 3.456 1.319-1.318-1.846-1.875h13.652c.518 0 .938-.42.938-.937\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n </svg>\n );\n};\n\nconst Bottom: FC<AsTraderReturns> = (props) => {\n const { t } = useTranslation();\n\n const content = () => {\n if (props.isTrader && !props.wrongNetwork) {\n const totalReferrerRebate =\n props.referralInfo?.referee_info?.total_referee_rebate;\n return (\n <>\n <Flex direction={\"column\"} itemAlign={\"start\"} gap={2}>\n <Text className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\">\n {t(\"affiliate.commission\")} {<Text intensity={36}>(USDC)</Text>}\n </Text>\n <Flex direction={\"row\"} gap={1}>\n <USDCIcon />\n <Text className=\"oui-text-base md:oui-text-lg lg:oui-text-xl xl:oui-text-2xl\">\n {commifyOptional(totalReferrerRebate, {\n fix: 2,\n fallback: \"0\",\n })}\n </Text>\n </Flex>\n </Flex>\n <Flex\n direction={\"row\"}\n gap={1}\n justify={\"end\"}\n itemAlign={\"center\"}\n className=\"oui-cursor-pointer\"\n onClick={props?.onEnterTraderPage}\n >\n <Text className=\"oui-text-sm md:oui-text-base xl:oui-text-lg\">\n {t(\"affiliate.enter\")}\n </Text>\n <ArrowRightIcon className=\"md:oui-size-[18px] lg:oui-size-[20px] xl:oui-size-[24px]\" />\n </Flex>\n </>\n );\n }\n\n return <EntryCode {...props} />;\n };\n\n return (\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n width={\"100%\"}\n itemAlign={\"end\"}\n >\n {content()}\n </Flex>\n );\n};\n\nconst EntryCode: FC<AsTraderReturns> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Dialog open={props.open} onOpenChange={props.setOpen}>\n <DialogTrigger>\n <Button variant=\"contained\" color=\"light\">\n {t(\"affiliate.asTrader.button\")}\n </Button>\n </DialogTrigger>\n <DialogContent className=\"oui-w-[320px] oui-font-semibold\">\n <DialogHeader>\n <DialogTitle>{t(\"affiliate.referralCode.dialog.title\")}</DialogTitle>\n </DialogHeader>\n <Divider />\n <DialogBody>\n <Text size=\"sm\" intensity={54}>\n {t(\"affiliate.referralCode.dialog.description\")}\n </Text>\n\n <TextField\n className=\"oui-mt-4 oui-w-full\"\n placeholder={t(\"affiliate.referralCode\")}\n value={props.code}\n onChange={(e) => {\n const _value = e.target.value\n .toUpperCase()\n .replace(/[^A-Z0-9]/g, \"\");\n props.setCode(_value);\n }}\n formatters={[\n inputFormatter.createRegexInputFormatter(\n (value: string | number) => {\n return String(value).replace(/[a-z]/g, (char: string) =>\n char.toUpperCase(),\n );\n },\n ),\n inputFormatter.createRegexInputFormatter(/[^A-Z0-9]/g),\n ]}\n onClean={() => {\n props.setCode(\"\");\n }}\n label={t(\"affiliate.referralCode.label\")}\n classNames={{\n label: \"oui-text-2xs oui-text-base-contrast-54\",\n }}\n helpText={\n !props.isExist && !props.isLoading && props.code.length > 0\n ? t(\"affiliate.referralCode.notExist\")\n : undefined\n }\n color={\n !props.isExist && !props.isLoading && props.code.length > 0\n ? \"danger\"\n : undefined\n }\n />\n\n <Flex direction={\"column\"} gapY={3} mt={6}>\n {props.warningMessage && (\n <Text size=\"2xs\" className=\"oui-text-warning-darken\">\n {props.warningMessage}\n </Text>\n )}\n <AuthGuard buttonProps={{ size: \"md\", fullWidth: true }}>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"md\"\n className=\"oui-px-[40px]\"\n fullWidth\n disabled={props.code.length < 4 || !props.isExist}\n onClick={(e) => {\n e.stopPropagation();\n props.onClickConfirm();\n }}\n >\n {t(\"common.confirm\")}\n </Button>\n </AuthGuard>\n </Flex>\n </DialogBody>\n </DialogContent>\n </Dialog>\n );\n};\n","import { 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 { useMemo, useState } from \"react\";\nimport {\n useAccount,\n useCheckReferralCode,\n useMutation,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { toast, useScreen } from \"@kodiak-finance/orderly-ui\";\nimport {\n AuthStatusEnum,\n useAuthStatus,\n} from \"@kodiak-finance/orderly-ui-connector\";\nimport { TabTypes, useReferralContext } from \"../../../provider\";\n\nexport const useAsTraderScript = () => {\n const { t } = useTranslation();\n\n const {\n isTrader,\n referralInfo,\n setShowHome,\n bindReferralCodeState,\n setTab,\n mutate,\n } = useReferralContext();\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const { state } = useAccount();\n\n const onEnterTraderPage = () => {\n setTab(TabTypes.trader);\n setShowHome(false);\n };\n\n const [code, setCode] = useState(\"\");\n const [open, setOpen] = useState(false);\n\n const {\n isExist,\n error: checkCodeError,\n isLoading,\n } = useCheckReferralCode(code);\n\n const hide = () => {\n setOpen(false);\n };\n\n const [bindCode, { error, isMutating }] = useMutation(\n \"/v1/referral/bind\",\n \"POST\",\n );\n\n const onClickConfirm = async () => {\n try {\n await bindCode({ referral_code: code });\n toast.success(t(\"affiliate.referralCode.bound\"));\n mutate();\n if (bindReferralCodeState) {\n bindReferralCodeState(true, null, hide, { tab: 1 });\n } else {\n hide();\n }\n } catch (e: any) {\n let errorText = `${e}`;\n if (\"message\" in e) {\n errorText = e.message;\n }\n\n if (\"referral code not exist\" === errorText) {\n errorText = t(\"affiliate.referralCode.notExist\");\n }\n\n if (bindReferralCodeState) {\n toast.error(errorText);\n bindReferralCodeState(false, e, hide, {});\n } else {\n toast.error(errorText);\n }\n }\n };\n\n const { isMobile } = useScreen();\n\n const authStatus = useAuthStatus();\n\n const warningMessage = useMemo(() => {\n const message: { [key in AuthStatusEnum]?: string } = {\n [AuthStatusEnum.ConnectWallet]: t(\"affiliate.connectWallet.tooltip\"),\n [AuthStatusEnum.CreateAccount]: t(\"affiliate.createAccount.tooltip\"),\n [AuthStatusEnum.WrongNetwork]: t(\"connector.wrongNetwork.tooltip\"),\n };\n return message[authStatus];\n }, [authStatus]);\n\n return {\n isTrader,\n isLoading,\n referralInfo,\n onEnterTraderPage,\n code,\n setCode,\n open,\n setOpen,\n onClickConfirm,\n isExist,\n wrongNetwork,\n isMobile,\n warningMessage,\n };\n};\n\nexport type AsTraderReturns = ReturnType<typeof useAsTraderScript>;\n","import { useAsTraderScript } from \"./asTrader.script\";\nimport { AsTrader } from \"./asTrader.ui\";\n\nexport const AsTraderWidget = () => {\n const state = useAsTraderScript();\n return <AsTrader {...state} />;\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Button,\n cn,\n Flex,\n modal,\n Text,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { commifyOptional } from \"@kodiak-finance/orderly-utils\";\nimport { ArrowRightIcon } from \"../../../components/arrowRightIcon\";\nimport { USDCIcon } from \"../../../components/usdcIcon\";\nimport { AsAnAffiliateReturns } from \"./asAnAffiliate.script\";\n\nexport const AsAnAffiliate: FC<AsAnAffiliateReturns> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex\n id=\"oui-affiliate-home-asAnAffiliate\"\n gradient=\"primary\"\n r={\"2xl\"}\n p={6}\n gap={6}\n direction={\"column\"}\n angle={180}\n width={\"100%\"}\n justify={\"between\"}\n >\n <Flex\n direction={\"row\"}\n gap={3}\n itemAlign={\"start\"}\n width={\"100%\"}\n justify={\"between\"}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"between\"}\n className=\"oui-h-full\"\n >\n <Text className=\"oui-text-lg md:oui-text-xl lg:oui-text-2xl xl:oui-text-3xl\">\n {props.isAffiliate\n ? t(\"common.affiliate\")\n : t(\"affiliate.asAffiliate.title\")}\n </Text>\n <Text\n className={cn(\n \"oui-text-xs oui-text-base-contrast-54 md:oui-text-sm 2xl:oui-text-base\",\n props.isAffiliate && \"oui-hidden\",\n )}\n >\n {t(\"affiliate.asAffiliate.description\")}\n </Text>\n </Flex>\n <div className=\"oui-shrink-0\">\n <Icon />\n </div>\n </Flex>\n <Bottom {...props} />\n </Flex>\n );\n};\n\nconst Icon = () => {\n return (\n <svg\n width=\"72\"\n height=\"72\"\n viewBox=\"0 0 72 72\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"xl:oui-size-[90px]\"\n >\n <path\n d=\"M35.997 5.86c-16.569 0-29.944 13.43-30 30-.056 16.545 13.445 30.06 30 30.093s30.03-13.665 30-30.093c-.03-16.57-13.432-30-30-30m0 6c13.255 0 24 10.746 24 24 0 6.75-2.812 12.834-7.297 17.196-2.209-4.78-6.955-8.196-12.39-8.196h-8.626c-5.432 0-10.164 3.375-12.375 8.157-4.485-4.362-7.312-10.407-7.312-17.157 0-13.254 10.745-24 24-24m0 6c-6.628 0-12 5.373-12 12s5.372 12 12 12c6.627 0 12-5.373 12-12s-5.373-12-12-12\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n <path\n d=\"M72 57c0 8.284-6.716 15-15 15s-15-6.716-15-15 6.716-15 15-15 15 6.716 15 15\"\n fill=\"#1828C3\"\n />\n <path\n d=\"M53.624 51.45a4.125 4.125 0 0 0-4.125 4.125c0 2.388 1.36 4.641 3.61 6.703a21 21 0 0 0 2.414 1.875c.287.194.556.37.797.516.147.089.243.154.304.187a.79.79 0 0 0 .75 0c.061-.033.158-.098.305-.187.24-.147.51-.322.797-.516a21 21 0 0 0 2.414-1.875c2.25-2.062 3.61-4.315 3.61-6.703a4.125 4.125 0 0 0-4.126-4.125c-1.294 0-2.557.705-3.351 1.734-.775-1.047-2.034-1.734-3.399-1.734\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n </svg>\n );\n};\n\nconst Bottom: FC<AsAnAffiliateReturns> = (props) => {\n const { t } = useTranslation();\n\n const content = () => {\n if (props.isAffiliate && !props.wrongNetwork) {\n const totalReferrerRebate =\n props.referralInfo?.referrer_info?.total_referrer_rebate;\n return (\n <>\n <Flex direction={\"column\"} itemAlign={\"start\"} gap={2}>\n <Text className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\">\n {t(\"affiliate.commission\")} {<Text intensity={36}>(USDC)</Text>}\n </Text>\n <Flex direction={\"row\"} gap={1}>\n <USDCIcon />\n <Text className=\"oui-text-base md:oui-text-lg lg:oui-text-xl xl:oui-text-2xl\">\n {commifyOptional(totalReferrerRebate, {\n fix: 2,\n fallback: \"0\",\n })}\n </Text>\n </Flex>\n </Flex>\n\n <Flex\n direction={\"row\"}\n gap={1}\n justify={\"end\"}\n itemAlign={\"center\"}\n className=\"oui-cursor-pointer\"\n onClick={props.onEnterAffiliatePage}\n >\n <Text className=\"oui-text-sm md:oui-text-base xl:oui-text-lg\">\n {t(\"affiliate.enter\")}\n </Text>\n <ArrowRightIcon className=\"md:oui-size-[18px] lg:oui-size-[20px] xl:oui-size-[24px]\" />\n </Flex>\n </>\n );\n }\n\n return (\n <>\n <Button\n variant=\"contained\"\n color=\"light\"\n onClick={props.becomeAnAffiliate}\n >\n {t(\"affiliate.asAffiliate.button\")}\n </Button>\n <Flex\n direction={\"column\"}\n justify={\"between\"}\n className=\"oui-h-full\"\n itemAlign={\"end\"}\n >\n <Text className=\"oui-text-base md:oui-text-lg lg:oui-text-xl 2xl:oui-text-2xl\">\n {t(\"affiliate.upTo\")}\n </Text>\n <Text className=\"oui-text-2xs oui-text-base-contrast-54 md:oui-text-xs 2xl:oui-text-sm\">\n {t(\"affiliate.commission\")}\n </Text>\n </Flex>\n </>\n );\n };\n\n return (\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n width={\"100%\"}\n itemAlign={\"end\"}\n >\n {content()}\n </Flex>\n );\n};\n","import { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { TabTypes, useReferralContext } from \"../../../provider\";\n\nexport type AsAnAffiliateReturns = ReturnType<typeof useAsAnAffiliateScript>;\n\nexport const useAsAnAffiliateScript = () => {\n const {\n isAffiliate,\n isLoading,\n referralInfo,\n becomeAnAffiliateUrl,\n setShowHome,\n setTab,\n } = useReferralContext();\n\n const { wrongNetwork } = useAppContext();\n\n const becomeAnAffiliate = () => {\n window.open(becomeAnAffiliateUrl, \"_blank\");\n };\n\n const onEnterAffiliatePage = () => {\n setTab(TabTypes.affiliate);\n setShowHome(false);\n };\n\n const { isMobile } = useScreen();\n\n return {\n isAffiliate,\n isLoading,\n referralInfo,\n onEnterAffiliatePage,\n becomeAnAffiliate,\n wrongNetwork,\n isMobile,\n };\n};\n","import React from \"react\";\nimport { useAsAnAffiliateScript } from \"./asAnAffiliate.script\";\nimport { AsAnAffiliate } from \"./asAnAffiliate.ui\";\n\nexport const AsAnAffiliateWidget: React.FC = () => {\n const state = useAsAnAffiliateScript();\n return <AsAnAffiliate {...state} />;\n};\n","import {\n BuildNode,\n ReferralContextReturns,\n useReferralContext,\n} from \"../../../provider\";\n\nexport type CardReturns = {\n state: ReferralContextReturns;\n overwrite?: BuildNode;\n};\n\nexport const useCardScript = (): CardReturns => {\n const state = useReferralContext();\n\n return {\n overwrite: state.overwrite?.ref?.card,\n state,\n };\n};\n","import { useCardScript } from \"./card.script\";\nimport { Card } from \"./card.ui\";\n\nexport const CardWidget = () => {\n const state = useCardScript();\n return <Card {...state} />;\n};\n","import { Flex, Box, cn } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-ui\";\nimport { SummaryReturns } from \"./summary.script\";\nimport { USDCIcon } from \"../../../components/usdcIcon\";\nimport { commifyOptional } from \"@kodiak-finance/orderly-utils\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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 { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { useReferralContext } from \"../../../provider\";\nimport { SummaryFilter } from \"../../../utils/types\";\n\nexport type SummaryReturns = {\n period: string;\n periodTypes: { label: string; value: string }[];\n onPeriodChange: (item: string) => void;\n rebates: number;\n vol?: number;\n code?: string;\n rebateText: string;\n};\n\nexport const useSummaryScript = (): SummaryReturns => {\n const { t } = useTranslation();\n const [period, setPeriod] = useState<SummaryFilter>(\"All\");\n\n const periodTypes: {\n label: string;\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 \"@kodiak-finance/orderly-ui\";\nimport { VolBarChart } from \"@kodiak-finance/orderly-chart\";\nimport { TitleStatisticReturns } from \"./titleStatistic.script\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nexport const TitleStatistic: FC<TitleStatisticReturns> = (props) => {\n return (\n <Flex\n id=\"oui-affiliate-trader-titleStatistic\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9 xl:oui-flex-1\"\n >\n <Title {...props} />\n <Flex className=\"oui-min-h-[170px] oui-h-full oui-w-full oui-flex oui-flex-row oui-items-stretch\">\n <VolBarChart\n data={props.dataSource}\n colors={{ fill: \"rgba(0, 180, 158, 1)\" }}\n className=\"oui-w-full oui-flex-1\"\n tooltip={{\n rm: Decimal.ROUND_DOWN,\n dp: props.volType === \"volume\" ? 2 : 6,\n }}\n />\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<TitleStatisticReturns> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">{t(\"affiliate.statistics\")}</Text>\n <Flex direction={\"row\"} gap={2} className={\"oui-min-w-14\"}>\n <Select.options\n size={\"xs\"}\n value={props.period}\n onValueChange={props.onPeriodChange}\n options={props.periodTypes}\n />\n <Select.options\n size={\"xs\"}\n value={props.volType}\n onValueChange={props.onVolTypeChange}\n options={props.volTypes}\n />\n </Flex>\n </Flex>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { format, subDays } from \"date-fns\";\nimport { VolChartDataItem } from \"@kodiak-finance/orderly-chart\";\nimport { useRefereeRebateSummary } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useReferralContext } from \"../../../provider\";\nimport { fillData } from \"../../../utils/chartUtils\";\nimport { BarDayFilter } from \"../../../utils/types\";\n\nexport type TitleStatisticReturns = {\n period: string;\n periodTypes: { label: string; value: string }[];\n onPeriodChange: (item: string) => void;\n volType: string;\n volTypes: { label: string; value: string }[];\n onVolTypeChange: (item: string) => void;\n dataSource: VolChartDataItem[];\n};\n\nexport const useTitleStatisticScript = (): TitleStatisticReturns => {\n const { t } = useTranslation();\n const [period, setPeriod] = useState<BarDayFilter>(\"7\");\n\n const periodTypes = [\n { label: t(\"common.select.7d\"), value: \"7\" },\n { label: t(\"common.select.30d\"), value: \"30\" },\n { label: t(\"common.select.90d\"), value: \"90\" },\n ];\n\n const onPeriodChange = (item: string) => {\n setPeriod(item as BarDayFilter);\n };\n\n const [volType, setVolType] = useState(\"rebate\");\n const volTypes = [\n { label: t(\"affiliate.trader.rebate\"), value: \"rebate\" },\n { label: t(\"common.volume\"), value: \"volume\" },\n ];\n\n const onVolTypeChange = (item: string) => {\n setVolType(item);\n };\n\n const dateRange = useMemo((): {\n startDate?: Date;\n endDate?: Date;\n } => {\n if (period === \"7\") {\n return {\n startDate: subDays(new Date(), 7),\n endDate: subDays(new Date(), 1),\n };\n } else if (period === \"30\") {\n return {\n startDate: subDays(new Date(), 30),\n endDate: subDays(new Date(), 1),\n };\n } else if (period === \"90\") {\n return {\n startDate: subDays(new Date(), 90),\n endDate: subDays(new Date(), 1),\n };\n } else {\n return {\n startDate: subDays(new Date(), 7),\n endDate: subDays(new Date(), 1),\n };\n }\n }, [period]);\n\n const { data: distributionData, mutate } = useRefereeRebateSummary(dateRange);\n const { dailyVolume, chartConfig } = useReferralContext();\n\n const dataSource = useMemo(() => {\n if (volType === \"rebate\") {\n const newData = distributionData || [];\n return newData\n .map((e) => ({\n date: e.date,\n volume: e.referee_rebate,\n }))\n .reverse();\n } else if (volType === \"volume\") {\n return (\n dailyVolume\n ?.filter((e) => {\n return (\n e.date > format(subDays(Date(), Number(period) + 1), \"yyyy-MM-dd\")\n );\n })\n .map((e) => ({\n date: e.date,\n volume: e.perp_volume,\n })) || []\n );\n } else {\n return [];\n }\n }, [distributionData, dailyVolume, volType]);\n\n return {\n period,\n periodTypes,\n onPeriodChange,\n volType,\n volTypes,\n onVolTypeChange,\n dataSource: fillData(Number(period), dataSource),\n };\n};\n","import { useTitleStatisticScript } from \"./titleStatistic.script\";\nimport { TitleStatistic } from \"./titleStatistic.ui\";\n\nexport const TitleStatisticWidget = () => {\n const state = useTitleStatisticScript();\n return <TitleStatistic {...state} />;\n};\n","import { FC } from \"react\";\nimport {\n DatePicker,\n Divider,\n Flex,\n ListView,\n Statistic,\n Column,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\nimport { RebatesItem, RebatesReturns } from \"./rebates.script\";\nimport { commifyOptional } from \"@kodiak-finance/orderly-utils\";\nimport { useMediaQuery } from \"@kodiak-finance/orderly-hooks\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-hooks\";\nimport { compareDate, formatDateTimeToUTC } from \"../../../utils/utils\";\nimport { subDays, toDate } from \"date-fns\";\nimport { usePagination } from \"@kodiak-finance/orderly-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 { ReactNode, useEffect, useMemo } from \"react\";\nimport { TabTypes, useReferralContext } from \"../../../provider\";\n\nexport type TabReturns = {\n tab: string;\n setTab: React.Dispatch<React.SetStateAction<TabTypes>>;\n isAffiliate: boolean;\n isTrader: boolean;\n isLoading: boolean;\n anAnAffiliate: () => void;\n anATrader: () => void;\n splashPage?: () => ReactNode | undefined;\n showHome: boolean;\n setShowHome: (value: boolean) => void;\n};\n\nexport const useTabScript = (): TabReturns => {\n const {\n isAffiliate,\n isTrader,\n isLoading,\n splashPage,\n showHome,\n setShowHome,\n tab,\n setTab,\n } = useReferralContext();\n\n const tableValue = useMemo((): TabTypes => {\n if (isAffiliate && isTrader) {\n return tab;\n } else if (isAffiliate && !isTrader) {\n return TabTypes.affiliate;\n } else if (!isAffiliate && isTrader) {\n return TabTypes.trader;\n } else {\n return TabTypes.affiliate;\n }\n }, [tab, isAffiliate, isTrader]);\n\n useEffect(() => {\n const searchParams = new URLSearchParams(window.location.search);\n const tab = searchParams.get(\"tab\");\n if (tab) {\n setTab(tab as TabTypes);\n }\n }, [window.location.search]);\n\n const anAnAffiliate = () => {\n // if (becomeAnAffiliateUrl !== undefined) {\n // window.open(becomeAnAffiliateUrl, \"_blank\");\n // } else if (onBecomeAnAffiliate !== undefined) {\n // onBecomeAnAffiliate?.();\n // }\n setShowHome(true);\n };\n\n const anATrader = () => {\n setShowHome(true);\n // showReferralPage?.();\n };\n\n return {\n setTab,\n tab: tableValue,\n isAffiliate,\n isTrader,\n isLoading,\n anAnAffiliate,\n anATrader,\n splashPage,\n showHome,\n setShowHome,\n // tab: TabTypes.affiliate,\n // isAffiliate: false,\n // isTrader: false,\n // isLoading: false,\n };\n};\n","import { useTabScript } from \"./tab.script\";\nimport { Tab } from \"./tab.ui\";\n\nexport const TabWidget = (props: {\n classNames?: {\n loadding?: string;\n home?: string;\n dashboard?: string;\n };\n}) => {\n const state = useTabScript();\n return <Tab classNames={props.classNames} {...state} />;\n};\n","import React, { PropsWithChildren } from \"react\";\nimport { Box } from \"@kodiak-finance/orderly-ui\";\nimport { Scaffold, SideBar, SideBarProps } from \"@kodiak-finance/orderly-ui-scaffold\";\n\nexport type AffiliateLayoutProps = {} & SideBarProps;\n\nexport const AffiliateLayout: React.FC<\n PropsWithChildren<AffiliateLayoutProps>\n> = (props) => {\n const { ...rest } = props;\n return (\n <Scaffold leftSidebar={<LeftSidebar {...rest} />}>\n <Box mx={3} my={6}>\n {props.children}\n </Box>\n </Scaffold>\n );\n};\n\nconst LeftSidebar: React.FC<SideBarProps> = (props) => {\n return (\n <Box p={4} m={3} border borderColor={8} r={\"xl\"}>\n <SideBar {...props} />\n </Box>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport type { SideBarProps } from \"@kodiak-finance/orderly-ui-scaffold\";\nimport { useTranslation } from \"@kodiak-finance/orderly-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"]}
|