@orderly.network/affiliate 2.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +101 -0
- package/dist/index.d.ts +101 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +18 -0
- package/dist/index.mjs.map +1 -0
- package/dist/styles.css +1 -0
- package/package.json +46 -0
|
@@ -0,0 +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/locale/en-US.ts","../src/pages/affiliate/summary/summary.widget.tsx","../src/pages/affiliate/referralLink/referralLink.ui.tsx","../src/components/autoHideText.tsx","../src/components/gradientText.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/pinButton.tsx","../src/components/editIcon.tsx","../src/pages/affiliate/referralCodes/referralCodes.script.tsx","../src/pages/affiliate/referralCodes/editReferralRate.tsx","../src/pages/affiliate/referralCodes/referralCodes.widget.tsx","../src/pages/affiliate/commissionAndReferees/commissionAndReferees.ui.tsx","../src/pages/affiliate/commissionAndReferees/commissionAndReferees.script.tsx","../src/pages/affiliate/commissionAndReferees/commissionAndReferees.widget.tsx","../src/pages/trader/page.tsx","../src/pages/trader/summary/summary.ui.tsx","../src/pages/trader/summary/summary.script.tsx","../src/pages/trader/summary/summary.widget.tsx","../src/pages/trader/titleStatistic/titleStatistic.ui.tsx","../src/pages/trader/titleStatistic/titleStatistic.script.tsx","../src/pages/trader/titleStatistic/titleStatistic.widget.tsx","../src/pages/trader/rebates/rebates.ui.tsx","../src/pages/trader/rebates/rebates.script.tsx","../src/pages/trader/rebates/rebates.widget.tsx","../src/pages/home/page.tsx","../src/pages/home/becomeAffiliate/becomeAffiliate.ui.tsx","../src/pages/home/becomeAffiliate/becomeAffiliate.script.tsx","../src/pages/home/becomeAffiliate/becomeAffiliate.widget.tsx","../src/pages/home/title/title.ui.tsx","../src/pages/home/title/title.script.tsx","../src/pages/home/title/title.widget.tsx","../src/pages/home/subtitle/subtitle.ui.tsx","../src/pages/home/subtitle/subtitle.script.tsx","../src/pages/home/subtitle/subtitle.widget.tsx","../src/pages/home/top/top.ui.tsx","../src/pages/home/top/top.script.tsx","../src/pages/home/top/top.widget.tsx","../src/pages/home/card/card.ui.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.ui.tsx","../src/components/arrowRightIcon.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.script.tsx","../src/pages/home/asAnAffilate/asAnAffiliate.widget.tsx","../src/pages/home/asATrader/asTrader.ui.tsx","../src/pages/home/asATrader/asTrader.script.tsx","../src/pages/home/asATrader/asTrader.widget.tsx","../src/pages/home/card/card.script.tsx","../src/pages/home/card/card.widget.tsx","../src/pages/dashboard/tab/tab.script.tsx","../src/pages/dashboard/tab/tab.widget.tsx","../src/layout/layout.ui.tsx","../src/layout/layout.script.tsx","../src/layout/layout.widget.tsx"],"names":["dashboard_exports","__export","AffiliatePage","DashboardPage","HomePage","TraderPage","cn","Button","Flex","TabsBase","TabsContent","TabsList","TabsTrigger","Text","jsx","jsxs","AffiliateIcon","props","size","className","rest","TraderIcon","Select","USDCIcon","commifyOptional","Summary","Title","CommissionData","Row","useMemo","useState","createContext","useContext","useEffect","useRef","IntlProvider","en","usePrivateQuery","useDaily","useAccount","format","subDays","useAppContext","AccountStatusEnum","TabTypes","ReferralContext","ReferralProvider","becomeAnAffiliate","becomeAnAffiliateUrl","bindReferralCodeState","learnAffiliate","learnAffiliateUrl","referralLinkUrl","showReferralPage","chartConfig","intl","overwrite","splashPage","state","data","referralInfoMutate","isLoading","showHome","setShowHome","dailyVolume","dailyVolumeMutate","volumeStatistics","volumeStatisticsMutate","isAffiliate","isTrader","userVolume","volume","now","index","item","oneDayVolume","mutate","refCode","messages","locale","defaultLocale","tab","setTab","wrongNetwork","lastStete","timerId","useReferralContext","useSummaryScript","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","GradientText","texts","ReferralLink","Subtitle","Input","title","value","gradient","tooltip","valueClsName","Alert","useLocalStorage","toast","toDate","addQueryParam","url","paramName","paramValue","urlObj","searchParams","copyText","content","formatDateTimeToUTC","input","date","utcDate","toUTCDate","formatYMDTime","time","compareDate","d1","d2","Decimal","useReferralLinkScript","onCopy","pinCodes","setPinCodes","codes","referralCodes","pinedItems","i","code","firstCode","referralLink","earn","share","ReferralLinkWidget","VolBarChart","TitleStatistic","useReferralRebateSummary","fillData","days","origin","result","_","dataObject","acc","curr","originData","useTitleStatisticScript","onPeriodChange","volType","setVolType","volTypes","onVolTypeChange","dateRange","rebateSummary","dataSource","e","TitleStatisticWidget","DataTable","ListView","Statistic","PinBtn","UnPinIcon","PinnedIcon","useMediaQuery","EditIcon","ReferralCodes","isTablet","MobileLayout","DesktopLayout","MobileCell","MobileCellItem","copyable","align","editRate","setPinCode","copyLink","copyCode","getRate","getCount","moreColumn","columns","cols","refereeRate","cleanStringStyle","useMutation","Dialog","DialogContent","DialogTitle","useModal","EditReferralRate","visible","hide","resolve","reject","onOpenChange","maxRate","refereeRebateRate","setRefereeRebateRate","referrerRebateRate","setReferrerRebateRate","showError","setShowError","inputRef","error","isMutating","onClickConfirm","r1","r2","rate","maxDecimal","a","b","useReferralCodesScript","del","ReferralCodesWidget","DatePicker","Pagination","TabPanel","Tabs","AuthGuardDataTable","CommissionAndReferees","CommissionList","RefereesList","rule","formatString","prefix","isLG","body","DateFiler","range","useRefereeInfo","usePagination","useCommissionAndRefereesScript","useCommissionDataScript","useRefereesDataScript","commissionRange","setCommissionRange","page","pageSize","setPage","setPageSize","parseMeta","commissionData","refresh","loadMore","meta","onPageChange","onPageSizeChange","CommissionAndRefereesWidget","Fragment","Layout","Layout1024","Layout1280","Rebate","SummaryFilter","rebates","vol","rebate","rebateText","useRefereeRebateSummary","distributionData","Rebates","List","layout767","Cell","useRebatesScript","setDateRange","createdTime","displayDate","totalCount","newData","startIndex","endIndex","RebatesWidget","BecomeAffiliate","Item","ApplyIcon","ArrowDownIcon","ShareIcon","EarnIcon","useBecomeAffiliateScript","BecomeAffiliateWidget","useTitleScript","TitleWidget","useSubtitleScript","onLearnAffiliate","SubtitleWidget","Top","useTopScript","TopWidget","ArrowRightIcon","AsAnAffiliate","Icon","Bottom","totalReferrerRebate","useAsAnAffiliateScript","AsAnAffiliateWidget","DialogBody","DialogHeader","DialogTrigger","inputFormatter","TextField","AsTrader","EntryCode","useCheckReferralCode","useAsTraderScript","isSignIn","onEnterTraderPage","setCode","open","setOpen","isExist","checkCodeError","bindCode","errorText","AsTraderWidget","Card","useCardScript","CardWidget","Tab","extendNode","useTabScript","onBecomeAnAffiliate","tableValue","TabWidget","classNames","root","Box","Scaffold","SideBar","AffiliateLayout","LeftSidebar","useLayoutBuilder","current","setCurrent","AffiliateLayoutWidget"],"mappings":"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","sourcesContent":["export { DashboardPage } from \"./page\";\nexport { HomePage} from \"../home\";\nexport { AffiliatePage } from \"../affiliate\";\nexport { TraderPage } from \"../trader\";","import { Flex, Box, cn } from \"@orderly.network/ui\";\nimport { TabWidget } from \"./tab\";\n\nexport const DashboardPage = (props: {\n classNames?: {\n root?: string;\n loadding?: string;\n home?: string;\n dashboard?: string;\n };\n}) => {\n const { classNames = {} } = props;\n const { root, ...rest } = classNames;\n \n return (\n <div id=\"oui-affiliate-dashboard-page\" className={cn(\"oui-w-full oui-tracking-tight\", root)}>\n <TabWidget classNames={rest} />\n </div>\n );\n};\n","import { FC } from \"react\";\nimport {\n Box,\n Button,\n cn,\n Flex,\n Spinner,\n TabsBase,\n TabsContent,\n TabsList,\n TabsTrigger,\n Text,\n} from \"@orderly.network/ui\";\nimport { TabReturns } from \"./tab.script\";\nimport { AffiliateIcon } from \"../../../components/affiliateIcon\";\nimport { TraderIcon } from \"../../../components/traderIcon\";\nimport { AffiliatePage } from \"../../affiliate\";\nimport { TraderPage } from \"../../trader\";\nimport { HomePage } from \"../../home\";\nimport { TabTypes } from \"../../../hooks\";\n\nexport const Tab: FC<\n TabReturns & {\n classNames?: {\n loadding?: string;\n home?: string;\n dashboard?: string;\n };\n }\n> = (props) => {\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>As a trader</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>As an affiliate</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\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>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>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, Box, cn } from \"@orderly.network/ui\";\nimport { SummaryWidget } from \"./summary\";\nimport { ReferralLinkWidget } from \"./referralLink\";\nimport { TitleStatisticWidget } from \"./titleStatistic\";\nimport { ReferralCodesWidget } from \"./referralCodes\";\nimport { CommissionAndRefereesWidget } from \"./commissionAndReferees\";\nimport { useMediaQuery } from \"@orderly.network/hooks\";\nexport const AffiliatePage = () => {\n return (\n <Flex\n id=\"oui-affiliate-affiliate-page\"\n className={cn(\n \"oui-h-lvw\",\n // padding\n // \"oui-p-4 lg:oui-p-6 xl:oui-p-3\",\n \"oui-font-semibold\"\n )}\n direction={\"column\"}\n gap={4}\n >\n <Layout />\n <CommissionAndRefereesWidget />\n </Flex>\n );\n};\n\nconst Layout = () => {\n const is2XL = useMediaQuery(\"(max-width: 1279px)\");\n\n if (is2XL) {\n return <Layout1024 />;\n }\n\n return <Layout1280 />;\n};\n\nconst Layout1024 = () => {\n return (\n <>\n <div className=\"oui-flex oui-flex-col xl:oui-flex-row oui-gap-4 oui-w-full\">\n <SummaryWidget />\n <ReferralLinkWidget />\n </div>\n <TitleStatisticWidget />\n <ReferralCodesWidget />\n </>\n );\n};\n\nconst Layout1280 = () => {\n return (\n <Flex direction={\"row\"} itemAlign={\"stretch\"} gap={4}>\n <Flex direction={\"column\"} gap={4} className=\"oui-flex-1 oui-w-1/2\">\n <div className=\"oui-flex-1 oui-h-full oui-w-full\">\n <SummaryWidget />\n </div>\n <TitleStatisticWidget />\n </Flex>\n <Flex direction={\"column\"} gap={4} className=\"oui-w-1/2\">\n <ReferralLinkWidget />\n {/* <div className=\"oui-h-[360px]\"> */}\n <div className=\"oui-flex-1\">\n <ReferralCodesWidget />\n </div>\n {/* </div> */}\n </Flex>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Flex, Select, Text } from \"@orderly.network/ui\";\nimport { SummaryReturns } from \"./summary.script\";\nimport { USDCIcon } from \"../../../components/usdcIcon\";\nimport { commifyOptional, Decimal } from \"@orderly.network/utils\";\n\nexport const Summary: FC<SummaryReturns> = (props) => {\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=\"Referral vol. (USDC)\"\n value={props.referralVol}\n dp={2}\n {...props}\n />\n <Row title=\"Referees\" value={props.referees} dp={0} {...props} />\n <Row\n title=\"Referees that traded\"\n value={props.refereesTades}\n dp={0}\n {...props}\n />\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<SummaryReturns> = (props) => {\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">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 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 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>{commifyOptional(props.commission, { fix : 2, fallback: '0'})}</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\n className=\"oui-text-xs md:oui-text-sm xl:oui-text-base\"\n >\n {commifyOptional(props.value, { fix: props.dp, fallback: \"0\"})}\n </Text>\n </Flex>\n );\n};\n","import { FC } from \"react\";\n\nexport const USDCIcon: FC<{\n className?: string;\n}> = (props) => {\n return (\n <svg\n width=\"21\"\n height=\"20\"\n viewBox=\"0 0 21 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}\n >\n <g clipPath=\"url(#a)\">\n <path\n d=\"M10.5 20c5.542 0 10-4.458 10-10s-4.458-10-10-10S.5 4.458.5 10s4.458 10 10 10\"\n fill=\"#2775CA\"\n />\n <path\n d=\"M13.5 11.473c0-1.452-.94-1.95-2.82-2.158-1.344-.166-1.613-.498-1.613-1.078s.448-.955 1.343-.955c.806 0 1.254.25 1.478.872.045.124.18.207.313.207h.717c.179 0 .313-.125.313-.29v-.042c-.179-.913-.985-1.618-2.015-1.701v-.996c0-.166-.134-.29-.358-.332h-.671c-.18 0-.314.124-.359.332v.954c-1.343.166-2.194.996-2.194 2.034 0 1.369.896 1.908 2.776 2.116 1.254.207 1.657.456 1.657 1.12s-.627 1.12-1.477 1.12c-1.165 0-1.568-.456-1.702-1.078a.32.32 0 0 0-.313-.25h-.762c-.179 0-.313.125-.313.291v.042c.179 1.037.895 1.784 2.373 1.991v.996c0 .166.134.29.358.332h.672c.18 0 .313-.124.358-.332v-.996c1.344-.207 2.239-1.079 2.239-2.199\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n <path\n d=\"M8.24 16.57c-3.458-1.215-5.23-4.986-3.945-8.324.665-1.821 2.127-3.208 3.944-3.859.178-.086.266-.216.266-.433v-.607c0-.174-.088-.304-.266-.347-.044 0-.133 0-.177.043-4.21 1.3-6.516 5.68-5.186 9.798.798 2.428 2.704 4.292 5.186 5.072.177.087.355 0 .4-.173.043-.043.043-.087.043-.173v-.608c0-.13-.133-.303-.266-.39m4.698-13.527c-.178-.086-.355 0-.4.174-.043.043-.043.086-.043.173v.607c0 .174.133.347.266.434 3.457 1.213 5.23 4.985 3.944 8.323-.664 1.821-2.127 3.209-3.944 3.859-.178.086-.266.216-.266.433v.607c0 .174.088.304.266.347.044 0 .133 0 .177-.043 4.21-1.3 6.515-5.68 5.186-9.798-.798-2.471-2.748-4.335-5.186-5.116\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <path fill=\"#fff\" d=\"M.5 0h20v20H.5z\" />\n </clipPath>\n </defs>\n </svg>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { SummaryFilter } from \"../../../utils/types\";\nimport { useReferralContext } from \"../../../hooks\";\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 [period, setPeriod] = useState<SummaryFilter>(\"All\");\n const periodTypes: {\n label: SummaryFilter;\n value: SummaryFilter;\n }[] = [\n { label: \"All\", value: \"All\" },\n { label: \"1D\", value: \"1D\" },\n { label: \"7D\", value: \"7D\" },\n { label: \"30D\", value: \"30D\" },\n ];\n\n const { referralInfo } = useReferralContext();\n\n const commission = useMemo(() => {\n if (!referralInfo) return 0;\n //\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_referrer_rebate;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_referrer_rebate\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_referrer_rebate\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_referrer_rebate\"];\n }\n }, [referralInfo, period]);\n\n const referralVol = useMemo(() => {\n if (!referralInfo) return 0;\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_referee_volume;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_referee_volume\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_referee_volume\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_referee_volume\"];\n }\n }, [referralInfo, , period]);\n const referees = useMemo(() => {\n if (!referralInfo) return 0;\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_invites;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_invites\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_invites\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_invites\"];\n }\n }, [referralInfo, , period]);\n\n const refereesTades = useMemo(() => {\n if (!referralInfo) return 0;\n switch (period) {\n case \"All\":\n return referralInfo.referrer_info.total_traded;\n case \"1D\":\n return referralInfo.referrer_info[\"1d_traded\"];\n case \"7D\":\n return referralInfo.referrer_info[\"7d_traded\"];\n case \"30D\":\n return referralInfo.referrer_info[\"30d_traded\"];\n }\n }, [referralInfo, , period]);\n\n const onPeriodChange = (item: string) => {\n setPeriod(item as SummaryFilter);\n };\n\n return {\n period,\n periodTypes,\n onPeriodChange,\n commission,\n referralVol,\n referees,\n refereesTades,\n };\n};\n","import {\n FC,\n PropsWithChildren,\n ReactNode,\n createContext,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n// import { XAxis, YAxis, BarStyle } from \"../components\";\nimport { formatYMDTime } from \"../utils/utils\";\nimport { IntlProvider, MessageFormatElement } from \"react-intl\";\nimport { en } from \"../locale/en-US\";\nimport {\n RefferalAPI as API,\n usePrivateQuery,\n useDaily,\n useAccount,\n} from \"@orderly.network/hooks\";\nimport { format, subDays } from \"date-fns\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\n\nexport enum TabTypes {\n affiliate = \"affiliate\",\n trader = \"trader\",\n}\n\nexport type UserVolumeType = {\n \"1d_volume\"?: number;\n \"7d_volume\"?: number;\n \"30d_volume\"?: number;\n all_volume?: number;\n};\n\n// export type OverwiteCard = {\n// ref?: BuildNode,\n// refClassName?: string,\n// refIcon?: ReactNode,\n\n// trader?: BuildNode,\n// traderClassName?: string,\n// traderIcon?: ReactNode,\n// }\n\nexport type Overwrite = {\n shortBrokerName?: string;\n brokerName?: string;\n ref?: {\n top?: BuildNode;\n card?: BuildNode;\n step?: BuildNode;\n };\n};\n\nexport type ChartConfig = {\n // affiliate: {\n // bar?: BarStyle,\n // yAxis?: YAxis,\n // xAxis?: XAxis,\n // },\n // trader: {\n // bar?: BarStyle,\n // yAxis?: YAxis,\n // xAxis?: XAxis,\n // }\n affiliate: {\n bar?: any;\n yAxis?: any;\n xAxis?: any;\n };\n trader: {\n bar?: any;\n yAxis?: any;\n xAxis?: any;\n };\n};\n\nexport type ReferralContextProps = {\n //** click become an affiliate, If this method is implemented, the `becomeAnAffiliateUrl` will not work */\n onBecomeAnAffiliate?: () => void;\n //** set become an affiliate url, default is `https://orderly.network/` */\n becomeAnAffiliateUrl?: string;\n //** bind refferal code callback */\n bindReferralCodeState?: (\n success: boolean,\n error: any,\n hide: any,\n queryParams: any\n ) => void;\n //** click learn affilate, if this method is implemented, the `learnAffilateUrl` will not work */\n onLearnAffiliate?: () => void;\n //** set learn affiliate url, default is `https://orderly.network/` */\n learnAffiliateUrl?: string;\n //** default is `https://orderly.network/` */\n referralLinkUrl: string;\n //** referral index page */\n showReferralPage?: () => void;\n // onEnterTraderPage?: (params?: any) => void,\n // onEnterAffiliatePage?: (params?: any) => void,\n //** tab + tab content */\n showDashboard?: () => void;\n //** col chart config */\n chartConfig?: ChartConfig;\n //** overwrite refferal */\n overwrite?: Overwrite;\n //** build a splash page, if not impletement, will be dispaly referral page */\n splashPage?: () => ReactNode;\n};\n\nexport type ReferralContextReturns = {\n referralInfo?: API.ReferralInfo;\n isAffiliate: boolean;\n isTrader: boolean;\n mutate: any;\n userVolume?: UserVolumeType;\n dailyVolume?: API.DayliVolume[];\n isLoading: boolean;\n showHome: boolean;\n setShowHome: (value: boolean) => void;\n tab: TabTypes;\n setTab: React.Dispatch<React.SetStateAction<TabTypes>>;\n wrongNetwork: boolean;\n} & ReferralContextProps;\n\nexport const ReferralContext = createContext<ReferralContextReturns>(\n {} as ReferralContextReturns\n);\n\nexport type BuildNode = (state: ReferralContextReturns) => ReactNode;\n\nexport const ReferralProvider: FC<\n PropsWithChildren<\n ReferralContextProps & {\n intl?: {\n messages?:\n | Record<string, string>\n | Record<string, MessageFormatElement[]>;\n locale: string;\n defaultLocale?: string;\n };\n }\n >\n> = (props) => {\n const {\n onBecomeAnAffiliate: becomeAnAffiliate,\n becomeAnAffiliateUrl = \"https://orderly.network/\",\n bindReferralCodeState,\n onLearnAffiliate: learnAffiliate,\n learnAffiliateUrl = \"https://orderly.network/\",\n referralLinkUrl = \"https://orderly.network/\",\n showReferralPage,\n // onEnterTraderPage: enterTraderPage,\n // onEnterAffiliatePage: enterAffiliatePage,\n chartConfig,\n intl = {\n messages: en,\n locale: \"en\",\n defaultLocale: \"en\",\n },\n overwrite,\n splashPage,\n } = props;\n\n const { state } = useAccount();\n\n const {\n data,\n mutate: referralInfoMutate,\n isLoading,\n } = usePrivateQuery<API.ReferralInfo>(\"/v1/referral/info\", {\n revalidateOnFocus: true,\n });\n\n const [showHome, setShowHome] = useState(isLoading);\n useEffect(() => {\n setShowHome(true);\n }, [isLoading]);\n\n const { data: dailyVolume, mutate: dailyVolumeMutate } = useDaily({\n startDate: subDays(new Date(), 1),\n endDate: subDays(new Date(), 90),\n });\n\n const { data: volumeStatistics, mutate: volumeStatisticsMutate } =\n usePrivateQuery<API.UserVolStats>(\"/v1/volume/user/stats\", {\n revalidateOnFocus: true,\n });\n\n const isAffiliate = useMemo(() => {\n return (data?.referrer_info?.referral_codes?.length || 0) > 0;\n }, [data?.referrer_info]);\n\n const isTrader = useMemo(() => {\n return (data?.referee_info.referer_code?.length || 0) > 0;\n }, [data?.referee_info]);\n\n const userVolume = useMemo(() => {\n const volume: any = {};\n\n if (dailyVolume && dailyVolume.length > 0) {\n const now = format(new Date(), 'yyyy-MM-dd');\n const index = dailyVolume.findIndex((item: any) => {\n const itemDate = item.date;\n return itemDate === now;\n });\n let oneDayVolume = 0;\n if (index !== -1) {\n oneDayVolume = dailyVolume[index].perp_volume;\n }\n volume[\"1d_volume\"] = oneDayVolume;\n }\n\n if (volumeStatistics) {\n volume[\"7d_volume\"] = volumeStatistics.perp_volume_last_7_days;\n volume[\"30d_volume\"] = volumeStatistics.perp_volume_last_30_days;\n volume[\"all_volume\"] = volumeStatistics.perp_volume_ltd;\n }\n return volume;\n }, [dailyVolume, volumeStatistics]);\n\n useEffect(() => {\n if (isAffiliate || isTrader) {\n setShowHome(false);\n }\n }, [isAffiliate, isTrader]);\n\n const mutate = () => {\n volumeStatisticsMutate();\n dailyVolumeMutate();\n referralInfoMutate();\n };\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 { messages, locale, defaultLocale } = intl;\n\n const [tab, setTab] = useState<TabTypes>(TabTypes.affiliate);\n\n const { wrongNetwork } = useAppContext();\n\n const lastStete = useRef<AccountStatusEnum>(AccountStatusEnum.NotConnected);\n useEffect(() => {\n let timerId: any;\n if (lastStete.current !== state.status) {\n lastStete.current = state.status;\n timerId = setTimeout(() => {\n mutate();\n }, 1000);\n }\n\n return () => {\n if (timerId) clearTimeout(timerId);\n };\n }, [state.status]);\n\n return (\n <IntlProvider\n messages={messages}\n locale={locale}\n defaultLocale={defaultLocale}\n >\n <ReferralContext.Provider\n value={{\n showHome,\n setShowHome,\n referralInfo: data,\n isAffiliate: isAffiliate,\n isTrader: isTrader,\n // isAffiliate: true,\n // isTrader: false,\n mutate,\n onBecomeAnAffiliate: becomeAnAffiliate,\n becomeAnAffiliateUrl,\n bindReferralCodeState,\n onLearnAffiliate: learnAffiliate,\n learnAffiliateUrl,\n referralLinkUrl,\n userVolume,\n dailyVolume,\n showReferralPage,\n chartConfig,\n overwrite,\n splashPage,\n isLoading,\n tab,\n setTab,\n wrongNetwork,\n }}\n >\n {props.children}\n </ReferralContext.Provider>\n </IntlProvider>\n );\n};\n\nexport function useReferralContext() {\n return useContext(ReferralContext);\n}\n","export const en = {\n \"refferal.title\": \"Earn more as a {name} affiliate\",\n \"refferal.subtitle\": \"Grow your brand | Get 40% commission | Unlock exclusive perks\",\n \"refferal.linkUrl\": \"Learn how it works\",\n \"referral.not.ref.card.title\": \"As an affiliate\",\n \"referral.not.ref.card.subtitle\": \"Onboard traders to earn passive income\",\n \"referral.not.ref.card.btn\": \"Become an affiliate\",\n \"referral.not.ref.card.hint.title\": \"40%~60%\",\n \"referral.not.ref.card.hint.subtitle\": \"Commission\",\n \"referral.ref.card.title\": \"Affiliate\",\n \"referral.ref.card.comission\": \"Commission (USDC)\",\n \"referral.ref.card.enter\": \"Enter\",\n \"referral.not.trader.card.title\": \"As a trader\",\n \"referral.not.trader.card.subtitle\": \"Get fee rebates on every trade\",\n \"referral.not.trader.card.btn\": \"Enter code\",\n \"referral.not.trader.card.hint.title\": \"0%~20%\",\n \"referral.not.trader.card.hint.subtitle\": \"Rebate\",\n \"referral.trader.card.title\": \"Trader\",\n \"referral.trader.card.rebate\": \"Rebate (USDC)\",\n \"referral.trader.card.enter\": \"Enter\",\n \"referral.step.title\": \"Becoming an affiliate is easy\",\n \"referral.step.apply.title\": \"Apply\",\n \"referral.step.apply.subtitle\": \"Fill out the application form\",\n \"referral.step.share.title\": \"Share\",\n \"referral.step.share.subtitle\": \"Unlock your affiliate link and share it with your community\",\n \"referral.step.earn.title\": \"Earn\",\n \"referral.step.earn.subtitle\": \"Get paid and receive special treatment 24/7, 365\",\n}\n\nexport type EN = typeof en;","import { useSummaryScript } from \"./summary.script\";\nimport { Summary } from \"./summary.ui\";\n\nexport const SummaryWidget = () => {\n const state = useSummaryScript();\n return <Summary {...state} />;\n};\n","import { FC } from \"react\";\nimport {\n CopyIcon,\n Divider,\n Flex,\n modal,\n Text,\n Tooltip,\n} from \"@orderly.network/ui\";\nimport { ReferralLinkReturns } from \"./referralLink.script\";\nimport { AutoHideText } from \"../../../components/autoHideText\";\nimport { GradientText } from \"../../../components/gradientText\";\n\nexport const ReferralLink: FC<ReferralLinkReturns> = (props) => {\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 direction={\"column\"} width={\"100%\"} className=\"3xl:oui-w-2/3 3xl:oui-gap-2\">\n <Input title=\"Referral code\" value={props.refCode} {...props} />\n <Input title=\"Referral link\" value={props.refLink} {...props} />\n </Flex>\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<ReferralLinkReturns> = (props) => {\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">Referral link</Text>\n </Flex>\n );\n};\n\nconst Subtitle: FC<ReferralLinkReturns> = (props) => {\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 \"Earn\",\n props.earn || \"-\",\n true,\n \"oui-flex-1\",\n <GradientText\n texts={[\n { text: props.earn || \"-\", gradient: true, gradientColor: \"brand\" },\n { text: ` ${props.brokerName} net fee that deduct Orderly fee.` },\n ]}\n />\n )}\n {item(\n \"Share\",\n props.share || \"-\",\n false,\n \"oui-flex-1\",\n <GradientText\n texts={[\n { text: \"Your referees get \" },\n {\n text: props.share || \"-\",\n gradient: true,\n gradientColor: \"brand\",\n },\n { text: ` of their ${props.brokerName} net fee` },\n ]}\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\">{title}</Text>\n <Flex direction={\"row\"} justify={\"end\"} gap={2} className=\"oui-flex-1 oui-text-xs md:oui-text-sm xl:oui-text-base\">\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 size={12} color=\"white\" className=\"oui-w-[13px] oui-h-[13px] md:oui-w-[14px] md:oui-h-[14px] xl:oui-w-4 xl:oui-h-4\" />\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 intensity={54} className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\" >{props.title}</Text>\n <Divider className=\"oui-w-full\" lineStyle=\"dotted\" intensity={16}/>\n </Flex>\n </div>\n </Tooltip>\n );\n};\n","\nimport { cn } from \"@orderly.network/ui\";\nimport { FC, useEffect, useMemo, useRef, useState } from \"react\";\n\nexport const AutoHideText: FC<{\n text: string;\n className?: string;\n visibleCount?: number;\n}> = (props) => {\n const { text, visibleCount } = props;\n const containerRef = useRef<HTMLDivElement | null>(null);\n const textRef = useRef<HTMLDivElement>(null);\n const lastContainerWidth = useRef<number | undefined>(undefined);\n\n function getTextWidth(ref: HTMLDivElement, text: string): number | undefined {\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n const element = ref; \n if (context && element) {\n let fontStyle = getComputedStyle(element).font;\n if (fontStyle.length === 0) {\n fontStyle = [\n getComputedStyle(element).fontWeight,\n getComputedStyle(element).fontSize,\n getComputedStyle(element).fontFamily,\n ].join(\" \");\n }\n context.font = fontStyle;\n context.letterSpacing = getComputedStyle(element).letterSpacing;\n\n const width = context.measureText(text).width;\n return width;\n }\n return undefined;\n }\n\n const [visibleChars, setVisibleChars] = useState(0);\n\n useEffect(() => {\n const calculateVisibleChars = () => {\n if (props.visibleCount !== undefined) return;\n if (containerRef.current && textRef.current) {\n const containerWidth = containerRef.current.clientWidth;\n\n if (containerWidth == lastContainerWidth.current) return;\n lastContainerWidth.current = containerWidth;\n\n const textElement = textRef.current;\n\n const textContent = text;\n\n const pWidth = Math.ceil(getTextWidth(textElement, \"...\") || 0);\n \n const maxDisplayW = containerWidth - pWidth;\n let count = 0;\n while(count < text.length) {\n let contentW = getTextWidth(textElement, subText(text, count++)) || maxDisplayW;\n \n if (contentW <= maxDisplayW) {\n break;\n }\n }\n setVisibleChars(textContent.length - count);\n }\n };\n\n lastContainerWidth.current = undefined;\n calculateVisibleChars();\n\n window.addEventListener(\"resize\", calculateVisibleChars);\n return () => {\n lastContainerWidth.current = undefined;\n window.removeEventListener(\"resize\", calculateVisibleChars);\n };\n }, [text, textRef]);\n\n const truncatedText = useMemo(() => {\n if (visibleChars + 1 >= text.length) {\n return text;\n }\n\n const maxCharacters = visibleCount || visibleChars;\n\n const startText = text.slice(0, Math.ceil(maxCharacters / 2));\n const endText = text.slice(\n text.length - Math.floor(maxCharacters / 2),\n text.length\n );\n\n return `${startText}...${endText}`;\n }, [text, visibleCount, visibleChars]);\n\n return (\n <div ref={containerRef} className={cn(\"oui-relative oui-w-full oui-text-end\", props.className)}>\n <div\n className={cn(\n \"oui-hidden oui-whitespace-nowrap oui-absolute oui-top-0 oui-bottom-0 oui-right-0 oui-left-0\",\n )}\n >\n <span ref={textRef}>{text}</span>\n </div>\n <span>{truncatedText}</span>\n </div>\n );\n};\n\n\nconst subText = (text: string, count: number) => {\n const start = Math.floor(text.length / 2 - (count > 0 ? count / 2 : 1));\n const first = text.slice(0, start);\n const end = text.slice(start + count);\n return first + end;\n}","import { cn } from \"@orderly.network/react\";\nimport { Text } from \"@orderly.network/ui\";\nimport { FC, PropsWithChildren } from \"react\";\n\nexport type GradientTextItem = {\n text: string;\n gradient?: boolean;\n gradientColor?:\n | \"inherit\"\n | \"brand\"\n | \"primary\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"neutral\";\n};\n\nexport const GradientText: FC<\n PropsWithChildren<{ texts: GradientTextItem[]; className?: string }>\n> = (props) => {\n const { texts, className } = props;\n\n return (\n <div className={className}>\n <h1>\n {texts.map((item, index) => {\n if (item.gradient) {\n return (\n <Text.gradient key={index} color={item.gradientColor}>\n {item.text}\n </Text.gradient>\n );\n }\n\n return <span key={index}>{item.text}</span>;\n })}\n </h1>\n </div>\n );\n};\n","import { RefferalAPI, useLocalStorage } from \"@orderly.network/hooks\";\nimport { useMemo, useState } from \"react\";\nimport { useReferralContext } from \"../../../hooks\";\nimport { addQueryParam } from \"../../../utils/utils\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { toast } from \"@orderly.network/ui\";\n\nexport type ReferralLinkReturns = {\n\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\n const onCopy = (value: string) => {\n toast.success(\"Copy success\");\n };\n\n\n const { referralInfo, referralLinkUrl, overwrite } = useReferralContext();\n const [pinCodes, setPinCodes] = useLocalStorage<string[]>(\"orderly_referral_codes\", [] as string[]);\n\n const codes = useMemo((): RefferalAPI.ReferralCode[] => {\n\n if (!referralInfo?.referrer_info.referral_codes) 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\n pinedItems.push({ ...referralCodes[index] });\n referralCodes.splice(index, 1);\n }\n\n }\n\n return [...pinedItems, ...referralCodes];\n }, [\n referralInfo?.referrer_info.referral_codes,\n pinCodes,\n ]);\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\n }, [firstCode]);\n\n const earn = useMemo(() => {\n const value = new Decimal(firstCode?.referrer_rebate_rate || \"0\").mul(100).toDecimalPlaces(0, Decimal.ROUND_DOWN).toString();\n return `${value}%`\n }, [\n firstCode?.referrer_rebate_rate\n ]);\n\n const share = useMemo(() => {\n const value = new Decimal(firstCode?.referee_rebate_rate || \"0\").mul(100).toDecimalPlaces(0, Decimal.ROUND_DOWN).toString();\n return `${value}%`\n\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 { toast } from \"@orderly.network/react\";\nimport { toast } from \"@orderly.network/ui\";\nimport { format, toDate } from \"date-fns\";\n// import { toZonedTime } from \"date-fns-tz\";\n// const { toZonedTime } = require(\"date-fns-tz\");\n\nexport function addQueryParam(\n url: string,\n paramName: string,\n paramValue: string\n): string {\n const urlObj = new URL(url);\n const searchParams = new URLSearchParams(urlObj.search);\n\n searchParams.set(paramName, paramValue);\n\n urlObj.search = searchParams.toString();\n\n return urlObj.toString();\n}\n\nexport async function copyText(content: string) {\n try {\n await navigator.clipboard.writeText(content);\n toast.success(\"Copy success\");\n } catch (error) {\n toast.success(\"Copy failed\");\n }\n}\n\nexport function parseTime(time?: number | string): Date | null {\n if (!time) return null;\n const timestamp = typeof time === \"number\" ? time : Date.parse(time);\n\n if (!isNaN(timestamp)) {\n return new Date(timestamp);\n }\n\n return null;\n}\n\n//** will be return YYYY-MM-ddThh:mm:ssZ */\nexport function formatDateTimeToUTC(input?: number | string): string {\n if (input === undefined) return \"\";\n const date = toDate(input);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"yyyy-MM-dd HH:mm:ss 'UTC'\");\n}\n\n//** will return yyyy-MM-dd */\nexport function formatYMDTime(time?: number | string): string | undefined {\n if (time === undefined) return undefined;\n const date = toDate(time);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"yyyy-MM-dd\");\n}\n\n//** will return hh:mm */\nexport function formatHMTime(time?: number | string): string | undefined {\n if (time === undefined) return undefined;\n const date = toDate(time);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"hh:mm\");\n}\n\n//** will return MM-dd */\nexport function formatMdTime(time?: number | string): string | undefined {\n if (time === undefined) return undefined;\n const date = toDate(time);\n const utcDate = toUTCDate(date);\n return format(utcDate, \"MM-dd\");\n}\n\n//** compare two date, yyyy-mm-dd */\nexport function compareDate(d1?: Date, d2?: Date) {\n const isEqual =\n d1 &&\n d2 &&\n d1.toISOString().substring(0, 10) === d2.toISOString().substring(0, 10);\n\n return isEqual;\n}\n\nexport function generateData(\n itemCount: number,\n data: any[] | null | undefined,\n timeKey: string,\n valueKey: string\n): [string, number][] {\n const result: [string, number][] = [];\n\n for (let i = 0; i < itemCount; i++) {\n const currentDate = new Date();\n currentDate.setDate(currentDate.getDate() - i - 1);\n const currentDateStr = currentDate.toISOString().substring(0, 10);\n\n const matchedData = data?.find((item) => {\n const itemDate = parseTime(item[timeKey]);\n if (!itemDate) return false;\n return itemDate.toISOString().substring(0, 10) === currentDateStr;\n });\n\n if (matchedData) {\n result.push([currentDateStr, matchedData[valueKey]]);\n } else {\n result.push([currentDateStr, 0]);\n }\n }\n\n return result.reverse();\n}\n\nfunction toUTCDate(date: Date): Date {\n return new Date(date.toUTCString());\n}\n","import { useReferralLinkScript } from \"./referralLink.script\";\nimport { ReferralLink } from \"./referralLink.ui\";\n\nexport const ReferralLinkWidget = () => {\n const state = useReferralLinkScript();\n return <ReferralLink {...state} />;\n};\n","import { FC } from \"react\";\nimport { Flex, Select, Text } from \"@orderly.network/ui\";\nimport { VolBarChart } from \"@orderly.network/chart\";\nimport { TitleStatisticReturns } from \"./titleStatistic.script\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport const TitleStatistic: FC<TitleStatisticReturns> = (props) => {\n return (\n <Flex\n id=\"oui-affiliate-affiliate-titleStatistic\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9\"\n >\n <Title {...props} />\n <Flex className=\"oui-h-[170px] 2xl:oui-h-[196px] oui-w-full oui-flex oui-flex-row oui-items-stretch\">\n <VolBarChart\n data={props.dataSource || []}\n colors={{ fill: \"rgba(0, 180, 158, 1)\" }}\n className=\"oui-w-full oui-flex-1\"\n tooltip={{\n rm: Decimal.ROUND_DOWN,\n dp: props.volType === 'Commission' ? 6 : 2\n }}\n />\n </Flex>\n </Flex>\n );\n};\n\nconst Title: FC<TitleStatisticReturns> = (props) => {\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">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 { RefferalAPI, useReferralRebateSummary } from \"@orderly.network/hooks\";\nimport { format, subDays } from \"date-fns\";\nimport { useMemo, useState } from \"react\";\nimport { fillData } from \"../../../utils/chartUtils\";\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 [period, setPeriod] = useState(\"7\");\n const periodTypes = [\n { label: \"7D\", value: \"7\" },\n { label: \"30D\", value: \"30\" },\n { label: \"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: \"Commission\", value: \"Commission\" },\n { label: \"Referral vol.\", 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 ((rebateSummary as RefferalAPI.ReferralRebateSummary[] | null)?.map(\n (e) => ({\n date: e.date,\n volume: volType === \"Commission\" ? e.referral_rebate : e.volume,\n })\n ) || []).reverse();\n }, [rebateSummary, volType ]);\n \n\n return {\n period,\n periodTypes,\n onPeriodChange,\n volType,\n volTypes,\n onVolTypeChange,\n dataSource: fillData(Number(period), dataSource),\n };\n};\n","import { VolChartDataItem } from \"@orderly.network/chart\";\nimport { format, subDays } from \"date-fns\";\n\nexport function fillData(\n days: number,\n origin?: VolChartDataItem[]\n): VolChartDataItem[] {\n const now = Date();\n const result: VolChartDataItem[] = new Array(days).fill(0).map(\n (_, index): VolChartDataItem => {\n return {\n date: format(subDays(now, index + 1), \"yyyy-MM-dd\"),\n volume: 0,\n opacity: 0,\n };\n }\n ).reverse();\n\n console.log(\"fill data\", result, origin);\n \n\n const dataObject = origin?.reduce((acc, curr) => {\n acc[curr.date] = curr;\n return acc;\n }, {} as { [key: string]: VolChartDataItem });\n\n for (let index = 0; index < result.length; index++) {\n const element = result[index];\n const originData = dataObject?.[element.date];\n if (originData) {\n result[index] = { ...originData, opacity: originData.volume > 0 ? 1 : 0 };\n }\n }\n\n return result;\n}\n","import { useTitleStatisticScript } from \"./titleStatistic.script\";\nimport { TitleStatistic } from \"./titleStatistic.ui\";\n\nexport const TitleStatisticWidget = () => {\n const state = useTitleStatisticScript();\n return <TitleStatistic {...state} />;\n};\n","import { FC, ReactNode, useMemo } from \"react\";\nimport {\n Box,\n Button,\n Column,\n DataTable,\n Divider,\n Flex,\n ListView,\n Statistic,\n Text,\n cn,\n} from \"@orderly.network/ui\";\nimport { ReferralCodesReturns, ReferralCodeType } from \"./referralCodes.script\";\nimport { PinBtn } from \"../../../components/pinButton\";\nimport { useMediaQuery } from \"@orderly.network/hooks\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { EditIcon } from \"../../../components/editIcon\";\n\nexport const ReferralCodes: FC<ReferralCodesReturns> = (props) => {\n const isTablet = useMediaQuery(\"(max-width: 767px)\");\n return (\n <Flex\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9 oui-tabular-nums oui-p-6 oui-h-full\"\n >\n <Title {...props} />\n\n <div className=\"oui-w-full oui-flex oui-flex-col 2xl:oui-h-full\">\n <Divider />\n {isTablet ? <MobileLayout {...props} /> : <DesktopLayout {...props} />}\n </div>\n </Flex>\n );\n};\n\nconst Title: FC<ReferralCodesReturns> = (props) => {\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">Referral codes</Text>\n <div className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\">\n <Text className=\"oui-text-base-contrast-54\">\n Remaining referral codes: \n </Text>\n <Text className=\"oui-text-primary-light\">\n {props.codes?.length || \"--\"}\n </Text>\n </div>\n </Flex>\n );\n};\n\nconst MobileLayout: FC<ReferralCodesReturns> = (props) => {\n return (\n <ListView\n dataSource={props.codes}\n className=\"oui-max-h-[240px] oui-w-full\"\n renderItem={(e, index) => {\n return (\n <Flex direction={\"column\"}>\n <MobileCell\n key={index}\n data={e}\n editRate={props.editRate}\n copyLink={props.copyLink}\n copyCode={props.copyCode}\n setPinCode={props.setPinCode}\n />\n <Divider className=\"oui-w-full oui-mt-3\" />\n </Flex>\n );\n }}\n />\n );\n};\n\nconst MobileCellItem: FC<{\n // key: string;\n title: string;\n value: string | ReactNode;\n copyable?: boolean;\n align?: \"start\" | \"end\" | undefined;\n className?: string;\n editRate?: () => void;\n onCopy?: () => void;\n}> = (props) => {\n const { title, copyable, value, align, className, editRate, onCopy } = props;\n return (\n <Statistic\n id=\"oui-affiliate-affiliate-referralCodes\"\n className={cn(\"oui-flex-1\", className)}\n label={\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">{title}</Text>\n }\n align={align}\n children={\n <Flex direction={\"row\"} gap={1}>\n <Text.formatted\n copyable={copyable}\n onCopy={() => {\n onCopy?.();\n }}\n className=\"oui-text-base-contrast-80 oui-text-sm oui-mt-[6px]\"\n >\n {value as string}\n </Text.formatted>\n {editRate && (\n <EditIcon\n className=\" oui-fill-white/[.36] hover:oui-fill-white/80 oui-cursor-pointer oui-mt-[1px]\"\n fillOpacity={1}\n fill=\"currentColor\"\n onClick={(e) => editRate()}\n />\n )}\n </Flex>\n }\n />\n );\n};\nconst MobileCell: FC<{\n data: ReferralCodeType;\n setPinCode: (code: string, del?: boolean) => void;\n copyLink: (code: string) => void;\n copyCode: (code: string) => void;\n editRate: (code: ReferralCodeType) => void;\n}> = (props) => {\n const { data, setPinCode, copyLink, copyCode, editRate } = props;\n\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=\"Referral code\"\n value={data.code}\n copyable\n onCopy={() => {\n props.copyCode?.(data.code);\n }}\n />\n <MobileCellItem\n title=\"You / Referee\"\n value={getRate(data)}\n align=\"end\"\n editRate={() => {\n editRate(data);\n }}\n />\n <MobileCellItem\n title=\"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=\"Referees\"\n value={getCount(data).split(\"/\")?.[0]}\n align=\"start\"\n />\n <MobileCellItem\n title=\"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 Copy link\n </Button>\n </Flex>\n </Flex>\n );\n};\n\nconst DesktopLayout: FC<ReferralCodesReturns> = (props) => {\n const moreColumn = useMediaQuery(\"(min-width: 1024px)\");\n\n const columns = useMemo(() => {\n const cols: Column[] = [\n {\n title: \"Referral Codes\",\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={14}\n pinned={data.isPined || false}\n onClick={(e) => {\n props.setPinCode(data.code, !e);\n }}\n />\n <Text.formatted\n // rule={\"\"}\n copyable\n onCopy={() => {\n props.copyCode?.(data.code);\n }}\n >\n {value}\n </Text.formatted>\n </Flex>\n );\n },\n },\n {\n title: \"You / Referee\",\n dataIndex: \"dffd\",\n width: moreColumn ? 120 : 120,\n className: \"oui-pr-0\",\n render: (value, data) => {\n return (\n <Flex direction={\"row\"} itemAlign={\"center\"} gap={1}>\n {getRate(data)}\n <EditIcon\n className=\" oui-fill-white/[.36] hover:oui-fill-white/80 oui-cursor-pointer oui-mt-[1px]\"\n fillOpacity={1}\n fill=\"currentColor\"\n onClick={(e) => props.editRate?.(data)}\n />\n </Flex>\n );\n },\n },\n ];\n\n if (moreColumn) {\n cols.push({\n title: \"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: \"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: \"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 title: \"\",\n dataIndex: \"\",\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 Copy link\n </Button>\n ),\n });\n\n console.log(\"cols\", cols);\n\n return cols;\n }, [moreColumn]);\n\n console.log(\"codes\", props.codes);\n\n return (\n <DataTable\n bordered\n columns={columns}\n dataSource={props.codes}\n scroll={{ y: 200 }}\n classNames={{\n header: \"oui-text-xs oui-text-base-contrast-36 oui-bg-base-9 oui-px-0\",\n body: \"oui-text-xs oui-text-base-contrast-80\",\n root: \"2xl:oui-flex-1 2xl:oui-max-h-[230px] 3xl:oui-max-h-[300px]\"\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 } 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 hover:orderly-fill-primary/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 = 16 } = 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 = 16 } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 16 16\"\n fill=\"#fff\"\n fillOpacity=\".36\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M10.008 1.302a.74.74 0 0 0-.486.215c-1.033.988-1.349 1.815-.972 2.947-.88.675-1.437.841-2.536.841-1.503 0-2.484.181-3.152.848v.021a1.583 1.583 0 0 0 0 2.249l1.867 1.881-3.181 3.18c-.26.26-.28.696-.02.956.261.26.699.26.959 0l3.193-3.193 1.87 1.86a1.585 1.585 0 0 0 2.25 0h.02c.668-.667.854-1.522.854-3.144 0-1.03.212-1.758.853-2.523 1.232.361 1.95.015 2.96-.995a.68.68 0 0 0 .188-.479c0-.234-.06-.594-.209-1.041a5.34 5.34 0 0 0-1.312-2.103A5.35 5.35 0 0 0 11.05 1.51c-.448-.149-.808-.208-1.042-.208m.258 1.37c.708.131 1.421.6 1.93 1.108.507.507.94 1.13 1.119 1.944-.636.61-1.026.659-1.662.324a.67.67 0 0 0-.779.116c-1.214 1.213-1.533 2.314-1.533 3.8 0 1.293-.076 1.774-.48 2.207-.113.123-.27.104-.374 0L3.799 7.486a.24.24 0 0 1-.017-.34c.239-.29.769-.514 2.226-.514 1.742.001 2.668-.447 3.812-1.52a.67.67 0 0 0 .125-.77c-.343-.685-.29-1.046.321-1.67\" />\n </svg>\n );\n};\n","import { FC, 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=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"white\"\n fillOpacity=\"0.36\"\n className={className}\n {...rest}\n >\n <path d=\"M11.9971 1.30206C11.8204 1.30206 11.6431 1.36473 11.5178 1.4894C11.1471 1.86007 9.81309 3.19408 9.51709 3.49075L3.51376 9.4941L2.84642 10.1608C2.75376 10.2541 2.70576 10.3861 2.67976 10.5154L2.01309 13.8508C1.91976 14.3174 2.3171 14.7147 2.78376 14.6221C3.2011 14.5381 5.70242 14.0381 6.11909 13.9548C6.24842 13.9288 6.38043 13.8808 6.47376 13.7881L7.14043 13.1208L13.1438 7.11742C13.4404 6.82142 14.7744 5.48673 15.1451 5.11673C15.2698 4.99139 15.3324 4.81406 15.3324 4.6374C15.3324 3.54606 15.0544 2.76606 14.4778 2.17739C13.8958 1.58339 13.1184 1.30206 11.9971 1.30206ZM12.2598 2.64805C12.8618 2.68339 13.2518 2.82142 13.5191 3.09475C13.7924 3.37342 13.9651 3.76008 14.0024 4.35008C13.6371 4.71475 13.1024 5.24139 12.6644 5.67939C12.1358 5.15072 11.4838 4.49875 10.9551 3.97008C11.3938 3.53208 11.8951 3.01272 12.2598 2.64805ZM9.99643 4.92874L11.7058 6.63809L6.66109 11.6827L4.95176 9.97343L9.99643 4.92874ZM3.99309 10.9321L5.70242 12.6414L5.63976 12.7041C5.19976 12.7921 4.3111 12.9781 3.49243 13.1421L3.93043 10.9947L3.99309 10.9321Z\" />\n </svg>\n );\n};\n","import { RefferalAPI, useLocalStorage } from \"@orderly.network/hooks\";\nimport { useReferralContext } from \"../../../hooks\";\nimport { addQueryParam, copyText } from \"../../../utils/utils\";\nimport { modal } from \"@orderly.network/ui\";\nimport { useMemo } from \"react\";\nimport { EditReferralRate } from \"./editReferralRate\";\n\nexport type ReferralCodeType = RefferalAPI.ReferralCode & { isPined?: boolean };\n\nexport type ReferralCodesReturns = {\n copyCode: (code: string) => void;\n copyLink: (code: string) => void;\n editRate: (code: ReferralCodeType) => void;\n setPinCode: (code: string, del?: boolean) => void;\n codes?: ReferralCodeType[];\n};\n\nexport const useReferralCodesScript = (): ReferralCodesReturns => {\n const { referralInfo, referralLinkUrl, mutate } = 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 [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 const referralCodes = [...referralInfo?.referrer_info.referral_codes];\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\n return [...pinedItems, ...referralCodes];\n }, [referralInfo?.referrer_info.referral_codes, pinCodes]);\n\n return {\n copyCode,\n copyLink,\n editRate,\n setPinCode,\n codes,\n };\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { cleanStringStyle, useMutation } from \"@orderly.network/hooks\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { ReferralCodeType } from \"./referralCodes.script\";\nimport {\n Button,\n cn,\n Dialog,\n DialogContent,\n DialogTitle,\n Divider,\n Flex,\n Input,\n modal,\n toast,\n useModal,\n} from \"@orderly.network/ui\";\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\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(\"Referral code edited\");\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\">Settings</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 Set the ratio of referral rate shared with your referees\n </div>\n <div className=\"oui-text-xs oui-text-base-contrast-80 oui-mt-2 oui-flex\">\n {`Your max commission rate: `}\n <div className=\"oui-text-warning 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 You receive\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\"\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 Referee receives\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\"\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 {`The total commission rate must equal to your maximum commission rate limit`}\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 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, useCallback, useMemo } from \"react\";\nimport {\n Column,\n DataTable,\n DatePicker,\n Divider,\n Flex,\n ListView,\n Pagination,\n ScrollArea,\n Statistic,\n TabPanel,\n Table,\n Tabs,\n Text,\n cn,\n} from \"@orderly.network/ui\";\nimport { CommissionAndRefereesReturns } from \"./commissionAndReferees.script\";\nimport { RefferalAPI, useMediaQuery } from \"@orderly.network/hooks\";\nimport { DateRange } from \"../../../utils/types\";\nimport { formatYMDTime } from \"../../../utils/utils\";\nimport { commifyOptional, Decimal } from \"@orderly.network/utils\";\nimport { addDays } from \"date-fns\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\n\nexport const CommissionAndReferees: FC<CommissionAndRefereesReturns> = (\n props\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=\"Commission\">\n <CommissionList {...props} />\n </TabPanel>\n <TabPanel value=\"password\" title=\"My referees\">\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 isLG = useMediaQuery(\"(max-width: 767px)\");\n const columns = useMemo(() => {\n const cols: Column[] = [\n {\n title: \"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: \"Referral vol. (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: \"Date\",\n dataIndex: \"date\",\n render: (value) => formatYMDTime(value),\n width: 216,\n },\n ];\n\n return cols;\n }, []);\n\n const body = useMemo(() => {\n if (isLG) {\n return (\n <ListView<\n RefferalAPI.ReferralRebateSummary,\n RefferalAPI.ReferralRebateSummary[]\n >\n className=\"oui-w-full oui-max-h-[200px]\"\n dataSource={props.commission.data}\n // dataSource={[]}\n loadMore={props.commission.loadMore}\n isLoading={props.commission.isLoading}\n renderItem={(e, index) => {\n return (\n <div>\n <Flex direction={\"row\"} width={\"100%\"}>\n <MobileCellItem\n title=\"Commission\"\n value={commifyOptional(e.referral_rebate, {\n fix: 6,\n fallback: \"0\",\n padEnd: true,\n })}\n prefix=\"$\"\n />\n <MobileCellItem\n title=\"Referral vol.\"\n value={commifyOptional(e.volume, {\n fix: 2,\n fallback: \"0\",\n padEnd: true,\n })}\n prefix=\"$\"\n />\n <MobileCellItem\n title=\"Date\"\n value={e.date}\n rule=\"date\"\n formatString=\"yyyy-MM-dd\"\n align=\"end\"\n />\n </Flex>\n <Divider className=\"oui-w-full oui-mt-3\" />\n </div>\n );\n }}\n />\n );\n }\n\n return (\n <AuthGuardDataTable\n bordered\n columns={columns}\n loading={props.commission.isLoading}\n ignoreLoadingCheck={true}\n dataSource={props.commission.data}\n classNames={{\n header: \"oui-text-xs oui-text-base-contrast-36 oui-bg-base-9\",\n body: \"oui-text-xs oui-text-base-contrast-80\",\n }}\n >\n <Pagination\n {...props.commission.meta}\n onPageChange={props.commission.onPageChange}\n onPageSizeChange={props.commission.onPageSizeChange}\n />\n </AuthGuardDataTable>\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 isLG = useMediaQuery(\"(max-width: 767px)\");\n\n const columns = useMemo(() => {\n const cols: Column[] = [\n {\n title: \"Referee address \",\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: \"Referral code \",\n dataIndex: \"referral_code\",\n // render: (value) => value,\n className: \"oui-w-1/5\",\n },\n {\n title: \"Total commission (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: \"Total vol. (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: \"Invication time\",\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 }, []);\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=\"Referral code \"\n value={e.referral_code}\n />\n <MobileCellItem\n title=\"Total commission\"\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=\"Total vol.\"\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=\"Referee address \"\n value={e.user_address}\n rule=\"address\"\n />\n <MobileCellItem\n title=\"Invitation Time \"\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 classNames={{\n header: \"oui-text-xs oui-text-base-contrast-36 oui-bg-base-9\",\n body: \"oui-text-xs oui-text-base-contrast-80\",\n }}\n >\n <Pagination\n {...props.referees.meta}\n onPageChange={props.referees.onPageChange}\n onPageSizeChange={props.referees.onPageSizeChange}\n />\n </AuthGuardDataTable>\n );\n }, [isLG, props.referees]);\n\n return (\n <Flex\n direction={\"column\"}\n width={\"100%\"}\n justify={\"start\"}\n itemAlign={\"start\"}\n >\n {/* <DateFiler\n value={props.referees.dateRange}\n setValue={props.referees.setDateRange}\n /> */}\n {body}\n </Flex>\n );\n};\n\nconst DateFiler: FC<{\n value?: DateRange;\n setValue: any;\n}> = (props) => {\n return (\n <Flex width={\"100%\"} height={49} className=\"oui-border-b oui-border-line-6\">\n <div>\n <DatePicker.range\n size=\"xs\"\n value={props.value}\n onChange={(range) => {\n props.setValue(range);\n }}\n max={90}\n disabled={{\n after: new Date(),\n }}\n />\n </div>\n </Flex>\n );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { DateRange } from \"../../../utils/types\";\nimport { format, subDays } from \"date-fns\";\nimport {\n RefferalAPI,\n useMediaQuery,\n useRefereeInfo,\n useReferralRebateSummary,\n} from \"@orderly.network/hooks\";\nimport { usePagination } from \"@orderly.network/ui\";\n\nexport interface ListReturns<T> {\n data: T;\n meta: {\n count: number;\n page: number;\n pageSize: number;\n pageTotal: number;\n };\n onPageChange: (page: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n dateRange?: DateRange;\n setDateRange: React.Dispatch<React.SetStateAction<DateRange | undefined>>;\n isLoading?: boolean;\n loadMore?: () => void;\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, setPageSize, parseMeta } = 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 onPageChange = (page: number) => {\n setPage(page);\n };\n\n const onPageSizeChange = (pageSize: number) => {\n console.log(\"page size change\", pageSize);\n \n setPageSize(pageSize);\n // if (meta?.total) {\n // const state = parseMeta({\n // total: meta?.total,\n // current_page: page,\n // records_per_page: pageSize,\n // });\n // console.log(\"page size change 222\", {\n // total: meta?.total,\n // current_page: page,\n // records_per_page: pageSize,\n // }, state);\n \n // setPage(state.page);\n // }\n };\n\n // const loadMore = () => {\n // setPage(page + 1);\n // };\n\n return {\n data: commissionData || undefined,\n meta: parseMeta(meta),\n onPageChange,\n onPageSizeChange,\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, setPageSize, parseMeta } = 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 onPageChange = (page: number) => {\n setPage(page);\n };\n\n const onPageSizeChange = (pageSize: number) => {\n setPageSize(pageSize);\n };\n\n // const loadMore = () => {\n // setPage(page + 1);\n // };\n\n return {\n data: commissionData || undefined,\n meta: parseMeta(meta),\n onPageChange,\n onPageSizeChange,\n dateRange: commissionRange,\n setDateRange: setCommissionRange,\n isLoading,\n loadMore,\n };\n};\n","import { useCommissionAndRefereesScript } from \"./commissionAndReferees.script\";\nimport { CommissionAndReferees } from \"./commissionAndReferees.ui\";\n\nexport const CommissionAndRefereesWidget = () => {\n const state = useCommissionAndRefereesScript();\n return <CommissionAndReferees {...state} />;\n};\n","import { Flex, Box, cn } from \"@orderly.network/ui\";\nimport { SummaryWidget } from \"./summary\";\nimport { TitleStatisticWidget } from \"./titleStatistic\";\nimport { RebatesWidget } from \"./rebates\";\nexport const TraderPage = () => {\n return (\n <Flex\n id=\"oui-affiliate-trader-page\"\n className={cn(\n \"oui-h-lvw oui-w-full\",\n // padding\n // \"oui-p-4 lg:oui-p-6 xl:oui-p-3\",\n \"oui-font-semibold\"\n )}\n direction={\"column\"}\n gap={4}\n >\n <Flex\n width={\"100%\"}\n gap={4}\n className=\"oui-flex oui-flex-col xl:oui-flex-row xl:oui-items-stretch\"\n >\n <SummaryWidget />\n <TitleStatisticWidget />\n </Flex>\n <RebatesWidget />\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Button, Flex, Select, Text } from \"@orderly.network/ui\";\nimport { SummaryReturns } from \"./summary.script\";\nimport { USDCIcon } from \"../../../components/usdcIcon\";\nimport { commifyOptional } from \"@orderly.network/utils\";\n\nexport const Summary: FC<SummaryReturns> = (props) => {\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=\"Trading vol. (USDC)\" {...props} />\n </Flex>\n );\n};\nconst Title: FC<SummaryReturns> = (props) => {\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\">Your referrer</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 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 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 return (\n <Flex direction={\"row\"} width={\"100%\"} justify={\"between\"} gap={3}>\n <Text className=\"oui-text-sm\">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 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 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>\n {commifyOptional(props.rebates, { fix: 2, fallback: \"0\" })}\n </Text>\n </Flex>\n </Flex>\n );\n};\n\nconst Row: FC<\n SummaryReturns & {\n title: string;\n }\n> = (props) => {\n return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text\n intensity={54}\n className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\"\n >\n {props.title}\n </Text>\n <Text className=\"oui-text-xs md:oui-text-sm xl:oui-text-base\">\n {commifyOptional(props.vol, { fix: 2, fallback: \"0\" })}\n </Text>\n </Flex>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport { useReferralContext } from \"../../../hooks\";\nimport { SummaryFilter } from \"../../../utils/types\";\nimport { Decimal } from \"@orderly.network/utils\";\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 [period, setPeriod] = useState<SummaryFilter>(\"All\");\n const periodTypes: {\n label: SummaryFilter;\n value: SummaryFilter;\n }[] = [\n { label: \"All\", value: \"All\" },\n { label: \"1D\", value: \"1D\" },\n { label: \"7D\", value: \"7D\" },\n { label: \"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\n const rebateText = useMemo(() => {\n if (rebate !== undefined) {\n return (\n new Decimal(rebate)\n .mul(100)\n .toDecimalPlaces(2, Decimal.ROUND_DOWN)\n .toString() + \"%\"\n );\n }\n return \"-\";\n }, [rebate]);\n\n const onPeriodChange = (item: string) => {\n setPeriod(item as SummaryFilter);\n };\n return {\n period,\n periodTypes,\n onPeriodChange,\n rebates,\n vol,\n rebateText,\n code,\n };\n};\n","import { useSummaryScript } from \"./summary.script\";\nimport { Summary } from \"./summary.ui\";\n\nexport const SummaryWidget = () => {\n const state = useSummaryScript();\n return <Summary {...state} />;\n};\n","import { FC } from \"react\";\nimport { Flex, Select, Text } from \"@orderly.network/ui\";\nimport { VolBarChart } from \"@orderly.network/chart\";\nimport { TitleStatisticReturns } from \"./titleStatistic.script\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport const TitleStatistic: FC<TitleStatisticReturns> = (props) => {\n return (\n <Flex\n id=\"oui-affiliate-trader-titleStatistic\"\n r={\"2xl\"}\n p={6}\n width={\"100%\"}\n gap={4}\n direction={\"column\"}\n className=\"oui-bg-base-9 xl:oui-flex-1\"\n >\n <Title {...props} />\n <Flex className=\"oui-min-h-[170px] oui-h-full oui-w-full oui-flex oui-flex-row oui-items-stretch\">\n <VolBarChart\n data={props.dataSource}\n colors={{ fill: \"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 return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">Statistics</Text>\n <Flex direction={\"row\"} gap={2} className={\"oui-min-w-14\"}>\n <Select.options\n size={\"xs\"}\n value={props.period}\n onValueChange={props.onPeriodChange}\n options={props.periodTypes}\n />\n <Select.options\n size={\"xs\"}\n value={props.volType}\n onValueChange={props.onVolTypeChange}\n options={props.volTypes}\n />\n </Flex>\n </Flex>\n );\n};\n","import { useRefereeRebateSummary } from \"@orderly.network/hooks\";\nimport { format, subDays } from \"date-fns\";\nimport { useMemo, useState } from \"react\";\nimport { useReferralContext } from \"../../../hooks\";\nimport { BarDayFilter } from \"../../../utils/types\";\nimport { VolChartDataItem } from \"@orderly.network/chart\";\nimport { fillData } from \"../../../utils/chartUtils\";\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 [period, setPeriod] = useState<BarDayFilter>(\"7\");\n const periodTypes = [\n { label: \"7D\", value: \"7\" },\n { label: \"30D\", value: \"30\" },\n { label: \"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: \"Rebate\", value: \"rebate\" },\n { label: \"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, ReactNode } from \"react\";\nimport {\n Column,\n DataTable,\n DatePicker,\n Divider,\n Flex,\n ListView,\n Pagination,\n Statistic,\n Text,\n} from \"@orderly.network/ui\";\nimport { RebatesItem, RebatesReturns } from \"./rebates.script\";\nimport { commifyOptional } from \"@orderly.network/utils\";\nimport { subDays } from \"date-fns\";\nimport { useMediaQuery } from \"@orderly.network/hooks\";\nimport { AuthGuardDataTable } from \"@orderly.network/ui-connector\";\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 return (\n <Flex direction={\"row\"} justify={\"between\"} width={\"100%\"}>\n <Text className=\"oui-text-lg\">My rebates</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 layout767 = useMediaQuery(\"(max-width: 767px)\");\n\n const columns: Column<RebatesItem>[] = [\n {\n title: \"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: \"Trading vol. (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: \"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 classNames={{\n header: \"oui-text-xs oui-text-base-contrast-36 oui-bg-base-9\",\n body: \"oui-text-xs oui-text-base-contrast-80\",\n }}\n >\n <Pagination\n {...props.meta}\n onPageChange={props.onPageChange}\n onPageSizeChange={props.onPageSizeChange}\n />\n </AuthGuardDataTable>\n );\n};\n\nconst Cell = (props: { item: RebatesItem }) => {\n return (\n <Flex direction={\"column\"} width={\"100%\"}>\n <Flex width={\"100%\"} gap={1}>\n <Statistic\n label=\"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=\"Trading vol. (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=\"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 { useMemo, useState } from \"react\";\nimport { DateRange } from \"../../../utils/types\";\nimport {\n useRefereeRebateSummary,\n RefferalAPI,\n useDaily,\n} from \"@orderly.network/hooks\";\nimport { useReferralContext } from \"../../../hooks\";\nimport { compareDate, formatDateTimeToUTC } from \"../../../utils/utils\";\nimport { subDays, toDate } from \"date-fns\";\nimport { usePagination } from \"@orderly.network/ui\";\n\nexport type RebatesItem = RefferalAPI.RefereeRebateSummary & {\n vol?: number;\n};\n\nexport const useRebatesScript = () => {\n const [dateRange, setDateRange] = useState<DateRange | undefined>({\n from: subDays(new Date(), 90),\n to: subDays(new Date(), 1),\n });\n\n const {\n data: distributionData,\n mutate,\n isLoading,\n } = useRefereeRebateSummary({\n startDate: dateRange?.from,\n endDate: dateRange?.to,\n });\n // const { dailyVolume } = useReferralContext();\n\n const { data: dailyVolume, mutate: dailyVolumeMutate, } = useDaily({\n startDate: dateRange?.to,\n endDate: dateRange?.from,\n });\n\n const dataSource = useMemo((): RebatesItem[] => {\n if (typeof distributionData === \"undefined\") return [];\n\n return (\n distributionData\n // .filter((item: any) => item.status === \"COMPLETED\" && item.type === \"REFEREE_REBATE\")\n .map((item) => {\n const createdTime = item.date;\n\n const volume = dailyVolume?.filter((item) => {\n return compareDate(toDate(createdTime), toDate(item.date));\n })?.[0];\n if (volume) {\n return { ...item, vol: volume.perp_volume };\n }\n\n return item;\n })\n );\n }, [distributionData, dailyVolume]);\n\n let displayDate = undefined;\n if ((dataSource?.length || 0) > 0) {\n displayDate = formatDateTimeToUTC(dataSource?.[0].date);\n }\n\n const { page, pageSize, setPage, setPageSize, parseMeta } = usePagination();\n\n const totalCount = useMemo(() => dataSource.length, [dataSource]);\n const onPageChange = (page: number) => {\n setPage(page);\n };\n\n const onPageSizeChange = (pageSize: number) => {\n setPageSize(pageSize);\n };\n\n const newData = useMemo(() => {\n const startIndex = (page - 1) * pageSize;\n const endIndex = startIndex + pageSize;\n return dataSource.slice(startIndex, endIndex);\n }, [dataSource, page, pageSize]);\n\n const meta = parseMeta({\n total: totalCount,\n current_page: page,\n records_per_page: pageSize,\n });\n\n return {\n dateRange,\n setDateRange,\n displayDate,\n dataSource: newData,\n meta,\n onPageChange,\n onPageSizeChange,\n isLoading,\n };\n};\n\nexport type RebatesReturns = ReturnType<typeof useRebatesScript>;\n","import { useRebatesScript } from \"./rebates.script\";\nimport { Rebates } from \"./rebates.ui\";\n\nexport const RebatesWidget = () => {\n const state = useRebatesScript();\n return <Rebates {...state} />;\n};\n","import { Flex, Box, cn } from \"@orderly.network/ui\";\nimport { BecomeAffiliateWidget } from \"./becomeAffiliate\";\nimport { TopWidget } from \"./top\";\nimport { CardWidget } from \"./card\";\n\nexport const HomePage = () => {\n return (\n <Flex\n id=\"oui-affiliate-home-page\"\n className={cn(\n \"oui-h-lvw \",\n // padding\n // \"oui-p-4 lg:oui-p-6 xl:oui-p-3\",\n \"oui-font-semibold\"\n )}\n direction={\"column\"}\n gap={4}\n >\n <TopWidget />\n <CardWidget />\n <BecomeAffiliateWidget />\n </Flex>\n );\n};\n","import { FC, ReactNode } from \"react\";\nimport { Flex, Text, cn } from \"@orderly.network/ui\";\nimport { BecomeAffiliateReturns } from \"./becomeAffiliate.script\";\n\nexport const BecomeAffiliate: FC<BecomeAffiliateReturns> = (props) => {\n\n if (typeof props.overwrite === \"function\") {\n return props.overwrite?.(props.state);\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>Becoming an affiliate is easy</Text>\n <Flex className=\"oui-flex oui-flex-col lg:oui-flex-row oui-gap-3 lg:oui-items-stretch lg:oui-w-full\">\n <Item\n icon={<ApplyIcon />}\n title=\"Apply\"\n content=\"Fill out the application form\"\n />\n <div className=\"oui-flex-shrink lg:-oui-rotate-90 lg:oui-flex lg:oui-flex-row lg:oui-items-center lg:oui-justify-center\">\n <ArrowDownIcon />\n </div>\n <Item\n icon={<ShareIcon />}\n title=\"Share\"\n content=\"Unlock your affiliate link and share it with your community\"\n />\n <div className=\"oui-flex-shrink lg:-oui-rotate-90 lg:oui-flex lg:oui-flex-row lg:oui-items-center lg:oui-justify-center\">\n <ArrowDownIcon />\n </div>\n <Item\n icon={<EarnIcon />}\n title=\"Earn\"\n content=\"Get paid and receive special treatment 24/7, 365\"\n />\n </Flex>\n </Flex>\n );\n};\n\nconst Item: FC<{\n icon: ReactNode;\n title: string;\n content: string;\n}> = (props) => {\n return (\n <Flex\n className={cn(\n \"oui-flex oui-flex-row oui-gap-3\",\n // lg\n \"lg:oui-flex-col lg:oui-gap-[6px] lg:oui-flex-1\"\n )}\n width={\"100%\"}\n >\n <div className=\"oui-flex-shrink-0\">{props.icon}</div>\n <Flex\n className={cn(\n \"oui-flex oui-flex-col oui-items-start oui-h-full oui-justify-between\",\n // lg\n \"lg:oui-items-center lg:oui-justify-start\"\n )}\n >\n <Text className=\"oui-text-sm md:oui-text-base 2xl:oui-text-lg lg:oui-text-center\">\n {props.title}\n </Text>\n <Text className=\"oui-text-2xs md:oui-text-xs 2xl:oui-text-sm 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 (\n <BecomeAffiliate {...state}/>\n );\n};\n","import { FC } from \"react\";\nimport { TitleReturns } from \"./title.script\";\n\nexport const Title: FC<TitleReturns> = (props) => {\n return (\n <div\n id=\"oui-affiliate-home-title\"\n className=\"oui-text-3xl md:oui-text-3xl lg:oui-text-4xl xl:oui-text-5xl oui-font-bold oui-text-center\"\n >\n <span dangerouslySetInnerHTML={{ __html: \"Earn more as a \" }} />\n <span\n dangerouslySetInnerHTML={{ __html: ` ${props.gradientTitle}` }}\n className=\"oui-gradient-brand oui-text-transparent oui-bg-clip-text\"\n style={{\n // @ts-ignore\n '--oui-gradient-angle': \"270deg\"\n }}\n />\n <span dangerouslySetInnerHTML={{ __html: \" affiliate\" }} />\n </div>\n );\n};\n","import { useReferralContext } from \"../../../hooks\";\n\nexport type TitleReturns = {\n gradientTitle: string;\n};\n\nexport const useTitleScript = (): TitleReturns => {\n const { overwrite } = useReferralContext();\n\n return {\n gradientTitle: overwrite?.shortBrokerName || \"Orderly\",\n };\n};\n","import { useTitleScript } from \"./title.script\";\nimport { Title } from \"./title.ui\";\n\nexport const TitleWidget = () => {\n const state = useTitleScript();\n return <Title {...state} />;\n};\n","import { FC } from \"react\";\nimport { SubtitleReturns } from \"./subtitle.script\";\nimport { Flex, Text } from \"@orderly.network/ui\";\n\nexport const Subtitle: FC<SubtitleReturns> = (props) => {\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>Grow your brand | Get 40% commission | Unlock exclusive perks</Text>\n <Flex\n direction={\"row\"}\n gap={1}\n className=\"oui-text-primary-light oui-fill-primary-light hover:oui-text-primary 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=\"Learn how it works\" />\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M4.008 7.995c0-.368.298-.666.666-.666H9.71L7.733 5.331l.937-.936 3.143 3.122c.13.13.195.304.195.479a.67.67 0 0 1-.195.478L8.67 11.596l-.937-.937 1.978-1.998H4.674a.666.666 0 0 1-.666-.666\" />\n </svg>\n </Flex>\n </Flex>\n );\n};\n","import { RefferalAPI } from \"@orderly.network/hooks\";\nimport { BuildNode, useReferralContext } from \"../../../hooks\";\nimport { ReactNode } from \"react\";\n\nexport type SubtitleReturns = {\n onLearnAffiliate?: () => void;\n learnAffiliateUrl?: string;\n \n};\n\nexport const useSubtitleScript = (): SubtitleReturns => {\n const state =\n useReferralContext();\n\n const { onLearnAffiliate, learnAffiliateUrl,} = state;\n\n return {\n onLearnAffiliate,\n learnAffiliateUrl,\n };\n};\n","import { useSubtitleScript } from \"./subtitle.script\";\nimport { Subtitle } from \"./subtitle.ui\";\n\nexport const SubtitleWidget = () => {\n const state = useSubtitleScript();\n return <Subtitle {...state} />;\n};\n","import { FC } from \"react\";\nimport { TopReturns } from \"./top.script\";\nimport { TitleWidget } from \"../title\";\nimport { SubtitleWidget } from \"../subtitle\";\nimport { Flex } from \"@orderly.network/ui\";\n\nexport const Top: FC<TopReturns> = (props) => {\n if (props.overwriteTop !== undefined) {\n return props.overwriteTop?.(props.state);\n }\n return (\n <Flex id=\"oui-affiliate-home-top\" direction=\"column\" gap={6}>\n <TitleWidget />\n <SubtitleWidget />\n </Flex>\n );\n};\n","import {\n BuildNode,\n ReferralContextReturns,\n useReferralContext,\n} from \"../../../hooks\";\n\nexport type TopReturns = {\n state: ReferralContextReturns;\n overwriteTop?: BuildNode;\n};\n\nexport const useTopScript = (): TopReturns => {\n const state = useReferralContext();\n\n return {\n overwriteTop: state.overwrite?.ref?.top,\n state,\n };\n};\n","import { useTopScript } from \"./top.script\";\nimport { Top } from \"./top.ui\";\n\nexport const TopWidget = () => {\n const state = useTopScript();\n return (\n <Top {...state}/>\n );\n};\n","import { FC } from \"react\";\nimport { Flex, Text } from \"@orderly.network/ui\";\nimport { CardReturns } from \"./card.script\";\nimport { AsAnAffiliateWidget } from \"../asAnAffilate\";\nimport { AsTraderWidget } from \"../asATrader\";\n\nexport const Card: FC<CardReturns> = (props) => {\n if (typeof props.overwrite === \"function\") {\n return props.overwrite?.(props.state);\n }\n return (\n <Flex\n id=\"oui-affiliate-home-card\"\n className=\"oui-flex oui-flex-col xl:oui-flex-row oui-gap-6 xl:oui-gap-[36px] oui-w-full oui-items-stretch\"\n >\n <AsAnAffiliateWidget />\n <AsTraderWidget />\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Button, cn, Flex, Text, Tooltip } from \"@orderly.network/ui\";\nimport { AsAnAffiliateReturns } from \"./asAnAffiliate.script\";\nimport { USDCIcon } from \"../../../components/usdcIcon\";\nimport { ArrowRightIcon } from \"../../../components/arrowRightIcon\";\nimport { commifyOptional } from \"@orderly.network/utils\";\n\nexport const AsAnAffiliate: FC<AsAnAffiliateReturns> = (props) => {\n return (\n <Flex\n id=\"oui-affiliate-home-asAnAffiliate\"\n gradient=\"primary\"\n r={\"2xl\"}\n p={6}\n gap={6}\n direction={\"column\"}\n angle={180}\n width={\"100%\"}\n justify={\"between\"}\n >\n <Flex\n height={80}\n direction={\"row\"}\n gap={3}\n itemAlign={\"start\"}\n width={\"100%\"}\n justify={\"between\"}\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"between\"}\n className=\"oui-h-full\"\n >\n <Text className=\"oui-text-lg md:oui-text-xl lg:oui-text-2xl xl:oui-text-3xl\">\n {props.isAffiliate ? \"Affiliate\" : \"As an affiliate\"}\n </Text>\n <Text\n className={cn(\n \"oui-text-xs md:oui-text-sm 2xl:oui-text-base oui-text-base-contrast-54\",\n props.isAffiliate && \"oui-hidden\"\n )}\n >\n Onboard traders to earn passive income\n </Text>\n </Flex>\n <div className=\"oui-flex-shrink-0\">\n <Icon />\n </div>\n </Flex>\n <Bottom {...props} />\n </Flex>\n );\n};\n\nconst Icon = () => {\n return (\n <svg\n width=\"72\"\n height=\"72\"\n viewBox=\"0 0 72 72\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"xl:oui-w-[90px] xl:oui-h-[90px] \"\n >\n <path\n d=\"M35.997 5.86c-16.569 0-29.944 13.43-30 30-.056 16.545 13.445 30.06 30 30.093s30.03-13.665 30-30.093c-.03-16.57-13.432-30-30-30m0 6c13.255 0 24 10.746 24 24 0 6.75-2.812 12.834-7.297 17.196-2.209-4.78-6.955-8.196-12.39-8.196h-8.626c-5.432 0-10.164 3.375-12.375 8.157-4.485-4.362-7.312-10.407-7.312-17.157 0-13.254 10.745-24 24-24m0 6c-6.628 0-12 5.373-12 12s5.372 12 12 12c6.627 0 12-5.373 12-12s-5.373-12-12-12\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n <path\n d=\"M72 57c0 8.284-6.716 15-15 15s-15-6.716-15-15 6.716-15 15-15 15 6.716 15 15\"\n fill=\"#1828C3\"\n />\n <path\n d=\"M53.624 51.45a4.125 4.125 0 0 0-4.125 4.125c0 2.388 1.36 4.641 3.61 6.703a21 21 0 0 0 2.414 1.875c.287.194.556.37.797.516.147.089.243.154.304.187a.79.79 0 0 0 .75 0c.061-.033.158-.098.305-.187.24-.147.51-.322.797-.516a21 21 0 0 0 2.414-1.875c2.25-2.062 3.61-4.315 3.61-6.703a4.125 4.125 0 0 0-4.126-4.125c-1.294 0-2.557.705-3.351 1.734-.775-1.047-2.034-1.734-3.399-1.734\"\n fill=\"#fff\"\n fillOpacity=\".98\"\n />\n </svg>\n );\n};\n\nconst Bottom: FC<AsAnAffiliateReturns> = (props) => {\n const 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 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 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 content={props.wrongNetwork ? 'Please switch to a supported network to continue.' : \"Please connect your wallet to use this function\"}>\n <Button\n variant=\"contained\"\n color=\"light\"\n onClick={props.becomeAnAffiliate}\n disabled={!props.isSignIn || props.wrongNetwork}\n >\n Become an affiliate\n </Button>\n </Tooltip>\n <Flex\n direction={\"column\"}\n justify={\"between\"}\n className=\"oui-h-full\"\n itemAlign={\"end\"}\n >\n <Text className=\"oui-text-base md:oui-text-lg lg:oui-text-xl 2xl:oui-text-2xl\">\n 40%~60%\n </Text>\n <Text className=\"oui-text-2xs md:oui-text-xs 2xl:oui-text-sm oui-text-base-contrast-54\">\n Commission\n </Text>\n </Flex>\n </>\n );\n };\n\n return (\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n width={\"100%\"}\n itemAlign={\"end\"}\n >\n {content()}\n </Flex>\n );\n};\n","import { FC } from \"react\";\n\nexport const ArrowRightIcon: FC<{\n className?: string;\n}> = (props) => {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"white\"\n fillOpacity=\"0.98\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}\n >\n <path d=\"M4.00806 7.9952C4.00806 7.6272 4.30626 7.3292 4.67406 7.3292C4.99259 7.3292 8.71739 7.3292 9.71072 7.3292L7.73339 5.3312L8.67005 4.39453L11.8127 7.51654C11.9434 7.64654 12.0081 7.8212 12.0081 7.99587C12.0081 8.16987 11.9427 8.34388 11.8127 8.47388L8.67005 11.5959L7.73339 10.6592L9.71072 8.66119C8.71739 8.66119 4.99259 8.66119 4.67406 8.66119C4.30626 8.66119 4.00806 8.3632 4.00806 7.9952Z\" />\n </svg>\n );\n};\n","import { RefferalAPI as API, useAccount } from \"@orderly.network/hooks\";\nimport { TabTypes, useReferralContext } from \"../../../hooks\";\nimport { MockData } from \"../../../utils/mockData\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\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};\n\nexport const useAsAnAffiliateScript = (): AsAnAffiliateReturns => {\n const {\n isAffiliate,\n isLoading,\n referralInfo,\n becomeAnAffiliateUrl,\n setShowHome,\n setTab,\n wrongNetwork,\n } = useReferralContext();\n\n const { state } = useAccount();\n const isSignIn = state.status === AccountStatusEnum.EnableTrading;\n\n const becomeAnAffiliate = () => {\n window.open(becomeAnAffiliateUrl, \"_blank\");\n };\n\n const onEnterAffiliatePage = () => {\n setTab(TabTypes.affiliate);\n setShowHome(false);\n };\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 };\n};\n","import { useAsAnAffiliateScript } from \"./asAnAffiliate.script\";\nimport { AsAnAffiliate } from \"./asAnAffiliate.ui\";\n\nexport const AsAnAffiliateWidget = () => {\n const state = useAsAnAffiliateScript();\n return <AsAnAffiliate {...state} />;\n};\n","import { FC, useState } from \"react\";\nimport {\n Button,\n cn,\n Dialog,\n DialogBody,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n Divider,\n Flex,\n Input,\n inputFormatter,\n Text,\n TextField,\n Tooltip,\n} from \"@orderly.network/ui\";\nimport { AsTraderReturns } from \"./asTrader.script\";\nimport { USDCIcon } from \"../../../components/usdcIcon\";\nimport { ArrowRightIcon } from \"../../../components/arrowRightIcon\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { useCheckReferralCode, useMutation } from \"@orderly.network/hooks\";\nimport { commifyOptional } from \"@orderly.network/utils\";\n\nexport const AsTrader: FC<AsTraderReturns> = (props) => {\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 ? \"Trader\" : \"As a Trader\"}\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 Onboard traders to earn passive income\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 content = () => {\n if (props.isTrader && !props.wrongNetwork) {\n const totalReferrerRebate =\n props.referralInfo?.referee_info?.total_referee_rebate;\n\n return (\n <>\n <Flex direction={\"column\"} itemAlign={\"start\"} gap={2}>\n <Text className=\"oui-text-2xs md:oui-text-xs xl:oui-text-sm\">\n Commission {<Text intensity={36}>(USDC)</Text>}\n </Text>\n <Flex direction={\"row\"} gap={1}>\n <USDCIcon />\n <Text className=\"oui-text-base md:oui-text-lg lg:oui-text-xl xl:oui-text-2xl\">\n {commifyOptional(totalReferrerRebate, {\n fix: 2,\n fallback: \"0\",\n })}\n </Text>\n </Flex>\n </Flex>\n\n <Flex\n direction={\"row\"}\n gap={1}\n justify={\"end\"}\n itemAlign={\"center\"}\n className=\"oui-cursor-pointer\"\n onClick={(e) => {\n props?.onEnterTraderPage?.();\n }}\n >\n <Text className=\"oui-text-sm md:oui-text-base xl:oui-text-lg\">\n Enter\n </Text>\n <ArrowRightIcon className=\"md:oui-w-[18px] md:oui-h-[18px] lg:oui-w-[20px] lg:oui-h-[20px] xl:oui-w-[24px] xl:oui-h-[24px]\" />\n </Flex>\n </>\n );\n }\n\n return (\n <>\n <EntryCode {...props} />\n <Flex\n direction={\"column\"}\n justify={\"between\"}\n className=\"oui-h-full\"\n itemAlign={\"end\"}\n >\n <Text className=\"oui-text-base md:oui-text-lg lg:oui-text-xl 2xl:oui-text-2xl\">\n 0%~20%\n </Text>\n <Text className=\"oui-text-2xs md:oui-text-xs 2xl:oui-text-sm oui-text-base-contrast-54\">\n Rebate\n </Text>\n </Flex>\n </>\n );\n };\n\n return (\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n width={\"100%\"}\n itemAlign={\"end\"}\n >\n {content()}\n </Flex>\n );\n};\n\nconst EntryCode: FC<AsTraderReturns> = (props) => {\n return (\n <Dialog open={props.open} onOpenChange={props.setOpen}>\n <DialogTrigger>\n <Tooltip content={props.wrongNetwork ? 'Please switch to a supported network to continue.' : \"Please connect your wallet to use this function\"}>\n <Button variant=\"contained\" color=\"light\" disabled={!props.isSignIn || props.wrongNetwork}>\n Enter code\n </Button>\n </Tooltip>\n </DialogTrigger>\n <DialogContent className=\"oui-w-[320px] oui-font-semibold\">\n <DialogHeader>\n <DialogTitle>Bind a referral code</DialogTitle>\n </DialogHeader>\n <Divider />\n <DialogBody>\n <Text size=\"sm\" intensity={54}>\n Bind a referral code to earn trading fee rebates.\n </Text>\n\n <TextField\n className=\"oui-w-full oui-mt-4\"\n placeholder=\"Referral code\"\n value={props.code}\n onChange={(e) => {\n props.setCode(e.target.value);\n }}\n formatters={[\n inputFormatter.createRegexInputFormatter(/[^A-Z0-9]/g),\n ]}\n onClean={() => {\n props.setCode(\"\");\n }}\n label={\"Enter referral code\"}\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 ? \"This referral code does not exist.\"\n : undefined\n }\n color={!props.isExist && !props.isLoading && props.code.length > 0? \"danger\" : undefined}\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 Confirm\n </Button>\n </Flex>\n </DialogBody>\n </DialogContent>\n </Dialog>\n );\n};\n","import {\n RefferalAPI as API,\n useAccount,\n useCheckReferralCode,\n useMutation,\n} from \"@orderly.network/hooks\";\nimport { TabTypes, useReferralContext } from \"../../../hooks\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useState } from \"react\";\nimport { toast } from \"@orderly.network/ui\";\n\nexport const useAsTraderScript = () => {\n const {\n isTrader,\n referralInfo,\n setShowHome,\n bindReferralCodeState,\n setTab,\n mutate,\n wrongNetwork,\n } = useReferralContext();\n\n const { state } = useAccount();\n const isSignIn = state.status === AccountStatusEnum.EnableTrading;\n const onEnterTraderPage = () => {\n setTab(TabTypes.trader);\n setShowHome(false);\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 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(\"Referral code 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 = \"This referral code does not exist\";\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 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 };\n};\n\nexport type AsTraderReturns = ReturnType<typeof useAsTraderScript>;\n","import { useAsTraderScript } from \"./asTrader.script\";\nimport { AsTrader } from \"./asTrader.ui\";\n\nexport const AsTraderWidget = () => {\n const state = useAsTraderScript();\n return <AsTrader {...state} />;\n};\n","import {\n BuildNode,\n ReferralContextReturns,\n useReferralContext,\n} from \"../../../hooks\";\n\nexport type CardReturns = {\n state: ReferralContextReturns;\n overwrite?: BuildNode;\n};\n\nexport const useCardScript = (): CardReturns => {\n const state = useReferralContext();\n\n return {\n overwrite: state.overwrite?.ref?.card,\n state,\n };\n};\n","import { useCardScript } from \"./card.script\";\nimport { Card } from \"./card.ui\";\n\nexport const CardWidget = () => {\n const state = useCardScript();\n return <Card {...state} />;\n};\n","import { ReactNode, useEffect, useMemo, useState } 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\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\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 console.log(\" tab\", tab, tableValue);\n \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 { Box, ExtensionPositionEnum, ExtensionSlot } from \"@orderly.network/ui\";\nimport { LayoutProvider } from \"./context\";\nimport { Scaffold, SideBar, SideBarProps } from \"@orderly.network/ui-scaffold\";\nimport { PropsWithChildren } from \"react\";\n\nexport type AffiliateLayoutProps = {\n} & SideBarProps;\n\nexport const AffiliateLayout = (props: PropsWithChildren<AffiliateLayoutProps>) => {\n const { ...rest } = props;\n return (\n <Scaffold leftSidebar={<LeftSidebar {...rest} />}>\n <Box mx={3} my={6}>\n {props.children}\n </Box>\n </Scaffold>\n );\n // return (\n // <LayoutProvider>\n // <div className=\"oui-h-dvh\">\n // <ExtensionSlot position={ExtensionPositionEnum.MainNav} />\n // <div\n // className=\"oui-grid oui-h-full\"\n // style={{ gridAutoColumns: \"160px 1fr\" }}\n // >\n // <Box p={4} className=\"oui-bg-base-9 oui-rounded-2xl\">\n // <ExtensionSlot position={ExtensionPositionEnum.SideNav} />\n // </Box>\n // <div></div>\n // </div>\n // </div>\n // </LayoutProvider>\n // );\n};\n\nconst LeftSidebar = (props: SideBarProps) => {\n console.log(\"xxxxxxx left sidebar\", props.items);\n \n return (\n <Box p={4} m={3} border borderColor={8} r={\"xl\"}>\n <SideBar {...props} />\n </Box>\n );\n};","import { useMediaQuery } from \"@orderly.network/hooks\";\nimport type { SideBarProps } from \"@orderly.network/ui-scaffold\";\nimport React from \"react\";\nimport { useMemo, useState } from \"react\";\n\nexport const useLayoutBuilder = (): SideBarProps => {\n const [current, setCurrent] = useState(\"/\");\n // const [sideOpen, setSideOpen] = useState(true);\n\n const items = useMemo(() => {\n return [\n {\n name: \"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=\"#59B0FE\" />\n <stop offset=\"1\" stopColor=\"#26FEFE\" />\n </linearGradient>\n </defs>\n </svg>\n ),\n },\n {\n name: \"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 }, []);\n\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"]}
|