diff --git a/apps/next/src/pages/_app.tsx b/apps/next/src/pages/_app.tsx index ebc0776b34..979d12dbe3 100644 --- a/apps/next/src/pages/_app.tsx +++ b/apps/next/src/pages/_app.tsx @@ -40,6 +40,7 @@ import { CreatorChannelsShareScreen } from "app/screens/creator-channles-share"; import { CreatorTokenBuyScreen } from "app/screens/creator-token/buy-creator-token"; import { CreatorTokenInviteSignInScreen } from "app/screens/creator-token/invite-sign-in"; import { CreatorTokensExplanationScreen } from "app/screens/creator-tokens-explanation"; +import { CreatorTokensSelfServeExplainerScreen } from "app/screens/creator-tokens-self-serve-explainer"; import { CreatorTokensShareModalScreen } from "app/screens/creator-tokens-share"; import { EnterInviteCodeModalScreen } from "app/screens/creatro-tokens-enter-invite-modal"; import { DetailsScreen } from "app/screens/details"; @@ -266,6 +267,7 @@ function App({ Component, pageProps, router }: AppProps) { + {/* Login should be the last so it renders on top of others if needed */} diff --git a/packages/app/components/home/claim-button-iconic.tsx b/packages/app/components/claim/claim-button-iconic.tsx similarity index 98% rename from packages/app/components/home/claim-button-iconic.tsx rename to packages/app/components/claim/claim-button-iconic.tsx index 9a1a5a2b97..e51dd2678e 100644 --- a/packages/app/components/home/claim-button-iconic.tsx +++ b/packages/app/components/claim/claim-button-iconic.tsx @@ -2,7 +2,7 @@ import { useCallback } from "react"; import { Platform } from "react-native"; import { useIsDarkMode } from "@showtime-xyz/universal.hooks"; -import { Showtime, Check2 } from "@showtime-xyz/universal.icon"; +import { Saved, Check2 } from "@showtime-xyz/universal.icon"; import { useRouter } from "@showtime-xyz/universal.router"; import { Skeleton } from "@showtime-xyz/universal.skeleton"; import { colors } from "@showtime-xyz/universal.tailwind"; @@ -236,7 +236,7 @@ export function ClaimButtonIconic({ buttonColor={isDark ? "#fff" : colors.gray[900]} {...rest} > - + ); } diff --git a/packages/app/components/creator-token/self-serve-explainer.tsx b/packages/app/components/creator-token/self-serve-explainer.tsx index 6f27f56f6f..715471fdbc 100644 --- a/packages/app/components/creator-token/self-serve-explainer.tsx +++ b/packages/app/components/creator-token/self-serve-explainer.tsx @@ -1,4 +1,5 @@ import { useEffect } from "react"; +import { Platform } from "react-native"; import { Avatar } from "@showtime-xyz/universal.avatar"; import { Button } from "@showtime-xyz/universal.button"; @@ -36,12 +37,13 @@ export const SelfServeExplainer = () => { creatorTokenDeployStatus.pollDeployStatus(); }, [creatorTokenDeployStatus]); - console.log("creatorTokenDeployStatus", creatorTokenDeployStatus.status); - return ( You're invited to be first. diff --git a/packages/app/components/home/engagement-icons.tsx b/packages/app/components/home/engagement-icons.tsx index 2165c38c6e..c94e9d3492 100644 --- a/packages/app/components/home/engagement-icons.tsx +++ b/packages/app/components/home/engagement-icons.tsx @@ -6,8 +6,8 @@ import { View } from "@showtime-xyz/universal.view"; import { CreatorEditionResponse } from "app/hooks/use-creator-collection-detail"; import type { NFT } from "app/types"; +import { ClaimButtonIconic } from "../claim/claim-button-iconic"; import { NFTShareDropdown } from "../nft-share-dropdown"; -import { ClaimButtonIconic } from "./claim-button-iconic"; import { FeedCommentButton } from "./feed-comment-button"; export type EngagementIconsProps = { diff --git a/packages/app/components/home/header.tsx b/packages/app/components/home/header.tsx index 5a4044496f..a1635a7d41 100644 --- a/packages/app/components/home/header.tsx +++ b/packages/app/components/home/header.tsx @@ -35,7 +35,26 @@ const CreatorTokensBanner = () => { { - router.push("/creator-token/self-serve-explainer"); + console.log(123); + + const as = `/creator-token/self-serve-explainer`; + router.push( + Platform.select({ + native: as, + web: { + pathname: router.pathname, + query: { + ...router.query, + creatorTokensSelfServeExplainerModal: true, + }, + } as any, + }), + Platform.select({ + native: as, + web: router.asPath, + }), + { shallow: true } + ); // router.push("/creator-token/imalan/invite-sign-in"); }} tw="text-13 ml-2 font-bold text-gray-900 underline" diff --git a/packages/app/components/profile/profile-tab-bar.tsx b/packages/app/components/profile/profile-tab-bar.tsx index 139349afd4..869343a09f 100644 --- a/packages/app/components/profile/profile-tab-bar.tsx +++ b/packages/app/components/profile/profile-tab-bar.tsx @@ -2,7 +2,7 @@ import { useCallback } from "react"; import { Platform } from "react-native"; import { useIsDarkMode } from "@showtime-xyz/universal.hooks"; -import { SongsTab, SavedTab, TokensTab } from "@showtime-xyz/universal.icon"; +import { Songs, Saved, Tokens } from "@showtime-xyz/universal.icon"; import { ScollableTabBar, TabBarSingle, @@ -24,11 +24,11 @@ export const ProfileTabBar = (props: any) => { switch (route.key) { case "song_drops_created": - return ; + return ; case "song_drops_collected": - return ; + return ; case "tokens": - return ; + return ; default: return null; } diff --git a/packages/app/components/profile/profile-top.tsx b/packages/app/components/profile/profile-top.tsx index f7cc04c1da..1b14b88139 100644 --- a/packages/app/components/profile/profile-top.tsx +++ b/packages/app/components/profile/profile-top.tsx @@ -11,9 +11,14 @@ import { Button } from "@showtime-xyz/universal.button"; import { Chip } from "@showtime-xyz/universal.chip"; import { ClampText } from "@showtime-xyz/universal.clamp-text"; import { useIsDarkMode } from "@showtime-xyz/universal.hooks"; -import { InformationCircle, Lock } from "@showtime-xyz/universal.icon"; +import { + GiftSolid, + InformationCircle, + Lock, +} from "@showtime-xyz/universal.icon"; import { Image } from "@showtime-xyz/universal.image"; import { LightBox } from "@showtime-xyz/universal.light-box"; +import { Pressable } from "@showtime-xyz/universal.pressable"; import { PressableScale } from "@showtime-xyz/universal.pressable-scale"; import { useRouter } from "@showtime-xyz/universal.router"; import { useSafeAreaInsets } from "@showtime-xyz/universal.safe-area"; @@ -34,6 +39,7 @@ import { getProfileImage, getProfileName } from "app/utilities"; import { breakpoints } from "design-system/theme"; +import { ButtonGoldLinearGradient } from "../gold-gradient"; import { CreatorTokensPanel } from "./creator-tokens-panel"; import { ProfileSocial } from "./profile-social"; diff --git a/packages/app/components/profile/profile.web.tsx b/packages/app/components/profile/profile.web.tsx index bcdc765da0..0358db8252 100644 --- a/packages/app/components/profile/profile.web.tsx +++ b/packages/app/components/profile/profile.web.tsx @@ -17,9 +17,12 @@ import type { ParsedUrlQuery } from "querystring"; import { useSharedValue } from "react-native-reanimated"; import { useIsDarkMode } from "@showtime-xyz/universal.hooks"; +import { GiftSolid } from "@showtime-xyz/universal.icon"; import { InfiniteScrollList } from "@showtime-xyz/universal.infinite-scroll-list"; +import { Pressable } from "@showtime-xyz/universal.pressable"; import { useRouter } from "@showtime-xyz/universal.router"; import { Route, TabBarSingle } from "@showtime-xyz/universal.tab-view"; +import { colors } from "@showtime-xyz/universal.tailwind"; import { View } from "@showtime-xyz/universal.view"; import { Card } from "app/components/card"; @@ -47,6 +50,7 @@ import { formatProfileRoutes, getProfileImage } from "app/utilities"; import { Spinner } from "design-system/spinner"; import { EmptyPlaceholder } from "../empty-placeholder"; +import { ButtonGoldLinearGradient } from "../gold-gradient"; import { HeaderLeft } from "../header"; import { HeaderRightSm } from "../header/header-right.sm"; import { CreatorTokensPanel } from "./creator-tokens-panel"; @@ -245,10 +249,27 @@ const Profile = ({ username }: ProfileScreenProps) => { {isProfileMdScreen ? ( - + <> + + { + router.push("/profile/invite-creator-token"); + }} + > + + + + ) : null} @@ -260,6 +281,7 @@ const Profile = ({ username }: ProfileScreenProps) => { isError={isError} isSelf={isSelf} /> + { <> {isSelf ? ( - + + { + router.push("/profile/invite-creator-token"); + }} + > + + + ) : ( diff --git a/packages/app/screens/creator-tokens-self-serve-explainer.tsx b/packages/app/screens/creator-tokens-self-serve-explainer.tsx index b9ce53143d..2c5e552a4f 100644 --- a/packages/app/screens/creator-tokens-self-serve-explainer.tsx +++ b/packages/app/screens/creator-tokens-self-serve-explainer.tsx @@ -1,9 +1,13 @@ +import { Platform } from "react-native"; + +import { withModalScreen } from "@showtime-xyz/universal.modal-screen"; + import { SelfServeExplainer } from "app/components/creator-token/self-serve-explainer"; import { withColorScheme } from "app/components/memo-with-theme"; import { useUser } from "app/hooks/use-user"; import { useTrackPageViewed } from "app/lib/analytics"; -export const CreatorTokensSelfServeExplainerScreen = withColorScheme(() => { +const SelfServeExplainerScreen = withColorScheme(() => { useTrackPageViewed({ name: "Creator Tokens self serve explainer" }); useUser({ redirectTo: "/login", @@ -11,3 +15,17 @@ export const CreatorTokensSelfServeExplainerScreen = withColorScheme(() => { return ; }); + +const CreatorTokensSelfServeExplainerModal = withModalScreen( + SelfServeExplainerScreen, + { + title: "", + matchingPathname: "/creator-token/self-serve-explainer", + matchingQueryParam: "creatorTokensSelfServeExplainerModal", + disableBackdropPress: true, + } +); +export const CreatorTokensSelfServeExplainerScreen = + Platform.OS === "web" + ? CreatorTokensSelfServeExplainerModal + : SelfServeExplainerScreen; diff --git a/packages/design-system/icon/SavedTab.svg b/packages/design-system/icon/Saved.svg similarity index 100% rename from packages/design-system/icon/SavedTab.svg rename to packages/design-system/icon/Saved.svg diff --git a/packages/design-system/icon/SavedTab.tsx b/packages/design-system/icon/Saved.tsx similarity index 100% rename from packages/design-system/icon/SavedTab.tsx rename to packages/design-system/icon/Saved.tsx diff --git a/packages/design-system/icon/SongsTab.svg b/packages/design-system/icon/Songs.svg similarity index 100% rename from packages/design-system/icon/SongsTab.svg rename to packages/design-system/icon/Songs.svg diff --git a/packages/design-system/icon/SongsTab.tsx b/packages/design-system/icon/Songs.tsx similarity index 100% rename from packages/design-system/icon/SongsTab.tsx rename to packages/design-system/icon/Songs.tsx diff --git a/packages/design-system/icon/TokensTab.svg b/packages/design-system/icon/Tokens.svg similarity index 100% rename from packages/design-system/icon/TokensTab.svg rename to packages/design-system/icon/Tokens.svg diff --git a/packages/design-system/icon/TokensTab.tsx b/packages/design-system/icon/Tokens.tsx similarity index 100% rename from packages/design-system/icon/TokensTab.tsx rename to packages/design-system/icon/Tokens.tsx diff --git a/packages/design-system/icon/icon.stories.tsx b/packages/design-system/icon/icon.stories.tsx index 85a74f2d36..7cfb75d502 100644 --- a/packages/design-system/icon/icon.stories.tsx +++ b/packages/design-system/icon/icon.stories.tsx @@ -200,9 +200,9 @@ export const Default = () => { - - - + + + diff --git a/packages/design-system/icon/index.ts b/packages/design-system/icon/index.ts index f2e68f496f..68fee940af 100644 --- a/packages/design-system/icon/index.ts +++ b/packages/design-system/icon/index.ts @@ -153,9 +153,9 @@ export { default as Messagev2 } from "./Messagev2"; export { default as MusicBadge } from "./MusicBadge"; export { default as RaffleBadge } from "./RaffleBadge"; export { default as LockBadge } from "./LockBadge"; -export { default as SongsTab } from "./SongsTab"; -export { default as SavedTab } from "./SavedTab"; -export { default as TokensTab } from "./TokensTab"; +export { default as Songs } from "./Songs"; +export { default as Saved } from "./Saved"; +export { default as Tokens } from "./Tokens"; export { default as Photo } from "./Photo"; export { default as Gallery } from "./Gallery"; export { default as GrowthArrow } from "./GrowthArrow";